Blame view

drivers/ssb/ssb_private.h 8.11 KB
61e115a56   Michael Buesch   [SSB]: add Sonics...
1
2
3
4
5
  #ifndef LINUX_SSB_PRIVATE_H_
  #define LINUX_SSB_PRIVATE_H_
  
  #include <linux/ssb/ssb.h>
  #include <linux/types.h>
7ffbffe37   Hauke Mehrtens   ssb: add methods ...
6
  #include <linux/bcm47xx_wdt.h>
61e115a56   Michael Buesch   [SSB]: add Sonics...
7
8
9
10
11
  
  
  #define PFX	"ssb: "
  
  #ifdef CONFIG_SSB_SILENT
33a606ac8   Joe Perches   ssb: Convert ssb_...
12
13
  # define ssb_printk(fmt, ...)					\
  	do { if (0) printk(fmt, ##__VA_ARGS__); } while (0)
61e115a56   Michael Buesch   [SSB]: add Sonics...
14
  #else
33a606ac8   Joe Perches   ssb: Convert ssb_...
15
16
  # define ssb_printk(fmt, ...)					\
  	printk(fmt, ##__VA_ARGS__)
61e115a56   Michael Buesch   [SSB]: add Sonics...
17
  #endif /* CONFIG_SSB_SILENT */
33a606ac8   Joe Perches   ssb: Convert ssb_...
18
19
20
21
22
23
  #define ssb_emerg(fmt, ...)	ssb_printk(KERN_EMERG PFX fmt, ##__VA_ARGS__)
  #define ssb_err(fmt, ...)	ssb_printk(KERN_ERR PFX fmt, ##__VA_ARGS__)
  #define ssb_warn(fmt, ...)	ssb_printk(KERN_WARNING PFX fmt, ##__VA_ARGS__)
  #define ssb_notice(fmt, ...)	ssb_printk(KERN_NOTICE PFX fmt, ##__VA_ARGS__)
  #define ssb_info(fmt, ...)	ssb_printk(KERN_INFO PFX fmt, ##__VA_ARGS__)
  #define ssb_cont(fmt, ...)	ssb_printk(KERN_CONT fmt, ##__VA_ARGS__)
61e115a56   Michael Buesch   [SSB]: add Sonics...
24
25
  /* dprintk: Debugging printk; vanishes for non-debug compilation */
  #ifdef CONFIG_SSB_DEBUG
33a606ac8   Joe Perches   ssb: Convert ssb_...
26
27
  # define ssb_dbg(fmt, ...)					\
  	ssb_printk(KERN_DEBUG PFX fmt, ##__VA_ARGS__)
61e115a56   Michael Buesch   [SSB]: add Sonics...
28
  #else
33a606ac8   Joe Perches   ssb: Convert ssb_...
29
30
  # define ssb_dbg(fmt, ...)					\
  	do { if (0) printk(KERN_DEBUG PFX fmt, ##__VA_ARGS__); } while (0)
61e115a56   Michael Buesch   [SSB]: add Sonics...
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  #endif
  
  #ifdef CONFIG_SSB_DEBUG
  # define SSB_WARN_ON(x)		WARN_ON(x)
  # define SSB_BUG_ON(x)		BUG_ON(x)
  #else
  static inline int __ssb_do_nothing(int x) { return x; }
  # define SSB_WARN_ON(x)		__ssb_do_nothing(unlikely(!!(x)))
  # define SSB_BUG_ON(x)		__ssb_do_nothing(unlikely(!!(x)))
  #endif
  
  
  /* pci.c */
  #ifdef CONFIG_SSB_PCIHOST
  extern int ssb_pci_switch_core(struct ssb_bus *bus,
  			       struct ssb_device *dev);
  extern int ssb_pci_switch_coreidx(struct ssb_bus *bus,
  				  u8 coreidx);
  extern int ssb_pci_xtal(struct ssb_bus *bus, u32 what,
  			int turn_on);
  extern int ssb_pci_get_invariants(struct ssb_bus *bus,
  				  struct ssb_init_invariants *iv);
  extern void ssb_pci_exit(struct ssb_bus *bus);
  extern int ssb_pci_init(struct ssb_bus *bus);
  extern const struct ssb_bus_ops ssb_pci_ops;
  
  #else /* CONFIG_SSB_PCIHOST */
  
  static inline int ssb_pci_switch_core(struct ssb_bus *bus,
  				      struct ssb_device *dev)
  {
  	return 0;
  }
  static inline int ssb_pci_switch_coreidx(struct ssb_bus *bus,
  					 u8 coreidx)
  {
  	return 0;
  }
  static inline int ssb_pci_xtal(struct ssb_bus *bus, u32 what,
  			       int turn_on)
  {
  	return 0;
  }
  static inline void ssb_pci_exit(struct ssb_bus *bus)
  {
  }
  static inline int ssb_pci_init(struct ssb_bus *bus)
  {
  	return 0;
  }
  #endif /* CONFIG_SSB_PCIHOST */
  
  
  /* pcmcia.c */
  #ifdef CONFIG_SSB_PCMCIAHOST
61e115a56   Michael Buesch   [SSB]: add Sonics...
86
87
88
89
90
91
  extern int ssb_pcmcia_switch_coreidx(struct ssb_bus *bus,
  				     u8 coreidx);
  extern int ssb_pcmcia_switch_segment(struct ssb_bus *bus,
  				     u8 seg);
  extern int ssb_pcmcia_get_invariants(struct ssb_bus *bus,
  				     struct ssb_init_invariants *iv);
8fe2b65a1   Michael Buesch   ssb: Turn suspend...
92
  extern int ssb_pcmcia_hardware_setup(struct ssb_bus *bus);
e7ec2e323   Michael Buesch   ssb: Add SPROM/in...
93
  extern void ssb_pcmcia_exit(struct ssb_bus *bus);
61e115a56   Michael Buesch   [SSB]: add Sonics...
94
  extern int ssb_pcmcia_init(struct ssb_bus *bus);
399500da1   Rafał Miłecki   ssb: pick PCMCIA ...
95
96
  extern int ssb_host_pcmcia_init(void);
  extern void ssb_host_pcmcia_exit(void);
61e115a56   Michael Buesch   [SSB]: add Sonics...
97
98
  extern const struct ssb_bus_ops ssb_pcmcia_ops;
  #else /* CONFIG_SSB_PCMCIAHOST */
61e115a56   Michael Buesch   [SSB]: add Sonics...
99
100
101
102
103
104
105
106
107
108
  static inline int ssb_pcmcia_switch_coreidx(struct ssb_bus *bus,
  					    u8 coreidx)
  {
  	return 0;
  }
  static inline int ssb_pcmcia_switch_segment(struct ssb_bus *bus,
  					    u8 seg)
  {
  	return 0;
  }
8fe2b65a1   Michael Buesch   ssb: Turn suspend...
109
110
111
112
  static inline int ssb_pcmcia_hardware_setup(struct ssb_bus *bus)
  {
  	return 0;
  }
e7ec2e323   Michael Buesch   ssb: Add SPROM/in...
113
114
115
  static inline void ssb_pcmcia_exit(struct ssb_bus *bus)
  {
  }
61e115a56   Michael Buesch   [SSB]: add Sonics...
116
117
118
119
  static inline int ssb_pcmcia_init(struct ssb_bus *bus)
  {
  	return 0;
  }
399500da1   Rafał Miłecki   ssb: pick PCMCIA ...
120
121
122
123
124
125
126
  static inline int ssb_host_pcmcia_init(void)
  {
  	return 0;
  }
  static inline void ssb_host_pcmcia_exit(void)
  {
  }
61e115a56   Michael Buesch   [SSB]: add Sonics...
127
  #endif /* CONFIG_SSB_PCMCIAHOST */
24ea602e1   Albert Herranz   ssb: Implement SD...
128
129
130
131
132
133
  /* sdio.c */
  #ifdef CONFIG_SSB_SDIOHOST
  extern int ssb_sdio_get_invariants(struct ssb_bus *bus,
  				     struct ssb_init_invariants *iv);
  
  extern u32 ssb_sdio_scan_read32(struct ssb_bus *bus, u16 offset);
24ea602e1   Albert Herranz   ssb: Implement SD...
134
  extern int ssb_sdio_scan_switch_coreidx(struct ssb_bus *bus, u8 coreidx);
24ea602e1   Albert Herranz   ssb: Implement SD...
135
136
137
138
139
140
141
142
143
  extern void ssb_sdio_exit(struct ssb_bus *bus);
  extern int ssb_sdio_init(struct ssb_bus *bus);
  
  extern const struct ssb_bus_ops ssb_sdio_ops;
  #else /* CONFIG_SSB_SDIOHOST */
  static inline u32 ssb_sdio_scan_read32(struct ssb_bus *bus, u16 offset)
  {
  	return 0;
  }
24ea602e1   Albert Herranz   ssb: Implement SD...
144
145
146
147
  static inline int ssb_sdio_scan_switch_coreidx(struct ssb_bus *bus, u8 coreidx)
  {
  	return 0;
  }
24ea602e1   Albert Herranz   ssb: Implement SD...
148
149
150
151
152
153
154
155
  static inline void ssb_sdio_exit(struct ssb_bus *bus)
  {
  }
  static inline int ssb_sdio_init(struct ssb_bus *bus)
  {
  	return 0;
  }
  #endif /* CONFIG_SSB_SDIOHOST */
830c7df46   Rafał Miłecki   ssb: move functio...
156
157
158
  /**************************************************
   * host_soc.c
   **************************************************/
845da6e58   Rafał Miłecki   ssb: add Kconfig ...
159
  #ifdef CONFIG_SSB_HOST_SOC
830c7df46   Rafał Miłecki   ssb: move functio...
160
  extern const struct ssb_bus_ops ssb_host_soc_ops;
541c9a84c   Rafał Miłecki   ssb: pick SoC inv...
161
162
163
  
  extern int ssb_host_soc_get_invariants(struct ssb_bus *bus,
  				       struct ssb_init_invariants *iv);
845da6e58   Rafał Miłecki   ssb: add Kconfig ...
164
  #endif
61e115a56   Michael Buesch   [SSB]: add Sonics...
165
166
167
168
169
170
  
  /* scan.c */
  extern const char *ssb_core_name(u16 coreid);
  extern int ssb_bus_scan(struct ssb_bus *bus,
  			unsigned long baseaddr);
  extern void ssb_iounmap(struct ssb_bus *ssb);
e7ec2e323   Michael Buesch   ssb: Add SPROM/in...
171
172
173
174
175
176
177
178
179
  /* sprom.c */
  extern
  ssize_t ssb_attr_sprom_show(struct ssb_bus *bus, char *buf,
  			    int (*sprom_read)(struct ssb_bus *bus, u16 *sprom));
  extern
  ssize_t ssb_attr_sprom_store(struct ssb_bus *bus,
  			     const char *buf, size_t count,
  			     int (*sprom_check_crc)(const u16 *sprom, size_t size),
  			     int (*sprom_write)(struct ssb_bus *bus, const u16 *sprom));
b3ae52b6b   Hauke Mehrtens   SSB: Change fallb...
180
181
  extern int ssb_fill_sprom_with_fallback(struct ssb_bus *bus,
  					struct ssb_sprom *out);
e7ec2e323   Michael Buesch   ssb: Add SPROM/in...
182

61e115a56   Michael Buesch   [SSB]: add Sonics...
183
184
  /* core.c */
  extern u32 ssb_calc_clock_rate(u32 plltype, u32 n, u32 m);
61e115a56   Michael Buesch   [SSB]: add Sonics...
185
  extern struct ssb_bus *ssb_pci_dev_to_bus(struct pci_dev *pdev);
aab547ce0   Michael Buesch   ssb: Add Gigabit ...
186
187
  int ssb_for_each_bus_call(unsigned long data,
  			  int (*func)(struct ssb_bus *bus, unsigned long data));
e7ec2e323   Michael Buesch   ssb: Add SPROM/in...
188
  extern struct ssb_bus *ssb_pcmcia_dev_to_bus(struct pcmcia_device *pdev);
3ba6018aa   Michael Buesch   ssb: Fix SPROM wr...
189
190
191
192
193
194
195
196
  struct ssb_freeze_context {
  	/* Pointer to the bus */
  	struct ssb_bus *bus;
  	/* Boolean list to indicate whether a device is frozen on this bus. */
  	bool device_frozen[SSB_MAX_NR_CORES];
  };
  extern int ssb_devices_freeze(struct ssb_bus *bus, struct ssb_freeze_context *ctx);
  extern int ssb_devices_thaw(struct ssb_freeze_context *ctx);
61e115a56   Michael Buesch   [SSB]: add Sonics...
197
198
  
  /* b43_pci_bridge.c */
c7084535c   Alexey Zaytsev   Use a separate co...
199
  #ifdef CONFIG_SSB_B43_PCI_BRIDGE
61e115a56   Michael Buesch   [SSB]: add Sonics...
200
201
  extern int __init b43_pci_ssb_bridge_init(void);
  extern void __exit b43_pci_ssb_bridge_exit(void);
0052b8bb5   Hauke Mehrtens   ssb: fix typo in ...
202
  #else /* CONFIG_SSB_B43_PCI_BRIDGE */
61e115a56   Michael Buesch   [SSB]: add Sonics...
203
204
205
206
207
208
209
  static inline int b43_pci_ssb_bridge_init(void)
  {
  	return 0;
  }
  static inline void b43_pci_ssb_bridge_exit(void)
  {
  }
0052b8bb5   Hauke Mehrtens   ssb: fix typo in ...
210
  #endif /* CONFIG_SSB_B43_PCI_BRIDGE */
61e115a56   Michael Buesch   [SSB]: add Sonics...
211

d486a5b49   Hauke Mehrtens   ssb: add support ...
212
213
214
  /* driver_chipcommon_pmu.c */
  extern u32 ssb_pmu_get_cpu_clock(struct ssb_chipcommon *cc);
  extern u32 ssb_pmu_get_controlclock(struct ssb_chipcommon *cc);
f924e1e98   Hauke Mehrtens   ssb: get alp cloc...
215
  extern u32 ssb_pmu_get_alp_clock(struct ssb_chipcommon *cc);
d486a5b49   Hauke Mehrtens   ssb: add support ...
216

7ffbffe37   Hauke Mehrtens   ssb: add methods ...
217
218
219
  extern u32 ssb_chipco_watchdog_timer_set_wdt(struct bcm47xx_wdt *wdt,
  					     u32 ticks);
  extern u32 ssb_chipco_watchdog_timer_set_ms(struct bcm47xx_wdt *wdt, u32 ms);
72a525cbb   Rafał Miłecki   ssb: add place fo...
220
221
222
223
224
225
226
227
228
229
230
  /* driver_chipcommon_sflash.c */
  #ifdef CONFIG_SSB_SFLASH
  int ssb_sflash_init(struct ssb_chipcommon *cc);
  #else
  static inline int ssb_sflash_init(struct ssb_chipcommon *cc)
  {
  	pr_err("Serial flash not supported
  ");
  	return 0;
  }
  #endif /* CONFIG_SSB_SFLASH */
c7a4a9e38   Rafał Miłecki   ssb: register pla...
231
232
233
  #ifdef CONFIG_SSB_DRIVER_MIPS
  extern struct platform_device ssb_pflash_dev;
  #endif
7b5d6043d   Rafał Miłecki   ssb: register ser...
234
235
236
  #ifdef CONFIG_SSB_SFLASH
  extern struct platform_device ssb_sflash_dev;
  #endif
9f640a637   Hauke Mehrtens   ssb: extif: add m...
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
  #ifdef CONFIG_SSB_DRIVER_EXTIF
  extern u32 ssb_extif_watchdog_timer_set_wdt(struct bcm47xx_wdt *wdt, u32 ticks);
  extern u32 ssb_extif_watchdog_timer_set_ms(struct bcm47xx_wdt *wdt, u32 ms);
  #else
  static inline u32 ssb_extif_watchdog_timer_set_wdt(struct bcm47xx_wdt *wdt,
  						   u32 ticks)
  {
  	return 0;
  }
  static inline u32 ssb_extif_watchdog_timer_set_ms(struct bcm47xx_wdt *wdt,
  						  u32 ms)
  {
  	return 0;
  }
  #endif
bde327eff   Hauke Mehrtens   ssb: register wat...
252
253
254
255
256
257
258
259
260
  
  #ifdef CONFIG_SSB_EMBEDDED
  extern int ssb_watchdog_register(struct ssb_bus *bus);
  #else /* CONFIG_SSB_EMBEDDED */
  static inline int ssb_watchdog_register(struct ssb_bus *bus)
  {
  	return 0;
  }
  #endif /* CONFIG_SSB_EMBEDDED */
394bc7e38   Hauke Mehrtens   ssb: add locking ...
261
262
263
264
265
266
267
  #ifdef CONFIG_SSB_DRIVER_EXTIF
  extern void ssb_extif_init(struct ssb_extif *extif);
  #else
  static inline void ssb_extif_init(struct ssb_extif *extif)
  {
  }
  #endif
ec43b08b5   Hauke Mehrtens   ssb: add GPIO driver
268
269
  #ifdef CONFIG_SSB_DRIVER_GPIO
  extern int ssb_gpio_init(struct ssb_bus *bus);
600485eda   Hauke Mehrtens   ssb: unregister g...
270
  extern int ssb_gpio_unregister(struct ssb_bus *bus);
ec43b08b5   Hauke Mehrtens   ssb: add GPIO driver
271
272
273
274
275
  #else /* CONFIG_SSB_DRIVER_GPIO */
  static inline int ssb_gpio_init(struct ssb_bus *bus)
  {
  	return -ENOTSUPP;
  }
600485eda   Hauke Mehrtens   ssb: unregister g...
276
277
278
279
  static inline int ssb_gpio_unregister(struct ssb_bus *bus)
  {
  	return 0;
  }
ec43b08b5   Hauke Mehrtens   ssb: add GPIO driver
280
  #endif /* CONFIG_SSB_DRIVER_GPIO */
61e115a56   Michael Buesch   [SSB]: add Sonics...
281
  #endif /* LINUX_SSB_PRIVATE_H_ */