- 21 Feb, 2019 1 commit
-
-
Thomas Petazzoni authored
The current implementation of gpio-gate-clk enables/disables the clock using the GPIO in the ->enable() and ->disable() clock callbacks. This requires the GPIO to be configurable in atomic contexts. While it is the case for most memory-mapped GPIO controllers, it is not the case for GPIO expanders on I2C or SPI. This commit extends the gpio-gate-clk to check whether the GPIO calls require sleeping or not. If sleeping is not required, the current implementation based on ->enable()/->disable() is kept. However, if sleeping is needed, we instead implement the logic in the ->prepare() and ->unprepare() hooks. Thanks to this, a gate clock connected to a GPIO on a GPIO expander can be controlled with the existing driver. Signed-off-by:
Thomas Petazzoni <thomas.petazzoni@bootlin.com> [sboyd@kernel.org: Mark clk ops static] Signed-off-by:
Stephen Boyd <sboyd@kernel.org>
-
- 11 Dec, 2018 1 commit
-
-
Stephen Boyd authored
These are all GPL-2.0 files per the existing license text. Replace the boiler plate with the tag. Signed-off-by:
Stephen Boyd <sboyd@kernel.org>
-
- 30 Aug, 2018 1 commit
-
-
Rob Herring authored
In preparation to remove the node name pointer from struct device_node, convert printf users to use the %pOFn format specifier. Cc: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> Cc: Michael Turquette <mturquette@baylibre.com> Cc: Stephen Boyd <sboyd@kernel.org> Cc: linux-clk@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-renesas-soc@vger.kernel.org Cc: linux-omap@vger.kernel.org Signed-off-by:
Rob Herring <robh@kernel.org> Signed-off-by:
Stephen Boyd <sboyd@kernel.org>
-
- 19 Mar, 2018 1 commit
-
-
Mike Looijmans authored
When changing or retrieving clock parents, the caller is in a sleepable state (like prepare) so the GPIO operation need not be atomic. Replace gpiod_{g|s}et_value with gpiod_{g|s}et_value_cansleep in the {g|s}et_parent calls for the GPIO based clock mux. This fixes a "slowpath" warning when the GPIO controller is an I2C expander or something similar. Signed-off-by:
Mike Looijmans <mike.looijmans@topic.nl> Signed-off-by:
Stephen Boyd <sboyd@kernel.org>
-
- 02 Nov, 2017 2 commits
-
-
Linus Walleij authored
Requesting the GPIOD_OUT_LOW low will make sure the GPIO is deasserted when requested. The gpiolib core will make sure that if the GPIO line is active low, it will be logically driven high when deasserted, see drivers/gpiolib.c gpiod_configure_flags(). Cc: Sergej Sawazki <ce3a@gmx.de> Cc: Jyri Sarha <jsarha@ti.com> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org> Signed-off-by:
Stephen Boyd <sboyd@codeaurora.org>
-
Linus Walleij authored
After som grep:ing it turns out nothing in the kernel is really calling clk_[hw_]_register_gpio_[gate|mux](). All existing instances are just created directly from the device tree probe functions at the bottom of the clk-gpio.c clock provider file. This means we can change the signature of the function without any consequences! Everyone should be using GPIO descriptors now, so let's just go in and enforce that. This saves a bit of code since GPIO descriptors know inherently if they are active low so no need for the code keeping track of that. We leave it to the caller to come up with the GPIO descriptor. It is nowadays possible to do that even without a corresponding device, so no excuse not to pass them around. The one in-kernel user lifecycles it using devm_gpiod_get() in gpio_clk_driver_probe(). Cc: Sergej Sawazki <ce3a@gmx.de> Cc: Jyri Sarha <jsarha@ti.com> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org> Signed-off-by:
Stephen Boyd <sboyd@codeaurora.org>
-
- 19 Apr, 2016 1 commit
-
-
Stephen Boyd authored
Add registration APIs in the clk gpio 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>
-
- 27 Feb, 2016 1 commit
-
-
Stephen Boyd authored
The check for < 0 is impossible now that of_clk_get_parent_count() returns an unsigned int. Simplify the code and update the type here. Signed-off-by:
Stephen Boyd <sboyd@codeaurora.org>
-
- 19 Feb, 2016 1 commit
-
-
Stephen Boyd authored
We mis-merged the original patch from Russell here and so the patch went almost all the way, except that we still failed to probe when there wasn't a clocks property in the DT node. Allow that case by making a negative value from of_clk_get_parent_count() into "no parents", like the original patch did. Fixes: 7ed88aa2 ("clk: fix clk-gpio.c with optional clock= DT property") Cc: Russell King <rmk+kernel@arm.linux.org.uk> Cc: Michael Turquette <mturquette@baylibre.com> Signed-off-by:
Stephen Boyd <sboyd@codeaurora.org>
-
- 07 Feb, 2016 1 commit
-
-
Stephen Boyd authored
clk_get() for DT based clks already returns EPROBE_DEFER when the OF clk provider is not present. So having all this code in the clk provider to return EPROBE_DEFER when the gpio isn't ready yet can be replaced with a platform driver that doesn't add the clk provider until the gpio can be requested. Get rid of the OF_CLK_DECLARE and convert this to a platform driver instead. Tested-by:
Jyri Sarha <jsarha@ti.com> Cc: Sergej Sawazki <ce3a@gmx.de> Cc: Russell King <rmk+kernel@arm.linux.org.uk> Cc: Fabio Estevam <fabio.estevam@freescale.com> Cc: Jon Nettleton <jon@solid-run.com> Cc: Shawn Guo <shawn.guo@linaro.org> Signed-off-by:
Stephen Boyd <sboyd@codeaurora.org>
-
- 29 Jan, 2016 1 commit
-
-
Geliang Tang authored
to_clk_*(_hw) macros have been repeatedly defined in many places. This patch moves all the to_clk_*(_hw) definitions in the common clock framework to public header clk-provider.h, and drop the local definitions. Signed-off-by:
Geliang Tang <geliangtang@163.com> Signed-off-by:
Stephen Boyd <sboyd@codeaurora.org>
-
- 03 Jan, 2016 1 commit
-
-
Russell King authored
When the clock DT property is not given, of_clk_get_parent_count() returns -ENOENT, which then tries to allocate -2 x 4 bytes of memory, which of course fails, causing the whole driver to fail to create the clock. This causes the SolidRun platforms to fail probing the SDHCI1 interface which is connected to the WiFi. Fix this by detecting errno codes, skipping the allocation, and fixing of_clk_gpio_gate_delayed_register_get() to handle a NULL parent_names array. Fixes: 80eeb1f0 ("clk: add gpio controlled clock multiplexer") Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by:
Michael Turquette <mturquette@baylibre.com>
-
- 01 Jan, 2016 2 commits
-
-
Brian Norris authored
We might make bad memory allocations if we get (e.g.) -ENOSYS from of_clk_get_parent_count(). Noticed by Coverity. Fixes: f66541ba ("clk: gpio: Get parent clk names in of_gpio_clk_setup()") Signed-off-by:
Brian Norris <computersforpeace@gmail.com> Cc: Jyri Sarha <jsarha@ti.com> Cc: Sergej Sawazki <ce3a@gmx.de> Cc: Stephen Boyd <sboyd@codeaurora.org> Signed-off-by:
Michael Turquette <mturquette@baylibre.com>
-
Sudip Mukherjee authored
If we fail to allocate parent_name then we are returning but we missed freeing data which has already been allocated. Signed-off-by:
Sudip Mukherjee <sudip@vectorindia.org> Signed-off-by:
Michael Turquette <mturquette@baylibre.com>
-
- 19 Nov, 2015 1 commit
-
-
Jyri Sarha authored
Get parent clk names in of_gpio_clk_setup() and store the names in struct clk_gpio_delayed_register_data instead of doing it from the clk provider's get() callback. of_clk_get_parent_name() can't be called in struct of_clk_provider's get() callback since it may make a call to of_clk_get_from_provider() and this in turn tries to recursively lock of_clk_mutex. Signed-off-by:
Jyri Sarha <jsarha@ti.com> Cc: Sergej Sawazki <ce3a@gmx.de> Fixes: 0a4807c2 ("clk: Make of_clk_get_parent_name() robust with #clock-cells = 1") Signed-off-by:
Stephen Boyd <sboyd@codeaurora.org>
-
- 28 Jul, 2015 2 commits
-
-
Stephen Boyd authored
Let's encourage const arrays of parent names like other basic clock types. Cc: Sergej Sawazki <ce3a@gmx.de> Signed-off-by:
Stephen Boyd <sboyd@codeaurora.org>
-
Stephen Boyd authored
We don't unlock the mutex if we fail to allocate the parent names array. Unlock it and return an error in this case as well. Reported-by:
kbuild test robot <fengguang.wu@intel.com> Acked-by:
Julia Lawall <julia.lawall@lip6.fr> Cc: Sergej Sawazki <ce3a@gmx.de> Signed-off-by:
Stephen Boyd <sboyd@codeaurora.org>
-
- 07 Jul, 2015 2 commits
-
-
Sergej Sawazki authored
The file clk-gpio-gate.c does not only contain the gate clock, but also the mux clock. Rename the file to clk-gpio.c. Cc: Jyri Sarha <jsarha@ti.com> Signed-off-by:
Sergej Sawazki <ce3a@gmx.de> Signed-off-by:
Stephen Boyd <sboyd@codeaurora.org>
-
Sergej Sawazki authored
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>
-
- 06 Jul, 2015 2 commits
-
-
Sergej Sawazki authored
Do not output an error message if requesting gpio failes with EPROBE_DEFER. Cc: Jyri Sarha <jsarha@ti.com> Signed-off-by:
Sergej Sawazki <ce3a@gmx.de> Signed-off-by:
Stephen Boyd <sboyd@codeaurora.org>
-
Sergej Sawazki authored
Include export.h for EXPORT_SYMBOL_GPL, no need to include module.h. Cc: Jyri Sarha <jsarha@ti.com> Signed-off-by:
Sergej Sawazki <ce3a@gmx.de> Signed-off-by:
Stephen Boyd <sboyd@codeaurora.org>
-
- 15 May, 2015 1 commit
-
-
Stephen Boyd authored
This function is marked as __init, so exposing it to modules doesn't make any sense and it isn't used by modules anyway. drivers/clk/clk-gpio-gate.c:192:13: warning: symbol 'of_gpio_gate_clk_setup' was not declared. Should it be static? Cc: Jyri Sarha <jsarha@ti.com> Signed-off-by:
Stephen Boyd <sboyd@codeaurora.org>
-
- 11 Apr, 2015 1 commit
-
-
Martin Fuzzey authored
The active low flag in the DT cell is currently ignored. This occurs because of_get_named_gpio_flags() does not apply the flags to the underlying struct gpio_desc so the test in clk_register_gpio_gate() was bogus. Note that this patch changes the internal kernel API for clk_register_gpio_gate() but there are currently no other users. Signed-off-by:
Martin Fuzzey <mfuzzey@parkeon.com> Acked-by:
Jyri Sarha <jsarha@ti.com> Signed-off-by:
Michael Turquette <mturquette@linaro.org>
-
- 30 Sep, 2014 1 commit
-
-
Mark Brown authored
The gpio-gate clock uses the gpiod_ APIs but does not directly include the header for them causing build failures in some configurations including ARM allnoconfig. Include the header directly. Signed-off-by:
Mark Brown <broonie@kernel.org> Acked-by:
Jyri Sarha <jsarha@ti.com> Signed-off-by:
Mike Turquette <mturquette@linaro.org>
-
- 26 Sep, 2014 1 commit
-
-
Jyri Sarha authored
The added gpio-gate-clock is a basic clock that can be enabled and disabled trough a gpio output. The DT binding document for the clock is also added. For EPROBE_DEFER handling the registering of the clock has to be delayed until of_clk_get() call time. Signed-off-by:
Jyri Sarha <jsarha@ti.com> Signed-off-by:
Mike Turquette <mturquette@linaro.org>
-