mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-17 22:49:02 +00:00
board: sifive: unmatched: reset USB hub, PCIe-USB bridge, and ULPI device in SPL
Ensure USB hub, PCIe-USB bridge, and ULPI device to be reset even if the rebooting is without power-cycling. Signed-off-by: Vincent Chen <vincent.chen@sifive.com> Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com>
This commit is contained in:
parent
d3c96b9b46
commit
219cb17311
1 changed files with 36 additions and 0 deletions
|
@ -16,6 +16,9 @@
|
|||
#include <asm/arch/gpio.h>
|
||||
#include <asm/arch/spl.h>
|
||||
|
||||
#define UBRDG_RESET SIFIVE_GENERIC_GPIO_NR(0, 7)
|
||||
#define ULPI_RESET SIFIVE_GENERIC_GPIO_NR(0, 9)
|
||||
#define UHUB_RESET SIFIVE_GENERIC_GPIO_NR(0, 11)
|
||||
#define GEM_PHY_RESET SIFIVE_GENERIC_GPIO_NR(0, 12)
|
||||
|
||||
#define MODE_SELECT_REG 0x1000
|
||||
|
@ -61,6 +64,21 @@ static inline int spl_gemgxl_init(void)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static inline int spl_usb_pcie_bridge_init(void)
|
||||
{
|
||||
return spl_reset_device_by_gpio("usb_pcie_bridge_reset", UBRDG_RESET, 3000);
|
||||
}
|
||||
|
||||
static inline int spl_usb_hub_init(void)
|
||||
{
|
||||
return spl_reset_device_by_gpio("usb_hub_reset", UHUB_RESET, 100);
|
||||
}
|
||||
|
||||
static inline int spl_ulpi_init(void)
|
||||
{
|
||||
return spl_reset_device_by_gpio("ulpi_reset", ULPI_RESET, 1);
|
||||
}
|
||||
|
||||
int spl_board_init_f(void)
|
||||
{
|
||||
int ret;
|
||||
|
@ -77,6 +95,24 @@ int spl_board_init_f(void)
|
|||
goto end;
|
||||
}
|
||||
|
||||
ret = spl_usb_pcie_bridge_init();
|
||||
if (ret) {
|
||||
debug("USB Bridge (ASM1042A) init failed: %d\n", ret);
|
||||
goto end;
|
||||
}
|
||||
|
||||
ret = spl_usb_hub_init();
|
||||
if (ret) {
|
||||
debug("USB Hub (ASM1074) init failed: %d\n", ret);
|
||||
goto end;
|
||||
}
|
||||
|
||||
ret = spl_ulpi_init();
|
||||
if (ret) {
|
||||
debug("USB 2.0 PHY (USB3320C) init failed: %d\n", ret);
|
||||
goto end;
|
||||
}
|
||||
|
||||
end:
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue