mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-15 14:25:03 -05:00
serial: 8250: introduce RPM guard()s
Having this, guards like these work:
guard(serial8250_rpm)(up);
or
scoped_guard(serial8250_rpm, up) {
...
}
See e.g. "serial: 8250: use guard()s" later in this series.
And make them available to anyone (EXPORT + put in 8250.h) as drivers
open code this anyway.
The _tx ones are not defined as they would have no user.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
Link: https://lore.kernel.org/r/20250814072456.182853-5-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
0fd60b689b
commit
9f8da7b2f9
@@ -186,6 +186,11 @@ static unsigned int __maybe_unused serial_icr_read(struct uart_8250_port *up,
|
||||
|
||||
void serial8250_clear_and_reinit_fifos(struct uart_8250_port *p);
|
||||
|
||||
void serial8250_rpm_get(struct uart_8250_port *p);
|
||||
void serial8250_rpm_put(struct uart_8250_port *p);
|
||||
DEFINE_GUARD(serial8250_rpm, struct uart_8250_port *,
|
||||
serial8250_rpm_get(_T), serial8250_rpm_put(_T));
|
||||
|
||||
static inline u32 serial_dl_read(struct uart_8250_port *up)
|
||||
{
|
||||
return up->dl_read(up);
|
||||
|
||||
@@ -508,20 +508,22 @@ void serial8250_clear_and_reinit_fifos(struct uart_8250_port *p)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(serial8250_clear_and_reinit_fifos);
|
||||
|
||||
static void serial8250_rpm_get(struct uart_8250_port *p)
|
||||
void serial8250_rpm_get(struct uart_8250_port *p)
|
||||
{
|
||||
if (!(p->capabilities & UART_CAP_RPM))
|
||||
return;
|
||||
pm_runtime_get_sync(p->port.dev);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(serial8250_rpm_get);
|
||||
|
||||
static void serial8250_rpm_put(struct uart_8250_port *p)
|
||||
void serial8250_rpm_put(struct uart_8250_port *p)
|
||||
{
|
||||
if (!(p->capabilities & UART_CAP_RPM))
|
||||
return;
|
||||
pm_runtime_mark_last_busy(p->port.dev);
|
||||
pm_runtime_put_autosuspend(p->port.dev);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(serial8250_rpm_put);
|
||||
|
||||
/**
|
||||
* serial8250_em485_init() - put uart_8250_port into rs485 emulating
|
||||
|
||||
Reference in New Issue
Block a user