diff options
| author | Stephen Boyd <sboyd@kernel.org> | 2018-10-18 13:15:37 -0400 |
|---|---|---|
| committer | Stephen Boyd <sboyd@kernel.org> | 2018-10-18 13:15:37 -0400 |
| commit | 1b4d990b19d2de186b188da5b033110949c118fe (patch) | |
| tree | d8b381ddd6e95f347ea889d4cd05c94a331f4305 | |
| parent | 5b394b2ddf0347bef56e50c69a58773c94343ff3 (diff) | |
| parent | 665636b2940d0897c4130253467f5e8c42eea392 (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.c | 4 | ||||
| -rw-r--r-- | drivers/clk/rockchip/clk-rk3188.c | 2 | ||||
| -rw-r--r-- | drivers/clk/rockchip/clk-rk3288.c | 29 | ||||
| -rw-r--r-- | drivers/clk/rockchip/clk-rk3328.c | 8 | ||||
| -rw-r--r-- | include/dt-bindings/clock/rk3188-cru-common.h | 3 |
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, | |||
| 80 | static u8 rockchip_ddrclk_get_parent(struct clk_hw *hw) | 80 | static 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 | ||
| 834 | static const char *const rk3328_critical_clocks[] __initconst = { | 834 | static 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 |
