| --- a/drivers/net/wireless/broadcom/b43/Makefile |
| +++ b/drivers/net/wireless/broadcom/b43/Makefile |
| @@ -18,7 +18,7 @@ b43-$(CPTCFG_B43_PHY_AC) += phy_ac.o |
| b43-y += sysfs.o |
| b43-y += xmit.o |
| b43-y += dma.o |
| -b43-y += pio.o |
| +b43-$(CPTCFG_B43_PIO) += pio.o |
| b43-y += rfkill.o |
| b43-y += ppr.o |
| b43-$(CPTCFG_B43_LEDS) += leds.o |
| --- a/drivers/net/wireless/broadcom/b43/main.c |
| +++ b/drivers/net/wireless/broadcom/b43/main.c |
| @@ -2001,10 +2001,12 @@ static void b43_do_interrupt_thread(stru |
| dma_reason[0], dma_reason[1], |
| dma_reason[2], dma_reason[3], |
| dma_reason[4], dma_reason[5]); |
| +#ifdef CPTCFG_B43_PIO |
| b43err(dev->wl, "This device does not support DMA " |
| "on your system. It will now be switched to PIO.\n"); |
| /* Fall back to PIO transfers if we get fatal DMA errors! */ |
| dev->use_pio = true; |
| +#endif |
| b43_controller_restart(dev, "DMA error"); |
| return; |
| } |
| --- a/drivers/net/wireless/broadcom/b43/pio.h |
| +++ b/drivers/net/wireless/broadcom/b43/pio.h |
| @@ -151,7 +151,7 @@ static inline void b43_piorx_write32(str |
| b43_write32(q->dev, q->mmio_base + offset, value); |
| } |
| |
| - |
| +#ifdef CPTCFG_B43_PIO |
| int b43_pio_init(struct b43_wldev *dev); |
| void b43_pio_free(struct b43_wldev *dev); |
| |
| @@ -162,5 +162,37 @@ void b43_pio_rx(struct b43_pio_rxqueue * |
| |
| void b43_pio_tx_suspend(struct b43_wldev *dev); |
| void b43_pio_tx_resume(struct b43_wldev *dev); |
| +#else |
| +static inline int b43_pio_init(struct b43_wldev *dev) |
| +{ |
| + return 0; |
| +} |
| + |
| +static inline void b43_pio_free(struct b43_wldev *dev) |
| +{ |
| +} |
| + |
| +static inline int b43_pio_tx(struct b43_wldev *dev, struct sk_buff *skb) |
| +{ |
| + return 0; |
| +} |
| + |
| +static inline void b43_pio_handle_txstatus(struct b43_wldev *dev, |
| + const struct b43_txstatus *status) |
| +{ |
| +} |
| + |
| +static inline void b43_pio_rx(struct b43_pio_rxqueue *q) |
| +{ |
| +} |
| + |
| +static inline void b43_pio_tx_suspend(struct b43_wldev *dev) |
| +{ |
| +} |
| + |
| +static inline void b43_pio_tx_resume(struct b43_wldev *dev) |
| +{ |
| +} |
| +#endif /* CPTCFG_B43_PIO */ |
| |
| #endif /* B43_PIO_H_ */ |
| --- a/drivers/net/wireless/broadcom/b43/Kconfig |
| +++ b/drivers/net/wireless/broadcom/b43/Kconfig |
| @@ -100,7 +100,7 @@ config B43_BCMA_PIO |
| default y |
| |
| config B43_PIO |
| - bool |
| + bool "Broadcom 43xx PIO support" |
| depends on B43 && B43_SSB |
| depends on SSB_BLOCKIO |
| default y |