brintos

brintos / linux-shallow public Read only

0
0
Text · 7.0 KiB · 5f31bdf Raw
267 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef LINUX_SSB_PRIVATE_H_3#define LINUX_SSB_PRIVATE_H_4 5#define PFX		"ssb: "6#define pr_fmt(fmt)	PFX fmt7 8#include <linux/ssb/ssb.h>9#include <linux/types.h>10#include <linux/bcm47xx_wdt.h>11 12 13/* pci.c */14#ifdef CONFIG_SSB_PCIHOST15extern int ssb_pci_switch_core(struct ssb_bus *bus,16			       struct ssb_device *dev);17extern int ssb_pci_switch_coreidx(struct ssb_bus *bus,18				  u8 coreidx);19extern int ssb_pci_xtal(struct ssb_bus *bus, u32 what,20			int turn_on);21extern int ssb_pci_get_invariants(struct ssb_bus *bus,22				  struct ssb_init_invariants *iv);23extern void ssb_pci_exit(struct ssb_bus *bus);24extern int ssb_pci_init(struct ssb_bus *bus);25extern const struct ssb_bus_ops ssb_pci_ops;26 27#else /* CONFIG_SSB_PCIHOST */28 29static inline int ssb_pci_switch_core(struct ssb_bus *bus,30				      struct ssb_device *dev)31{32	return 0;33}34static inline int ssb_pci_switch_coreidx(struct ssb_bus *bus,35					 u8 coreidx)36{37	return 0;38}39static inline int ssb_pci_xtal(struct ssb_bus *bus, u32 what,40			       int turn_on)41{42	return 0;43}44static inline void ssb_pci_exit(struct ssb_bus *bus)45{46}47static inline int ssb_pci_init(struct ssb_bus *bus)48{49	return 0;50}51#endif /* CONFIG_SSB_PCIHOST */52 53 54/* pcmcia.c */55#ifdef CONFIG_SSB_PCMCIAHOST56extern int ssb_pcmcia_switch_coreidx(struct ssb_bus *bus,57				     u8 coreidx);58extern int ssb_pcmcia_switch_segment(struct ssb_bus *bus,59				     u8 seg);60extern int ssb_pcmcia_get_invariants(struct ssb_bus *bus,61				     struct ssb_init_invariants *iv);62extern int ssb_pcmcia_hardware_setup(struct ssb_bus *bus);63extern void ssb_pcmcia_exit(struct ssb_bus *bus);64extern int ssb_pcmcia_init(struct ssb_bus *bus);65extern int ssb_host_pcmcia_init(void);66extern void ssb_host_pcmcia_exit(void);67extern const struct ssb_bus_ops ssb_pcmcia_ops;68#else /* CONFIG_SSB_PCMCIAHOST */69static inline int ssb_pcmcia_switch_coreidx(struct ssb_bus *bus,70					    u8 coreidx)71{72	return 0;73}74static inline int ssb_pcmcia_switch_segment(struct ssb_bus *bus,75					    u8 seg)76{77	return 0;78}79static inline int ssb_pcmcia_hardware_setup(struct ssb_bus *bus)80{81	return 0;82}83static inline void ssb_pcmcia_exit(struct ssb_bus *bus)84{85}86static inline int ssb_pcmcia_init(struct ssb_bus *bus)87{88	return 0;89}90static inline int ssb_host_pcmcia_init(void)91{92	return 0;93}94static inline void ssb_host_pcmcia_exit(void)95{96}97#endif /* CONFIG_SSB_PCMCIAHOST */98 99/* sdio.c */100#ifdef CONFIG_SSB_SDIOHOST101extern int ssb_sdio_get_invariants(struct ssb_bus *bus,102				     struct ssb_init_invariants *iv);103 104extern u32 ssb_sdio_scan_read32(struct ssb_bus *bus, u16 offset);105extern int ssb_sdio_scan_switch_coreidx(struct ssb_bus *bus, u8 coreidx);106extern void ssb_sdio_exit(struct ssb_bus *bus);107extern int ssb_sdio_init(struct ssb_bus *bus);108 109extern const struct ssb_bus_ops ssb_sdio_ops;110#else /* CONFIG_SSB_SDIOHOST */111static inline u32 ssb_sdio_scan_read32(struct ssb_bus *bus, u16 offset)112{113	return 0;114}115static inline int ssb_sdio_scan_switch_coreidx(struct ssb_bus *bus, u8 coreidx)116{117	return 0;118}119static inline void ssb_sdio_exit(struct ssb_bus *bus)120{121}122static inline int ssb_sdio_init(struct ssb_bus *bus)123{124	return 0;125}126#endif /* CONFIG_SSB_SDIOHOST */127 128/**************************************************129 * host_soc.c130 **************************************************/131 132#ifdef CONFIG_SSB_HOST_SOC133extern const struct ssb_bus_ops ssb_host_soc_ops;134 135extern int ssb_host_soc_get_invariants(struct ssb_bus *bus,136				       struct ssb_init_invariants *iv);137#endif138 139/* scan.c */140extern const char *ssb_core_name(u16 coreid);141extern int ssb_bus_scan(struct ssb_bus *bus,142			unsigned long baseaddr);143extern void ssb_iounmap(struct ssb_bus *ssb);144 145 146/* sprom.c */147extern148ssize_t ssb_attr_sprom_show(struct ssb_bus *bus, char *buf,149			    int (*sprom_read)(struct ssb_bus *bus, u16 *sprom));150extern151ssize_t ssb_attr_sprom_store(struct ssb_bus *bus,152			     const char *buf, size_t count,153			     int (*sprom_check_crc)(const u16 *sprom, size_t size),154			     int (*sprom_write)(struct ssb_bus *bus, const u16 *sprom));155extern int ssb_fill_sprom_with_fallback(struct ssb_bus *bus,156					struct ssb_sprom *out);157 158 159/* core.c */160extern u32 ssb_calc_clock_rate(u32 plltype, u32 n, u32 m);161extern struct ssb_bus *ssb_pci_dev_to_bus(struct pci_dev *pdev);162int ssb_for_each_bus_call(unsigned long data,163			  int (*func)(struct ssb_bus *bus, unsigned long data));164extern struct ssb_bus *ssb_pcmcia_dev_to_bus(struct pcmcia_device *pdev);165 166struct ssb_freeze_context {167	/* Pointer to the bus */168	struct ssb_bus *bus;169	/* Boolean list to indicate whether a device is frozen on this bus. */170	bool device_frozen[SSB_MAX_NR_CORES];171};172extern int ssb_devices_freeze(struct ssb_bus *bus, struct ssb_freeze_context *ctx);173extern int ssb_devices_thaw(struct ssb_freeze_context *ctx);174 175 176 177/* b43_pci_bridge.c */178#ifdef CONFIG_SSB_B43_PCI_BRIDGE179extern int __init b43_pci_ssb_bridge_init(void);180extern void __exit b43_pci_ssb_bridge_exit(void);181#else /* CONFIG_SSB_B43_PCI_BRIDGE */182static inline int b43_pci_ssb_bridge_init(void)183{184	return 0;185}186static inline void b43_pci_ssb_bridge_exit(void)187{188}189#endif /* CONFIG_SSB_B43_PCI_BRIDGE */190 191/* driver_chipcommon_pmu.c */192extern u32 ssb_pmu_get_cpu_clock(struct ssb_chipcommon *cc);193extern u32 ssb_pmu_get_controlclock(struct ssb_chipcommon *cc);194extern u32 ssb_pmu_get_alp_clock(struct ssb_chipcommon *cc);195 196extern u32 ssb_chipco_watchdog_timer_set_wdt(struct bcm47xx_wdt *wdt,197					     u32 ticks);198extern u32 ssb_chipco_watchdog_timer_set_ms(struct bcm47xx_wdt *wdt, u32 ms);199 200/* driver_chipcommon_sflash.c */201#ifdef CONFIG_SSB_SFLASH202int ssb_sflash_init(struct ssb_chipcommon *cc);203#else204static inline int ssb_sflash_init(struct ssb_chipcommon *cc)205{206	pr_err("Serial flash not supported\n");207	return 0;208}209#endif /* CONFIG_SSB_SFLASH */210 211#ifdef CONFIG_SSB_DRIVER_MIPS212extern struct platform_device ssb_pflash_dev;213#endif214 215#ifdef CONFIG_SSB_SFLASH216extern struct platform_device ssb_sflash_dev;217#endif218 219#ifdef CONFIG_SSB_DRIVER_EXTIF220extern u32 ssb_extif_watchdog_timer_set_wdt(struct bcm47xx_wdt *wdt, u32 ticks);221extern u32 ssb_extif_watchdog_timer_set_ms(struct bcm47xx_wdt *wdt, u32 ms);222#else223static inline u32 ssb_extif_watchdog_timer_set_wdt(struct bcm47xx_wdt *wdt,224						   u32 ticks)225{226	return 0;227}228static inline u32 ssb_extif_watchdog_timer_set_ms(struct bcm47xx_wdt *wdt,229						  u32 ms)230{231	return 0;232}233#endif234 235#ifdef CONFIG_SSB_EMBEDDED236extern int ssb_watchdog_register(struct ssb_bus *bus);237#else /* CONFIG_SSB_EMBEDDED */238static inline int ssb_watchdog_register(struct ssb_bus *bus)239{240	return 0;241}242#endif /* CONFIG_SSB_EMBEDDED */243 244#ifdef CONFIG_SSB_DRIVER_EXTIF245extern void ssb_extif_init(struct ssb_extif *extif);246#else247static inline void ssb_extif_init(struct ssb_extif *extif)248{249}250#endif251 252#ifdef CONFIG_SSB_DRIVER_GPIO253extern int ssb_gpio_init(struct ssb_bus *bus);254extern int ssb_gpio_unregister(struct ssb_bus *bus);255#else /* CONFIG_SSB_DRIVER_GPIO */256static inline int ssb_gpio_init(struct ssb_bus *bus)257{258	return -ENOTSUPP;259}260static inline int ssb_gpio_unregister(struct ssb_bus *bus)261{262	return 0;263}264#endif /* CONFIG_SSB_DRIVER_GPIO */265 266#endif /* LINUX_SSB_PRIVATE_H_ */267