- Add new ARM kernel option QEMU_WORKAROUNDS which can be
used in the code which needs to implement some specific behaviour when being run under QEMU. - Make PXA UART probe code to work under QEMU gumstix, which doesn't emulate all the ports properly.
This commit is contained in:
parent
351f30528e
commit
208cf1fbc3
@ -72,12 +72,28 @@ uart_pxa_probe(device_t dev)
|
||||
bus_space_handle_t base;
|
||||
struct uart_softc *sc;
|
||||
|
||||
/* Check to see if the enable bit's on. */
|
||||
base = (bus_space_handle_t)pxa_get_base(dev);
|
||||
#ifdef QEMU_WORKAROUNDS
|
||||
/*
|
||||
* QEMU really exposes only the first uart unless
|
||||
* you specify several of them in the configuration.
|
||||
* Otherwise all the rest of UARTs stay unconnected,
|
||||
* which causes problems in the ns16550 attach routine.
|
||||
* Unfortunately, even if you provide qemu with 4 uarts
|
||||
* on the command line, it has a bug where it segfaults
|
||||
* trying to enable bluetooth on the HWUART. So we just
|
||||
* allow the FFUART to be attached.
|
||||
* Also, don't check the UUE (UART Unit Enable) bit, as
|
||||
* the gumstix bootloader doesn't set it.
|
||||
*/
|
||||
if (base != PXA2X0_FFUART_BASE)
|
||||
return (ENXIO);
|
||||
#else
|
||||
/* Check to see if the enable bit's on. */
|
||||
if ((bus_space_read_4(obio_tag, base,
|
||||
(REG_IER << 2)) & PXA_UART_UUE) == 0)
|
||||
return (ENXIO);
|
||||
|
||||
#endif
|
||||
sc = device_get_softc(dev);
|
||||
sc->sc_class = &uart_ns8250_class;
|
||||
|
||||
|
@ -23,6 +23,7 @@ KERNPHYSADDR opt_global.h
|
||||
KERNVIRTADDR opt_global.h
|
||||
LOADERRAMADDR opt_global.h
|
||||
PHYSADDR opt_global.h
|
||||
QEMU_WORKAROUNDS opt_global.h
|
||||
SKYEYE_WORKAROUNDS opt_global.h
|
||||
SOC_MV_DISCOVERY opt_global.h
|
||||
SOC_MV_KIRKWOOD opt_global.h
|
||||
|
Loading…
Reference in New Issue
Block a user