diff options
Diffstat (limited to 'arch/mips/bcm47xx/workarounds.c')
| -rw-r--r-- | arch/mips/bcm47xx/workarounds.c | 31 | 
1 files changed, 31 insertions, 0 deletions
diff --git a/arch/mips/bcm47xx/workarounds.c b/arch/mips/bcm47xx/workarounds.c new file mode 100644 index 00000000000..e81ce462307 --- /dev/null +++ b/arch/mips/bcm47xx/workarounds.c @@ -0,0 +1,31 @@ +#include "bcm47xx_private.h" + +#include <linux/gpio.h> +#include <bcm47xx_board.h> +#include <bcm47xx.h> + +static void __init bcm47xx_workarounds_netgear_wnr3500l(void) +{ +	const int usb_power = 12; +	int err; + +	err = gpio_request_one(usb_power, GPIOF_OUT_INIT_HIGH, "usb_power"); +	if (err) +		pr_err("Failed to request USB power gpio: %d\n", err); +	else +		gpio_free(usb_power); +} + +void __init bcm47xx_workarounds(void) +{ +	enum bcm47xx_board board = bcm47xx_board_get(); + +	switch (board) { +	case BCM47XX_BOARD_NETGEAR_WNR3500L: +		bcm47xx_workarounds_netgear_wnr3500l(); +		break; +	default: +		/* No workaround(s) needed */ +		break; +	} +}  | 
