| From bf01d5dec2e3a0c301529e2257b8b10b712eb0ad Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 8 Nov 2019 09:17:18 +0200 |
| Subject: clk: clk-gpio: propagate rate change to parent |
| |
| From: Michael Hennerich <michael.hennerich@analog.com> |
| |
| [ Upstream commit fc59462c5ce60da119568fac325c92fc6b7c6175 ] |
| |
| For an external clock source, which is gated via a GPIO, the |
| rate change should typically be propagated to the parent clock. |
| |
| The situation where we are requiring this propagation, is when an |
| external clock is connected to override an internal clock (which typically |
| has a fixed rate). The external clock can have a different rate than the |
| internal one, and may also be variable, thus requiring the rate |
| propagation. |
| |
| This rate change wasn't propagated until now, and it's unclear about cases |
| where this shouldn't be propagated. Thus, it's unclear whether this is |
| fixing a bug, or extending the current driver behavior. Also, it's unsure |
| about whether this may break any existing setups; in the case that it does, |
| a device-tree property may be added to disable this flag. |
| |
| Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> |
| Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> |
| Link: https://lkml.kernel.org/r/20191108071718.17985-1-alexandru.ardelean@analog.com |
| Signed-off-by: Stephen Boyd <sboyd@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/clk/clk-gpio.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/clk/clk-gpio.c b/drivers/clk/clk-gpio.c |
| index 40af4fbab4d2..af9cc00d2d92 100644 |
| --- a/drivers/clk/clk-gpio.c |
| +++ b/drivers/clk/clk-gpio.c |
| @@ -248,7 +248,7 @@ static int gpio_clk_driver_probe(struct platform_device *pdev) |
| else |
| clk = clk_register_gpio_gate(&pdev->dev, node->name, |
| parent_names ? parent_names[0] : NULL, gpiod, |
| - 0); |
| + CLK_SET_RATE_PARENT); |
| if (IS_ERR(clk)) |
| return PTR_ERR(clk); |
| |
| -- |
| 2.20.1 |
| |