Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1329835
| From | Stephen Boyd <sboyd@codeaurora.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 13/14] clk: fixed-rate: Add hw based registration APIs |
| Date | 2016-02-09 02:50 +0100 |
| Message-ID | <r05Bh-5h7-17@gated-at.bofh.it> (permalink) |
| References | <r05Bf-5h7-5@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Add registration APIs in the clk fixed-rate code to return struct
clk_hw pointers instead of struct clk pointers. This way we hide
the struct clk pointer from providers unless they need to use
consumer facing APIs.
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
drivers/clk/clk-fixed-rate.c | 44 ++++++++++++++++++++++++++++++++++++--------
include/linux/clk-provider.h | 6 ++++++
2 files changed, 42 insertions(+), 8 deletions(-)
diff --git a/drivers/clk/clk-fixed-rate.c b/drivers/clk/clk-fixed-rate.c
index f85ec8d1711f..fe9f83fc04ac 100644
--- a/drivers/clk/clk-fixed-rate.c
+++ b/drivers/clk/clk-fixed-rate.c
@@ -47,8 +47,8 @@ const struct clk_ops clk_fixed_rate_ops = {
EXPORT_SYMBOL_GPL(clk_fixed_rate_ops);
/**
- * clk_register_fixed_rate_with_accuracy - register fixed-rate clock with the
- * clock framework
+ * clk_hw_register_fixed_rate_with_accuracy - register fixed-rate clock with
+ * the clock framework
* @dev: device that is registering this clock
* @name: name of this clock
* @parent_name: name of clock's parent
@@ -56,13 +56,14 @@ EXPORT_SYMBOL_GPL(clk_fixed_rate_ops);
* @fixed_rate: non-adjustable clock rate
* @fixed_accuracy: non-adjustable clock rate
*/
-struct clk *clk_register_fixed_rate_with_accuracy(struct device *dev,
+struct clk_hw *clk_hw_register_fixed_rate_with_accuracy(struct device *dev,
const char *name, const char *parent_name, unsigned long flags,
unsigned long fixed_rate, unsigned long fixed_accuracy)
{
struct clk_fixed_rate *fixed;
- struct clk *clk;
+ struct clk_hw *hw;
struct clk_init_data init;
+ int ret;
/* allocate fixed-rate clock */
fixed = kzalloc(sizeof(*fixed), GFP_KERNEL);
@@ -81,22 +82,49 @@ struct clk *clk_register_fixed_rate_with_accuracy(struct device *dev,
fixed->hw.init = &init;
/* register the clock */
- clk = clk_register(dev, &fixed->hw);
- if (IS_ERR(clk))
+ hw = &fixed->hw;
+ ret = clk_hw_register(dev, hw);
+ if (ret) {
kfree(fixed);
+ hw = ERR_PTR(ret);
+ }
- return clk;
+ return hw;
+}
+EXPORT_SYMBOL_GPL(clk_hw_register_fixed_rate_with_accuracy);
+
+struct clk *clk_register_fixed_rate_with_accuracy(struct device *dev,
+ const char *name, const char *parent_name, unsigned long flags,
+ unsigned long fixed_rate, unsigned long fixed_accuracy)
+{
+ struct clk_hw *hw;
+
+ hw = clk_hw_register_fixed_rate_with_accuracy(dev, name, parent_name,
+ flags, fixed_rate, fixed_accuracy);
+ if (IS_ERR(hw))
+ return ERR_CAST(hw);
+ return hw->clk;
}
EXPORT_SYMBOL_GPL(clk_register_fixed_rate_with_accuracy);
/**
- * clk_register_fixed_rate - register fixed-rate clock with the clock framework
+ * clk_hw_register_fixed_rate - register fixed-rate clock with the clock
+ * framework
* @dev: device that is registering this clock
* @name: name of this clock
* @parent_name: name of clock's parent
* @flags: framework-specific flags
* @fixed_rate: non-adjustable clock rate
*/
+struct clk_hw *clk_hw_register_fixed_rate(struct device *dev, const char *name,
+ const char *parent_name, unsigned long flags,
+ unsigned long fixed_rate)
+{
+ return clk_hw_register_fixed_rate_with_accuracy(dev, name, parent_name,
+ flags, fixed_rate, 0);
+}
+EXPORT_SYMBOL_GPL(clk_hw_register_fixed_rate);
+
struct clk *clk_register_fixed_rate(struct device *dev, const char *name,
const char *parent_name, unsigned long flags,
unsigned long fixed_rate)
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
index 148ad0dc2906..98fad9fb8a7d 100644
--- a/include/linux/clk-provider.h
+++ b/include/linux/clk-provider.h
@@ -280,9 +280,15 @@ extern const struct clk_ops clk_fixed_rate_ops;
struct clk *clk_register_fixed_rate(struct device *dev, const char *name,
const char *parent_name, unsigned long flags,
unsigned long fixed_rate);
+struct clk_hw *clk_hw_register_fixed_rate(struct device *dev, const char *name,
+ const char *parent_name, unsigned long flags,
+ unsigned long fixed_rate);
struct clk *clk_register_fixed_rate_with_accuracy(struct device *dev,
const char *name, const char *parent_name, unsigned long flags,
unsigned long fixed_rate, unsigned long fixed_accuracy);
+struct clk_hw *clk_hw_register_fixed_rate_with_accuracy(struct device *dev,
+ const char *name, const char *parent_name, unsigned long flags,
+ unsigned long fixed_rate, unsigned long fixed_accuracy);
void of_fixed_clk_setup(struct device_node *np);
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 00/14] clk_hw based clkdev/DT providers Stephen Boyd <sboyd@codeaurora.org> - 2016-02-09 02:50 +0100
[PATCH 06/14] clk: divider: Add hw based registration APIs Stephen Boyd <sboyd@codeaurora.org> - 2016-02-09 02:50 +0100
[PATCH 05/14] clkdev: Add clk_hw based registration APIs Stephen Boyd <sboyd@codeaurora.org> - 2016-02-09 02:50 +0100
[PATCH 11/14] clk: composite: Add hw based registration APIs Stephen Boyd <sboyd@codeaurora.org> - 2016-02-09 02:50 +0100
[PATCH 13/14] clk: fixed-rate: Add hw based registration APIs Stephen Boyd <sboyd@codeaurora.org> - 2016-02-09 02:50 +0100
[PATCH 14/14] clk: qcom: Migrate to clk_hw based registration and OF APIs Stephen Boyd <sboyd@codeaurora.org> - 2016-02-09 02:50 +0100
[PATCH 04/14] clk: Add clk_hw OF clk providers Stephen Boyd <sboyd@codeaurora.org> - 2016-02-09 02:50 +0100
[PATCH 07/14] clk: gate: Add hw based registration APIs Stephen Boyd <sboyd@codeaurora.org> - 2016-02-09 02:50 +0100
[PATCH 08/14] clk: mux: Add hw based registration APIs Stephen Boyd <sboyd@codeaurora.org> - 2016-02-09 02:50 +0100
[PATCH 09/14] clk: fixed-factor: Add hw based registration APIs Stephen Boyd <sboyd@codeaurora.org> - 2016-02-09 02:50 +0100
[PATCH 12/14] clk: gpio: Add hw based registration APIs Stephen Boyd <sboyd@codeaurora.org> - 2016-02-09 02:50 +0100
[PATCH 02/14] clkdev: Remove clk_register_clkdevs() Stephen Boyd <sboyd@codeaurora.org> - 2016-02-09 02:50 +0100
Re: [PATCH 02/14] clkdev: Remove clk_register_clkdevs() Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2016-02-15 16:20 +0100
Re: [PATCH 02/14] clkdev: Remove clk_register_clkdevs() Michael Turquette <mturquette@baylibre.com> - 2016-02-15 23:20 +0100
[PATCH 01/14] mfd: intel_quark_i2c_gpio: Use clkdev_create() Stephen Boyd <sboyd@codeaurora.org> - 2016-02-09 02:50 +0100
Re: [PATCH 01/14] mfd: intel_quark_i2c_gpio: Use clkdev_create() Lee Jones <lee.jones@linaro.org> - 2016-02-10 17:30 +0100
Re: [PATCH 01/14] mfd: intel_quark_i2c_gpio: Use clkdev_create() Stephen Boyd <sboyd@codeaurora.org> - 2016-02-10 19:40 +0100
Re: [PATCH 01/14] mfd: intel_quark_i2c_gpio: Use clkdev_create() Lee Jones <lee.jones@linaro.org> - 2016-02-11 10:20 +0100
Re: [PATCH 01/14] mfd: intel_quark_i2c_gpio: Use clkdev_create() Lee Jones <lee.jones@linaro.org> - 2016-02-11 12:10 +0100
Re: [PATCH 01/14] mfd: intel_quark_i2c_gpio: Use clkdev_create() Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2016-02-15 16:20 +0100
Re: [PATCH 01/14] mfd: intel_quark_i2c_gpio: Use clkdev_create() Michael Turquette <mturquette@baylibre.com> - 2016-02-15 23:20 +0100
csiph-web