Lines Matching refs:sdev
41 static int shmob_drm_clk_on(struct shmob_drm_device *sdev) in shmob_drm_clk_on() argument
45 if (sdev->clock) { in shmob_drm_clk_on()
46 ret = clk_prepare_enable(sdev->clock); in shmob_drm_clk_on()
51 if (sdev->meram_dev && sdev->meram_dev->pdev) in shmob_drm_clk_on()
52 pm_runtime_get_sync(&sdev->meram_dev->pdev->dev); in shmob_drm_clk_on()
58 static void shmob_drm_clk_off(struct shmob_drm_device *sdev) in shmob_drm_clk_off() argument
61 if (sdev->meram_dev && sdev->meram_dev->pdev) in shmob_drm_clk_off()
62 pm_runtime_put_sync(&sdev->meram_dev->pdev->dev); in shmob_drm_clk_off()
64 if (sdev->clock) in shmob_drm_clk_off()
65 clk_disable_unprepare(sdev->clock); in shmob_drm_clk_off()
75 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_setup_geometry() local
76 const struct shmob_drm_interface_data *idata = &sdev->pdata->iface; in shmob_drm_crtc_setup_geometry()
80 value = sdev->ldmt1r in shmob_drm_crtc_setup_geometry()
88 lcdc_write(sdev, LDMT1R, value); in shmob_drm_crtc_setup_geometry()
99 lcdc_write(sdev, LDMT2R, value); in shmob_drm_crtc_setup_geometry()
105 lcdc_write(sdev, LDMT3R, value); in shmob_drm_crtc_setup_geometry()
110 lcdc_write(sdev, LDHCNR, value); in shmob_drm_crtc_setup_geometry()
114 lcdc_write(sdev, LDHSYNR, value); in shmob_drm_crtc_setup_geometry()
119 lcdc_write(sdev, LDHAJR, value); in shmob_drm_crtc_setup_geometry()
123 lcdc_write(sdev, LDVLNR, value); in shmob_drm_crtc_setup_geometry()
127 lcdc_write(sdev, LDVSYNR, value); in shmob_drm_crtc_setup_geometry()
132 struct shmob_drm_device *sdev = scrtc->crtc.dev->dev_private; in shmob_drm_crtc_start_stop() local
135 value = lcdc_read(sdev, LDCNT2R); in shmob_drm_crtc_start_stop()
137 lcdc_write(sdev, LDCNT2R, value | LDCNT2R_DO); in shmob_drm_crtc_start_stop()
139 lcdc_write(sdev, LDCNT2R, value & ~LDCNT2R_DO); in shmob_drm_crtc_start_stop()
143 value = lcdc_read(sdev, LDPMR) & LDPMR_LPS; in shmob_drm_crtc_start_stop()
152 lcdc_write(sdev, LDDCKSTPR, LDDCKSTPR_DCKSTP); in shmob_drm_crtc_start_stop()
166 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_start() local
167 const struct shmob_drm_interface_data *idata = &sdev->pdata->iface; in shmob_drm_crtc_start()
169 struct drm_device *dev = sdev->ddev; in shmob_drm_crtc_start()
182 ret = shmob_drm_clk_on(sdev); in shmob_drm_crtc_start()
187 lcdc_write(sdev, LDCNT2R, lcdc_read(sdev, LDCNT2R) | LDCNT2R_BR); in shmob_drm_crtc_start()
188 lcdc_wait_bit(sdev, LDCNT2R, LDCNT2R_BR, 0); in shmob_drm_crtc_start()
189 lcdc_write(sdev, LDCNT2R, LDCNT2R_ME); in shmob_drm_crtc_start()
193 lcdc_write(sdev, LDINTR, 0); in shmob_drm_crtc_start()
196 lcdc_write(sdev, LDPMR, 0); in shmob_drm_crtc_start()
198 value = sdev->lddckr; in shmob_drm_crtc_start()
203 lcdc_write(sdev, LDDCKPAT1R, 0); in shmob_drm_crtc_start()
204 lcdc_write(sdev, LDDCKPAT2R, (1 << (idata->clk_div / 2)) - 1); in shmob_drm_crtc_start()
212 lcdc_write(sdev, LDDCKR, value); in shmob_drm_crtc_start()
213 lcdc_write(sdev, LDDCKSTPR, 0); in shmob_drm_crtc_start()
214 lcdc_wait_bit(sdev, LDDCKSTPR, ~0, 0); in shmob_drm_crtc_start()
222 lcdc_write(sdev, LDDFR, format->lddfr | LDDFR_CF1); in shmob_drm_crtc_start()
223 lcdc_write(sdev, LDMLSR, scrtc->line_size); in shmob_drm_crtc_start()
224 lcdc_write(sdev, LDSA1R, scrtc->dma[0]); in shmob_drm_crtc_start()
226 lcdc_write(sdev, LDSA2R, scrtc->dma[1]); in shmob_drm_crtc_start()
227 lcdc_write(sdev, LDSM1R, 0); in shmob_drm_crtc_start()
248 lcdc_write(sdev, LDDDSR, value); in shmob_drm_crtc_start()
257 lcdc_write(sdev, LDCNT1R, LDCNT1R_DE); in shmob_drm_crtc_start()
267 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_stop() local
274 sh_mobile_meram_cache_free(sdev->meram, scrtc->cache); in shmob_drm_crtc_stop()
282 lcdc_write(sdev, LDCNT1R, 0); in shmob_drm_crtc_stop()
285 shmob_drm_clk_off(sdev); in shmob_drm_crtc_stop()
308 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_compute_base() local
326 sh_mobile_meram_cache_update(sdev->meram, scrtc->cache, in shmob_drm_crtc_compute_base()
334 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_update_base() local
338 lcdc_write_mirror(sdev, LDSA1R, scrtc->dma[0]); in shmob_drm_crtc_update_base()
340 lcdc_write_mirror(sdev, LDSA2R, scrtc->dma[1]); in shmob_drm_crtc_update_base()
342 lcdc_write(sdev, LDRCNTR, lcdc_read(sdev, LDRCNTR) ^ LDRCNTR_MRS); in shmob_drm_crtc_update_base()
381 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_mode_set() local
382 const struct sh_mobile_meram_cfg *mdata = sdev->pdata->meram; in shmob_drm_crtc_mode_set()
388 dev_dbg(sdev->dev, "mode_set: unsupported format %08x\n", in shmob_drm_crtc_mode_set()
396 if (sdev->meram) { in shmob_drm_crtc_mode_set()
401 sh_mobile_meram_cache_free(sdev->meram, scrtc->cache); in shmob_drm_crtc_mode_set()
405 cache = sh_mobile_meram_cache_alloc(sdev->meram, mdata, in shmob_drm_crtc_mode_set()
513 int shmob_drm_crtc_create(struct shmob_drm_device *sdev) in shmob_drm_crtc_create() argument
515 struct drm_crtc *crtc = &sdev->crtc.crtc; in shmob_drm_crtc_create()
518 sdev->crtc.dpms = DRM_MODE_DPMS_OFF; in shmob_drm_crtc_create()
520 ret = drm_crtc_init(sdev->ddev, crtc, &crtc_funcs); in shmob_drm_crtc_create()
539 struct shmob_drm_device *sdev = encoder->dev->dev_private; in shmob_drm_encoder_dpms() local
540 struct shmob_drm_connector *scon = &sdev->connector; in shmob_drm_encoder_dpms()
555 struct shmob_drm_device *sdev = dev->dev_private; in shmob_drm_encoder_mode_fixup() local
556 struct drm_connector *connector = &sdev->connector.connector; in shmob_drm_encoder_mode_fixup()
606 int shmob_drm_encoder_create(struct shmob_drm_device *sdev) in shmob_drm_encoder_create() argument
608 struct drm_encoder *encoder = &sdev->encoder.encoder; in shmob_drm_encoder_create()
611 sdev->encoder.dpms = DRM_MODE_DPMS_OFF; in shmob_drm_encoder_create()
615 ret = drm_encoder_init(sdev->ddev, encoder, &encoder_funcs, in shmob_drm_encoder_create()
625 void shmob_drm_crtc_enable_vblank(struct shmob_drm_device *sdev, bool enable) in shmob_drm_crtc_enable_vblank() argument
631 spin_lock_irqsave(&sdev->irq_lock, flags); in shmob_drm_crtc_enable_vblank()
632 ldintr = lcdc_read(sdev, LDINTR) | LDINTR_STATUS_MASK; in shmob_drm_crtc_enable_vblank()
637 lcdc_write(sdev, LDINTR, ldintr); in shmob_drm_crtc_enable_vblank()
638 spin_unlock_irqrestore(&sdev->irq_lock, flags); in shmob_drm_crtc_enable_vblank()
650 struct shmob_drm_device *sdev = connector->dev->dev_private; in shmob_drm_connector_get_modes() local
658 mode->clock = sdev->pdata->panel.mode.clock; in shmob_drm_connector_get_modes()
659 mode->hdisplay = sdev->pdata->panel.mode.hdisplay; in shmob_drm_connector_get_modes()
660 mode->hsync_start = sdev->pdata->panel.mode.hsync_start; in shmob_drm_connector_get_modes()
661 mode->hsync_end = sdev->pdata->panel.mode.hsync_end; in shmob_drm_connector_get_modes()
662 mode->htotal = sdev->pdata->panel.mode.htotal; in shmob_drm_connector_get_modes()
663 mode->vdisplay = sdev->pdata->panel.mode.vdisplay; in shmob_drm_connector_get_modes()
664 mode->vsync_start = sdev->pdata->panel.mode.vsync_start; in shmob_drm_connector_get_modes()
665 mode->vsync_end = sdev->pdata->panel.mode.vsync_end; in shmob_drm_connector_get_modes()
666 mode->vtotal = sdev->pdata->panel.mode.vtotal; in shmob_drm_connector_get_modes()
667 mode->flags = sdev->pdata->panel.mode.flags; in shmob_drm_connector_get_modes()
672 connector->display_info.width_mm = sdev->pdata->panel.width_mm; in shmob_drm_connector_get_modes()
673 connector->display_info.height_mm = sdev->pdata->panel.height_mm; in shmob_drm_connector_get_modes()
713 int shmob_drm_connector_create(struct shmob_drm_device *sdev, in shmob_drm_connector_create() argument
716 struct drm_connector *connector = &sdev->connector.connector; in shmob_drm_connector_create()
719 sdev->connector.encoder = encoder; in shmob_drm_connector_create()
721 connector->display_info.width_mm = sdev->pdata->panel.width_mm; in shmob_drm_connector_create()
722 connector->display_info.height_mm = sdev->pdata->panel.height_mm; in shmob_drm_connector_create()
724 ret = drm_connector_init(sdev->ddev, connector, &connector_funcs, in shmob_drm_connector_create()
734 ret = shmob_drm_backlight_init(&sdev->connector); in shmob_drm_connector_create()
746 sdev->ddev->mode_config.dpms_property, DRM_MODE_DPMS_OFF); in shmob_drm_connector_create()
751 shmob_drm_backlight_exit(&sdev->connector); in shmob_drm_connector_create()