summaryrefslogtreecommitdiff
path: root/include/linux/clk-provider.h
diff options
context:
space:
mode:
authorSergej Sawazki <ce3a@gmx.de>2015-06-28 16:24:55 +0200
committerStephen Boyd <sboyd@codeaurora.org>2015-07-06 17:20:52 -0700
commit80eeb1f0f757c790b020d9f425bb0e824973d49c (patch)
tree6f1368c2557943187d6835bbaa7287862ef24c69 /include/linux/clk-provider.h
parent281cbb007612814183d79b1f72d0395303fcfb6f (diff)
downloadlwn-80eeb1f0f757c790b020d9f425bb0e824973d49c.tar.gz
lwn-80eeb1f0f757c790b020d9f425bb0e824973d49c.zip
clk: add gpio controlled clock multiplexer
Add a common clock driver for basic gpio controlled clock multiplexers. This driver can be used for devices like 5V41068A or 831721I from IDT or for discrete multiplexer circuits. The 'select' pin selects one of two parent clocks. Cc: Jyri Sarha <jsarha@ti.com> Signed-off-by: Sergej Sawazki <ce3a@gmx.de> [sboyd@codeaurora.org: Fix error paths to free memory and do it in the correct order] Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Diffstat (limited to 'include/linux/clk-provider.h')
-rw-r--r--include/linux/clk-provider.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
index 78842f46f152..823d7f70878e 100644
--- a/include/linux/clk-provider.h
+++ b/include/linux/clk-provider.h
@@ -550,6 +550,23 @@ struct clk *clk_register_gpio_gate(struct device *dev, const char *name,
void of_gpio_clk_gate_setup(struct device_node *node);
/**
+ * struct clk_gpio_mux - gpio controlled clock multiplexer
+ *
+ * @hw: see struct clk_gpio
+ * @gpiod: gpio descriptor to select the parent of this clock multiplexer
+ *
+ * Clock with a gpio control for selecting the parent clock.
+ * Implements .get_parent, .set_parent and .determine_rate
+ */
+
+extern const struct clk_ops clk_gpio_mux_ops;
+struct clk *clk_register_gpio_mux(struct device *dev, const char *name,
+ const char **parent_names, u8 num_parents, unsigned gpio,
+ bool active_low, unsigned long flags);
+
+void of_gpio_mux_clk_setup(struct device_node *node);
+
+/**
* clk_register - allocate a new clock, register it and return an opaque cookie
* @dev: device that is registering this clock
* @hw: link to hardware-specific clock data