1struct fb_cmap {
2 unsigned int start;
3 unsigned int len;
4 unsigned short *red;
5 unsigned short *green;
6 unsigned short *blue;
7 unsigned short *transp;
8};
9
10typedef struct {
11    int r;
12    int g;
13    int b;
14    int a;
15} rgba_t;
16
17static unsigned int cmap_len;
18
19extern unsigned int red_len, green_len, blue_len, alpha_len;
20extern struct fb_cmap fb_cmap;
21extern rgba_t *clut;
22extern int fb_set_cmap(void);
23
24void directcolor_update_cmap(void)
25{
26    unsigned int i;
27
28    for (i = 0; i < cmap_len; i++) {
29      if (i < red_len)
30	fb_cmap.red[i] = clut[i].r;
31      if (i < green_len)
32	fb_cmap.green[i] = clut[i].g;
33      if (i < blue_len)
34	fb_cmap.blue[i] = clut[i].b;
35      if (fb_cmap.transp && i < alpha_len)
36	fb_cmap.transp[i] = clut[i].a;
37    }
38}
39