Message ID | 20230223171114.59164-1-marex@denx.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v4,1/5] clk: Introduce devm_clk_hw_register_gate_parent_data() | expand |
On Thu, Feb 23, 2023 at 11:12 AM Marek Vasut <marex@denx.de> wrote: > > Add an API for clock gate that uses parent_data for the parent instead of > a string parent_name. > For the series: Tested-by: Adam Ford <aford173@gmail.com> #imx8mp-beacon-kit adam > Signed-off-by: Marek Vasut <marex@denx.de> > --- > Cc: Abel Vesa <abelvesa@kernel.org> > 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: 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 > --- > 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); > -- > 2.39.1 >
Hi Marek, thanks for respinning this series. Am Donnerstag, 23. Februar 2023, 18:11:10 CET schrieb Marek Vasut: > Add an API for clock gate that uses parent_data for the parent instead of > a string parent_name. > > Signed-off-by: Marek Vasut <marex@denx.de> > --- > Cc: Abel Vesa <abelvesa@kernel.org> > 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: 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 > --- > 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); Is it worth to add the parent_data paremeter into existing devm_clk_hw_register_gate macro? Just adding this new macro for setting parent_data instead of parent_name seems a bit too much. What if someone wants to set parent_hw? Add another macro? Best regards, Alexander
On 2/27/23 09:38, Alexander Stein wrote: [...] >> +/** >> + * 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); > > Is it worth to add the parent_data paremeter into existing > devm_clk_hw_register_gate macro? Just adding this new macro for setting > parent_data instead of parent_name seems a bit too much. What if someone wants > to set parent_hw? Add another macro? Yes, another macro seems to be the accepted practice here.
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);
Add an API for clock gate that uses parent_data for the parent instead of a string parent_name. Signed-off-by: Marek Vasut <marex@denx.de> --- Cc: Abel Vesa <abelvesa@kernel.org> 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: 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 --- include/linux/clk-provider.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)