diff options
author | Archit Taneja <archit@ti.com> | 2012-06-21 00:03:55 -0400 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2012-06-29 03:10:03 -0400 |
commit | 6d523e7b0e25e360ab55c283d9f8d49ce843c565 (patch) | |
tree | b6a34ff556b5257f8d0b62e4bd8dd6359f9b1016 /drivers/video | |
parent | 3a5383a2373fd5bc5ebdd781c8ac89ab5d0cb8a4 (diff) |
OMAPDSS: Remove passive matrix LCD support (part 1)
Remove clock constraints related to passive matrix displays.
There is a constraint (pcd_min should be 3) for passive matrix displays. Remove
this constraint in clock divider calculations as we won't support passive
matrix displays any more.
This cleans up the functions which calculate the clock dividers with DSI's PLL
or DSS_FCLK as the clock source.
Signed-off-by: Archit Taneja <archit@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/omap2/dss/dispc.c | 5 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dpi.c | 28 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dsi.c | 8 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dss.c | 7 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dss.h | 9 | ||||
-rw-r--r-- | drivers/video/omap2/dss/sdi.c | 3 |
6 files changed, 24 insertions, 36 deletions
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c index e48d1c10a3cf..6e25624b3faf 100644 --- a/drivers/video/omap2/dss/dispc.c +++ b/drivers/video/omap2/dss/dispc.c | |||
@@ -3167,7 +3167,7 @@ void dispc_mgr_set_pol_freq(enum omap_channel channel, | |||
3167 | } | 3167 | } |
3168 | 3168 | ||
3169 | /* with fck as input clock rate, find dispc dividers that produce req_pck */ | 3169 | /* with fck as input clock rate, find dispc dividers that produce req_pck */ |
3170 | void dispc_find_clk_divs(bool is_tft, unsigned long req_pck, unsigned long fck, | 3170 | void dispc_find_clk_divs(unsigned long req_pck, unsigned long fck, |
3171 | struct dispc_clock_info *cinfo) | 3171 | struct dispc_clock_info *cinfo) |
3172 | { | 3172 | { |
3173 | u16 pcd_min, pcd_max; | 3173 | u16 pcd_min, pcd_max; |
@@ -3178,9 +3178,6 @@ void dispc_find_clk_divs(bool is_tft, unsigned long req_pck, unsigned long fck, | |||
3178 | pcd_min = dss_feat_get_param_min(FEAT_PARAM_DSS_PCD); | 3178 | pcd_min = dss_feat_get_param_min(FEAT_PARAM_DSS_PCD); |
3179 | pcd_max = dss_feat_get_param_max(FEAT_PARAM_DSS_PCD); | 3179 | pcd_max = dss_feat_get_param_max(FEAT_PARAM_DSS_PCD); |
3180 | 3180 | ||
3181 | if (!is_tft) | ||
3182 | pcd_min = 3; | ||
3183 | |||
3184 | best_pck = 0; | 3181 | best_pck = 0; |
3185 | best_ld = 0; | 3182 | best_ld = 0; |
3186 | best_pd = 0; | 3183 | best_pd = 0; |
diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c index 8c2056c9537b..09dd2435df11 100644 --- a/drivers/video/omap2/dss/dpi.c +++ b/drivers/video/omap2/dss/dpi.c | |||
@@ -64,7 +64,7 @@ static bool dpi_use_dsi_pll(struct omap_dss_device *dssdev) | |||
64 | return false; | 64 | return false; |
65 | } | 65 | } |
66 | 66 | ||
67 | static int dpi_set_dsi_clk(struct omap_dss_device *dssdev, bool is_tft, | 67 | static int dpi_set_dsi_clk(struct omap_dss_device *dssdev, |
68 | unsigned long pck_req, unsigned long *fck, int *lck_div, | 68 | unsigned long pck_req, unsigned long *fck, int *lck_div, |
69 | int *pck_div) | 69 | int *pck_div) |
70 | { | 70 | { |
@@ -72,8 +72,8 @@ static int dpi_set_dsi_clk(struct omap_dss_device *dssdev, bool is_tft, | |||
72 | struct dispc_clock_info dispc_cinfo; | 72 | struct dispc_clock_info dispc_cinfo; |
73 | int r; | 73 | int r; |
74 | 74 | ||
75 | r = dsi_pll_calc_clock_div_pck(dpi.dsidev, is_tft, pck_req, | 75 | r = dsi_pll_calc_clock_div_pck(dpi.dsidev, pck_req, &dsi_cinfo, |
76 | &dsi_cinfo, &dispc_cinfo); | 76 | &dispc_cinfo); |
77 | if (r) | 77 | if (r) |
78 | return r; | 78 | return r; |
79 | 79 | ||
@@ -96,7 +96,7 @@ static int dpi_set_dsi_clk(struct omap_dss_device *dssdev, bool is_tft, | |||
96 | return 0; | 96 | return 0; |
97 | } | 97 | } |
98 | 98 | ||
99 | static int dpi_set_dispc_clk(struct omap_dss_device *dssdev, bool is_tft, | 99 | static int dpi_set_dispc_clk(struct omap_dss_device *dssdev, |
100 | unsigned long pck_req, unsigned long *fck, int *lck_div, | 100 | unsigned long pck_req, unsigned long *fck, int *lck_div, |
101 | int *pck_div) | 101 | int *pck_div) |
102 | { | 102 | { |
@@ -104,7 +104,7 @@ static int dpi_set_dispc_clk(struct omap_dss_device *dssdev, bool is_tft, | |||
104 | struct dispc_clock_info dispc_cinfo; | 104 | struct dispc_clock_info dispc_cinfo; |
105 | int r; | 105 | int r; |
106 | 106 | ||
107 | r = dss_calc_clock_div(is_tft, pck_req, &dss_cinfo, &dispc_cinfo); | 107 | r = dss_calc_clock_div(pck_req, &dss_cinfo, &dispc_cinfo); |
108 | if (r) | 108 | if (r) |
109 | return r; | 109 | return r; |
110 | 110 | ||
@@ -129,20 +129,17 @@ static int dpi_set_mode(struct omap_dss_device *dssdev) | |||
129 | int lck_div = 0, pck_div = 0; | 129 | int lck_div = 0, pck_div = 0; |
130 | unsigned long fck = 0; | 130 | unsigned long fck = 0; |
131 | unsigned long pck; | 131 | unsigned long pck; |
132 | bool is_tft; | ||
133 | int r = 0; | 132 | int r = 0; |
134 | 133 | ||
135 | dispc_mgr_set_pol_freq(dssdev->manager->id, dssdev->panel.config, | 134 | dispc_mgr_set_pol_freq(dssdev->manager->id, dssdev->panel.config, |
136 | dssdev->panel.acbi, dssdev->panel.acb); | 135 | dssdev->panel.acbi, dssdev->panel.acb); |
137 | 136 | ||
138 | is_tft = (dssdev->panel.config & OMAP_DSS_LCD_TFT) != 0; | ||
139 | |||
140 | if (dpi_use_dsi_pll(dssdev)) | 137 | if (dpi_use_dsi_pll(dssdev)) |
141 | r = dpi_set_dsi_clk(dssdev, is_tft, t->pixel_clock * 1000, | 138 | r = dpi_set_dsi_clk(dssdev, t->pixel_clock * 1000, &fck, |
142 | &fck, &lck_div, &pck_div); | 139 | &lck_div, &pck_div); |
143 | else | 140 | else |
144 | r = dpi_set_dispc_clk(dssdev, is_tft, t->pixel_clock * 1000, | 141 | r = dpi_set_dispc_clk(dssdev, t->pixel_clock * 1000, &fck, |
145 | &fck, &lck_div, &pck_div); | 142 | &lck_div, &pck_div); |
146 | if (r) | 143 | if (r) |
147 | return r; | 144 | return r; |
148 | 145 | ||
@@ -292,7 +289,6 @@ EXPORT_SYMBOL(dpi_set_timings); | |||
292 | int dpi_check_timings(struct omap_dss_device *dssdev, | 289 | int dpi_check_timings(struct omap_dss_device *dssdev, |
293 | struct omap_video_timings *timings) | 290 | struct omap_video_timings *timings) |
294 | { | 291 | { |
295 | bool is_tft; | ||
296 | int r; | 292 | int r; |
297 | int lck_div, pck_div; | 293 | int lck_div, pck_div; |
298 | unsigned long fck; | 294 | unsigned long fck; |
@@ -305,11 +301,9 @@ int dpi_check_timings(struct omap_dss_device *dssdev, | |||
305 | if (timings->pixel_clock == 0) | 301 | if (timings->pixel_clock == 0) |
306 | return -EINVAL; | 302 | return -EINVAL; |
307 | 303 | ||
308 | is_tft = (dssdev->panel.config & OMAP_DSS_LCD_TFT) != 0; | ||
309 | |||
310 | if (dpi_use_dsi_pll(dssdev)) { | 304 | if (dpi_use_dsi_pll(dssdev)) { |
311 | struct dsi_clock_info dsi_cinfo; | 305 | struct dsi_clock_info dsi_cinfo; |
312 | r = dsi_pll_calc_clock_div_pck(dpi.dsidev, is_tft, | 306 | r = dsi_pll_calc_clock_div_pck(dpi.dsidev, |
313 | timings->pixel_clock * 1000, | 307 | timings->pixel_clock * 1000, |
314 | &dsi_cinfo, &dispc_cinfo); | 308 | &dsi_cinfo, &dispc_cinfo); |
315 | 309 | ||
@@ -319,7 +313,7 @@ int dpi_check_timings(struct omap_dss_device *dssdev, | |||
319 | fck = dsi_cinfo.dsi_pll_hsdiv_dispc_clk; | 313 | fck = dsi_cinfo.dsi_pll_hsdiv_dispc_clk; |
320 | } else { | 314 | } else { |
321 | struct dss_clock_info dss_cinfo; | 315 | struct dss_clock_info dss_cinfo; |
322 | r = dss_calc_clock_div(is_tft, timings->pixel_clock * 1000, | 316 | r = dss_calc_clock_div(timings->pixel_clock * 1000, |
323 | &dss_cinfo, &dispc_cinfo); | 317 | &dss_cinfo, &dispc_cinfo); |
324 | 318 | ||
325 | if (r) | 319 | if (r) |
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c index df65b93c0659..aa3b81088a23 100644 --- a/drivers/video/omap2/dss/dsi.c +++ b/drivers/video/omap2/dss/dsi.c | |||
@@ -1316,7 +1316,7 @@ static int dsi_calc_clock_rates(struct platform_device *dsidev, | |||
1316 | return 0; | 1316 | return 0; |
1317 | } | 1317 | } |
1318 | 1318 | ||
1319 | int dsi_pll_calc_clock_div_pck(struct platform_device *dsidev, bool is_tft, | 1319 | int dsi_pll_calc_clock_div_pck(struct platform_device *dsidev, |
1320 | unsigned long req_pck, struct dsi_clock_info *dsi_cinfo, | 1320 | unsigned long req_pck, struct dsi_clock_info *dsi_cinfo, |
1321 | struct dispc_clock_info *dispc_cinfo) | 1321 | struct dispc_clock_info *dispc_cinfo) |
1322 | { | 1322 | { |
@@ -1335,8 +1335,8 @@ int dsi_pll_calc_clock_div_pck(struct platform_device *dsidev, bool is_tft, | |||
1335 | dsi->cache_cinfo.clkin == dss_sys_clk) { | 1335 | dsi->cache_cinfo.clkin == dss_sys_clk) { |
1336 | DSSDBG("DSI clock info found from cache\n"); | 1336 | DSSDBG("DSI clock info found from cache\n"); |
1337 | *dsi_cinfo = dsi->cache_cinfo; | 1337 | *dsi_cinfo = dsi->cache_cinfo; |
1338 | dispc_find_clk_divs(is_tft, req_pck, | 1338 | dispc_find_clk_divs(req_pck, dsi_cinfo->dsi_pll_hsdiv_dispc_clk, |
1339 | dsi_cinfo->dsi_pll_hsdiv_dispc_clk, dispc_cinfo); | 1339 | dispc_cinfo); |
1340 | return 0; | 1340 | return 0; |
1341 | } | 1341 | } |
1342 | 1342 | ||
@@ -1402,7 +1402,7 @@ retry: | |||
1402 | 1402 | ||
1403 | match = 1; | 1403 | match = 1; |
1404 | 1404 | ||
1405 | dispc_find_clk_divs(is_tft, req_pck, | 1405 | dispc_find_clk_divs(req_pck, |
1406 | cur.dsi_pll_hsdiv_dispc_clk, | 1406 | cur.dsi_pll_hsdiv_dispc_clk, |
1407 | &cur_dispc); | 1407 | &cur_dispc); |
1408 | 1408 | ||
diff --git a/drivers/video/omap2/dss/dss.c b/drivers/video/omap2/dss/dss.c index fc0c3ce802e1..04b4586113e3 100644 --- a/drivers/video/omap2/dss/dss.c +++ b/drivers/video/omap2/dss/dss.c | |||
@@ -506,8 +506,7 @@ unsigned long dss_get_dpll4_rate(void) | |||
506 | return 0; | 506 | return 0; |
507 | } | 507 | } |
508 | 508 | ||
509 | int dss_calc_clock_div(bool is_tft, unsigned long req_pck, | 509 | int dss_calc_clock_div(unsigned long req_pck, struct dss_clock_info *dss_cinfo, |
510 | struct dss_clock_info *dss_cinfo, | ||
511 | struct dispc_clock_info *dispc_cinfo) | 510 | struct dispc_clock_info *dispc_cinfo) |
512 | { | 511 | { |
513 | unsigned long prate; | 512 | unsigned long prate; |
@@ -555,7 +554,7 @@ retry: | |||
555 | fck = clk_get_rate(dss.dss_clk); | 554 | fck = clk_get_rate(dss.dss_clk); |
556 | fck_div = 1; | 555 | fck_div = 1; |
557 | 556 | ||
558 | dispc_find_clk_divs(is_tft, req_pck, fck, &cur_dispc); | 557 | dispc_find_clk_divs(req_pck, fck, &cur_dispc); |
559 | match = 1; | 558 | match = 1; |
560 | 559 | ||
561 | best_dss.fck = fck; | 560 | best_dss.fck = fck; |
@@ -585,7 +584,7 @@ retry: | |||
585 | 584 | ||
586 | match = 1; | 585 | match = 1; |
587 | 586 | ||
588 | dispc_find_clk_divs(is_tft, req_pck, fck, &cur_dispc); | 587 | dispc_find_clk_divs(req_pck, fck, &cur_dispc); |
589 | 588 | ||
590 | if (abs(cur_dispc.pck - req_pck) < | 589 | if (abs(cur_dispc.pck - req_pck) < |
591 | abs(best_dispc.pck - req_pck)) { | 590 | abs(best_dispc.pck - req_pck)) { |
diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h index df131fc68952..88e1c12195e5 100644 --- a/drivers/video/omap2/dss/dss.h +++ b/drivers/video/omap2/dss/dss.h | |||
@@ -274,8 +274,7 @@ unsigned long dss_get_dpll4_rate(void); | |||
274 | int dss_calc_clock_rates(struct dss_clock_info *cinfo); | 274 | int dss_calc_clock_rates(struct dss_clock_info *cinfo); |
275 | int dss_set_clock_div(struct dss_clock_info *cinfo); | 275 | int dss_set_clock_div(struct dss_clock_info *cinfo); |
276 | int dss_get_clock_div(struct dss_clock_info *cinfo); | 276 | int dss_get_clock_div(struct dss_clock_info *cinfo); |
277 | int dss_calc_clock_div(bool is_tft, unsigned long req_pck, | 277 | int dss_calc_clock_div(unsigned long req_pck, struct dss_clock_info *dss_cinfo, |
278 | struct dss_clock_info *dss_cinfo, | ||
279 | struct dispc_clock_info *dispc_cinfo); | 278 | struct dispc_clock_info *dispc_cinfo); |
280 | 279 | ||
281 | /* SDI */ | 280 | /* SDI */ |
@@ -302,7 +301,7 @@ u8 dsi_get_pixel_size(enum omap_dss_dsi_pixel_format fmt); | |||
302 | unsigned long dsi_get_pll_hsdiv_dispc_rate(struct platform_device *dsidev); | 301 | unsigned long dsi_get_pll_hsdiv_dispc_rate(struct platform_device *dsidev); |
303 | int dsi_pll_set_clock_div(struct platform_device *dsidev, | 302 | int dsi_pll_set_clock_div(struct platform_device *dsidev, |
304 | struct dsi_clock_info *cinfo); | 303 | struct dsi_clock_info *cinfo); |
305 | int dsi_pll_calc_clock_div_pck(struct platform_device *dsidev, bool is_tft, | 304 | int dsi_pll_calc_clock_div_pck(struct platform_device *dsidev, |
306 | unsigned long req_pck, struct dsi_clock_info *cinfo, | 305 | unsigned long req_pck, struct dsi_clock_info *cinfo, |
307 | struct dispc_clock_info *dispc_cinfo); | 306 | struct dispc_clock_info *dispc_cinfo); |
308 | int dsi_pll_init(struct platform_device *dsidev, bool enable_hsclk, | 307 | int dsi_pll_init(struct platform_device *dsidev, bool enable_hsclk, |
@@ -336,7 +335,7 @@ static inline int dsi_pll_set_clock_div(struct platform_device *dsidev, | |||
336 | return -ENODEV; | 335 | return -ENODEV; |
337 | } | 336 | } |
338 | static inline int dsi_pll_calc_clock_div_pck(struct platform_device *dsidev, | 337 | static inline int dsi_pll_calc_clock_div_pck(struct platform_device *dsidev, |
339 | bool is_tft, unsigned long req_pck, | 338 | unsigned long req_pck, |
340 | struct dsi_clock_info *dsi_cinfo, | 339 | struct dsi_clock_info *dsi_cinfo, |
341 | struct dispc_clock_info *dispc_cinfo) | 340 | struct dispc_clock_info *dispc_cinfo) |
342 | { | 341 | { |
@@ -393,7 +392,7 @@ void dispc_set_loadmode(enum omap_dss_load_mode mode); | |||
393 | bool dispc_mgr_timings_ok(enum omap_channel channel, | 392 | bool dispc_mgr_timings_ok(enum omap_channel channel, |
394 | const struct omap_video_timings *timings); | 393 | const struct omap_video_timings *timings); |
395 | unsigned long dispc_fclk_rate(void); | 394 | unsigned long dispc_fclk_rate(void); |
396 | void dispc_find_clk_divs(bool is_tft, unsigned long req_pck, unsigned long fck, | 395 | void dispc_find_clk_divs(unsigned long req_pck, unsigned long fck, |
397 | struct dispc_clock_info *cinfo); | 396 | struct dispc_clock_info *cinfo); |
398 | int dispc_calc_clock_rates(unsigned long dispc_fclk_rate, | 397 | int dispc_calc_clock_rates(unsigned long dispc_fclk_rate, |
399 | struct dispc_clock_info *cinfo); | 398 | struct dispc_clock_info *cinfo); |
diff --git a/drivers/video/omap2/dss/sdi.c b/drivers/video/omap2/dss/sdi.c index 3a43dc2a9b46..d07ecc44603e 100644 --- a/drivers/video/omap2/dss/sdi.c +++ b/drivers/video/omap2/dss/sdi.c | |||
@@ -84,8 +84,7 @@ int omapdss_sdi_display_enable(struct omap_dss_device *dssdev) | |||
84 | dispc_mgr_set_pol_freq(dssdev->manager->id, dssdev->panel.config, | 84 | dispc_mgr_set_pol_freq(dssdev->manager->id, dssdev->panel.config, |
85 | dssdev->panel.acbi, dssdev->panel.acb); | 85 | dssdev->panel.acbi, dssdev->panel.acb); |
86 | 86 | ||
87 | r = dss_calc_clock_div(1, t->pixel_clock * 1000, | 87 | r = dss_calc_clock_div(t->pixel_clock * 1000, &dss_cinfo, &dispc_cinfo); |
88 | &dss_cinfo, &dispc_cinfo); | ||
89 | if (r) | 88 | if (r) |
90 | goto err_calc_clock_div; | 89 | goto err_calc_clock_div; |
91 | 90 | ||