Commit e8616bd0 authored by Jiri Slaby's avatar Jiri Slaby Committed by Greg Kroah-Hartman
Browse files

serial: pic32: simplify pic32_sport::enable_tx_irq handling



Make it a bool, so use true+false. And remove the wrap-around macro --
i.e. access the member directly.

It makes the code more obvious.

BTW the macro did not have 'sport' in parentheses, so it was potentially
problematic wrt expansion.

Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20220503063122.20957-6-jslaby@suse.cz


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent bb2cff41
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -63,7 +63,7 @@ struct pic32_sport {
	const char *irq_rx_name;
	int irq_tx;
	const char *irq_tx_name;
	u8 enable_tx_irq;
	bool enable_tx_irq;

	bool hw_flow_ctrl;
	int cts_gpio;
@@ -74,7 +74,6 @@ struct pic32_sport {
};
#define to_pic32_sport(c) container_of(c, struct pic32_sport, port)
#define pic32_get_port(sport) (&sport->port)
#define tx_irq_enabled(sport) (sport->enable_tx_irq)

static inline void pic32_uart_writel(struct pic32_sport *sport,
					u32 reg, u32 val)
@@ -195,16 +194,16 @@ static unsigned int pic32_uart_get_mctrl(struct uart_port *port)
 */
static inline void pic32_uart_irqtxen(struct pic32_sport *sport, u8 en)
{
	if (en && !tx_irq_enabled(sport)) {
	if (en && !sport->enable_tx_irq) {
		enable_irq(sport->irq_tx);
		tx_irq_enabled(sport) = 1;
	} else if (!en && tx_irq_enabled(sport)) {
		sport->enable_tx_irq = true;
	} else if (!en && sport->enable_tx_irq) {
		/* use disable_irq_nosync() and not disable_irq() to avoid self
		 * imposed deadlock by not waiting for irq handler to end,
		 * since this callback is called from interrupt context.
		 */
		disable_irq_nosync(sport->irq_tx);
		tx_irq_enabled(sport) = 0;
		sport->enable_tx_irq = false;
	}
}

@@ -497,7 +496,7 @@ static int pic32_uart_startup(struct uart_port *port)
	 * For each irq request_irq() is called with interrupt disabled.
	 * And the irq is enabled as soon as we are ready to handle them.
	 */
	tx_irq_enabled(sport) = 0;
	sport->enable_tx_irq = false;

	sport->irq_fault_name = kasprintf(GFP_KERNEL, "%s%d-fault",
					  pic32_uart_type(port),