|
@@ -322,32 +322,29 @@ static int asiliantfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
|
|
writeb(green, mmio_base + 0x791);
|
|
writeb(green, mmio_base + 0x791);
|
|
writeb(blue, mmio_base + 0x791);
|
|
writeb(blue, mmio_base + 0x791);
|
|
|
|
|
|
- switch(p->var.bits_per_pixel) {
|
|
|
|
- case 15:
|
|
|
|
- if (regno < 16) {
|
|
|
|
|
|
+ if (regno < 16) {
|
|
|
|
+ switch(p->var.red.offset) {
|
|
|
|
+ case 10: /* RGB 555 */
|
|
((u32 *)(p->pseudo_palette))[regno] =
|
|
((u32 *)(p->pseudo_palette))[regno] =
|
|
((red & 0xf8) << 7) |
|
|
((red & 0xf8) << 7) |
|
|
((green & 0xf8) << 2) |
|
|
((green & 0xf8) << 2) |
|
|
((blue & 0xf8) >> 3);
|
|
((blue & 0xf8) >> 3);
|
|
- }
|
|
|
|
- break;
|
|
|
|
- case 16:
|
|
|
|
- if (regno < 16) {
|
|
|
|
|
|
+ break;
|
|
|
|
+ case 11: /* RGB 565 */
|
|
((u32 *)(p->pseudo_palette))[regno] =
|
|
((u32 *)(p->pseudo_palette))[regno] =
|
|
((red & 0xf8) << 8) |
|
|
((red & 0xf8) << 8) |
|
|
((green & 0xfc) << 3) |
|
|
((green & 0xfc) << 3) |
|
|
((blue & 0xf8) >> 3);
|
|
((blue & 0xf8) >> 3);
|
|
- }
|
|
|
|
- break;
|
|
|
|
- case 24:
|
|
|
|
- if (regno < 24) {
|
|
|
|
|
|
+ break;
|
|
|
|
+ case 16: /* RGB 888 */
|
|
((u32 *)(p->pseudo_palette))[regno] =
|
|
((u32 *)(p->pseudo_palette))[regno] =
|
|
(red << 16) |
|
|
(red << 16) |
|
|
(green << 8) |
|
|
(green << 8) |
|
|
(blue);
|
|
(blue);
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
- break;
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|