嵌入式爱好者

查看: 8121|回复: 13

修改LCD数据位

[复制链接]

6

主题

12

帖子

32

积分

扫一扫,手机访问本帖
发表于 2012-12-21 13:23:29 | 显示全部楼层 |阅读模式
请问将LCD数据位改为18位应该修改内核的哪些文件
回复

使用道具 举报

153

主题

3910

帖子

4207

积分

AM5718通行证AM335x通行证i.MX6UL通行证i.MX RT通行证i.MX6Q通行证XX18通行证TCU通行证FCU1401通行证FCU1301通行证FCU11xx通行证

发表于 2012-12-21 13:35:29 | 显示全部楼层
linux-3.0.1\drivers\video\samsung\
在这个路径下
技术支持电话:0312-3119192
技术支持邮箱:Linux@forlinx.com
点评回复 支持 反对

使用道具 举报

153

主题

3910

帖子

4207

积分

AM5718通行证AM335x通行证i.MX6UL通行证i.MX RT通行证i.MX6Q通行证XX18通行证TCU通行证FCU1401通行证FCU1301通行证FCU11xx通行证

发表于 2012-12-21 13:39:57 | 显示全部楼层
应该是在 s3cfb_fimd5x.c  s3cfb_fimd4x.c 这两个文件中
技术支持电话:0312-3119192
技术支持邮箱:Linux@forlinx.com
点评回复 支持 反对

使用道具 举报

153

主题

3910

帖子

4207

积分

AM5718通行证AM335x通行证i.MX6UL通行证i.MX RT通行证i.MX6Q通行证XX18通行证TCU通行证FCU1401通行证FCU1301通行证FCU11xx通行证

发表于 2012-12-21 13:40:11 | 显示全部楼层
仅供参考
技术支持电话:0312-3119192
技术支持邮箱:Linux@forlinx.com
点评回复 支持 反对

使用道具 举报

6

主题

12

帖子

32

积分

 楼主| 发表于 2012-12-21 16:20:50 | 显示全部楼层
我看网上有人说6410不支持18位LCD是吗
该会员没有填写今日想说内容.
点评回复 支持 反对

使用道具 举报

153

主题

3910

帖子

4207

积分

AM5718通行证AM335x通行证i.MX6UL通行证i.MX RT通行证i.MX6Q通行证XX18通行证TCU通行证FCU1401通行证FCU1301通行证FCU11xx通行证

发表于 2012-12-21 16:25:07 | 显示全部楼层
飞凌没有提供,想用自己改
技术支持电话:0312-3119192
技术支持邮箱:Linux@forlinx.com
点评回复 支持 反对

使用道具 举报

6

主题

12

帖子

32

积分

 楼主| 发表于 2012-12-21 16:32:04 | 显示全部楼层
我改完之后屏幕是花屏,而且字都是反的
该会员没有填写今日想说内容.
点评回复 支持 反对

使用道具 举报

153

主题

3910

帖子

4207

积分

AM5718通行证AM335x通行证i.MX6UL通行证i.MX RT通行证i.MX6Q通行证XX18通行证TCU通行证FCU1401通行证FCU1301通行证FCU11xx通行证

发表于 2012-12-21 16:53:00 | 显示全部楼层
改的有问题吧,可以把你的修改的代码发上来,大家一起看看,如果有人懂的话可能会帮你的
技术支持电话:0312-3119192
技术支持邮箱:Linux@forlinx.com
点评回复 支持 反对

使用道具 举报

6

主题

12

帖子

32

积分

 楼主| 发表于 2012-12-24 11:23:51 | 显示全部楼层
mach-smdk6410.c中修改
static struct s3c_fb_pd_win smdk6410_fb_win0 = {
        /* this is to ensure we use win0 */
        .win_mode        = {
                .left_margin        = 8,
                .right_margin        = 13,
                .upper_margin        = 7,
                .lower_margin        = 5,
                .hsync_len        = 3,
                .vsync_len        = 1,
                .xres                = 800,
                .yres                = 480,
        },
        .max_bpp        = 32,
        .default_bpp        = 18,
        .virtual_y        = 480 * 2,
        .virtual_x        = 800,
};
S3cfb.c中修改
static int s3cfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
{
        s3cfb_info_t *fbi = (s3cfb_info_t *) info;

        DPRINTK("check_var(var=%p, info=%p)\n", var, info);

        switch (var->bits_per_pixel) {
                case 8:
                        var->red = s3cfb_rgb_8.red;
                        var->green = s3cfb_rgb_8.green;
                        var->blue = s3cfb_rgb_8.blue;
                        var->transp = s3cfb_rgb_8.transp;
                        s3cfb_fimd.bytes_per_pixel = 1;
                        break;

        case 16:
                        var->red = s3cfb_rgb_16.red;
                        var->green = s3cfb_rgb_16.green;
                        var->blue = s3cfb_rgb_16.blue;
                        var->transp = s3cfb_rgb_16.transp;
                        s3cfb_fimd.bytes_per_pixel = 2;
                        break;
        case 18:
            var->red = s3cfb_rgb_18.red;
            var->green = s3cfb_rgb_18.green;
            var->blue = s3cfb_rgb_18.blue;
            var->transp = s3cfb_rgb_18.transp;
            s3cfb_fimd.bytes_per_pixel = 4;
            break;
                case 24:
                        var->red = s3cfb_rgb_24.red;
                        var->green = s3cfb_rgb_24.green;
                        var->blue = s3cfb_rgb_24.blue;
                        var->transp = s3cfb_rgb_24.transp;
                        s3cfb_fimd.bytes_per_pixel = 4;
                        break;

                case 28:
                        var->red = s3cfb_rgb_28.red;
                        var->green = s3cfb_rgb_28.green;
                        var->blue = s3cfb_rgb_28.blue;
                        var->transp = s3cfb_rgb_28.transp;
                        s3cfb_fimd.bytes_per_pixel = 4;
                        break;

                case 32:
                        var->red = s3cfb_rgb_32.red;
                        var->green = s3cfb_rgb_32.green;
                        var->blue = s3cfb_rgb_32.blue;
                        var->transp = s3cfb_rgb_32.transp;
                        s3cfb_fimd.bytes_per_pixel = 4;
                        break;
        }
static int s3cfb_set_par(struct fb_info *info)
{
        struct fb_var_screeninfo *var = &info->var;
        s3cfb_info_t *fbi = (s3cfb_info_t *) info;

        if (var->bits_per_pixel == 16 || var->bits_per_pixel == 18 || var->bits_per_pixel == 24 || var->bits_per_pixel == 28)
                fbi->fb.fix.visual = FB_VISUAL_TRUECOLOR;
        else
                fbi->fb.fix.visual = FB_VISUAL_PSEUDOCOLOR;

        fbi->fb.fix.line_length = var->width * s3cfb_fimd.bytes_per_pixel;

        /* activate this new configuration */
        s3cfb_activate_var(fbi, var);

        return 0;
}
int s3cfb_set_vs_info(s3cfb_vs_info_t vs_info)
{
        /* check invalid value */
        if (vs_info.width != s3cfb_fimd.width || vs_info.height != s3cfb_fimd.height)
                return 1;

        if (!(vs_info.bpp == 8 || vs_info.bpp == 16 || vs_info.bpp == 18 || vs_info.bpp == 24 || vs_info.bpp == 28 || vs_info.bpp == 32))
                return 1;

        if (vs_info.offset < 0)
                return 1;

        if (vs_info.v_width != s3cfb_fimd.xres_virtual || vs_info.v_height != s3cfb_fimd.yres_virtual)
                return 1;

        /* save virtual screen information */
        s3cfb_fimd.vs_info = vs_info;

        if (s3cfb_fimd.vs_info.offset < 1)
                s3cfb_fimd.vs_info.offset = 1;

        if (s3cfb_fimd.vs_info.offset > S3CFB_MAX_DISPLAY_OFFSET)
                s3cfb_fimd.vs_info.offset = S3CFB_MAX_DISPLAY_OFFSET;

        s3cfb_fimd.vs_offset = s3cfb_fimd.vs_info.offset;

        return 0;
}

int s3cfb_set_color_key_registers(s3cfb_info_t *fbi, s3cfb_color_key_info_t colkey_info)
{
        unsigned int compkey = 0;
        int win_num =  fbi->win_id;

        if (win_num == 0) {
                printk("WIN0 do not support color key\n");
                return -1;
        }

        win_num--;

        if (fbi->fb.var.bits_per_pixel == S3CFB_PIXEL_BPP_16) {
                /* RGB 5-6-5 mode */
                compkey  = (((colkey_info.compkey_red   & 0x1f) << 19) | 0x70000);
                compkey |= (((colkey_info.compkey_green & 0x3f) << 10) | 0x300);
                compkey |= (((colkey_info.compkey_blue  & 0x1f)  << 3 )| 0x7);
            } else if(fbi->fb.var.bits_per_pixel == S3CFB_PIXEL_BPP_18) {
                /*RGB 6-6-6 mode */
                compkey  = (((colkey_info.compkey_red   & 0x3f) << 18) | 0x30000);
                compkey |= (((colkey_info.compkey_green & 0x3f) << 10) | 0x300);
                compkey |= (((colkey_info.compkey_blue  & 0x3f)  << 2) | 0x3);
            } else if (fbi->fb.var.bits_per_pixel == S3CFB_PIXEL_BPP_24 || fbi->fb.var.bits_per_pixel == S3CFB_PIXEL_BPP_28) {
                /* currently RGB 8-8-8 mode  */
                compkey  = ((colkey_info.compkey_red & 0xff) << 16);
                compkey |= ((colkey_info.compkey_green & 0xff) << 8);
                compkey |= ((colkey_info.compkey_blue & 0xff) << 0);
        } else
                printk("Invalid BPP has been given!\n");

        if (colkey_info.direction == S3CFB_COLOR_KEY_DIR_BG)
                writel(S3C_WxKEYCON0_COMPKEY(compkey) | S3C_WxKEYCON0_DIRCON_MATCH_FG_IMAGE, S3C_W1KEYCON0 + (0x08 * win_num));

        else if (colkey_info.direction == S3CFB_COLOR_KEY_DIR_FG)
                writel(S3C_WxKEYCON0_COMPKEY(compkey) | S3C_WxKEYCON0_DIRCON_MATCH_BG_IMAGE, S3C_W1KEYCON0 + (0x08 * win_num));

        else
                printk("Color key direction is not correct :: %d!\n", colkey_info.direction);

        return 0;
}

int s3cfb_set_color_value(s3cfb_info_t *fbi, s3cfb_color_val_info_t colval_info)
{
        unsigned int colval = 0;

        int win_num =  fbi->win_id;

        if (win_num == 0) {
                printk("WIN0 do not support color key value\n");
                return -1;
        }

        win_num--;

        if (fbi->fb.var.bits_per_pixel == S3CFB_PIXEL_BPP_16) {
                /* RGB 5-6-5 mode */
                colval  = (((colval_info.colval_red   & 0x1f) << 19) | 0x70000);
                colval |= (((colval_info.colval_green & 0x3f) << 10) | 0x300);
                colval |= (((colval_info.colval_blue  & 0x1f)  << 3 )| 0x7);
        }else if(fbi->fb.var.bits_per_pixel == S3CFB_PIXEL_BPP_18) {
            /*RGB 6-6-6 mode */
            colval  = (((colval_info.colval_red & 0x3f) <<  18)  | 0x30000);
            colval |= (((colval_info.colval_green & 0x3f) << 10) | 0x300);
            colval |= (((colval_info.colval_blue  & 0x3f)  << 2 )| 0x3);
        } else if (fbi->fb.var.bits_per_pixel == S3CFB_PIXEL_BPP_24 || fbi->fb.var.bits_per_pixel == S3CFB_PIXEL_BPP_28) {
                /* currently RGB 8-8-8 mode  */
                colval  = ((colval_info.colval_red  & 0xff) << 16);
                colval |= ((colval_info.colval_green & 0xff) << 8);
                colval |= ((colval_info.colval_blue  & 0xff) << 0);
        } else
                printk("Invalid BPP has been given!\n");

        writel(S3C_WxKEYCON1_COLVAL(colval), S3C_W1KEYCON1 + (0x08 * win_num));

        return 0;
}

static int s3cfb_set_bpp(s3cfb_info_t *fbi, int bpp)
{
        struct fb_var_screeninfo *var= &fbi->fb.var;
        int win_num =  fbi->win_id;
        unsigned int val;

        val = readl(S3C_WINCON0 + (0x04 * win_num));
        val &= ~(S3C_WINCONx_BPPMODE_F_MASK | S3C_WINCONx_BLD_PIX_MASK);
        val |= S3C_WINCONx_ALPHA_SEL_1;

        switch (bpp) {
        case 1:
        case 2:
        case 4:
        case 8:
                s3cfb_fimd.bytes_per_pixel = 1;
                break;

        case 16:
                writel(val | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE, S3C_WINCON0 + (0x04 * win_num));
                var->bits_per_pixel = bpp;
                s3cfb_fimd.bytes_per_pixel = 2;
                break;
        case 18:
                writel(val | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_BLD_PIX_PLANE, S3C_WINCON0 + (0x04 * win_num));
                var->bits_per_pixel = bpp;
                s3cfb_fimd.bytes_per_pixel = 4;
                break;
        case 24:
                writel(val | S3C_WINCONx_BPPMODE_F_24BPP_888 | S3C_WINCONx_BLD_PIX_PLANE, S3C_WINCON0 + (0x04 * win_num));
                var->bits_per_pixel = bpp;
                s3cfb_fimd.bytes_per_pixel = 4;
                break;

        case 25:
                writel(val | S3C_WINCONx_BPPMODE_F_25BPP_A888 | S3C_WINCONx_BLD_PIX_PLANE, S3C_WINCON0 + (0x04 * win_num));
                var->bits_per_pixel = bpp;
                s3cfb_fimd.bytes_per_pixel = 4;
                break;

        case 28:
                writel(val | S3C_WINCONx_BPPMODE_F_28BPP_A888 | S3C_WINCONx_BLD_PIX_PIXEL, S3C_WINCON0 + (0x04 * win_num));
                var->bits_per_pixel = bpp;
                s3cfb_fimd.bytes_per_pixel = 4;
                break;

        case 32:
                var->bits_per_pixel = bpp;
                s3cfb_fimd.bytes_per_pixel = 4;
                break;
        }

        return 0;
}
该会员没有填写今日想说内容.
点评回复 支持 反对

使用道具 举报

6

主题

12

帖子

32

积分

 楼主| 发表于 2012-12-24 11:25:21 | 显示全部楼层
S3cfb.h中添加
#define S3CFB_PIXEL_BPP_18      18      /*  RGB 6-6-6 format for SMDK EVAL BOARD */
const static s3cfb_rgb_t s3cfb_rgb_18 = {
        .red    = {.offset = 12, .length = 6,},
        .green  = {.offset = 6,  .length = 6,},
        .blue   = {.offset = 0,  .length = 6,},
        .transp = {.offset = 0,  .length = 0,},
};

s3cfb_fimd4x.c中修改

s3cfb_fimd_info_t s3cfb_fimd = {
        .vidcon0 = S3C_VIDCON0_INTERLACE_F_PROGRESSIVE | S3C_VIDCON0_VIDOUT_RGB_IF | S3C_VIDCON0_L1_DATA16_SUB_18_MODE | \
                        S3C_VIDCON0_L0_DATA16_MAIN_18_MODE | S3C_VIDCON0_PNRMODE_RGB_P | \
                        S3C_VIDCON0_CLKVALUP_ALWAYS | S3C_VIDCON0_CLKDIR_DIVIDED | S3C_VIDCON0_CLKSEL_F_HCLK | \
                        S3C_VIDCON0_ENVID_DISABLE | S3C_VIDCON0_ENVID_F_DISABLE,

        .dithmode = (S3C_DITHMODE_RDITHPOS_6BIT | S3C_DITHMODE_GDITHPOS_6BIT | S3C_DITHMODE_BDITHPOS_6BIT ) & S3C_DITHMODE_DITHERING_DISABLE,

#if defined (CONFIG_FB_S3C_EXT_BPP_8)
        .wincon0 =  S3C_WINCONx_BYTSWP_ENABLE | S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BPPMODE_F_8BPP_PAL,
        .wincon1 =  S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1,
        .bpp = S3CFB_PIXEL_BPP_8,
        .bytes_per_pixel = 1,
        .wpalcon = S3C_WPALCON_W0PAL_16BIT,

#elif defined (CONFIG_FB_S3C_EXT_BPP_16)
        .wincon0 =  S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BUFSEL_1 | S3C_WINCONx_BUFAUTOEN_DISABLE | \
                        S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon1 =  S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BUFSEL_0 | S3C_WINCONx_BUFAUTOEN_DISABLE | \
                        S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_BPPMODE_F_16BPP_565 | \
                        S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon2 = S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | \
                        S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | \
                        S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon3 = S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE | \
                        S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon4 = S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE |
                        S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .bpp = S3CFB_PIXEL_BPP_16,
        .bytes_per_pixel = 2,
        .wpalcon = S3C_WPALCON_W0PAL_16BIT,
#elif defined (CONFIG_FB_S3C_EXT_BPP_18)
        .wincon0 =  S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BUFSEL_1 | S3C_WINCONx_BUFAUTOEN_DISABLE | \
                        S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon1 =  S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BUFSEL_0 | S3C_WINCONx_BUFAUTOEN_DISABLE | \
                        S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_BPPMODE_F_18BPP_666 | \
                        S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon2 = S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | \
                        S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | \
                        S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon3 = S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE | \
                        S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon4 = S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE |
                        S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .bpp = S3CFB_PIXEL_BPP_18,
        .bytes_per_pixel = 4,
        .wpalcon = S3C_WPALCON_W0PAL_18BIT,


void s3cfb_activate_var(s3cfb_info_t *fbi, struct fb_var_screeninfo *var)
{
        DPRINTK("%s: var->bpp = %d\n", __FUNCTION__, var->bits_per_pixel);

        switch (var->bits_per_pixel) {
        case 8:
                s3cfb_fimd.wincon0 = S3C_WINCONx_BYTSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_8BPP_PAL;
                s3cfb_fimd.wincon1 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon2 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon3 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon4 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.bpp = S3CFB_PIXEL_BPP_8;
                s3cfb_fimd.bytes_per_pixel = 1;
                s3cfb_fimd.wpalcon = S3C_WPALCON_W0PAL_16BIT;
                break;

        case 16:
                s3cfb_fimd.wincon0 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565;
                s3cfb_fimd.wincon1 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon2 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon3 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon4 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.bpp = S3CFB_PIXEL_BPP_16;
                s3cfb_fimd.bytes_per_pixel = 2;
                break;
        case 18:
                s3cfb_fimd.wincon0 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666;
                s3cfb_fimd.wincon1 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon2 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon3 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon4 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.bpp = S3CFB_PIXEL_BPP_18;
                s3cfb_fimd.bytes_per_pixel = 4;
                break;

该会员没有填写今日想说内容.
点评回复 支持 反对

使用道具 举报

6

主题

12

帖子

32

积分

 楼主| 发表于 2012-12-24 11:25:43 | 显示全部楼层
S3cfb.h中添加
#define S3CFB_PIXEL_BPP_18      18      /*  RGB 6-6-6 format for SMDK EVAL BOARD */
const static s3cfb_rgb_t s3cfb_rgb_18 = {
        .red    = {.offset = 12, .length = 6,},
        .green  = {.offset = 6,  .length = 6,},
        .blue   = {.offset = 0,  .length = 6,},
        .transp = {.offset = 0,  .length = 0,},
};

s3cfb_fimd4x.c中修改

s3cfb_fimd_info_t s3cfb_fimd = {
        .vidcon0 = S3C_VIDCON0_INTERLACE_F_PROGRESSIVE | S3C_VIDCON0_VIDOUT_RGB_IF | S3C_VIDCON0_L1_DATA16_SUB_18_MODE | \
                        S3C_VIDCON0_L0_DATA16_MAIN_18_MODE | S3C_VIDCON0_PNRMODE_RGB_P | \
                        S3C_VIDCON0_CLKVALUP_ALWAYS | S3C_VIDCON0_CLKDIR_DIVIDED | S3C_VIDCON0_CLKSEL_F_HCLK | \
                        S3C_VIDCON0_ENVID_DISABLE | S3C_VIDCON0_ENVID_F_DISABLE,

        .dithmode = (S3C_DITHMODE_RDITHPOS_6BIT | S3C_DITHMODE_GDITHPOS_6BIT | S3C_DITHMODE_BDITHPOS_6BIT ) & S3C_DITHMODE_DITHERING_DISABLE,

#if defined (CONFIG_FB_S3C_EXT_BPP_8)
        .wincon0 =  S3C_WINCONx_BYTSWP_ENABLE | S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BPPMODE_F_8BPP_PAL,
        .wincon1 =  S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1,
        .bpp = S3CFB_PIXEL_BPP_8,
        .bytes_per_pixel = 1,
        .wpalcon = S3C_WPALCON_W0PAL_16BIT,

#elif defined (CONFIG_FB_S3C_EXT_BPP_16)
        .wincon0 =  S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BUFSEL_1 | S3C_WINCONx_BUFAUTOEN_DISABLE | \
                        S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon1 =  S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BUFSEL_0 | S3C_WINCONx_BUFAUTOEN_DISABLE | \
                        S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_BPPMODE_F_16BPP_565 | \
                        S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon2 = S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | \
                        S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | \
                        S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon3 = S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE | \
                        S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon4 = S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE |
                        S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .bpp = S3CFB_PIXEL_BPP_16,
        .bytes_per_pixel = 2,
        .wpalcon = S3C_WPALCON_W0PAL_16BIT,
#elif defined (CONFIG_FB_S3C_EXT_BPP_18)
        .wincon0 =  S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BUFSEL_1 | S3C_WINCONx_BUFAUTOEN_DISABLE | \
                        S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon1 =  S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BUFSEL_0 | S3C_WINCONx_BUFAUTOEN_DISABLE | \
                        S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_BPPMODE_F_18BPP_666 | \
                        S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon2 = S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | \
                        S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | \
                        S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon3 = S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE | \
                        S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon4 = S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE |
                        S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .bpp = S3CFB_PIXEL_BPP_18,
        .bytes_per_pixel = 4,
        .wpalcon = S3C_WPALCON_W0PAL_18BIT,


void s3cfb_activate_var(s3cfb_info_t *fbi, struct fb_var_screeninfo *var)
{
        DPRINTK("%s: var->bpp = %d\n", __FUNCTION__, var->bits_per_pixel);

        switch (var->bits_per_pixel) {
        case 8:
                s3cfb_fimd.wincon0 = S3C_WINCONx_BYTSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_8BPP_PAL;
                s3cfb_fimd.wincon1 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon2 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon3 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon4 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.bpp = S3CFB_PIXEL_BPP_8;
                s3cfb_fimd.bytes_per_pixel = 1;
                s3cfb_fimd.wpalcon = S3C_WPALCON_W0PAL_16BIT;
                break;

        case 16:
                s3cfb_fimd.wincon0 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565;
                s3cfb_fimd.wincon1 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon2 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon3 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon4 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.bpp = S3CFB_PIXEL_BPP_16;
                s3cfb_fimd.bytes_per_pixel = 2;
                break;
        case 18:
                s3cfb_fimd.wincon0 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666;
                s3cfb_fimd.wincon1 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon2 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon3 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon4 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.bpp = S3CFB_PIXEL_BPP_18;
                s3cfb_fimd.bytes_per_pixel = 4;
                break;

该会员没有填写今日想说内容.
点评回复 支持 反对

使用道具 举报

6

主题

12

帖子

32

积分

 楼主| 发表于 2012-12-24 11:26:02 | 显示全部楼层
s3cfb_fimd5x.c中修改
s3cfb_fimd_info_t s3cfb_fimd = {
        .vidcon0 = S3C_VIDCON0_INTERLACE_F_PROGRESSIVE | S3C_VIDCON0_VIDOUT_RGB_IF | S3C_VIDCON0_L1_DATA16_SUB_18_MODE | \
                        S3C_VIDCON0_L0_DATA16_MAIN_18_MODE | S3C_VIDCON0_PNRMODE_RGB_P | \
                        S3C_VIDCON0_CLKVALUP_ALWAYS | S3C_VIDCON0_CLKDIR_DIVIDED | S3C_VIDCON0_CLKSEL_F_HCLK | \
                        S3C_VIDCON0_ENVID_DISABLE | S3C_VIDCON0_ENVID_F_DISABLE,

        .dithmode = (S3C_DITHMODE_RDITHPOS_6BIT | S3C_DITHMODE_GDITHPOS_6BIT | S3C_DITHMODE_BDITHPOS_6BIT ) & S3C_DITHMODE_DITHERING_DISABLE,

#if defined (CONFIG_FB_S3C_EXT_BPP_8)
        .wincon0 =  S3C_WINCONx_BYTSWP_ENABLE | S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BPPMODE_F_8BPP_PAL,
        .wincon1 =  S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1,
        .bpp = S3CFB_PIXEL_BPP_8,
        .bytes_per_pixel = 1,
        .wpalcon = S3C_WPALCON_W0PAL_16BIT,

#elif defined (CONFIG_FB_S3C_EXT_BPP_16)
        .wincon0 =  S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BUFSEL_1 | S3C_WINCONx_BUFAUTOEN_DISABLE | \
                        S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon1 =  S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BUFSEL_0 | S3C_WINCONx_BUFAUTOEN_DISABLE | \
                        S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_BPPMODE_F_16BPP_565 | \
                        S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon2 = S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | \
                        S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | \
                        S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon3 = S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE | \
                        S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon4 = S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE |
                        S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .bpp = S3CFB_PIXEL_BPP_16,
        .bytes_per_pixel = 2,
        .wpalcon = S3C_WPALCON_W0PAL_16BIT,
#elif defined (CONFIG_FB_S3C_EXT_BPP_18)
        .wincon0 =  S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BUFSEL_1 | S3C_WINCONx_BUFAUTOEN_DISABLE | \
                        S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon1 =  S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BUFSEL_0 | S3C_WINCONx_BUFAUTOEN_DISABLE | \
                        S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_BPPMODE_F_18BPP_666 | \
                        S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon2 = S3C_WINCONx_ENLOCAL_DMA | S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | \
                        S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | \
                        S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon3 = S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE | \
                        S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .wincon4 = S3C_WINCONx_BITSWP_DISABLE | S3C_WINCONx_BYTSWP_DISABLE | S3C_WINCONx_HAWSWP_ENABLE | \
                        S3C_WINCONx_BURSTLEN_4WORD | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BLD_PIX_PLANE |
                        S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_ALPHA_SEL_1 | S3C_WINCONx_ENWIN_F_DISABLE,

        .bpp = S3CFB_PIXEL_BPP_18,
        .bytes_per_pixel = 4,
        .wpalcon = S3C_WPALCON_W0PAL_18BIT,

void s3cfb_activate_var(s3cfb_info_t *fbi, struct fb_var_screeninfo *var)
{
        DPRINTK("%s: var->bpp = %d\n", __FUNCTION__, var->bits_per_pixel);

        switch (var->bits_per_pixel) {
        case 8:
                s3cfb_fimd.wincon0 = S3C_WINCONx_BYTSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_8BPP_PAL;
                s3cfb_fimd.wincon1 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon2 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon3 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon4 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.bpp = S3CFB_PIXEL_BPP_8;
                s3cfb_fimd.bytes_per_pixel = 1;
                s3cfb_fimd.wpalcon = S3C_WPALCON_W0PAL_16BIT;
                break;

        case 16:
                s3cfb_fimd.wincon0 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565;
                s3cfb_fimd.wincon1 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon2 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon3 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon4 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_16BPP_565 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.bpp = S3CFB_PIXEL_BPP_16;
                s3cfb_fimd.bytes_per_pixel = 2;
                break;
        case 18:
                s3cfb_fimd.wincon0 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666;
                s3cfb_fimd.wincon1 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon2 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon3 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.wincon4 = S3C_WINCONx_HAWSWP_ENABLE | S3C_WINCONx_BURSTLEN_16WORD | S3C_WINCONx_BPPMODE_F_18BPP_666 | S3C_WINCONx_BLD_PIX_PLANE | S3C_WINCONx_ALPHA_SEL_1;
                s3cfb_fimd.bpp = S3CFB_PIXEL_BPP_18;
                s3cfb_fimd.bytes_per_pixel = 4;
                break;

该会员没有填写今日想说内容.
点评回复 支持 反对

使用道具 举报

6

主题

12

帖子

32

积分

 楼主| 发表于 2012-12-24 14:52:33 | 显示全部楼层
更改数据位需要修改uboot吗
该会员没有填写今日想说内容.
点评回复 支持 反对

使用道具 举报

kevinataz 该用户已被删除
发表于 2013-1-5 11:28:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-12-23 19:28

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表