Lines Matching refs:sdi
38 struct sdi_device *sdi; member
64 return dispc_div_calc(ctx->sdi->dss->dispc, fck, in dpi_calc_dss_cb()
69 static int sdi_calc_clock_div(struct sdi_device *sdi, unsigned long pclk, in sdi_calc_clock_div() argument
88 ctx.sdi = sdi; in sdi_calc_clock_div()
96 ok = dss_div_calc(sdi->dss, pclk, ctx.pck_min, in sdi_calc_clock_div()
108 static void sdi_config_lcd_manager(struct sdi_device *sdi) in sdi_config_lcd_manager() argument
110 sdi->mgr_config.io_pad_mode = DSS_IO_PAD_MODE_BYPASS; in sdi_config_lcd_manager()
112 sdi->mgr_config.stallmode = false; in sdi_config_lcd_manager()
113 sdi->mgr_config.fifohandcheck = false; in sdi_config_lcd_manager()
115 sdi->mgr_config.video_port_width = 24; in sdi_config_lcd_manager()
116 sdi->mgr_config.lcden_sig_polarity = 1; in sdi_config_lcd_manager()
118 dss_mgr_set_lcd_config(&sdi->output, &sdi->mgr_config); in sdi_config_lcd_manager()
123 struct sdi_device *sdi = dssdev_to_sdi(dssdev); in sdi_display_enable() local
128 r = regulator_enable(sdi->vdds_sdi_reg); in sdi_display_enable()
132 r = dispc_runtime_get(sdi->dss->dispc); in sdi_display_enable()
136 r = sdi_calc_clock_div(sdi, sdi->pixelclock, &fck, &dispc_cinfo); in sdi_display_enable()
140 sdi->mgr_config.clock_info = dispc_cinfo; in sdi_display_enable()
142 r = dss_set_fck_rate(sdi->dss, fck); in sdi_display_enable()
146 sdi_config_lcd_manager(sdi); in sdi_display_enable()
159 dispc_mgr_set_clock_div(sdi->dss->dispc, sdi->output.dispc_channel, in sdi_display_enable()
160 &sdi->mgr_config.clock_info); in sdi_display_enable()
162 dss_sdi_init(sdi->dss, sdi->datapairs); in sdi_display_enable()
163 r = dss_sdi_enable(sdi->dss); in sdi_display_enable()
168 r = dss_mgr_enable(&sdi->output); in sdi_display_enable()
175 dss_sdi_disable(sdi->dss); in sdi_display_enable()
179 dispc_runtime_put(sdi->dss->dispc); in sdi_display_enable()
181 regulator_disable(sdi->vdds_sdi_reg); in sdi_display_enable()
186 struct sdi_device *sdi = dssdev_to_sdi(dssdev); in sdi_display_disable() local
188 dss_mgr_disable(&sdi->output); in sdi_display_disable()
190 dss_sdi_disable(sdi->dss); in sdi_display_disable()
192 dispc_runtime_put(sdi->dss->dispc); in sdi_display_disable()
194 regulator_disable(sdi->vdds_sdi_reg); in sdi_display_disable()
200 struct sdi_device *sdi = dssdev_to_sdi(dssdev); in sdi_set_timings() local
202 sdi->pixelclock = mode->clock * 1000; in sdi_set_timings()
208 struct sdi_device *sdi = dssdev_to_sdi(dssdev); in sdi_check_timings() local
218 r = sdi_calc_clock_div(sdi, pixelclock, &fck, &dispc_cinfo); in sdi_check_timings()
257 static int sdi_init_output(struct sdi_device *sdi) in sdi_init_output() argument
259 struct omap_dss_device *out = &sdi->output; in sdi_init_output()
262 out->dev = &sdi->pdev->dev; in sdi_init_output()
283 static void sdi_uninit_output(struct sdi_device *sdi) in sdi_uninit_output() argument
285 omapdss_device_unregister(&sdi->output); in sdi_uninit_output()
286 omapdss_device_cleanup_output(&sdi->output); in sdi_uninit_output()
292 struct sdi_device *sdi; in sdi_init_port() local
297 sdi = kzalloc(sizeof(*sdi), GFP_KERNEL); in sdi_init_port()
298 if (!sdi) in sdi_init_port()
314 sdi->datapairs = datapairs; in sdi_init_port()
315 sdi->dss = dss; in sdi_init_port()
317 sdi->pdev = pdev; in sdi_init_port()
318 port->data = sdi; in sdi_init_port()
320 sdi->vdds_sdi_reg = devm_regulator_get(&pdev->dev, "vdds_sdi"); in sdi_init_port()
321 if (IS_ERR(sdi->vdds_sdi_reg)) { in sdi_init_port()
322 r = PTR_ERR(sdi->vdds_sdi_reg); in sdi_init_port()
328 r = sdi_init_output(sdi); in sdi_init_port()
335 kfree(sdi); in sdi_init_port()
342 struct sdi_device *sdi = port->data; in sdi_uninit_port() local
344 if (!sdi) in sdi_uninit_port()
347 sdi_uninit_output(sdi); in sdi_uninit_port()
348 kfree(sdi); in sdi_uninit_port()