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:
Taniya Das 2016-06-15 12:15:01 +05:30
parent aa958278d1
commit 72d71311e2
3 changed files with 25 additions and 0 deletions

View file

@ -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

View file

@ -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);
};
/**

View file

@ -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)