Lines Matching refs:sdi

42 	struct sdi_device *sdi;  member
68 return dispc_div_calc(ctx->sdi->dss->dispc, fck, in dpi_calc_dss_cb()
73 static int sdi_calc_clock_div(struct sdi_device *sdi, unsigned long pclk, in sdi_calc_clock_div() argument
92 ctx.sdi = sdi; in sdi_calc_clock_div()
100 ok = dss_div_calc(sdi->dss, pclk, ctx.pck_min, in sdi_calc_clock_div()
112 static void sdi_config_lcd_manager(struct sdi_device *sdi) in sdi_config_lcd_manager() argument
114 sdi->mgr_config.io_pad_mode = DSS_IO_PAD_MODE_BYPASS; in sdi_config_lcd_manager()
116 sdi->mgr_config.stallmode = false; in sdi_config_lcd_manager()
117 sdi->mgr_config.fifohandcheck = false; in sdi_config_lcd_manager()
119 sdi->mgr_config.video_port_width = 24; in sdi_config_lcd_manager()
120 sdi->mgr_config.lcden_sig_polarity = 1; in sdi_config_lcd_manager()
122 dss_mgr_set_lcd_config(&sdi->output, &sdi->mgr_config); in sdi_config_lcd_manager()
132 struct sdi_device *sdi = drm_bridge_to_sdi(bridge); in sdi_bridge_attach() local
137 return drm_bridge_attach(bridge->encoder, sdi->output.next_bridge, in sdi_bridge_attach()
146 struct sdi_device *sdi = drm_bridge_to_sdi(bridge); in sdi_bridge_mode_valid() local
155 ret = sdi_calc_clock_div(sdi, pixelclock, &fck, &dispc_cinfo); in sdi_bridge_mode_valid()
166 struct sdi_device *sdi = drm_bridge_to_sdi(bridge); in sdi_bridge_mode_fixup() local
173 ret = sdi_calc_clock_div(sdi, pixelclock, &fck, &dispc_cinfo); in sdi_bridge_mode_fixup()
180 dev_dbg(&sdi->pdev->dev, in sdi_bridge_mode_fixup()
193 struct sdi_device *sdi = drm_bridge_to_sdi(bridge); in sdi_bridge_mode_set() local
195 sdi->pixelclock = adjusted_mode->clock * 1000; in sdi_bridge_mode_set()
200 struct sdi_device *sdi = drm_bridge_to_sdi(bridge); in sdi_bridge_enable() local
205 r = regulator_enable(sdi->vdds_sdi_reg); in sdi_bridge_enable()
209 r = dispc_runtime_get(sdi->dss->dispc); in sdi_bridge_enable()
213 r = sdi_calc_clock_div(sdi, sdi->pixelclock, &fck, &dispc_cinfo); in sdi_bridge_enable()
217 sdi->mgr_config.clock_info = dispc_cinfo; in sdi_bridge_enable()
219 r = dss_set_fck_rate(sdi->dss, fck); in sdi_bridge_enable()
223 sdi_config_lcd_manager(sdi); in sdi_bridge_enable()
236 dispc_mgr_set_clock_div(sdi->dss->dispc, sdi->output.dispc_channel, in sdi_bridge_enable()
237 &sdi->mgr_config.clock_info); in sdi_bridge_enable()
239 dss_sdi_init(sdi->dss, sdi->datapairs); in sdi_bridge_enable()
240 r = dss_sdi_enable(sdi->dss); in sdi_bridge_enable()
245 r = dss_mgr_enable(&sdi->output); in sdi_bridge_enable()
252 dss_sdi_disable(sdi->dss); in sdi_bridge_enable()
256 dispc_runtime_put(sdi->dss->dispc); in sdi_bridge_enable()
258 regulator_disable(sdi->vdds_sdi_reg); in sdi_bridge_enable()
263 struct sdi_device *sdi = drm_bridge_to_sdi(bridge); in sdi_bridge_disable() local
265 dss_mgr_disable(&sdi->output); in sdi_bridge_disable()
267 dss_sdi_disable(sdi->dss); in sdi_bridge_disable()
269 dispc_runtime_put(sdi->dss->dispc); in sdi_bridge_disable()
271 regulator_disable(sdi->vdds_sdi_reg); in sdi_bridge_disable()
283 static void sdi_bridge_init(struct sdi_device *sdi) in sdi_bridge_init() argument
285 sdi->bridge.funcs = &sdi_bridge_funcs; in sdi_bridge_init()
286 sdi->bridge.of_node = sdi->pdev->dev.of_node; in sdi_bridge_init()
287 sdi->bridge.type = DRM_MODE_CONNECTOR_LVDS; in sdi_bridge_init()
289 drm_bridge_add(&sdi->bridge); in sdi_bridge_init()
292 static void sdi_bridge_cleanup(struct sdi_device *sdi) in sdi_bridge_cleanup() argument
294 drm_bridge_remove(&sdi->bridge); in sdi_bridge_cleanup()
301 static int sdi_init_output(struct sdi_device *sdi) in sdi_init_output() argument
303 struct omap_dss_device *out = &sdi->output; in sdi_init_output()
306 sdi_bridge_init(sdi); in sdi_init_output()
308 out->dev = &sdi->pdev->dev; in sdi_init_output()
318 r = omapdss_device_init_output(out, &sdi->bridge); in sdi_init_output()
320 sdi_bridge_cleanup(sdi); in sdi_init_output()
329 static void sdi_uninit_output(struct sdi_device *sdi) in sdi_uninit_output() argument
331 omapdss_device_unregister(&sdi->output); in sdi_uninit_output()
332 omapdss_device_cleanup_output(&sdi->output); in sdi_uninit_output()
334 sdi_bridge_cleanup(sdi); in sdi_uninit_output()
340 struct sdi_device *sdi; in sdi_init_port() local
345 sdi = kzalloc(sizeof(*sdi), GFP_KERNEL); in sdi_init_port()
346 if (!sdi) in sdi_init_port()
362 sdi->datapairs = datapairs; in sdi_init_port()
363 sdi->dss = dss; in sdi_init_port()
365 sdi->pdev = pdev; in sdi_init_port()
366 port->data = sdi; in sdi_init_port()
368 sdi->vdds_sdi_reg = devm_regulator_get(&pdev->dev, "vdds_sdi"); in sdi_init_port()
369 if (IS_ERR(sdi->vdds_sdi_reg)) { in sdi_init_port()
370 r = PTR_ERR(sdi->vdds_sdi_reg); in sdi_init_port()
376 r = sdi_init_output(sdi); in sdi_init_port()
383 kfree(sdi); in sdi_init_port()
390 struct sdi_device *sdi = port->data; in sdi_uninit_port() local
392 if (!sdi) in sdi_uninit_port()
395 sdi_uninit_output(sdi); in sdi_uninit_port()
396 kfree(sdi); in sdi_uninit_port()