Lines Matching refs:sdev

38 static int shmob_drm_clk_on(struct shmob_drm_device *sdev)  in shmob_drm_clk_on()  argument
42 if (sdev->clock) { in shmob_drm_clk_on()
43 ret = clk_prepare_enable(sdev->clock); in shmob_drm_clk_on()
51 static void shmob_drm_clk_off(struct shmob_drm_device *sdev) in shmob_drm_clk_off() argument
53 if (sdev->clock) in shmob_drm_clk_off()
54 clk_disable_unprepare(sdev->clock); in shmob_drm_clk_off()
64 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_setup_geometry() local
65 const struct shmob_drm_interface_data *idata = &sdev->pdata->iface; in shmob_drm_crtc_setup_geometry()
69 value = sdev->ldmt1r in shmob_drm_crtc_setup_geometry()
77 lcdc_write(sdev, LDMT1R, value); in shmob_drm_crtc_setup_geometry()
88 lcdc_write(sdev, LDMT2R, value); in shmob_drm_crtc_setup_geometry()
94 lcdc_write(sdev, LDMT3R, value); in shmob_drm_crtc_setup_geometry()
99 lcdc_write(sdev, LDHCNR, value); in shmob_drm_crtc_setup_geometry()
103 lcdc_write(sdev, LDHSYNR, value); in shmob_drm_crtc_setup_geometry()
108 lcdc_write(sdev, LDHAJR, value); in shmob_drm_crtc_setup_geometry()
112 lcdc_write(sdev, LDVLNR, value); in shmob_drm_crtc_setup_geometry()
116 lcdc_write(sdev, LDVSYNR, value); in shmob_drm_crtc_setup_geometry()
121 struct shmob_drm_device *sdev = scrtc->crtc.dev->dev_private; in shmob_drm_crtc_start_stop() local
124 value = lcdc_read(sdev, LDCNT2R); in shmob_drm_crtc_start_stop()
126 lcdc_write(sdev, LDCNT2R, value | LDCNT2R_DO); in shmob_drm_crtc_start_stop()
128 lcdc_write(sdev, LDCNT2R, value & ~LDCNT2R_DO); in shmob_drm_crtc_start_stop()
132 value = lcdc_read(sdev, LDPMR) & LDPMR_LPS; in shmob_drm_crtc_start_stop()
141 lcdc_write(sdev, LDDCKSTPR, LDDCKSTPR_DCKSTP); in shmob_drm_crtc_start_stop()
155 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_start() local
156 const struct shmob_drm_interface_data *idata = &sdev->pdata->iface; in shmob_drm_crtc_start()
158 struct drm_device *dev = sdev->ddev; in shmob_drm_crtc_start()
171 ret = shmob_drm_clk_on(sdev); in shmob_drm_crtc_start()
176 lcdc_write(sdev, LDCNT2R, lcdc_read(sdev, LDCNT2R) | LDCNT2R_BR); in shmob_drm_crtc_start()
177 lcdc_wait_bit(sdev, LDCNT2R, LDCNT2R_BR, 0); in shmob_drm_crtc_start()
178 lcdc_write(sdev, LDCNT2R, LDCNT2R_ME); in shmob_drm_crtc_start()
182 lcdc_write(sdev, LDINTR, 0); in shmob_drm_crtc_start()
185 lcdc_write(sdev, LDPMR, 0); in shmob_drm_crtc_start()
187 value = sdev->lddckr; in shmob_drm_crtc_start()
192 lcdc_write(sdev, LDDCKPAT1R, 0); in shmob_drm_crtc_start()
193 lcdc_write(sdev, LDDCKPAT2R, (1 << (idata->clk_div / 2)) - 1); in shmob_drm_crtc_start()
201 lcdc_write(sdev, LDDCKR, value); in shmob_drm_crtc_start()
202 lcdc_write(sdev, LDDCKSTPR, 0); in shmob_drm_crtc_start()
203 lcdc_wait_bit(sdev, LDDCKSTPR, ~0, 0); in shmob_drm_crtc_start()
211 lcdc_write(sdev, LDDFR, format->lddfr | LDDFR_CF1); in shmob_drm_crtc_start()
212 lcdc_write(sdev, LDMLSR, scrtc->line_size); in shmob_drm_crtc_start()
213 lcdc_write(sdev, LDSA1R, scrtc->dma[0]); in shmob_drm_crtc_start()
215 lcdc_write(sdev, LDSA2R, scrtc->dma[1]); in shmob_drm_crtc_start()
216 lcdc_write(sdev, LDSM1R, 0); in shmob_drm_crtc_start()
237 lcdc_write(sdev, LDDDSR, value); in shmob_drm_crtc_start()
246 lcdc_write(sdev, LDCNT1R, LDCNT1R_DE); in shmob_drm_crtc_start()
256 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_stop() local
265 lcdc_write(sdev, LDCNT1R, 0); in shmob_drm_crtc_stop()
268 shmob_drm_clk_off(sdev); in shmob_drm_crtc_stop()
311 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_update_base() local
315 lcdc_write_mirror(sdev, LDSA1R, scrtc->dma[0]); in shmob_drm_crtc_update_base()
317 lcdc_write_mirror(sdev, LDSA2R, scrtc->dma[1]); in shmob_drm_crtc_update_base()
319 lcdc_write(sdev, LDRCNTR, lcdc_read(sdev, LDRCNTR) ^ LDRCNTR_MRS); in shmob_drm_crtc_update_base()
351 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_crtc_mode_set() local
356 dev_dbg(sdev->dev, "mode_set: unsupported format %08x\n", in shmob_drm_crtc_mode_set()
437 static void shmob_drm_crtc_enable_vblank(struct shmob_drm_device *sdev, in shmob_drm_crtc_enable_vblank() argument
444 spin_lock_irqsave(&sdev->irq_lock, flags); in shmob_drm_crtc_enable_vblank()
445 ldintr = lcdc_read(sdev, LDINTR) | LDINTR_STATUS_MASK; in shmob_drm_crtc_enable_vblank()
450 lcdc_write(sdev, LDINTR, ldintr); in shmob_drm_crtc_enable_vblank()
451 spin_unlock_irqrestore(&sdev->irq_lock, flags); in shmob_drm_crtc_enable_vblank()
456 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_enable_vblank() local
458 shmob_drm_crtc_enable_vblank(sdev, true); in shmob_drm_enable_vblank()
465 struct shmob_drm_device *sdev = crtc->dev->dev_private; in shmob_drm_disable_vblank() local
467 shmob_drm_crtc_enable_vblank(sdev, false); in shmob_drm_disable_vblank()
478 int shmob_drm_crtc_create(struct shmob_drm_device *sdev) in shmob_drm_crtc_create() argument
480 struct drm_crtc *crtc = &sdev->crtc.crtc; in shmob_drm_crtc_create()
483 sdev->crtc.dpms = DRM_MODE_DPMS_OFF; in shmob_drm_crtc_create()
485 ret = drm_crtc_init(sdev->ddev, crtc, &crtc_funcs); in shmob_drm_crtc_create()
504 struct shmob_drm_device *sdev = encoder->dev->dev_private; in shmob_drm_encoder_dpms() local
505 struct shmob_drm_connector *scon = &sdev->connector; in shmob_drm_encoder_dpms()
520 struct shmob_drm_device *sdev = dev->dev_private; in shmob_drm_encoder_mode_fixup() local
521 struct drm_connector *connector = &sdev->connector.connector; in shmob_drm_encoder_mode_fixup()
562 int shmob_drm_encoder_create(struct shmob_drm_device *sdev) in shmob_drm_encoder_create() argument
564 struct drm_encoder *encoder = &sdev->encoder.encoder; in shmob_drm_encoder_create()
567 sdev->encoder.dpms = DRM_MODE_DPMS_OFF; in shmob_drm_encoder_create()
571 ret = drm_simple_encoder_init(sdev->ddev, encoder, in shmob_drm_encoder_create()
590 struct shmob_drm_device *sdev = connector->dev->dev_private; in shmob_drm_connector_get_modes() local
598 mode->clock = sdev->pdata->panel.mode.clock; in shmob_drm_connector_get_modes()
599 mode->hdisplay = sdev->pdata->panel.mode.hdisplay; in shmob_drm_connector_get_modes()
600 mode->hsync_start = sdev->pdata->panel.mode.hsync_start; in shmob_drm_connector_get_modes()
601 mode->hsync_end = sdev->pdata->panel.mode.hsync_end; in shmob_drm_connector_get_modes()
602 mode->htotal = sdev->pdata->panel.mode.htotal; in shmob_drm_connector_get_modes()
603 mode->vdisplay = sdev->pdata->panel.mode.vdisplay; in shmob_drm_connector_get_modes()
604 mode->vsync_start = sdev->pdata->panel.mode.vsync_start; in shmob_drm_connector_get_modes()
605 mode->vsync_end = sdev->pdata->panel.mode.vsync_end; in shmob_drm_connector_get_modes()
606 mode->vtotal = sdev->pdata->panel.mode.vtotal; in shmob_drm_connector_get_modes()
607 mode->flags = sdev->pdata->panel.mode.flags; in shmob_drm_connector_get_modes()
612 connector->display_info.width_mm = sdev->pdata->panel.width_mm; in shmob_drm_connector_get_modes()
613 connector->display_info.height_mm = sdev->pdata->panel.height_mm; in shmob_drm_connector_get_modes()
646 int shmob_drm_connector_create(struct shmob_drm_device *sdev, in shmob_drm_connector_create() argument
649 struct drm_connector *connector = &sdev->connector.connector; in shmob_drm_connector_create()
652 sdev->connector.encoder = encoder; in shmob_drm_connector_create()
654 connector->display_info.width_mm = sdev->pdata->panel.width_mm; in shmob_drm_connector_create()
655 connector->display_info.height_mm = sdev->pdata->panel.height_mm; in shmob_drm_connector_create()
657 ret = drm_connector_init(sdev->ddev, connector, &connector_funcs, in shmob_drm_connector_create()
664 ret = shmob_drm_backlight_init(&sdev->connector); in shmob_drm_connector_create()
674 sdev->ddev->mode_config.dpms_property, DRM_MODE_DPMS_OFF); in shmob_drm_connector_create()
679 shmob_drm_backlight_exit(&sdev->connector); in shmob_drm_connector_create()