xref: /linux/arch/mips/bcm47xx/workarounds.c (revision a2bec0784465d3e30eadc20b49c779fa77d42dad)
1*a2bec078SRafał Miłecki #include "bcm47xx_private.h"
2*a2bec078SRafał Miłecki 
3*a2bec078SRafał Miłecki #include <linux/gpio.h>
4*a2bec078SRafał Miłecki #include <bcm47xx_board.h>
5*a2bec078SRafał Miłecki #include <bcm47xx.h>
6*a2bec078SRafał Miłecki 
7*a2bec078SRafał Miłecki static void __init bcm47xx_workarounds_netgear_wnr3500l(void)
8*a2bec078SRafał Miłecki {
9*a2bec078SRafał Miłecki 	const int usb_power = 12;
10*a2bec078SRafał Miłecki 	int err;
11*a2bec078SRafał Miłecki 
12*a2bec078SRafał Miłecki 	err = gpio_request_one(usb_power, GPIOF_OUT_INIT_HIGH, "usb_power");
13*a2bec078SRafał Miłecki 	if (err)
14*a2bec078SRafał Miłecki 		pr_err("Failed to request USB power gpio: %d\n", err);
15*a2bec078SRafał Miłecki 	else
16*a2bec078SRafał Miłecki 		gpio_free(usb_power);
17*a2bec078SRafał Miłecki }
18*a2bec078SRafał Miłecki 
19*a2bec078SRafał Miłecki void __init bcm47xx_workarounds(void)
20*a2bec078SRafał Miłecki {
21*a2bec078SRafał Miłecki 	enum bcm47xx_board board = bcm47xx_board_get();
22*a2bec078SRafał Miłecki 
23*a2bec078SRafał Miłecki 	switch (board) {
24*a2bec078SRafał Miłecki 	case BCM47XX_BOARD_NETGEAR_WNR3500L:
25*a2bec078SRafał Miłecki 		bcm47xx_workarounds_netgear_wnr3500l();
26*a2bec078SRafał Miłecki 		break;
27*a2bec078SRafał Miłecki 	default:
28*a2bec078SRafał Miłecki 		/* No workaround(s) needed */
29*a2bec078SRafał Miłecki 		break;
30*a2bec078SRafał Miłecki 	}
31*a2bec078SRafał Miłecki }
32