diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2011-10-27 00:46:20 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2011-10-27 00:46:20 -0400 |
commit | 6ad390a25a9d1d8606b9b826878f0a30639dc2b3 (patch) | |
tree | 05aff14f02776bc0d59a1f777cb92df6f4456ba9 /drivers/ssb | |
parent | d6069dae4700cf5290a75002c46b9be8ea7eef3c (diff) | |
parent | 3f48e7354358519e5b93f7f755ec270b3f8eafa0 (diff) |
Merge branch 'next' into for-linus
Diffstat (limited to 'drivers/ssb')
-rw-r--r-- | drivers/ssb/b43_pci_bridge.c | 2 | ||||
-rw-r--r-- | drivers/ssb/driver_chipcommon.c | 2 | ||||
-rw-r--r-- | drivers/ssb/driver_chipcommon_pmu.c | 6 | ||||
-rw-r--r-- | drivers/ssb/driver_extif.c | 2 | ||||
-rw-r--r-- | drivers/ssb/driver_gige.c | 15 | ||||
-rw-r--r-- | drivers/ssb/driver_mipscore.c | 2 | ||||
-rw-r--r-- | drivers/ssb/driver_pcicore.c | 30 | ||||
-rw-r--r-- | drivers/ssb/embedded.c | 2 | ||||
-rw-r--r-- | drivers/ssb/main.c | 40 | ||||
-rw-r--r-- | drivers/ssb/pci.c | 11 | ||||
-rw-r--r-- | drivers/ssb/pcihost_wrapper.c | 8 | ||||
-rw-r--r-- | drivers/ssb/pcmcia.c | 2 | ||||
-rw-r--r-- | drivers/ssb/scan.c | 5 | ||||
-rw-r--r-- | drivers/ssb/sdio.c | 2 | ||||
-rw-r--r-- | drivers/ssb/sprom.c | 2 |
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 | ||
109 | static int ssb_gige_pci_read_config(struct pci_bus *bus, unsigned int devfn, | 109 | static 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 | ||
139 | static int ssb_gige_pci_write_config(struct pci_bus *bus, unsigned int devfn, | 140 | static 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 | ||
169 | static int ssb_gige_probe(struct ssb_device *sdev, const struct ssb_device_id *id) | 171 | static 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 | ||
317 | static void ssb_pcicore_init_hostmode(struct ssb_pcicore *pc) | 317 | static 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 | ||
382 | static int pcicore_is_in_hostmode(struct ssb_pcicore *pc) | 382 | static 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 | ||
415 | static void ssb_pcicore_fix_sprom_core_index(struct ssb_pcicore *pc) | 415 | static 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 | ||
517 | static void ssb_pcicore_init_clientmode(struct ssb_pcicore *pc) | 517 | static 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 | ||
523 | void ssb_pcicore_init(struct ssb_pcicore *pc) | 532 | void __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 | ||
550 | static u32 ssb_pcie_read(struct ssb_pcicore *pc, u32 address) | 550 | static 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() */ |
560 | static int ssb_attach_queued_buses(void) | 560 | static 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 | ||
771 | static int ssb_bus_register(struct ssb_bus *bus, | 771 | static 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 |
854 | int ssb_bus_pcibus_register(struct ssb_bus *bus, | 854 | int __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 |
878 | int ssb_bus_pcmciabus_register(struct ssb_bus *bus, | 878 | int __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 |
900 | int ssb_bus_sdiobus_register(struct ssb_bus *bus, struct sdio_func *func, | 900 | int __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, | |||
918 | EXPORT_SYMBOL(ssb_bus_sdiobus_register); | 919 | EXPORT_SYMBOL(ssb_bus_sdiobus_register); |
919 | #endif /* CONFIG_SSB_PCMCIAHOST */ | 920 | #endif /* CONFIG_SSB_PCMCIAHOST */ |
920 | 921 | ||
921 | int ssb_bus_ssbbus_register(struct ssb_bus *bus, | 922 | int __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: | |||
734 | static void ssb_pci_get_boardinfo(struct ssb_bus *bus, | 734 | static 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 | ||
745 | int ssb_pci_get_invariants(struct ssb_bus *bus, | 742 | int 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 | ||
56 | static int ssb_pcihost_probe(struct pci_dev *dev, | 56 | static 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 | ||
113 | int ssb_pcihost_register(struct pci_driver *driver) | 113 | int __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> |