|
@@ -105,6 +105,20 @@ int omapdss_sdi_display_enable(struct omap_dss_device *dssdev)
|
|
|
|
|
|
sdi_config_lcd_manager(dssdev);
|
|
|
|
|
|
+ /*
|
|
|
+ * LCLK and PCLK divisors are located in shadow registers, and we
|
|
|
+ * normally write them to DISPC registers when enabling the output.
|
|
|
+ * However, SDI uses pck-free as source clock for its PLL, and pck-free
|
|
|
+ * is affected by the divisors. And as we need the PLL before enabling
|
|
|
+ * the output, we need to write the divisors early.
|
|
|
+ *
|
|
|
+ * It seems just writing to the DISPC register is enough, and we don't
|
|
|
+ * need to care about the shadow register mechanism for pck-free. The
|
|
|
+ * exact reason for this is unknown.
|
|
|
+ */
|
|
|
+ dispc_mgr_set_clock_div(dssdev->manager->id,
|
|
|
+ &sdi.mgr_config.clock_info);
|
|
|
+
|
|
|
dss_sdi_init(dssdev->phy.sdi.datapairs);
|
|
|
r = dss_sdi_enable();
|
|
|
if (r)
|