Lines Matching defs:clkdiv

24 struct clkdiv {
33 static inline struct clkdiv *to_clkdiv(struct clk_hw *hw)
35 return container_of(hw, struct clkdiv, hw);
51 static bool is_spmi_pmic_clkdiv_enabled(struct clkdiv *clkdiv)
55 regmap_read(clkdiv->regmap, clkdiv->base + REG_EN_CTL, &val);
61 __spmi_pmic_clkdiv_set_enable_state(struct clkdiv *clkdiv, bool enable,
65 unsigned int ns = clkdiv->cxo_period_ns;
68 ret = regmap_update_bits(clkdiv->regmap, clkdiv->base + REG_EN_CTL,
81 static int spmi_pmic_clkdiv_set_enable_state(struct clkdiv *clkdiv, bool enable)
85 regmap_read(clkdiv->regmap, clkdiv->base + REG_DIV_CTL1, &div_factor);
88 return __spmi_pmic_clkdiv_set_enable_state(clkdiv, enable, div_factor);
93 struct clkdiv *clkdiv = to_clkdiv(hw);
97 spin_lock_irqsave(&clkdiv->lock, flags);
98 ret = spmi_pmic_clkdiv_set_enable_state(clkdiv, true);
99 spin_unlock_irqrestore(&clkdiv->lock, flags);
106 struct clkdiv *clkdiv = to_clkdiv(hw);
109 spin_lock_irqsave(&clkdiv->lock, flags);
110 spmi_pmic_clkdiv_set_enable_state(clkdiv, false);
111 spin_unlock_irqrestore(&clkdiv->lock, flags);
129 struct clkdiv *clkdiv = to_clkdiv(hw);
132 regmap_read(clkdiv->regmap, clkdiv->base + REG_DIV_CTL1, &div_factor);
141 struct clkdiv *clkdiv = to_clkdiv(hw);
147 spin_lock_irqsave(&clkdiv->lock, flags);
148 enabled = is_spmi_pmic_clkdiv_enabled(clkdiv);
150 ret = spmi_pmic_clkdiv_set_enable_state(clkdiv, false);
155 ret = regmap_update_bits(clkdiv->regmap, clkdiv->base + REG_DIV_CTL1,
161 ret = __spmi_pmic_clkdiv_set_enable_state(clkdiv, true,
165 spin_unlock_irqrestore(&clkdiv->lock, flags);
180 struct clkdiv clks[] __counted_by(nclks);
202 struct clkdiv *clkdiv;
254 for (i = 0, clkdiv = cc->clks; i < nclks; i++) {
257 spin_lock_init(&clkdiv[i].lock);
258 clkdiv[i].base = start + i * 0x100;
259 clkdiv[i].regmap = regmap;
260 clkdiv[i].cxo_period_ns = NSEC_PER_SEC / cxo_hz;
261 clkdiv[i].hw.init = &init;
263 ret = devm_clk_hw_register(dev, &clkdiv[i].hw);
272 { .compatible = "qcom,spmi-clkdiv" },
279 .name = "qcom,spmi-pmic-clkdiv",
286 MODULE_DESCRIPTION("QCOM SPMI PMIC clkdiv driver");