Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: mediatek: add pcw_chg_bit control for PLLs of MT7988

Introduce pcw_chg_bit member to struct mtk_pll_data and use it instead
of the previously hardcoded PCW_CHG_MASK macro if set.
This will needed for clocks on the MT7988 SoC.

Signed-off-by: Sam Shih <sam.shih@mediatek.com>
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/3b9c65ddb08c8bedf790aacf29871af026b6f0b7.1702849494.git.daniel@makrotopia.org
Signed-off-by: Stephen Boyd <sboyd@kernel.org>

authored by

Sam Shih and committed by
Stephen Boyd
d9bf944b afd36e9d

+4 -2
+3 -2
drivers/clk/mediatek/clk-pll.c
··· 23 23 #define CON0_BASE_EN BIT(0) 24 24 #define CON0_PWR_ON BIT(0) 25 25 #define CON0_ISO_EN BIT(1) 26 - #define PCW_CHG_MASK BIT(31) 26 + #define PCW_CHG_BIT 31 27 27 28 28 #define AUDPLL_TUNER_EN BIT(31) 29 29 ··· 114 114 pll->data->pcw_shift); 115 115 val |= pcw << pll->data->pcw_shift; 116 116 writel(val, pll->pcw_addr); 117 - chg = readl(pll->pcw_chg_addr) | PCW_CHG_MASK; 117 + chg = readl(pll->pcw_chg_addr) | 118 + BIT(pll->data->pcw_chg_bit ? : PCW_CHG_BIT); 118 119 writel(chg, pll->pcw_chg_addr); 119 120 if (pll->tuner_addr) 120 121 writel(val + 1, pll->tuner_addr);
+1
drivers/clk/mediatek/clk-pll.h
··· 48 48 const char *parent_name; 49 49 u32 en_reg; 50 50 u8 pll_en_bit; /* Assume 0, indicates BIT(0) by default */ 51 + u8 pcw_chg_bit; 51 52 }; 52 53 53 54 /*