The tridentfb driver should handle now all chipsets handled by the cyblafb
driver. Remove the message which claims that support will be removed.
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Add imageblit acceleration for the Blade3D family of cores. The code is
based on code from the cyblafb driver.
It is a step toward assimilating back the cyblafb driver into the
tridentfb driver. The cyblafb driver handles a subfamily of the Trident
Blade3d cores.
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This patch fixes following problems:
- does not allow the m parameter to reach 0 as
it locks the graphics core (power cycle needed)
- for the newer chips (with new clock registers)
does not allow of n / m ratio below 4 as it gives
unstable image on the Blade3D core
- extend shift parameter (k) range to 2 for the newer
chips to cope with the n /m >= 4 limit at low resolution
(bandwidth) modes
- prefer modes with higher n / m ratio (higher k values)
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
The Trident cards uses only 20-bit address of screen start in double
words. This allows addressing for only 4MB of video memory so check this.
Also remove some redundant checks and assignments.
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This patch fixes two problems when acceleration is enabled:
- console switch from the Xorg locks up the computer
because the Xorg code locks some registers and disables
the mmio mode, so reenable these in the
tridentfb_set_par() and enable_mmio()
- blacklist the Image975 chipset from setting PCI burst
mode. This helps with random lock ups of the
framebuffer on this chip. The same fix is probably
needed for the Xorg as well.
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This patch contains general source code improvments:
- more simple functions are inline
- removes some meaningless output and the VERSION
string as it is no use
- eng_par is moved into the tridentfb_par
- removed small section of code for CyberBladeXPAi1
which is maybe right for only one resolution
and refresh rate and is probably redundant now
- other minor improvements
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This patch replaces deprecated constant FB_ACCELF_TEXT with
FBINFO_HWACCEL_DISABLED and adds constants for Trident families of
accelerators.
The FBINFO_HWACCEL_DISABLED is correctly used so noaccel parameter works
now.
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This patch fixes few issues related to timings and pixclock generation:
- disallow the pixclocks with numerator lower than
double denominator. This fixes display instability
for some modes.
- choose the pixelclock with the highest
numerator and denominator values. This improve
image quality and fixes display instability
for some modes.
- make interlaced modes work.
- set synchronization pulses polarization
correctly.
- horizontal synchronization timing are now
the same as generated by X.
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This patch brings various acceleration improvements:
- set copyarea/fillrect for non-accelerated framebuffer (fix)
- remove 15 bpp depth handling to simplify code as it hardly
works (15 bpp handling was obviously missing in some switches)
- add fb_sync call and move waiting before accelerated function
to make acceleration more asynchronous to cpu (few % of speed
improvement)
- add cpu_relax() call in waiting loops
- make longer register names and name more registers
- move registers' definition to header
- general code improvements (shortening, simplifying)
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This patch adds acceleration for TGUI 9440 and 96xx chips. These chips
requires line length to be power of 2, so this is also changed.
It also moves the troubling enable_mmio() function to its final
destination.
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
The TGUI 9440 requires doubling clock for 16bpp (hi-color) modes.
The patch also moves back enable_mmio() call to the right position.
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Do not overwrite bits which contain memory type settings. It removes
noise pixels ("snow") on Blade3D and 3DImage chips.
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Improved values for some registers after Xorg Trident driver. The main
problem was that values set by BIOS have been ignored.
This patch completely remove random pixels ("snow") on the TGUI 9680 and
9440 (not supported yet by the driver). It does not help with the "snow"
on 3DImage and Blade3D cards.
There is also small improvement in timing calculations (hblank start and
vblank start)
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
The Xorg code shows that Trident models 9660, 9680 and 9682 require a
different clock setting method. Add the second clock setting method for older
models.
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Fix broken timings calculations. This patch helps with following
problems:
- no left part of screen visible (up to half of the screen)
- monitor's frequencies are not the ones intended for selected modes
- if mode with resoultion y > 1024 is selected at least once then
all modes with y < 1024 are "out of sync" (no display)
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>