OMAPDSS: fix omap2 dss fck handling
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Fri, 1 Nov 2013 09:26:43 +0000 (11:26 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Mon, 18 Nov 2013 12:32:25 +0000 (14:32 +0200)
The driver considers OMAP2 DSS's functional clock as a fixed clock.
However, it can be changed, but the possible dividers are not continuous
which is why it was just handled as a fixed clock.

As a partial fix, this patch changes the code to handle the continous
part of the dividers, from 1 to 6. This let's us handle the OMAP2 fck
the same way as fcks on other OMAPs.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/video/omap2/dss/dss.c

index bd01608e67e237cba61b40cd765e695eb6e77b98..e59577a2c41cd6ff6365b982e25b51802c4060e2 100644 (file)
@@ -484,11 +484,6 @@ bool dss_div_calc(unsigned long fck_min, dss_div_calc_func func, void *data)
        unsigned m;
 
        if (dss.dpll4_m4_ck == NULL) {
-               /*
-                * TODO: dss1_fclk can be changed on OMAP2, but the available
-                * dividers are not continuous. We just use the pre-set rate for
-                * now.
-                */
                fck = clk_get_rate(dss.dss_clk);
                fckd = 1;
                return func(fckd, fck, data);
@@ -761,9 +756,13 @@ void dss_debug_dump_clocks(struct seq_file *s)
 #endif
 
 static const struct dss_features omap24xx_dss_feats __initconst = {
-       .fck_div_max            =       16,
+       /*
+        * fck div max is really 16, but the divider range has gaps. The range
+        * from 1 to 6 has no gaps, so let's use that as a max.
+        */
+       .fck_div_max            =       6,
        .dss_fck_multiplier     =       2,
-       .clk_name               =       NULL,
+       .clk_name               =       "dss1_fck",
        .dpi_select_source      =       &dss_dpi_select_source_omap2_omap3,
 };