diff options
author | balrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-10-04 23:45:31 +0000 |
---|---|---|
committer | balrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-10-04 23:45:31 +0000 |
commit | e9c05b42e33e60a18e443d6526e9400ea2714444 (patch) | |
tree | 4f7a2c76e06ab7c9c0a33a51f3c69a01f13c5abb /hw/pl110.c | |
parent | 4d043a09007d4d06c07b941d881ee298a026961e (diff) |
Implement PL110 byte order config bit (original patch by Richard Purdie).
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3330 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw/pl110.c')
-rw-r--r-- | hw/pl110.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/hw/pl110.c b/hw/pl110.c index 061ec7aba..adaf1315f 100644 --- a/hw/pl110.c +++ b/hw/pl110.c @@ -10,6 +10,7 @@ #include "vl.h" #define PL110_CR_EN 0x001 +#define PL110_CR_BGR 0x100 #define PL110_CR_BEBO 0x200 #define PL110_CR_BEPO 0x400 #define PL110_CR_PWR 0x800 @@ -114,6 +115,7 @@ static void pl110_update_display(void *opaque) int first, last = 0; int dirty, new_dirty; int i; + int bpp_offset; if (!pl110_enabled(s)) return; @@ -145,12 +147,17 @@ static void pl110_update_display(void *opaque) fprintf(stderr, "pl110: Bad color depth\n"); exit(1); } + if (s->cr & PL110_CR_BGR) + bpp_offset = 0; + else + bpp_offset = 18; + if (s->cr & PL110_CR_BEBO) - fn = fntable[s->bpp + 6]; + fn = fntable[s->bpp + 6 + bpp_offset]; else if (s->cr & PL110_CR_BEPO) - fn = fntable[s->bpp + 12]; + fn = fntable[s->bpp + 12 + bpp_offset]; else - fn = fntable[s->bpp]; + fn = fntable[s->bpp + bpp_offset]; src_width = s->cols; switch (s->bpp) { |