Skip to content

Commit

Permalink
fbdev: sh_mipi_dsi: fixup setup timing of sh_mipi_setup()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Kuninori Morimoto authored and Florian Tobias Schandinat committed Nov 21, 2011
1 parent 7d9f88b commit c2658b7
Showing 1 changed file with 44 additions and 35 deletions.
79 changes: 44 additions & 35 deletions drivers/video/sh_mipi_dsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -125,28 +125,6 @@ static void sh_mipi_shutdown(struct platform_device *pdev)
sh_mipi_dsi_enable(mipi, false);
}

static void mipi_display_on(void *arg, struct fb_info *info)
{
struct sh_mipi *mipi = arg;

pm_runtime_get_sync(&mipi->pdev->dev);
sh_mipi_dsi_enable(mipi, true);

if (mipi->next_display_on)
mipi->next_display_on(mipi->next_board_data, info);
}

static void mipi_display_off(void *arg)
{
struct sh_mipi *mipi = arg;

if (mipi->next_display_off)
mipi->next_display_off(mipi->next_board_data);

sh_mipi_dsi_enable(mipi, false);
pm_runtime_put(&mipi->pdev->dev);
}

static int __init sh_mipi_setup(struct sh_mipi *mipi,
struct sh_mipi_dsi_info *pdata)
{
Expand Down Expand Up @@ -414,6 +392,50 @@ static int __init sh_mipi_setup(struct sh_mipi *mipi,
return 0;
}

static void mipi_display_on(void *arg, struct fb_info *info)
{
struct sh_mipi *mipi = arg;
struct sh_mipi_dsi_info *pdata = mipi->pdev->dev.platform_data;
int ret;

pm_runtime_get_sync(&mipi->pdev->dev);

ret = pdata->set_dot_clock(mipi->pdev, mipi->base, 1);
if (ret < 0)
goto mipi_display_on_fail1;

ret = sh_mipi_setup(mipi, pdata);
if (ret < 0)
goto mipi_display_on_fail2;

sh_mipi_dsi_enable(mipi, true);

if (mipi->next_display_on)
mipi->next_display_on(mipi->next_board_data, info);

return;

mipi_display_on_fail1:
pm_runtime_put_sync(&mipi->pdev->dev);
mipi_display_on_fail2:
pdata->set_dot_clock(mipi->pdev, mipi->base, 0);
}

static void mipi_display_off(void *arg)
{
struct sh_mipi *mipi = arg;
struct sh_mipi_dsi_info *pdata = mipi->pdev->dev.platform_data;

if (mipi->next_display_off)
mipi->next_display_off(mipi->next_board_data);

sh_mipi_dsi_enable(mipi, false);

pdata->set_dot_clock(mipi->pdev, mipi->base, 0);

pm_runtime_put_sync(&mipi->pdev->dev);
}

static int __init sh_mipi_probe(struct platform_device *pdev)
{
struct sh_mipi *mipi;
Expand Down Expand Up @@ -498,14 +520,6 @@ static int __init sh_mipi_probe(struct platform_device *pdev)
pm_runtime_enable(&pdev->dev);
pm_runtime_resume(&pdev->dev);

ret = sh_mipi_setup(mipi, pdata);
if (ret < 0)
goto emipisetup;

ret = pdata->set_dot_clock(pdev, mipi->base, 1);
if (ret < 0)
goto emipisetup;

mutex_unlock(&array_lock);
platform_set_drvdata(pdev, mipi);

Expand All @@ -522,10 +536,6 @@ static int __init sh_mipi_probe(struct platform_device *pdev)

return 0;

emipisetup:
mipi_dsi[idx] = NULL;
pm_runtime_disable(&pdev->dev);
clk_disable(mipi->dsit_clk);
eclkton:
esettrate:
clk_put(mipi->dsit_clk);
Expand Down Expand Up @@ -579,7 +589,6 @@ static int __exit sh_mipi_remove(struct platform_device *pdev)
pm_runtime_disable(&pdev->dev);
clk_disable(mipi->dsit_clk);
clk_put(mipi->dsit_clk);
pdata->set_dot_clock(pdev, mipi->base, 0);

iounmap(mipi->linkbase);
if (res2)
Expand Down

0 comments on commit c2658b7

Please sign in to comment.