diff options
-rw-r--r-- | drivers/video/omap2/dss/dss.c | 39 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dss.h | 1 |
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 | ||
474 | int dss_set_fck_rate(unsigned long rate) | 474 | int 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 | ||
500 | unsigned 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 | |||
508 | unsigned long dss_get_dispc_clk_rate(void) | 493 | unsigned 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 | ||
722 | static const struct dss_features omap34xx_dss_feats __initconst = { | 707 | static 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 | ||
729 | static const struct dss_features omap3630_dss_feats __initconst = { | 714 | static 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 | ||
736 | static const struct dss_features omap44xx_dss_feats __initconst = { | 721 | static 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 | ||
743 | static const struct dss_features omap54xx_dss_feats __initconst = { | 728 | static 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); | |||
242 | void dss_set_venc_output(enum omap_dss_venc_type type); | 242 | void dss_set_venc_output(enum omap_dss_venc_type type); |
243 | void dss_set_dac_pwrdn_bgz(bool enable); | 243 | void dss_set_dac_pwrdn_bgz(bool enable); |
244 | 244 | ||
245 | unsigned long dss_get_dpll4_rate(void); | ||
246 | int dss_set_fck_rate(unsigned long rate); | 245 | int dss_set_fck_rate(unsigned long rate); |
247 | 246 | ||
248 | typedef bool (*dss_div_calc_func)(unsigned long fck, void *data); | 247 | typedef bool (*dss_div_calc_func)(unsigned long fck, void *data); |