Skip to content

Commit 5484bb8

Browse files
committed
Merge tag 'clk-imx-5.8' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into clk-imx
Pull i.MX clk driver updates from Shawn Guo: - A few patches from Abel Vesa as preparation of adding audiomix clock support - A couple of cleanups from Anson Huang on clk-sscg-pll and clk-pllv3 driver - Update imx7ulp clock driver to use imx_clk_hw_cpu() for making the change of ARM core clock easier - Drop dependency on ARM64 for i.MX8M clock driver, as there is a move to support aarch32 mode on aarch64 hardware - A series from Peng Fan to improve i.MX8M clock drivers, using composite clock for core and bus clk slice - Set a better parent clock for flexcan on i.MX6UL to support CiA102 defined bit rates * tag 'clk-imx-5.8' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux: clk: imx: use imx8m_clk_hw_composite_bus for i.MX8M bus clk slice clk: imx: add imx8m_clk_hw_composite_bus clk: imx: add mux ops for i.MX8M composite clk clk: imx8m: migrate A53 clk root to use composite core clk: imx8mp: use imx8m_clk_hw_composite_core to simplify code clk: imx8mp: Define gates for pll1/2 fixed dividers clk: imx: imx8mp: fix pll mux bit clk: imx8m: drop clk_hw_set_parent for A53 dt-bindings: clocks: imx8mp: Add ids for audiomix clocks clk: imx: Add helpers for passing the device as argument clk: imx: pll14xx: Add the device as argument when registering clk: imx: gate2: Allow single bit gating clock clk: imx: clk-pllv3: Use readl_relaxed_poll_timeout() for PLL lock wait clk: imx: clk-sscg-pll: Remove unnecessary blank lines clk: imx: drop the dependency on ARM64 for i.MX8M clk: imx7ulp: make it easy to change ARM core clk clk: imx: imx6ul: change flexcan clock to support CiA bitrates
2 parents 8f3d9f3 + b1657ad commit 5484bb8

File tree

15 files changed

+358
-165
lines changed

15 files changed

+358
-165
lines changed

drivers/clk/imx/Kconfig

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,25 @@ config MXC_CLK_SCU
1010

1111
config CLK_IMX8MM
1212
bool "IMX8MM CCM Clock Driver"
13-
depends on ARCH_MXC && ARM64
13+
depends on ARCH_MXC
1414
help
1515
Build the driver for i.MX8MM CCM Clock Driver
1616

1717
config CLK_IMX8MN
1818
bool "IMX8MN CCM Clock Driver"
19-
depends on ARCH_MXC && ARM64
19+
depends on ARCH_MXC
2020
help
2121
Build the driver for i.MX8MN CCM Clock Driver
2222

2323
config CLK_IMX8MP
2424
bool "IMX8MP CCM Clock Driver"
25-
depends on ARCH_MXC && ARM64
25+
depends on ARCH_MXC
2626
help
2727
Build the driver for i.MX8MP CCM Clock Driver
2828

2929
config CLK_IMX8MQ
3030
bool "IMX8MQ CCM Clock Driver"
31-
depends on ARCH_MXC && ARM64
31+
depends on ARCH_MXC
3232
help
3333
Build the driver for i.MX8MQ CCM Clock Driver
3434

drivers/clk/imx/clk-composite-8m.c

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,52 @@ static const struct clk_ops imx8m_clk_composite_divider_ops = {
124124
.set_rate = imx8m_clk_composite_divider_set_rate,
125125
};
126126

127+
static u8 imx8m_clk_composite_mux_get_parent(struct clk_hw *hw)
128+
{
129+
return clk_mux_ops.get_parent(hw);
130+
}
131+
132+
static int imx8m_clk_composite_mux_set_parent(struct clk_hw *hw, u8 index)
133+
{
134+
struct clk_mux *mux = to_clk_mux(hw);
135+
u32 val = clk_mux_index_to_val(mux->table, mux->flags, index);
136+
unsigned long flags = 0;
137+
u32 reg;
138+
139+
if (mux->lock)
140+
spin_lock_irqsave(mux->lock, flags);
141+
142+
reg = readl(mux->reg);
143+
reg &= ~(mux->mask << mux->shift);
144+
val = val << mux->shift;
145+
reg |= val;
146+
/*
147+
* write twice to make sure non-target interface
148+
* SEL_A/B point the same clk input.
149+
*/
150+
writel(reg, mux->reg);
151+
writel(reg, mux->reg);
152+
153+
if (mux->lock)
154+
spin_unlock_irqrestore(mux->lock, flags);
155+
156+
return 0;
157+
}
158+
159+
static int
160+
imx8m_clk_composite_mux_determine_rate(struct clk_hw *hw,
161+
struct clk_rate_request *req)
162+
{
163+
return clk_mux_ops.determine_rate(hw, req);
164+
}
165+
166+
167+
static const struct clk_ops imx8m_clk_composite_mux_ops = {
168+
.get_parent = imx8m_clk_composite_mux_get_parent,
169+
.set_parent = imx8m_clk_composite_mux_set_parent,
170+
.determine_rate = imx8m_clk_composite_mux_determine_rate,
171+
};
172+
127173
struct clk_hw *imx8m_clk_hw_composite_flags(const char *name,
128174
const char * const *parent_names,
129175
int num_parents, void __iomem *reg,
@@ -136,6 +182,7 @@ struct clk_hw *imx8m_clk_hw_composite_flags(const char *name,
136182
struct clk_gate *gate = NULL;
137183
struct clk_mux *mux = NULL;
138184
const struct clk_ops *divider_ops;
185+
const struct clk_ops *mux_ops;
139186

140187
mux = kzalloc(sizeof(*mux), GFP_KERNEL);
141188
if (!mux)
@@ -157,10 +204,17 @@ struct clk_hw *imx8m_clk_hw_composite_flags(const char *name,
157204
div->shift = PCG_DIV_SHIFT;
158205
div->width = PCG_CORE_DIV_WIDTH;
159206
divider_ops = &clk_divider_ops;
207+
mux_ops = &imx8m_clk_composite_mux_ops;
208+
} else if (composite_flags & IMX_COMPOSITE_BUS) {
209+
div->shift = PCG_PREDIV_SHIFT;
210+
div->width = PCG_PREDIV_WIDTH;
211+
divider_ops = &imx8m_clk_composite_divider_ops;
212+
mux_ops = &imx8m_clk_composite_mux_ops;
160213
} else {
161214
div->shift = PCG_PREDIV_SHIFT;
162215
div->width = PCG_PREDIV_WIDTH;
163216
divider_ops = &imx8m_clk_composite_divider_ops;
217+
mux_ops = &clk_mux_ops;
164218
}
165219

166220
div->lock = &imx_ccm_lock;
@@ -176,7 +230,7 @@ struct clk_hw *imx8m_clk_hw_composite_flags(const char *name,
176230
gate->lock = &imx_ccm_lock;
177231

178232
hw = clk_hw_register_composite(NULL, name, parent_names, num_parents,
179-
mux_hw, &clk_mux_ops, div_hw,
233+
mux_hw, mux_ops, div_hw,
180234
divider_ops, gate_hw, &clk_gate_ops, flags);
181235
if (IS_ERR(hw))
182236
goto fail;

drivers/clk/imx/clk-gate2.c

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,21 +41,26 @@ static int clk_gate2_enable(struct clk_hw *hw)
4141
struct clk_gate2 *gate = to_clk_gate2(hw);
4242
u32 reg;
4343
unsigned long flags;
44+
int ret = 0;
4445

4546
spin_lock_irqsave(gate->lock, flags);
4647

4748
if (gate->share_count && (*gate->share_count)++ > 0)
4849
goto out;
4950

50-
reg = readl(gate->reg);
51-
reg &= ~(3 << gate->bit_idx);
52-
reg |= gate->cgr_val << gate->bit_idx;
53-
writel(reg, gate->reg);
51+
if (gate->flags & IMX_CLK_GATE2_SINGLE_BIT) {
52+
ret = clk_gate_ops.enable(hw);
53+
} else {
54+
reg = readl(gate->reg);
55+
reg &= ~(3 << gate->bit_idx);
56+
reg |= gate->cgr_val << gate->bit_idx;
57+
writel(reg, gate->reg);
58+
}
5459

5560
out:
5661
spin_unlock_irqrestore(gate->lock, flags);
5762

58-
return 0;
63+
return ret;
5964
}
6065

6166
static void clk_gate2_disable(struct clk_hw *hw)
@@ -73,9 +78,13 @@ static void clk_gate2_disable(struct clk_hw *hw)
7378
goto out;
7479
}
7580

76-
reg = readl(gate->reg);
77-
reg &= ~(3 << gate->bit_idx);
78-
writel(reg, gate->reg);
81+
if (gate->flags & IMX_CLK_GATE2_SINGLE_BIT) {
82+
clk_gate_ops.disable(hw);
83+
} else {
84+
reg = readl(gate->reg);
85+
reg &= ~(3 << gate->bit_idx);
86+
writel(reg, gate->reg);
87+
}
7988

8089
out:
8190
spin_unlock_irqrestore(gate->lock, flags);
@@ -95,6 +104,9 @@ static int clk_gate2_is_enabled(struct clk_hw *hw)
95104
{
96105
struct clk_gate2 *gate = to_clk_gate2(hw);
97106

107+
if (gate->flags & IMX_CLK_GATE2_SINGLE_BIT)
108+
return clk_gate_ops.is_enabled(hw);
109+
98110
return clk_gate2_reg_is_enabled(gate->reg, gate->bit_idx);
99111
}
100112

@@ -104,6 +116,9 @@ static void clk_gate2_disable_unused(struct clk_hw *hw)
104116
unsigned long flags;
105117
u32 reg;
106118

119+
if (gate->flags & IMX_CLK_GATE2_SINGLE_BIT)
120+
return;
121+
107122
spin_lock_irqsave(gate->lock, flags);
108123

109124
if (!gate->share_count || *gate->share_count == 0) {

drivers/clk/imx/clk-imx6ul.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,7 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node)
503503
clk_prepare_enable(hws[IMX6UL_CLK_USBPHY2_GATE]->clk);
504504
}
505505

506-
clk_set_parent(hws[IMX6UL_CLK_CAN_SEL]->clk, hws[IMX6UL_CLK_PLL3_60M]->clk);
506+
clk_set_parent(hws[IMX6UL_CLK_CAN_SEL]->clk, hws[IMX6UL_CLK_PLL3_80M]->clk);
507507
if (clk_on_imx6ul())
508508
clk_set_parent(hws[IMX6UL_CLK_SIM_PRE_SEL]->clk, hws[IMX6UL_CLK_PLL3_USB_OTG]->clk);
509509
else if (clk_on_imx6ull())

drivers/clk/imx/clk-imx7ulp.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ static const char * const ddr_sels[] = { "apll_pfd_sel", "dummy", "dummy", "dum
2929
static const char * const nic_sels[] = { "firc", "ddr_clk", };
3030
static const char * const periph_plat_sels[] = { "dummy", "nic1_bus_clk", "nic1_clk", "ddr_clk", "apll_pfd2", "apll_pfd1", "apll_pfd0", "upll", };
3131
static const char * const periph_bus_sels[] = { "dummy", "sosc_bus_clk", "dummy", "firc_bus_clk", "rosc", "nic1_bus_clk", "nic1_clk", "spll_bus_clk", };
32-
static const char * const arm_sels[] = { "divcore", "dummy", "dummy", "hsrun_divcore", };
32+
static const char * const arm_sels[] = { "core", "dummy", "dummy", "hsrun_core", };
3333

3434
/* used by sosc/sirc/firc/ddr/spll/apll dividers */
3535
static const struct clk_div_table ulp_div_table[] = {
@@ -121,7 +121,9 @@ static void __init imx7ulp_clk_scg1_init(struct device_node *np)
121121
hws[IMX7ULP_CLK_DDR_SEL] = imx_clk_hw_mux_flags("ddr_sel", base + 0x30, 24, 2, ddr_sels, ARRAY_SIZE(ddr_sels), CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE);
122122

123123
hws[IMX7ULP_CLK_CORE_DIV] = imx_clk_hw_divider_flags("divcore", "scs_sel", base + 0x14, 16, 4, CLK_SET_RATE_PARENT);
124+
hws[IMX7ULP_CLK_CORE] = imx_clk_hw_cpu("core", "divcore", hws[IMX7ULP_CLK_CORE_DIV]->clk, hws[IMX7ULP_CLK_SYS_SEL]->clk, hws[IMX7ULP_CLK_SPLL_SEL]->clk, hws[IMX7ULP_CLK_FIRC]->clk);
124125
hws[IMX7ULP_CLK_HSRUN_CORE_DIV] = imx_clk_hw_divider_flags("hsrun_divcore", "hsrun_scs_sel", base + 0x1c, 16, 4, CLK_SET_RATE_PARENT);
126+
hws[IMX7ULP_CLK_HSRUN_CORE] = imx_clk_hw_cpu("hsrun_core", "hsrun_divcore", hws[IMX7ULP_CLK_HSRUN_CORE_DIV]->clk, hws[IMX7ULP_CLK_HSRUN_SYS_SEL]->clk, hws[IMX7ULP_CLK_SPLL_SEL]->clk, hws[IMX7ULP_CLK_FIRC]->clk);
125127

126128
hws[IMX7ULP_CLK_DDR_DIV] = imx_clk_hw_divider_gate("ddr_clk", "ddr_sel", CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, base + 0x30, 0, 3,
127129
0, ulp_div_table, &imx_ccm_lock);
@@ -270,7 +272,7 @@ static void __init imx7ulp_clk_smc1_init(struct device_node *np)
270272
base = of_iomap(np, 0);
271273
WARN_ON(!base);
272274

273-
hws[IMX7ULP_CLK_ARM] = imx_clk_hw_mux_flags("arm", base + 0x10, 8, 2, arm_sels, ARRAY_SIZE(arm_sels), CLK_IS_CRITICAL);
275+
hws[IMX7ULP_CLK_ARM] = imx_clk_hw_mux_flags("arm", base + 0x10, 8, 2, arm_sels, ARRAY_SIZE(arm_sels), CLK_SET_RATE_PARENT);
274276

275277
imx_check_clk_hws(hws, clk_data->num);
276278

drivers/clk/imx/clk-imx8mm.c

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -416,9 +416,9 @@ static int imx8mm_clocks_probe(struct platform_device *pdev)
416416
return PTR_ERR(base);
417417

418418
/* Core Slice */
419-
hws[IMX8MM_CLK_A53_SRC] = imx_clk_hw_mux2("arm_a53_src", base + 0x8000, 24, 3, imx8mm_a53_sels, ARRAY_SIZE(imx8mm_a53_sels));
420-
hws[IMX8MM_CLK_A53_CG] = imx_clk_hw_gate3("arm_a53_cg", "arm_a53_src", base + 0x8000, 28);
421-
hws[IMX8MM_CLK_A53_DIV] = imx_clk_hw_divider2("arm_a53_div", "arm_a53_cg", base + 0x8000, 0, 3);
419+
hws[IMX8MM_CLK_A53_DIV] = imx8m_clk_hw_composite_core("arm_a53_div", imx8mm_a53_sels, base + 0x8000);
420+
hws[IMX8MM_CLK_A53_CG] = hws[IMX8MM_CLK_A53_DIV];
421+
hws[IMX8MM_CLK_A53_SRC] = hws[IMX8MM_CLK_A53_DIV];
422422

423423
hws[IMX8MM_CLK_M4_CORE] = imx8m_clk_hw_composite_core("arm_m4_core", imx8mm_m4_sels, base + 0x8080);
424424
hws[IMX8MM_CLK_VPU_CORE] = imx8m_clk_hw_composite_core("vpu_core", imx8mm_vpu_sels, base + 0x8100);
@@ -444,21 +444,21 @@ static int imx8mm_clocks_probe(struct platform_device *pdev)
444444

445445
/* BUS */
446446
hws[IMX8MM_CLK_MAIN_AXI] = imx8m_clk_hw_composite_critical("main_axi", imx8mm_main_axi_sels, base + 0x8800);
447-
hws[IMX8MM_CLK_ENET_AXI] = imx8m_clk_hw_composite("enet_axi", imx8mm_enet_axi_sels, base + 0x8880);
447+
hws[IMX8MM_CLK_ENET_AXI] = imx8m_clk_hw_composite_bus("enet_axi", imx8mm_enet_axi_sels, base + 0x8880);
448448
hws[IMX8MM_CLK_NAND_USDHC_BUS] = imx8m_clk_hw_composite_critical("nand_usdhc_bus", imx8mm_nand_usdhc_sels, base + 0x8900);
449-
hws[IMX8MM_CLK_VPU_BUS] = imx8m_clk_hw_composite("vpu_bus", imx8mm_vpu_bus_sels, base + 0x8980);
450-
hws[IMX8MM_CLK_DISP_AXI] = imx8m_clk_hw_composite("disp_axi", imx8mm_disp_axi_sels, base + 0x8a00);
451-
hws[IMX8MM_CLK_DISP_APB] = imx8m_clk_hw_composite("disp_apb", imx8mm_disp_apb_sels, base + 0x8a80);
452-
hws[IMX8MM_CLK_DISP_RTRM] = imx8m_clk_hw_composite("disp_rtrm", imx8mm_disp_rtrm_sels, base + 0x8b00);
453-
hws[IMX8MM_CLK_USB_BUS] = imx8m_clk_hw_composite("usb_bus", imx8mm_usb_bus_sels, base + 0x8b80);
454-
hws[IMX8MM_CLK_GPU_AXI] = imx8m_clk_hw_composite("gpu_axi", imx8mm_gpu_axi_sels, base + 0x8c00);
455-
hws[IMX8MM_CLK_GPU_AHB] = imx8m_clk_hw_composite("gpu_ahb", imx8mm_gpu_ahb_sels, base + 0x8c80);
449+
hws[IMX8MM_CLK_VPU_BUS] = imx8m_clk_hw_composite_bus("vpu_bus", imx8mm_vpu_bus_sels, base + 0x8980);
450+
hws[IMX8MM_CLK_DISP_AXI] = imx8m_clk_hw_composite_bus("disp_axi", imx8mm_disp_axi_sels, base + 0x8a00);
451+
hws[IMX8MM_CLK_DISP_APB] = imx8m_clk_hw_composite_bus("disp_apb", imx8mm_disp_apb_sels, base + 0x8a80);
452+
hws[IMX8MM_CLK_DISP_RTRM] = imx8m_clk_hw_composite_bus("disp_rtrm", imx8mm_disp_rtrm_sels, base + 0x8b00);
453+
hws[IMX8MM_CLK_USB_BUS] = imx8m_clk_hw_composite_bus("usb_bus", imx8mm_usb_bus_sels, base + 0x8b80);
454+
hws[IMX8MM_CLK_GPU_AXI] = imx8m_clk_hw_composite_bus("gpu_axi", imx8mm_gpu_axi_sels, base + 0x8c00);
455+
hws[IMX8MM_CLK_GPU_AHB] = imx8m_clk_hw_composite_bus("gpu_ahb", imx8mm_gpu_ahb_sels, base + 0x8c80);
456456
hws[IMX8MM_CLK_NOC] = imx8m_clk_hw_composite_critical("noc", imx8mm_noc_sels, base + 0x8d00);
457457
hws[IMX8MM_CLK_NOC_APB] = imx8m_clk_hw_composite_critical("noc_apb", imx8mm_noc_apb_sels, base + 0x8d80);
458458

459459
/* AHB */
460460
hws[IMX8MM_CLK_AHB] = imx8m_clk_hw_composite_critical("ahb", imx8mm_ahb_sels, base + 0x9000);
461-
hws[IMX8MM_CLK_AUDIO_AHB] = imx8m_clk_hw_composite("audio_ahb", imx8mm_audio_ahb_sels, base + 0x9100);
461+
hws[IMX8MM_CLK_AUDIO_AHB] = imx8m_clk_hw_composite_bus("audio_ahb", imx8mm_audio_ahb_sels, base + 0x9100);
462462

463463
/* IPG */
464464
hws[IMX8MM_CLK_IPG_ROOT] = imx_clk_hw_divider2("ipg_root", "ahb", base + 0x9080, 0, 1);
@@ -614,9 +614,6 @@ static int imx8mm_clocks_probe(struct platform_device *pdev)
614614
hws[IMX8MM_ARM_PLL_OUT]->clk,
615615
hws[IMX8MM_CLK_A53_DIV]->clk);
616616

617-
clk_hw_set_parent(hws[IMX8MM_CLK_A53_SRC], hws[IMX8MM_SYS_PLL1_800M]);
618-
clk_hw_set_parent(hws[IMX8MM_CLK_A53_CORE], hws[IMX8MM_ARM_PLL_OUT]);
619-
620617
imx_check_clk_hws(hws, IMX8MM_CLK_END);
621618

622619
ret = of_clk_add_hw_provider(np, of_clk_hw_onecell_get, clk_hw_data);

drivers/clk/imx/clk-imx8mn.c

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -413,9 +413,9 @@ static int imx8mn_clocks_probe(struct platform_device *pdev)
413413
}
414414

415415
/* CORE */
416-
hws[IMX8MN_CLK_A53_SRC] = imx_clk_hw_mux2("arm_a53_src", base + 0x8000, 24, 3, imx8mn_a53_sels, ARRAY_SIZE(imx8mn_a53_sels));
417-
hws[IMX8MN_CLK_A53_CG] = imx_clk_hw_gate3("arm_a53_cg", "arm_a53_src", base + 0x8000, 28);
418-
hws[IMX8MN_CLK_A53_DIV] = imx_clk_hw_divider2("arm_a53_div", "arm_a53_cg", base + 0x8000, 0, 3);
416+
hws[IMX8MN_CLK_A53_DIV] = imx8m_clk_hw_composite_core("arm_a53_div", imx8mn_a53_sels, base + 0x8000);
417+
hws[IMX8MN_CLK_A53_SRC] = hws[IMX8MN_CLK_A53_DIV];
418+
hws[IMX8MN_CLK_A53_CG] = hws[IMX8MN_CLK_A53_DIV];
419419

420420
hws[IMX8MN_CLK_GPU_CORE] = imx8m_clk_hw_composite_core("gpu_core", imx8mn_gpu_core_sels, base + 0x8180);
421421
hws[IMX8MN_CLK_GPU_SHADER] = imx8m_clk_hw_composite_core("gpu_shader", imx8mn_gpu_shader_sels, base + 0x8200);
@@ -432,17 +432,17 @@ static int imx8mn_clocks_probe(struct platform_device *pdev)
432432

433433
/* BUS */
434434
hws[IMX8MN_CLK_MAIN_AXI] = imx8m_clk_hw_composite_critical("main_axi", imx8mn_main_axi_sels, base + 0x8800);
435-
hws[IMX8MN_CLK_ENET_AXI] = imx8m_clk_hw_composite("enet_axi", imx8mn_enet_axi_sels, base + 0x8880);
436-
hws[IMX8MN_CLK_NAND_USDHC_BUS] = imx8m_clk_hw_composite("nand_usdhc_bus", imx8mn_nand_usdhc_sels, base + 0x8900);
437-
hws[IMX8MN_CLK_DISP_AXI] = imx8m_clk_hw_composite("disp_axi", imx8mn_disp_axi_sels, base + 0x8a00);
438-
hws[IMX8MN_CLK_DISP_APB] = imx8m_clk_hw_composite("disp_apb", imx8mn_disp_apb_sels, base + 0x8a80);
439-
hws[IMX8MN_CLK_USB_BUS] = imx8m_clk_hw_composite("usb_bus", imx8mn_usb_bus_sels, base + 0x8b80);
440-
hws[IMX8MN_CLK_GPU_AXI] = imx8m_clk_hw_composite("gpu_axi", imx8mn_gpu_axi_sels, base + 0x8c00);
441-
hws[IMX8MN_CLK_GPU_AHB] = imx8m_clk_hw_composite("gpu_ahb", imx8mn_gpu_ahb_sels, base + 0x8c80);
435+
hws[IMX8MN_CLK_ENET_AXI] = imx8m_clk_hw_composite_bus("enet_axi", imx8mn_enet_axi_sels, base + 0x8880);
436+
hws[IMX8MN_CLK_NAND_USDHC_BUS] = imx8m_clk_hw_composite_bus("nand_usdhc_bus", imx8mn_nand_usdhc_sels, base + 0x8900);
437+
hws[IMX8MN_CLK_DISP_AXI] = imx8m_clk_hw_composite_bus("disp_axi", imx8mn_disp_axi_sels, base + 0x8a00);
438+
hws[IMX8MN_CLK_DISP_APB] = imx8m_clk_hw_composite_bus("disp_apb", imx8mn_disp_apb_sels, base + 0x8a80);
439+
hws[IMX8MN_CLK_USB_BUS] = imx8m_clk_hw_composite_bus("usb_bus", imx8mn_usb_bus_sels, base + 0x8b80);
440+
hws[IMX8MN_CLK_GPU_AXI] = imx8m_clk_hw_composite_bus("gpu_axi", imx8mn_gpu_axi_sels, base + 0x8c00);
441+
hws[IMX8MN_CLK_GPU_AHB] = imx8m_clk_hw_composite_bus("gpu_ahb", imx8mn_gpu_ahb_sels, base + 0x8c80);
442442
hws[IMX8MN_CLK_NOC] = imx8m_clk_hw_composite_critical("noc", imx8mn_noc_sels, base + 0x8d00);
443443

444444
hws[IMX8MN_CLK_AHB] = imx8m_clk_hw_composite_critical("ahb", imx8mn_ahb_sels, base + 0x9000);
445-
hws[IMX8MN_CLK_AUDIO_AHB] = imx8m_clk_hw_composite("audio_ahb", imx8mn_audio_ahb_sels, base + 0x9100);
445+
hws[IMX8MN_CLK_AUDIO_AHB] = imx8m_clk_hw_composite_bus("audio_ahb", imx8mn_audio_ahb_sels, base + 0x9100);
446446
hws[IMX8MN_CLK_IPG_ROOT] = imx_clk_hw_divider2("ipg_root", "ahb", base + 0x9080, 0, 1);
447447
hws[IMX8MN_CLK_IPG_AUDIO_ROOT] = imx_clk_hw_divider2("ipg_audio_root", "audio_ahb", base + 0x9180, 0, 1);
448448
hws[IMX8MN_CLK_DRAM_CORE] = imx_clk_hw_mux2_flags("dram_core_clk", base + 0x9800, 24, 1, imx8mn_dram_core_sels, ARRAY_SIZE(imx8mn_dram_core_sels), CLK_IS_CRITICAL);
@@ -565,9 +565,6 @@ static int imx8mn_clocks_probe(struct platform_device *pdev)
565565
hws[IMX8MN_ARM_PLL_OUT]->clk,
566566
hws[IMX8MN_CLK_A53_DIV]->clk);
567567

568-
clk_hw_set_parent(hws[IMX8MN_CLK_A53_SRC], hws[IMX8MN_SYS_PLL1_800M]);
569-
clk_hw_set_parent(hws[IMX8MN_CLK_A53_CORE], hws[IMX8MN_ARM_PLL_OUT]);
570-
571568
imx_check_clk_hws(hws, IMX8MN_CLK_END);
572569

573570
ret = of_clk_add_hw_provider(np, of_clk_hw_onecell_get, clk_hw_data);

0 commit comments

Comments
 (0)