Merge branch 'clk-parent-rewrite-1' into clk-next
- Rewrite how clk parents can be specified to be DT/clkdev based instead of just string based * clk-parent-rewrite-1: clk: Cache core in clk_fetch_parent_index() without names clk: fixed-factor: Initialize clk_init_data on stack clk: fixed-factor: Let clk framework find parent clk: Allow parents to be specified via clkspec index clk: Look for parents with clkdev based clk_lookups clk: Allow parents to be specified without string names clk: Add of_clk_hw_register() API for early clk drivers driver core: Let dev_of_node() accept a NULL dev clk: Prepare for clk registration API that uses DT nodes clkdev: Move clk creation outside of 'clocks_mutex'
This commit is contained in:
@@ -250,6 +250,20 @@ struct clk_ops {
|
||||
void (*debug_init)(struct clk_hw *hw, struct dentry *dentry);
|
||||
};
|
||||
|
||||
/**
|
||||
* struct clk_parent_data - clk parent information
|
||||
* @hw: parent clk_hw pointer (used for clk providers with internal clks)
|
||||
* @fw_name: parent name local to provider registering clk
|
||||
* @name: globally unique parent name (used as a fallback)
|
||||
* @index: parent index local to provider registering clk (if @fw_name absent)
|
||||
*/
|
||||
struct clk_parent_data {
|
||||
const struct clk_hw *hw;
|
||||
const char *fw_name;
|
||||
const char *name;
|
||||
int index;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct clk_init_data - holds init data that's common to all clocks and is
|
||||
* shared between the clock provider and the common clock framework.
|
||||
@@ -257,13 +271,20 @@ struct clk_ops {
|
||||
* @name: clock name
|
||||
* @ops: operations this clock supports
|
||||
* @parent_names: array of string names for all possible parents
|
||||
* @parent_data: array of parent data for all possible parents (when some
|
||||
* parents are external to the clk controller)
|
||||
* @parent_hws: array of pointers to all possible parents (when all parents
|
||||
* are internal to the clk controller)
|
||||
* @num_parents: number of possible parents
|
||||
* @flags: framework-level hints and quirks
|
||||
*/
|
||||
struct clk_init_data {
|
||||
const char *name;
|
||||
const struct clk_ops *ops;
|
||||
/* Only one of the following three should be assigned */
|
||||
const char * const *parent_names;
|
||||
const struct clk_parent_data *parent_data;
|
||||
const struct clk_hw **parent_hws;
|
||||
u8 num_parents;
|
||||
unsigned long flags;
|
||||
};
|
||||
@@ -776,6 +797,7 @@ struct clk *devm_clk_register(struct device *dev, struct clk_hw *hw);
|
||||
|
||||
int __must_check clk_hw_register(struct device *dev, struct clk_hw *hw);
|
||||
int __must_check devm_clk_hw_register(struct device *dev, struct clk_hw *hw);
|
||||
int __must_check of_clk_hw_register(struct device_node *node, struct clk_hw *hw);
|
||||
|
||||
void clk_unregister(struct clk *clk);
|
||||
void devm_clk_unregister(struct device *dev, struct clk *clk);
|
||||
|
Reference in New Issue
Block a user