1 #ifndef LINUX_SSB_PRIVATE_H_
 
   2 #define LINUX_SSB_PRIVATE_H_
 
   4 #include <linux/ssb/ssb.h>
 
   5 #include <linux/types.h>
 
  10 #ifdef CONFIG_SSB_SILENT
 
  11 # define ssb_printk(fmt, x...)  do { /* nothing */ } while (0)
 
  13 # define ssb_printk             printk
 
  14 #endif /* CONFIG_SSB_SILENT */
 
  16 /* dprintk: Debugging printk; vanishes for non-debug compilation */
 
  17 #ifdef CONFIG_SSB_DEBUG
 
  18 # define ssb_dprintk(fmt, x...) ssb_printk(fmt , ##x)
 
  20 # define ssb_dprintk(fmt, x...) do { /* nothing */ } while (0)
 
  23 #ifdef CONFIG_SSB_DEBUG
 
  24 # define SSB_WARN_ON(x)         WARN_ON(x)
 
  25 # define SSB_BUG_ON(x)          BUG_ON(x)
 
  27 static inline int __ssb_do_nothing(int x) { return x; }
 
  28 # define SSB_WARN_ON(x)         __ssb_do_nothing(unlikely(!!(x)))
 
  29 # define SSB_BUG_ON(x)          __ssb_do_nothing(unlikely(!!(x)))
 
  34 #ifdef CONFIG_SSB_PCIHOST
 
  35 extern int ssb_pci_switch_core(struct ssb_bus *bus,
 
  36                                struct ssb_device *dev);
 
  37 extern int ssb_pci_switch_coreidx(struct ssb_bus *bus,
 
  39 extern int ssb_pci_xtal(struct ssb_bus *bus, u32 what,
 
  41 extern int ssb_pci_get_invariants(struct ssb_bus *bus,
 
  42                                   struct ssb_init_invariants *iv);
 
  43 extern void ssb_pci_exit(struct ssb_bus *bus);
 
  44 extern int ssb_pci_init(struct ssb_bus *bus);
 
  45 extern const struct ssb_bus_ops ssb_pci_ops;
 
  47 #else /* CONFIG_SSB_PCIHOST */
 
  49 static inline int ssb_pci_switch_core(struct ssb_bus *bus,
 
  50                                       struct ssb_device *dev)
 
  54 static inline int ssb_pci_switch_coreidx(struct ssb_bus *bus,
 
  59 static inline int ssb_pci_xtal(struct ssb_bus *bus, u32 what,
 
  64 static inline void ssb_pci_exit(struct ssb_bus *bus)
 
  67 static inline int ssb_pci_init(struct ssb_bus *bus)
 
  71 #endif /* CONFIG_SSB_PCIHOST */
 
  75 #ifdef CONFIG_SSB_PCMCIAHOST
 
  76 extern int ssb_pcmcia_switch_core(struct ssb_bus *bus,
 
  77                                   struct ssb_device *dev);
 
  78 extern int ssb_pcmcia_switch_coreidx(struct ssb_bus *bus,
 
  80 extern int ssb_pcmcia_switch_segment(struct ssb_bus *bus,
 
  82 extern int ssb_pcmcia_get_invariants(struct ssb_bus *bus,
 
  83                                      struct ssb_init_invariants *iv);
 
  84 extern int ssb_pcmcia_init(struct ssb_bus *bus);
 
  85 extern const struct ssb_bus_ops ssb_pcmcia_ops;
 
  86 #else /* CONFIG_SSB_PCMCIAHOST */
 
  87 static inline int ssb_pcmcia_switch_core(struct ssb_bus *bus,
 
  88                                          struct ssb_device *dev)
 
  92 static inline int ssb_pcmcia_switch_coreidx(struct ssb_bus *bus,
 
  97 static inline int ssb_pcmcia_switch_segment(struct ssb_bus *bus,
 
 102 static inline int ssb_pcmcia_init(struct ssb_bus *bus)
 
 106 #endif /* CONFIG_SSB_PCMCIAHOST */
 
 110 extern const char *ssb_core_name(u16 coreid);
 
 111 extern int ssb_bus_scan(struct ssb_bus *bus,
 
 112                         unsigned long baseaddr);
 
 113 extern void ssb_iounmap(struct ssb_bus *ssb);
 
 117 extern u32 ssb_calc_clock_rate(u32 plltype, u32 n, u32 m);
 
 118 extern int ssb_devices_freeze(struct ssb_bus *bus);
 
 119 extern int ssb_devices_thaw(struct ssb_bus *bus);
 
 120 extern struct ssb_bus *ssb_pci_dev_to_bus(struct pci_dev *pdev);
 
 122 /* b43_pci_bridge.c */
 
 123 #ifdef CONFIG_SSB_PCIHOST
 
 124 extern int __init b43_pci_ssb_bridge_init(void);
 
 125 extern void __exit b43_pci_ssb_bridge_exit(void);
 
 126 #else /* CONFIG_SSB_PCIHOST */
 
 127 static inline int b43_pci_ssb_bridge_init(void)
 
 131 static inline void b43_pci_ssb_bridge_exit(void)
 
 134 #endif /* CONFIG_SSB_PCIHOST */
 
 136 #endif /* LINUX_SSB_PRIVATE_H_ */