summaryrefslogtreecommitdiff
path: root/arch/mips/bcm47xx/workarounds.c
diff options
context:
space:
mode:
authorRafał Miłecki <zajec5@gmail.com>2014-03-21 10:08:08 +0100
committerRalf Baechle <ralf@linux-mips.org>2014-03-31 18:17:12 +0200
commita2bec0784465d3e30eadc20b49c779fa77d42dad (patch)
treeff71eda4fafa859bb0d5aadad523513945334a6f /arch/mips/bcm47xx/workarounds.c
parent40d4d3319f4641af3341acd31ec875a1e649bdaa (diff)
MIPS: BCM47XX: Add new file for device specific workarounds
Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Cc: linux-mips@linux-mips.org Cc: Hauke Mehrtens <hauke@hauke-m.de> Patchwork: https://patchwork.linux-mips.org/patch/6627/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/bcm47xx/workarounds.c')
-rw-r--r--arch/mips/bcm47xx/workarounds.c31
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 000000000000..e81ce4623070
--- /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;
+ }
+}