mirror of https://gitee.com/openkylin/linux.git
clk: sunxi-ng: h6: Use local parent references for CLK_FIXED_FACTOR
With the new clk parenting code and CLK_FIXED_FACTOR_{HW,FW_NAME} macros, we can reference parents locally via pointers to struct clk_hw or DT clock-names. Convert existing CLK_FIXED_FACTOR definitions to either the _HW or _FW_NAME variant based on whether the parent clock is internal or external to the CCU. A forward declaration for struct clk_fixed_factor pll_periph0_4x_clk is added as the definitions of the fixed factor clocks appear much later in the file. The position of fixed factor clock definitions will be moved for all drivers at a later time, before the conversion of all other clock types. Acked-by: Maxime Ripard <maxime.ripard@bootlin.com> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
This commit is contained in:
parent
ecd73c04b3
commit
8916d3fc3a
|
@ -622,8 +622,9 @@ static SUNXI_CCU_GATE(bus_xhci_clk, "bus-xhci", "ahb3", 0xa8c, BIT(5), 0);
|
|||
static SUNXI_CCU_GATE(bus_ehci3_clk, "bus-ehci3", "ahb3", 0xa8c, BIT(7), 0);
|
||||
static SUNXI_CCU_GATE(bus_otg_clk, "bus-otg", "ahb3", 0xa8c, BIT(8), 0);
|
||||
|
||||
static CLK_FIXED_FACTOR(pcie_ref_100m_clk, "pcie-ref-100M",
|
||||
"pll-periph0-4x", 24, 1, 0);
|
||||
static struct clk_fixed_factor pll_periph0_4x_clk;
|
||||
static CLK_FIXED_FACTOR_HW(pcie_ref_100m_clk, "pcie-ref-100M",
|
||||
&pll_periph0_4x_clk.hw, 24, 1, 0);
|
||||
static SUNXI_CCU_GATE(pcie_ref_clk, "pcie-ref", "pcie-ref-100M",
|
||||
0xab0, BIT(31), 0);
|
||||
static SUNXI_CCU_GATE(pcie_ref_out_clk, "pcie-ref-out", "pcie-ref",
|
||||
|
@ -745,34 +746,52 @@ static SUNXI_CCU_M_WITH_MUX_GATE(hdcp_clk, "hdcp", hdcp_parents, 0xc40,
|
|||
static SUNXI_CCU_GATE(bus_hdcp_clk, "bus-hdcp", "ahb3", 0xc4c, BIT(0), 0);
|
||||
|
||||
/* Fixed factor clocks */
|
||||
static CLK_FIXED_FACTOR(osc12M_clk, "osc12M", "osc24M", 2, 1, 0);
|
||||
static CLK_FIXED_FACTOR_FW_NAME(osc12M_clk, "osc12M", "hosc", 2, 1, 0);
|
||||
|
||||
static const struct clk_hw *clk_parent_pll_audio[] = {
|
||||
&pll_audio_base_clk.common.hw
|
||||
};
|
||||
|
||||
/*
|
||||
* The divider of pll-audio is fixed to 8 now, as pll-audio-4x has a
|
||||
* fixed post-divider 2.
|
||||
*/
|
||||
static CLK_FIXED_FACTOR(pll_audio_clk, "pll-audio",
|
||||
"pll-audio-base", 8, 1, CLK_SET_RATE_PARENT);
|
||||
static CLK_FIXED_FACTOR(pll_audio_2x_clk, "pll-audio-2x",
|
||||
"pll-audio-base", 4, 1, CLK_SET_RATE_PARENT);
|
||||
static CLK_FIXED_FACTOR(pll_audio_4x_clk, "pll-audio-4x",
|
||||
"pll-audio-base", 2, 1, CLK_SET_RATE_PARENT);
|
||||
static CLK_FIXED_FACTOR_HWS(pll_audio_clk, "pll-audio",
|
||||
clk_parent_pll_audio,
|
||||
8, 1, CLK_SET_RATE_PARENT);
|
||||
static CLK_FIXED_FACTOR_HWS(pll_audio_2x_clk, "pll-audio-2x",
|
||||
clk_parent_pll_audio,
|
||||
4, 1, CLK_SET_RATE_PARENT);
|
||||
static CLK_FIXED_FACTOR_HWS(pll_audio_4x_clk, "pll-audio-4x",
|
||||
clk_parent_pll_audio,
|
||||
2, 1, CLK_SET_RATE_PARENT);
|
||||
|
||||
static CLK_FIXED_FACTOR(pll_periph0_4x_clk, "pll-periph0-4x",
|
||||
"pll-periph0", 1, 4, 0);
|
||||
static CLK_FIXED_FACTOR(pll_periph0_2x_clk, "pll-periph0-2x",
|
||||
"pll-periph0", 1, 2, 0);
|
||||
static const struct clk_hw *pll_periph0_parents[] = {
|
||||
&pll_periph0_clk.common.hw
|
||||
};
|
||||
static CLK_FIXED_FACTOR_HWS(pll_periph0_4x_clk, "pll-periph0-4x",
|
||||
pll_periph0_parents,
|
||||
1, 4, 0);
|
||||
static CLK_FIXED_FACTOR_HWS(pll_periph0_2x_clk, "pll-periph0-2x",
|
||||
pll_periph0_parents,
|
||||
1, 2, 0);
|
||||
|
||||
static CLK_FIXED_FACTOR(pll_periph1_4x_clk, "pll-periph1-4x",
|
||||
"pll-periph1", 1, 4, 0);
|
||||
static CLK_FIXED_FACTOR(pll_periph1_2x_clk, "pll-periph1-2x",
|
||||
"pll-periph1", 1, 2, 0);
|
||||
static const struct clk_hw *pll_periph1_parents[] = {
|
||||
&pll_periph1_clk.common.hw
|
||||
};
|
||||
static CLK_FIXED_FACTOR_HWS(pll_periph1_4x_clk, "pll-periph1-4x",
|
||||
pll_periph1_parents,
|
||||
1, 4, 0);
|
||||
static CLK_FIXED_FACTOR_HWS(pll_periph1_2x_clk, "pll-periph1-2x",
|
||||
pll_periph1_parents,
|
||||
1, 2, 0);
|
||||
|
||||
static CLK_FIXED_FACTOR(pll_video0_4x_clk, "pll-video0-4x",
|
||||
"pll-video0", 1, 4, CLK_SET_RATE_PARENT);
|
||||
|
||||
static CLK_FIXED_FACTOR(pll_video1_4x_clk, "pll-video1-4x",
|
||||
"pll-video1", 1, 4, CLK_SET_RATE_PARENT);
|
||||
static CLK_FIXED_FACTOR_HW(pll_video0_4x_clk, "pll-video0-4x",
|
||||
&pll_video0_clk.common.hw,
|
||||
1, 4, CLK_SET_RATE_PARENT);
|
||||
static CLK_FIXED_FACTOR_HW(pll_video1_4x_clk, "pll-video1-4x",
|
||||
&pll_video1_clk.common.hw,
|
||||
1, 4, CLK_SET_RATE_PARENT);
|
||||
|
||||
static struct ccu_common *sun50i_h6_ccu_clks[] = {
|
||||
&pll_cpux_clk.common,
|
||||
|
|
Loading…
Reference in New Issue