1# SPDX-License-Identifier: GPL-2.0-only
2config B43
3	tristate "Broadcom 43xx wireless support (mac80211 stack)"
4	depends on (BCMA_POSSIBLE || SSB_POSSIBLE) && MAC80211 && HAS_DMA
5	select BCMA if B43_BCMA
6	select SSB if B43_SSB
7	select FW_LOADER
8	select CORDIC
9	---help---
10	  b43 is a driver for the Broadcom 43xx series wireless devices.
11
12	  Check "lspci" for something like
13	  "Broadcom Corporation BCM43XX 802.11 Wireless LAN Controller"
14	  to determine whether you own such a device.
15
16	  This driver supports the new BCM43xx IEEE 802.11G devices, but not
17	  the old IEEE 802.11B devices. Old devices are supported by
18	  the b43legacy driver.
19	  Note that this has nothing to do with the standard that your AccessPoint
20	  supports (A, B, G or a combination).
21	  IEEE 802.11G devices can talk to IEEE 802.11B AccessPoints.
22
23	  It is safe to include both b43 and b43legacy as the underlying glue
24	  layer will automatically load the correct version for your device.
25
26	  This driver uses V4 firmware, which must be installed separately using
27	  b43-fwcutter.
28
29	  This driver can be built as a module (recommended) that will be called "b43".
30	  If unsure, say M.
31
32config B43_BCMA
33	bool
34
35config B43_SSB
36	bool
37
38choice
39	prompt "Supported bus types"
40	depends on B43
41	default B43_BUSES_BCMA_AND_SSB
42
43config B43_BUSES_BCMA_AND_SSB
44	bool "BCMA and SSB"
45	depends on BCMA_POSSIBLE && SSB_POSSIBLE
46	select B43_BCMA
47	select B43_SSB
48
49config B43_BUSES_BCMA
50	bool "BCMA only"
51	depends on BCMA_POSSIBLE
52	select B43_BCMA
53
54config B43_BUSES_SSB
55	bool "SSB only"
56	depends on SSB_POSSIBLE
57	select B43_SSB
58
59endchoice
60
61# Auto-select SSB PCI-HOST support, if possible
62config B43_PCI_AUTOSELECT
63	bool
64	depends on B43 && SSB_PCIHOST_POSSIBLE
65	select SSB_PCIHOST
66	select SSB_B43_PCI_BRIDGE
67	default y
68
69# Auto-select SSB PCICORE driver, if possible
70config B43_PCICORE_AUTOSELECT
71	bool
72	depends on B43 && SSB_DRIVER_PCICORE_POSSIBLE
73	select SSB_DRIVER_PCICORE
74	default y
75
76config B43_SDIO
77	bool "Broadcom 43xx SDIO device support"
78	depends on B43 && B43_SSB && SSB_SDIOHOST_POSSIBLE
79	select SSB_SDIOHOST
80	---help---
81	  Broadcom 43xx device support for Soft-MAC SDIO devices.
82
83	  With this config option you can drive Soft-MAC b43 cards with a
84	  Secure Digital I/O interface.
85	  This includes the WLAN daughter card found on the Nintendo Wii
86	  video game console.
87	  Note that this does not support Broadcom 43xx Full-MAC devices.
88
89	  It's safe to select Y here, even if you don't have a B43 SDIO device.
90
91	  If unsure, say N.
92
93#Data transfers to the device via PIO. We want it as a fallback even
94# if we can do DMA.
95config B43_BCMA_PIO
96	bool
97	depends on B43 && B43_BCMA
98	select BCMA_BLOCKIO
99	default y
100
101config B43_PIO
102	bool
103	depends on B43 && B43_SSB
104	select SSB_BLOCKIO
105	default y
106
107config B43_PHY_G
108	bool "Support for G-PHY (802.11g) devices"
109	depends on B43 && B43_SSB
110	default y
111	---help---
112	  This PHY type can be found in the following chipsets:
113	  PCI: BCM4306, BCM4311, BCM4318
114	  SoC: BCM4712, BCM5352E
115
116config B43_PHY_N
117	bool "Support for N-PHY (the main 802.11n series) devices"
118	depends on B43
119	default y
120	---help---
121	  This PHY type can be found in the following chipsets:
122	  PCI: BCM4321, BCM4322,
123	       BCM43222, BCM43224, BCM43225,
124	       BCM43131, BCM43217, BCM43227, BCM43228
125	  SoC: BCM4716, BCM4717, BCM4718, BCM5356, BCM5357, BCM5358
126
127config B43_PHY_LP
128	bool "Support for LP-PHY (low-power 802.11g) devices"
129	depends on B43 && B43_SSB
130	default y
131	---help---
132	  The LP-PHY is a low-power PHY built into some notebooks
133	  and embedded devices. It supports 802.11a/b/g
134	  (802.11a support is optional, and currently disabled).
135
136config B43_PHY_HT
137	bool "Support for HT-PHY (high throughput 802.11n) devices"
138	depends on B43 && B43_BCMA
139	default y
140	---help---
141	  This PHY type with 3x3:3 MIMO can be found in the BCM4331 PCI chipset.
142
143config B43_PHY_LCN
144	bool "Support for LCN-PHY devices (BROKEN)"
145	depends on B43 && BROKEN
146	---help---
147	  Support for the LCN-PHY.
148
149	  Say N, this is BROKEN and crashes driver.
150
151config B43_PHY_AC
152	bool "Support for AC-PHY (802.11ac) devices (BROKEN)"
153	depends on B43 && B43_BCMA && BROKEN
154	---help---
155	  This PHY type can be found in the following chipsets:
156	  PCI: BCM4352, BCM4360
157
158	  Say N, this is BROKEN and crashes driver.
159
160# This config option automatically enables b43 LEDS support,
161# if it's possible.
162config B43_LEDS
163	bool
164	depends on B43 && MAC80211_LEDS && (LEDS_CLASS = y || LEDS_CLASS = B43)
165	default y
166
167# This config option automatically enables b43 HW-RNG support,
168# if the HW-RNG core is enabled.
169config B43_HWRNG
170	bool
171	depends on B43 && (HW_RANDOM = y || HW_RANDOM = B43)
172	default y
173
174config B43_DEBUG
175	bool "Broadcom 43xx debugging"
176	depends on B43
177	---help---
178	  Broadcom 43xx debugging.
179
180	  This adds additional runtime sanity checks and statistics to the driver.
181	  These checks and statistics might be expensive and hurt the runtime
182	  performance of your system.
183	  This also adds the b43 debugfs interface.
184
185	  Do not enable this, unless you are debugging the driver.
186
187	  Say N, if you are a distributor or user building a release kernel
188	  for production use.
189	  Only say Y, if you are debugging a problem in the b43 driver sourcecode.
190