aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Boyd <sboyd@kernel.org>2018-10-18 13:15:37 -0400
committerStephen Boyd <sboyd@kernel.org>2018-10-18 13:15:37 -0400
commit1b4d990b19d2de186b188da5b033110949c118fe (patch)
treed8b381ddd6e95f347ea889d4cd05c94a331f4305
parent5b394b2ddf0347bef56e50c69a58773c94343ff3 (diff)
parent665636b2940d0897c4130253467f5e8c42eea392 (diff)
Merge tag 'v4.20-rockchip-clk1' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into clk-rockchip
Pull Rockchip clk driver updates from Heiko Stuebner: Fixes for static checker warning and a wrong shift value for the mmc on rk3328, as well as setting a hdmi-id on rk3066 for a later driver for the hdmi encoder on it and some adapted rk3288 pll rates to support more and better hdmi rates. * tag 'v4.20-rockchip-clk1' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip: clk: rockchip: Fix static checker warning in rockchip_ddrclk_get_parent call clk: rockchip: use the newly added clock-id for hdmi on RK3066 clk: rockchip: add clock-id for HCLK_HDMI on rk3066 clk: rockchip: fix wrong mmc sample phase shift for rk3328 clk: rockchip: improve rk3288 pll rates for better hdmi output
-rw-r--r--drivers/clk/rockchip/clk-ddr.c4
-rw-r--r--drivers/clk/rockchip/clk-rk3188.c2
-rw-r--r--drivers/clk/rockchip/clk-rk3288.c29
-rw-r--r--drivers/clk/rockchip/clk-rk3328.c8
-rw-r--r--include/dt-bindings/clock/rk3188-cru-common.h3
5 files changed, 32 insertions, 14 deletions
diff --git a/drivers/clk/rockchip/clk-ddr.c b/drivers/clk/rockchip/clk-ddr.c
index e8075359366b..ebce5260068b 100644
--- a/drivers/clk/rockchip/clk-ddr.c
+++ b/drivers/clk/rockchip/clk-ddr.c
@@ -80,16 +80,12 @@ static long rockchip_ddrclk_sip_round_rate(struct clk_hw *hw,
80static u8 rockchip_ddrclk_get_parent(struct clk_hw *hw) 80static u8 rockchip_ddrclk_get_parent(struct clk_hw *hw)
81{ 81{
82 struct rockchip_ddrclk *ddrclk = to_rockchip_ddrclk_hw(hw); 82 struct rockchip_ddrclk *ddrclk = to_rockchip_ddrclk_hw(hw);
83 int num_parents = clk_hw_get_num_parents(hw);
84 u32 val; 83 u32 val;
85 84
86 val = clk_readl(ddrclk->reg_base + 85 val = clk_readl(ddrclk->reg_base +
87 ddrclk->mux_offset) >> ddrclk->mux_shift; 86 ddrclk->mux_offset) >> ddrclk->mux_shift;
88 val &= GENMASK(ddrclk->mux_width - 1, 0); 87 val &= GENMASK(ddrclk->mux_width - 1, 0);
89 88
90 if (val >= num_parents)
91 return -EINVAL;
92
93 return val; 89 return val;
94} 90}
95 91
diff --git a/drivers/clk/rockchip/clk-rk3188.c b/drivers/clk/rockchip/clk-rk3188.c
index 67e73fd71f09..fa25e35ce7d5 100644
--- a/drivers/clk/rockchip/clk-rk3188.c
+++ b/drivers/clk/rockchip/clk-rk3188.c
@@ -645,7 +645,7 @@ static struct rockchip_clk_branch rk3066a_clk_branches[] __initdata = {
645 GATE(HCLK_I2S1, "hclk_i2s1", "hclk_cpu", 0, RK2928_CLKGATE_CON(7), 3, GFLAGS), 645 GATE(HCLK_I2S1, "hclk_i2s1", "hclk_cpu", 0, RK2928_CLKGATE_CON(7), 3, GFLAGS),
646 GATE(HCLK_I2S2, "hclk_i2s2", "hclk_cpu", 0, RK2928_CLKGATE_CON(7), 4, GFLAGS), 646 GATE(HCLK_I2S2, "hclk_i2s2", "hclk_cpu", 0, RK2928_CLKGATE_CON(7), 4, GFLAGS),
647 GATE(HCLK_CIF1, "hclk_cif1", "hclk_cpu", 0, RK2928_CLKGATE_CON(6), 6, GFLAGS), 647 GATE(HCLK_CIF1, "hclk_cif1", "hclk_cpu", 0, RK2928_CLKGATE_CON(6), 6, GFLAGS),
648 GATE(0, "hclk_hdmi", "hclk_cpu", 0, RK2928_CLKGATE_CON(4), 14, GFLAGS), 648 GATE(HCLK_HDMI, "hclk_hdmi", "hclk_cpu", 0, RK2928_CLKGATE_CON(4), 14, GFLAGS),
649 649
650 GATE(HCLK_OTG1, "hclk_usbotg1", "hclk_peri", CLK_IGNORE_UNUSED, 650 GATE(HCLK_OTG1, "hclk_usbotg1", "hclk_peri", CLK_IGNORE_UNUSED,
651 RK2928_CLKGATE_CON(5), 14, GFLAGS), 651 RK2928_CLKGATE_CON(5), 14, GFLAGS),
diff --git a/drivers/clk/rockchip/clk-rk3288.c b/drivers/clk/rockchip/clk-rk3288.c
index 450de24a1b42..5a67b7869960 100644
--- a/drivers/clk/rockchip/clk-rk3288.c
+++ b/drivers/clk/rockchip/clk-rk3288.c
@@ -83,22 +83,43 @@ static struct rockchip_pll_rate_table rk3288_pll_rates[] = {
83 RK3066_PLL_RATE( 768000000, 1, 64, 2), 83 RK3066_PLL_RATE( 768000000, 1, 64, 2),
84 RK3066_PLL_RATE( 742500000, 8, 495, 2), 84 RK3066_PLL_RATE( 742500000, 8, 495, 2),
85 RK3066_PLL_RATE( 696000000, 1, 58, 2), 85 RK3066_PLL_RATE( 696000000, 1, 58, 2),
86 RK3066_PLL_RATE_NB(621000000, 1, 207, 8, 1),
86 RK3066_PLL_RATE( 600000000, 1, 50, 2), 87 RK3066_PLL_RATE( 600000000, 1, 50, 2),
87 RK3066_PLL_RATE_NB(594000000, 1, 198, 8, 1), 88 RK3066_PLL_RATE_NB(594000000, 1, 198, 8, 1),
88 RK3066_PLL_RATE( 552000000, 1, 46, 2), 89 RK3066_PLL_RATE( 552000000, 1, 46, 2),
89 RK3066_PLL_RATE( 504000000, 1, 84, 4), 90 RK3066_PLL_RATE( 504000000, 1, 84, 4),
90 RK3066_PLL_RATE( 500000000, 3, 125, 2), 91 RK3066_PLL_RATE( 500000000, 3, 125, 2),
91 RK3066_PLL_RATE( 456000000, 1, 76, 4), 92 RK3066_PLL_RATE( 456000000, 1, 76, 4),
93 RK3066_PLL_RATE( 428000000, 1, 107, 6),
92 RK3066_PLL_RATE( 408000000, 1, 68, 4), 94 RK3066_PLL_RATE( 408000000, 1, 68, 4),
93 RK3066_PLL_RATE( 400000000, 3, 100, 2), 95 RK3066_PLL_RATE( 400000000, 3, 100, 2),
96 RK3066_PLL_RATE_NB( 394000000, 1, 197, 12, 1),
94 RK3066_PLL_RATE( 384000000, 2, 128, 4), 97 RK3066_PLL_RATE( 384000000, 2, 128, 4),
95 RK3066_PLL_RATE( 360000000, 1, 60, 4), 98 RK3066_PLL_RATE( 360000000, 1, 60, 4),
99 RK3066_PLL_RATE_NB( 356000000, 1, 178, 12, 1),
100 RK3066_PLL_RATE_NB( 324000000, 1, 189, 14, 1),
96 RK3066_PLL_RATE( 312000000, 1, 52, 4), 101 RK3066_PLL_RATE( 312000000, 1, 52, 4),
97 RK3066_PLL_RATE( 300000000, 1, 50, 4), 102 RK3066_PLL_RATE_NB( 308000000, 1, 154, 12, 1),
98 RK3066_PLL_RATE( 297000000, 2, 198, 8), 103 RK3066_PLL_RATE_NB( 303000000, 1, 202, 16, 1),
104 RK3066_PLL_RATE( 300000000, 1, 75, 6),
105 RK3066_PLL_RATE_NB( 297750000, 2, 397, 16, 1),
106 RK3066_PLL_RATE_NB( 293250000, 2, 391, 16, 1),
107 RK3066_PLL_RATE_NB( 292500000, 1, 195, 16, 1),
108 RK3066_PLL_RATE( 273600000, 1, 114, 10),
109 RK3066_PLL_RATE_NB( 273000000, 1, 182, 16, 1),
110 RK3066_PLL_RATE_NB( 270000000, 1, 180, 16, 1),
111 RK3066_PLL_RATE_NB( 266250000, 2, 355, 16, 1),
112 RK3066_PLL_RATE_NB( 256500000, 1, 171, 16, 1),
99 RK3066_PLL_RATE( 252000000, 1, 84, 8), 113 RK3066_PLL_RATE( 252000000, 1, 84, 8),
100 RK3066_PLL_RATE( 216000000, 1, 72, 8), 114 RK3066_PLL_RATE_NB( 250500000, 1, 167, 16, 1),
101 RK3066_PLL_RATE( 148500000, 2, 99, 8), 115 RK3066_PLL_RATE_NB( 243428571, 1, 142, 14, 1),
116 RK3066_PLL_RATE( 238000000, 1, 119, 12),
117 RK3066_PLL_RATE_NB( 219750000, 2, 293, 16, 1),
118 RK3066_PLL_RATE_NB( 216000000, 1, 144, 16, 1),
119 RK3066_PLL_RATE_NB( 213000000, 1, 142, 16, 1),
120 RK3066_PLL_RATE( 195428571, 1, 114, 14),
121 RK3066_PLL_RATE( 160000000, 1, 80, 12),
122 RK3066_PLL_RATE( 157500000, 1, 105, 16),
102 RK3066_PLL_RATE( 126000000, 1, 84, 16), 123 RK3066_PLL_RATE( 126000000, 1, 84, 16),
103 RK3066_PLL_RATE( 48000000, 1, 64, 32), 124 RK3066_PLL_RATE( 48000000, 1, 64, 32),
104 { /* sentinel */ }, 125 { /* sentinel */ },
diff --git a/drivers/clk/rockchip/clk-rk3328.c b/drivers/clk/rockchip/clk-rk3328.c
index 252366a5231f..2c5426607790 100644
--- a/drivers/clk/rockchip/clk-rk3328.c
+++ b/drivers/clk/rockchip/clk-rk3328.c
@@ -813,22 +813,22 @@ static struct rockchip_clk_branch rk3328_clk_branches[] __initdata = {
813 MMC(SCLK_SDMMC_DRV, "sdmmc_drv", "clk_sdmmc", 813 MMC(SCLK_SDMMC_DRV, "sdmmc_drv", "clk_sdmmc",
814 RK3328_SDMMC_CON0, 1), 814 RK3328_SDMMC_CON0, 1),
815 MMC(SCLK_SDMMC_SAMPLE, "sdmmc_sample", "clk_sdmmc", 815 MMC(SCLK_SDMMC_SAMPLE, "sdmmc_sample", "clk_sdmmc",
816 RK3328_SDMMC_CON1, 1), 816 RK3328_SDMMC_CON1, 0),
817 817
818 MMC(SCLK_SDIO_DRV, "sdio_drv", "clk_sdio", 818 MMC(SCLK_SDIO_DRV, "sdio_drv", "clk_sdio",
819 RK3328_SDIO_CON0, 1), 819 RK3328_SDIO_CON0, 1),
820 MMC(SCLK_SDIO_SAMPLE, "sdio_sample", "clk_sdio", 820 MMC(SCLK_SDIO_SAMPLE, "sdio_sample", "clk_sdio",
821 RK3328_SDIO_CON1, 1), 821 RK3328_SDIO_CON1, 0),
822 822
823 MMC(SCLK_EMMC_DRV, "emmc_drv", "clk_emmc", 823 MMC(SCLK_EMMC_DRV, "emmc_drv", "clk_emmc",
824 RK3328_EMMC_CON0, 1), 824 RK3328_EMMC_CON0, 1),
825 MMC(SCLK_EMMC_SAMPLE, "emmc_sample", "clk_emmc", 825 MMC(SCLK_EMMC_SAMPLE, "emmc_sample", "clk_emmc",
826 RK3328_EMMC_CON1, 1), 826 RK3328_EMMC_CON1, 0),
827 827
828 MMC(SCLK_SDMMC_EXT_DRV, "sdmmc_ext_drv", "clk_sdmmc_ext", 828 MMC(SCLK_SDMMC_EXT_DRV, "sdmmc_ext_drv", "clk_sdmmc_ext",
829 RK3328_SDMMC_EXT_CON0, 1), 829 RK3328_SDMMC_EXT_CON0, 1),
830 MMC(SCLK_SDMMC_EXT_SAMPLE, "sdmmc_ext_sample", "clk_sdmmc_ext", 830 MMC(SCLK_SDMMC_EXT_SAMPLE, "sdmmc_ext_sample", "clk_sdmmc_ext",
831 RK3328_SDMMC_EXT_CON1, 1), 831 RK3328_SDMMC_EXT_CON1, 0),
832}; 832};
833 833
834static const char *const rk3328_critical_clocks[] __initconst = { 834static const char *const rk3328_critical_clocks[] __initconst = {
diff --git a/include/dt-bindings/clock/rk3188-cru-common.h b/include/dt-bindings/clock/rk3188-cru-common.h
index b9462b7d3dfe..dc2101a634be 100644
--- a/include/dt-bindings/clock/rk3188-cru-common.h
+++ b/include/dt-bindings/clock/rk3188-cru-common.h
@@ -139,8 +139,9 @@
139#define HCLK_CIF1 470 139#define HCLK_CIF1 470
140#define HCLK_VEPU 471 140#define HCLK_VEPU 471
141#define HCLK_VDPU 472 141#define HCLK_VDPU 472
142#define HCLK_HDMI 473
142 143
143#define CLK_NR_CLKS (HCLK_VDPU + 1) 144#define CLK_NR_CLKS (HCLK_HDMI + 1)
144 145
145/* soft-reset indices */ 146/* soft-reset indices */
146#define SRST_MCORE 2 147#define SRST_MCORE 2