aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/sh_mipi_dsi.c
diff options
context:
space:
mode:
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>2011-11-08 23:35:45 -0500
committerFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>2011-11-21 18:43:22 -0500
commitc2658b70f06108361aa5024798f9c1bf47c73374 (patch)
tree58e864ea4271b48a19b8a43f782b3cc56f9d5634 /drivers/video/sh_mipi_dsi.c
parent7d9f88b4f427df6dab7ff92ea81f1ddb7e9c95e4 (diff)
fbdev: sh_mipi_dsi: fixup setup timing of sh_mipi_setup()
sh_mipi_setup() should be called after setting of CPG Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Acked-by: Magnus Damm <damm@opensource.se> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Diffstat (limited to 'drivers/video/sh_mipi_dsi.c')
-rw-r--r--drivers/video/sh_mipi_dsi.c79
1 files changed, 44 insertions, 35 deletions
diff --git a/drivers/video/sh_mipi_dsi.c b/drivers/video/sh_mipi_dsi.c
index 7e4650530c9a..f2c3f945f77b 100644
--- a/drivers/video/sh_mipi_dsi.c
+++ b/drivers/video/sh_mipi_dsi.c
@@ -125,28 +125,6 @@ static void sh_mipi_shutdown(struct platform_device *pdev)
125 sh_mipi_dsi_enable(mipi, false); 125 sh_mipi_dsi_enable(mipi, false);
126} 126}
127 127
128static void mipi_display_on(void *arg, struct fb_info *info)
129{
130 struct sh_mipi *mipi = arg;
131
132 pm_runtime_get_sync(&mipi->pdev->dev);
133 sh_mipi_dsi_enable(mipi, true);
134
135 if (mipi->next_display_on)
136 mipi->next_display_on(mipi->next_board_data, info);
137}
138
139static void mipi_display_off(void *arg)
140{
141 struct sh_mipi *mipi = arg;
142
143 if (mipi->next_display_off)
144 mipi->next_display_off(mipi->next_board_data);
145
146 sh_mipi_dsi_enable(mipi, false);
147 pm_runtime_put(&mipi->pdev->dev);
148}
149
150static int __init sh_mipi_setup(struct sh_mipi *mipi, 128static int __init sh_mipi_setup(struct sh_mipi *mipi,
151 struct sh_mipi_dsi_info *pdata) 129 struct sh_mipi_dsi_info *pdata)
152{ 130{
@@ -414,6 +392,50 @@ static int __init sh_mipi_setup(struct sh_mipi *mipi,
414 return 0; 392 return 0;
415} 393}
416 394
395static void mipi_display_on(void *arg, struct fb_info *info)
396{
397 struct sh_mipi *mipi = arg;
398 struct sh_mipi_dsi_info *pdata = mipi->pdev->dev.platform_data;
399 int ret;
400
401 pm_runtime_get_sync(&mipi->pdev->dev);
402
403 ret = pdata->set_dot_clock(mipi->pdev, mipi->base, 1);
404 if (ret < 0)
405 goto mipi_display_on_fail1;
406
407 ret = sh_mipi_setup(mipi, pdata);
408 if (ret < 0)
409 goto mipi_display_on_fail2;
410
411 sh_mipi_dsi_enable(mipi, true);
412
413 if (mipi->next_display_on)
414 mipi->next_display_on(mipi->next_board_data, info);
415
416 return;
417
418mipi_display_on_fail1:
419 pm_runtime_put_sync(&mipi->pdev->dev);
420mipi_display_on_fail2:
421 pdata->set_dot_clock(mipi->pdev, mipi->base, 0);
422}
423
424static void mipi_display_off(void *arg)
425{
426 struct sh_mipi *mipi = arg;
427 struct sh_mipi_dsi_info *pdata = mipi->pdev->dev.platform_data;
428
429 if (mipi->next_display_off)
430 mipi->next_display_off(mipi->next_board_data);
431
432 sh_mipi_dsi_enable(mipi, false);
433
434 pdata->set_dot_clock(mipi->pdev, mipi->base, 0);
435
436 pm_runtime_put_sync(&mipi->pdev->dev);
437}
438
417static int __init sh_mipi_probe(struct platform_device *pdev) 439static int __init sh_mipi_probe(struct platform_device *pdev)
418{ 440{
419 struct sh_mipi *mipi; 441 struct sh_mipi *mipi;
@@ -498,14 +520,6 @@ static int __init sh_mipi_probe(struct platform_device *pdev)
498 pm_runtime_enable(&pdev->dev); 520 pm_runtime_enable(&pdev->dev);
499 pm_runtime_resume(&pdev->dev); 521 pm_runtime_resume(&pdev->dev);
500 522
501 ret = sh_mipi_setup(mipi, pdata);
502 if (ret < 0)
503 goto emipisetup;
504
505 ret = pdata->set_dot_clock(pdev, mipi->base, 1);
506 if (ret < 0)
507 goto emipisetup;
508
509 mutex_unlock(&array_lock); 523 mutex_unlock(&array_lock);
510 platform_set_drvdata(pdev, mipi); 524 platform_set_drvdata(pdev, mipi);
511 525
@@ -522,10 +536,6 @@ static int __init sh_mipi_probe(struct platform_device *pdev)
522 536
523 return 0; 537 return 0;
524 538
525emipisetup:
526 mipi_dsi[idx] = NULL;
527 pm_runtime_disable(&pdev->dev);
528 clk_disable(mipi->dsit_clk);
529eclkton: 539eclkton:
530esettrate: 540esettrate:
531 clk_put(mipi->dsit_clk); 541 clk_put(mipi->dsit_clk);
@@ -579,7 +589,6 @@ static int __exit sh_mipi_remove(struct platform_device *pdev)
579 pm_runtime_disable(&pdev->dev); 589 pm_runtime_disable(&pdev->dev);
580 clk_disable(mipi->dsit_clk); 590 clk_disable(mipi->dsit_clk);
581 clk_put(mipi->dsit_clk); 591 clk_put(mipi->dsit_clk);
582 pdata->set_dot_clock(pdev, mipi->base, 0);
583 592
584 iounmap(mipi->linkbase); 593 iounmap(mipi->linkbase);
585 if (res2) 594 if (res2)