Lines Matching defs:sdi

42 	struct sdi_device *sdi;
68 return dispc_div_calc(ctx->sdi->dss->dispc, fck,
73 static int sdi_calc_clock_div(struct sdi_device *sdi, unsigned long pclk,
92 ctx.sdi = sdi;
100 ok = dss_div_calc(sdi->dss, pclk, ctx.pck_min,
112 static void sdi_config_lcd_manager(struct sdi_device *sdi)
114 sdi->mgr_config.io_pad_mode = DSS_IO_PAD_MODE_BYPASS;
116 sdi->mgr_config.stallmode = false;
117 sdi->mgr_config.fifohandcheck = false;
119 sdi->mgr_config.video_port_width = 24;
120 sdi->mgr_config.lcden_sig_polarity = 1;
122 dss_mgr_set_lcd_config(&sdi->output, &sdi->mgr_config);
132 struct sdi_device *sdi = drm_bridge_to_sdi(bridge);
137 return drm_bridge_attach(bridge->encoder, sdi->output.next_bridge,
146 struct sdi_device *sdi = drm_bridge_to_sdi(bridge);
155 ret = sdi_calc_clock_div(sdi, pixelclock, &fck, &dispc_cinfo);
166 struct sdi_device *sdi = drm_bridge_to_sdi(bridge);
173 ret = sdi_calc_clock_div(sdi, pixelclock, &fck, &dispc_cinfo);
180 dev_dbg(&sdi->pdev->dev,
193 struct sdi_device *sdi = drm_bridge_to_sdi(bridge);
195 sdi->pixelclock = adjusted_mode->clock * 1000;
200 struct sdi_device *sdi = drm_bridge_to_sdi(bridge);
205 r = regulator_enable(sdi->vdds_sdi_reg);
209 r = dispc_runtime_get(sdi->dss->dispc);
213 r = sdi_calc_clock_div(sdi, sdi->pixelclock, &fck, &dispc_cinfo);
217 sdi->mgr_config.clock_info = dispc_cinfo;
219 r = dss_set_fck_rate(sdi->dss, fck);
223 sdi_config_lcd_manager(sdi);
236 dispc_mgr_set_clock_div(sdi->dss->dispc, sdi->output.dispc_channel,
237 &sdi->mgr_config.clock_info);
239 dss_sdi_init(sdi->dss, sdi->datapairs);
240 r = dss_sdi_enable(sdi->dss);
245 r = dss_mgr_enable(&sdi->output);
252 dss_sdi_disable(sdi->dss);
256 dispc_runtime_put(sdi->dss->dispc);
258 regulator_disable(sdi->vdds_sdi_reg);
263 struct sdi_device *sdi = drm_bridge_to_sdi(bridge);
265 dss_mgr_disable(&sdi->output);
267 dss_sdi_disable(sdi->dss);
269 dispc_runtime_put(sdi->dss->dispc);
271 regulator_disable(sdi->vdds_sdi_reg);
283 static void sdi_bridge_init(struct sdi_device *sdi)
285 sdi->bridge.funcs = &sdi_bridge_funcs;
286 sdi->bridge.of_node = sdi->pdev->dev.of_node;
287 sdi->bridge.type = DRM_MODE_CONNECTOR_LVDS;
289 drm_bridge_add(&sdi->bridge);
292 static void sdi_bridge_cleanup(struct sdi_device *sdi)
294 drm_bridge_remove(&sdi->bridge);
301 static int sdi_init_output(struct sdi_device *sdi)
303 struct omap_dss_device *out = &sdi->output;
306 sdi_bridge_init(sdi);
308 out->dev = &sdi->pdev->dev;
311 out->name = "sdi.0";
319 r = omapdss_device_init_output(out, &sdi->bridge);
321 sdi_bridge_cleanup(sdi);
330 static void sdi_uninit_output(struct sdi_device *sdi)
332 omapdss_device_unregister(&sdi->output);
333 omapdss_device_cleanup_output(&sdi->output);
335 sdi_bridge_cleanup(sdi);
341 struct sdi_device *sdi;
346 sdi = kzalloc(sizeof(*sdi), GFP_KERNEL);
347 if (!sdi)
363 sdi->datapairs = datapairs;
364 sdi->dss = dss;
366 sdi->pdev = pdev;
367 port->data = sdi;
369 sdi->vdds_sdi_reg = devm_regulator_get(&pdev->dev, "vdds_sdi");
370 if (IS_ERR(sdi->vdds_sdi_reg)) {
371 r = PTR_ERR(sdi->vdds_sdi_reg);
377 r = sdi_init_output(sdi);
384 kfree(sdi);
391 struct sdi_device *sdi = port->data;
393 if (!sdi)
396 sdi_uninit_output(sdi);
397 kfree(sdi);