aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ssb
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2011-10-27 00:46:20 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2011-10-27 00:46:20 -0400
commit6ad390a25a9d1d8606b9b826878f0a30639dc2b3 (patch)
tree05aff14f02776bc0d59a1f777cb92df6f4456ba9 /drivers/ssb
parentd6069dae4700cf5290a75002c46b9be8ea7eef3c (diff)
parent3f48e7354358519e5b93f7f755ec270b3f8eafa0 (diff)
Merge branch 'next' into for-linus
Diffstat (limited to 'drivers/ssb')
-rw-r--r--drivers/ssb/b43_pci_bridge.c2
-rw-r--r--drivers/ssb/driver_chipcommon.c2
-rw-r--r--drivers/ssb/driver_chipcommon_pmu.c6
-rw-r--r--drivers/ssb/driver_extif.c2
-rw-r--r--drivers/ssb/driver_gige.c15
-rw-r--r--drivers/ssb/driver_mipscore.c2
-rw-r--r--drivers/ssb/driver_pcicore.c30
-rw-r--r--drivers/ssb/embedded.c2
-rw-r--r--drivers/ssb/main.c40
-rw-r--r--drivers/ssb/pci.c11
-rw-r--r--drivers/ssb/pcihost_wrapper.c8
-rw-r--r--drivers/ssb/pcmcia.c2
-rw-r--r--drivers/ssb/scan.c5
-rw-r--r--drivers/ssb/sdio.c2
-rw-r--r--drivers/ssb/sprom.c2
15 files changed, 67 insertions, 64 deletions
diff --git a/drivers/ssb/b43_pci_bridge.c b/drivers/ssb/b43_pci_bridge.c
index 744d3f6e4709..bf53e44c82a1 100644
--- a/drivers/ssb/b43_pci_bridge.c
+++ b/drivers/ssb/b43_pci_bridge.c
@@ -5,7 +5,7 @@
5 * because of its small size we include it in the SSB core 5 * because of its small size we include it in the SSB core
6 * instead of creating a standalone module. 6 * instead of creating a standalone module.
7 * 7 *
8 * Copyright 2007 Michael Buesch <mb@bu3sch.de> 8 * Copyright 2007 Michael Buesch <m@bues.ch>
9 * 9 *
10 * Licensed under the GNU/GPL. See COPYING for details. 10 * Licensed under the GNU/GPL. See COPYING for details.
11 */ 11 */
diff --git a/drivers/ssb/driver_chipcommon.c b/drivers/ssb/driver_chipcommon.c
index 06d15b6f2215..5d9c97c24797 100644
--- a/drivers/ssb/driver_chipcommon.c
+++ b/drivers/ssb/driver_chipcommon.c
@@ -3,7 +3,7 @@
3 * Broadcom ChipCommon core driver 3 * Broadcom ChipCommon core driver
4 * 4 *
5 * Copyright 2005, Broadcom Corporation 5 * Copyright 2005, Broadcom Corporation
6 * Copyright 2006, 2007, Michael Buesch <mb@bu3sch.de> 6 * Copyright 2006, 2007, Michael Buesch <m@bues.ch>
7 * 7 *
8 * Licensed under the GNU/GPL. See COPYING for details. 8 * Licensed under the GNU/GPL. See COPYING for details.
9 */ 9 */
diff --git a/drivers/ssb/driver_chipcommon_pmu.c b/drivers/ssb/driver_chipcommon_pmu.c
index 305ade7825f7..52901c14c68b 100644
--- a/drivers/ssb/driver_chipcommon_pmu.c
+++ b/drivers/ssb/driver_chipcommon_pmu.c
@@ -2,7 +2,7 @@
2 * Sonics Silicon Backplane 2 * Sonics Silicon Backplane
3 * Broadcom ChipCommon Power Management Unit driver 3 * Broadcom ChipCommon Power Management Unit driver
4 * 4 *
5 * Copyright 2009, Michael Buesch <mb@bu3sch.de> 5 * Copyright 2009, Michael Buesch <m@bues.ch>
6 * Copyright 2007, Broadcom Corporation 6 * Copyright 2007, Broadcom Corporation
7 * 7 *
8 * Licensed under the GNU/GPL. See COPYING for details. 8 * Licensed under the GNU/GPL. See COPYING for details.
@@ -417,9 +417,9 @@ static void ssb_pmu_resources_init(struct ssb_chipcommon *cc)
417 u32 min_msk = 0, max_msk = 0; 417 u32 min_msk = 0, max_msk = 0;
418 unsigned int i; 418 unsigned int i;
419 const struct pmu_res_updown_tab_entry *updown_tab = NULL; 419 const struct pmu_res_updown_tab_entry *updown_tab = NULL;
420 unsigned int updown_tab_size; 420 unsigned int updown_tab_size = 0;
421 const struct pmu_res_depend_tab_entry *depend_tab = NULL; 421 const struct pmu_res_depend_tab_entry *depend_tab = NULL;
422 unsigned int depend_tab_size; 422 unsigned int depend_tab_size = 0;
423 423
424 switch (bus->chip_id) { 424 switch (bus->chip_id) {
425 case 0x4312: 425 case 0x4312:
diff --git a/drivers/ssb/driver_extif.c b/drivers/ssb/driver_extif.c
index c3e1d3e6d610..dc47f30e9cf7 100644
--- a/drivers/ssb/driver_extif.c
+++ b/drivers/ssb/driver_extif.c
@@ -3,7 +3,7 @@
3 * Broadcom EXTIF core driver 3 * Broadcom EXTIF core driver
4 * 4 *
5 * Copyright 2005, Broadcom Corporation 5 * Copyright 2005, Broadcom Corporation
6 * Copyright 2006, 2007, Michael Buesch <mb@bu3sch.de> 6 * Copyright 2006, 2007, Michael Buesch <m@bues.ch>
7 * Copyright 2006, 2007, Felix Fietkau <nbd@openwrt.org> 7 * Copyright 2006, 2007, Felix Fietkau <nbd@openwrt.org>
8 * Copyright 2007, Aurelien Jarno <aurelien@aurel32.net> 8 * Copyright 2007, Aurelien Jarno <aurelien@aurel32.net>
9 * 9 *
diff --git a/drivers/ssb/driver_gige.c b/drivers/ssb/driver_gige.c
index 5ba92a2719a4..3adb98dad70c 100644
--- a/drivers/ssb/driver_gige.c
+++ b/drivers/ssb/driver_gige.c
@@ -3,7 +3,7 @@
3 * Broadcom Gigabit Ethernet core driver 3 * Broadcom Gigabit Ethernet core driver
4 * 4 *
5 * Copyright 2008, Broadcom Corporation 5 * Copyright 2008, Broadcom Corporation
6 * Copyright 2008, Michael Buesch <mb@bu3sch.de> 6 * Copyright 2008, Michael Buesch <m@bues.ch>
7 * 7 *
8 * Licensed under the GNU/GPL. See COPYING for details. 8 * Licensed under the GNU/GPL. See COPYING for details.
9 */ 9 */
@@ -106,8 +106,9 @@ void gige_pcicfg_write32(struct ssb_gige *dev,
106 gige_write32(dev, SSB_GIGE_PCICFG + offset, value); 106 gige_write32(dev, SSB_GIGE_PCICFG + offset, value);
107} 107}
108 108
109static int ssb_gige_pci_read_config(struct pci_bus *bus, unsigned int devfn, 109static int __devinit ssb_gige_pci_read_config(struct pci_bus *bus,
110 int reg, int size, u32 *val) 110 unsigned int devfn, int reg,
111 int size, u32 *val)
111{ 112{
112 struct ssb_gige *dev = container_of(bus->ops, struct ssb_gige, pci_ops); 113 struct ssb_gige *dev = container_of(bus->ops, struct ssb_gige, pci_ops);
113 unsigned long flags; 114 unsigned long flags;
@@ -136,8 +137,9 @@ static int ssb_gige_pci_read_config(struct pci_bus *bus, unsigned int devfn,
136 return PCIBIOS_SUCCESSFUL; 137 return PCIBIOS_SUCCESSFUL;
137} 138}
138 139
139static int ssb_gige_pci_write_config(struct pci_bus *bus, unsigned int devfn, 140static int __devinit ssb_gige_pci_write_config(struct pci_bus *bus,
140 int reg, int size, u32 val) 141 unsigned int devfn, int reg,
142 int size, u32 val)
141{ 143{
142 struct ssb_gige *dev = container_of(bus->ops, struct ssb_gige, pci_ops); 144 struct ssb_gige *dev = container_of(bus->ops, struct ssb_gige, pci_ops);
143 unsigned long flags; 145 unsigned long flags;
@@ -166,7 +168,8 @@ static int ssb_gige_pci_write_config(struct pci_bus *bus, unsigned int devfn,
166 return PCIBIOS_SUCCESSFUL; 168 return PCIBIOS_SUCCESSFUL;
167} 169}
168 170
169static int ssb_gige_probe(struct ssb_device *sdev, const struct ssb_device_id *id) 171static int __devinit ssb_gige_probe(struct ssb_device *sdev,
172 const struct ssb_device_id *id)
170{ 173{
171 struct ssb_gige *dev; 174 struct ssb_gige *dev;
172 u32 base, tmslow, tmshigh; 175 u32 base, tmslow, tmshigh;
diff --git a/drivers/ssb/driver_mipscore.c b/drivers/ssb/driver_mipscore.c
index 97efce184a8f..ced501568594 100644
--- a/drivers/ssb/driver_mipscore.c
+++ b/drivers/ssb/driver_mipscore.c
@@ -3,7 +3,7 @@
3 * Broadcom MIPS core driver 3 * Broadcom MIPS core driver
4 * 4 *
5 * Copyright 2005, Broadcom Corporation 5 * Copyright 2005, Broadcom Corporation
6 * Copyright 2006, 2007, Michael Buesch <mb@bu3sch.de> 6 * Copyright 2006, 2007, Michael Buesch <m@bues.ch>
7 * 7 *
8 * Licensed under the GNU/GPL. See COPYING for details. 8 * Licensed under the GNU/GPL. See COPYING for details.
9 */ 9 */
diff --git a/drivers/ssb/driver_pcicore.c b/drivers/ssb/driver_pcicore.c
index 2a20dabec76d..e6ac3177fbbe 100644
--- a/drivers/ssb/driver_pcicore.c
+++ b/drivers/ssb/driver_pcicore.c
@@ -3,7 +3,7 @@
3 * Broadcom PCI-core driver 3 * Broadcom PCI-core driver
4 * 4 *
5 * Copyright 2005, Broadcom Corporation 5 * Copyright 2005, Broadcom Corporation
6 * Copyright 2006, 2007, Michael Buesch <mb@bu3sch.de> 6 * Copyright 2006, 2007, Michael Buesch <m@bues.ch>
7 * 7 *
8 * Licensed under the GNU/GPL. See COPYING for details. 8 * Licensed under the GNU/GPL. See COPYING for details.
9 */ 9 */
@@ -314,7 +314,7 @@ int ssb_pcicore_pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
314 return ssb_mips_irq(extpci_core->dev) + 2; 314 return ssb_mips_irq(extpci_core->dev) + 2;
315} 315}
316 316
317static void ssb_pcicore_init_hostmode(struct ssb_pcicore *pc) 317static void __devinit ssb_pcicore_init_hostmode(struct ssb_pcicore *pc)
318{ 318{
319 u32 val; 319 u32 val;
320 320
@@ -379,7 +379,7 @@ static void ssb_pcicore_init_hostmode(struct ssb_pcicore *pc)
379 register_pci_controller(&ssb_pcicore_controller); 379 register_pci_controller(&ssb_pcicore_controller);
380} 380}
381 381
382static int pcicore_is_in_hostmode(struct ssb_pcicore *pc) 382static int __devinit pcicore_is_in_hostmode(struct ssb_pcicore *pc)
383{ 383{
384 struct ssb_bus *bus = pc->dev->bus; 384 struct ssb_bus *bus = pc->dev->bus;
385 u16 chipid_top; 385 u16 chipid_top;
@@ -412,7 +412,7 @@ static int pcicore_is_in_hostmode(struct ssb_pcicore *pc)
412 * Workarounds. 412 * Workarounds.
413 **************************************************/ 413 **************************************************/
414 414
415static void ssb_pcicore_fix_sprom_core_index(struct ssb_pcicore *pc) 415static void __devinit ssb_pcicore_fix_sprom_core_index(struct ssb_pcicore *pc)
416{ 416{
417 u16 tmp = pcicore_read16(pc, SSB_PCICORE_SPROM(0)); 417 u16 tmp = pcicore_read16(pc, SSB_PCICORE_SPROM(0));
418 if (((tmp & 0xF000) >> 12) != pc->dev->core_index) { 418 if (((tmp & 0xF000) >> 12) != pc->dev->core_index) {
@@ -514,13 +514,22 @@ static void ssb_pcicore_pcie_setup_workarounds(struct ssb_pcicore *pc)
514 * Generic and Clientmode operation code. 514 * Generic and Clientmode operation code.
515 **************************************************/ 515 **************************************************/
516 516
517static void ssb_pcicore_init_clientmode(struct ssb_pcicore *pc) 517static void __devinit ssb_pcicore_init_clientmode(struct ssb_pcicore *pc)
518{ 518{
519 ssb_pcicore_fix_sprom_core_index(pc);
520
519 /* Disable PCI interrupts. */ 521 /* Disable PCI interrupts. */
520 ssb_write32(pc->dev, SSB_INTVEC, 0); 522 ssb_write32(pc->dev, SSB_INTVEC, 0);
523
524 /* Additional PCIe always once-executed workarounds */
525 if (pc->dev->id.coreid == SSB_DEV_PCIE) {
526 ssb_pcicore_serdes_workaround(pc);
527 /* TODO: ASPM */
528 /* TODO: Clock Request Update */
529 }
521} 530}
522 531
523void ssb_pcicore_init(struct ssb_pcicore *pc) 532void __devinit ssb_pcicore_init(struct ssb_pcicore *pc)
524{ 533{
525 struct ssb_device *dev = pc->dev; 534 struct ssb_device *dev = pc->dev;
526 535
@@ -529,8 +538,6 @@ void ssb_pcicore_init(struct ssb_pcicore *pc)
529 if (!ssb_device_is_enabled(dev)) 538 if (!ssb_device_is_enabled(dev))
530 ssb_device_enable(dev, 0); 539 ssb_device_enable(dev, 0);
531 540
532 ssb_pcicore_fix_sprom_core_index(pc);
533
534#ifdef CONFIG_SSB_PCICORE_HOSTMODE 541#ifdef CONFIG_SSB_PCICORE_HOSTMODE
535 pc->hostmode = pcicore_is_in_hostmode(pc); 542 pc->hostmode = pcicore_is_in_hostmode(pc);
536 if (pc->hostmode) 543 if (pc->hostmode)
@@ -538,13 +545,6 @@ void ssb_pcicore_init(struct ssb_pcicore *pc)
538#endif /* CONFIG_SSB_PCICORE_HOSTMODE */ 545#endif /* CONFIG_SSB_PCICORE_HOSTMODE */
539 if (!pc->hostmode) 546 if (!pc->hostmode)
540 ssb_pcicore_init_clientmode(pc); 547 ssb_pcicore_init_clientmode(pc);
541
542 /* Additional PCIe always once-executed workarounds */
543 if (dev->id.coreid == SSB_DEV_PCIE) {
544 ssb_pcicore_serdes_workaround(pc);
545 /* TODO: ASPM */
546 /* TODO: Clock Request Update */
547 }
548} 548}
549 549
550static u32 ssb_pcie_read(struct ssb_pcicore *pc, u32 address) 550static u32 ssb_pcie_read(struct ssb_pcicore *pc, u32 address)
diff --git a/drivers/ssb/embedded.c b/drivers/ssb/embedded.c
index a0e0d246b592..eec3e267be4d 100644
--- a/drivers/ssb/embedded.c
+++ b/drivers/ssb/embedded.c
@@ -3,7 +3,7 @@
3 * Embedded systems support code 3 * Embedded systems support code
4 * 4 *
5 * Copyright 2005-2008, Broadcom Corporation 5 * Copyright 2005-2008, Broadcom Corporation
6 * Copyright 2006-2008, Michael Buesch <mb@bu3sch.de> 6 * Copyright 2006-2008, Michael Buesch <m@bues.ch>
7 * 7 *
8 * Licensed under the GNU/GPL. See COPYING for details. 8 * Licensed under the GNU/GPL. See COPYING for details.
9 */ 9 */
diff --git a/drivers/ssb/main.c b/drivers/ssb/main.c
index f8a13f863217..29c7d4f9d1ae 100644
--- a/drivers/ssb/main.c
+++ b/drivers/ssb/main.c
@@ -3,7 +3,7 @@
3 * Subsystem core 3 * Subsystem core
4 * 4 *
5 * Copyright 2005, Broadcom Corporation 5 * Copyright 2005, Broadcom Corporation
6 * Copyright 2006, 2007, Michael Buesch <mb@bu3sch.de> 6 * Copyright 2006, 2007, Michael Buesch <m@bues.ch>
7 * 7 *
8 * Licensed under the GNU/GPL. See COPYING for details. 8 * Licensed under the GNU/GPL. See COPYING for details.
9 */ 9 */
@@ -557,7 +557,7 @@ error:
557} 557}
558 558
559/* Needs ssb_buses_lock() */ 559/* Needs ssb_buses_lock() */
560static int ssb_attach_queued_buses(void) 560static int __devinit ssb_attach_queued_buses(void)
561{ 561{
562 struct ssb_bus *bus, *n; 562 struct ssb_bus *bus, *n;
563 int err = 0; 563 int err = 0;
@@ -768,9 +768,9 @@ out:
768 return err; 768 return err;
769} 769}
770 770
771static int ssb_bus_register(struct ssb_bus *bus, 771static int __devinit ssb_bus_register(struct ssb_bus *bus,
772 ssb_invariants_func_t get_invariants, 772 ssb_invariants_func_t get_invariants,
773 unsigned long baseaddr) 773 unsigned long baseaddr)
774{ 774{
775 int err; 775 int err;
776 776
@@ -851,8 +851,8 @@ err_disable_xtal:
851} 851}
852 852
853#ifdef CONFIG_SSB_PCIHOST 853#ifdef CONFIG_SSB_PCIHOST
854int ssb_bus_pcibus_register(struct ssb_bus *bus, 854int __devinit ssb_bus_pcibus_register(struct ssb_bus *bus,
855 struct pci_dev *host_pci) 855 struct pci_dev *host_pci)
856{ 856{
857 int err; 857 int err;
858 858
@@ -875,9 +875,9 @@ EXPORT_SYMBOL(ssb_bus_pcibus_register);
875#endif /* CONFIG_SSB_PCIHOST */ 875#endif /* CONFIG_SSB_PCIHOST */
876 876
877#ifdef CONFIG_SSB_PCMCIAHOST 877#ifdef CONFIG_SSB_PCMCIAHOST
878int ssb_bus_pcmciabus_register(struct ssb_bus *bus, 878int __devinit ssb_bus_pcmciabus_register(struct ssb_bus *bus,
879 struct pcmcia_device *pcmcia_dev, 879 struct pcmcia_device *pcmcia_dev,
880 unsigned long baseaddr) 880 unsigned long baseaddr)
881{ 881{
882 int err; 882 int err;
883 883
@@ -897,8 +897,9 @@ EXPORT_SYMBOL(ssb_bus_pcmciabus_register);
897#endif /* CONFIG_SSB_PCMCIAHOST */ 897#endif /* CONFIG_SSB_PCMCIAHOST */
898 898
899#ifdef CONFIG_SSB_SDIOHOST 899#ifdef CONFIG_SSB_SDIOHOST
900int ssb_bus_sdiobus_register(struct ssb_bus *bus, struct sdio_func *func, 900int __devinit ssb_bus_sdiobus_register(struct ssb_bus *bus,
901 unsigned int quirks) 901 struct sdio_func *func,
902 unsigned int quirks)
902{ 903{
903 int err; 904 int err;
904 905
@@ -918,9 +919,9 @@ int ssb_bus_sdiobus_register(struct ssb_bus *bus, struct sdio_func *func,
918EXPORT_SYMBOL(ssb_bus_sdiobus_register); 919EXPORT_SYMBOL(ssb_bus_sdiobus_register);
919#endif /* CONFIG_SSB_PCMCIAHOST */ 920#endif /* CONFIG_SSB_PCMCIAHOST */
920 921
921int ssb_bus_ssbbus_register(struct ssb_bus *bus, 922int __devinit ssb_bus_ssbbus_register(struct ssb_bus *bus,
922 unsigned long baseaddr, 923 unsigned long baseaddr,
923 ssb_invariants_func_t get_invariants) 924 ssb_invariants_func_t get_invariants)
924{ 925{
925 int err; 926 int err;
926 927
@@ -1001,8 +1002,8 @@ u32 ssb_calc_clock_rate(u32 plltype, u32 n, u32 m)
1001 switch (plltype) { 1002 switch (plltype) {
1002 case SSB_PLLTYPE_6: /* 100/200 or 120/240 only */ 1003 case SSB_PLLTYPE_6: /* 100/200 or 120/240 only */
1003 if (m & SSB_CHIPCO_CLK_T6_MMASK) 1004 if (m & SSB_CHIPCO_CLK_T6_MMASK)
1004 return SSB_CHIPCO_CLK_T6_M0; 1005 return SSB_CHIPCO_CLK_T6_M1;
1005 return SSB_CHIPCO_CLK_T6_M1; 1006 return SSB_CHIPCO_CLK_T6_M0;
1006 case SSB_PLLTYPE_1: /* 48Mhz base, 3 dividers */ 1007 case SSB_PLLTYPE_1: /* 48Mhz base, 3 dividers */
1007 case SSB_PLLTYPE_3: /* 25Mhz, 2 dividers */ 1008 case SSB_PLLTYPE_3: /* 25Mhz, 2 dividers */
1008 case SSB_PLLTYPE_4: /* 48Mhz, 4 dividers */ 1009 case SSB_PLLTYPE_4: /* 48Mhz, 4 dividers */
@@ -1265,7 +1266,10 @@ u32 ssb_dma_translation(struct ssb_device *dev)
1265 case SSB_BUSTYPE_SSB: 1266 case SSB_BUSTYPE_SSB:
1266 return 0; 1267 return 0;
1267 case SSB_BUSTYPE_PCI: 1268 case SSB_BUSTYPE_PCI:
1268 return SSB_PCI_DMA; 1269 if (ssb_read32(dev, SSB_TMSHIGH) & SSB_TMSHIGH_DMA64)
1270 return SSB_PCIE_DMA_H32;
1271 else
1272 return SSB_PCI_DMA;
1269 default: 1273 default:
1270 __ssb_dma_not_implemented(dev); 1274 __ssb_dma_not_implemented(dev);
1271 } 1275 }
diff --git a/drivers/ssb/pci.c b/drivers/ssb/pci.c
index 7ad48585c5e6..34c3bab90b9a 100644
--- a/drivers/ssb/pci.c
+++ b/drivers/ssb/pci.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Sonics Silicon Backplane PCI-Hostbus related functions. 2 * Sonics Silicon Backplane PCI-Hostbus related functions.
3 * 3 *
4 * Copyright (C) 2005-2006 Michael Buesch <mb@bu3sch.de> 4 * Copyright (C) 2005-2006 Michael Buesch <m@bues.ch>
5 * Copyright (C) 2005 Martin Langer <martin-langer@gmx.de> 5 * Copyright (C) 2005 Martin Langer <martin-langer@gmx.de>
6 * Copyright (C) 2005 Stefano Brivio <st3@riseup.net> 6 * Copyright (C) 2005 Stefano Brivio <st3@riseup.net>
7 * Copyright (C) 2005 Danny van Dyk <kugelfang@gentoo.org> 7 * Copyright (C) 2005 Danny van Dyk <kugelfang@gentoo.org>
@@ -734,12 +734,9 @@ out_free:
734static void ssb_pci_get_boardinfo(struct ssb_bus *bus, 734static void ssb_pci_get_boardinfo(struct ssb_bus *bus,
735 struct ssb_boardinfo *bi) 735 struct ssb_boardinfo *bi)
736{ 736{
737 pci_read_config_word(bus->host_pci, PCI_SUBSYSTEM_VENDOR_ID, 737 bi->vendor = bus->host_pci->subsystem_vendor;
738 &bi->vendor); 738 bi->type = bus->host_pci->subsystem_device;
739 pci_read_config_word(bus->host_pci, PCI_SUBSYSTEM_ID, 739 bi->rev = bus->host_pci->revision;
740 &bi->type);
741 pci_read_config_word(bus->host_pci, PCI_REVISION_ID,
742 &bi->rev);
743} 740}
744 741
745int ssb_pci_get_invariants(struct ssb_bus *bus, 742int ssb_pci_get_invariants(struct ssb_bus *bus,
diff --git a/drivers/ssb/pcihost_wrapper.c b/drivers/ssb/pcihost_wrapper.c
index f6c8c81a0025..116a8116984b 100644
--- a/drivers/ssb/pcihost_wrapper.c
+++ b/drivers/ssb/pcihost_wrapper.c
@@ -6,7 +6,7 @@
6 * Copyright (c) 2005 Stefano Brivio <st3@riseup.net> 6 * Copyright (c) 2005 Stefano Brivio <st3@riseup.net>
7 * Copyright (c) 2005 Danny van Dyk <kugelfang@gentoo.org> 7 * Copyright (c) 2005 Danny van Dyk <kugelfang@gentoo.org>
8 * Copyright (c) 2005 Andreas Jaggi <andreas.jaggi@waterwave.ch> 8 * Copyright (c) 2005 Andreas Jaggi <andreas.jaggi@waterwave.ch>
9 * Copyright (c) 2005-2007 Michael Buesch <mbuesch@freenet.de> 9 * Copyright (c) 2005-2007 Michael Buesch <m@bues.ch>
10 * 10 *
11 * Licensed under the GNU/GPL. See COPYING for details. 11 * Licensed under the GNU/GPL. See COPYING for details.
12 */ 12 */
@@ -53,8 +53,8 @@ static int ssb_pcihost_resume(struct pci_dev *dev)
53# define ssb_pcihost_resume NULL 53# define ssb_pcihost_resume NULL
54#endif /* CONFIG_PM */ 54#endif /* CONFIG_PM */
55 55
56static int ssb_pcihost_probe(struct pci_dev *dev, 56static int __devinit ssb_pcihost_probe(struct pci_dev *dev,
57 const struct pci_device_id *id) 57 const struct pci_device_id *id)
58{ 58{
59 struct ssb_bus *ssb; 59 struct ssb_bus *ssb;
60 int err = -ENOMEM; 60 int err = -ENOMEM;
@@ -110,7 +110,7 @@ static void ssb_pcihost_remove(struct pci_dev *dev)
110 pci_set_drvdata(dev, NULL); 110 pci_set_drvdata(dev, NULL);
111} 111}
112 112
113int ssb_pcihost_register(struct pci_driver *driver) 113int __devinit ssb_pcihost_register(struct pci_driver *driver)
114{ 114{
115 driver->probe = ssb_pcihost_probe; 115 driver->probe = ssb_pcihost_probe;
116 driver->remove = ssb_pcihost_remove; 116 driver->remove = ssb_pcihost_remove;
diff --git a/drivers/ssb/pcmcia.c b/drivers/ssb/pcmcia.c
index f8533795ee7f..c821c6b2a6a0 100644
--- a/drivers/ssb/pcmcia.c
+++ b/drivers/ssb/pcmcia.c
@@ -3,7 +3,7 @@
3 * PCMCIA-Hostbus related functions 3 * PCMCIA-Hostbus related functions
4 * 4 *
5 * Copyright 2006 Johannes Berg <johannes@sipsolutions.net> 5 * Copyright 2006 Johannes Berg <johannes@sipsolutions.net>
6 * Copyright 2007-2008 Michael Buesch <mb@bu3sch.de> 6 * Copyright 2007-2008 Michael Buesch <m@bues.ch>
7 * 7 *
8 * Licensed under the GNU/GPL. See COPYING for details. 8 * Licensed under the GNU/GPL. See COPYING for details.
9 */ 9 */
diff --git a/drivers/ssb/scan.c b/drivers/ssb/scan.c
index 45e5babd3961..3e844874631f 100644
--- a/drivers/ssb/scan.c
+++ b/drivers/ssb/scan.c
@@ -2,7 +2,7 @@
2 * Sonics Silicon Backplane 2 * Sonics Silicon Backplane
3 * Bus scanning 3 * Bus scanning
4 * 4 *
5 * Copyright (C) 2005-2007 Michael Buesch <mb@bu3sch.de> 5 * Copyright (C) 2005-2007 Michael Buesch <m@bues.ch>
6 * Copyright (C) 2005 Martin Langer <martin-langer@gmx.de> 6 * Copyright (C) 2005 Martin Langer <martin-langer@gmx.de>
7 * Copyright (C) 2005 Stefano Brivio <st3@riseup.net> 7 * Copyright (C) 2005 Stefano Brivio <st3@riseup.net>
8 * Copyright (C) 2005 Danny van Dyk <kugelfang@gentoo.org> 8 * Copyright (C) 2005 Danny van Dyk <kugelfang@gentoo.org>
@@ -310,8 +310,7 @@ int ssb_bus_scan(struct ssb_bus *bus,
310 } else { 310 } else {
311 if (bus->bustype == SSB_BUSTYPE_PCI) { 311 if (bus->bustype == SSB_BUSTYPE_PCI) {
312 bus->chip_id = pcidev_to_chipid(bus->host_pci); 312 bus->chip_id = pcidev_to_chipid(bus->host_pci);
313 pci_read_config_byte(bus->host_pci, PCI_REVISION_ID, 313 bus->chip_rev = bus->host_pci->revision;
314 &bus->chip_rev);
315 bus->chip_package = 0; 314 bus->chip_package = 0;
316 } else { 315 } else {
317 bus->chip_id = 0x4710; 316 bus->chip_id = 0x4710;
diff --git a/drivers/ssb/sdio.c b/drivers/ssb/sdio.c
index 65a6080cb02a..63fd709038ca 100644
--- a/drivers/ssb/sdio.c
+++ b/drivers/ssb/sdio.c
@@ -6,7 +6,7 @@
6 * 6 *
7 * Based on drivers/ssb/pcmcia.c 7 * Based on drivers/ssb/pcmcia.c
8 * Copyright 2006 Johannes Berg <johannes@sipsolutions.net> 8 * Copyright 2006 Johannes Berg <johannes@sipsolutions.net>
9 * Copyright 2007-2008 Michael Buesch <mb@bu3sch.de> 9 * Copyright 2007-2008 Michael Buesch <m@bues.ch>
10 * 10 *
11 * Licensed under the GNU/GPL. See COPYING for details. 11 * Licensed under the GNU/GPL. See COPYING for details.
12 * 12 *
diff --git a/drivers/ssb/sprom.c b/drivers/ssb/sprom.c
index 45ff0e3a3828..80d366fcf8d3 100644
--- a/drivers/ssb/sprom.c
+++ b/drivers/ssb/sprom.c
@@ -2,7 +2,7 @@
2 * Sonics Silicon Backplane 2 * Sonics Silicon Backplane
3 * Common SPROM support routines 3 * Common SPROM support routines
4 * 4 *
5 * Copyright (C) 2005-2008 Michael Buesch <mb@bu3sch.de> 5 * Copyright (C) 2005-2008 Michael Buesch <m@bues.ch>
6 * Copyright (C) 2005 Martin Langer <martin-langer@gmx.de> 6 * Copyright (C) 2005 Martin Langer <martin-langer@gmx.de>
7 * Copyright (C) 2005 Stefano Brivio <st3@riseup.net> 7 * Copyright (C) 2005 Stefano Brivio <st3@riseup.net>
8 * Copyright (C) 2005 Danny van Dyk <kugelfang@gentoo.org> 8 * Copyright (C) 2005 Danny van Dyk <kugelfang@gentoo.org>