clk: composite: add _register_composite_pdata() variants
Add support for the new way of specifying the clock parents. Add the two new functions clk_hw_register_composite_pdata() clk_register_composite_pdata() to let the driver provide parent_data instead of the parent_names. Signed-off-by: Michael Walle <michael@walle.cc> Link: https://lkml.kernel.org/r/20200102231101.11834-1-michael@walle.cc Signed-off-by: Stephen Boyd <sboyd@kernel.org>
This commit is contained in:
parent
e42617b825
commit
73ef657275
@ -199,8 +199,9 @@ static void clk_composite_disable(struct clk_hw *hw)
|
|||||||
gate_ops->disable(gate_hw);
|
gate_ops->disable(gate_hw);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct clk_hw *clk_hw_register_composite(struct device *dev, const char *name,
|
static struct clk_hw *__clk_hw_register_composite(struct device *dev,
|
||||||
const char * const *parent_names, int num_parents,
|
const char *name, const char * const *parent_names,
|
||||||
|
const struct clk_parent_data *pdata, int num_parents,
|
||||||
struct clk_hw *mux_hw, const struct clk_ops *mux_ops,
|
struct clk_hw *mux_hw, const struct clk_ops *mux_ops,
|
||||||
struct clk_hw *rate_hw, const struct clk_ops *rate_ops,
|
struct clk_hw *rate_hw, const struct clk_ops *rate_ops,
|
||||||
struct clk_hw *gate_hw, const struct clk_ops *gate_ops,
|
struct clk_hw *gate_hw, const struct clk_ops *gate_ops,
|
||||||
@ -218,7 +219,10 @@ struct clk_hw *clk_hw_register_composite(struct device *dev, const char *name,
|
|||||||
|
|
||||||
init.name = name;
|
init.name = name;
|
||||||
init.flags = flags;
|
init.flags = flags;
|
||||||
init.parent_names = parent_names;
|
if (parent_names)
|
||||||
|
init.parent_names = parent_names;
|
||||||
|
else
|
||||||
|
init.parent_data = pdata;
|
||||||
init.num_parents = num_parents;
|
init.num_parents = num_parents;
|
||||||
hw = &composite->hw;
|
hw = &composite->hw;
|
||||||
|
|
||||||
@ -312,6 +316,34 @@ err:
|
|||||||
return hw;
|
return hw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct clk_hw *clk_hw_register_composite(struct device *dev, const char *name,
|
||||||
|
const char * const *parent_names, int num_parents,
|
||||||
|
struct clk_hw *mux_hw, const struct clk_ops *mux_ops,
|
||||||
|
struct clk_hw *rate_hw, const struct clk_ops *rate_ops,
|
||||||
|
struct clk_hw *gate_hw, const struct clk_ops *gate_ops,
|
||||||
|
unsigned long flags)
|
||||||
|
{
|
||||||
|
return __clk_hw_register_composite(dev, name, parent_names, NULL,
|
||||||
|
num_parents, mux_hw, mux_ops,
|
||||||
|
rate_hw, rate_ops, gate_hw,
|
||||||
|
gate_ops, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct clk_hw *clk_hw_register_composite_pdata(struct device *dev,
|
||||||
|
const char *name,
|
||||||
|
const struct clk_parent_data *parent_data,
|
||||||
|
int num_parents,
|
||||||
|
struct clk_hw *mux_hw, const struct clk_ops *mux_ops,
|
||||||
|
struct clk_hw *rate_hw, const struct clk_ops *rate_ops,
|
||||||
|
struct clk_hw *gate_hw, const struct clk_ops *gate_ops,
|
||||||
|
unsigned long flags)
|
||||||
|
{
|
||||||
|
return __clk_hw_register_composite(dev, name, NULL, parent_data,
|
||||||
|
num_parents, mux_hw, mux_ops,
|
||||||
|
rate_hw, rate_ops, gate_hw,
|
||||||
|
gate_ops, flags);
|
||||||
|
}
|
||||||
|
|
||||||
struct clk *clk_register_composite(struct device *dev, const char *name,
|
struct clk *clk_register_composite(struct device *dev, const char *name,
|
||||||
const char * const *parent_names, int num_parents,
|
const char * const *parent_names, int num_parents,
|
||||||
struct clk_hw *mux_hw, const struct clk_ops *mux_ops,
|
struct clk_hw *mux_hw, const struct clk_ops *mux_ops,
|
||||||
@ -329,6 +361,24 @@ struct clk *clk_register_composite(struct device *dev, const char *name,
|
|||||||
return hw->clk;
|
return hw->clk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct clk *clk_register_composite_pdata(struct device *dev, const char *name,
|
||||||
|
const struct clk_parent_data *parent_data,
|
||||||
|
int num_parents,
|
||||||
|
struct clk_hw *mux_hw, const struct clk_ops *mux_ops,
|
||||||
|
struct clk_hw *rate_hw, const struct clk_ops *rate_ops,
|
||||||
|
struct clk_hw *gate_hw, const struct clk_ops *gate_ops,
|
||||||
|
unsigned long flags)
|
||||||
|
{
|
||||||
|
struct clk_hw *hw;
|
||||||
|
|
||||||
|
hw = clk_hw_register_composite_pdata(dev, name, parent_data,
|
||||||
|
num_parents, mux_hw, mux_ops, rate_hw, rate_ops,
|
||||||
|
gate_hw, gate_ops, flags);
|
||||||
|
if (IS_ERR(hw))
|
||||||
|
return ERR_CAST(hw);
|
||||||
|
return hw->clk;
|
||||||
|
}
|
||||||
|
|
||||||
void clk_unregister_composite(struct clk *clk)
|
void clk_unregister_composite(struct clk *clk)
|
||||||
{
|
{
|
||||||
struct clk_composite *composite;
|
struct clk_composite *composite;
|
||||||
|
@ -743,6 +743,12 @@ struct clk *clk_register_composite(struct device *dev, const char *name,
|
|||||||
struct clk_hw *rate_hw, const struct clk_ops *rate_ops,
|
struct clk_hw *rate_hw, const struct clk_ops *rate_ops,
|
||||||
struct clk_hw *gate_hw, const struct clk_ops *gate_ops,
|
struct clk_hw *gate_hw, const struct clk_ops *gate_ops,
|
||||||
unsigned long flags);
|
unsigned long flags);
|
||||||
|
struct clk *clk_register_composite_pdata(struct device *dev, const char *name,
|
||||||
|
const struct clk_parent_data *parent_data, int num_parents,
|
||||||
|
struct clk_hw *mux_hw, const struct clk_ops *mux_ops,
|
||||||
|
struct clk_hw *rate_hw, const struct clk_ops *rate_ops,
|
||||||
|
struct clk_hw *gate_hw, const struct clk_ops *gate_ops,
|
||||||
|
unsigned long flags);
|
||||||
void clk_unregister_composite(struct clk *clk);
|
void clk_unregister_composite(struct clk *clk);
|
||||||
struct clk_hw *clk_hw_register_composite(struct device *dev, const char *name,
|
struct clk_hw *clk_hw_register_composite(struct device *dev, const char *name,
|
||||||
const char * const *parent_names, int num_parents,
|
const char * const *parent_names, int num_parents,
|
||||||
@ -750,6 +756,13 @@ struct clk_hw *clk_hw_register_composite(struct device *dev, const char *name,
|
|||||||
struct clk_hw *rate_hw, const struct clk_ops *rate_ops,
|
struct clk_hw *rate_hw, const struct clk_ops *rate_ops,
|
||||||
struct clk_hw *gate_hw, const struct clk_ops *gate_ops,
|
struct clk_hw *gate_hw, const struct clk_ops *gate_ops,
|
||||||
unsigned long flags);
|
unsigned long flags);
|
||||||
|
struct clk_hw *clk_hw_register_composite_pdata(struct device *dev,
|
||||||
|
const char *name,
|
||||||
|
const struct clk_parent_data *parent_data, int num_parents,
|
||||||
|
struct clk_hw *mux_hw, const struct clk_ops *mux_ops,
|
||||||
|
struct clk_hw *rate_hw, const struct clk_ops *rate_ops,
|
||||||
|
struct clk_hw *gate_hw, const struct clk_ops *gate_ops,
|
||||||
|
unsigned long flags);
|
||||||
void clk_hw_unregister_composite(struct clk_hw *hw);
|
void clk_hw_unregister_composite(struct clk_hw *hw);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user