diff options
author | Antonino Daplas <adaplas@hotpop.com> | 2004-08-22 22:52:54 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-08-22 22:52:54 -0700 |
commit | ebf4fd17653bea269594fa54c5aedc18efd3ffa7 (patch) | |
tree | f1d32ef493bdf0184b4b4aaf87dec3d2561a97dd /arch | |
parent | 216f473e2f7628a0d458766d9cbfd043fdef2cac (diff) | |
download | history-ebf4fd17653bea269594fa54c5aedc18efd3ffa7.tar.gz |
[PATCH] fbdev: use 8-bit DAC for capable hardware
The patch adds the ability for vesafb to switch the DAC from 6-bit to 8-bit
at kernel boot. Besides fixing the failure to draw the 224-color logo, an
8-bit DAC will also provide a wider color range for user applications.
Signed-off-by: Antonino Daplas <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/i386/boot/video.S | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/arch/i386/boot/video.S b/arch/i386/boot/video.S index 7e2c665e6a5304..a6e043c46e666e 100644 --- a/arch/i386/boot/video.S +++ b/arch/i386/boot/video.S @@ -232,6 +232,41 @@ mopar_gr: xorl %eax, %eax movw 18(%di), %ax movl %eax, %fs:(PARAM_LFB_SIZE) + +# switching the DAC to 8-bit is for <= 8 bpp only + movw %fs:(PARAM_LFB_DEPTH), %ax + cmpw $8, %ax + jg dac_done + +# get DAC switching capability + xorl %eax, %eax + movb 10(%di), %al + testb $1, %al + jz dac_set + +# attempt to switch DAC to 8-bit + movw $0x4f08, %ax + movw $0x0800, %bx + int $0x10 + cmpw $0x004f, %ax + jne dac_set + movb %bh, dac_size # store actual DAC size + +dac_set: +# set color size to DAC size + movb dac_size, %al + movb %al, %fs:(PARAM_LFB_COLORS+0) + movb %al, %fs:(PARAM_LFB_COLORS+2) + movb %al, %fs:(PARAM_LFB_COLORS+4) + movb %al, %fs:(PARAM_LFB_COLORS+6) + +# set color offsets to 0 + movb $0, %fs:(PARAM_LFB_COLORS+1) + movb $0, %fs:(PARAM_LFB_COLORS+3) + movb $0, %fs:(PARAM_LFB_COLORS+5) + movb $0, %fs:(PARAM_LFB_COLORS+7) + +dac_done: # get protected mode interface informations movw $0x4f0a, %ax xorw %bx, %bx @@ -1929,6 +1964,7 @@ scanning: .byte 0 # Performing mode scan do_restore: .byte 0 # Screen contents altered during mode change svga_prefix: .byte VIDEO_FIRST_BIOS>>8 # Default prefix for BIOS modes graphic_mode: .byte 0 # Graphic mode with a linear frame buffer +dac_size: .byte 6 # DAC bit depth # Status messages keymsg: .ascii "Press <RETURN> to see video modes available, " |