freebsd-skq/sys/dev/uart
Marcel Moolenaar eced428604 Fix hangs caused by z8530_bus_ipend() returning UART_IPEND_TXIDLE
not as a pending interrupt status, but as a matter of status quo.
Consequently, when there's no data to be transmitted the condition
is not cleared and uart_intr() is stuck in an infinite loop trying
to clear the UART_IPEND_TXIDLE status.
The z8530_bus_ipend() function is changed to return idle only once
after having sent any data.

The root cause for this problem is that we cannot use the interrupt
status bits of the SCC itself. The register that holds the interrupt
status can only be accessed by channel A and holds the status for
both channels. Using the interrupt status register would complicate
the driver because we need to synchronize access to the SCC between
the channels.

Elementary testing: marius
2004-05-04 06:58:10 +00:00
..
uart_bus_acpi.c Revert the introduction of iobase in struct uart_bas. Both the SAB82532 2003-09-26 05:14:56 +00:00
uart_bus_ebus.c In uart_ebus_probe(), match "su_pnp" besides "su" for ns8250 family 2004-04-03 23:02:02 +00:00
uart_bus_isa.c Revert the introduction of iobase in struct uart_bas. Both the SAB82532 2003-09-26 05:14:56 +00:00
uart_bus_pccard.c Include pccard/pccard_cis.h here too 2003-10-07 04:26:14 +00:00
uart_bus_pci.c Sometimes cardbus attachments don't attach, so while we track down 2003-11-28 05:28:29 +00:00
uart_bus_puc.c Revert the introduction of iobase in struct uart_bas. Both the SAB82532 2003-09-26 05:14:56 +00:00
uart_bus.h Revert the introduction of iobase in struct uart_bas. Both the SAB82532 2003-09-26 05:14:56 +00:00
uart_core.c When the interrupt cannot be INTR_FAST, it still is INTR_MPSAFE. 2004-05-04 05:54:02 +00:00
uart_cpu_alpha.c Introduce the hw.uart.console and hw.uart.dbgport environment variables 2004-03-20 02:14:02 +00:00
uart_cpu_amd64.c Introduce the hw.uart.console and hw.uart.dbgport environment variables 2004-03-20 02:14:02 +00:00
uart_cpu_i386.c Introduce the hw.uart.console and hw.uart.dbgport environment variables 2004-03-20 02:14:02 +00:00
uart_cpu_ia64.c Introduce the hw.uart.console and hw.uart.dbgport environment variables 2004-03-20 02:14:02 +00:00
uart_cpu_pc98.c Introduce the hw.uart.console and hw.uart.dbgport environment variables 2004-03-20 02:14:02 +00:00
uart_cpu_sparc64.c To quote submitter: 2004-04-04 05:06:26 +00:00
uart_cpu.h Introduce the hw.uart.console and hw.uart.dbgport environment variables 2004-03-20 02:14:02 +00:00
uart_dev_i8251.c In uart_intr() loop until all interrupts have been handled. Previously 2003-09-17 03:11:32 +00:00
uart_dev_i8251.h
uart_dev_ns8250.c In ns8250_putc() insert a barrier between writing the character and 2004-04-02 07:37:28 +00:00
uart_dev_ns8250.h
uart_dev_sab82532.c Don't mask TCD in IMR0 when we initialize the channel. Doing so makes 2004-04-25 04:30:40 +00:00
uart_dev_sab82532.h
uart_dev_z8530.c Fix hangs caused by z8530_bus_ipend() returning UART_IPEND_TXIDLE 2004-05-04 06:58:10 +00:00
uart_dev_z8530.h
uart_if.m Add locking to the hardware drivers. I intended to figure out more 2003-09-17 01:41:21 +00:00
uart_kbd_sun_tables.h Add a uart attachment/syscons keyboard driver for sun keyboards. In theory 2003-11-11 07:33:24 +00:00
uart_kbd_sun.c Call kbd_attach() only when KBD_INSTALL_CDEV is enabled as the function 2004-04-02 05:59:06 +00:00
uart_kbd_sun.h Add a uart attachment/syscons keyboard driver for sun keyboards. In theory 2003-11-11 07:33:24 +00:00
uart_subr.c Fix braino in previous commit: getenv() can return NULL. 2004-03-20 08:38:33 +00:00
uart_tty.c Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
uart.h Revert the introduction of iobase in struct uart_bas. Both the SAB82532 2003-09-26 05:14:56 +00:00