Skip to content

Commit dd8cbf4

Browse files
committed
Merge tag 'clk-imx-6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/abelvesa/linux into clk-imx
Pull i.MX clk driver updates from Abel Vesa: - Document the compatible for i.MX95 HSIO BLK CTRL - Add the HSIO BLK CTRL provider to the i.MX95 driver - Moved the CLK_END macro from bindings to driver for i.MX93 - Add support for i.MX91 CCM to the i.MX93 driver - Add workaround as a fix for errata e10858 to the lpcg-scu driver - Fix PLL initialization and power up for i.MX93 in fracn-gppll clock type - Fix clock enable state save/restore in clk-scu clock implementation - Skip HDMI LPCG clocks save/restore in lpcg-scu clock implementation - Fix return value check on PM domains attach in imx8-acm driver * tag 'clk-imx-6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/abelvesa/linux: clk: imx: imx8-acm: Fix return value check in clk_imx_acm_attach_pm_domains() clk: imx: lpcg-scu: Skip HDMI LPCG clock save/restore clk: imx: clk-scu: fix clk enable state save and restore clk: imx: fracn-gppll: fix pll power up clk: imx: fracn-gppll: correct PLL initialization flow clk: imx: lpcg-scu: SW workaround for errata (e10858) clk: imx: add i.MX91 clk dt-bindings: clock: Add i.MX91 clock support dt-bindings: clock: imx93: Drop IMX93_CLK_END macro definition clk: imx93: Move IMX93_CLK_END macro to clk driver clk: imx95-blk-ctl: Add one clock gate for HSIO block dt-bindings: clock: nxp,imx95-blk-ctl: Add compatible string for i.MX95 HSIO BLK CTRL
2 parents 9852d85 + 81a206d commit dd8cbf4

File tree

9 files changed

+113
-39
lines changed

9 files changed

+113
-39
lines changed

Documentation/devicetree/bindings/clock/imx93-clock.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ description: |
1616
properties:
1717
compatible:
1818
enum:
19+
- fsl,imx91-ccm
1920
- fsl,imx93-ccm
2021

2122
reg:

Documentation/devicetree/bindings/clock/nxp,imx95-blk-ctl.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ properties:
1313
compatible:
1414
items:
1515
- enum:
16-
- nxp,imx95-lvds-csr
17-
- nxp,imx95-display-csr
1816
- nxp,imx95-camera-csr
17+
- nxp,imx95-display-csr
18+
- nxp,imx95-hsio-blk-ctl
19+
- nxp,imx95-lvds-csr
1920
- nxp,imx95-netcmix-blk-ctrl
2021
- nxp,imx95-vpu-csr
2122
- const: syscon

drivers/clk/imx/clk-fracn-gppll.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,11 @@ static int clk_fracn_gppll_set_rate(struct clk_hw *hw, unsigned long drate,
254254
pll_div = FIELD_PREP(PLL_RDIV_MASK, rate->rdiv) | rate->odiv |
255255
FIELD_PREP(PLL_MFI_MASK, rate->mfi);
256256
writel_relaxed(pll_div, pll->base + PLL_DIV);
257+
readl(pll->base + PLL_DIV);
257258
if (pll->flags & CLK_FRACN_GPPLL_FRACN) {
258259
writel_relaxed(rate->mfd, pll->base + PLL_DENOMINATOR);
259260
writel_relaxed(FIELD_PREP(PLL_MFN_MASK, rate->mfn), pll->base + PLL_NUMERATOR);
261+
readl(pll->base + PLL_NUMERATOR);
260262
}
261263

262264
/* Wait for 5us according to fracn mode pll doc */
@@ -265,6 +267,7 @@ static int clk_fracn_gppll_set_rate(struct clk_hw *hw, unsigned long drate,
265267
/* Enable Powerup */
266268
tmp |= POWERUP_MASK;
267269
writel_relaxed(tmp, pll->base + PLL_CTRL);
270+
readl(pll->base + PLL_CTRL);
268271

269272
/* Wait Lock */
270273
ret = clk_fracn_gppll_wait_lock(pll);
@@ -302,14 +305,15 @@ static int clk_fracn_gppll_prepare(struct clk_hw *hw)
302305

303306
val |= POWERUP_MASK;
304307
writel_relaxed(val, pll->base + PLL_CTRL);
305-
306-
val |= CLKMUX_EN;
307-
writel_relaxed(val, pll->base + PLL_CTRL);
308+
readl(pll->base + PLL_CTRL);
308309

309310
ret = clk_fracn_gppll_wait_lock(pll);
310311
if (ret)
311312
return ret;
312313

314+
val |= CLKMUX_EN;
315+
writel_relaxed(val, pll->base + PLL_CTRL);
316+
313317
val &= ~CLKMUX_BYPASS;
314318
writel_relaxed(val, pll->base + PLL_CTRL);
315319

drivers/clk/imx/clk-imx8-acm.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,9 +294,9 @@ static int clk_imx_acm_attach_pm_domains(struct device *dev,
294294
DL_FLAG_STATELESS |
295295
DL_FLAG_PM_RUNTIME |
296296
DL_FLAG_RPM_ACTIVE);
297-
if (IS_ERR(dev_pm->pd_dev_link[i])) {
297+
if (!dev_pm->pd_dev_link[i]) {
298298
dev_pm_domain_detach(dev_pm->pd_dev[i], false);
299-
ret = PTR_ERR(dev_pm->pd_dev_link[i]);
299+
ret = -EINVAL;
300300
goto detach_pm;
301301
}
302302
}

drivers/clk/imx/clk-imx93.c

Lines changed: 40 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515

1616
#include "clk.h"
1717

18+
#define IMX93_CLK_END 207
19+
20+
#define PLAT_IMX93 BIT(0)
21+
#define PLAT_IMX91 BIT(1)
22+
1823
enum clk_sel {
1924
LOW_SPEED_IO_SEL,
2025
NON_IO_SEL,
@@ -53,6 +58,7 @@ static const struct imx93_clk_root {
5358
u32 off;
5459
enum clk_sel sel;
5560
unsigned long flags;
61+
unsigned long plat;
5662
} root_array[] = {
5763
/* a55/m33/bus critical clk for system run */
5864
{ IMX93_CLK_A55_PERIPH, "a55_periph_root", 0x0000, FAST_SEL, CLK_IS_CRITICAL },
@@ -63,7 +69,7 @@ static const struct imx93_clk_root {
6369
{ IMX93_CLK_BUS_AON, "bus_aon_root", 0x0300, LOW_SPEED_IO_SEL, CLK_IS_CRITICAL },
6470
{ IMX93_CLK_WAKEUP_AXI, "wakeup_axi_root", 0x0380, FAST_SEL, CLK_IS_CRITICAL },
6571
{ IMX93_CLK_SWO_TRACE, "swo_trace_root", 0x0400, LOW_SPEED_IO_SEL, },
66-
{ IMX93_CLK_M33_SYSTICK, "m33_systick_root", 0x0480, LOW_SPEED_IO_SEL, },
72+
{ IMX93_CLK_M33_SYSTICK, "m33_systick_root", 0x0480, LOW_SPEED_IO_SEL, 0, PLAT_IMX93, },
6773
{ IMX93_CLK_FLEXIO1, "flexio1_root", 0x0500, LOW_SPEED_IO_SEL, },
6874
{ IMX93_CLK_FLEXIO2, "flexio2_root", 0x0580, LOW_SPEED_IO_SEL, },
6975
{ IMX93_CLK_LPTMR1, "lptmr1_root", 0x0700, LOW_SPEED_IO_SEL, },
@@ -120,15 +126,15 @@ static const struct imx93_clk_root {
120126
{ IMX93_CLK_HSIO_ACSCAN_80M, "hsio_acscan_80m_root", 0x1f80, LOW_SPEED_IO_SEL, },
121127
{ IMX93_CLK_HSIO_ACSCAN_480M, "hsio_acscan_480m_root", 0x2000, MISC_SEL, },
122128
{ IMX93_CLK_NIC_AXI, "nic_axi_root", 0x2080, FAST_SEL, CLK_IS_CRITICAL, },
123-
{ IMX93_CLK_ML_APB, "ml_apb_root", 0x2180, LOW_SPEED_IO_SEL, },
124-
{ IMX93_CLK_ML, "ml_root", 0x2200, FAST_SEL, },
129+
{ IMX93_CLK_ML_APB, "ml_apb_root", 0x2180, LOW_SPEED_IO_SEL, 0, PLAT_IMX93, },
130+
{ IMX93_CLK_ML, "ml_root", 0x2200, FAST_SEL, 0, PLAT_IMX93, },
125131
{ IMX93_CLK_MEDIA_AXI, "media_axi_root", 0x2280, FAST_SEL, },
126132
{ IMX93_CLK_MEDIA_APB, "media_apb_root", 0x2300, LOW_SPEED_IO_SEL, },
127-
{ IMX93_CLK_MEDIA_LDB, "media_ldb_root", 0x2380, VIDEO_SEL, },
133+
{ IMX93_CLK_MEDIA_LDB, "media_ldb_root", 0x2380, VIDEO_SEL, 0, PLAT_IMX93, },
128134
{ IMX93_CLK_MEDIA_DISP_PIX, "media_disp_pix_root", 0x2400, VIDEO_SEL, },
129135
{ IMX93_CLK_CAM_PIX, "cam_pix_root", 0x2480, VIDEO_SEL, },
130-
{ IMX93_CLK_MIPI_TEST_BYTE, "mipi_test_byte_root", 0x2500, VIDEO_SEL, },
131-
{ IMX93_CLK_MIPI_PHY_CFG, "mipi_phy_cfg_root", 0x2580, VIDEO_SEL, },
136+
{ IMX93_CLK_MIPI_TEST_BYTE, "mipi_test_byte_root", 0x2500, VIDEO_SEL, 0, PLAT_IMX93, },
137+
{ IMX93_CLK_MIPI_PHY_CFG, "mipi_phy_cfg_root", 0x2580, VIDEO_SEL, 0, PLAT_IMX93, },
132138
{ IMX93_CLK_ADC, "adc_root", 0x2700, LOW_SPEED_IO_SEL, },
133139
{ IMX93_CLK_PDM, "pdm_root", 0x2780, AUDIO_SEL, },
134140
{ IMX93_CLK_TSTMR1, "tstmr1_root", 0x2800, LOW_SPEED_IO_SEL, },
@@ -137,13 +143,16 @@ static const struct imx93_clk_root {
137143
{ IMX93_CLK_MQS2, "mqs2_root", 0x2980, AUDIO_SEL, },
138144
{ IMX93_CLK_AUDIO_XCVR, "audio_xcvr_root", 0x2a00, NON_IO_SEL, },
139145
{ IMX93_CLK_SPDIF, "spdif_root", 0x2a80, AUDIO_SEL, },
140-
{ IMX93_CLK_ENET, "enet_root", 0x2b00, NON_IO_SEL, },
141-
{ IMX93_CLK_ENET_TIMER1, "enet_timer1_root", 0x2b80, LOW_SPEED_IO_SEL, },
142-
{ IMX93_CLK_ENET_TIMER2, "enet_timer2_root", 0x2c00, LOW_SPEED_IO_SEL, },
143-
{ IMX93_CLK_ENET_REF, "enet_ref_root", 0x2c80, NON_IO_SEL, },
144-
{ IMX93_CLK_ENET_REF_PHY, "enet_ref_phy_root", 0x2d00, LOW_SPEED_IO_SEL, },
145-
{ IMX93_CLK_I3C1_SLOW, "i3c1_slow_root", 0x2d80, LOW_SPEED_IO_SEL, },
146-
{ IMX93_CLK_I3C2_SLOW, "i3c2_slow_root", 0x2e00, LOW_SPEED_IO_SEL, },
146+
{ IMX93_CLK_ENET, "enet_root", 0x2b00, NON_IO_SEL, 0, PLAT_IMX93, },
147+
{ IMX93_CLK_ENET_TIMER1, "enet_timer1_root", 0x2b80, LOW_SPEED_IO_SEL, 0, PLAT_IMX93, },
148+
{ IMX93_CLK_ENET_TIMER2, "enet_timer2_root", 0x2c00, LOW_SPEED_IO_SEL, 0, PLAT_IMX93, },
149+
{ IMX93_CLK_ENET_REF, "enet_ref_root", 0x2c80, NON_IO_SEL, 0, PLAT_IMX93, },
150+
{ IMX93_CLK_ENET_REF_PHY, "enet_ref_phy_root", 0x2d00, LOW_SPEED_IO_SEL, 0, PLAT_IMX93, },
151+
{ IMX91_CLK_ENET1_QOS_TSN, "enet1_qos_tsn_root", 0x2b00, NON_IO_SEL, 0, PLAT_IMX91, },
152+
{ IMX91_CLK_ENET_TIMER, "enet_timer_root", 0x2b80, LOW_SPEED_IO_SEL, 0, PLAT_IMX91, },
153+
{ IMX91_CLK_ENET2_REGULAR, "enet2_regular_root", 0x2c80, NON_IO_SEL, 0, PLAT_IMX91, },
154+
{ IMX93_CLK_I3C1_SLOW, "i3c1_slow_root", 0x2d80, LOW_SPEED_IO_SEL, 0, PLAT_IMX93, },
155+
{ IMX93_CLK_I3C2_SLOW, "i3c2_slow_root", 0x2e00, LOW_SPEED_IO_SEL, 0, PLAT_IMX93, },
147156
{ IMX93_CLK_USB_PHY_BURUNIN, "usb_phy_root", 0x2e80, LOW_SPEED_IO_SEL, },
148157
{ IMX93_CLK_PAL_CAME_SCAN, "pal_came_scan_root", 0x2f00, MISC_SEL, }
149158
};
@@ -155,6 +164,7 @@ static const struct imx93_clk_ccgr {
155164
u32 off;
156165
unsigned long flags;
157166
u32 *shared_count;
167+
unsigned long plat;
158168
} ccgr_array[] = {
159169
{ IMX93_CLK_A55_GATE, "a55_alt", "a55_alt_root", 0x8000, },
160170
/* M33 critical clk for system run */
@@ -244,8 +254,10 @@ static const struct imx93_clk_ccgr {
244254
{ IMX93_CLK_AUD_XCVR_GATE, "aud_xcvr", "audio_xcvr_root", 0x9b80, },
245255
{ IMX93_CLK_SPDIF_GATE, "spdif", "spdif_root", 0x9c00, },
246256
{ IMX93_CLK_HSIO_32K_GATE, "hsio_32k", "osc_32k", 0x9dc0, },
247-
{ IMX93_CLK_ENET1_GATE, "enet1", "wakeup_axi_root", 0x9e00, },
248-
{ IMX93_CLK_ENET_QOS_GATE, "enet_qos", "wakeup_axi_root", 0x9e40, },
257+
{ IMX93_CLK_ENET1_GATE, "enet1", "wakeup_axi_root", 0x9e00, 0, NULL, PLAT_IMX93, },
258+
{ IMX93_CLK_ENET_QOS_GATE, "enet_qos", "wakeup_axi_root", 0x9e40, 0, NULL, PLAT_IMX93, },
259+
{ IMX91_CLK_ENET2_REGULAR_GATE, "enet2_regular", "wakeup_axi_root", 0x9e00, 0, NULL, PLAT_IMX91, },
260+
{ IMX91_CLK_ENET1_QOS_TSN_GATE, "enet1_qos_tsn", "wakeup_axi_root", 0x9e40, 0, NULL, PLAT_IMX91, },
249261
/* Critical because clk accessed during CPU idle */
250262
{ IMX93_CLK_SYS_CNT_GATE, "sys_cnt", "osc_24m", 0x9e80, CLK_IS_CRITICAL},
251263
{ IMX93_CLK_TSTMR1_GATE, "tstmr1", "bus_aon_root", 0x9ec0, },
@@ -265,6 +277,7 @@ static int imx93_clocks_probe(struct platform_device *pdev)
265277
const struct imx93_clk_ccgr *ccgr;
266278
void __iomem *base, *anatop_base;
267279
int i, ret;
280+
const unsigned long plat = (unsigned long)device_get_match_data(&pdev->dev);
268281

269282
clk_hw_data = devm_kzalloc(dev, struct_size(clk_hw_data, hws,
270283
IMX93_CLK_END), GFP_KERNEL);
@@ -314,17 +327,20 @@ static int imx93_clocks_probe(struct platform_device *pdev)
314327

315328
for (i = 0; i < ARRAY_SIZE(root_array); i++) {
316329
root = &root_array[i];
317-
clks[root->clk] = imx93_clk_composite_flags(root->name,
318-
parent_names[root->sel],
319-
4, base + root->off, 3,
320-
root->flags);
330+
if (!root->plat || root->plat & plat)
331+
clks[root->clk] = imx93_clk_composite_flags(root->name,
332+
parent_names[root->sel],
333+
4, base + root->off, 3,
334+
root->flags);
321335
}
322336

323337
for (i = 0; i < ARRAY_SIZE(ccgr_array); i++) {
324338
ccgr = &ccgr_array[i];
325-
clks[ccgr->clk] = imx93_clk_gate(NULL, ccgr->name, ccgr->parent_name,
326-
ccgr->flags, base + ccgr->off, 0, 1, 1, 3,
327-
ccgr->shared_count);
339+
if (!ccgr->plat || ccgr->plat & plat)
340+
clks[ccgr->clk] = imx93_clk_gate(NULL,
341+
ccgr->name, ccgr->parent_name,
342+
ccgr->flags, base + ccgr->off, 0, 1, 1, 3,
343+
ccgr->shared_count);
328344
}
329345

330346
clks[IMX93_CLK_A55_SEL] = imx_clk_hw_mux2("a55_sel", base + 0x4820, 0, 1, a55_core_sels,
@@ -354,7 +370,8 @@ static int imx93_clocks_probe(struct platform_device *pdev)
354370
}
355371

356372
static const struct of_device_id imx93_clk_of_match[] = {
357-
{ .compatible = "fsl,imx93-ccm" },
373+
{ .compatible = "fsl,imx93-ccm", .data = (void *)PLAT_IMX93 },
374+
{ .compatible = "fsl,imx91-ccm", .data = (void *)PLAT_IMX91 },
358375
{ /* Sentinel */ },
359376
};
360377
MODULE_DEVICE_TABLE(of, imx93_clk_of_match);

drivers/clk/imx/clk-imx95-blk-ctl.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,25 @@ static const struct imx95_blk_ctl_dev_data netcmix_dev_data = {
277277
.clk_reg_offset = 0,
278278
};
279279

280+
static const struct imx95_blk_ctl_clk_dev_data hsio_blk_ctl_clk_dev_data[] = {
281+
[0] = {
282+
.name = "hsio_blk_ctl_clk",
283+
.parent_names = (const char *[]){ "hsio_pll", },
284+
.num_parents = 1,
285+
.reg = 0,
286+
.bit_idx = 6,
287+
.bit_width = 1,
288+
.type = CLK_GATE,
289+
.flags = CLK_SET_RATE_PARENT,
290+
}
291+
};
292+
293+
static const struct imx95_blk_ctl_dev_data hsio_blk_ctl_dev_data = {
294+
.num_clks = 1,
295+
.clk_dev_data = hsio_blk_ctl_clk_dev_data,
296+
.clk_reg_offset = 0,
297+
};
298+
280299
static int imx95_bc_probe(struct platform_device *pdev)
281300
{
282301
struct device *dev = &pdev->dev;
@@ -447,6 +466,7 @@ static const struct of_device_id imx95_bc_of_match[] = {
447466
{ .compatible = "nxp,imx95-display-master-csr", },
448467
{ .compatible = "nxp,imx95-lvds-csr", .data = &lvds_csr_dev_data },
449468
{ .compatible = "nxp,imx95-display-csr", .data = &dispmix_csr_dev_data },
469+
{ .compatible = "nxp,imx95-hsio-blk-ctl", .data = &hsio_blk_ctl_dev_data },
450470
{ .compatible = "nxp,imx95-vpu-csr", .data = &vpublk_dev_data },
451471
{ .compatible = "nxp,imx95-netcmix-blk-ctrl", .data = &netcmix_dev_data},
452472
{ /* Sentinel */ },

drivers/clk/imx/clk-lpcg-scu.c

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66

77
#include <linux/bits.h>
88
#include <linux/clk-provider.h>
9+
#include <linux/delay.h>
910
#include <linux/err.h>
1011
#include <linux/io.h>
1112
#include <linux/slab.h>
1213
#include <linux/spinlock.h>
14+
#include <linux/units.h>
1315

1416
#include "clk-scu.h"
1517

@@ -41,6 +43,29 @@ struct clk_lpcg_scu {
4143

4244
#define to_clk_lpcg_scu(_hw) container_of(_hw, struct clk_lpcg_scu, hw)
4345

46+
/* e10858 -LPCG clock gating register synchronization errata */
47+
static void lpcg_e10858_writel(unsigned long rate, void __iomem *reg, u32 val)
48+
{
49+
writel(val, reg);
50+
51+
if (rate >= 24 * HZ_PER_MHZ || rate == 0) {
52+
/*
53+
* The time taken to access the LPCG registers from the AP core
54+
* through the interconnect is longer than the minimum delay
55+
* of 4 clock cycles required by the errata.
56+
* Adding a readl will provide sufficient delay to prevent
57+
* back-to-back writes.
58+
*/
59+
readl(reg);
60+
} else {
61+
/*
62+
* For clocks running below 24MHz, wait a minimum of
63+
* 4 clock cycles.
64+
*/
65+
ndelay(4 * (DIV_ROUND_UP(1000 * HZ_PER_MHZ, rate)));
66+
}
67+
}
68+
4469
static int clk_lpcg_scu_enable(struct clk_hw *hw)
4570
{
4671
struct clk_lpcg_scu *clk = to_clk_lpcg_scu(hw);
@@ -57,7 +82,8 @@ static int clk_lpcg_scu_enable(struct clk_hw *hw)
5782
val |= CLK_GATE_SCU_LPCG_HW_SEL;
5883

5984
reg |= val << clk->bit_idx;
60-
writel(reg, clk->reg);
85+
86+
lpcg_e10858_writel(clk_hw_get_rate(hw), clk->reg, reg);
6187

6288
spin_unlock_irqrestore(&imx_lpcg_scu_lock, flags);
6389

@@ -74,7 +100,7 @@ static void clk_lpcg_scu_disable(struct clk_hw *hw)
74100

75101
reg = readl_relaxed(clk->reg);
76102
reg &= ~(CLK_GATE_SCU_LPCG_MASK << clk->bit_idx);
77-
writel(reg, clk->reg);
103+
lpcg_e10858_writel(clk_hw_get_rate(hw), clk->reg, reg);
78104

79105
spin_unlock_irqrestore(&imx_lpcg_scu_lock, flags);
80106
}
@@ -135,6 +161,9 @@ static int __maybe_unused imx_clk_lpcg_scu_suspend(struct device *dev)
135161
{
136162
struct clk_lpcg_scu *clk = dev_get_drvdata(dev);
137163

164+
if (!strncmp("hdmi_lpcg", clk_hw_get_name(&clk->hw), strlen("hdmi_lpcg")))
165+
return 0;
166+
138167
clk->state = readl_relaxed(clk->reg);
139168
dev_dbg(dev, "save lpcg state 0x%x\n", clk->state);
140169

@@ -145,13 +174,11 @@ static int __maybe_unused imx_clk_lpcg_scu_resume(struct device *dev)
145174
{
146175
struct clk_lpcg_scu *clk = dev_get_drvdata(dev);
147176

148-
/*
149-
* FIXME: Sometimes writes don't work unless the CPU issues
150-
* them twice
151-
*/
177+
if (!strncmp("hdmi_lpcg", clk_hw_get_name(&clk->hw), strlen("hdmi_lpcg")))
178+
return 0;
152179

153180
writel(clk->state, clk->reg);
154-
writel(clk->state, clk->reg);
181+
lpcg_e10858_writel(0, clk->reg, clk->state);
155182
dev_dbg(dev, "restore lpcg state 0x%x\n", clk->state);
156183

157184
return 0;

drivers/clk/imx/clk-scu.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,7 @@ static int __maybe_unused imx_clk_scu_suspend(struct device *dev)
596596
clk->rate = clk_scu_recalc_rate(&clk->hw, 0);
597597
else
598598
clk->rate = clk_hw_get_rate(&clk->hw);
599-
clk->is_enabled = clk_hw_is_enabled(&clk->hw);
599+
clk->is_enabled = clk_hw_is_prepared(&clk->hw);
600600

601601
if (clk->parent)
602602
dev_dbg(dev, "save parent %s idx %u\n", clk_hw_get_name(clk->parent),

include/dt-bindings/clock/imx93-clock.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,10 @@
204204
#define IMX93_CLK_A55_SEL 199
205205
#define IMX93_CLK_A55_CORE 200
206206
#define IMX93_CLK_PDM_IPG 201
207-
#define IMX93_CLK_END 202
207+
#define IMX91_CLK_ENET1_QOS_TSN 202
208+
#define IMX91_CLK_ENET_TIMER 203
209+
#define IMX91_CLK_ENET2_REGULAR 204
210+
#define IMX91_CLK_ENET2_REGULAR_GATE 205
211+
#define IMX91_CLK_ENET1_QOS_TSN_GATE 206
208212

209213
#endif

0 commit comments

Comments
 (0)