The patch below does not apply to the 5.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
Possible dependencies:
643792048ee8 ("serial: sifive: enable clocks for UART when probed")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 643792048ee84b199052e9c8f89253649ca78922 Mon Sep 17 00:00:00 2001
From: Olof Johansson <olof(a)lixom.net>
Date: Tue, 20 Sep 2022 09:00:18 -0700
Subject: [PATCH] serial: sifive: enable clocks for UART when probed
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When the PWM driver was changed to disable clocks if no PWMs are enabled,
it ended up also disabling the shared parent with the UART, since the
UART doesn't do any clock enablement on its own.
To avoid these surprises, switch to clk_get_enabled().
Fixes: ace41d7564e655 ("pwm: sifive: Ensure the clk is enabled exactly once per running PWM")
Cc: stable <stable(a)kernel.org>
Cc: Uwe Kleine-König <u.kleine-koenig(a)pengutronix.de>
Cc: Emil Renner Berthing <emil.renner.berthing(a)canonical.com>
Cc: Palmer Dabbelt <palmer(a)dabbelt.com>
Cc: Paul Walmsley <paul.walmsley(a)sifive.com>
Reviewed-by: Palmer Dabbelt <palmer(a)rivosinc.com>
Reviewed-by: Uwe Kleine-König <u.kleine-koenig(a)pengutronix.de>
Acked-by: Palmer Dabbelt <palmer(a)rivosinc.com>
Signed-off-by: Olof Johansson <olof(a)lixom.net>
Link: https://lore.kernel.org/r/20220920160017.7315-1-olof@lixom.net
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
diff --git a/drivers/tty/serial/sifive.c b/drivers/tty/serial/sifive.c
index 5c3a07546a58..4b1d4fe8458e 100644
--- a/drivers/tty/serial/sifive.c
+++ b/drivers/tty/serial/sifive.c
@@ -945,7 +945,7 @@ static int sifive_serial_probe(struct platform_device *pdev)
return PTR_ERR(base);
}
- clk = devm_clk_get(&pdev->dev, NULL);
+ clk = devm_clk_get_enabled(&pdev->dev, NULL);
if (IS_ERR(clk)) {
dev_err(&pdev->dev, "unable to find controller clock\n");
return PTR_ERR(clk);
The patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
Possible dependencies:
643792048ee8 ("serial: sifive: enable clocks for UART when probed")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 643792048ee84b199052e9c8f89253649ca78922 Mon Sep 17 00:00:00 2001
From: Olof Johansson <olof(a)lixom.net>
Date: Tue, 20 Sep 2022 09:00:18 -0700
Subject: [PATCH] serial: sifive: enable clocks for UART when probed
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When the PWM driver was changed to disable clocks if no PWMs are enabled,
it ended up also disabling the shared parent with the UART, since the
UART doesn't do any clock enablement on its own.
To avoid these surprises, switch to clk_get_enabled().
Fixes: ace41d7564e655 ("pwm: sifive: Ensure the clk is enabled exactly once per running PWM")
Cc: stable <stable(a)kernel.org>
Cc: Uwe Kleine-König <u.kleine-koenig(a)pengutronix.de>
Cc: Emil Renner Berthing <emil.renner.berthing(a)canonical.com>
Cc: Palmer Dabbelt <palmer(a)dabbelt.com>
Cc: Paul Walmsley <paul.walmsley(a)sifive.com>
Reviewed-by: Palmer Dabbelt <palmer(a)rivosinc.com>
Reviewed-by: Uwe Kleine-König <u.kleine-koenig(a)pengutronix.de>
Acked-by: Palmer Dabbelt <palmer(a)rivosinc.com>
Signed-off-by: Olof Johansson <olof(a)lixom.net>
Link: https://lore.kernel.org/r/20220920160017.7315-1-olof@lixom.net
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
diff --git a/drivers/tty/serial/sifive.c b/drivers/tty/serial/sifive.c
index 5c3a07546a58..4b1d4fe8458e 100644
--- a/drivers/tty/serial/sifive.c
+++ b/drivers/tty/serial/sifive.c
@@ -945,7 +945,7 @@ static int sifive_serial_probe(struct platform_device *pdev)
return PTR_ERR(base);
}
- clk = devm_clk_get(&pdev->dev, NULL);
+ clk = devm_clk_get_enabled(&pdev->dev, NULL);
if (IS_ERR(clk)) {
dev_err(&pdev->dev, "unable to find controller clock\n");
return PTR_ERR(clk);
The patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
Possible dependencies:
643792048ee8 ("serial: sifive: enable clocks for UART when probed")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 643792048ee84b199052e9c8f89253649ca78922 Mon Sep 17 00:00:00 2001
From: Olof Johansson <olof(a)lixom.net>
Date: Tue, 20 Sep 2022 09:00:18 -0700
Subject: [PATCH] serial: sifive: enable clocks for UART when probed
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When the PWM driver was changed to disable clocks if no PWMs are enabled,
it ended up also disabling the shared parent with the UART, since the
UART doesn't do any clock enablement on its own.
To avoid these surprises, switch to clk_get_enabled().
Fixes: ace41d7564e655 ("pwm: sifive: Ensure the clk is enabled exactly once per running PWM")
Cc: stable <stable(a)kernel.org>
Cc: Uwe Kleine-König <u.kleine-koenig(a)pengutronix.de>
Cc: Emil Renner Berthing <emil.renner.berthing(a)canonical.com>
Cc: Palmer Dabbelt <palmer(a)dabbelt.com>
Cc: Paul Walmsley <paul.walmsley(a)sifive.com>
Reviewed-by: Palmer Dabbelt <palmer(a)rivosinc.com>
Reviewed-by: Uwe Kleine-König <u.kleine-koenig(a)pengutronix.de>
Acked-by: Palmer Dabbelt <palmer(a)rivosinc.com>
Signed-off-by: Olof Johansson <olof(a)lixom.net>
Link: https://lore.kernel.org/r/20220920160017.7315-1-olof@lixom.net
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
diff --git a/drivers/tty/serial/sifive.c b/drivers/tty/serial/sifive.c
index 5c3a07546a58..4b1d4fe8458e 100644
--- a/drivers/tty/serial/sifive.c
+++ b/drivers/tty/serial/sifive.c
@@ -945,7 +945,7 @@ static int sifive_serial_probe(struct platform_device *pdev)
return PTR_ERR(base);
}
- clk = devm_clk_get(&pdev->dev, NULL);
+ clk = devm_clk_get_enabled(&pdev->dev, NULL);
if (IS_ERR(clk)) {
dev_err(&pdev->dev, "unable to find controller clock\n");
return PTR_ERR(clk);
The patch below does not apply to the 5.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
Possible dependencies:
2bc54aaa65d2 ("counter: 104-quad-8: Fix skipped IRQ lines during events configuration")
daae1ee572d1 ("counter: 104-quad-8: Implement and utilize register structures")
b6e9cded90d4 ("counter: 104-quad-8: Utilize iomap interface")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 2bc54aaa65d2126ae629919175708a28ce7ef06e Mon Sep 17 00:00:00 2001
From: William Breathitt Gray <william.gray(a)linaro.org>
Date: Thu, 22 Sep 2022 07:20:56 -0400
Subject: [PATCH] counter: 104-quad-8: Fix skipped IRQ lines during events
configuration
IRQ trigger configuration is skipped if it has already been set before;
however, the IRQ line still needs to be OR'd to irq_enabled because
irq_enabled is reset for every events_configure call. This patch moves
the irq_enabled OR operation update to before the irq_trigger check so
that IRQ line enablement is not skipped.
Fixes: c95cc0d95702 ("counter: 104-quad-8: Fix persistent enabled events bug")
Cc: stable <stable(a)kernel.org>
Link: https://lore.kernel.org/r/20220815122301.2750-1-william.gray@linaro.org/
Signed-off-by: William Breathitt Gray <william.gray(a)linaro.org>
Link: https://lore.kernel.org/r/179eed11eaf225dbd908993b510df0c8f67b1230.16638447…
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
diff --git a/drivers/counter/104-quad-8.c b/drivers/counter/104-quad-8.c
index 62c2b7ac4339..4407203e0c9b 100644
--- a/drivers/counter/104-quad-8.c
+++ b/drivers/counter/104-quad-8.c
@@ -449,6 +449,9 @@ static int quad8_events_configure(struct counter_device *counter)
return -EINVAL;
}
+ /* Enable IRQ line */
+ irq_enabled |= BIT(event_node->channel);
+
/* Skip configuration if it is the same as previously set */
if (priv->irq_trigger[event_node->channel] == next_irq_trigger)
continue;
@@ -462,9 +465,6 @@ static int quad8_events_configure(struct counter_device *counter)
priv->irq_trigger[event_node->channel] << 3;
iowrite8(QUAD8_CTR_IOR | ior_cfg,
&priv->reg->channel[event_node->channel].control);
-
- /* Enable IRQ line */
- irq_enabled |= BIT(event_node->channel);
}
iowrite8(irq_enabled, &priv->reg->index_interrupt);