weiyanan11 发表于 2012-12-21 13:23:29

修改LCD数据位

请问将LCD数据位改为18位应该修改内核的哪些文件

飞凌-unix 发表于 2012-12-21 13:35:29

linux-3.0.1\drivers\video\samsung\
在这个路径下

飞凌-unix 发表于 2012-12-21 13:39:57

应该是在 s3cfb_fimd5x.cs3cfb_fimd4x.c 这两个文件中

飞凌-unix 发表于 2012-12-21 13:40:11

仅供参考

weiyanan11 发表于 2012-12-21 16:20:50

我看网上有人说6410不支持18位LCD是吗

飞凌-unix 发表于 2012-12-21 16:25:07

飞凌没有提供,想用自己改

weiyanan11 发表于 2012-12-21 16:32:04

我改完之后屏幕是花屏,而且字都是反的

飞凌-unix 发表于 2012-12-21 16:53:00

改的有问题吧,可以把你的修改的代码发上来,大家一起看看,如果有人懂的话可能会帮你的

weiyanan11 发表于 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;
}

weiyanan11 发表于 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;

weiyanan11 发表于 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;

weiyanan11 发表于 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;

weiyanan11 发表于 2012-12-24 14:52:33

更改数据位需要修改uboot吗

kevinataz 发表于 2013-1-5 11:28:47

页: [1]
查看完整版本: 修改LCD数据位