Lines Matching refs:sdev
39 static int shmob_drm_clk_on(struct shmob_drm_device *sdev) in shmob_drm_clk_on() argument
43 if (sdev->clock) { in shmob_drm_clk_on()
44 ret = clk_prepare_enable(sdev->clock); in shmob_drm_clk_on()
52 static void shmob_drm_clk_off(struct shmob_drm_device *sdev) in shmob_drm_clk_off() argument
54 if (sdev->clock) in shmob_drm_clk_off()
55 clk_disable_unprepare(sdev->clock); in shmob_drm_clk_off()
65 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_setup_geometry() local
66 const struct shmob_drm_interface_data *idata = &sdev->pdata->iface; in shmob_drm_crtc_setup_geometry()
70 value = sdev->ldmt1r in shmob_drm_crtc_setup_geometry()
78 lcdc_write(sdev, LDMT1R, value); in shmob_drm_crtc_setup_geometry()
89 lcdc_write(sdev, LDMT2R, value); in shmob_drm_crtc_setup_geometry()
95 lcdc_write(sdev, LDMT3R, value); in shmob_drm_crtc_setup_geometry()
100 lcdc_write(sdev, LDHCNR, value); in shmob_drm_crtc_setup_geometry()
104 lcdc_write(sdev, LDHSYNR, value); in shmob_drm_crtc_setup_geometry()
109 lcdc_write(sdev, LDHAJR, value); in shmob_drm_crtc_setup_geometry()
113 lcdc_write(sdev, LDVLNR, value); in shmob_drm_crtc_setup_geometry()
117 lcdc_write(sdev, LDVSYNR, value); in shmob_drm_crtc_setup_geometry()
122 struct shmob_drm_device *sdev = scrtc->crtc.dev->dev_private; in shmob_drm_crtc_start_stop() local
125 value = lcdc_read(sdev, LDCNT2R); in shmob_drm_crtc_start_stop()
127 lcdc_write(sdev, LDCNT2R, value | LDCNT2R_DO); in shmob_drm_crtc_start_stop()
129 lcdc_write(sdev, LDCNT2R, value & ~LDCNT2R_DO); in shmob_drm_crtc_start_stop()
133 value = lcdc_read(sdev, LDPMR) & LDPMR_LPS; in shmob_drm_crtc_start_stop()
142 lcdc_write(sdev, LDDCKSTPR, LDDCKSTPR_DCKSTP); in shmob_drm_crtc_start_stop()
156 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_start() local
157 const struct shmob_drm_interface_data *idata = &sdev->pdata->iface; in shmob_drm_crtc_start()
159 struct drm_device *dev = sdev->ddev; in shmob_drm_crtc_start()
172 ret = shmob_drm_clk_on(sdev); in shmob_drm_crtc_start()
177 lcdc_write(sdev, LDCNT2R, lcdc_read(sdev, LDCNT2R) | LDCNT2R_BR); in shmob_drm_crtc_start()
178 lcdc_wait_bit(sdev, LDCNT2R, LDCNT2R_BR, 0); in shmob_drm_crtc_start()
179 lcdc_write(sdev, LDCNT2R, LDCNT2R_ME); in shmob_drm_crtc_start()
183 lcdc_write(sdev, LDINTR, 0); in shmob_drm_crtc_start()
186 lcdc_write(sdev, LDPMR, 0); in shmob_drm_crtc_start()
188 value = sdev->lddckr; in shmob_drm_crtc_start()
193 lcdc_write(sdev, LDDCKPAT1R, 0); in shmob_drm_crtc_start()
194 lcdc_write(sdev, LDDCKPAT2R, (1 << (idata->clk_div / 2)) - 1); in shmob_drm_crtc_start()
202 lcdc_write(sdev, LDDCKR, value); in shmob_drm_crtc_start()
203 lcdc_write(sdev, LDDCKSTPR, 0); in shmob_drm_crtc_start()
204 lcdc_wait_bit(sdev, LDDCKSTPR, ~0, 0); in shmob_drm_crtc_start()
212 lcdc_write(sdev, LDDFR, format->lddfr | LDDFR_CF1); in shmob_drm_crtc_start()
213 lcdc_write(sdev, LDMLSR, scrtc->line_size); in shmob_drm_crtc_start()
214 lcdc_write(sdev, LDSA1R, scrtc->dma[0]); in shmob_drm_crtc_start()
216 lcdc_write(sdev, LDSA2R, scrtc->dma[1]); in shmob_drm_crtc_start()
217 lcdc_write(sdev, LDSM1R, 0); in shmob_drm_crtc_start()
238 lcdc_write(sdev, LDDDSR, value); in shmob_drm_crtc_start()
247 lcdc_write(sdev, LDCNT1R, LDCNT1R_DE); in shmob_drm_crtc_start()
257 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_stop() local
266 lcdc_write(sdev, LDCNT1R, 0); in shmob_drm_crtc_stop()
269 shmob_drm_clk_off(sdev); in shmob_drm_crtc_stop()
312 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_update_base() local
316 lcdc_write_mirror(sdev, LDSA1R, scrtc->dma[0]); in shmob_drm_crtc_update_base()
318 lcdc_write_mirror(sdev, LDSA2R, scrtc->dma[1]); in shmob_drm_crtc_update_base()
320 lcdc_write(sdev, LDRCNTR, lcdc_read(sdev, LDRCNTR) ^ LDRCNTR_MRS); in shmob_drm_crtc_update_base()
352 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_mode_set() local
357 dev_dbg(sdev->dev, "mode_set: unsupported format %08x\n", in shmob_drm_crtc_mode_set()
438 static void shmob_drm_crtc_enable_vblank(struct shmob_drm_device *sdev, in shmob_drm_crtc_enable_vblank() argument
445 spin_lock_irqsave(&sdev->irq_lock, flags); in shmob_drm_crtc_enable_vblank()
446 ldintr = lcdc_read(sdev, LDINTR) | LDINTR_STATUS_MASK; in shmob_drm_crtc_enable_vblank()
451 lcdc_write(sdev, LDINTR, ldintr); in shmob_drm_crtc_enable_vblank()
452 spin_unlock_irqrestore(&sdev->irq_lock, flags); in shmob_drm_crtc_enable_vblank()
457 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_enable_vblank() local
459 shmob_drm_crtc_enable_vblank(sdev, true); in shmob_drm_enable_vblank()
466 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_disable_vblank() local
468 shmob_drm_crtc_enable_vblank(sdev, false); in shmob_drm_disable_vblank()
479 int shmob_drm_crtc_create(struct shmob_drm_device *sdev) in shmob_drm_crtc_create() argument
481 struct drm_crtc *crtc = &sdev->crtc.crtc; in shmob_drm_crtc_create()
484 sdev->crtc.dpms = DRM_MODE_DPMS_OFF; in shmob_drm_crtc_create()
486 ret = drm_crtc_init(sdev->ddev, crtc, &crtc_funcs); in shmob_drm_crtc_create()
505 struct shmob_drm_device *sdev = encoder->dev->dev_private; in shmob_drm_encoder_dpms() local
506 struct shmob_drm_connector *scon = &sdev->connector; in shmob_drm_encoder_dpms()
521 struct shmob_drm_device *sdev = dev->dev_private; in shmob_drm_encoder_mode_fixup() local
522 struct drm_connector *connector = &sdev->connector.connector; in shmob_drm_encoder_mode_fixup()
572 int shmob_drm_encoder_create(struct shmob_drm_device *sdev) in shmob_drm_encoder_create() argument
574 struct drm_encoder *encoder = &sdev->encoder.encoder; in shmob_drm_encoder_create()
577 sdev->encoder.dpms = DRM_MODE_DPMS_OFF; in shmob_drm_encoder_create()
581 ret = drm_encoder_init(sdev->ddev, encoder, &encoder_funcs, in shmob_drm_encoder_create()
600 struct shmob_drm_device *sdev = connector->dev->dev_private; in shmob_drm_connector_get_modes() local
608 mode->clock = sdev->pdata->panel.mode.clock; in shmob_drm_connector_get_modes()
609 mode->hdisplay = sdev->pdata->panel.mode.hdisplay; in shmob_drm_connector_get_modes()
610 mode->hsync_start = sdev->pdata->panel.mode.hsync_start; in shmob_drm_connector_get_modes()
611 mode->hsync_end = sdev->pdata->panel.mode.hsync_end; in shmob_drm_connector_get_modes()
612 mode->htotal = sdev->pdata->panel.mode.htotal; in shmob_drm_connector_get_modes()
613 mode->vdisplay = sdev->pdata->panel.mode.vdisplay; in shmob_drm_connector_get_modes()
614 mode->vsync_start = sdev->pdata->panel.mode.vsync_start; in shmob_drm_connector_get_modes()
615 mode->vsync_end = sdev->pdata->panel.mode.vsync_end; in shmob_drm_connector_get_modes()
616 mode->vtotal = sdev->pdata->panel.mode.vtotal; in shmob_drm_connector_get_modes()
617 mode->flags = sdev->pdata->panel.mode.flags; in shmob_drm_connector_get_modes()
622 connector->display_info.width_mm = sdev->pdata->panel.width_mm; in shmob_drm_connector_get_modes()
623 connector->display_info.height_mm = sdev->pdata->panel.height_mm; in shmob_drm_connector_get_modes()
656 int shmob_drm_connector_create(struct shmob_drm_device *sdev, in shmob_drm_connector_create() argument
659 struct drm_connector *connector = &sdev->connector.connector; in shmob_drm_connector_create()
662 sdev->connector.encoder = encoder; in shmob_drm_connector_create()
664 connector->display_info.width_mm = sdev->pdata->panel.width_mm; in shmob_drm_connector_create()
665 connector->display_info.height_mm = sdev->pdata->panel.height_mm; in shmob_drm_connector_create()
667 ret = drm_connector_init(sdev->ddev, connector, &connector_funcs, in shmob_drm_connector_create()
674 ret = shmob_drm_backlight_init(&sdev->connector); in shmob_drm_connector_create()
684 sdev->ddev->mode_config.dpms_property, DRM_MODE_DPMS_OFF); in shmob_drm_connector_create()
689 shmob_drm_backlight_exit(&sdev->connector); in shmob_drm_connector_create()