| b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 1 | --- a/drivers/net/wireless/broadcom/b43/b43.h |
| 2 | +++ b/drivers/net/wireless/broadcom/b43/b43.h |
| 3 | @@ -840,6 +840,7 @@ struct b43_wldev { |
| 4 | bool qos_enabled; /* TRUE, if QoS is used. */ |
| 5 | bool hwcrypto_enabled; /* TRUE, if HW crypto acceleration is enabled. */ |
| 6 | bool use_pio; /* TRUE if next init should use PIO */ |
| 7 | + int gpiomask; /* GPIO LED mask as a module parameter */ |
| 8 | |
| 9 | /* PHY/Radio device. */ |
| 10 | struct b43_phy phy; |
| 11 | --- a/drivers/net/wireless/broadcom/b43/main.c |
| 12 | +++ b/drivers/net/wireless/broadcom/b43/main.c |
| 13 | @@ -72,6 +72,11 @@ MODULE_FIRMWARE("b43/ucode40.fw"); |
| 14 | MODULE_FIRMWARE("b43/ucode42.fw"); |
| 15 | MODULE_FIRMWARE("b43/ucode9.fw"); |
| 16 | |
| 17 | +static int modparam_gpiomask = 0x000F; |
| 18 | +module_param_named(gpiomask, modparam_gpiomask, int, 0444); |
| 19 | +MODULE_PARM_DESC(gpiomask, |
| 20 | + "GPIO mask for LED control (default 0x000F)"); |
| 21 | + |
| 22 | static int modparam_bad_frames_preempt; |
| 23 | module_param_named(bad_frames_preempt, modparam_bad_frames_preempt, int, 0444); |
| 24 | MODULE_PARM_DESC(bad_frames_preempt, |
| 25 | @@ -2869,10 +2874,10 @@ static int b43_gpio_init(struct b43_wlde |
| 26 | u32 mask, set; |
| 27 | |
| 28 | b43_maskset32(dev, B43_MMIO_MACCTL, ~B43_MACCTL_GPOUTSMSK, 0); |
| 29 | - b43_maskset16(dev, B43_MMIO_GPIO_MASK, ~0, 0xF); |
| 30 | + b43_maskset16(dev, B43_MMIO_GPIO_MASK, ~0, modparam_gpiomask); |
| 31 | |
| 32 | mask = 0x0000001F; |
| 33 | - set = 0x0000000F; |
| 34 | + set = modparam_gpiomask; |
| 35 | if (dev->dev->chip_id == 0x4301) { |
| 36 | mask |= 0x0060; |
| 37 | set |= 0x0060; |