LinuxKernel

时间:2015-06-25 07:03:00

标签: linux linux-kernel framebuffer

我想为24位RGB配置帧缓冲驱动程序,我可以在fb_info结构中看到pseudo_palette。 你能否告诉我fb_info结构中pseudo_palette成员的用途是什么。

以下功能分配给" fb_setcolreg"在现有驱动程序中回调fb_ops结构的功能。对于24位或32位帧缓冲配置,我是否需要更改以下函数中的任何内容。

static int lcdif_fb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, u_int transp,struct fb_info *fbi)
{
        unsigned int val;
        int ret = 1;

        /*
         * If greyscale is true, then we convert the RGB value
         * to greyscale 
         */
        if (fbi->var.grayscale)
                red = green = blue = (19595 * red + 38470 * green +
                                7471 * blue) >> 16;
        switch (fbi->fix.visual) {
                case FB_VISUAL_TRUECOLOR:
                        /*
                         * 16-bit True Colour.
                         */
                        if (regno < 16) {
                                u32 *pal = fbi->pseudo_palette;


                                val = _chan_to_field(red, &fbi->var.red);
                                val |= _chan_to_field(green, &fbi->var.green);
                                val |= _chan_to_field(blue, &fbi->var.blue);

                                pal[regno] = val;
                                ret = 0;

                        }
                        break;

                case FB_VISUAL_STATIC_PSEUDOCOLOR:
                case FB_VISUAL_PSEUDOCOLOR:
                        break;
        }
        return ret;
}

0 个答案:

没有答案