Lines Matching refs:sdev

33 static int shmob_drm_init_interface(struct shmob_drm_device *sdev)  in shmob_drm_init_interface()  argument
57 if (sdev->pdata->iface.interface >= ARRAY_SIZE(ldmt1r)) { in shmob_drm_init_interface()
58 dev_err(sdev->dev, "invalid interface type %u\n", in shmob_drm_init_interface()
59 sdev->pdata->iface.interface); in shmob_drm_init_interface()
63 sdev->ldmt1r = ldmt1r[sdev->pdata->iface.interface]; in shmob_drm_init_interface()
67 static int shmob_drm_setup_clocks(struct shmob_drm_device *sdev, in shmob_drm_setup_clocks() argument
76 sdev->lddckr = LDDCKR_ICKSEL_BUS; in shmob_drm_setup_clocks()
80 sdev->lddckr = LDDCKR_ICKSEL_MIPI; in shmob_drm_setup_clocks()
84 sdev->lddckr = LDDCKR_ICKSEL_HDMI; in shmob_drm_setup_clocks()
90 clk = devm_clk_get(sdev->dev, clkname); in shmob_drm_setup_clocks()
92 dev_err(sdev->dev, "cannot get dot clock %s\n", clkname); in shmob_drm_setup_clocks()
96 sdev->clock = clk; in shmob_drm_setup_clocks()
107 struct shmob_drm_device *sdev = dev->dev_private; in shmob_drm_irq() local
115 spin_lock_irqsave(&sdev->irq_lock, flags); in shmob_drm_irq()
116 status = lcdc_read(sdev, LDINTR); in shmob_drm_irq()
117 lcdc_write(sdev, LDINTR, status ^ LDINTR_STATUS_MASK); in shmob_drm_irq()
118 spin_unlock_irqrestore(&sdev->irq_lock, flags); in shmob_drm_irq()
122 shmob_drm_crtc_finish_page_flip(&sdev->crtc); in shmob_drm_irq()
148 struct shmob_drm_device *sdev = dev_get_drvdata(dev); in shmob_drm_pm_suspend() local
150 drm_kms_helper_poll_disable(sdev->ddev); in shmob_drm_pm_suspend()
151 shmob_drm_crtc_suspend(&sdev->crtc); in shmob_drm_pm_suspend()
158 struct shmob_drm_device *sdev = dev_get_drvdata(dev); in shmob_drm_pm_resume() local
160 drm_modeset_lock_all(sdev->ddev); in shmob_drm_pm_resume()
161 shmob_drm_crtc_resume(&sdev->crtc); in shmob_drm_pm_resume()
162 drm_modeset_unlock_all(sdev->ddev); in shmob_drm_pm_resume()
164 drm_kms_helper_poll_enable(sdev->ddev); in shmob_drm_pm_resume()
179 struct shmob_drm_device *sdev = platform_get_drvdata(pdev); in shmob_drm_remove() local
180 struct drm_device *ddev = sdev->ddev; in shmob_drm_remove()
184 free_irq(sdev->irq, ddev); in shmob_drm_remove()
193 struct shmob_drm_device *sdev; in shmob_drm_probe() local
207 sdev = devm_kzalloc(&pdev->dev, sizeof(*sdev), GFP_KERNEL); in shmob_drm_probe()
208 if (sdev == NULL) in shmob_drm_probe()
211 sdev->dev = &pdev->dev; in shmob_drm_probe()
212 sdev->pdata = pdata; in shmob_drm_probe()
213 spin_lock_init(&sdev->irq_lock); in shmob_drm_probe()
215 platform_set_drvdata(pdev, sdev); in shmob_drm_probe()
217 sdev->mmio = devm_platform_ioremap_resource(pdev, 0); in shmob_drm_probe()
218 if (IS_ERR(sdev->mmio)) in shmob_drm_probe()
219 return PTR_ERR(sdev->mmio); in shmob_drm_probe()
221 ret = shmob_drm_setup_clocks(sdev, pdata->clk_source); in shmob_drm_probe()
225 ret = shmob_drm_init_interface(sdev); in shmob_drm_probe()
234 sdev->ddev = ddev; in shmob_drm_probe()
235 ddev->dev_private = sdev; in shmob_drm_probe()
237 ret = shmob_drm_modeset_init(sdev); in shmob_drm_probe()
244 ret = shmob_drm_plane_create(sdev, i); in shmob_drm_probe()
260 sdev->irq = ret; in shmob_drm_probe()
262 ret = request_irq(sdev->irq, shmob_drm_irq, 0, ddev->driver->name, in shmob_drm_probe()
280 free_irq(sdev->irq, ddev); in shmob_drm_probe()