Lines Matching +full:reg +full:- +full:init
1 // SPDX-License-Identifier: GPL-2.0+
8 #include <linux/clk-provider.h>
16 #include "clk-scu.h"
25 * struct clk_lpcg_scu - Description of LPCG clock
28 * @reg: register of this LPCG clock
36 void __iomem *reg; member
46 /* e10858 -LPCG clock gating register synchronization errata */
47 static void lpcg_e10858_writel(unsigned long rate, void __iomem *reg, u32 val) in lpcg_e10858_writel() argument
49 writel(val, reg); in lpcg_e10858_writel()
57 * back-to-back writes. in lpcg_e10858_writel()
59 readl(reg); in lpcg_e10858_writel()
73 u32 reg, val; in clk_lpcg_scu_enable() local
77 reg = readl_relaxed(clk->reg); in clk_lpcg_scu_enable()
78 reg &= ~(CLK_GATE_SCU_LPCG_MASK << clk->bit_idx); in clk_lpcg_scu_enable()
81 if (clk->hw_gate) in clk_lpcg_scu_enable()
84 reg |= val << clk->bit_idx; in clk_lpcg_scu_enable()
86 lpcg_e10858_writel(clk_hw_get_rate(hw), clk->reg, reg); in clk_lpcg_scu_enable()
97 u32 reg; in clk_lpcg_scu_disable() local
101 reg = readl_relaxed(clk->reg); in clk_lpcg_scu_disable()
102 reg &= ~(CLK_GATE_SCU_LPCG_MASK << clk->bit_idx); in clk_lpcg_scu_disable()
103 lpcg_e10858_writel(clk_hw_get_rate(hw), clk->reg, reg); in clk_lpcg_scu_disable()
115 void __iomem *reg, u8 bit_idx, bool hw_gate) in __imx_clk_lpcg_scu() argument
118 struct clk_init_data init; in __imx_clk_lpcg_scu() local
124 return ERR_PTR(-ENOMEM); in __imx_clk_lpcg_scu()
126 clk->reg = reg; in __imx_clk_lpcg_scu()
127 clk->bit_idx = bit_idx; in __imx_clk_lpcg_scu()
128 clk->hw_gate = hw_gate; in __imx_clk_lpcg_scu()
130 init.name = name; in __imx_clk_lpcg_scu()
131 init.ops = &clk_lpcg_scu_ops; in __imx_clk_lpcg_scu()
132 init.flags = CLK_SET_RATE_PARENT | flags; in __imx_clk_lpcg_scu()
133 init.parent_names = parent_name ? &parent_name : NULL; in __imx_clk_lpcg_scu()
134 init.num_parents = parent_name ? 1 : 0; in __imx_clk_lpcg_scu()
136 clk->hw.init = &init; in __imx_clk_lpcg_scu()
138 hw = &clk->hw; in __imx_clk_lpcg_scu()
156 clk_hw_unregister(&clk->hw); in imx_clk_lpcg_scu_unregister()
164 clk->state = readl_relaxed(clk->reg); in imx_clk_lpcg_scu_suspend()
165 dev_dbg(dev, "save lpcg state 0x%x\n", clk->state); in imx_clk_lpcg_scu_suspend()
174 writel(clk->state, clk->reg); in imx_clk_lpcg_scu_resume()
175 lpcg_e10858_writel(0, clk->reg, clk->state); in imx_clk_lpcg_scu_resume()
176 dev_dbg(dev, "restore lpcg state 0x%x\n", clk->state); in imx_clk_lpcg_scu_resume()