diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2011-11-08 23:35:45 -0500 |
---|---|---|
committer | Florian Tobias Schandinat <FlorianSchandinat@gmx.de> | 2011-11-21 18:43:22 -0500 |
commit | c2658b70f06108361aa5024798f9c1bf47c73374 (patch) | |
tree | 58e864ea4271b48a19b8a43f782b3cc56f9d5634 /drivers/video/sh_mipi_dsi.c | |
parent | 7d9f88b4f427df6dab7ff92ea81f1ddb7e9c95e4 (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.c | 79 |
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 | ||
128 | static 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 | |||
139 | static 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 | |||
150 | static int __init sh_mipi_setup(struct sh_mipi *mipi, | 128 | static 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 | ||
395 | static 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 | |||
418 | mipi_display_on_fail1: | ||
419 | pm_runtime_put_sync(&mipi->pdev->dev); | ||
420 | mipi_display_on_fail2: | ||
421 | pdata->set_dot_clock(mipi->pdev, mipi->base, 0); | ||
422 | } | ||
423 | |||
424 | static 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 | |||
417 | static int __init sh_mipi_probe(struct platform_device *pdev) | 439 | static 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 | ||
525 | emipisetup: | ||
526 | mipi_dsi[idx] = NULL; | ||
527 | pm_runtime_disable(&pdev->dev); | ||
528 | clk_disable(mipi->dsit_clk); | ||
529 | eclkton: | 539 | eclkton: |
530 | esettrate: | 540 | esettrate: |
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) |