From 60d26202537d95aeda2d9903ab8668ce9cc7326b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Wed, 20 Jul 2016 13:41:42 +0200 Subject: [PATCH] kernel: update bcma backporting changes up to 4.8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows building bcm47xxsflash on ARM. Signed-off-by: Rafał Miłecki --- target/linux/bcm53xx/config-4.4 | 1 + .../patches-4.4/021-bcma-from-4.6.patch | 49 ++++++++++++++++- .../patches-4.4/022-bcma-from-4.8.patch | 52 +++++++++++++++++++ ...h-use-ioremap_cache-instead-of-KSEG0.patch | 2 +- 4 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 target/linux/generic/patches-4.4/022-bcma-from-4.8.patch diff --git a/target/linux/bcm53xx/config-4.4 b/target/linux/bcm53xx/config-4.4 index b1580319e3..2082752434 100644 --- a/target/linux/bcm53xx/config-4.4 +++ b/target/linux/bcm53xx/config-4.4 @@ -66,6 +66,7 @@ CONFIG_BCMA_DRIVER_PCI=y CONFIG_BCMA_HOST_PCI=y CONFIG_BCMA_HOST_PCI_POSSIBLE=y CONFIG_BCMA_HOST_SOC=y +# CONFIG_BCMA_SFLASH is not set CONFIG_BGMAC=y CONFIG_BOUNCE=y CONFIG_CACHE_L2X0=y diff --git a/target/linux/generic/patches-4.4/021-bcma-from-4.6.patch b/target/linux/generic/patches-4.4/021-bcma-from-4.6.patch index b09f4e7f5c..8d903694c5 100644 --- a/target/linux/generic/patches-4.4/021-bcma-from-4.6.patch +++ b/target/linux/generic/patches-4.4/021-bcma-from-4.6.patch @@ -618,12 +618,13 @@ } --- a/drivers/bcma/host_pci.c +++ b/drivers/bcma/host_pci.c -@@ -294,7 +294,7 @@ static const struct pci_device_id bcma_p +@@ -294,7 +294,8 @@ static const struct pci_device_id bcma_p { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4358) }, { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4359) }, { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4360) }, - { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4365) }, + { PCI_DEVICE_SUB(PCI_VENDOR_ID_BROADCOM, 0x4365, PCI_VENDOR_ID_DELL, 0x0016) }, ++ { PCI_DEVICE_SUB(PCI_VENDOR_ID_BROADCOM, 0x4365, PCI_VENDOR_ID_FOXCONN, 0xe092) }, { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x43a0) }, { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x43a9) }, { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x43aa) }, @@ -705,7 +706,51 @@ +} --- a/drivers/bcma/main.c +++ b/drivers/bcma/main.c -@@ -350,7 +350,7 @@ static int bcma_register_devices(struct +@@ -136,7 +136,6 @@ static bool bcma_is_core_needed_early(u1 + return false; + } + +-#if defined(CONFIG_OF) && defined(CONFIG_OF_ADDRESS) + static struct device_node *bcma_of_find_child_device(struct platform_device *parent, + struct bcma_device *core) + { +@@ -184,7 +183,7 @@ static unsigned int bcma_of_get_irq(stru + struct of_phandle_args out_irq; + int ret; + +- if (!parent || !parent->dev.of_node) ++ if (!IS_ENABLED(CONFIG_OF_IRQ) || !parent || !parent->dev.of_node) + return 0; + + ret = bcma_of_irq_parse(parent, core, &out_irq, num); +@@ -202,23 +201,15 @@ static void bcma_of_fill_device(struct p + { + struct device_node *node; + ++ if (!IS_ENABLED(CONFIG_OF_IRQ)) ++ return; ++ + node = bcma_of_find_child_device(parent, core); + if (node) + core->dev.of_node = node; + + core->irq = bcma_of_get_irq(parent, core, 0); + } +-#else +-static void bcma_of_fill_device(struct platform_device *parent, +- struct bcma_device *core) +-{ +-} +-static inline unsigned int bcma_of_get_irq(struct platform_device *parent, +- struct bcma_device *core, int num) +-{ +- return 0; +-} +-#endif /* CONFIG_OF */ + + unsigned int bcma_core_irq(struct bcma_device *core, int num) + { +@@ -350,7 +341,7 @@ static int bcma_register_devices(struct bcma_register_core(bus, core); } diff --git a/target/linux/generic/patches-4.4/022-bcma-from-4.8.patch b/target/linux/generic/patches-4.4/022-bcma-from-4.8.patch new file mode 100644 index 0000000000..3ff4e94967 --- /dev/null +++ b/target/linux/generic/patches-4.4/022-bcma-from-4.8.patch @@ -0,0 +1,52 @@ +--- a/drivers/bcma/Kconfig ++++ b/drivers/bcma/Kconfig +@@ -76,9 +76,16 @@ config BCMA_PFLASH + default y + + config BCMA_SFLASH +- bool +- depends on BCMA_DRIVER_MIPS ++ bool "ChipCommon-attached serial flash support" ++ depends on BCMA_HOST_SOC + default y ++ help ++ Some cheap devices have serial flash connected to the ChipCommon ++ instead of independent SPI controller. It requires using a separated ++ driver that implements ChipCommon specific interface communication. ++ ++ Enabling this symbol will let bcma recognize serial flash and register ++ it as platform device. + + config BCMA_NFLASH + bool +--- a/drivers/bcma/driver_chipcommon_b.c ++++ b/drivers/bcma/driver_chipcommon_b.c +@@ -33,11 +33,12 @@ static bool bcma_wait_reg(struct bcma_bu + void bcma_chipco_b_mii_write(struct bcma_drv_cc_b *ccb, u32 offset, u32 value) + { + struct bcma_bus *bus = ccb->core->bus; ++ void __iomem *mii = ccb->mii; + +- writel(offset, ccb->mii + 0x00); +- bcma_wait_reg(bus, ccb->mii + 0x00, 0x0100, 0x0000, 100); +- writel(value, ccb->mii + 0x04); +- bcma_wait_reg(bus, ccb->mii + 0x00, 0x0100, 0x0000, 100); ++ writel(offset, mii + BCMA_CCB_MII_MNG_CTL); ++ bcma_wait_reg(bus, mii + BCMA_CCB_MII_MNG_CTL, 0x0100, 0x0000, 100); ++ writel(value, mii + BCMA_CCB_MII_MNG_CMD_DATA); ++ bcma_wait_reg(bus, mii + BCMA_CCB_MII_MNG_CTL, 0x0100, 0x0000, 100); + } + EXPORT_SYMBOL_GPL(bcma_chipco_b_mii_write); + +--- a/include/linux/bcma/bcma_driver_chipcommon.h ++++ b/include/linux/bcma/bcma_driver_chipcommon.h +@@ -504,6 +504,9 @@ + #define BCMA_CC_PMU1_PLL0_PC2_NDIV_INT_MASK 0x1ff00000 + #define BCMA_CC_PMU1_PLL0_PC2_NDIV_INT_SHIFT 20 + ++#define BCMA_CCB_MII_MNG_CTL 0x0000 ++#define BCMA_CCB_MII_MNG_CMD_DATA 0x0004 ++ + /* BCM4331 ChipControl numbers. */ + #define BCMA_CHIPCTL_4331_BT_COEXIST BIT(0) /* 0 disable */ + #define BCMA_CHIPCTL_4331_SECI BIT(1) /* 0 SECI is disabled (JATG functional) */ diff --git a/target/linux/generic/patches-4.4/042-0001-mtd-bcm47xxsflash-use-ioremap_cache-instead-of-KSEG0.patch b/target/linux/generic/patches-4.4/042-0001-mtd-bcm47xxsflash-use-ioremap_cache-instead-of-KSEG0.patch index a401e55b44..89f1e5eccf 100644 --- a/target/linux/generic/patches-4.4/042-0001-mtd-bcm47xxsflash-use-ioremap_cache-instead-of-KSEG0.patch +++ b/target/linux/generic/patches-4.4/042-0001-mtd-bcm47xxsflash-use-ioremap_cache-instead-of-KSEG0.patch @@ -128,7 +128,7 @@ Signed-off-by: Rafał Miłecki u32 size; --- a/include/linux/bcma/bcma_driver_chipcommon.h +++ b/include/linux/bcma/bcma_driver_chipcommon.h -@@ -585,7 +585,6 @@ struct bcma_pflash { +@@ -588,7 +588,6 @@ struct bcma_pflash { #ifdef CONFIG_BCMA_SFLASH struct bcma_sflash { bool present;