* [PATCH v3 0/4] serial: atmel: cleanup code
@ 2022-06-16 14:00 ` Claudiu Beznea
0 siblings, 0 replies; 14+ messages in thread
From: Claudiu Beznea @ 2022-06-16 14:00 UTC (permalink / raw)
To: richard.genoud, gregkh, jirislaby, nicolas.ferre,
alexandre.belloni, patrice.chotard
Cc: linux-serial, linux-arm-kernel, linux-kernel, Claudiu Beznea
Hi,
The following patches does some cleanup for atmel_serial driver by
switching to dev_pm_ops and improving clock management code. Along with
it I took the chance and introduced a patch for st-asc which removes the
include of pm_runtime.h.
Thank you,
Claudiu Beznea
Changes in v3:
- removed "int ret;" from atmel_console_setup() as suggested in
the review of v1
Changes in v2:
- split patch 2/3 from v1 in patch 2/4 and patch 3/4 in this
series
- collected tags
Claudiu Beznea (4):
tty: serial: atmel: stop using legacy pm ops
tty: serial: atmel: use devm_clk_get()
tty: serial: atmel: remove enable/disable clock due to
atmel_console_setup()
serial: st-asc: remove include of pm_runtime.h
drivers/tty/serial/atmel_serial.c | 94 +++++++++----------------------
drivers/tty/serial/st-asc.c | 1 -
2 files changed, 26 insertions(+), 69 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v3 0/4] serial: atmel: cleanup code
@ 2022-06-16 14:00 ` Claudiu Beznea
0 siblings, 0 replies; 14+ messages in thread
From: Claudiu Beznea @ 2022-06-16 14:00 UTC (permalink / raw)
To: richard.genoud, gregkh, jirislaby, nicolas.ferre,
alexandre.belloni, patrice.chotard
Cc: linux-serial, linux-arm-kernel, linux-kernel, Claudiu Beznea
Hi,
The following patches does some cleanup for atmel_serial driver by
switching to dev_pm_ops and improving clock management code. Along with
it I took the chance and introduced a patch for st-asc which removes the
include of pm_runtime.h.
Thank you,
Claudiu Beznea
Changes in v3:
- removed "int ret;" from atmel_console_setup() as suggested in
the review of v1
Changes in v2:
- split patch 2/3 from v1 in patch 2/4 and patch 3/4 in this
series
- collected tags
Claudiu Beznea (4):
tty: serial: atmel: stop using legacy pm ops
tty: serial: atmel: use devm_clk_get()
tty: serial: atmel: remove enable/disable clock due to
atmel_console_setup()
serial: st-asc: remove include of pm_runtime.h
drivers/tty/serial/atmel_serial.c | 94 +++++++++----------------------
drivers/tty/serial/st-asc.c | 1 -
2 files changed, 26 insertions(+), 69 deletions(-)
--
2.34.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v3 1/4] tty: serial: atmel: stop using legacy pm ops
2022-06-16 14:00 ` Claudiu Beznea
@ 2022-06-16 14:00 ` Claudiu Beznea
-1 siblings, 0 replies; 14+ messages in thread
From: Claudiu Beznea @ 2022-06-16 14:00 UTC (permalink / raw)
To: richard.genoud, gregkh, jirislaby, nicolas.ferre,
alexandre.belloni, patrice.chotard
Cc: linux-serial, linux-arm-kernel, linux-kernel, Claudiu Beznea
Stop using legacy PM ops and switch using dev_pm_ops. Along with
it #ifdef CONFIG_PM are removed and __maybe_unused and pm_ptr() used
instead. Coding style recommends (at chapter Conditional Compilation)
to avoid using preprocessor conditional and use __maybe_unused
instead.
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Acked-by: Richard Genoud <richard.genoud@gmail.com>
---
drivers/tty/serial/atmel_serial.c | 28 +++++++++++-----------------
1 file changed, 11 insertions(+), 17 deletions(-)
diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
index 74dd1d3ac46f..c618d7e93058 100644
--- a/drivers/tty/serial/atmel_serial.c
+++ b/drivers/tty/serial/atmel_serial.c
@@ -166,7 +166,6 @@ struct atmel_uart_port {
unsigned int fidi_min;
unsigned int fidi_max;
-#ifdef CONFIG_PM
struct {
u32 cr;
u32 mr;
@@ -177,7 +176,6 @@ struct atmel_uart_port {
u32 fmr;
u32 fimr;
} cache;
-#endif
int (*prepare_rx)(struct uart_port *port);
int (*prepare_tx)(struct uart_port *port);
@@ -2718,7 +2716,6 @@ static struct uart_driver atmel_uart = {
.cons = ATMEL_CONSOLE_DEVICE,
};
-#ifdef CONFIG_PM
static bool atmel_serial_clk_will_stop(void)
{
#ifdef CONFIG_ARCH_AT91
@@ -2728,10 +2725,9 @@ static bool atmel_serial_clk_will_stop(void)
#endif
}
-static int atmel_serial_suspend(struct platform_device *pdev,
- pm_message_t state)
+static int __maybe_unused atmel_serial_suspend(struct device *dev)
{
- struct uart_port *port = platform_get_drvdata(pdev);
+ struct uart_port *port = dev_get_drvdata(dev);
struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
if (uart_console(port) && console_suspend_enabled) {
@@ -2756,14 +2752,14 @@ static int atmel_serial_suspend(struct platform_device *pdev,
}
/* we can not wake up if we're running on slow clock */
- atmel_port->may_wakeup = device_may_wakeup(&pdev->dev);
+ atmel_port->may_wakeup = device_may_wakeup(dev);
if (atmel_serial_clk_will_stop()) {
unsigned long flags;
spin_lock_irqsave(&atmel_port->lock_suspended, flags);
atmel_port->suspended = true;
spin_unlock_irqrestore(&atmel_port->lock_suspended, flags);
- device_set_wakeup_enable(&pdev->dev, 0);
+ device_set_wakeup_enable(dev, 0);
}
uart_suspend_port(&atmel_uart, port);
@@ -2771,9 +2767,9 @@ static int atmel_serial_suspend(struct platform_device *pdev,
return 0;
}
-static int atmel_serial_resume(struct platform_device *pdev)
+static int __maybe_unused atmel_serial_resume(struct device *dev)
{
- struct uart_port *port = platform_get_drvdata(pdev);
+ struct uart_port *port = dev_get_drvdata(dev);
struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
unsigned long flags;
@@ -2808,14 +2804,10 @@ static int atmel_serial_resume(struct platform_device *pdev)
spin_unlock_irqrestore(&atmel_port->lock_suspended, flags);
uart_resume_port(&atmel_uart, port);
- device_set_wakeup_enable(&pdev->dev, atmel_port->may_wakeup);
+ device_set_wakeup_enable(dev, atmel_port->may_wakeup);
return 0;
}
-#else
-#define atmel_serial_suspend NULL
-#define atmel_serial_resume NULL
-#endif
static void atmel_serial_probe_fifos(struct atmel_uart_port *atmel_port,
struct platform_device *pdev)
@@ -3019,14 +3011,16 @@ static int atmel_serial_remove(struct platform_device *pdev)
return ret;
}
+static SIMPLE_DEV_PM_OPS(atmel_serial_pm_ops, atmel_serial_suspend,
+ atmel_serial_resume);
+
static struct platform_driver atmel_serial_driver = {
.probe = atmel_serial_probe,
.remove = atmel_serial_remove,
- .suspend = atmel_serial_suspend,
- .resume = atmel_serial_resume,
.driver = {
.name = "atmel_usart_serial",
.of_match_table = of_match_ptr(atmel_serial_dt_ids),
+ .pm = pm_ptr(&atmel_serial_pm_ops),
},
};
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v3 1/4] tty: serial: atmel: stop using legacy pm ops
@ 2022-06-16 14:00 ` Claudiu Beznea
0 siblings, 0 replies; 14+ messages in thread
From: Claudiu Beznea @ 2022-06-16 14:00 UTC (permalink / raw)
To: richard.genoud, gregkh, jirislaby, nicolas.ferre,
alexandre.belloni, patrice.chotard
Cc: linux-serial, linux-arm-kernel, linux-kernel, Claudiu Beznea
Stop using legacy PM ops and switch using dev_pm_ops. Along with
it #ifdef CONFIG_PM are removed and __maybe_unused and pm_ptr() used
instead. Coding style recommends (at chapter Conditional Compilation)
to avoid using preprocessor conditional and use __maybe_unused
instead.
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Acked-by: Richard Genoud <richard.genoud@gmail.com>
---
drivers/tty/serial/atmel_serial.c | 28 +++++++++++-----------------
1 file changed, 11 insertions(+), 17 deletions(-)
diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
index 74dd1d3ac46f..c618d7e93058 100644
--- a/drivers/tty/serial/atmel_serial.c
+++ b/drivers/tty/serial/atmel_serial.c
@@ -166,7 +166,6 @@ struct atmel_uart_port {
unsigned int fidi_min;
unsigned int fidi_max;
-#ifdef CONFIG_PM
struct {
u32 cr;
u32 mr;
@@ -177,7 +176,6 @@ struct atmel_uart_port {
u32 fmr;
u32 fimr;
} cache;
-#endif
int (*prepare_rx)(struct uart_port *port);
int (*prepare_tx)(struct uart_port *port);
@@ -2718,7 +2716,6 @@ static struct uart_driver atmel_uart = {
.cons = ATMEL_CONSOLE_DEVICE,
};
-#ifdef CONFIG_PM
static bool atmel_serial_clk_will_stop(void)
{
#ifdef CONFIG_ARCH_AT91
@@ -2728,10 +2725,9 @@ static bool atmel_serial_clk_will_stop(void)
#endif
}
-static int atmel_serial_suspend(struct platform_device *pdev,
- pm_message_t state)
+static int __maybe_unused atmel_serial_suspend(struct device *dev)
{
- struct uart_port *port = platform_get_drvdata(pdev);
+ struct uart_port *port = dev_get_drvdata(dev);
struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
if (uart_console(port) && console_suspend_enabled) {
@@ -2756,14 +2752,14 @@ static int atmel_serial_suspend(struct platform_device *pdev,
}
/* we can not wake up if we're running on slow clock */
- atmel_port->may_wakeup = device_may_wakeup(&pdev->dev);
+ atmel_port->may_wakeup = device_may_wakeup(dev);
if (atmel_serial_clk_will_stop()) {
unsigned long flags;
spin_lock_irqsave(&atmel_port->lock_suspended, flags);
atmel_port->suspended = true;
spin_unlock_irqrestore(&atmel_port->lock_suspended, flags);
- device_set_wakeup_enable(&pdev->dev, 0);
+ device_set_wakeup_enable(dev, 0);
}
uart_suspend_port(&atmel_uart, port);
@@ -2771,9 +2767,9 @@ static int atmel_serial_suspend(struct platform_device *pdev,
return 0;
}
-static int atmel_serial_resume(struct platform_device *pdev)
+static int __maybe_unused atmel_serial_resume(struct device *dev)
{
- struct uart_port *port = platform_get_drvdata(pdev);
+ struct uart_port *port = dev_get_drvdata(dev);
struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
unsigned long flags;
@@ -2808,14 +2804,10 @@ static int atmel_serial_resume(struct platform_device *pdev)
spin_unlock_irqrestore(&atmel_port->lock_suspended, flags);
uart_resume_port(&atmel_uart, port);
- device_set_wakeup_enable(&pdev->dev, atmel_port->may_wakeup);
+ device_set_wakeup_enable(dev, atmel_port->may_wakeup);
return 0;
}
-#else
-#define atmel_serial_suspend NULL
-#define atmel_serial_resume NULL
-#endif
static void atmel_serial_probe_fifos(struct atmel_uart_port *atmel_port,
struct platform_device *pdev)
@@ -3019,14 +3011,16 @@ static int atmel_serial_remove(struct platform_device *pdev)
return ret;
}
+static SIMPLE_DEV_PM_OPS(atmel_serial_pm_ops, atmel_serial_suspend,
+ atmel_serial_resume);
+
static struct platform_driver atmel_serial_driver = {
.probe = atmel_serial_probe,
.remove = atmel_serial_remove,
- .suspend = atmel_serial_suspend,
- .resume = atmel_serial_resume,
.driver = {
.name = "atmel_usart_serial",
.of_match_table = of_match_ptr(atmel_serial_dt_ids),
+ .pm = pm_ptr(&atmel_serial_pm_ops),
},
};
--
2.34.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v3 2/4] tty: serial: atmel: use devm_clk_get()
2022-06-16 14:00 ` Claudiu Beznea
@ 2022-06-16 14:00 ` Claudiu Beznea
-1 siblings, 0 replies; 14+ messages in thread
From: Claudiu Beznea @ 2022-06-16 14:00 UTC (permalink / raw)
To: richard.genoud, gregkh, jirislaby, nicolas.ferre,
alexandre.belloni, patrice.chotard
Cc: linux-serial, linux-arm-kernel, linux-kernel, Claudiu Beznea
Use devm_clk_get() for serial clock instead of clk_get()/clk_put().
With this move the clk_get in driver's probe function.
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
---
drivers/tty/serial/atmel_serial.c | 50 ++++++++++---------------------
1 file changed, 15 insertions(+), 35 deletions(-)
diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
index c618d7e93058..4cec97fd7241 100644
--- a/drivers/tty/serial/atmel_serial.c
+++ b/drivers/tty/serial/atmel_serial.c
@@ -2508,24 +2508,7 @@ static int atmel_init_port(struct atmel_uart_port *atmel_port,
if (ret)
return ret;
- /* for console, the clock could already be configured */
- if (!atmel_port->clk) {
- atmel_port->clk = clk_get(&mpdev->dev, "usart");
- if (IS_ERR(atmel_port->clk)) {
- ret = PTR_ERR(atmel_port->clk);
- atmel_port->clk = NULL;
- return ret;
- }
- ret = clk_prepare_enable(atmel_port->clk);
- if (ret) {
- clk_put(atmel_port->clk);
- atmel_port->clk = NULL;
- return ret;
- }
- port->uartclk = clk_get_rate(atmel_port->clk);
- clk_disable_unprepare(atmel_port->clk);
- /* only enable clock when USART is in use */
- }
+ port->uartclk = clk_get_rate(atmel_port->clk);
/*
* Use TXEMPTY for interrupt when rs485 or ISO7816 else TXRDY or
@@ -2896,14 +2879,23 @@ static int atmel_serial_probe(struct platform_device *pdev)
atomic_set(&atmel_port->tasklet_shutdown, 0);
spin_lock_init(&atmel_port->lock_suspended);
+ atmel_port->clk = devm_clk_get(&pdev->dev, "usart");
+ if (IS_ERR(atmel_port->clk)) {
+ ret = PTR_ERR(atmel_port->clk);
+ goto err;
+ }
+ ret = clk_prepare_enable(atmel_port->clk);
+ if (ret)
+ goto err;
+
ret = atmel_init_port(atmel_port, pdev);
if (ret)
- goto err_clear_bit;
+ goto err_clk_disable_unprepare;
atmel_port->gpios = mctrl_gpio_init(&atmel_port->uart, 0);
if (IS_ERR(atmel_port->gpios)) {
ret = PTR_ERR(atmel_port->gpios);
- goto err_clear_bit;
+ goto err_clk_disable_unprepare;
}
if (!atmel_use_pdc_rx(&atmel_port->uart)) {
@@ -2912,7 +2904,7 @@ static int atmel_serial_probe(struct platform_device *pdev)
sizeof(struct atmel_uart_char),
GFP_KERNEL);
if (!data)
- goto err_alloc_ring;
+ goto err_clk_disable_unprepare;
atmel_port->rx_ring.buf = data;
}
@@ -2936,12 +2928,6 @@ static int atmel_serial_probe(struct platform_device *pdev)
device_init_wakeup(&pdev->dev, 1);
platform_set_drvdata(pdev, atmel_port);
- /*
- * The peripheral clock has been disabled by atmel_init_port():
- * enable it before accessing I/O registers
- */
- clk_prepare_enable(atmel_port->clk);
-
if (rs485_enabled) {
atmel_uart_writel(&atmel_port->uart, ATMEL_US_MR,
ATMEL_US_USMODE_NORMAL);
@@ -2965,12 +2951,8 @@ static int atmel_serial_probe(struct platform_device *pdev)
err_add_port:
kfree(atmel_port->rx_ring.buf);
atmel_port->rx_ring.buf = NULL;
-err_alloc_ring:
- if (!uart_console(&atmel_port->uart)) {
- clk_put(atmel_port->clk);
- atmel_port->clk = NULL;
- }
-err_clear_bit:
+err_clk_disable_unprepare:
+ clk_disable_unprepare(atmel_port->clk);
clear_bit(atmel_port->uart.line, atmel_ports_in_use);
err:
return ret;
@@ -3004,8 +2986,6 @@ static int atmel_serial_remove(struct platform_device *pdev)
clear_bit(port->line, atmel_ports_in_use);
- clk_put(atmel_port->clk);
- atmel_port->clk = NULL;
pdev->dev.of_node = NULL;
return ret;
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v3 2/4] tty: serial: atmel: use devm_clk_get()
@ 2022-06-16 14:00 ` Claudiu Beznea
0 siblings, 0 replies; 14+ messages in thread
From: Claudiu Beznea @ 2022-06-16 14:00 UTC (permalink / raw)
To: richard.genoud, gregkh, jirislaby, nicolas.ferre,
alexandre.belloni, patrice.chotard
Cc: linux-serial, linux-arm-kernel, linux-kernel, Claudiu Beznea
Use devm_clk_get() for serial clock instead of clk_get()/clk_put().
With this move the clk_get in driver's probe function.
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
---
drivers/tty/serial/atmel_serial.c | 50 ++++++++++---------------------
1 file changed, 15 insertions(+), 35 deletions(-)
diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
index c618d7e93058..4cec97fd7241 100644
--- a/drivers/tty/serial/atmel_serial.c
+++ b/drivers/tty/serial/atmel_serial.c
@@ -2508,24 +2508,7 @@ static int atmel_init_port(struct atmel_uart_port *atmel_port,
if (ret)
return ret;
- /* for console, the clock could already be configured */
- if (!atmel_port->clk) {
- atmel_port->clk = clk_get(&mpdev->dev, "usart");
- if (IS_ERR(atmel_port->clk)) {
- ret = PTR_ERR(atmel_port->clk);
- atmel_port->clk = NULL;
- return ret;
- }
- ret = clk_prepare_enable(atmel_port->clk);
- if (ret) {
- clk_put(atmel_port->clk);
- atmel_port->clk = NULL;
- return ret;
- }
- port->uartclk = clk_get_rate(atmel_port->clk);
- clk_disable_unprepare(atmel_port->clk);
- /* only enable clock when USART is in use */
- }
+ port->uartclk = clk_get_rate(atmel_port->clk);
/*
* Use TXEMPTY for interrupt when rs485 or ISO7816 else TXRDY or
@@ -2896,14 +2879,23 @@ static int atmel_serial_probe(struct platform_device *pdev)
atomic_set(&atmel_port->tasklet_shutdown, 0);
spin_lock_init(&atmel_port->lock_suspended);
+ atmel_port->clk = devm_clk_get(&pdev->dev, "usart");
+ if (IS_ERR(atmel_port->clk)) {
+ ret = PTR_ERR(atmel_port->clk);
+ goto err;
+ }
+ ret = clk_prepare_enable(atmel_port->clk);
+ if (ret)
+ goto err;
+
ret = atmel_init_port(atmel_port, pdev);
if (ret)
- goto err_clear_bit;
+ goto err_clk_disable_unprepare;
atmel_port->gpios = mctrl_gpio_init(&atmel_port->uart, 0);
if (IS_ERR(atmel_port->gpios)) {
ret = PTR_ERR(atmel_port->gpios);
- goto err_clear_bit;
+ goto err_clk_disable_unprepare;
}
if (!atmel_use_pdc_rx(&atmel_port->uart)) {
@@ -2912,7 +2904,7 @@ static int atmel_serial_probe(struct platform_device *pdev)
sizeof(struct atmel_uart_char),
GFP_KERNEL);
if (!data)
- goto err_alloc_ring;
+ goto err_clk_disable_unprepare;
atmel_port->rx_ring.buf = data;
}
@@ -2936,12 +2928,6 @@ static int atmel_serial_probe(struct platform_device *pdev)
device_init_wakeup(&pdev->dev, 1);
platform_set_drvdata(pdev, atmel_port);
- /*
- * The peripheral clock has been disabled by atmel_init_port():
- * enable it before accessing I/O registers
- */
- clk_prepare_enable(atmel_port->clk);
-
if (rs485_enabled) {
atmel_uart_writel(&atmel_port->uart, ATMEL_US_MR,
ATMEL_US_USMODE_NORMAL);
@@ -2965,12 +2951,8 @@ static int atmel_serial_probe(struct platform_device *pdev)
err_add_port:
kfree(atmel_port->rx_ring.buf);
atmel_port->rx_ring.buf = NULL;
-err_alloc_ring:
- if (!uart_console(&atmel_port->uart)) {
- clk_put(atmel_port->clk);
- atmel_port->clk = NULL;
- }
-err_clear_bit:
+err_clk_disable_unprepare:
+ clk_disable_unprepare(atmel_port->clk);
clear_bit(atmel_port->uart.line, atmel_ports_in_use);
err:
return ret;
@@ -3004,8 +2986,6 @@ static int atmel_serial_remove(struct platform_device *pdev)
clear_bit(port->line, atmel_ports_in_use);
- clk_put(atmel_port->clk);
- atmel_port->clk = NULL;
pdev->dev.of_node = NULL;
return ret;
--
2.34.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v3 3/4] tty: serial: atmel: remove enable/disable clock due to atmel_console_setup()
2022-06-16 14:00 ` Claudiu Beznea
@ 2022-06-16 14:00 ` Claudiu Beznea
-1 siblings, 0 replies; 14+ messages in thread
From: Claudiu Beznea @ 2022-06-16 14:00 UTC (permalink / raw)
To: richard.genoud, gregkh, jirislaby, nicolas.ferre,
alexandre.belloni, patrice.chotard
Cc: linux-serial, linux-arm-kernel, linux-kernel, Claudiu Beznea
There is no need for clk_prepare_enable() at the beginning of
atmel_console_setup() and clk_disable_unprepare() at the end of
atmel_console_setup() as the clock is already enabled when calling
atmel_console_setup() and its disablement is done at the end
of probe.
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
---
drivers/tty/serial/atmel_serial.c | 16 ----------------
1 file changed, 16 deletions(-)
diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
index 4cec97fd7241..3a94c2bdda72 100644
--- a/drivers/tty/serial/atmel_serial.c
+++ b/drivers/tty/serial/atmel_serial.c
@@ -2617,7 +2617,6 @@ static void __init atmel_console_get_options(struct uart_port *port, int *baud,
static int __init atmel_console_setup(struct console *co, char *options)
{
- int ret;
struct uart_port *port = &atmel_ports[co->index].uart;
struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
int baud = 115200;
@@ -2630,10 +2629,6 @@ static int __init atmel_console_setup(struct console *co, char *options)
return -ENODEV;
}
- ret = clk_prepare_enable(atmel_ports[co->index].clk);
- if (ret)
- return ret;
-
atmel_uart_writel(port, ATMEL_US_IDR, -1);
atmel_uart_writel(port, ATMEL_US_CR, ATMEL_US_RSTSTA | ATMEL_US_RSTRX);
atmel_uart_writel(port, ATMEL_US_CR, ATMEL_US_TXEN | ATMEL_US_RXEN);
@@ -2914,17 +2909,6 @@ static int atmel_serial_probe(struct platform_device *pdev)
if (ret)
goto err_add_port;
-#ifdef CONFIG_SERIAL_ATMEL_CONSOLE
- if (uart_console(&atmel_port->uart)
- && ATMEL_CONSOLE_DEVICE->flags & CON_ENABLED) {
- /*
- * The serial core enabled the clock for us, so undo
- * the clk_prepare_enable() in atmel_console_setup()
- */
- clk_disable_unprepare(atmel_port->clk);
- }
-#endif
-
device_init_wakeup(&pdev->dev, 1);
platform_set_drvdata(pdev, atmel_port);
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v3 3/4] tty: serial: atmel: remove enable/disable clock due to atmel_console_setup()
@ 2022-06-16 14:00 ` Claudiu Beznea
0 siblings, 0 replies; 14+ messages in thread
From: Claudiu Beznea @ 2022-06-16 14:00 UTC (permalink / raw)
To: richard.genoud, gregkh, jirislaby, nicolas.ferre,
alexandre.belloni, patrice.chotard
Cc: linux-serial, linux-arm-kernel, linux-kernel, Claudiu Beznea
There is no need for clk_prepare_enable() at the beginning of
atmel_console_setup() and clk_disable_unprepare() at the end of
atmel_console_setup() as the clock is already enabled when calling
atmel_console_setup() and its disablement is done at the end
of probe.
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
---
drivers/tty/serial/atmel_serial.c | 16 ----------------
1 file changed, 16 deletions(-)
diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
index 4cec97fd7241..3a94c2bdda72 100644
--- a/drivers/tty/serial/atmel_serial.c
+++ b/drivers/tty/serial/atmel_serial.c
@@ -2617,7 +2617,6 @@ static void __init atmel_console_get_options(struct uart_port *port, int *baud,
static int __init atmel_console_setup(struct console *co, char *options)
{
- int ret;
struct uart_port *port = &atmel_ports[co->index].uart;
struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
int baud = 115200;
@@ -2630,10 +2629,6 @@ static int __init atmel_console_setup(struct console *co, char *options)
return -ENODEV;
}
- ret = clk_prepare_enable(atmel_ports[co->index].clk);
- if (ret)
- return ret;
-
atmel_uart_writel(port, ATMEL_US_IDR, -1);
atmel_uart_writel(port, ATMEL_US_CR, ATMEL_US_RSTSTA | ATMEL_US_RSTRX);
atmel_uart_writel(port, ATMEL_US_CR, ATMEL_US_TXEN | ATMEL_US_RXEN);
@@ -2914,17 +2909,6 @@ static int atmel_serial_probe(struct platform_device *pdev)
if (ret)
goto err_add_port;
-#ifdef CONFIG_SERIAL_ATMEL_CONSOLE
- if (uart_console(&atmel_port->uart)
- && ATMEL_CONSOLE_DEVICE->flags & CON_ENABLED) {
- /*
- * The serial core enabled the clock for us, so undo
- * the clk_prepare_enable() in atmel_console_setup()
- */
- clk_disable_unprepare(atmel_port->clk);
- }
-#endif
-
device_init_wakeup(&pdev->dev, 1);
platform_set_drvdata(pdev, atmel_port);
--
2.34.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v3 4/4] serial: st-asc: remove include of pm_runtime.h
2022-06-16 14:00 ` Claudiu Beznea
@ 2022-06-16 14:00 ` Claudiu Beznea
-1 siblings, 0 replies; 14+ messages in thread
From: Claudiu Beznea @ 2022-06-16 14:00 UTC (permalink / raw)
To: richard.genoud, gregkh, jirislaby, nicolas.ferre,
alexandre.belloni, patrice.chotard
Cc: linux-serial, linux-arm-kernel, linux-kernel, Claudiu Beznea
st-asc driver doesn't use helpers from pm_runtime.h thus remove its
include.
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
---
drivers/tty/serial/st-asc.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/tty/serial/st-asc.c b/drivers/tty/serial/st-asc.c
index 1b0da603ab54..cce42f4c9bc2 100644
--- a/drivers/tty/serial/st-asc.c
+++ b/drivers/tty/serial/st-asc.c
@@ -17,7 +17,6 @@
#include <linux/tty_flip.h>
#include <linux/delay.h>
#include <linux/spinlock.h>
-#include <linux/pm_runtime.h>
#include <linux/of.h>
#include <linux/of_platform.h>
#include <linux/serial_core.h>
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v3 4/4] serial: st-asc: remove include of pm_runtime.h
@ 2022-06-16 14:00 ` Claudiu Beznea
0 siblings, 0 replies; 14+ messages in thread
From: Claudiu Beznea @ 2022-06-16 14:00 UTC (permalink / raw)
To: richard.genoud, gregkh, jirislaby, nicolas.ferre,
alexandre.belloni, patrice.chotard
Cc: linux-serial, linux-arm-kernel, linux-kernel, Claudiu Beznea
st-asc driver doesn't use helpers from pm_runtime.h thus remove its
include.
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
---
drivers/tty/serial/st-asc.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/tty/serial/st-asc.c b/drivers/tty/serial/st-asc.c
index 1b0da603ab54..cce42f4c9bc2 100644
--- a/drivers/tty/serial/st-asc.c
+++ b/drivers/tty/serial/st-asc.c
@@ -17,7 +17,6 @@
#include <linux/tty_flip.h>
#include <linux/delay.h>
#include <linux/spinlock.h>
-#include <linux/pm_runtime.h>
#include <linux/of.h>
#include <linux/of_platform.h>
#include <linux/serial_core.h>
--
2.34.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v3 2/4] tty: serial: atmel: use devm_clk_get()
2022-06-16 14:00 ` Claudiu Beznea
@ 2022-06-17 13:06 ` Richard Genoud
-1 siblings, 0 replies; 14+ messages in thread
From: Richard Genoud @ 2022-06-17 13:06 UTC (permalink / raw)
To: Claudiu Beznea, richard.genoud, gregkh, jirislaby, nicolas.ferre,
alexandre.belloni, patrice.chotard
Cc: linux-serial, linux-arm-kernel, linux-kernel
Le 16/06/2022 à 16:00, Claudiu Beznea a écrit :
> Use devm_clk_get() for serial clock instead of clk_get()/clk_put().
> With this move the clk_get in driver's probe function.
>
> Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Acked-by: Richard Genoud <richard.genoud@gmail.com>
> ---
> drivers/tty/serial/atmel_serial.c | 50 ++++++++++---------------------
> 1 file changed, 15 insertions(+), 35 deletions(-)
>
> diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
> index c618d7e93058..4cec97fd7241 100644
> --- a/drivers/tty/serial/atmel_serial.c
> +++ b/drivers/tty/serial/atmel_serial.c
> @@ -2508,24 +2508,7 @@ static int atmel_init_port(struct atmel_uart_port *atmel_port,
> if (ret)
> return ret;
>
> - /* for console, the clock could already be configured */
> - if (!atmel_port->clk) {
> - atmel_port->clk = clk_get(&mpdev->dev, "usart");
> - if (IS_ERR(atmel_port->clk)) {
> - ret = PTR_ERR(atmel_port->clk);
> - atmel_port->clk = NULL;
> - return ret;
> - }
> - ret = clk_prepare_enable(atmel_port->clk);
> - if (ret) {
> - clk_put(atmel_port->clk);
> - atmel_port->clk = NULL;
> - return ret;
> - }
> - port->uartclk = clk_get_rate(atmel_port->clk);
> - clk_disable_unprepare(atmel_port->clk);
> - /* only enable clock when USART is in use */
> - }
> + port->uartclk = clk_get_rate(atmel_port->clk);
>
> /*
> * Use TXEMPTY for interrupt when rs485 or ISO7816 else TXRDY or
> @@ -2896,14 +2879,23 @@ static int atmel_serial_probe(struct platform_device *pdev)
> atomic_set(&atmel_port->tasklet_shutdown, 0);
> spin_lock_init(&atmel_port->lock_suspended);
>
> + atmel_port->clk = devm_clk_get(&pdev->dev, "usart");
> + if (IS_ERR(atmel_port->clk)) {
> + ret = PTR_ERR(atmel_port->clk);
> + goto err;
> + }
> + ret = clk_prepare_enable(atmel_port->clk);
> + if (ret)
> + goto err;
> +
> ret = atmel_init_port(atmel_port, pdev);
> if (ret)
> - goto err_clear_bit;
> + goto err_clk_disable_unprepare;
>
> atmel_port->gpios = mctrl_gpio_init(&atmel_port->uart, 0);
> if (IS_ERR(atmel_port->gpios)) {
> ret = PTR_ERR(atmel_port->gpios);
> - goto err_clear_bit;
> + goto err_clk_disable_unprepare;
> }
>
> if (!atmel_use_pdc_rx(&atmel_port->uart)) {
> @@ -2912,7 +2904,7 @@ static int atmel_serial_probe(struct platform_device *pdev)
> sizeof(struct atmel_uart_char),
> GFP_KERNEL);
> if (!data)
> - goto err_alloc_ring;
> + goto err_clk_disable_unprepare;
> atmel_port->rx_ring.buf = data;
> }
>
> @@ -2936,12 +2928,6 @@ static int atmel_serial_probe(struct platform_device *pdev)
> device_init_wakeup(&pdev->dev, 1);
> platform_set_drvdata(pdev, atmel_port);
>
> - /*
> - * The peripheral clock has been disabled by atmel_init_port():
> - * enable it before accessing I/O registers
> - */
> - clk_prepare_enable(atmel_port->clk);
> -
> if (rs485_enabled) {
> atmel_uart_writel(&atmel_port->uart, ATMEL_US_MR,
> ATMEL_US_USMODE_NORMAL);
> @@ -2965,12 +2951,8 @@ static int atmel_serial_probe(struct platform_device *pdev)
> err_add_port:
> kfree(atmel_port->rx_ring.buf);
> atmel_port->rx_ring.buf = NULL;
> -err_alloc_ring:
> - if (!uart_console(&atmel_port->uart)) {
> - clk_put(atmel_port->clk);
> - atmel_port->clk = NULL;
> - }
> -err_clear_bit:
> +err_clk_disable_unprepare:
> + clk_disable_unprepare(atmel_port->clk);
> clear_bit(atmel_port->uart.line, atmel_ports_in_use);
> err:
> return ret;
> @@ -3004,8 +2986,6 @@ static int atmel_serial_remove(struct platform_device *pdev)
>
> clear_bit(port->line, atmel_ports_in_use);
>
> - clk_put(atmel_port->clk);
> - atmel_port->clk = NULL;
> pdev->dev.of_node = NULL;
>
> return ret;
Thanks !
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v3 2/4] tty: serial: atmel: use devm_clk_get()
@ 2022-06-17 13:06 ` Richard Genoud
0 siblings, 0 replies; 14+ messages in thread
From: Richard Genoud @ 2022-06-17 13:06 UTC (permalink / raw)
To: Claudiu Beznea, richard.genoud, gregkh, jirislaby, nicolas.ferre,
alexandre.belloni, patrice.chotard
Cc: linux-serial, linux-arm-kernel, linux-kernel
Le 16/06/2022 à 16:00, Claudiu Beznea a écrit :
> Use devm_clk_get() for serial clock instead of clk_get()/clk_put().
> With this move the clk_get in driver's probe function.
>
> Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Acked-by: Richard Genoud <richard.genoud@gmail.com>
> ---
> drivers/tty/serial/atmel_serial.c | 50 ++++++++++---------------------
> 1 file changed, 15 insertions(+), 35 deletions(-)
>
> diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
> index c618d7e93058..4cec97fd7241 100644
> --- a/drivers/tty/serial/atmel_serial.c
> +++ b/drivers/tty/serial/atmel_serial.c
> @@ -2508,24 +2508,7 @@ static int atmel_init_port(struct atmel_uart_port *atmel_port,
> if (ret)
> return ret;
>
> - /* for console, the clock could already be configured */
> - if (!atmel_port->clk) {
> - atmel_port->clk = clk_get(&mpdev->dev, "usart");
> - if (IS_ERR(atmel_port->clk)) {
> - ret = PTR_ERR(atmel_port->clk);
> - atmel_port->clk = NULL;
> - return ret;
> - }
> - ret = clk_prepare_enable(atmel_port->clk);
> - if (ret) {
> - clk_put(atmel_port->clk);
> - atmel_port->clk = NULL;
> - return ret;
> - }
> - port->uartclk = clk_get_rate(atmel_port->clk);
> - clk_disable_unprepare(atmel_port->clk);
> - /* only enable clock when USART is in use */
> - }
> + port->uartclk = clk_get_rate(atmel_port->clk);
>
> /*
> * Use TXEMPTY for interrupt when rs485 or ISO7816 else TXRDY or
> @@ -2896,14 +2879,23 @@ static int atmel_serial_probe(struct platform_device *pdev)
> atomic_set(&atmel_port->tasklet_shutdown, 0);
> spin_lock_init(&atmel_port->lock_suspended);
>
> + atmel_port->clk = devm_clk_get(&pdev->dev, "usart");
> + if (IS_ERR(atmel_port->clk)) {
> + ret = PTR_ERR(atmel_port->clk);
> + goto err;
> + }
> + ret = clk_prepare_enable(atmel_port->clk);
> + if (ret)
> + goto err;
> +
> ret = atmel_init_port(atmel_port, pdev);
> if (ret)
> - goto err_clear_bit;
> + goto err_clk_disable_unprepare;
>
> atmel_port->gpios = mctrl_gpio_init(&atmel_port->uart, 0);
> if (IS_ERR(atmel_port->gpios)) {
> ret = PTR_ERR(atmel_port->gpios);
> - goto err_clear_bit;
> + goto err_clk_disable_unprepare;
> }
>
> if (!atmel_use_pdc_rx(&atmel_port->uart)) {
> @@ -2912,7 +2904,7 @@ static int atmel_serial_probe(struct platform_device *pdev)
> sizeof(struct atmel_uart_char),
> GFP_KERNEL);
> if (!data)
> - goto err_alloc_ring;
> + goto err_clk_disable_unprepare;
> atmel_port->rx_ring.buf = data;
> }
>
> @@ -2936,12 +2928,6 @@ static int atmel_serial_probe(struct platform_device *pdev)
> device_init_wakeup(&pdev->dev, 1);
> platform_set_drvdata(pdev, atmel_port);
>
> - /*
> - * The peripheral clock has been disabled by atmel_init_port():
> - * enable it before accessing I/O registers
> - */
> - clk_prepare_enable(atmel_port->clk);
> -
> if (rs485_enabled) {
> atmel_uart_writel(&atmel_port->uart, ATMEL_US_MR,
> ATMEL_US_USMODE_NORMAL);
> @@ -2965,12 +2951,8 @@ static int atmel_serial_probe(struct platform_device *pdev)
> err_add_port:
> kfree(atmel_port->rx_ring.buf);
> atmel_port->rx_ring.buf = NULL;
> -err_alloc_ring:
> - if (!uart_console(&atmel_port->uart)) {
> - clk_put(atmel_port->clk);
> - atmel_port->clk = NULL;
> - }
> -err_clear_bit:
> +err_clk_disable_unprepare:
> + clk_disable_unprepare(atmel_port->clk);
> clear_bit(atmel_port->uart.line, atmel_ports_in_use);
> err:
> return ret;
> @@ -3004,8 +2986,6 @@ static int atmel_serial_remove(struct platform_device *pdev)
>
> clear_bit(port->line, atmel_ports_in_use);
>
> - clk_put(atmel_port->clk);
> - atmel_port->clk = NULL;
> pdev->dev.of_node = NULL;
>
> return ret;
Thanks !
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v3 3/4] tty: serial: atmel: remove enable/disable clock due to atmel_console_setup()
2022-06-16 14:00 ` Claudiu Beznea
@ 2022-06-17 13:06 ` Richard Genoud
-1 siblings, 0 replies; 14+ messages in thread
From: Richard Genoud @ 2022-06-17 13:06 UTC (permalink / raw)
To: Claudiu Beznea, richard.genoud, gregkh, jirislaby, nicolas.ferre,
alexandre.belloni, patrice.chotard
Cc: linux-serial, linux-arm-kernel, linux-kernel
Le 16/06/2022 à 16:00, Claudiu Beznea a écrit :
> There is no need for clk_prepare_enable() at the beginning of
> atmel_console_setup() and clk_disable_unprepare() at the end of
> atmel_console_setup() as the clock is already enabled when calling
> atmel_console_setup() and its disablement is done at the end
> of probe.
>
> Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Acked-by: Richard Genoud <richard.genoud@gmail.com>
> ---
> drivers/tty/serial/atmel_serial.c | 16 ----------------
> 1 file changed, 16 deletions(-)
>
> diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
> index 4cec97fd7241..3a94c2bdda72 100644
> --- a/drivers/tty/serial/atmel_serial.c
> +++ b/drivers/tty/serial/atmel_serial.c
> @@ -2617,7 +2617,6 @@ static void __init atmel_console_get_options(struct uart_port *port, int *baud,
>
> static int __init atmel_console_setup(struct console *co, char *options)
> {
> - int ret;
> struct uart_port *port = &atmel_ports[co->index].uart;
> struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
> int baud = 115200;
> @@ -2630,10 +2629,6 @@ static int __init atmel_console_setup(struct console *co, char *options)
> return -ENODEV;
> }
>
> - ret = clk_prepare_enable(atmel_ports[co->index].clk);
> - if (ret)
> - return ret;
> -
> atmel_uart_writel(port, ATMEL_US_IDR, -1);
> atmel_uart_writel(port, ATMEL_US_CR, ATMEL_US_RSTSTA | ATMEL_US_RSTRX);
> atmel_uart_writel(port, ATMEL_US_CR, ATMEL_US_TXEN | ATMEL_US_RXEN);
> @@ -2914,17 +2909,6 @@ static int atmel_serial_probe(struct platform_device *pdev)
> if (ret)
> goto err_add_port;
>
> -#ifdef CONFIG_SERIAL_ATMEL_CONSOLE
> - if (uart_console(&atmel_port->uart)
> - && ATMEL_CONSOLE_DEVICE->flags & CON_ENABLED) {
> - /*
> - * The serial core enabled the clock for us, so undo
> - * the clk_prepare_enable() in atmel_console_setup()
> - */
> - clk_disable_unprepare(atmel_port->clk);
> - }
> -#endif
> -
> device_init_wakeup(&pdev->dev, 1);
> platform_set_drvdata(pdev, atmel_port);
>
Thanks !
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v3 3/4] tty: serial: atmel: remove enable/disable clock due to atmel_console_setup()
@ 2022-06-17 13:06 ` Richard Genoud
0 siblings, 0 replies; 14+ messages in thread
From: Richard Genoud @ 2022-06-17 13:06 UTC (permalink / raw)
To: Claudiu Beznea, richard.genoud, gregkh, jirislaby, nicolas.ferre,
alexandre.belloni, patrice.chotard
Cc: linux-serial, linux-arm-kernel, linux-kernel
Le 16/06/2022 à 16:00, Claudiu Beznea a écrit :
> There is no need for clk_prepare_enable() at the beginning of
> atmel_console_setup() and clk_disable_unprepare() at the end of
> atmel_console_setup() as the clock is already enabled when calling
> atmel_console_setup() and its disablement is done at the end
> of probe.
>
> Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Acked-by: Richard Genoud <richard.genoud@gmail.com>
> ---
> drivers/tty/serial/atmel_serial.c | 16 ----------------
> 1 file changed, 16 deletions(-)
>
> diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
> index 4cec97fd7241..3a94c2bdda72 100644
> --- a/drivers/tty/serial/atmel_serial.c
> +++ b/drivers/tty/serial/atmel_serial.c
> @@ -2617,7 +2617,6 @@ static void __init atmel_console_get_options(struct uart_port *port, int *baud,
>
> static int __init atmel_console_setup(struct console *co, char *options)
> {
> - int ret;
> struct uart_port *port = &atmel_ports[co->index].uart;
> struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
> int baud = 115200;
> @@ -2630,10 +2629,6 @@ static int __init atmel_console_setup(struct console *co, char *options)
> return -ENODEV;
> }
>
> - ret = clk_prepare_enable(atmel_ports[co->index].clk);
> - if (ret)
> - return ret;
> -
> atmel_uart_writel(port, ATMEL_US_IDR, -1);
> atmel_uart_writel(port, ATMEL_US_CR, ATMEL_US_RSTSTA | ATMEL_US_RSTRX);
> atmel_uart_writel(port, ATMEL_US_CR, ATMEL_US_TXEN | ATMEL_US_RXEN);
> @@ -2914,17 +2909,6 @@ static int atmel_serial_probe(struct platform_device *pdev)
> if (ret)
> goto err_add_port;
>
> -#ifdef CONFIG_SERIAL_ATMEL_CONSOLE
> - if (uart_console(&atmel_port->uart)
> - && ATMEL_CONSOLE_DEVICE->flags & CON_ENABLED) {
> - /*
> - * The serial core enabled the clock for us, so undo
> - * the clk_prepare_enable() in atmel_console_setup()
> - */
> - clk_disable_unprepare(atmel_port->clk);
> - }
> -#endif
> -
> device_init_wakeup(&pdev->dev, 1);
> platform_set_drvdata(pdev, atmel_port);
>
Thanks !
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2022-06-17 13:07 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-16 14:00 [PATCH v3 0/4] serial: atmel: cleanup code Claudiu Beznea
2022-06-16 14:00 ` Claudiu Beznea
2022-06-16 14:00 ` [PATCH v3 1/4] tty: serial: atmel: stop using legacy pm ops Claudiu Beznea
2022-06-16 14:00 ` Claudiu Beznea
2022-06-16 14:00 ` [PATCH v3 2/4] tty: serial: atmel: use devm_clk_get() Claudiu Beznea
2022-06-16 14:00 ` Claudiu Beznea
2022-06-17 13:06 ` Richard Genoud
2022-06-17 13:06 ` Richard Genoud
2022-06-16 14:00 ` [PATCH v3 3/4] tty: serial: atmel: remove enable/disable clock due to atmel_console_setup() Claudiu Beznea
2022-06-16 14:00 ` Claudiu Beznea
2022-06-17 13:06 ` Richard Genoud
2022-06-17 13:06 ` Richard Genoud
2022-06-16 14:00 ` [PATCH v3 4/4] serial: st-asc: remove include of pm_runtime.h Claudiu Beznea
2022-06-16 14:00 ` Claudiu Beznea
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.