OSDN Git Service

clk: introduce (devm_)hw_register_mux_parent_data_table API
authorChristian Marangi <ansuelsmth@gmail.com>
Wed, 14 Sep 2022 14:47:42 +0000 (16:47 +0200)
committerStephen Boyd <sboyd@kernel.org>
Tue, 4 Oct 2022 03:49:33 +0000 (20:49 -0700)
Introduce (devm_)hw_register_mux_parent_data_table new API. We have
basic support for clk_register_mux using parent_data but we lack any API
to provide a custom parent_map. Add these 2 new API to correctly handle
these special configuration instead of using the generic
__(devm_)clk_hw_register_mux API.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Link: https://lore.kernel.org/r/20220914144743.17369-1-ansuelsmth@gmail.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
include/linux/clk-provider.h

index 1615010..65b70f0 100644 (file)
@@ -974,6 +974,13 @@ struct clk *clk_register_mux_table(struct device *dev, const char *name,
        __clk_hw_register_mux((dev), NULL, (name), (num_parents), NULL, NULL, \
                              (parent_data), (flags), (reg), (shift),         \
                              BIT((width)) - 1, (clk_mux_flags), NULL, (lock))
+#define clk_hw_register_mux_parent_data_table(dev, name, parent_data,        \
+                                             num_parents, flags, reg, shift, \
+                                             width, clk_mux_flags, table,    \
+                                             lock)                           \
+       __clk_hw_register_mux((dev), NULL, (name), (num_parents), NULL, NULL, \
+                             (parent_data), (flags), (reg), (shift),         \
+                             BIT((width)) - 1, (clk_mux_flags), table, (lock))
 #define devm_clk_hw_register_mux(dev, name, parent_names, num_parents, flags, reg, \
                            shift, width, clk_mux_flags, lock)                \
        __devm_clk_hw_register_mux((dev), NULL, (name), (num_parents),        \
@@ -987,6 +994,13 @@ struct clk *clk_register_mux_table(struct device *dev, const char *name,
                                   (parent_hws), NULL, (flags), (reg),        \
                                   (shift), BIT((width)) - 1,                 \
                                   (clk_mux_flags), NULL, (lock))
+#define devm_clk_hw_register_mux_parent_data_table(dev, name, parent_data,    \
+                                             num_parents, flags, reg, shift, \
+                                             width, clk_mux_flags, table,    \
+                                             lock)                           \
+       __devm_clk_hw_register_mux((dev), NULL, (name), (num_parents), NULL,  \
+                             NULL, (parent_data), (flags), (reg), (shift),   \
+                             BIT((width)) - 1, (clk_mux_flags), table, (lock))
 
 int clk_mux_val_to_index(struct clk_hw *hw, const u32 *table, unsigned int flags,
                         unsigned int val);