struct fb_cmap { unsigned int start; unsigned int len; unsigned short *red; unsigned short *green; unsigned short *blue; unsigned short *transp; }; typedef struct { int r; int g; int b; int a; } rgba_t; static unsigned int cmap_len; extern unsigned int red_len, green_len, blue_len, alpha_len; extern struct fb_cmap fb_cmap; extern rgba_t *clut; extern int fb_set_cmap(void); void directcolor_update_cmap(void) { unsigned int i; for (i = 0; i < cmap_len; i++) { if (i < red_len) fb_cmap.red[i] = clut[i].r; if (i < green_len) fb_cmap.green[i] = clut[i].g; if (i < blue_len) fb_cmap.blue[i] = clut[i].b; if (fb_cmap.transp && i < alpha_len) fb_cmap.transp[i] = clut[i].a; } }