Lines Matching +full:delay +full:- +full:line
1 // SPDX-License-Identifier: GPL-2.0
15 * We re-use the already existing "bug handling" lsr_saved_flags
27 int line; member
37 spin_lock_irqsave(&up->port.lock, flags); in fsl8250_handle_irq()
39 iir = port->serial_in(port, UART_IIR); in fsl8250_handle_irq()
41 spin_unlock_irqrestore(&up->port.lock, flags); in fsl8250_handle_irq()
46 if (unlikely(up->lsr_saved_flags & UART_LSR_BI)) { in fsl8250_handle_irq()
47 up->lsr_saved_flags &= ~UART_LSR_BI; in fsl8250_handle_irq()
48 port->serial_in(port, UART_RX); in fsl8250_handle_irq()
49 spin_unlock_irqrestore(&up->port.lock, flags); in fsl8250_handle_irq()
53 lsr = orig_lsr = up->port.serial_in(&up->port, UART_LSR); in fsl8250_handle_irq()
57 (up->ier & (UART_IER_RLSI | UART_IER_RDI))) { in fsl8250_handle_irq()
62 if ((orig_lsr & UART_LSR_OE) && (up->overrun_backoff_time_ms > 0)) { in fsl8250_handle_irq()
63 unsigned long delay; in fsl8250_handle_irq() local
65 up->ier = port->serial_in(port, UART_IER); in fsl8250_handle_irq()
66 if (up->ier & (UART_IER_RLSI | UART_IER_RDI)) { in fsl8250_handle_irq()
67 port->ops->stop_rx(port); in fsl8250_handle_irq()
72 cancel_delayed_work(&up->overrun_backoff); in fsl8250_handle_irq()
75 delay = msecs_to_jiffies(up->overrun_backoff_time_ms); in fsl8250_handle_irq()
76 schedule_delayed_work(&up->overrun_backoff, delay); in fsl8250_handle_irq()
81 if ((lsr & UART_LSR_THRE) && (up->ier & UART_IER_THRI)) in fsl8250_handle_irq()
84 up->lsr_saved_flags = orig_lsr; in fsl8250_handle_irq()
85 uart_unlock_and_check_sysrq(&up->port, flags); in fsl8250_handle_irq()
95 struct device *dev = &pdev->dev; in fsl8250_acpi_probe()
103 return -EINVAL; in fsl8250_acpi_probe()
108 if (irq != -EPROBE_DEFER) in fsl8250_acpi_probe()
115 ret = device_property_read_u32(dev, "clock-frequency", in fsl8250_acpi_probe()
122 port8250.port.mapbase = regs->start; in fsl8250_acpi_probe()
137 return -ENOMEM; in fsl8250_acpi_probe()
141 return -ENOMEM; in fsl8250_acpi_probe()
143 data->line = serial8250_register_8250_port(&port8250); in fsl8250_acpi_probe()
144 if (data->line < 0) in fsl8250_acpi_probe()
145 return data->line; in fsl8250_acpi_probe()
155 serial8250_unregister_port(data->line); in fsl8250_acpi_remove()
167 .name = "fsl-16550-uart",