clk: Add support to set custom flags with clk_set_flags
The new API clk_set_flags could be used by hardware specific clock drivers or clients for specific hardware requirements. These flags could be custom defined as per hardware needs. Change-Id: Ia67373ee2b8934c898052c68338fa86cb16070dd Signed-off-by: Taniya Das <tdas@codeaurora.org>
This commit is contained in:
parent
aa958278d1
commit
72d71311e2
3 changed files with 25 additions and 0 deletions
|
@ -1955,6 +1955,18 @@ bool clk_is_match(const struct clk *p, const struct clk *q)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(clk_is_match);
|
||||
|
||||
int clk_set_flags(struct clk *clk, unsigned long flags)
|
||||
{
|
||||
if (!clk)
|
||||
return 0;
|
||||
|
||||
if (!clk->core->ops->set_flags)
|
||||
return -EINVAL;
|
||||
|
||||
return clk->core->ops->set_flags(clk->core->hw, flags);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(clk_set_flags);
|
||||
|
||||
/*** debugfs support ***/
|
||||
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
|
|
|
@ -173,6 +173,8 @@ struct clk_rate_request {
|
|||
* directory is provided as an argument. Called with
|
||||
* prepare_lock held. Returns 0 on success, -EERROR otherwise.
|
||||
*
|
||||
* @set_flags: Set custom flags which deals with hardware specifics. Returns 0
|
||||
* on success, -EEROR otherwise.
|
||||
*
|
||||
* The clk_enable/clk_disable and clk_prepare/clk_unprepare pairs allow
|
||||
* implementations to split any work between atomic (enable) and sleepable
|
||||
|
@ -213,6 +215,7 @@ struct clk_ops {
|
|||
int (*set_phase)(struct clk_hw *hw, int degrees);
|
||||
void (*init)(struct clk_hw *hw);
|
||||
int (*debug_init)(struct clk_hw *hw, struct dentry *dentry);
|
||||
int (*set_flags)(struct clk_hw *hw, unsigned flags);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -408,6 +408,16 @@ struct clk *clk_get_parent(struct clk *clk);
|
|||
*/
|
||||
struct clk *clk_get_sys(const char *dev_id, const char *con_id);
|
||||
|
||||
/**
|
||||
* clk_set_flags - set the custom specific flags for this clock
|
||||
* @clk: clock source
|
||||
* @flags: custom flags which would be hardware specific, defined for specific
|
||||
* hardware.
|
||||
*
|
||||
* Returns success 0 or negative errno.
|
||||
*/
|
||||
int clk_set_flags(struct clk *clk, unsigned long flags);
|
||||
|
||||
#else /* !CONFIG_HAVE_CLK */
|
||||
|
||||
static inline struct clk *clk_get(struct device *dev, const char *id)
|
||||
|
|
Loading…
Add table
Reference in a new issue