161e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#ifndef LINUX_SSB_PRIVATE_H_
261e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#define LINUX_SSB_PRIVATE_H_
361e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
461e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#include <linux/ssb/ssb.h>
561e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#include <linux/types.h>
661e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
761e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
861e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#define PFX	"ssb: "
961e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
1061e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#ifdef CONFIG_SSB_SILENT
1161e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch# define ssb_printk(fmt, x...)	do { /* nothing */ } while (0)
1261e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#else
1361e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch# define ssb_printk		printk
1461e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#endif /* CONFIG_SSB_SILENT */
1561e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
1661e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch/* dprintk: Debugging printk; vanishes for non-debug compilation */
1761e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#ifdef CONFIG_SSB_DEBUG
1861e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch# define ssb_dprintk(fmt, x...)	ssb_printk(fmt , ##x)
1961e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#else
2061e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch# define ssb_dprintk(fmt, x...)	do { /* nothing */ } while (0)
2161e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#endif
2261e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
2361e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#ifdef CONFIG_SSB_DEBUG
2461e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch# define SSB_WARN_ON(x)		WARN_ON(x)
2561e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch# define SSB_BUG_ON(x)		BUG_ON(x)
2661e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#else
2761e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschstatic inline int __ssb_do_nothing(int x) { return x; }
2861e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch# define SSB_WARN_ON(x)		__ssb_do_nothing(unlikely(!!(x)))
2961e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch# define SSB_BUG_ON(x)		__ssb_do_nothing(unlikely(!!(x)))
3061e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#endif
3161e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
3261e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
3361e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch/* pci.c */
3461e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#ifdef CONFIG_SSB_PCIHOST
3561e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern int ssb_pci_switch_core(struct ssb_bus *bus,
3661e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch			       struct ssb_device *dev);
3761e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern int ssb_pci_switch_coreidx(struct ssb_bus *bus,
3861e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch				  u8 coreidx);
3961e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern int ssb_pci_xtal(struct ssb_bus *bus, u32 what,
4061e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch			int turn_on);
4161e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern int ssb_pci_get_invariants(struct ssb_bus *bus,
4261e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch				  struct ssb_init_invariants *iv);
4361e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern void ssb_pci_exit(struct ssb_bus *bus);
4461e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern int ssb_pci_init(struct ssb_bus *bus);
4561e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern const struct ssb_bus_ops ssb_pci_ops;
4661e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
4761e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#else /* CONFIG_SSB_PCIHOST */
4861e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
4961e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschstatic inline int ssb_pci_switch_core(struct ssb_bus *bus,
5061e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch				      struct ssb_device *dev)
5161e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch{
5261e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch	return 0;
5361e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch}
5461e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschstatic inline int ssb_pci_switch_coreidx(struct ssb_bus *bus,
5561e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch					 u8 coreidx)
5661e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch{
5761e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch	return 0;
5861e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch}
5961e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschstatic inline int ssb_pci_xtal(struct ssb_bus *bus, u32 what,
6061e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch			       int turn_on)
6161e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch{
6261e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch	return 0;
6361e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch}
6461e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschstatic inline void ssb_pci_exit(struct ssb_bus *bus)
6561e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch{
6661e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch}
6761e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschstatic inline int ssb_pci_init(struct ssb_bus *bus)
6861e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch{
6961e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch	return 0;
7061e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch}
7161e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#endif /* CONFIG_SSB_PCIHOST */
7261e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
7361e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
7461e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch/* pcmcia.c */
7561e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#ifdef CONFIG_SSB_PCMCIAHOST
7661e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern int ssb_pcmcia_switch_core(struct ssb_bus *bus,
7761e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch				  struct ssb_device *dev);
7861e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern int ssb_pcmcia_switch_coreidx(struct ssb_bus *bus,
7961e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch				     u8 coreidx);
8061e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern int ssb_pcmcia_switch_segment(struct ssb_bus *bus,
8161e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch				     u8 seg);
8261e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern int ssb_pcmcia_get_invariants(struct ssb_bus *bus,
8361e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch				     struct ssb_init_invariants *iv);
848fe2b65a18e49bfde56a59ed4ab3fc7aa0c2f325Michael Bueschextern int ssb_pcmcia_hardware_setup(struct ssb_bus *bus);
85e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Bueschextern void ssb_pcmcia_exit(struct ssb_bus *bus);
8661e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern int ssb_pcmcia_init(struct ssb_bus *bus);
8761e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern const struct ssb_bus_ops ssb_pcmcia_ops;
8861e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#else /* CONFIG_SSB_PCMCIAHOST */
8961e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschstatic inline int ssb_pcmcia_switch_core(struct ssb_bus *bus,
9061e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch					 struct ssb_device *dev)
9161e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch{
9261e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch	return 0;
9361e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch}
9461e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschstatic inline int ssb_pcmcia_switch_coreidx(struct ssb_bus *bus,
9561e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch					    u8 coreidx)
9661e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch{
9761e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch	return 0;
9861e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch}
9961e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschstatic inline int ssb_pcmcia_switch_segment(struct ssb_bus *bus,
10061e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch					    u8 seg)
10161e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch{
10261e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch	return 0;
10361e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch}
1048fe2b65a18e49bfde56a59ed4ab3fc7aa0c2f325Michael Bueschstatic inline int ssb_pcmcia_hardware_setup(struct ssb_bus *bus)
1058fe2b65a18e49bfde56a59ed4ab3fc7aa0c2f325Michael Buesch{
1068fe2b65a18e49bfde56a59ed4ab3fc7aa0c2f325Michael Buesch	return 0;
1078fe2b65a18e49bfde56a59ed4ab3fc7aa0c2f325Michael Buesch}
108e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Bueschstatic inline void ssb_pcmcia_exit(struct ssb_bus *bus)
109e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Buesch{
110e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Buesch}
11161e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschstatic inline int ssb_pcmcia_init(struct ssb_bus *bus)
11261e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch{
11361e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch	return 0;
11461e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch}
11561e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#endif /* CONFIG_SSB_PCMCIAHOST */
11661e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
11724ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz/* sdio.c */
11824ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz#ifdef CONFIG_SSB_SDIOHOST
11924ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranzextern int ssb_sdio_get_invariants(struct ssb_bus *bus,
12024ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz				     struct ssb_init_invariants *iv);
12124ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz
12224ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranzextern u32 ssb_sdio_scan_read32(struct ssb_bus *bus, u16 offset);
12324ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranzextern int ssb_sdio_switch_core(struct ssb_bus *bus, struct ssb_device *dev);
12424ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranzextern int ssb_sdio_scan_switch_coreidx(struct ssb_bus *bus, u8 coreidx);
12524ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranzextern int ssb_sdio_hardware_setup(struct ssb_bus *bus);
12624ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranzextern void ssb_sdio_exit(struct ssb_bus *bus);
12724ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranzextern int ssb_sdio_init(struct ssb_bus *bus);
12824ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz
12924ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranzextern const struct ssb_bus_ops ssb_sdio_ops;
13024ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz#else /* CONFIG_SSB_SDIOHOST */
13124ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranzstatic inline u32 ssb_sdio_scan_read32(struct ssb_bus *bus, u16 offset)
13224ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz{
13324ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz	return 0;
13424ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz}
13524ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranzstatic inline int ssb_sdio_switch_core(struct ssb_bus *bus,
13624ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz					 struct ssb_device *dev)
13724ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz{
13824ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz	return 0;
13924ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz}
14024ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranzstatic inline int ssb_sdio_scan_switch_coreidx(struct ssb_bus *bus, u8 coreidx)
14124ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz{
14224ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz	return 0;
14324ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz}
14424ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranzstatic inline int ssb_sdio_hardware_setup(struct ssb_bus *bus)
14524ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz{
14624ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz	return 0;
14724ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz}
14824ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranzstatic inline void ssb_sdio_exit(struct ssb_bus *bus)
14924ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz{
15024ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz}
15124ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranzstatic inline int ssb_sdio_init(struct ssb_bus *bus)
15224ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz{
15324ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz	return 0;
15424ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz}
15524ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz#endif /* CONFIG_SSB_SDIOHOST */
15624ea602e183ca20a7577ebe253323d0e5d0f9847Albert Herranz
15761e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
15861e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch/* scan.c */
15961e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern const char *ssb_core_name(u16 coreid);
16061e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern int ssb_bus_scan(struct ssb_bus *bus,
16161e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch			unsigned long baseaddr);
16261e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern void ssb_iounmap(struct ssb_bus *ssb);
16361e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
16461e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
165e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Buesch/* sprom.c */
166e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Bueschextern
167e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Bueschssize_t ssb_attr_sprom_show(struct ssb_bus *bus, char *buf,
168e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Buesch			    int (*sprom_read)(struct ssb_bus *bus, u16 *sprom));
169e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Bueschextern
170e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Bueschssize_t ssb_attr_sprom_store(struct ssb_bus *bus,
171e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Buesch			     const char *buf, size_t count,
172e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Buesch			     int (*sprom_check_crc)(const u16 *sprom, size_t size),
173e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Buesch			     int (*sprom_write)(struct ssb_bus *bus, const u16 *sprom));
174b3ae52b6b0335eba547221aad2cb3c50902e3d2dHauke Mehrtensextern int ssb_fill_sprom_with_fallback(struct ssb_bus *bus,
175b3ae52b6b0335eba547221aad2cb3c50902e3d2dHauke Mehrtens					struct ssb_sprom *out);
176e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Buesch
177e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Buesch
17861e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch/* core.c */
17961e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern u32 ssb_calc_clock_rate(u32 plltype, u32 n, u32 m);
18061e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern struct ssb_bus *ssb_pci_dev_to_bus(struct pci_dev *pdev);
181aab547ce0d1493d400b6468c521a0137cd8c1edfMichael Bueschint ssb_for_each_bus_call(unsigned long data,
182aab547ce0d1493d400b6468c521a0137cd8c1edfMichael Buesch			  int (*func)(struct ssb_bus *bus, unsigned long data));
183e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Bueschextern struct ssb_bus *ssb_pcmcia_dev_to_bus(struct pcmcia_device *pdev);
184e7ec2e3230633a858af1b0b359f6c4670dbeb997Michael Buesch
1853ba6018aa314559c5867138a8173b068268a70dbMichael Bueschstruct ssb_freeze_context {
1863ba6018aa314559c5867138a8173b068268a70dbMichael Buesch	/* Pointer to the bus */
1873ba6018aa314559c5867138a8173b068268a70dbMichael Buesch	struct ssb_bus *bus;
1883ba6018aa314559c5867138a8173b068268a70dbMichael Buesch	/* Boolean list to indicate whether a device is frozen on this bus. */
1893ba6018aa314559c5867138a8173b068268a70dbMichael Buesch	bool device_frozen[SSB_MAX_NR_CORES];
1903ba6018aa314559c5867138a8173b068268a70dbMichael Buesch};
1913ba6018aa314559c5867138a8173b068268a70dbMichael Bueschextern int ssb_devices_freeze(struct ssb_bus *bus, struct ssb_freeze_context *ctx);
1923ba6018aa314559c5867138a8173b068268a70dbMichael Bueschextern int ssb_devices_thaw(struct ssb_freeze_context *ctx);
1933ba6018aa314559c5867138a8173b068268a70dbMichael Buesch
1943ba6018aa314559c5867138a8173b068268a70dbMichael Buesch
19561e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
19661e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch/* b43_pci_bridge.c */
197c7084535c9d2b8bcfc19f1ad9452eabde742ae22Alexey Zaytsev#ifdef CONFIG_SSB_B43_PCI_BRIDGE
19861e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern int __init b43_pci_ssb_bridge_init(void);
19961e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschextern void __exit b43_pci_ssb_bridge_exit(void);
2000052b8bb5ad24ff2c5b065adc7ed44dc8390bd4bHauke Mehrtens#else /* CONFIG_SSB_B43_PCI_BRIDGE */
20161e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschstatic inline int b43_pci_ssb_bridge_init(void)
20261e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch{
20361e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch	return 0;
20461e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch}
20561e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Bueschstatic inline void b43_pci_ssb_bridge_exit(void)
20661e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch{
20761e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch}
2080052b8bb5ad24ff2c5b065adc7ed44dc8390bd4bHauke Mehrtens#endif /* CONFIG_SSB_B43_PCI_BRIDGE */
20961e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch
21061e115a56d1aafd6e6a8a9fee8ac099a6128ac7bMichael Buesch#endif /* LINUX_SSB_PRIVATE_H_ */
211