1 /* 2 * Copyright (C) 2011 Ilya Yanok, Emcraft Systems 3 * 4 * Based on ti/evm/evm.c 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc. 19 */ 20 21 #include <common.h> 22 #include <asm/io.h> 23 #include <asm/arch/mem.h> 24 #include <asm/arch/mmc_host_def.h> 25 #include <asm/arch/mux.h> 26 #include <asm/arch/sys_proto.h> 27 #include <asm/mach-types.h> 28 #include <asm/gpio.h> 29 #include <asm/omap_gpio.h> 30 #include "errno.h" 31 #include <i2c.h> 32 #ifdef CONFIG_USB_EHCI 33 #include <usb.h> 34 #include <asm/ehci-omap.h> 35 #endif 36 #include "mcx.h" 37 38 DECLARE_GLOBAL_DATA_PTR; 39 40 #ifdef CONFIG_USB_EHCI 41 static struct omap_usbhs_board_data usbhs_bdata = { 42 .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, 43 .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY, 44 .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, 45 }; 46 47 int ehci_hcd_init(void) 48 { 49 return omap_ehci_hcd_init(&usbhs_bdata); 50 } 51 52 int ehci_hcd_stop(void) 53 { 54 return omap_ehci_hcd_stop(); 55 } 56 #endif 57 58 /* 59 * Routine: board_init 60 * Description: Early hardware init. 61 */ 62 int board_init(void) 63 { 64 gpmc_init(); /* in SRAM or SDRAM, finish GPMC */ 65 /* boot param addr */ 66 gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100); 67 68 return 0; 69 } 70 71 /* 72 * Routine: set_muxconf_regs 73 * Description: Setting up the configuration Mux registers specific to the 74 * hardware. Many pins need to be moved from protect to primary 75 * mode. 76 */ 77 void set_muxconf_regs(void) 78 { 79 MUX_MCX(); 80 } 81 82 #if defined(CONFIG_OMAP_HSMMC) && !defined(CONFIG_SPL_BUILD) 83 int board_mmc_init(bd_t *bis) 84 { 85 return omap_mmc_init(0, 0, 0); 86 } 87 #endif 88 89 #ifdef CONFIG_USB_EHCI_OMAP 90 #define USB_HOST_PWR_EN 132 91 int board_usb_init(void) 92 { 93 if (gpio_request(USB_HOST_PWR_EN, "USB_HOST_PWR_EN") < 0) { 94 puts("Failed to get USB_HOST_PWR_EN pin\n"); 95 return -ENODEV; 96 } 97 gpio_direction_output(USB_HOST_PWR_EN, 1); 98 99 return 0; 100 } 101 #endif 102