diff options
| -rw-r--r-- | drivers/video/omap2/dss/sdi.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/video/omap2/dss/sdi.c b/drivers/video/omap2/dss/sdi.c index 5d31699fbd3c..f43bfe17b3b6 100644 --- a/drivers/video/omap2/dss/sdi.c +++ b/drivers/video/omap2/dss/sdi.c | |||
| @@ -105,6 +105,20 @@ int omapdss_sdi_display_enable(struct omap_dss_device *dssdev) | |||
| 105 | 105 | ||
| 106 | sdi_config_lcd_manager(dssdev); | 106 | sdi_config_lcd_manager(dssdev); |
| 107 | 107 | ||
| 108 | /* | ||
| 109 | * LCLK and PCLK divisors are located in shadow registers, and we | ||
| 110 | * normally write them to DISPC registers when enabling the output. | ||
| 111 | * However, SDI uses pck-free as source clock for its PLL, and pck-free | ||
| 112 | * is affected by the divisors. And as we need the PLL before enabling | ||
| 113 | * the output, we need to write the divisors early. | ||
| 114 | * | ||
| 115 | * It seems just writing to the DISPC register is enough, and we don't | ||
| 116 | * need to care about the shadow register mechanism for pck-free. The | ||
| 117 | * exact reason for this is unknown. | ||
| 118 | */ | ||
| 119 | dispc_mgr_set_clock_div(dssdev->manager->id, | ||
| 120 | &sdi.mgr_config.clock_info); | ||
| 121 | |||
| 108 | dss_sdi_init(dssdev->phy.sdi.datapairs); | 122 | dss_sdi_init(dssdev->phy.sdi.datapairs); |
| 109 | r = dss_sdi_enable(); | 123 | r = dss_sdi_enable(); |
| 110 | if (r) | 124 | if (r) |
