mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
kernel: ssb/bcma: update to version from wireless-testing tag master-2012-05-16-2
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31772 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
@@ -14,7 +14,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
|
||||
--- a/drivers/bcma/host_pci.c
|
||||
+++ b/drivers/bcma/host_pci.c
|
||||
@@ -269,6 +269,7 @@ static DEFINE_PCI_DEVICE_TABLE(bcma_pci_
|
||||
@@ -272,6 +272,7 @@ static DEFINE_PCI_DEVICE_TABLE(bcma_pci_
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4353) },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4357) },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4727) },
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
--- a/drivers/bcma/sprom.c
|
||||
+++ b/drivers/bcma/sprom.c
|
||||
@@ -404,16 +404,19 @@ int bcma_sprom_get(struct bcma_bus *bus)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (!bcma_sprom_ext_available(bus)) {
|
||||
+ bool sprom_onchip;
|
||||
+
|
||||
/*
|
||||
* External SPROM takes precedence so check
|
||||
* on-chip OTP only when no external SPROM
|
||||
* is present.
|
||||
*/
|
||||
- if (bcma_sprom_onchip_available(bus)) {
|
||||
+ sprom_onchip = bcma_sprom_onchip_available(bus);
|
||||
+ if (sprom_onchip) {
|
||||
/* determine offset */
|
||||
offset = bcma_sprom_onchip_offset(bus);
|
||||
}
|
||||
- if (!offset) {
|
||||
+ if (!offset || !sprom_onchip) {
|
||||
/*
|
||||
* Maybe there is no SPROM on the device?
|
||||
* Now we ask the arch code if there is some sprom
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/bcma/scan.c
|
||||
+++ b/drivers/bcma/scan.c
|
||||
@@ -297,6 +297,23 @@ static int bcma_get_next_core(struct bcm
|
||||
@@ -323,6 +323,23 @@ static int bcma_get_next_core(struct bcm
|
||||
return -EILSEQ;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
/* get & parse slave ports */
|
||||
for (i = 0; i < ports[1]; i++) {
|
||||
for (j = 0; ; j++) {
|
||||
@@ -309,7 +326,7 @@ static int bcma_get_next_core(struct bcm
|
||||
@@ -335,7 +352,7 @@ static int bcma_get_next_core(struct bcm
|
||||
break;
|
||||
} else {
|
||||
if (i == 0 && j == 0)
|
||||
@@ -35,7 +35,7 @@
|
||||
}
|
||||
--- a/include/linux/bcma/bcma.h
|
||||
+++ b/include/linux/bcma/bcma.h
|
||||
@@ -139,6 +139,7 @@ struct bcma_device {
|
||||
@@ -144,6 +144,7 @@ struct bcma_device {
|
||||
u8 core_unit;
|
||||
|
||||
u32 addr;
|
||||
|
||||
@@ -1,99 +0,0 @@
|
||||
--- a/drivers/bcma/scan.c
|
||||
+++ b/drivers/bcma/scan.c
|
||||
@@ -19,7 +19,14 @@ struct bcma_device_id_name {
|
||||
u16 id;
|
||||
const char *name;
|
||||
};
|
||||
-struct bcma_device_id_name bcma_device_names[] = {
|
||||
+
|
||||
+static const struct bcma_device_id_name bcma_arm_device_names[] = {
|
||||
+ { BCMA_CORE_ARM_1176, "ARM 1176" },
|
||||
+ { BCMA_CORE_ARM_7TDMI, "ARM 7TDMI" },
|
||||
+ { BCMA_CORE_ARM_CM3, "ARM CM3" },
|
||||
+};
|
||||
+
|
||||
+static const struct bcma_device_id_name bcma_bcm_device_names[] = {
|
||||
{ BCMA_CORE_OOB_ROUTER, "OOB Router" },
|
||||
{ BCMA_CORE_INVALID, "Invalid" },
|
||||
{ BCMA_CORE_CHIPCOMMON, "ChipCommon" },
|
||||
@@ -27,7 +34,6 @@ struct bcma_device_id_name bcma_device_n
|
||||
{ BCMA_CORE_SRAM, "SRAM" },
|
||||
{ BCMA_CORE_SDRAM, "SDRAM" },
|
||||
{ BCMA_CORE_PCI, "PCI" },
|
||||
- { BCMA_CORE_MIPS, "MIPS" },
|
||||
{ BCMA_CORE_ETHERNET, "Fast Ethernet" },
|
||||
{ BCMA_CORE_V90, "V90" },
|
||||
{ BCMA_CORE_USB11_HOSTDEV, "USB 1.1 Hostdev" },
|
||||
@@ -44,7 +50,6 @@ struct bcma_device_id_name bcma_device_n
|
||||
{ BCMA_CORE_PHY_A, "PHY A" },
|
||||
{ BCMA_CORE_PHY_B, "PHY B" },
|
||||
{ BCMA_CORE_PHY_G, "PHY G" },
|
||||
- { BCMA_CORE_MIPS_3302, "MIPS 3302" },
|
||||
{ BCMA_CORE_USB11_HOST, "USB 1.1 Host" },
|
||||
{ BCMA_CORE_USB11_DEV, "USB 1.1 Device" },
|
||||
{ BCMA_CORE_USB20_HOST, "USB 2.0 Host" },
|
||||
@@ -58,15 +63,11 @@ struct bcma_device_id_name bcma_device_n
|
||||
{ BCMA_CORE_PHY_N, "PHY N" },
|
||||
{ BCMA_CORE_SRAM_CTL, "SRAM Controller" },
|
||||
{ BCMA_CORE_MINI_MACPHY, "Mini MACPHY" },
|
||||
- { BCMA_CORE_ARM_1176, "ARM 1176" },
|
||||
- { BCMA_CORE_ARM_7TDMI, "ARM 7TDMI" },
|
||||
{ BCMA_CORE_PHY_LP, "PHY LP" },
|
||||
{ BCMA_CORE_PMU, "PMU" },
|
||||
{ BCMA_CORE_PHY_SSN, "PHY SSN" },
|
||||
{ BCMA_CORE_SDIO_DEV, "SDIO Device" },
|
||||
- { BCMA_CORE_ARM_CM3, "ARM CM3" },
|
||||
{ BCMA_CORE_PHY_HT, "PHY HT" },
|
||||
- { BCMA_CORE_MIPS_74K, "MIPS 74K" },
|
||||
{ BCMA_CORE_MAC_GBIT, "GBit MAC" },
|
||||
{ BCMA_CORE_DDR12_MEM_CTL, "DDR1/DDR2 Memory Controller" },
|
||||
{ BCMA_CORE_PCIE_RC, "PCIe Root Complex" },
|
||||
@@ -79,16 +80,41 @@ struct bcma_device_id_name bcma_device_n
|
||||
{ BCMA_CORE_SHIM, "SHIM" },
|
||||
{ BCMA_CORE_DEFAULT, "Default" },
|
||||
};
|
||||
-const char *bcma_device_name(struct bcma_device_id *id)
|
||||
+
|
||||
+static const struct bcma_device_id_name bcma_mips_device_names[] = {
|
||||
+ { BCMA_CORE_MIPS, "MIPS" },
|
||||
+ { BCMA_CORE_MIPS_3302, "MIPS 3302" },
|
||||
+ { BCMA_CORE_MIPS_74K, "MIPS 74K" },
|
||||
+};
|
||||
+
|
||||
+static const char *bcma_device_name(const struct bcma_device_id *id)
|
||||
{
|
||||
- int i;
|
||||
+ const struct bcma_device_id_name *names;
|
||||
+ int size, i;
|
||||
|
||||
- if (id->manuf == BCMA_MANUF_BCM) {
|
||||
- for (i = 0; i < ARRAY_SIZE(bcma_device_names); i++) {
|
||||
- if (bcma_device_names[i].id == id->id)
|
||||
- return bcma_device_names[i].name;
|
||||
- }
|
||||
+ /* search manufacturer specific names */
|
||||
+ switch (id->manuf) {
|
||||
+ case BCMA_MANUF_ARM:
|
||||
+ names = bcma_arm_device_names;
|
||||
+ size = ARRAY_SIZE(bcma_arm_device_names);
|
||||
+ break;
|
||||
+ case BCMA_MANUF_BCM:
|
||||
+ names = bcma_bcm_device_names;
|
||||
+ size = ARRAY_SIZE(bcma_bcm_device_names);
|
||||
+ break;
|
||||
+ case BCMA_MANUF_MIPS:
|
||||
+ names = bcma_mips_device_names;
|
||||
+ size = ARRAY_SIZE(bcma_mips_device_names);
|
||||
+ break;
|
||||
+ default:
|
||||
+ return "UNKNOWN";
|
||||
}
|
||||
+
|
||||
+ for (i = 0; i < size; i++) {
|
||||
+ if (names[i].id == id->id)
|
||||
+ return names[i].name;
|
||||
+ }
|
||||
+
|
||||
return "UNKNOWN";
|
||||
}
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
--- a/drivers/bcma/driver_pci_host.c
|
||||
+++ b/drivers/bcma/driver_pci_host.c
|
||||
@@ -491,8 +491,9 @@ void __devinit bcma_core_pci_hostmode_in
|
||||
/* Ok, ready to run, register it to the system.
|
||||
* The following needs change, if we want to port hostmode
|
||||
* to non-MIPS platform. */
|
||||
- io_map_base = (unsigned long)ioremap_nocache(BCMA_SOC_PCI_MEM,
|
||||
- 0x04000000);
|
||||
+ io_map_base = (unsigned long)ioremap_nocache(pc_host->mem_resource.start,
|
||||
+ pc_host->mem_resource.end -
|
||||
+ pc_host->mem_resource.start + 1);
|
||||
pc_host->pci_controller.io_map_base = io_map_base;
|
||||
set_io_port_base(pc_host->pci_controller.io_map_base);
|
||||
/* Give some time to the PCI controller to configure itself with the new
|
||||
@@ -1,29 +0,0 @@
|
||||
--- a/drivers/bcma/driver_pci_host.c
|
||||
+++ b/drivers/bcma/driver_pci_host.c
|
||||
@@ -119,7 +119,7 @@ static int bcma_extpci_read_config(struc
|
||||
if (unlikely(!addr))
|
||||
goto out;
|
||||
err = -ENOMEM;
|
||||
- mmio = ioremap_nocache(addr, len);
|
||||
+ mmio = ioremap_nocache(addr, sizeof(val));
|
||||
if (!mmio)
|
||||
goto out;
|
||||
|
||||
@@ -171,7 +171,7 @@ static int bcma_extpci_write_config(stru
|
||||
addr = pc->core->addr + BCMA_CORE_PCI_PCICFG0;
|
||||
addr |= (func << 8);
|
||||
addr |= (off & 0xfc);
|
||||
- mmio = ioremap_nocache(addr, len);
|
||||
+ mmio = ioremap_nocache(addr, sizeof(val));
|
||||
if (!mmio)
|
||||
goto out;
|
||||
}
|
||||
@@ -180,7 +180,7 @@ static int bcma_extpci_write_config(stru
|
||||
if (unlikely(!addr))
|
||||
goto out;
|
||||
err = -ENOMEM;
|
||||
- mmio = ioremap_nocache(addr, len);
|
||||
+ mmio = ioremap_nocache(addr, sizeof(val));
|
||||
if (!mmio)
|
||||
goto out;
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
--- a/drivers/bcma/host_pci.c
|
||||
+++ b/drivers/bcma/host_pci.c
|
||||
@@ -222,7 +222,7 @@ err_kfree_bus:
|
||||
return err;
|
||||
}
|
||||
|
||||
-static void bcma_host_pci_remove(struct pci_dev *dev)
|
||||
+static void __devexit bcma_host_pci_remove(struct pci_dev *dev)
|
||||
{
|
||||
struct bcma_bus *bus = pci_get_drvdata(dev);
|
||||
|
||||
@@ -278,7 +278,7 @@ static struct pci_driver bcma_pci_bridge
|
||||
.name = "bcma-pci-bridge",
|
||||
.id_table = bcma_pci_bridge_tbl,
|
||||
.probe = bcma_host_pci_probe,
|
||||
- .remove = bcma_host_pci_remove,
|
||||
+ .remove = __devexit_p(bcma_host_pci_remove),
|
||||
.driver.pm = BCMA_PM_OPS,
|
||||
};
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
--- a/drivers/bcma/core.c
|
||||
+++ b/drivers/bcma/core.c
|
||||
@@ -30,6 +30,7 @@ void bcma_core_disable(struct bcma_devic
|
||||
udelay(10);
|
||||
|
||||
bcma_awrite32(core, BCMA_RESET_CTL, BCMA_RESET_CTL_RESET);
|
||||
+ bcma_aread32(core, BCMA_RESET_CTL);
|
||||
udelay(1);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(bcma_core_disable);
|
||||
@@ -0,0 +1,11 @@
|
||||
--- a/arch/mips/bcm47xx/setup.c
|
||||
+++ b/arch/mips/bcm47xx/setup.c
|
||||
@@ -163,8 +163,6 @@ static int bcm47xx_get_invariants(struct
|
||||
iv->boardinfo.vendor = SSB_BOARDVENDOR_BCM;
|
||||
if (nvram_getenv("boardtype", buf, sizeof(buf)) >= 0)
|
||||
iv->boardinfo.type = (u16)simple_strtoul(buf, NULL, 0);
|
||||
- if (nvram_getenv("boardrev", buf, sizeof(buf)) >= 0)
|
||||
- iv->boardinfo.rev = (u16)simple_strtoul(buf, NULL, 0);
|
||||
|
||||
memset(&iv->sprom, 0, sizeof(struct ssb_sprom));
|
||||
bcm47xx_fill_sprom(&iv->sprom, NULL);
|
||||
@@ -0,0 +1,46 @@
|
||||
--- a/arch/mips/bcm47xx/setup.c
|
||||
+++ b/arch/mips/bcm47xx/setup.c
|
||||
@@ -157,12 +157,7 @@ static int bcm47xx_get_invariants(struct
|
||||
/* Fill boardinfo structure */
|
||||
memset(&(iv->boardinfo), 0 , sizeof(struct ssb_boardinfo));
|
||||
|
||||
- if (nvram_getenv("boardvendor", buf, sizeof(buf)) >= 0)
|
||||
- iv->boardinfo.vendor = (u16)simple_strtoul(buf, NULL, 0);
|
||||
- else
|
||||
- iv->boardinfo.vendor = SSB_BOARDVENDOR_BCM;
|
||||
- if (nvram_getenv("boardtype", buf, sizeof(buf)) >= 0)
|
||||
- iv->boardinfo.type = (u16)simple_strtoul(buf, NULL, 0);
|
||||
+ bcm47xx_fill_ssb_boardinfo(&iv->boardinfo, NULL);
|
||||
|
||||
memset(&iv->sprom, 0, sizeof(struct ssb_sprom));
|
||||
bcm47xx_fill_sprom(&iv->sprom, NULL);
|
||||
--- a/arch/mips/bcm47xx/sprom.c
|
||||
+++ b/arch/mips/bcm47xx/sprom.c
|
||||
@@ -616,3 +616,15 @@ void bcm47xx_fill_sprom(struct ssb_sprom
|
||||
bcm47xx_fill_sprom_r1(sprom, prefix);
|
||||
}
|
||||
}
|
||||
+
|
||||
+#ifdef CONFIG_BCM47XX_SSB
|
||||
+void bcm47xx_fill_ssb_boardinfo(struct ssb_boardinfo *boardinfo,
|
||||
+ const char *prefix)
|
||||
+{
|
||||
+ nvram_read_u16(prefix, NULL, "boardvendor", &boardinfo->vendor, 0);
|
||||
+ if (!boardinfo->vendor)
|
||||
+ boardinfo->vendor = SSB_BOARDVENDOR_BCM;
|
||||
+
|
||||
+ nvram_read_u16(prefix, NULL, "boardtype", &boardinfo->type, 0);
|
||||
+}
|
||||
+#endif
|
||||
--- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h
|
||||
+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h
|
||||
@@ -47,4 +47,9 @@ extern enum bcm47xx_bus_type bcm47xx_bus
|
||||
void bcm47xx_fill_sprom(struct ssb_sprom *sprom, const char *prefix);
|
||||
void bcm47xx_fill_sprom_ethernet(struct ssb_sprom *sprom, const char *prefix);
|
||||
|
||||
+#ifdef CONFIG_BCM47XX_SSB
|
||||
+void bcm47xx_fill_ssb_boardinfo(struct ssb_boardinfo *boardinfo,
|
||||
+ const char *prefix);
|
||||
+#endif
|
||||
+
|
||||
#endif /* __ASM_BCM47XX_H */
|
||||
@@ -0,0 +1,41 @@
|
||||
--- a/arch/mips/bcm47xx/setup.c
|
||||
+++ b/arch/mips/bcm47xx/setup.c
|
||||
@@ -297,6 +297,8 @@ static void __init bcm47xx_register_bcma
|
||||
|
||||
if (bcm47xx_bus.bcma.bus.drv_cc.flash_type == BCMA_NFLASH)
|
||||
bcm47xx_nflash_struct_bcma_init(&bcm47xx_nflash, &bcm47xx_bus.bcma.bus.drv_cc);
|
||||
+
|
||||
+ bcm47xx_fill_bcma_boardinfo(&bcm47xx_bus.bcma.bus.boardinfo, NULL);
|
||||
}
|
||||
|
||||
static int __init bcm47xx_register_flash_bcma(void)
|
||||
--- a/arch/mips/bcm47xx/sprom.c
|
||||
+++ b/arch/mips/bcm47xx/sprom.c
|
||||
@@ -628,3 +628,15 @@ void bcm47xx_fill_ssb_boardinfo(struct s
|
||||
nvram_read_u16(prefix, NULL, "boardtype", &boardinfo->type, 0);
|
||||
}
|
||||
#endif
|
||||
+
|
||||
+#ifdef CONFIG_BCM47XX_BCMA
|
||||
+void bcm47xx_fill_bcma_boardinfo(struct bcma_boardinfo *boardinfo,
|
||||
+ const char *prefix)
|
||||
+{
|
||||
+ nvram_read_u16(prefix, NULL, "boardvendor", &boardinfo->vendor, 0);
|
||||
+ if (!boardinfo->vendor)
|
||||
+ boardinfo->vendor = SSB_BOARDVENDOR_BCM;
|
||||
+
|
||||
+ nvram_read_u16(prefix, NULL, "boardtype", &boardinfo->type, 0);
|
||||
+}
|
||||
+#endif
|
||||
--- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h
|
||||
+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h
|
||||
@@ -51,5 +51,9 @@ void bcm47xx_fill_sprom_ethernet(struct
|
||||
void bcm47xx_fill_ssb_boardinfo(struct ssb_boardinfo *boardinfo,
|
||||
const char *prefix);
|
||||
#endif
|
||||
+#ifdef CONFIG_BCM47XX_BCMA
|
||||
+void bcm47xx_fill_bcma_boardinfo(struct bcma_boardinfo *boardinfo,
|
||||
+ const char *prefix);
|
||||
+#endif
|
||||
|
||||
#endif /* __ASM_BCM47XX_H */
|
||||
@@ -0,0 +1,11 @@
|
||||
--- a/arch/mips/bcm47xx/sprom.c
|
||||
+++ b/arch/mips/bcm47xx/sprom.c
|
||||
@@ -165,6 +165,8 @@ static void bcm47xx_fill_sprom_r1234589(
|
||||
const char *prefix)
|
||||
{
|
||||
nvram_read_u16(prefix, NULL, "boardrev", &sprom->board_rev, 0);
|
||||
+ if (!sprom->board_rev)
|
||||
+ nvram_read_u16(NULL, NULL, "boardrev", &sprom->board_rev, 0);
|
||||
nvram_read_u16(prefix, NULL, "boardnum", &sprom->board_num, 0);
|
||||
nvram_read_u8(prefix, NULL, "ledbh0", &sprom->gpio0, 0xff);
|
||||
nvram_read_u8(prefix, NULL, "ledbh1", &sprom->gpio1, 0xff);
|
||||
@@ -33,7 +33,7 @@
|
||||
+EXPORT_SYMBOL(nvram_get);
|
||||
--- a/arch/mips/bcm47xx/setup.c
|
||||
+++ b/arch/mips/bcm47xx/setup.c
|
||||
@@ -384,3 +384,20 @@ static int __init bcm47xx_register_flash
|
||||
@@ -379,3 +379,20 @@ static int __init bcm47xx_register_flash
|
||||
return -1;
|
||||
}
|
||||
fs_initcall(bcm47xx_register_flash);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/arch/mips/bcm47xx/setup.c
|
||||
+++ b/arch/mips/bcm47xx/setup.c
|
||||
@@ -172,6 +172,10 @@ static int bcm47xx_get_invariants(struct
|
||||
@@ -165,6 +165,10 @@ static int bcm47xx_get_invariants(struct
|
||||
if (nvram_getenv("cardbus", buf, sizeof(buf)) >= 0)
|
||||
iv->has_cardbus_slot = !!simple_strtoul(buf, NULL, 10);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user