aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2011-09-11 16:59:04 -0400
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2012-03-12 17:40:50 -0400
commitafaad83b9c0d24eac88535cc5a8c6019f0c45bcb (patch)
tree8f96bd7ac14c07f89178372782c7707f625bb193
parent43059b0f46f814b4152f327c701d079253904540 (diff)
fbdev: sh_mobile_lcdc: Merge board_cfg and lcd_size_cfg into panel_cfg
Update board code accordingly. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--arch/arm/mach-shmobile/board-ag5evm.c6
-rw-r--r--arch/arm/mach-shmobile/board-ap4evb.c8
-rw-r--r--arch/arm/mach-shmobile/board-bonito.c2
-rw-r--r--arch/arm/mach-shmobile/board-mackerel.c6
-rw-r--r--arch/sh/boards/mach-ap325rxa/setup.c6
-rw-r--r--arch/sh/boards/mach-ecovec24/setup.c2
-rw-r--r--arch/sh/boards/mach-kfr2r09/setup.c4
-rw-r--r--arch/sh/boards/mach-migor/setup.c8
-rw-r--r--arch/sh/boards/mach-se/7724/setup.c2
-rw-r--r--drivers/video/sh_mobile_lcdcfb.c35
-rw-r--r--include/video/sh_mobile_lcdc.h12
11 files changed, 41 insertions, 50 deletions
diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c
index 7108c5da6077..199b3b958f42 100644
--- a/arch/arm/mach-shmobile/board-ag5evm.c
+++ b/arch/arm/mach-shmobile/board-ag5evm.c
@@ -252,12 +252,12 @@ static struct sh_mobile_lcdc_info lcdc0_info = {
252 .interface_type = RGB24, 252 .interface_type = RGB24,
253 .clock_divider = 1, 253 .clock_divider = 1,
254 .flags = LCDC_FLAGS_DWPOL, 254 .flags = LCDC_FLAGS_DWPOL,
255 .lcd_size_cfg.width = 44,
256 .lcd_size_cfg.height = 79,
257 .fourcc = V4L2_PIX_FMT_RGB565, 255 .fourcc = V4L2_PIX_FMT_RGB565,
258 .lcd_cfg = lcdc0_modes, 256 .lcd_cfg = lcdc0_modes,
259 .num_cfg = ARRAY_SIZE(lcdc0_modes), 257 .num_cfg = ARRAY_SIZE(lcdc0_modes),
260 .board_cfg = { 258 .panel_cfg = {
259 .width = 44,
260 .height = 79,
261 .display_on = lcd_backlight_on, 261 .display_on = lcd_backlight_on,
262 .display_off = lcd_backlight_reset, 262 .display_off = lcd_backlight_reset,
263 }, 263 },
diff --git a/arch/arm/mach-shmobile/board-ap4evb.c b/arch/arm/mach-shmobile/board-ap4evb.c
index 22e192574625..2cb6c39dd62a 100644
--- a/arch/arm/mach-shmobile/board-ap4evb.c
+++ b/arch/arm/mach-shmobile/board-ap4evb.c
@@ -1360,8 +1360,8 @@ static void __init ap4evb_init(void)
1360 lcdc_info.ch[0].interface_type = RGB24; 1360 lcdc_info.ch[0].interface_type = RGB24;
1361 lcdc_info.ch[0].clock_divider = 1; 1361 lcdc_info.ch[0].clock_divider = 1;
1362 lcdc_info.ch[0].flags = LCDC_FLAGS_DWPOL; 1362 lcdc_info.ch[0].flags = LCDC_FLAGS_DWPOL;
1363 lcdc_info.ch[0].lcd_size_cfg.width = 44; 1363 lcdc_info.ch[0].panel_cfg.width = 44;
1364 lcdc_info.ch[0].lcd_size_cfg.height = 79; 1364 lcdc_info.ch[0].panel_cfg.height = 79;
1365 1365
1366 platform_add_devices(qhd_devices, ARRAY_SIZE(qhd_devices)); 1366 platform_add_devices(qhd_devices, ARRAY_SIZE(qhd_devices));
1367 1367
@@ -1402,8 +1402,8 @@ static void __init ap4evb_init(void)
1402 lcdc_info.ch[0].interface_type = RGB18; 1402 lcdc_info.ch[0].interface_type = RGB18;
1403 lcdc_info.ch[0].clock_divider = 3; 1403 lcdc_info.ch[0].clock_divider = 3;
1404 lcdc_info.ch[0].flags = 0; 1404 lcdc_info.ch[0].flags = 0;
1405 lcdc_info.ch[0].lcd_size_cfg.width = 152; 1405 lcdc_info.ch[0].panel_cfg.width = 152;
1406 lcdc_info.ch[0].lcd_size_cfg.height = 91; 1406 lcdc_info.ch[0].panel_cfg.height = 91;
1407 1407
1408 /* enable TouchScreen */ 1408 /* enable TouchScreen */
1409 irq_set_irq_type(IRQ7, IRQ_TYPE_LEVEL_LOW); 1409 irq_set_irq_type(IRQ7, IRQ_TYPE_LEVEL_LOW);
diff --git a/arch/arm/mach-shmobile/board-bonito.c b/arch/arm/mach-shmobile/board-bonito.c
index 4d2201622323..9cd9408b851b 100644
--- a/arch/arm/mach-shmobile/board-bonito.c
+++ b/arch/arm/mach-shmobile/board-bonito.c
@@ -247,7 +247,7 @@ static struct sh_mobile_lcdc_info lcdc0_info = {
247 .flags = 0, 247 .flags = 0,
248 .lcd_cfg = &lcdc0_mode, 248 .lcd_cfg = &lcdc0_mode,
249 .num_cfg = 1, 249 .num_cfg = 1,
250 .lcd_size_cfg = { 250 .panel_cfg = {
251 .width = 152, 251 .width = 152,
252 .height = 91, 252 .height = 91,
253 }, 253 },
diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c
index 123232329a88..9228cc555b46 100644
--- a/arch/arm/mach-shmobile/board-mackerel.c
+++ b/arch/arm/mach-shmobile/board-mackerel.c
@@ -389,8 +389,10 @@ static struct sh_mobile_lcdc_info lcdc_info = {
389 .interface_type = RGB24, 389 .interface_type = RGB24,
390 .clock_divider = 3, 390 .clock_divider = 3,
391 .flags = 0, 391 .flags = 0,
392 .lcd_size_cfg.width = 152, 392 .panel_cfg = {
393 .lcd_size_cfg.height = 91, 393 .width = 152,
394 .height = 91,
395 },
394 .bl_info = { 396 .bl_info = {
395 .name = "sh_mobile_lcdc_bl", 397 .name = "sh_mobile_lcdc_bl",
396 .max_brightness = 1, 398 .max_brightness = 1,
diff --git a/arch/sh/boards/mach-ap325rxa/setup.c b/arch/sh/boards/mach-ap325rxa/setup.c
index d0d2401c3cbc..a87b7f42f120 100644
--- a/arch/sh/boards/mach-ap325rxa/setup.c
+++ b/arch/sh/boards/mach-ap325rxa/setup.c
@@ -213,11 +213,9 @@ static struct sh_mobile_lcdc_info lcdc_info = {
213 .clock_divider = 1, 213 .clock_divider = 1,
214 .lcd_cfg = ap325rxa_lcdc_modes, 214 .lcd_cfg = ap325rxa_lcdc_modes,
215 .num_cfg = ARRAY_SIZE(ap325rxa_lcdc_modes), 215 .num_cfg = ARRAY_SIZE(ap325rxa_lcdc_modes),
216 .lcd_size_cfg = { /* 7.0 inch */ 216 .panel_cfg = {
217 .width = 152, 217 .width = 152, /* 7.0 inch */
218 .height = 91, 218 .height = 91,
219 },
220 .board_cfg = {
221 .display_on = ap320_wvga_power_on, 219 .display_on = ap320_wvga_power_on,
222 .display_off = ap320_wvga_power_off, 220 .display_off = ap320_wvga_power_off,
223 }, 221 },
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c
index 769aab3fa379..41767451ead1 100644
--- a/arch/sh/boards/mach-ecovec24/setup.c
+++ b/arch/sh/boards/mach-ecovec24/setup.c
@@ -327,7 +327,7 @@ static struct sh_mobile_lcdc_info lcdc_info = {
327 .interface_type = RGB18, 327 .interface_type = RGB18,
328 .chan = LCDC_CHAN_MAINLCD, 328 .chan = LCDC_CHAN_MAINLCD,
329 .fourcc = V4L2_PIX_FMT_RGB565, 329 .fourcc = V4L2_PIX_FMT_RGB565,
330 .lcd_size_cfg = { /* 7.0 inch */ 330 .panel_cfg = { /* 7.0 inch */
331 .width = 152, 331 .width = 152,
332 .height = 91, 332 .height = 91,
333 }, 333 },
diff --git a/arch/sh/boards/mach-kfr2r09/setup.c b/arch/sh/boards/mach-kfr2r09/setup.c
index 5b382e1afaea..77d5a60d64fd 100644
--- a/arch/sh/boards/mach-kfr2r09/setup.c
+++ b/arch/sh/boards/mach-kfr2r09/setup.c
@@ -150,11 +150,9 @@ static struct sh_mobile_lcdc_info kfr2r09_sh_lcdc_info = {
150 .flags = LCDC_FLAGS_DWPOL, 150 .flags = LCDC_FLAGS_DWPOL,
151 .lcd_cfg = kfr2r09_lcdc_modes, 151 .lcd_cfg = kfr2r09_lcdc_modes,
152 .num_cfg = ARRAY_SIZE(kfr2r09_lcdc_modes), 152 .num_cfg = ARRAY_SIZE(kfr2r09_lcdc_modes),
153 .lcd_size_cfg = { 153 .panel_cfg = {
154 .width = 35, 154 .width = 35,
155 .height = 58, 155 .height = 58,
156 },
157 .board_cfg = {
158 .setup_sys = kfr2r09_lcd_setup, 156 .setup_sys = kfr2r09_lcd_setup,
159 .start_transfer = kfr2r09_lcd_start, 157 .start_transfer = kfr2r09_lcd_start,
160 .display_on = kfr2r09_lcd_on, 158 .display_on = kfr2r09_lcd_on,
diff --git a/arch/sh/boards/mach-migor/setup.c b/arch/sh/boards/mach-migor/setup.c
index d37ba2720527..93a1c9109abc 100644
--- a/arch/sh/boards/mach-migor/setup.c
+++ b/arch/sh/boards/mach-migor/setup.c
@@ -248,7 +248,7 @@ static struct sh_mobile_lcdc_info sh_mobile_lcdc_info = {
248 .clock_divider = 2, 248 .clock_divider = 2,
249 .lcd_cfg = migor_lcd_modes, 249 .lcd_cfg = migor_lcd_modes,
250 .num_cfg = ARRAY_SIZE(migor_lcd_modes), 250 .num_cfg = ARRAY_SIZE(migor_lcd_modes),
251 .lcd_size_cfg = { /* 7.0 inch */ 251 .panel_cfg = { /* 7.0 inch */
252 .width = 152, 252 .width = 152,
253 .height = 91, 253 .height = 91,
254 }, 254 },
@@ -262,11 +262,9 @@ static struct sh_mobile_lcdc_info sh_mobile_lcdc_info = {
262 .clock_divider = 10, 262 .clock_divider = 10,
263 .lcd_cfg = migor_lcd_modes, 263 .lcd_cfg = migor_lcd_modes,
264 .num_cfg = ARRAY_SIZE(migor_lcd_modes), 264 .num_cfg = ARRAY_SIZE(migor_lcd_modes),
265 .lcd_size_cfg = { /* 2.4 inch */ 265 .panel_cfg = {
266 .width = 49, 266 .width = 49, /* 2.4 inch */
267 .height = 37, 267 .height = 37,
268 },
269 .board_cfg = {
270 .setup_sys = migor_lcd_qvga_setup, 268 .setup_sys = migor_lcd_qvga_setup,
271 }, 269 },
272 .sys_bus_cfg = { 270 .sys_bus_cfg = {
diff --git a/arch/sh/boards/mach-se/7724/setup.c b/arch/sh/boards/mach-se/7724/setup.c
index 5e25dbe726e2..a468398bfb34 100644
--- a/arch/sh/boards/mach-se/7724/setup.c
+++ b/arch/sh/boards/mach-se/7724/setup.c
@@ -182,7 +182,7 @@ static struct sh_mobile_lcdc_info lcdc_info = {
182 .chan = LCDC_CHAN_MAINLCD, 182 .chan = LCDC_CHAN_MAINLCD,
183 .fourcc = V4L2_PIX_FMT_RGB565, 183 .fourcc = V4L2_PIX_FMT_RGB565,
184 .clock_divider = 1, 184 .clock_divider = 1,
185 .lcd_size_cfg = { /* 7.0 inch */ 185 .panel_cfg = { /* 7.0 inch */
186 .width = 152, 186 .width = 152,
187 .height = 91, 187 .height = 91,
188 }, 188 },
diff --git a/drivers/video/sh_mobile_lcdcfb.c b/drivers/video/sh_mobile_lcdcfb.c
index adfffd6b7ec1..9e44988155a4 100644
--- a/drivers/video/sh_mobile_lcdcfb.c
+++ b/drivers/video/sh_mobile_lcdcfb.c
@@ -289,7 +289,7 @@ static void sh_mobile_lcdc_deferred_io(struct fb_info *info,
289 struct list_head *pagelist) 289 struct list_head *pagelist)
290{ 290{
291 struct sh_mobile_lcdc_chan *ch = info->par; 291 struct sh_mobile_lcdc_chan *ch = info->par;
292 struct sh_mobile_lcdc_board_cfg *bcfg = &ch->cfg.board_cfg; 292 struct sh_mobile_lcdc_panel_cfg *panel = &ch->cfg.panel_cfg;
293 293
294 /* enable clocks before accessing hardware */ 294 /* enable clocks before accessing hardware */
295 sh_mobile_lcdc_clk_on(ch->lcdc); 295 sh_mobile_lcdc_clk_on(ch->lcdc);
@@ -314,13 +314,13 @@ static void sh_mobile_lcdc_deferred_io(struct fb_info *info,
314 314
315 /* trigger panel update */ 315 /* trigger panel update */
316 dma_map_sg(info->dev, ch->sglist, nr_pages, DMA_TO_DEVICE); 316 dma_map_sg(info->dev, ch->sglist, nr_pages, DMA_TO_DEVICE);
317 if (bcfg->start_transfer) 317 if (panel->start_transfer)
318 bcfg->start_transfer(ch, &sh_mobile_lcdc_sys_bus_ops); 318 panel->start_transfer(ch, &sh_mobile_lcdc_sys_bus_ops);
319 lcdc_write_chan(ch, LDSM2R, LDSM2R_OSTRG); 319 lcdc_write_chan(ch, LDSM2R, LDSM2R_OSTRG);
320 dma_unmap_sg(info->dev, ch->sglist, nr_pages, DMA_TO_DEVICE); 320 dma_unmap_sg(info->dev, ch->sglist, nr_pages, DMA_TO_DEVICE);
321 } else { 321 } else {
322 if (bcfg->start_transfer) 322 if (panel->start_transfer)
323 bcfg->start_transfer(ch, &sh_mobile_lcdc_sys_bus_ops); 323 panel->start_transfer(ch, &sh_mobile_lcdc_sys_bus_ops);
324 lcdc_write_chan(ch, LDSM2R, LDSM2R_OSTRG); 324 lcdc_write_chan(ch, LDSM2R, LDSM2R_OSTRG);
325 } 325 }
326} 326}
@@ -335,7 +335,7 @@ static void sh_mobile_lcdc_deferred_io_touch(struct fb_info *info)
335 335
336static void sh_mobile_lcdc_display_on(struct sh_mobile_lcdc_chan *ch) 336static void sh_mobile_lcdc_display_on(struct sh_mobile_lcdc_chan *ch)
337{ 337{
338 struct sh_mobile_lcdc_board_cfg *board_cfg = &ch->cfg.board_cfg; 338 struct sh_mobile_lcdc_panel_cfg *panel = &ch->cfg.panel_cfg;
339 339
340 if (ch->tx_dev) { 340 if (ch->tx_dev) {
341 if (ch->tx_dev->ops->display_on(ch->tx_dev, ch->info) < 0) 341 if (ch->tx_dev->ops->display_on(ch->tx_dev, ch->info) < 0)
@@ -343,16 +343,16 @@ static void sh_mobile_lcdc_display_on(struct sh_mobile_lcdc_chan *ch)
343 } 343 }
344 344
345 /* HDMI must be enabled before LCDC configuration */ 345 /* HDMI must be enabled before LCDC configuration */
346 if (board_cfg->display_on) 346 if (panel->display_on)
347 board_cfg->display_on(); 347 panel->display_on();
348} 348}
349 349
350static void sh_mobile_lcdc_display_off(struct sh_mobile_lcdc_chan *ch) 350static void sh_mobile_lcdc_display_off(struct sh_mobile_lcdc_chan *ch)
351{ 351{
352 struct sh_mobile_lcdc_board_cfg *board_cfg = &ch->cfg.board_cfg; 352 struct sh_mobile_lcdc_panel_cfg *panel = &ch->cfg.panel_cfg;
353 353
354 if (board_cfg->display_off) 354 if (panel->display_off)
355 board_cfg->display_off(); 355 panel->display_off();
356 356
357 if (ch->tx_dev) 357 if (ch->tx_dev)
358 ch->tx_dev->ops->display_off(ch->tx_dev); 358 ch->tx_dev->ops->display_off(ch->tx_dev);
@@ -687,16 +687,15 @@ static int sh_mobile_lcdc_start(struct sh_mobile_lcdc_priv *priv)
687 lcdc_wait_bit(priv, _LDCNT2R, LDCNT2R_BR, 0); 687 lcdc_wait_bit(priv, _LDCNT2R, LDCNT2R_BR, 0);
688 688
689 for (k = 0; k < ARRAY_SIZE(priv->ch); k++) { 689 for (k = 0; k < ARRAY_SIZE(priv->ch); k++) {
690 struct sh_mobile_lcdc_board_cfg *board_cfg; 690 struct sh_mobile_lcdc_panel_cfg *panel;
691 691
692 ch = &priv->ch[k]; 692 ch = &priv->ch[k];
693 if (!ch->enabled) 693 if (!ch->enabled)
694 continue; 694 continue;
695 695
696 board_cfg = &ch->cfg.board_cfg; 696 panel = &ch->cfg.panel_cfg;
697 if (board_cfg->setup_sys) { 697 if (panel->setup_sys) {
698 ret = board_cfg->setup_sys(ch, 698 ret = panel->setup_sys(ch, &sh_mobile_lcdc_sys_bus_ops);
699 &sh_mobile_lcdc_sys_bus_ops);
700 if (ret) 699 if (ret)
701 return ret; 700 return ret;
702 } 701 }
@@ -1654,8 +1653,8 @@ sh_mobile_lcdc_channel_init(struct sh_mobile_lcdc_priv *priv,
1654 */ 1653 */
1655 var = &info->var; 1654 var = &info->var;
1656 fb_videomode_to_var(var, mode); 1655 fb_videomode_to_var(var, mode);
1657 var->width = cfg->lcd_size_cfg.width; 1656 var->width = cfg->panel_cfg.width;
1658 var->height = cfg->lcd_size_cfg.height; 1657 var->height = cfg->panel_cfg.height;
1659 var->yres_virtual = var->yres * 2; 1658 var->yres_virtual = var->yres * 2;
1660 var->activate = FB_ACTIVATE_NOW; 1659 var->activate = FB_ACTIVATE_NOW;
1661 1660
diff --git a/include/video/sh_mobile_lcdc.h b/include/video/sh_mobile_lcdc.h
index ecde6aad6f29..4f0fb559ea87 100644
--- a/include/video/sh_mobile_lcdc.h
+++ b/include/video/sh_mobile_lcdc.h
@@ -147,7 +147,9 @@ struct sh_mobile_lcdc_sys_bus_ops {
147 unsigned long (*read_data)(void *handle); 147 unsigned long (*read_data)(void *handle);
148}; 148};
149 149
150struct sh_mobile_lcdc_board_cfg { 150struct sh_mobile_lcdc_panel_cfg {
151 unsigned long width; /* Panel width in mm */
152 unsigned long height; /* Panel height in mm */
151 int (*setup_sys)(void *sys_ops_handle, 153 int (*setup_sys)(void *sys_ops_handle,
152 struct sh_mobile_lcdc_sys_bus_ops *sys_ops); 154 struct sh_mobile_lcdc_sys_bus_ops *sys_ops);
153 void (*start_transfer)(void *sys_ops_handle, 155 void (*start_transfer)(void *sys_ops_handle,
@@ -156,11 +158,6 @@ struct sh_mobile_lcdc_board_cfg {
156 void (*display_off)(void); 158 void (*display_off)(void);
157}; 159};
158 160
159struct sh_mobile_lcdc_lcd_size_cfg { /* width and height of panel in mm */
160 unsigned long width;
161 unsigned long height;
162};
163
164/* backlight info */ 161/* backlight info */
165struct sh_mobile_lcdc_bl_info { 162struct sh_mobile_lcdc_bl_info {
166 const char *name; 163 const char *name;
@@ -178,8 +175,7 @@ struct sh_mobile_lcdc_chan_cfg {
178 unsigned long flags; /* LCDC_FLAGS_... */ 175 unsigned long flags; /* LCDC_FLAGS_... */
179 const struct fb_videomode *lcd_cfg; 176 const struct fb_videomode *lcd_cfg;
180 int num_cfg; 177 int num_cfg;
181 struct sh_mobile_lcdc_lcd_size_cfg lcd_size_cfg; 178 struct sh_mobile_lcdc_panel_cfg panel_cfg;
182 struct sh_mobile_lcdc_board_cfg board_cfg;
183 struct sh_mobile_lcdc_bl_info bl_info; 179 struct sh_mobile_lcdc_bl_info bl_info;
184 struct sh_mobile_lcdc_sys_bus_cfg sys_bus_cfg; /* only for SYSn I/F */ 180 struct sh_mobile_lcdc_sys_bus_cfg sys_bus_cfg; /* only for SYSn I/F */
185 struct sh_mobile_meram_cfg *meram_cfg; 181 struct sh_mobile_meram_cfg *meram_cfg;