From 68aef1169239cc5d33fb36f05cd32d7e062b7743 Mon Sep 17 00:00:00 2001 From: Julius Werner Date: Tue, 3 Sep 2013 15:07:31 -0700 Subject: exynos5: Implement support for USB 3.0 DRD PHYs/controllers This patch adds support for the DesignWare3 USB 3.0 DRD controller and PHY to the Exynos5250 and Exynos5420 CPUs. It also adds code to the Google Snow and Pit boards to turn these controllers on where applicable. Change-Id: Idcca627363a69f1d65402e1acb9a62b439f077ff Signed-off-by: Julius Werner Reviewed-on: https://chromium-review.googlesource.com/169452 Reviewed-by: Stefan Reinauer (cherry picked from commit e9809ae12ef8b8bd6cd61d3f604cb9e4718cf7eb) Signed-off-by: Isaac Christensen Reviewed-on: http://review.coreboot.org/6642 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich --- src/mainboard/google/snow/mainboard.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/mainboard/google/snow') diff --git a/src/mainboard/google/snow/mainboard.c b/src/mainboard/google/snow/mainboard.c index 756dc15325..f906e534a3 100644 --- a/src/mainboard/google/snow/mainboard.c +++ b/src/mainboard/google/snow/mainboard.c @@ -165,9 +165,17 @@ static enum exynos5_gpio_pin usb_host_vbus = GPIO_X11; static enum exynos5_gpio_pin usb_drd_vbus = GPIO_X27; /* static enum exynos5_gpio_pin hsic_reset_l = GPIO_E10; */ +static void prepare_usb(void) +{ + /* Kick this reset off early so it gets at least 100ms to settle */ + reset_usb_drd_dwc3(); +} + static void setup_usb(void) { /* HSIC not needed in firmware on this board */ + setup_usb_drd_phy(); + setup_usb_drd_dwc3(); setup_usb_host_phy(0); gpio_direction_output(usb_host_vbus, 1); @@ -260,6 +268,7 @@ static void mainboard_init(device_t dev) }; void *fb_addr = (void *)(get_fb_base_kb() * KiB); + prepare_usb(); gpio_init(); setup_storage(); @@ -273,7 +282,6 @@ static void mainboard_init(device_t dev) /* Disable USB3.0 PLL to save 250mW of power */ disable_usb30_pll(); - setup_usb(); sdmmc_vdd(); @@ -309,6 +317,8 @@ static void mainboard_init(device_t dev) if (dp_tries > MAX_DP_TRIES) printk(BIOS_ERR, "%s: Failed to set up displayport\n", __func__); + setup_usb(); + // Uncomment to get excessive GPIO output: // gpio_info(); } -- cgit v1.2.3