summaryrefslogtreecommitdiffstats
path: root/drivers/bcma
diff options
context:
space:
mode:
authorRafał Miłecki <zajec5@gmail.com>2015-02-08 11:11:47 -0500
committerKalle Valo <kvalo@codeaurora.org>2015-03-02 09:59:45 -0500
commit4186721d02b71ae943e60bbf50d3488fd5fd6adb (patch)
tree7623f94d3baa042f5090780bb285f5be1e6ff847 /drivers/bcma
parentba8b6ae6e91ed4d866f83b026138cc75a955e101 (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.h2
-rw-r--r--drivers/bcma/driver_pci.c20
-rw-r--r--drivers/bcma/host_pci.c28
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 */
103u32 bcma_pcie_read(struct bcma_drv_pci *pc, u32 address); 103u32 bcma_pcie_read(struct bcma_drv_pci *pc, u32 address);
104void bcma_core_pci_up(struct bcma_drv_pci *pc);
105void bcma_core_pci_down(struct bcma_drv_pci *pc);
104 106
105extern int bcma_chipco_watchdog_register(struct bcma_drv_cc *cc); 107extern 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
331void bcma_core_pci_up(struct bcma_bus *bus) 331void 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}
342EXPORT_SYMBOL_GPL(bcma_core_pci_up);
343 335
344void bcma_core_pci_down(struct bcma_bus *bus) 336void 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}
355EXPORT_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 */
319void 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}
329EXPORT_SYMBOL_GPL(bcma_host_pci_up);
330
331/* See also pcicore_down */
332void 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}
340EXPORT_SYMBOL_GPL(bcma_host_pci_down);