]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
bcma: allow disabling (not building) PCI driver
authorRafał Miłecki <zajec5@gmail.com>
Thu, 5 Mar 2015 17:25:11 +0000 (18:25 +0100)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 13 Mar 2015 14:25:50 +0000 (16:25 +0200)
It isn't required for bcma bus on SoCs, so provide some empty functions
and allow disabling it.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/bcma/Kconfig
drivers/bcma/bcma_private.h
include/linux/bcma/bcma_driver_pci.h

index 9be17d3431bb000a4a18cb515fbb7fe9f7eda0d6..1500b7120fc74581fed7eff376057658943bf45f 100644 (file)
@@ -45,9 +45,9 @@ config BCMA_HOST_SOC
 
          If unsure, say N
 
-# TODO: make it depend on PCI when ready
 config BCMA_DRIVER_PCI
-       bool
+       bool "BCMA Broadcom PCI core driver"
+       depends on BCMA && PCI
        default y
        help
          BCMA bus may have many versions of PCIe core. This driver
index 5a1d22489afc78d3a9a059655c6d661bcaf139b1..15f2b2e242ea76b9ed882383f51a976a72d7b325 100644 (file)
@@ -106,15 +106,35 @@ static inline void __exit bcma_host_soc_unregister_driver(void)
 #endif /* CONFIG_BCMA_HOST_SOC && CONFIG_OF */
 
 /* driver_pci.c */
+#ifdef CONFIG_BCMA_DRIVER_PCI
 u32 bcma_pcie_read(struct bcma_drv_pci *pc, u32 address);
 void bcma_core_pci_early_init(struct bcma_drv_pci *pc);
 void bcma_core_pci_init(struct bcma_drv_pci *pc);
 void bcma_core_pci_up(struct bcma_drv_pci *pc);
 void bcma_core_pci_down(struct bcma_drv_pci *pc);
+#else
+static inline void bcma_core_pci_early_init(struct bcma_drv_pci *pc)
+{
+       WARN_ON(pc->core->bus->hosttype == BCMA_HOSTTYPE_PCI);
+}
+static inline void bcma_core_pci_init(struct bcma_drv_pci *pc)
+{
+       /* Initialization is required for PCI hosted bus */
+       WARN_ON(pc->core->bus->hosttype == BCMA_HOSTTYPE_PCI);
+}
+#endif
 
 /* driver_pcie2.c */
+#ifdef CONFIG_BCMA_DRIVER_PCI
 void bcma_core_pcie2_init(struct bcma_drv_pcie2 *pcie2);
 void bcma_core_pcie2_up(struct bcma_drv_pcie2 *pcie2);
+#else
+static inline void bcma_core_pcie2_init(struct bcma_drv_pcie2 *pcie2)
+{
+       /* Initialization is required for PCI hosted bus */
+       WARN_ON(pcie2->core->bus->hosttype == BCMA_HOSTTYPE_PCI);
+}
+#endif
 
 extern int bcma_chipco_watchdog_register(struct bcma_drv_cc *cc);
 
index 3a468687c170cdbb92e758aea8b423879501ab98..5ba6918ca20bc9d3bc30993c21b7ef10a6c42243 100644 (file)
@@ -238,7 +238,13 @@ struct bcma_drv_pci {
 #define pcicore_write16(pc, offset, val)       bcma_write16((pc)->core, offset, val)
 #define pcicore_write32(pc, offset, val)       bcma_write32((pc)->core, offset, val)
 
+#ifdef CONFIG_BCMA_DRIVER_PCI
 extern void bcma_core_pci_power_save(struct bcma_bus *bus, bool up);
+#else
+static inline void bcma_core_pci_power_save(struct bcma_bus *bus, bool up)
+{
+}
+#endif
 
 extern int bcma_core_pci_pcibios_map_irq(const struct pci_dev *dev);
 extern int bcma_core_pci_plat_dev_init(struct pci_dev *dev);