* [PATCH v1 0/3] mailbox: Provide devm variants for mbox_request_channel{,_byname}()
@ 2026-08-12 15:25 Uwe Kleine-König
2026-08-12 15:25 ` [PATCH v1 2/3] serial: tegra-tcu: Make use of dev_err_probe() in .probe() Uwe Kleine-König
2026-08-12 15:25 ` [PATCH v1 3/3] serial: tegra-tcu: Make use of devm_mbox_request_channel_byname() Uwe Kleine-König
0 siblings, 2 replies; 3+ messages in thread
From: Uwe Kleine-König @ 2026-08-12 15:25 UTC (permalink / raw)
To: Jassi Brar
Cc: linux-kernel, Greg Kroah-Hartman, Jiri Slaby, Thierry Reding,
Jonathan Hunter, linux-serial, linux-tegra
Hello,
the first patch introduces devm variants of mbox request functions.
The second patch is just a minor cleanup preparing the third patch.
The third patch demos how the simplification looks like for a driver
using mbox channels.
This series is mostly about the first patch, I'll resend the serial
patches separately once the first patch is in. (If the serial
maintainers are enthusiastic about the 2nd patch: There is no dependency
on the first and it can go in already now; the third patch has to wait
however.)
Best regards
Uwe
Uwe Kleine-König (3):
mailbox: Provide devm variants for mbox_request_channel{,_byname}()
serial: tegra-tcu: Make use of dev_err_probe() in .probe()
serial: tegra-tcu: Make use of devm_mbox_request_channel_byname()
drivers/mailbox/mailbox.c | 44 ++++++++++++++++++++++++++++++++++
drivers/tty/serial/tegra-tcu.c | 32 ++++++++++---------------
include/linux/mailbox_client.h | 5 ++++
3 files changed, 62 insertions(+), 19 deletions(-)
base-commit: dc59e4fea9d83f03bad6bddf3fa2e52491777482
--
2.47.3
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v1 2/3] serial: tegra-tcu: Make use of dev_err_probe() in .probe()
2026-08-12 15:25 [PATCH v1 0/3] mailbox: Provide devm variants for mbox_request_channel{,_byname}() Uwe Kleine-König
@ 2026-08-12 15:25 ` Uwe Kleine-König
2026-08-12 15:25 ` [PATCH v1 3/3] serial: tegra-tcu: Make use of devm_mbox_request_channel_byname() Uwe Kleine-König
1 sibling, 0 replies; 3+ messages in thread
From: Uwe Kleine-König @ 2026-08-12 15:25 UTC (permalink / raw)
To: Jassi Brar
Cc: Greg Kroah-Hartman, Jiri Slaby, Thierry Reding, Jonathan Hunter,
linux-kernel, linux-serial, linux-tegra
Usage of dev_err_probe() is (sometimes) a bit more compact than
dev_err(), it properly handles ENOMEM and EPROBE_DEFER and emits the
error code symbolically.
Also introduce a variable to hold &pdev->dev to reduce line length a
bit.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
---
drivers/tty/serial/tegra-tcu.c | 22 ++++++++++------------
1 file changed, 10 insertions(+), 12 deletions(-)
diff --git a/drivers/tty/serial/tegra-tcu.c b/drivers/tty/serial/tegra-tcu.c
index 7033dbfe8ba1..077023ce1842 100644
--- a/drivers/tty/serial/tegra-tcu.c
+++ b/drivers/tty/serial/tegra-tcu.c
@@ -179,9 +179,10 @@ static int tegra_tcu_probe(struct platform_device *pdev)
{
struct uart_port *port;
struct tegra_tcu *tcu;
+ struct device *dev = &pdev->dev;
int err;
- tcu = devm_kzalloc(&pdev->dev, sizeof(*tcu), GFP_KERNEL);
+ tcu = devm_kzalloc(dev, sizeof(*tcu), GFP_KERNEL);
if (!tcu)
return -ENOMEM;
@@ -190,11 +191,9 @@ static int tegra_tcu_probe(struct platform_device *pdev)
tcu->rx_client.rx_callback = tegra_tcu_receive;
tcu->tx = mbox_request_channel_byname(&tcu->tx_client, "tx");
- if (IS_ERR(tcu->tx)) {
- err = PTR_ERR(tcu->tx);
- dev_err(&pdev->dev, "failed to get tx mailbox: %d\n", err);
- return err;
- }
+ if (IS_ERR(tcu->tx))
+ return dev_err_probe(dev, PTR_ERR(tcu->tx),
+ "failed to get tx mailbox\n");
#if IS_ENABLED(CONFIG_SERIAL_TEGRA_TCU_CONSOLE)
/* setup the console */
@@ -218,15 +217,14 @@ static int tegra_tcu_probe(struct platform_device *pdev)
err = uart_register_driver(&tcu->driver);
if (err) {
- dev_err(&pdev->dev, "failed to register UART driver: %d\n",
- err);
+ dev_err_probe(dev, err, "failed to register UART driver\n");
goto free_tx;
}
/* setup the port */
port = &tcu->port;
spin_lock_init(&port->lock);
- port->dev = &pdev->dev;
+ port->dev = dev;
port->type = PORT_TEGRA_TCU;
port->ops = &tegra_tcu_uart_ops;
port->fifosize = 1;
@@ -236,7 +234,7 @@ static int tegra_tcu_probe(struct platform_device *pdev)
err = uart_add_one_port(&tcu->driver, port);
if (err) {
- dev_err(&pdev->dev, "failed to add UART port: %d\n", err);
+ dev_err_probe(dev, err, "failed to add UART port\n");
goto unregister_uart;
}
@@ -246,8 +244,8 @@ static int tegra_tcu_probe(struct platform_device *pdev)
*/
tcu->rx = mbox_request_channel_byname(&tcu->rx_client, "rx");
if (IS_ERR(tcu->rx)) {
- err = PTR_ERR(tcu->rx);
- dev_err(&pdev->dev, "failed to get rx mailbox: %d\n", err);
+ err = dev_err_probe(dev, PTR_ERR(tcu->rx),
+ "failed to get rx mailbox\n");
goto remove_uart_port;
}
--
2.47.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v1 3/3] serial: tegra-tcu: Make use of devm_mbox_request_channel_byname()
2026-08-12 15:25 [PATCH v1 0/3] mailbox: Provide devm variants for mbox_request_channel{,_byname}() Uwe Kleine-König
2026-08-12 15:25 ` [PATCH v1 2/3] serial: tegra-tcu: Make use of dev_err_probe() in .probe() Uwe Kleine-König
@ 2026-08-12 15:25 ` Uwe Kleine-König
1 sibling, 0 replies; 3+ messages in thread
From: Uwe Kleine-König @ 2026-08-12 15:25 UTC (permalink / raw)
To: Jassi Brar
Cc: Greg Kroah-Hartman, Jiri Slaby, Thierry Reding, Jonathan Hunter,
linux-kernel, linux-serial, linux-tegra
Simplify tegra_tcu_probe() a bit by using the devm managed variant of
mbox_request_channel_byname(). For the rx channel the function cannot be
used without confusing the order of resource freeing.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
---
drivers/tty/serial/tegra-tcu.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/tty/serial/tegra-tcu.c b/drivers/tty/serial/tegra-tcu.c
index 077023ce1842..a3596ec24d34 100644
--- a/drivers/tty/serial/tegra-tcu.c
+++ b/drivers/tty/serial/tegra-tcu.c
@@ -190,7 +190,7 @@ static int tegra_tcu_probe(struct platform_device *pdev)
tcu->rx_client.dev = &pdev->dev;
tcu->rx_client.rx_callback = tegra_tcu_receive;
- tcu->tx = mbox_request_channel_byname(&tcu->tx_client, "tx");
+ tcu->tx = devm_mbox_request_channel_byname(dev, &tcu->tx_client, "tx");
if (IS_ERR(tcu->tx))
return dev_err_probe(dev, PTR_ERR(tcu->tx),
"failed to get tx mailbox\n");
@@ -216,10 +216,9 @@ static int tegra_tcu_probe(struct platform_device *pdev)
tcu->driver.nr = 1;
err = uart_register_driver(&tcu->driver);
- if (err) {
- dev_err_probe(dev, err, "failed to register UART driver\n");
- goto free_tx;
- }
+ if (err)
+ return dev_err_probe(dev, err,
+ "failed to register UART driver\n");
/* setup the port */
port = &tcu->port;
@@ -260,8 +259,6 @@ static int tegra_tcu_probe(struct platform_device *pdev)
uart_remove_one_port(&tcu->driver, &tcu->port);
unregister_uart:
uart_unregister_driver(&tcu->driver);
-free_tx:
- mbox_free_channel(tcu->tx);
return err;
}
@@ -276,7 +273,6 @@ static void tegra_tcu_remove(struct platform_device *pdev)
mbox_free_channel(tcu->rx);
uart_remove_one_port(&tcu->driver, &tcu->port);
uart_unregister_driver(&tcu->driver);
- mbox_free_channel(tcu->tx);
}
static const struct of_device_id tegra_tcu_match[] = {
--
2.47.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-08-12 15:26 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-12 15:25 [PATCH v1 0/3] mailbox: Provide devm variants for mbox_request_channel{,_byname}() Uwe Kleine-König
2026-08-12 15:25 ` [PATCH v1 2/3] serial: tegra-tcu: Make use of dev_err_probe() in .probe() Uwe Kleine-König
2026-08-12 15:25 ` [PATCH v1 3/3] serial: tegra-tcu: Make use of devm_mbox_request_channel_byname() Uwe Kleine-König
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox