aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/shmobile
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/shmobile')
-rw-r--r--drivers/gpu/drm/shmobile/shmob_drm_crtc.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
index 562f9a401cf6..0428076f1ce8 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
@@ -37,14 +37,21 @@
37 * Clock management 37 * Clock management
38 */ 38 */
39 39
40static void shmob_drm_clk_on(struct shmob_drm_device *sdev) 40static int shmob_drm_clk_on(struct shmob_drm_device *sdev)
41{ 41{
42 if (sdev->clock) 42 int ret;
43 clk_prepare_enable(sdev->clock); 43
44 if (sdev->clock) {
45 ret = clk_prepare_enable(sdev->clock);
46 if (ret < 0)
47 return ret;
48 }
44#if 0 49#if 0
45 if (sdev->meram_dev && sdev->meram_dev->pdev) 50 if (sdev->meram_dev && sdev->meram_dev->pdev)
46 pm_runtime_get_sync(&sdev->meram_dev->pdev->dev); 51 pm_runtime_get_sync(&sdev->meram_dev->pdev->dev);
47#endif 52#endif
53
54 return 0;
48} 55}
49 56
50static void shmob_drm_clk_off(struct shmob_drm_device *sdev) 57static void shmob_drm_clk_off(struct shmob_drm_device *sdev)
@@ -161,6 +168,7 @@ static void shmob_drm_crtc_start(struct shmob_drm_crtc *scrtc)
161 struct drm_device *dev = sdev->ddev; 168 struct drm_device *dev = sdev->ddev;
162 struct drm_plane *plane; 169 struct drm_plane *plane;
163 u32 value; 170 u32 value;
171 int ret;
164 172
165 if (scrtc->started) 173 if (scrtc->started)
166 return; 174 return;
@@ -170,7 +178,9 @@ static void shmob_drm_crtc_start(struct shmob_drm_crtc *scrtc)
170 return; 178 return;
171 179
172 /* Enable clocks before accessing the hardware. */ 180 /* Enable clocks before accessing the hardware. */
173 shmob_drm_clk_on(sdev); 181 ret = shmob_drm_clk_on(sdev);
182 if (ret < 0)
183 return;
174 184
175 /* Reset and enable the LCDC. */ 185 /* Reset and enable the LCDC. */
176 lcdc_write(sdev, LDCNT2R, lcdc_read(sdev, LDCNT2R) | LDCNT2R_BR); 186 lcdc_write(sdev, LDCNT2R, lcdc_read(sdev, LDCNT2R) | LDCNT2R_BR);