clk: imx: Add helpers for passing the device as argument
authorAbel Vesa <abel.vesa@nxp.com>
Wed, 15 Apr 2020 08:02:47 +0000 (11:02 +0300)
committerShawn Guo <shawnguo@kernel.org>
Wed, 29 Apr 2020 02:01:09 +0000 (10:01 +0800)
All the imx clocks that need to be registered by the audiomix need to
pass on the device so that the runtime PM support could work properly.

Signed-off-by: Abel Vesa <abel.vesa@nxp.com>
Reviewed-by: Stephen Boyd <sboyd@kernel.org>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
drivers/clk/imx/clk.h

index fcd9952..b91b1b1 100644 (file)
@@ -319,6 +319,13 @@ static inline struct clk_hw *imx_clk_hw_gate(const char *name, const char *paren
                                    shift, 0, &imx_ccm_lock);
 }
 
+static inline struct clk_hw *imx_dev_clk_hw_gate(struct device *dev, const char *name,
+                                               const char *parent, void __iomem *reg, u8 shift)
+{
+       return clk_hw_register_gate(dev, name, parent, CLK_SET_RATE_PARENT, reg,
+                                   shift, 0, &imx_ccm_lock);
+}
+
 static inline struct clk_hw *imx_clk_hw_gate_dis(const char *name, const char *parent,
                void __iomem *reg, u8 shift)
 {
@@ -431,6 +438,15 @@ static inline struct clk_hw *imx_clk_hw_mux(const char *name, void __iomem *reg,
                        width, 0, &imx_ccm_lock);
 }
 
+static inline struct clk_hw *imx_dev_clk_hw_mux(struct device *dev,
+                       const char *name, void __iomem *reg, u8 shift,
+                       u8 width, const char * const *parents, int num_parents)
+{
+       return clk_hw_register_mux(dev, name, parents, num_parents,
+                       CLK_SET_RATE_NO_REPARENT | CLK_SET_PARENT_GATE,
+                       reg, shift, width, 0, &imx_ccm_lock);
+}
+
 static inline struct clk *imx_clk_mux2(const char *name, void __iomem *reg,
                        u8 shift, u8 width, const char * const *parents,
                        int num_parents)
@@ -493,6 +509,19 @@ static inline struct clk_hw *imx_clk_hw_mux_flags(const char *name,
                                   reg, shift, width, 0, &imx_ccm_lock);
 }
 
+static inline struct clk_hw *imx_dev_clk_hw_mux_flags(struct device *dev,
+                                                 const char *name,
+                                                 void __iomem *reg, u8 shift,
+                                                 u8 width,
+                                                 const char * const *parents,
+                                                 int num_parents,
+                                                 unsigned long flags)
+{
+       return clk_hw_register_mux(dev, name, parents, num_parents,
+                                  flags | CLK_SET_RATE_NO_REPARENT,
+                                  reg, shift, width, 0, &imx_ccm_lock);
+}
+
 struct clk_hw *imx_clk_hw_cpu(const char *name, const char *parent_name,
                struct clk *div, struct clk *mux, struct clk *pll,
                struct clk *step);