summaryrefslogtreecommitdiff
path: root/sys/dev/syscons
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2010-03-31 15:39:46 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2010-03-31 15:39:46 +0000
commit86a2d033e46170f119c7a04cf6136669a8af7940 (patch)
treecfc40a589c853c402e5618e65fc0fdacc5624362 /sys/dev/syscons
parent824d100ff7d3d3ef50963478cac2721315010f1c (diff)
Notes
Diffstat (limited to 'sys/dev/syscons')
-rw-r--r--sys/dev/syscons/scvgarndr.c10
-rw-r--r--sys/dev/syscons/scvidctl.c4
-rw-r--r--sys/dev/syscons/syscons.c4
3 files changed, 13 insertions, 5 deletions
diff --git a/sys/dev/syscons/scvgarndr.c b/sys/dev/syscons/scvgarndr.c
index fd823ce434ba..dbee6f200d4a 100644
--- a/sys/dev/syscons/scvgarndr.c
+++ b/sys/dev/syscons/scvgarndr.c
@@ -181,9 +181,17 @@ static u_short mouse_or_mask[16] = {
#define vga_drawpxl(pos, color) \
switch (scp->sc->adp->va_info.vi_depth) { \
case 32: \
- case 24: \
writel(pos, vga_palette32[color]); \
break; \
+ case 24: \
+ if (((pos) & 1) == 0) { \
+ writew(pos, vga_palette32[color]); \
+ writeb(pos + 2, vga_palette32[color] >> 16);\
+ } else { \
+ writeb(pos, vga_palette32[color]); \
+ writew(pos + 1, vga_palette32[color] >> 8);\
+ } \
+ break; \
case 16: \
if (scp->sc->adp->va_info.vi_pixel_fsizes[1] == 5)\
writew(pos, vga_palette15[color]); \
diff --git a/sys/dev/syscons/scvidctl.c b/sys/dev/syscons/scvidctl.c
index 0f55499bac74..5c3dc8e39796 100644
--- a/sys/dev/syscons/scvidctl.c
+++ b/sys/dev/syscons/scvidctl.c
@@ -741,7 +741,7 @@ sc_vid_ioctl(struct tty *tp, u_long cmd, caddr_t data, struct thread *td)
#ifndef SC_NO_PALETTE_LOADING
#ifdef SC_PIXEL_MODE
- if ((adp->va_flags & V_ADP_DAC8) != 0)
+ if (adp->va_info.vi_mem_model == V_INFO_MM_DIRECT)
vidd_load_palette(adp, scp->sc->palette2);
else
#endif
@@ -802,7 +802,7 @@ sc_vid_ioctl(struct tty *tp, u_long cmd, caddr_t data, struct thread *td)
if (scp == scp->sc->cur_scp) {
set_mode(scp);
#ifndef SC_NO_PALETTE_LOADING
- if ((adp->va_flags & V_ADP_DAC8) != 0)
+ if (adp->va_info.vi_mem_model == V_INFO_MM_DIRECT)
vidd_load_palette(adp, scp->sc->palette2);
else
vidd_load_palette(adp, scp->sc->palette);
diff --git a/sys/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c
index 8dffe5cd5380..1819225b3662 100644
--- a/sys/dev/syscons/syscons.c
+++ b/sys/dev/syscons/syscons.c
@@ -2127,7 +2127,7 @@ restore_scrn_saver_mode(scr_stat *scp, int changemode)
if (set_mode(scp) == 0) {
#ifndef SC_NO_PALETTE_LOADING
#ifdef SC_PIXEL_MODE
- if ((scp->sc->adp->va_flags & V_ADP_DAC8) != 0)
+ if (scp->sc->adp->va_info.vi_mem_model == V_INFO_MM_DIRECT)
vidd_load_palette(scp->sc->adp, scp->sc->palette2);
else
#endif
@@ -2536,7 +2536,7 @@ exchange_scr(sc_softc_t *sc)
#ifndef SC_NO_PALETTE_LOADING
if (ISGRAPHSC(sc->old_scp)) {
#ifdef SC_PIXEL_MODE
- if ((sc->adp->va_flags & V_ADP_DAC8) != 0)
+ if (sc->adp->va_info.vi_mem_model == V_INFO_MM_DIRECT)
vidd_load_palette(sc->adp, sc->palette2);
else
#endif