mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 17:54:13 +08:00
feef791866
Setting GPIO 21 high seems to be required to enable power to USB ports on the WNDR3400v3. As there is already similar code for WNR3500L, make the existing USB power GPIO code generic and use that. Signed-off-by: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi> Acked-by: Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: Paul Burton <paul.burton@mips.com> Patchwork: https://patchwork.linux-mips.org/patch/20259/ Cc: Rafał Miłecki <zajec5@gmail.com> Cc: linux-mips@linux-mips.org Cc: linux-kernel@vger.kernel.org
35 lines
742 B
C
35 lines
742 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
#include "bcm47xx_private.h"
|
|
|
|
#include <linux/gpio.h>
|
|
#include <bcm47xx_board.h>
|
|
#include <bcm47xx.h>
|
|
|
|
static void __init bcm47xx_workarounds_enable_usb_power(int usb_power)
|
|
{
|
|
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_enable_usb_power(12);
|
|
break;
|
|
case BCM47XX_BOARD_NETGEAR_WNDR3400_V3:
|
|
bcm47xx_workarounds_enable_usb_power(21);
|
|
break;
|
|
default:
|
|
/* No workaround(s) needed */
|
|
break;
|
|
}
|
|
}
|