forked from luck/tmp_suning_uos_patched
powerpc/pmac: Fix internal modem IRQ on Wallstreet PowerBook
The (relatively) new pmac_zilog driver doesn't use the pre-munged IRQ numbers from the macio_dev unlike other macio things, it directly maps it off the OF device-tree. It does that because it can be initialized much earlier than the registration of the macio devices, in order to get a serial console early. Unfortunately, that means that it "misses" some fixups done by the macio layer to work around missing interrupt descriptions in the device-tree of the Wallstreet machines. This patch brings the necessary workaround into the pmac_zilog driver itself to bring it back to working condition. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
b6966b1be5
commit
f08b7e9f55
|
@ -1538,6 +1538,21 @@ static int __init pmz_init_port(struct uart_pmac_port *uap)
|
|||
uap->port.type = PORT_PMAC_ZILOG;
|
||||
uap->port.flags = 0;
|
||||
|
||||
/*
|
||||
* Fixup for the port on Gatwick for which the device-tree has
|
||||
* missing interrupts. Normally, the macio_dev would contain
|
||||
* fixed up interrupt info, but we use the device-tree directly
|
||||
* here due to early probing so we need the fixup too.
|
||||
*/
|
||||
if (uap->port.irq == NO_IRQ &&
|
||||
np->parent && np->parent->parent &&
|
||||
of_device_is_compatible(np->parent->parent, "gatwick")) {
|
||||
/* IRQs on gatwick are offset by 64 */
|
||||
uap->port.irq = irq_create_mapping(NULL, 64 + 15);
|
||||
uap->tx_dma_irq = irq_create_mapping(NULL, 64 + 4);
|
||||
uap->rx_dma_irq = irq_create_mapping(NULL, 64 + 5);
|
||||
}
|
||||
|
||||
/* Setup some valid baud rate information in the register
|
||||
* shadows so we don't write crap there before baud rate is
|
||||
* first initialized.
|
||||
|
|
Loading…
Reference in New Issue
Block a user