1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Copyright (C) 2007 Aurelien Jarno <aurelien@aurel32.net>
4  */
5 
6 #ifndef __ASM_BCM47XX_H
7 #define __ASM_BCM47XX_H
8 
9 #include <linux/ssb/ssb.h>
10 #include <linux/bcma/bcma.h>
11 #include <linux/bcma/bcma_soc.h>
12 #include <linux/bcm47xx_nvram.h>
13 
14 enum bcm47xx_bus_type {
15 #ifdef CONFIG_BCM47XX_SSB
16 	BCM47XX_BUS_TYPE_SSB,
17 #endif
18 #ifdef CONFIG_BCM47XX_BCMA
19 	BCM47XX_BUS_TYPE_BCMA,
20 #endif
21 };
22 
23 union bcm47xx_bus {
24 #ifdef CONFIG_BCM47XX_SSB
25 	struct ssb_bus ssb;
26 #endif
27 #ifdef CONFIG_BCM47XX_BCMA
28 	struct bcma_soc bcma;
29 #endif
30 };
31 
32 extern union bcm47xx_bus bcm47xx_bus;
33 extern enum bcm47xx_bus_type bcm47xx_bus_type;
34 
35 void bcm47xx_fill_sprom(struct ssb_sprom *sprom, const char *prefix,
36 			bool fallback);
37 
38 void bcm47xx_set_system_type(u16 chip_id);
39 
40 #endif /* __ASM_BCM47XX_H */
41