|
@@ -151,41 +151,49 @@ static struct s3c2410_platform_nand mini6410_nand_info = {
|
|
|
.sets = mini6410_nand_sets,
|
|
|
};
|
|
|
|
|
|
-static struct s3c_fb_pd_win mini6410_fb_win[] = {
|
|
|
- {
|
|
|
- .win_mode = { /* 4.3" 480x272 */
|
|
|
- .left_margin = 3,
|
|
|
- .right_margin = 2,
|
|
|
- .upper_margin = 1,
|
|
|
- .lower_margin = 1,
|
|
|
- .hsync_len = 40,
|
|
|
- .vsync_len = 1,
|
|
|
- .xres = 480,
|
|
|
- .yres = 272,
|
|
|
- },
|
|
|
- .max_bpp = 32,
|
|
|
- .default_bpp = 16,
|
|
|
- }, {
|
|
|
- .win_mode = { /* 7.0" 800x480 */
|
|
|
- .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 = 16,
|
|
|
+static struct s3c_fb_pd_win mini6410_lcd_type0_fb_win = {
|
|
|
+ .win_mode = { /* 4.3" 480x272 */
|
|
|
+ .left_margin = 3,
|
|
|
+ .right_margin = 2,
|
|
|
+ .upper_margin = 1,
|
|
|
+ .lower_margin = 1,
|
|
|
+ .hsync_len = 40,
|
|
|
+ .vsync_len = 1,
|
|
|
+ .xres = 480,
|
|
|
+ .yres = 272,
|
|
|
},
|
|
|
+ .max_bpp = 32,
|
|
|
+ .default_bpp = 16,
|
|
|
};
|
|
|
|
|
|
-static struct s3c_fb_platdata mini6410_lcd_pdata __initdata = {
|
|
|
- .setup_gpio = s3c64xx_fb_gpio_setup_24bpp,
|
|
|
- .win[0] = &mini6410_fb_win[0],
|
|
|
- .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
|
|
|
- .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
|
|
|
+static struct s3c_fb_pd_win mini6410_lcd_type1_fb_win = {
|
|
|
+ .win_mode = { /* 7.0" 800x480 */
|
|
|
+ .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 = 16,
|
|
|
+};
|
|
|
+
|
|
|
+static struct s3c_fb_platdata mini6410_lcd_pdata[] __initdata = {
|
|
|
+ {
|
|
|
+ .setup_gpio = s3c64xx_fb_gpio_setup_24bpp,
|
|
|
+ .win[0] = &mini6410_lcd_type0_fb_win,
|
|
|
+ .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
|
|
|
+ .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
|
|
|
+ }, {
|
|
|
+ .setup_gpio = s3c64xx_fb_gpio_setup_24bpp,
|
|
|
+ .win[0] = &mini6410_lcd_type1_fb_win,
|
|
|
+ .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
|
|
|
+ .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
|
|
|
+ },
|
|
|
+ { },
|
|
|
};
|
|
|
|
|
|
static void mini6410_lcd_power_set(struct plat_lcd_data *pd,
|
|
@@ -283,7 +291,7 @@ static void mini6410_parse_features(
|
|
|
"screen type already set\n", f);
|
|
|
} else {
|
|
|
int li = f - '0';
|
|
|
- if (li >= ARRAY_SIZE(mini6410_fb_win))
|
|
|
+ if (li >= ARRAY_SIZE(mini6410_lcd_pdata))
|
|
|
printk(KERN_INFO "MINI6410: '%c' out "
|
|
|
"of range LCD mode\n", f);
|
|
|
else {
|
|
@@ -307,14 +315,12 @@ static void __init mini6410_machine_init(void)
|
|
|
/* Parse the feature string */
|
|
|
mini6410_parse_features(&features, mini6410_features_str);
|
|
|
|
|
|
- mini6410_lcd_pdata.win[0] = &mini6410_fb_win[features.lcd_index];
|
|
|
-
|
|
|
printk(KERN_INFO "MINI6410: selected LCD display is %dx%d\n",
|
|
|
- mini6410_lcd_pdata.win[0]->win_mode.xres,
|
|
|
- mini6410_lcd_pdata.win[0]->win_mode.yres);
|
|
|
+ mini6410_lcd_pdata[features.lcd_index].win[0]->win_mode.xres,
|
|
|
+ mini6410_lcd_pdata[features.lcd_index].win[0]->win_mode.yres);
|
|
|
|
|
|
s3c_nand_set_platdata(&mini6410_nand_info);
|
|
|
- s3c_fb_set_platdata(&mini6410_lcd_pdata);
|
|
|
+ s3c_fb_set_platdata(&mini6410_lcd_pdata[features.lcd_index]);
|
|
|
s3c24xx_ts_set_platdata(NULL);
|
|
|
|
|
|
/* configure nCS1 width to 16 bits */
|