diff options
author | Paul Wassi <p.wassi@gmx.at> | 2018-03-13 09:43:43 +0100 |
---|---|---|
committer | Rafał Miłecki <rafal@milecki.pl> | 2018-04-03 22:57:10 +0200 |
commit | de79f4ab882b2955432eb8104fd5426745262e83 (patch) | |
tree | 248ead4b61c5a46f3a434c5aa66937b515131887 /target/linux/brcm47xx/patches-4.14/940-bcm47xx-yenta.patch | |
parent | 986f80595b765085d1cadd24988d2d8ade172146 (diff) | |
download | upstream-de79f4ab882b2955432eb8104fd5426745262e83.tar.gz upstream-de79f4ab882b2955432eb8104fd5426745262e83.tar.bz2 upstream-de79f4ab882b2955432eb8104fd5426745262e83.zip |
brcm47xx: add kernel 4.14 support
Add patches for 4.14, drop patch 030 since it's already included
upstream.
Tested on:
1) WRT54GL (with RAM upgraded to 32 MiB)
2) WL500gPv2 (with RAM upgraded to 64 MiB)
3) BCM47186B0 SoC board
4) BCM4706 SoC board
Signed-off-by: Paul Wassi <p.wassi@gmx.at>
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Diffstat (limited to 'target/linux/brcm47xx/patches-4.14/940-bcm47xx-yenta.patch')
-rw-r--r-- | target/linux/brcm47xx/patches-4.14/940-bcm47xx-yenta.patch | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/target/linux/brcm47xx/patches-4.14/940-bcm47xx-yenta.patch b/target/linux/brcm47xx/patches-4.14/940-bcm47xx-yenta.patch new file mode 100644 index 0000000000..00a44d6317 --- /dev/null +++ b/target/linux/brcm47xx/patches-4.14/940-bcm47xx-yenta.patch @@ -0,0 +1,46 @@ +--- a/drivers/pcmcia/yenta_socket.c ++++ b/drivers/pcmcia/yenta_socket.c +@@ -919,6 +919,8 @@ static unsigned int yenta_probe_irq(stru + * Probe for usable interrupts using the force + * register to generate bogus card status events. + */ ++#ifndef CONFIG_BCM47XX ++ /* WRT54G3G does not like this */ + cb_writel(socket, CB_SOCKET_EVENT, -1); + cb_writel(socket, CB_SOCKET_MASK, CB_CSTSMASK); + reg = exca_readb(socket, I365_CSCINT); +@@ -934,6 +936,7 @@ static unsigned int yenta_probe_irq(stru + } + cb_writel(socket, CB_SOCKET_MASK, 0); + exca_writeb(socket, I365_CSCINT, reg); ++#endif + + mask = probe_irq_mask(val) & 0xffff; + +@@ -1018,6 +1021,10 @@ static void yenta_get_socket_capabilitie + else + socket->socket.irq_mask = 0; + ++ /* irq mask probing is broken for the WRT54G3G */ ++ if (socket->socket.irq_mask == 0) ++ socket->socket.irq_mask = 0x6f8; ++ + dev_info(&socket->dev->dev, "ISA IRQ mask 0x%04x, PCI irq %d\n", + socket->socket.irq_mask, socket->cb_irq); + } +@@ -1250,6 +1257,15 @@ static int yenta_probe(struct pci_dev *d + dev_info(&dev->dev, "Socket status: %08x\n", + cb_readl(socket, CB_SOCKET_STATE)); + ++ /* Generate an interrupt on card insert/remove */ ++ config_writew(socket, CB_SOCKET_MASK, CB_CSTSMASK | CB_CDMASK); ++ ++ /* Set up Multifunction Routing Status Register */ ++ config_writew(socket, 0x8C, 0x1000 /* MFUNC3 to GPIO3 */ | 0x2 /* MFUNC0 to INTA */); ++ ++ /* Switch interrupts to parallelized */ ++ config_writeb(socket, 0x92, 0x64); ++ + yenta_fixup_parent_bridge(dev->subordinate); + + /* Register it with the pcmcia layer.. */ |