1
2
3
4
5
6
7
8
9
10
11#include <common.h>
12#include <environment.h>
13#include <i2c.h>
14#include <net.h>
15#include <asm/arch/hardware.h>
16#include <asm/io.h>
17#include <asm/arch/davinci_misc.h>
18
19DECLARE_GLOBAL_DATA_PTR;
20
21#ifndef CONFIG_SPL_BUILD
22int dram_init(void)
23{
24
25 gd->ram_size = get_ram_size(
26 (void *)CONFIG_SYS_SDRAM_BASE,
27 CONFIG_MAX_RAM_BANK_SIZE);
28 return 0;
29}
30
31int dram_init_banksize(void)
32{
33 gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
34 gd->bd->bi_dram[0].size = gd->ram_size;
35
36 return 0;
37}
38#endif
39
40#ifdef CONFIG_DRIVER_TI_EMAC
41
42
43
44
45int dvevm_read_mac_address(uint8_t *buf)
46{
47#ifdef CONFIG_SYS_I2C_EEPROM_ADDR
48
49 if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0x7F00,
50 CONFIG_SYS_I2C_EEPROM_ADDR_LEN, (uint8_t *) &buf[0], 6))
51 goto i2cerr;
52
53
54 if (!is_valid_ethaddr(buf))
55 goto err;
56
57 return 1;
58
59i2cerr:
60 printf("Read from EEPROM @ 0x%02x failed\n",
61 CONFIG_SYS_I2C_EEPROM_ADDR);
62err:
63#endif
64
65 return 0;
66}
67
68
69
70
71void davinci_emac_mii_mode_sel(int mode_sel)
72{
73 int val;
74
75 val = readl(&davinci_syscfg_regs->cfgchip3);
76 if (mode_sel == 0)
77 val &= ~(1 << 8);
78 else
79 val |= (1 << 8);
80 writel(val, &davinci_syscfg_regs->cfgchip3);
81}
82
83
84
85
86
87void davinci_sync_env_enetaddr(uint8_t *rom_enetaddr)
88{
89 uint8_t env_enetaddr[6];
90 int ret;
91
92 ret = eth_env_get_enetaddr_by_index("eth", 0, env_enetaddr);
93 if (!ret) {
94
95
96
97
98 debug("### Setting environment from EEPROM MAC address = "
99 "\"%pM\"\n",
100 env_enetaddr);
101 ret = !eth_env_set_enetaddr("ethaddr", rom_enetaddr);
102 }
103 if (!ret)
104 printf("Failed to set mac address from EEPROM: %d\n", ret);
105}
106#endif
107
108void irq_init(void)
109{
110
111
112
113
114 writel(0, &davinci_aintc_regs->ger);
115
116 writel(0, &davinci_aintc_regs->hier);
117
118 writel(0xffffffff, &davinci_aintc_regs->ecr1);
119 writel(0xffffffff, &davinci_aintc_regs->ecr2);
120 writel(0xffffffff, &davinci_aintc_regs->ecr3);
121}
122
123
124
125
126int da8xx_configure_lpsc_items(const struct lpsc_resource *item,
127 const int n_items)
128{
129 int i;
130
131 for (i = 0; i < n_items; i++)
132 lpsc_on(item[i].lpsc_no);
133
134 return 0;
135}
136