diff options
| author | Simon Glass <sjg@chromium.org> | 2012-02-27 10:52:50 +0000 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2012-03-29 08:12:49 +0200 | 
| commit | f10393e501ede54d2d19a2ad1d533dbe7c926f26 (patch) | |
| tree | cd6a43407708ac24f4b19d79950b5d1cb806a7e4 | |
| parent | 2866903b3e32909085ffe486baca1bcb44e2caeb (diff) | |
| download | olio-uboot-2014.01-f10393e501ede54d2d19a2ad1d533dbe7c926f26.tar.xz olio-uboot-2014.01-f10393e501ede54d2d19a2ad1d533dbe7c926f26.zip | |
tegra: usb: Add USB support to nvidia boards
This adds basic USB support for port 0. The other port is not supported
yet.
Tegra2 (SeaBoard) # usb start
(Re)start USB...
USB:   Register 10011 NbrPorts 1
USB EHCI 1.00
scanning bus for devices... 5 USB Device(s) found
       scanning bus for storage devices... 1 Storage Device(s) found
Tegra2 (SeaBoard) # ext2load usb 0:3 10000000 /boot/vmlinuz
Loading file "/boot/vmlinuz" from usb device 0:3 (ROOT-A)
2932976 bytes read
Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Warren <twarren@nvidia.com>
| -rw-r--r-- | board/nvidia/common/board.c | 12 | ||||
| -rw-r--r-- | board/nvidia/common/board.h | 6 | ||||
| -rw-r--r-- | board/nvidia/seaboard/seaboard.c | 6 | 
3 files changed, 24 insertions, 0 deletions
| diff --git a/board/nvidia/common/board.c b/board/nvidia/common/board.c index e8253a083..72d863002 100644 --- a/board/nvidia/common/board.c +++ b/board/nvidia/common/board.c @@ -33,6 +33,7 @@  #include <asm/arch/pinmux.h>  #include <asm/arch/uart.h>  #include <spi.h> +#include <asm/arch/usb.h>  #include "board.h"  DECLARE_GLOBAL_DATA_PTR; @@ -50,6 +51,12 @@ int timer_init(void)  	return 0;  } +void __pin_mux_usb(void) +{ +} + +void pin_mux_usb(void) __attribute__((weak, alias("__pin_mux_usb"))); +  /*   * Routine: board_init   * Description: Early hardware init. @@ -69,6 +76,11 @@ int board_init(void)  	/* boot param addr */  	gd->bd->bi_boot_params = (NV_PA_SDRAM_BASE + 0x100); +#ifdef CONFIG_USB_EHCI_TEGRA +	pin_mux_usb(); +	board_usb_init(gd->fdt_blob); +#endif +  	return 0;  } diff --git a/board/nvidia/common/board.h b/board/nvidia/common/board.h index a638af204..09fb158f4 100644 --- a/board/nvidia/common/board.h +++ b/board/nvidia/common/board.h @@ -27,4 +27,10 @@  void gpio_config_uart(void);  void gpio_early_init_uart(void); +/* + * Set up any pin muxing needed for USB (for now, since fdt doesn't support + * it). Boards can overwrite the default fucction which does nothing. + */ +void pin_mux_usb(void); +  #endif	/* BOARD_H */ diff --git a/board/nvidia/seaboard/seaboard.c b/board/nvidia/seaboard/seaboard.c index 9ab6825bb..94efb1e83 100644 --- a/board/nvidia/seaboard/seaboard.c +++ b/board/nvidia/seaboard/seaboard.c @@ -90,3 +90,9 @@ int board_mmc_init(bd_t *bd)  	return 0;  }  #endif + +void pin_mux_usb(void) +{ +	/* For USB's GPIO PD0. For now, since we have no pinmux in fdt */ +	pinmux_tristate_disable(PINGRP_SLXK); +} |