Message ID | 20230228215739.171071-1-marex@denx.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v6,1/5] clk: Introduce devm_clk_hw_register_gate_parent_data() | expand |
On 3/1/2023 5:57 AM, Marek Vasut wrote: > Add an API for clock gate that uses parent_data for the parent instead of > a string parent_name. > > Reviewed-by: Fabio Estevam <festevam@gmail.com> > Tested-by: Adam Ford <aford173@gmail.com> #imx8mp-beacon-kit > Tested-by: Alexander Stein <alexander.stein@ew.tq-group.com> > Signed-off-by: Marek Vasut <marex@denx.de> Reviewed-by: Peng Fan <peng.fan@nxp.com> > --- > Cc: Abel Vesa <abelvesa@kernel.org> > Cc: Alexander Stein <alexander.stein@ew.tq-group.com> > Cc: Fabio Estevam <festevam@gmail.com> > Cc: Jacky Bai <ping.bai@nxp.com> > Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org> > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > Cc: Luca Ceresoli <luca.ceresoli@bootlin.com> > Cc: Lucas Stach <l.stach@pengutronix.de> > Cc: Marco Felsch <m.felsch@pengutronix.de> > Cc: Michael Turquette <mturquette@baylibre.com> > Cc: NXP Linux Team <linux-imx@nxp.com> > Cc: Peng Fan <peng.fan@nxp.com> > Cc: Pengutronix Kernel Team <kernel@pengutronix.de> > Cc: Richard Cochran <richardcochran@gmail.com> > Cc: Rob Herring <robh+dt@kernel.org> > Cc: Sascha Hauer <s.hauer@pengutronix.de> > Cc: Shawn Guo <shawnguo@kernel.org> > Cc: Stephen Boyd <sboyd@kernel.org> > Cc: devicetree@vger.kernel.org > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-clk@vger.kernel.org > --- > V3: New patch > V4: - Rebase on next 20230223 > V5: Add TB from Adam and Alexander > V6: Add RB from Fabio > --- > include/linux/clk-provider.h | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h > index 842e72a5348fa..92b7c794c6272 100644 > --- a/include/linux/clk-provider.h > +++ b/include/linux/clk-provider.h > @@ -608,6 +608,25 @@ struct clk *clk_register_gate(struct device *dev, const char *name, > __devm_clk_hw_register_gate((dev), NULL, (name), (parent_name), NULL, \ > NULL, (flags), (reg), (bit_idx), \ > (clk_gate_flags), (lock)) > + > +/** > + * devm_clk_hw_register_gate - register a gate clock with the clock framework > + * @dev: device that is registering this clock > + * @name: name of this clock > + * @parent_data: parent clk data > + * @flags: framework-specific flags for this clock > + * @reg: register address to control gating of this clock > + * @bit_idx: which bit in the register controls gating of this clock > + * @clk_gate_flags: gate-specific flags for this clock > + * @lock: shared register lock for this clock > + */ > +#define devm_clk_hw_register_gate_parent_data(dev, name, parent_data, flags, \ > + reg, bit_idx, clk_gate_flags, \ > + lock) \ > + __devm_clk_hw_register_gate((dev), NULL, (name), NULL, NULL, \ > + (parent_data), (flags), (reg), (bit_idx), \ > + (clk_gate_flags), (lock)) > + > void clk_unregister_gate(struct clk *clk); > void clk_hw_unregister_gate(struct clk_hw *hw); > int clk_gate_is_enabled(struct clk_hw *hw);
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index 842e72a5348fa..92b7c794c6272 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h @@ -608,6 +608,25 @@ struct clk *clk_register_gate(struct device *dev, const char *name, __devm_clk_hw_register_gate((dev), NULL, (name), (parent_name), NULL, \ NULL, (flags), (reg), (bit_idx), \ (clk_gate_flags), (lock)) + +/** + * devm_clk_hw_register_gate - register a gate clock with the clock framework + * @dev: device that is registering this clock + * @name: name of this clock + * @parent_data: parent clk data + * @flags: framework-specific flags for this clock + * @reg: register address to control gating of this clock + * @bit_idx: which bit in the register controls gating of this clock + * @clk_gate_flags: gate-specific flags for this clock + * @lock: shared register lock for this clock + */ +#define devm_clk_hw_register_gate_parent_data(dev, name, parent_data, flags, \ + reg, bit_idx, clk_gate_flags, \ + lock) \ + __devm_clk_hw_register_gate((dev), NULL, (name), NULL, NULL, \ + (parent_data), (flags), (reg), (bit_idx), \ + (clk_gate_flags), (lock)) + void clk_unregister_gate(struct clk *clk); void clk_hw_unregister_gate(struct clk_hw *hw); int clk_gate_is_enabled(struct clk_hw *hw);