cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ssb_private.h (7156B)


      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 fmt
      7
      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_PCIHOST
     15extern 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_PCMCIAHOST
     56extern 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_SDIOHOST
    101extern 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.c
    130 **************************************************/
    131
    132#ifdef CONFIG_SSB_HOST_SOC
    133extern 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#endif
    138
    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 */
    147extern
    148ssize_t ssb_attr_sprom_show(struct ssb_bus *bus, char *buf,
    149			    int (*sprom_read)(struct ssb_bus *bus, u16 *sprom));
    150extern
    151ssize_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_BRIDGE
    179extern 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_SFLASH
    202int ssb_sflash_init(struct ssb_chipcommon *cc);
    203#else
    204static 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_MIPS
    212extern struct platform_device ssb_pflash_dev;
    213#endif
    214
    215#ifdef CONFIG_SSB_SFLASH
    216extern struct platform_device ssb_sflash_dev;
    217#endif
    218
    219#ifdef CONFIG_SSB_DRIVER_EXTIF
    220extern 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#else
    223static 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#endif
    234
    235#ifdef CONFIG_SSB_EMBEDDED
    236extern 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_EXTIF
    245extern void ssb_extif_init(struct ssb_extif *extif);
    246#else
    247static inline void ssb_extif_init(struct ssb_extif *extif)
    248{
    249}
    250#endif
    251
    252#ifdef CONFIG_SSB_DRIVER_GPIO
    253extern 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_ */