static int s5p_dp_shutdown(struct platform_device *pdev) { struct s5p_dp_device *dp = platform_get_drvdata(pdev); struct s5p_dp_platdata *pdata = dp->dev->platform_data; lcd_device_unregister(dp->lcd); if (pdata->backlight_off) pdata->backlight_off(); if (pdata->lcd_off) pdata->lcd_off(); s5p_dp_disable(dp); free_irq(dp->irq, dp); iounmap(dp->reg_base); clk_put(dp->clock); release_mem_region(dp->res->start, resource_size(dp->res)); pm_runtime_disable(dp->dev); kfree(dp); return 0; }
static void s5p_dp_shutdown(struct platform_device *pdev) { struct s5p_dp_device *dp = platform_get_drvdata(pdev); struct s5p_dp_platdata *pdata = dp->dev->platform_data; #ifdef CONFIG_S5P_DP_PSR mutex_lock(&dp->lock); dp->user_disabled = true; fb_unregister_client(&dp->notifier); mutex_unlock(&dp->lock); #endif lcd_device_unregister(dp->lcd); if (pdata->backlight_off) pdata->backlight_off(); if (pdata->lcd_off) pdata->lcd_off(); s5p_dp_disable(dp); free_irq(dp->irq, dp); iounmap(dp->reg_base); clk_put(dp->clock); release_mem_region(dp->res->start, resource_size(dp->res)); pm_runtime_disable(dp->dev); kfree(dp); }
static int __devexit s5p_dp_remove(struct platform_device *pdev) { struct s5p_dp_device *dp = platform_get_drvdata(pdev); #ifdef CONFIG_S5P_DP_PSR mutex_lock(&dp->lock); fb_unregister_client(&dp->notifier); mutex_unlock(&dp->lock); #endif free_irq(dp->irq, dp); lcd_device_unregister(dp->lcd); s5p_dp_disable(dp); iounmap(dp->reg_base); clk_put(dp->clock); release_mem_region(dp->res->start, resource_size(dp->res)); pm_runtime_disable(dp->dev); kfree(dp); return 0; }
static int s5p_dp_set_power(struct lcd_device *lcd, int power) { struct s5p_dp_device *dp = lcd_get_data(lcd); int retval; #ifdef CONFIG_S5P_DP_PSR if (dp->user_disabled) return 0; #endif #ifdef CONFIG_S5P_DP_ESD_RECOVERY dp->set_power_state = power; #endif if (power == FB_BLANK_UNBLANK) { retval = s5p_dp_enable(dp); if (retval < 0) return retval; } else { #ifdef CONFIG_S5P_DP_ESD_RECOVERY if (dp->enabled) s5p_dp_disable_esd_interrupt(dp); flush_delayed_work_sync(&dp->esd_recovery); #endif s5p_dp_disable(dp); } return 0; }
static void s5p_dp_shutdown(struct platform_device *pdev) { struct s5p_dp_device *dp = platform_get_drvdata(pdev); struct s5p_dp_platdata *pdata = dp->dev->platform_data; lcd_device_unregister(dp->lcd); if (pdata->backlight_off) pdata->backlight_off(); if (pdata->lcd_off) pdata->lcd_off(); s5p_dp_disable(dp); #if !defined(CONFIG_SOC_EXYNOS5260) free_irq(dp->irq, dp); #endif iounmap(dp->reg_base); clk_put(dp->clock); release_mem_region(dp->res->start, resource_size(dp->res)); pm_runtime_disable(dp->dev); kfree(dp); }
static int s5p_dp_set_power(struct lcd_device *lcd, int power) { struct s5p_dp_device *dp = lcd_get_data(lcd); int retval; if (power == FB_BLANK_UNBLANK) { retval = s5p_dp_enable(dp); if (retval < 0) return retval; } else { s5p_dp_disable(dp); } return 0; }
void esd_recover_handler(struct work_struct *work) { struct s5p_dp_device *dp = container_of(work, struct s5p_dp_device, esd_recovery.work); struct s5p_dp_platdata *pdata = dp->dev->platform_data; if (!dp->enabled) return; dp->esd_count++; dev_info(dp->dev, "esd_recovery start. (%d) \n", dp->esd_count); #ifdef CONFIG_S5P_DP_PSR s3c_fb_psr_exit_from_touch(); usleep_range(40000, 40000); #endif if (dp->set_power_state != FB_BLANK_UNBLANK) goto esd_done; #ifdef CONFIG_S5P_DP_PSR dev_info(dp->dev, "esd_recovery state (%d, %d) \n", dp->psr_enter_state, dp->psr_exit_state); #endif s5p_dp_disable(dp); if (pdata->phy_exit) pdata->phy_exit(); if (pdata->lcd_off) pdata->lcd_off(); if (pdata->lcd_on) pdata->lcd_on(); if (dp->set_power_state != FB_BLANK_UNBLANK) goto esd_done; s5p_dp_enable(dp); esd_done: dev_info(dp->dev, "esd_recovery done. \n"); }
static int __devexit s5p_dp_remove(struct platform_device *pdev) { struct s5p_dp_device *dp = platform_get_drvdata(pdev); free_irq(dp->irq, dp); lcd_device_unregister(dp->lcd); s5p_dp_disable(dp); iounmap(dp->reg_base); clk_put(dp->clock); release_mem_region(dp->res->start, resource_size(dp->res)); pm_runtime_disable(dp->dev); kfree(dp); return 0; }