diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2015-02-08 11:11:47 -0500 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2015-03-02 09:59:45 -0500 |
commit | 4186721d02b71ae943e60bbf50d3488fd5fd6adb (patch) | |
tree | 7623f94d3baa042f5090780bb285f5be1e6ff847 /drivers/bcma | |
parent | ba8b6ae6e91ed4d866f83b026138cc75a955e101 (diff) |
bcma: add helpers bringing PCIe hosted bus up / down
Bringing PCIe hosted bus up requires operating on host-related core.
Since we plan to support PCIe Gen 2 devices we should provide a helper
picking the correct one (PCIE or PCIE2).
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/bcma')
-rw-r--r-- | drivers/bcma/bcma_private.h | 2 | ||||
-rw-r--r-- | drivers/bcma/driver_pci.c | 20 | ||||
-rw-r--r-- | drivers/bcma/host_pci.c | 28 |
3 files changed, 32 insertions, 18 deletions
diff --git a/drivers/bcma/bcma_private.h b/drivers/bcma/bcma_private.h index ac6c5fca906d..351f4afdad25 100644 --- a/drivers/bcma/bcma_private.h +++ b/drivers/bcma/bcma_private.h | |||
@@ -101,6 +101,8 @@ static inline void __exit bcma_host_soc_unregister_driver(void) | |||
101 | 101 | ||
102 | /* driver_pci.c */ | 102 | /* driver_pci.c */ |
103 | u32 bcma_pcie_read(struct bcma_drv_pci *pc, u32 address); | 103 | u32 bcma_pcie_read(struct bcma_drv_pci *pc, u32 address); |
104 | void bcma_core_pci_up(struct bcma_drv_pci *pc); | ||
105 | void bcma_core_pci_down(struct bcma_drv_pci *pc); | ||
104 | 106 | ||
105 | extern int bcma_chipco_watchdog_register(struct bcma_drv_cc *cc); | 107 | extern int bcma_chipco_watchdog_register(struct bcma_drv_cc *cc); |
106 | 108 | ||
diff --git a/drivers/bcma/driver_pci.c b/drivers/bcma/driver_pci.c index 786666488a2d..cf92bfa7eae0 100644 --- a/drivers/bcma/driver_pci.c +++ b/drivers/bcma/driver_pci.c | |||
@@ -328,28 +328,12 @@ static void bcma_core_pci_extend_L1timer(struct bcma_drv_pci *pc, bool extend) | |||
328 | bcma_pcie_read(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG); | 328 | bcma_pcie_read(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG); |
329 | } | 329 | } |
330 | 330 | ||
331 | void bcma_core_pci_up(struct bcma_bus *bus) | 331 | void bcma_core_pci_up(struct bcma_drv_pci *pc) |
332 | { | 332 | { |
333 | struct bcma_drv_pci *pc; | ||
334 | |||
335 | if (bus->hosttype != BCMA_HOSTTYPE_PCI) | ||
336 | return; | ||
337 | |||
338 | pc = &bus->drv_pci[0]; | ||
339 | |||
340 | bcma_core_pci_extend_L1timer(pc, true); | 333 | bcma_core_pci_extend_L1timer(pc, true); |
341 | } | 334 | } |
342 | EXPORT_SYMBOL_GPL(bcma_core_pci_up); | ||
343 | 335 | ||
344 | void bcma_core_pci_down(struct bcma_bus *bus) | 336 | void bcma_core_pci_down(struct bcma_drv_pci *pc) |
345 | { | 337 | { |
346 | struct bcma_drv_pci *pc; | ||
347 | |||
348 | if (bus->hosttype != BCMA_HOSTTYPE_PCI) | ||
349 | return; | ||
350 | |||
351 | pc = &bus->drv_pci[0]; | ||
352 | |||
353 | bcma_core_pci_extend_L1timer(pc, false); | 338 | bcma_core_pci_extend_L1timer(pc, false); |
354 | } | 339 | } |
355 | EXPORT_SYMBOL_GPL(bcma_core_pci_down); | ||
diff --git a/drivers/bcma/host_pci.c b/drivers/bcma/host_pci.c index 53c6a8a58859..8dd37dc94cae 100644 --- a/drivers/bcma/host_pci.c +++ b/drivers/bcma/host_pci.c | |||
@@ -310,3 +310,31 @@ void __exit bcma_host_pci_exit(void) | |||
310 | { | 310 | { |
311 | pci_unregister_driver(&bcma_pci_bridge_driver); | 311 | pci_unregister_driver(&bcma_pci_bridge_driver); |
312 | } | 312 | } |
313 | |||
314 | /************************************************** | ||
315 | * Runtime ops for drivers. | ||
316 | **************************************************/ | ||
317 | |||
318 | /* See also pcicore_up */ | ||
319 | void bcma_host_pci_up(struct bcma_bus *bus) | ||
320 | { | ||
321 | if (bus->hosttype != BCMA_HOSTTYPE_PCI) | ||
322 | return; | ||
323 | |||
324 | if (bus->host_is_pcie2) | ||
325 | pr_warn("Bringing up bus with PCIe Gen 2 host is unsupported yet\n"); | ||
326 | else | ||
327 | bcma_core_pci_up(&bus->drv_pci[0]); | ||
328 | } | ||
329 | EXPORT_SYMBOL_GPL(bcma_host_pci_up); | ||
330 | |||
331 | /* See also pcicore_down */ | ||
332 | void bcma_host_pci_down(struct bcma_bus *bus) | ||
333 | { | ||
334 | if (bus->hosttype != BCMA_HOSTTYPE_PCI) | ||
335 | return; | ||
336 | |||
337 | if (!bus->host_is_pcie2) | ||
338 | bcma_core_pci_down(&bus->drv_pci[0]); | ||
339 | } | ||
340 | EXPORT_SYMBOL_GPL(bcma_host_pci_down); | ||