mirror of https://github.com/hak5/openwrt.git
kernel: update bcma backporting changes up to 4.8
This allows building bcm47xxsflash on ARM. Signed-off-by: Rafał Miłecki <zajec5@gmail.com>lede-17.01
parent
d12e276cb0
commit
60d2620253
|
@ -66,6 +66,7 @@ CONFIG_BCMA_DRIVER_PCI=y
|
||||||
CONFIG_BCMA_HOST_PCI=y
|
CONFIG_BCMA_HOST_PCI=y
|
||||||
CONFIG_BCMA_HOST_PCI_POSSIBLE=y
|
CONFIG_BCMA_HOST_PCI_POSSIBLE=y
|
||||||
CONFIG_BCMA_HOST_SOC=y
|
CONFIG_BCMA_HOST_SOC=y
|
||||||
|
# CONFIG_BCMA_SFLASH is not set
|
||||||
CONFIG_BGMAC=y
|
CONFIG_BGMAC=y
|
||||||
CONFIG_BOUNCE=y
|
CONFIG_BOUNCE=y
|
||||||
CONFIG_CACHE_L2X0=y
|
CONFIG_CACHE_L2X0=y
|
||||||
|
|
|
@ -618,12 +618,13 @@
|
||||||
}
|
}
|
||||||
--- a/drivers/bcma/host_pci.c
|
--- a/drivers/bcma/host_pci.c
|
||||||
+++ b/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, 0x4358) },
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4359) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4359) },
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4360) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4360) },
|
||||||
- { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4365) },
|
- { 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_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, 0x43a0) },
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x43a9) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x43a9) },
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x43aa) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x43aa) },
|
||||||
|
@ -705,7 +706,51 @@
|
||||||
+}
|
+}
|
||||||
--- a/drivers/bcma/main.c
|
--- a/drivers/bcma/main.c
|
||||||
+++ b/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);
|
bcma_register_core(bus, core);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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) */
|
|
@ -128,7 +128,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||||
u32 size;
|
u32 size;
|
||||||
--- a/include/linux/bcma/bcma_driver_chipcommon.h
|
--- a/include/linux/bcma/bcma_driver_chipcommon.h
|
||||||
+++ b/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
|
#ifdef CONFIG_BCMA_SFLASH
|
||||||
struct bcma_sflash {
|
struct bcma_sflash {
|
||||||
bool present;
|
bool present;
|
||||||
|
|
Loading…
Reference in New Issue