static int mipi_display_on(struct sh_mobile_lcdc_entity *entity) { struct sh_mipi *mipi = to_sh_mipi(entity); 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, &entity->def_mode); if (ret < 0) goto mipi_display_on_fail2; sh_mipi_dsi_enable(mipi, true); return SH_MOBILE_LCDC_DISPLAY_CONNECTED; mipi_display_on_fail1: pm_runtime_put_sync(&mipi->pdev->dev); mipi_display_on_fail2: pdata->set_dot_clock(mipi->pdev, mipi->base, 0); return ret; }
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->dev); }
static void mipi_display_on(void *arg, struct fb_info *info) { struct sh_mipi *mipi = arg; pm_runtime_get_sync(mipi->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(struct sh_mobile_lcdc_entity *entity) { struct sh_mipi *mipi = to_sh_mipi(entity); struct sh_mipi_dsi_info *pdata = mipi->pdev->dev.platform_data; sh_mipi_dsi_enable(mipi, false); pdata->set_dot_clock(mipi->pdev, mipi->base, 0); pm_runtime_put_sync(&mipi->pdev->dev); }
static void sh_mipi_shutdown(struct platform_device *pdev) { struct sh_mipi *mipi = platform_get_drvdata(pdev); sh_mipi_dsi_enable(mipi, false); }
static void mipi_display_off(void *arg) { struct sh_mipi *mipi = arg; sh_mipi_dsi_enable(mipi, false); }
static void mipi_display_on(void *arg, struct fb_info *info) { struct sh_mipi *mipi = arg; sh_mipi_dsi_enable(mipi, true); }