1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef LINUX_BCMA_PRIVATE_H_ 3 #define LINUX_BCMA_PRIVATE_H_ 4 5 #ifndef pr_fmt 6 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 7 #endif 8 9 #include <linux/bcma/bcma.h> 10 #include <linux/delay.h> 11 12 #define bcma_err(bus, fmt, ...) \ 13 pr_err("bus%d: " fmt, (bus)->num, ##__VA_ARGS__) 14 #define bcma_warn(bus, fmt, ...) \ 15 pr_warn("bus%d: " fmt, (bus)->num, ##__VA_ARGS__) 16 #define bcma_info(bus, fmt, ...) \ 17 pr_info("bus%d: " fmt, (bus)->num, ##__VA_ARGS__) 18 #define bcma_debug(bus, fmt, ...) \ 19 pr_debug("bus%d: " fmt, (bus)->num, ##__VA_ARGS__) 20 21 struct bcma_bus; 22 23 /* main.c */ 24 bool bcma_wait_value(struct bcma_device *core, u16 reg, u32 mask, u32 value, 25 int timeout); 26 void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core); 27 void bcma_init_bus(struct bcma_bus *bus); 28 void bcma_unregister_cores(struct bcma_bus *bus); 29 int bcma_bus_register(struct bcma_bus *bus); 30 void bcma_bus_unregister(struct bcma_bus *bus); 31 int __init bcma_bus_early_register(struct bcma_bus *bus); 32 #ifdef CONFIG_PM 33 int bcma_bus_suspend(struct bcma_bus *bus); 34 int bcma_bus_resume(struct bcma_bus *bus); 35 #endif 36 struct device *bcma_bus_get_host_dev(struct bcma_bus *bus); 37 38 /* scan.c */ 39 void bcma_detect_chip(struct bcma_bus *bus); 40 int bcma_bus_scan(struct bcma_bus *bus); 41 42 /* sprom.c */ 43 int bcma_sprom_get(struct bcma_bus *bus); 44 45 /* driver_chipcommon.c */ 46 void bcma_core_chipcommon_early_init(struct bcma_drv_cc *cc); 47 void bcma_core_chipcommon_init(struct bcma_drv_cc *cc); 48 void bcma_chipco_bcm4331_ext_pa_lines_ctl(struct bcma_drv_cc *cc, bool enable); 49 #ifdef CONFIG_BCMA_DRIVER_MIPS 50 void bcma_chipco_serial_init(struct bcma_drv_cc *cc); 51 #endif /* CONFIG_BCMA_DRIVER_MIPS */ 52 53 /* driver_chipcommon_b.c */ 54 int bcma_core_chipcommon_b_init(struct bcma_drv_cc_b *ccb); 55 void bcma_core_chipcommon_b_free(struct bcma_drv_cc_b *ccb); 56 57 /* driver_chipcommon_pmu.c */ 58 void bcma_pmu_early_init(struct bcma_drv_cc *cc); 59 void bcma_pmu_init(struct bcma_drv_cc *cc); 60 u32 bcma_pmu_get_alp_clock(struct bcma_drv_cc *cc); 61 u32 bcma_pmu_get_cpu_clock(struct bcma_drv_cc *cc); 62 63 /************************************************** 64 * driver_chipcommon_sflash.c 65 **************************************************/ 66 67 #ifdef CONFIG_BCMA_PFLASH 68 extern struct platform_device bcma_pflash_dev; 69 int bcma_pflash_init(struct bcma_drv_cc *cc); 70 #else 71 static inline int bcma_pflash_init(struct bcma_drv_cc *cc) 72 { 73 bcma_err(cc->core->bus, "Parallel flash not supported\n"); 74 return 0; 75 } 76 #endif /* CONFIG_BCMA_PFLASH */ 77 78 #ifdef CONFIG_BCMA_SFLASH 79 /* driver_chipcommon_sflash.c */ 80 int bcma_sflash_init(struct bcma_drv_cc *cc); 81 extern struct platform_device bcma_sflash_dev; 82 #else 83 static inline int bcma_sflash_init(struct bcma_drv_cc *cc) 84 { 85 bcma_err(cc->core->bus, "Serial flash not supported\n"); 86 return 0; 87 } 88 #endif /* CONFIG_BCMA_SFLASH */ 89 90 #ifdef CONFIG_BCMA_NFLASH 91 /* driver_chipcommon_nflash.c */ 92 int bcma_nflash_init(struct bcma_drv_cc *cc); 93 extern struct platform_device bcma_nflash_dev; 94 #else 95 static inline int bcma_nflash_init(struct bcma_drv_cc *cc) 96 { 97 bcma_err(cc->core->bus, "NAND flash not supported\n"); 98 return 0; 99 } 100 #endif /* CONFIG_BCMA_NFLASH */ 101 102 #ifdef CONFIG_BCMA_HOST_PCI 103 /* host_pci.c */ 104 extern int __init bcma_host_pci_init(void); 105 extern void __exit bcma_host_pci_exit(void); 106 #endif /* CONFIG_BCMA_HOST_PCI */ 107 108 /* host_soc.c */ 109 #if defined(CONFIG_BCMA_HOST_SOC) && defined(CONFIG_OF) 110 extern int __init bcma_host_soc_register_driver(void); 111 extern void __exit bcma_host_soc_unregister_driver(void); 112 #else 113 static inline int __init bcma_host_soc_register_driver(void) 114 { 115 return 0; 116 } 117 static inline void __exit bcma_host_soc_unregister_driver(void) 118 { 119 } 120 #endif /* CONFIG_BCMA_HOST_SOC && CONFIG_OF */ 121 122 /* driver_pci.c */ 123 #ifdef CONFIG_BCMA_DRIVER_PCI 124 u32 bcma_pcie_read(struct bcma_drv_pci *pc, u32 address); 125 void bcma_core_pci_early_init(struct bcma_drv_pci *pc); 126 void bcma_core_pci_init(struct bcma_drv_pci *pc); 127 void bcma_core_pci_up(struct bcma_drv_pci *pc); 128 void bcma_core_pci_down(struct bcma_drv_pci *pc); 129 #else 130 static inline void bcma_core_pci_early_init(struct bcma_drv_pci *pc) 131 { 132 WARN_ON(pc->core->bus->hosttype == BCMA_HOSTTYPE_PCI); 133 } 134 static inline void bcma_core_pci_init(struct bcma_drv_pci *pc) 135 { 136 /* Initialization is required for PCI hosted bus */ 137 WARN_ON(pc->core->bus->hosttype == BCMA_HOSTTYPE_PCI); 138 } 139 #endif 140 141 /* driver_pcie2.c */ 142 #ifdef CONFIG_BCMA_DRIVER_PCI 143 void bcma_core_pcie2_init(struct bcma_drv_pcie2 *pcie2); 144 void bcma_core_pcie2_up(struct bcma_drv_pcie2 *pcie2); 145 #else 146 static inline void bcma_core_pcie2_init(struct bcma_drv_pcie2 *pcie2) 147 { 148 /* Initialization is required for PCI hosted bus */ 149 WARN_ON(pcie2->core->bus->hosttype == BCMA_HOSTTYPE_PCI); 150 } 151 #endif 152 153 extern int bcma_chipco_watchdog_register(struct bcma_drv_cc *cc); 154 155 #ifdef CONFIG_BCMA_DRIVER_PCI_HOSTMODE 156 bool bcma_core_pci_is_in_hostmode(struct bcma_drv_pci *pc); 157 void bcma_core_pci_hostmode_init(struct bcma_drv_pci *pc); 158 #else 159 static inline bool bcma_core_pci_is_in_hostmode(struct bcma_drv_pci *pc) 160 { 161 return false; 162 } 163 static inline void bcma_core_pci_hostmode_init(struct bcma_drv_pci *pc) 164 { 165 } 166 #endif /* CONFIG_BCMA_DRIVER_PCI_HOSTMODE */ 167 168 /************************************************** 169 * driver_mips.c 170 **************************************************/ 171 172 #ifdef CONFIG_BCMA_DRIVER_MIPS 173 unsigned int bcma_core_mips_irq(struct bcma_device *dev); 174 void bcma_core_mips_early_init(struct bcma_drv_mips *mcore); 175 void bcma_core_mips_init(struct bcma_drv_mips *mcore); 176 #else 177 static inline unsigned int bcma_core_mips_irq(struct bcma_device *dev) 178 { 179 return 0; 180 } 181 static inline void bcma_core_mips_early_init(struct bcma_drv_mips *mcore) 182 { 183 } 184 static inline void bcma_core_mips_init(struct bcma_drv_mips *mcore) 185 { 186 } 187 #endif 188 189 /************************************************** 190 * driver_gmac_cmn.c 191 **************************************************/ 192 193 #ifdef CONFIG_BCMA_DRIVER_GMAC_CMN 194 void bcma_core_gmac_cmn_init(struct bcma_drv_gmac_cmn *gc); 195 #else 196 static inline void bcma_core_gmac_cmn_init(struct bcma_drv_gmac_cmn *gc) 197 { 198 } 199 #endif 200 201 #ifdef CONFIG_BCMA_DRIVER_GPIO 202 /* driver_gpio.c */ 203 int bcma_gpio_init(struct bcma_drv_cc *cc); 204 int bcma_gpio_unregister(struct bcma_drv_cc *cc); 205 #else 206 static inline int bcma_gpio_init(struct bcma_drv_cc *cc) 207 { 208 return -ENOTSUPP; 209 } 210 static inline int bcma_gpio_unregister(struct bcma_drv_cc *cc) 211 { 212 return 0; 213 } 214 #endif /* CONFIG_BCMA_DRIVER_GPIO */ 215 216 #endif 217