clk: sprd: Add macros for referencing parents without strings
With the new clk parenting code, clk_init_data was expanded to include .parent_hws and .parent_data, for clk drivers to specify parents without name strings of clocks. Also some macros were added for using these two items to reference clock parents. Based on that to expand macros for sprd clocks: - SPRD_*_DATA, take an array of struct clk_parent_data * as its parents which should be a combination of .fw_name (devicetree clock-names), .hw (pointers to a local struct clk_hw). - SPRD_*_HW, take a local struct clk_hw pointer, instead of a string, as its parent. - SPRD_*_FW_NAME, take a string of clock-names decleared in the device tree as the clock parent. Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com> Link: https://lkml.kernel.org/r/20200304072730.9193-6-zhang.lyra@gmail.com Signed-off-by: Stephen Boyd <sboyd@kernel.org>
此提交包含在:
@@ -35,20 +35,28 @@ struct sprd_div {
|
||||
struct sprd_clk_common common;
|
||||
};
|
||||
|
||||
#define SPRD_DIV_CLK(_struct, _name, _parent, _reg, \
|
||||
_shift, _width, _flags) \
|
||||
#define SPRD_DIV_CLK_HW_INIT_FN(_struct, _name, _parent, _reg, \
|
||||
_shift, _width, _flags, _fn) \
|
||||
struct sprd_div _struct = { \
|
||||
.div = _SPRD_DIV_CLK(_shift, _width), \
|
||||
.common = { \
|
||||
.regmap = NULL, \
|
||||
.reg = _reg, \
|
||||
.hw.init = CLK_HW_INIT(_name, \
|
||||
_parent, \
|
||||
&sprd_div_ops, \
|
||||
_flags), \
|
||||
.hw.init = _fn(_name, _parent, \
|
||||
&sprd_div_ops, _flags), \
|
||||
} \
|
||||
}
|
||||
|
||||
#define SPRD_DIV_CLK(_struct, _name, _parent, _reg, \
|
||||
_shift, _width, _flags) \
|
||||
SPRD_DIV_CLK_HW_INIT_FN(_struct, _name, _parent, _reg, \
|
||||
_shift, _width, _flags, CLK_HW_INIT)
|
||||
|
||||
#define SPRD_DIV_CLK_HW(_struct, _name, _parent, _reg, \
|
||||
_shift, _width, _flags) \
|
||||
SPRD_DIV_CLK_HW_INIT_FN(_struct, _name, _parent, _reg, \
|
||||
_shift, _width, _flags, CLK_HW_INIT_HW)
|
||||
|
||||
static inline struct sprd_div *hw_to_sprd_div(const struct clk_hw *hw)
|
||||
{
|
||||
struct sprd_clk_common *common = hw_to_sprd_clk_common(hw);
|
||||
|
新增問題並參考
封鎖使用者