aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/video/omap2/dss/dss.c39
-rw-r--r--drivers/video/omap2/dss/dss.h1
2 files changed, 12 insertions, 28 deletions
diff --git a/drivers/video/omap2/dss/dss.c b/drivers/video/omap2/dss/dss.c
index d510ba333e7d..7af97199c905 100644
--- a/drivers/video/omap2/dss/dss.c
+++ b/drivers/video/omap2/dss/dss.c
@@ -454,7 +454,7 @@ bool dss_div_calc(unsigned long fck_min, dss_div_calc_func func, void *data)
454 fckd_hw_max = dss.feat->fck_div_max; 454 fckd_hw_max = dss.feat->fck_div_max;
455 455
456 m = dss.feat->dss_fck_multiplier; 456 m = dss.feat->dss_fck_multiplier;
457 prate = dss_get_dpll4_rate(); 457 prate = clk_get_rate(dss.parent_clk);
458 458
459 fck_min = fck_min ? fck_min : 1; 459 fck_min = fck_min ? fck_min : 1;
460 460
@@ -473,20 +473,13 @@ bool dss_div_calc(unsigned long fck_min, dss_div_calc_func func, void *data)
473 473
474int dss_set_fck_rate(unsigned long rate) 474int dss_set_fck_rate(unsigned long rate)
475{ 475{
476 DSSDBG("set fck to %lu\n", rate); 476 int r;
477
478 if (dss.parent_clk) {
479 unsigned long prate;
480 unsigned m;
481 int r;
482 477
483 prate = clk_get_rate(clk_get_parent(dss.parent_clk)); 478 DSSDBG("set fck to %lu\n", rate);
484 m = dss.feat->dss_fck_multiplier;
485 479
486 r = clk_set_rate(dss.parent_clk, rate * m); 480 r = clk_set_rate(dss.dss_clk, rate);
487 if (r) 481 if (r)
488 return r; 482 return r;
489 }
490 483
491 dss.dss_clk_rate = clk_get_rate(dss.dss_clk); 484 dss.dss_clk_rate = clk_get_rate(dss.dss_clk);
492 485
@@ -497,14 +490,6 @@ int dss_set_fck_rate(unsigned long rate)
497 return 0; 490 return 0;
498} 491}
499 492
500unsigned long dss_get_dpll4_rate(void)
501{
502 if (dss.parent_clk)
503 return clk_get_rate(clk_get_parent(dss.parent_clk));
504 else
505 return 0;
506}
507
508unsigned long dss_get_dispc_clk_rate(void) 493unsigned long dss_get_dispc_clk_rate(void)
509{ 494{
510 return dss.dss_clk_rate; 495 return dss.dss_clk_rate;
@@ -522,7 +507,7 @@ static int dss_setup_default_clock(void)
522 507
523 max_dss_fck = dss_feat_get_param_max(FEAT_PARAM_DSS_FCK); 508 max_dss_fck = dss_feat_get_param_max(FEAT_PARAM_DSS_FCK);
524 509
525 prate = dss_get_dpll4_rate(); 510 prate = clk_get_rate(dss.parent_clk);
526 511
527 fck_div = DIV_ROUND_UP(prate * dss.feat->dss_fck_multiplier, 512 fck_div = DIV_ROUND_UP(prate * dss.feat->dss_fck_multiplier,
528 max_dss_fck); 513 max_dss_fck);
@@ -715,35 +700,35 @@ static const struct dss_features omap24xx_dss_feats __initconst = {
715 */ 700 */
716 .fck_div_max = 6, 701 .fck_div_max = 6,
717 .dss_fck_multiplier = 2, 702 .dss_fck_multiplier = 2,
718 .parent_clk_name = "dss1_fck", 703 .parent_clk_name = "core_ck",
719 .dpi_select_source = &dss_dpi_select_source_omap2_omap3, 704 .dpi_select_source = &dss_dpi_select_source_omap2_omap3,
720}; 705};
721 706
722static const struct dss_features omap34xx_dss_feats __initconst = { 707static const struct dss_features omap34xx_dss_feats __initconst = {
723 .fck_div_max = 16, 708 .fck_div_max = 16,
724 .dss_fck_multiplier = 2, 709 .dss_fck_multiplier = 2,
725 .parent_clk_name = "dpll4_m4_ck", 710 .parent_clk_name = "dpll4_ck",
726 .dpi_select_source = &dss_dpi_select_source_omap2_omap3, 711 .dpi_select_source = &dss_dpi_select_source_omap2_omap3,
727}; 712};
728 713
729static const struct dss_features omap3630_dss_feats __initconst = { 714static const struct dss_features omap3630_dss_feats __initconst = {
730 .fck_div_max = 32, 715 .fck_div_max = 32,
731 .dss_fck_multiplier = 1, 716 .dss_fck_multiplier = 1,
732 .parent_clk_name = "dpll4_m4_ck", 717 .parent_clk_name = "dpll4_ck",
733 .dpi_select_source = &dss_dpi_select_source_omap2_omap3, 718 .dpi_select_source = &dss_dpi_select_source_omap2_omap3,
734}; 719};
735 720
736static const struct dss_features omap44xx_dss_feats __initconst = { 721static const struct dss_features omap44xx_dss_feats __initconst = {
737 .fck_div_max = 32, 722 .fck_div_max = 32,
738 .dss_fck_multiplier = 1, 723 .dss_fck_multiplier = 1,
739 .parent_clk_name = "dpll_per_m5x2_ck", 724 .parent_clk_name = "dpll_per_x2_ck",
740 .dpi_select_source = &dss_dpi_select_source_omap4, 725 .dpi_select_source = &dss_dpi_select_source_omap4,
741}; 726};
742 727
743static const struct dss_features omap54xx_dss_feats __initconst = { 728static const struct dss_features omap54xx_dss_feats __initconst = {
744 .fck_div_max = 64, 729 .fck_div_max = 64,
745 .dss_fck_multiplier = 1, 730 .dss_fck_multiplier = 1,
746 .parent_clk_name = "dpll_per_h12x2_ck", 731 .parent_clk_name = "dpll_per_x2_ck",
747 .dpi_select_source = &dss_dpi_select_source_omap5, 732 .dpi_select_source = &dss_dpi_select_source_omap5,
748}; 733};
749 734
diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h
index ead1960ad9d8..6fc786fddbcb 100644
--- a/drivers/video/omap2/dss/dss.h
+++ b/drivers/video/omap2/dss/dss.h
@@ -242,7 +242,6 @@ enum omap_dss_clk_source dss_get_lcd_clk_source(enum omap_channel channel);
242void dss_set_venc_output(enum omap_dss_venc_type type); 242void dss_set_venc_output(enum omap_dss_venc_type type);
243void dss_set_dac_pwrdn_bgz(bool enable); 243void dss_set_dac_pwrdn_bgz(bool enable);
244 244
245unsigned long dss_get_dpll4_rate(void);
246int dss_set_fck_rate(unsigned long rate); 245int dss_set_fck_rate(unsigned long rate);
247 246
248typedef bool (*dss_div_calc_func)(unsigned long fck, void *data); 247typedef bool (*dss_div_calc_func)(unsigned long fck, void *data);