diff options
| -rw-r--r-- | drivers/clk/sunxi-ng/ccu-sun50i-h6.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-h6.c b/drivers/clk/sunxi-ng/ccu-sun50i-h6.c index daf78966555e..33980067b06e 100644 --- a/drivers/clk/sunxi-ng/ccu-sun50i-h6.c +++ b/drivers/clk/sunxi-ng/ccu-sun50i-h6.c | |||
| @@ -656,6 +656,8 @@ static const char * const hdmi_cec_parents[] = { "osc32k", "pll-periph0-2x" }; | |||
| 656 | static const struct ccu_mux_fixed_prediv hdmi_cec_predivs[] = { | 656 | static const struct ccu_mux_fixed_prediv hdmi_cec_predivs[] = { |
| 657 | { .index = 1, .div = 36621 }, | 657 | { .index = 1, .div = 36621 }, |
| 658 | }; | 658 | }; |
| 659 | |||
| 660 | #define SUN50I_H6_HDMI_CEC_CLK_REG 0xb10 | ||
| 659 | static struct ccu_mux hdmi_cec_clk = { | 661 | static struct ccu_mux hdmi_cec_clk = { |
| 660 | .enable = BIT(31), | 662 | .enable = BIT(31), |
| 661 | 663 | ||
| @@ -1200,6 +1202,15 @@ static int sun50i_h6_ccu_probe(struct platform_device *pdev) | |||
| 1200 | val &= ~(GENMASK(21, 16) | BIT(0)); | 1202 | val &= ~(GENMASK(21, 16) | BIT(0)); |
| 1201 | writel(val | (7 << 16), reg + SUN50I_H6_PLL_AUDIO_REG); | 1203 | writel(val | (7 << 16), reg + SUN50I_H6_PLL_AUDIO_REG); |
| 1202 | 1204 | ||
| 1205 | /* | ||
| 1206 | * First clock parent (osc32K) is unusable for CEC. But since there | ||
| 1207 | * is no good way to force parent switch (both run with same frequency), | ||
| 1208 | * just set second clock parent here. | ||
| 1209 | */ | ||
| 1210 | val = readl(reg + SUN50I_H6_HDMI_CEC_CLK_REG); | ||
| 1211 | val |= BIT(24); | ||
| 1212 | writel(val, reg + SUN50I_H6_HDMI_CEC_CLK_REG); | ||
| 1213 | |||
| 1203 | return sunxi_ccu_probe(pdev->dev.of_node, reg, &sun50i_h6_ccu_desc); | 1214 | return sunxi_ccu_probe(pdev->dev.of_node, reg, &sun50i_h6_ccu_desc); |
| 1204 | } | 1215 | } |
| 1205 | 1216 | ||
