Lines Matching +full:carry +full:- +full:less

1 // SPDX-License-Identifier: GPL-2.0
15 * We re-use the already existing "bug handling" lsr_saved_flags
16 * field to carry the "what we just did" information from the one
33 spin_lock_irqsave(&up->port.lock, flags); in fsl8250_handle_irq()
35 iir = port->serial_in(port, UART_IIR); in fsl8250_handle_irq()
37 spin_unlock_irqrestore(&up->port.lock, flags); in fsl8250_handle_irq()
46 * In practise it's less (around 500) because of hardware in fsl8250_handle_irq()
54 if (unlikely(up->lsr_saved_flags & UART_LSR_BI)) { in fsl8250_handle_irq()
55 up->lsr_saved_flags &= ~UART_LSR_BI; in fsl8250_handle_irq()
56 port->serial_in(port, UART_RX); in fsl8250_handle_irq()
57 spin_unlock_irqrestore(&up->port.lock, flags); in fsl8250_handle_irq()
61 lsr = orig_lsr = up->port.serial_in(&up->port, UART_LSR); in fsl8250_handle_irq()
65 (up->ier & (UART_IER_RLSI | UART_IER_RDI))) { in fsl8250_handle_irq()
70 if ((orig_lsr & UART_LSR_OE) && (up->overrun_backoff_time_ms > 0)) { in fsl8250_handle_irq()
73 up->ier = port->serial_in(port, UART_IER); in fsl8250_handle_irq()
74 if (up->ier & (UART_IER_RLSI | UART_IER_RDI)) { in fsl8250_handle_irq()
75 port->ops->stop_rx(port); in fsl8250_handle_irq()
80 cancel_delayed_work(&up->overrun_backoff); in fsl8250_handle_irq()
83 delay = msecs_to_jiffies(up->overrun_backoff_time_ms); in fsl8250_handle_irq()
84 schedule_delayed_work(&up->overrun_backoff, delay); in fsl8250_handle_irq()
89 if ((lsr & UART_LSR_THRE) && (up->ier & UART_IER_THRI)) in fsl8250_handle_irq()
92 up->lsr_saved_flags |= orig_lsr & UART_LSR_BI; in fsl8250_handle_irq()
94 uart_unlock_and_check_sysrq_irqrestore(&up->port, flags); in fsl8250_handle_irq()
109 struct device *dev = &pdev->dev; in fsl8250_acpi_probe()
117 return -EINVAL; in fsl8250_acpi_probe()
126 ret = device_property_read_u32(dev, "clock-frequency", in fsl8250_acpi_probe()
133 port8250.port.mapbase = regs->start; in fsl8250_acpi_probe()
148 return -ENOMEM; in fsl8250_acpi_probe()
152 return -ENOMEM; in fsl8250_acpi_probe()
154 data->line = serial8250_register_8250_port(&port8250); in fsl8250_acpi_probe()
155 if (data->line < 0) in fsl8250_acpi_probe()
156 return data->line; in fsl8250_acpi_probe()
166 serial8250_unregister_port(data->line); in fsl8250_acpi_remove()
178 .name = "fsl-16550-uart",