diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2012-04-28 20:18:50 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-05-16 12:45:22 -0400 |
commit | 29f6b3d823885093890b1604d8450e7b57a31281 (patch) | |
tree | ed9f92e732c742a1fc5931372cb58a4adf89f6d4 | |
parent | 0b2948eeb128e259b7903b12de79d6886d43eb11 (diff) |
bcma: add bcma_core_pci_extend_L1timer
This code is based on code from pcie_extendL1timer() in brcmsmac. This
patch is part of the move of pci specific code from brcmsmac to bcma.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Tested-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/bcma/driver_pci.c | 16 | ||||
-rw-r--r-- | include/linux/bcma/bcma_driver_pci.h | 2 |
2 files changed, 16 insertions, 2 deletions
diff --git a/drivers/bcma/driver_pci.c b/drivers/bcma/driver_pci.c index 4d38ae179b48..949206674dc8 100644 --- a/drivers/bcma/driver_pci.c +++ b/drivers/bcma/driver_pci.c | |||
@@ -24,14 +24,12 @@ u32 bcma_pcie_read(struct bcma_drv_pci *pc, u32 address) | |||
24 | return pcicore_read32(pc, BCMA_CORE_PCI_PCIEIND_DATA); | 24 | return pcicore_read32(pc, BCMA_CORE_PCI_PCIEIND_DATA); |
25 | } | 25 | } |
26 | 26 | ||
27 | #if 0 | ||
28 | static void bcma_pcie_write(struct bcma_drv_pci *pc, u32 address, u32 data) | 27 | static void bcma_pcie_write(struct bcma_drv_pci *pc, u32 address, u32 data) |
29 | { | 28 | { |
30 | pcicore_write32(pc, BCMA_CORE_PCI_PCIEIND_ADDR, address); | 29 | pcicore_write32(pc, BCMA_CORE_PCI_PCIEIND_ADDR, address); |
31 | pcicore_read32(pc, BCMA_CORE_PCI_PCIEIND_ADDR); | 30 | pcicore_read32(pc, BCMA_CORE_PCI_PCIEIND_ADDR); |
32 | pcicore_write32(pc, BCMA_CORE_PCI_PCIEIND_DATA, data); | 31 | pcicore_write32(pc, BCMA_CORE_PCI_PCIEIND_DATA, data); |
33 | } | 32 | } |
34 | #endif | ||
35 | 33 | ||
36 | static void bcma_pcie_mdio_set_phy(struct bcma_drv_pci *pc, u8 phy) | 34 | static void bcma_pcie_mdio_set_phy(struct bcma_drv_pci *pc, u8 phy) |
37 | { | 35 | { |
@@ -224,3 +222,17 @@ out: | |||
224 | return err; | 222 | return err; |
225 | } | 223 | } |
226 | EXPORT_SYMBOL_GPL(bcma_core_pci_irq_ctl); | 224 | EXPORT_SYMBOL_GPL(bcma_core_pci_irq_ctl); |
225 | |||
226 | void bcma_core_pci_extend_L1timer(struct bcma_drv_pci *pc, bool extend) | ||
227 | { | ||
228 | u32 w; | ||
229 | |||
230 | w = bcma_pcie_read(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG); | ||
231 | if (extend) | ||
232 | w |= BCMA_CORE_PCI_ASPMTIMER_EXTEND; | ||
233 | else | ||
234 | w &= ~BCMA_CORE_PCI_ASPMTIMER_EXTEND; | ||
235 | bcma_pcie_write(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG, w); | ||
236 | bcma_pcie_read(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG); | ||
237 | } | ||
238 | EXPORT_SYMBOL_GPL(bcma_core_pci_extend_L1timer); | ||
diff --git a/include/linux/bcma/bcma_driver_pci.h b/include/linux/bcma/bcma_driver_pci.h index 46c71e27d31f..20c9f96d4070 100644 --- a/include/linux/bcma/bcma_driver_pci.h +++ b/include/linux/bcma/bcma_driver_pci.h | |||
@@ -133,6 +133,7 @@ struct pci_dev; | |||
133 | #define BCMA_CORE_PCI_DLLP_LRREG 0x120 /* Link Replay */ | 133 | #define BCMA_CORE_PCI_DLLP_LRREG 0x120 /* Link Replay */ |
134 | #define BCMA_CORE_PCI_DLLP_LACKTOREG 0x124 /* Link Ack Timeout */ | 134 | #define BCMA_CORE_PCI_DLLP_LACKTOREG 0x124 /* Link Ack Timeout */ |
135 | #define BCMA_CORE_PCI_DLLP_PMTHRESHREG 0x128 /* Power Management Threshold */ | 135 | #define BCMA_CORE_PCI_DLLP_PMTHRESHREG 0x128 /* Power Management Threshold */ |
136 | #define BCMA_CORE_PCI_ASPMTIMER_EXTEND 0x01000000 /* > rev7: enable extend ASPM timer */ | ||
136 | #define BCMA_CORE_PCI_DLLP_RTRYWPREG 0x12C /* Retry buffer write ptr */ | 137 | #define BCMA_CORE_PCI_DLLP_RTRYWPREG 0x12C /* Retry buffer write ptr */ |
137 | #define BCMA_CORE_PCI_DLLP_RTRYRPREG 0x130 /* Retry buffer Read ptr */ | 138 | #define BCMA_CORE_PCI_DLLP_RTRYRPREG 0x130 /* Retry buffer Read ptr */ |
138 | #define BCMA_CORE_PCI_DLLP_RTRYPPREG 0x134 /* Retry buffer Purged ptr */ | 139 | #define BCMA_CORE_PCI_DLLP_RTRYPPREG 0x134 /* Retry buffer Purged ptr */ |
@@ -207,6 +208,7 @@ struct bcma_drv_pci { | |||
207 | extern void __devinit bcma_core_pci_init(struct bcma_drv_pci *pc); | 208 | extern void __devinit bcma_core_pci_init(struct bcma_drv_pci *pc); |
208 | extern int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc, | 209 | extern int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc, |
209 | struct bcma_device *core, bool enable); | 210 | struct bcma_device *core, bool enable); |
211 | extern void bcma_core_pci_extend_L1timer(struct bcma_drv_pci *pc, bool extend); | ||
210 | 212 | ||
211 | extern int bcma_core_pci_pcibios_map_irq(const struct pci_dev *dev); | 213 | extern int bcma_core_pci_pcibios_map_irq(const struct pci_dev *dev); |
212 | extern int bcma_core_pci_plat_dev_init(struct pci_dev *dev); | 214 | extern int bcma_core_pci_plat_dev_init(struct pci_dev *dev); |