]> git.ipfire.org Git - people/ms/u-boot.git/blob - board/davinci/dvevm/dvevm.c
Add GPL-2.0+ SPDX-License-Identifier to source files
[people/ms/u-boot.git] / board / davinci / dvevm / dvevm.c
1 /*
2 * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
3 *
4 * Parts are shamelessly stolen from various TI sources, original copyright
5 * follows:
6 * -----------------------------------------------------------------
7 *
8 * Copyright (C) 2004 Texas Instruments.
9 *
10 * ----------------------------------------------------------------------------
11 * SPDX-License-Identifier: GPL-2.0+
12 * ----------------------------------------------------------------------------
13 */
14
15 #include <common.h>
16 #include <i2c.h>
17 #include <asm/arch/hardware.h>
18 #include <asm/arch/davinci_misc.h>
19
20 DECLARE_GLOBAL_DATA_PTR;
21
22 int board_init(void)
23 {
24 /* arch number of the board */
25 gd->bd->bi_arch_number = MACH_TYPE_DAVINCI_EVM;
26
27 /* address of boot parameters */
28 gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
29
30 /* Configure AEMIF pins (although this should be configured at boot time
31 * with pull-up/pull-down resistors) */
32 REG(PINMUX0) = 0x00000c1f;
33
34 davinci_errata_workarounds();
35
36 /* Power on required peripherals */
37 lpsc_on(DAVINCI_LPSC_GPIO);
38 lpsc_on(DAVINCI_LPSC_USB);
39
40 #if !defined(CONFIG_SYS_USE_DSPLINK)
41 /* Powerup the DSP */
42 dsp_on();
43 #endif /* CONFIG_SYS_USE_DSPLINK */
44
45 davinci_enable_uart0();
46 davinci_enable_emac();
47 davinci_enable_i2c();
48
49 lpsc_on(DAVINCI_LPSC_TIMER1);
50 timer_init();
51
52 return(0);
53 }
54
55 int misc_init_r(void)
56 {
57 uint8_t video_mode;
58 uint8_t eeprom_enetaddr[6];
59
60 /* Read Ethernet MAC address from EEPROM if available. */
61 if (dvevm_read_mac_address(eeprom_enetaddr))
62 davinci_sync_env_enetaddr(eeprom_enetaddr);
63
64 i2c_read(0x39, 0x00, 1, &video_mode, 1);
65
66 setenv("videostd", ((video_mode & 0x80) ? "pal" : "ntsc"));
67
68 return(0);
69 }
70
71 #ifdef CONFIG_USB_DAVINCI
72
73 /* IO Expander I2C address and USB VBUS enable mask */
74 #define IOEXP_I2C_ADDR 0x3A
75 #define IOEXP_VBUSEN_MASK 1
76
77 /*
78 * This function enables USB VBUS by writting to IO expander using I2C.
79 * Note that the I2C is already initialized at this stage. This
80 * function is used by davinci specific USB wrapper code.
81 */
82 void enable_vbus(void)
83 {
84 uchar data; /* IO Expander data to enable VBUS */
85
86 /* Write to IO expander to enable VBUS */
87 i2c_read(IOEXP_I2C_ADDR, 0, 0, &data, 1);
88 data &= ~IOEXP_VBUSEN_MASK;
89 i2c_write(IOEXP_I2C_ADDR, 0, 0, &data, 1);
90 }
91 #endif