mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
ns16550: use poll mode if INTERRUPT_LINE is 0xff
Intel LPSS has INTERRUPT_LINE set to 0xff by default, that is declared by the PCI Local Bus Specification Revision 3.0 (from 2004) as "unknown"/"no connection". Fallback to poll mode in this case. The 0xff handling is x86-specific, the surrounding code is guarded with CONFIG_X86 anyway. Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
This commit is contained in:
1 parent
488a15a669
commit
6a2ea1a237
1 file changed
+13
@@ -1316,6 +1316,19 @@ pci_uart_config(struct ns16550 *uart, bool_t skip_amt, unsigned int idx)
|
||||
pci_conf_read8(PCI_SBDF(0, b, d, f),
|
||||
PCI_INTERRUPT_LINE) : 0;
|
||||
|
||||
#ifdef CONFIG_X86
|
||||
/*
|
||||
* PCI Local Bus Specification Revision 3.0 defines 0xff value
|
||||
* as special only for X86.
|
||||
*/
|
||||
if ( uart->irq == 0xff )
|
||||
uart->irq = 0;
|
||||
#endif
|
||||
if ( !uart->irq )
|
||||
printk(XENLOG_INFO
|
||||
"ns16550: %pp: no legacy IRQ, using poll mode\n",
|
||||
&PCI_SBDF(0, b, d, f));
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||