]>
Commit | Line | Data |
---|---|---|
7379f45a DB |
1 | /* |
2 | * (C) Copyright 2004-2008 | |
3 | * Texas Instruments, <www.ti.com> | |
4 | * | |
5 | * Author : | |
6 | * Nishanth Menon <nm@ti.com> | |
7 | * | |
8 | * Derived from Beagle Board and 3430 SDP code by | |
9 | * Sunil Kumar <sunilsaini05@gmail.com> | |
10 | * Shashi Ranjan <shashiranjanmca05@gmail.com> | |
11 | * Richard Woodruff <r-woodruff2@ti.com> | |
12 | * Syed Mohammed Khasim <khasim@ti.com> | |
13 | * | |
14 | * | |
1a459660 | 15 | * SPDX-License-Identifier: GPL-2.0+ |
7379f45a DB |
16 | */ |
17 | #include <common.h> | |
b3f4ca11 SG |
18 | #include <dm.h> |
19 | #include <ns16550.h> | |
1ab70f6f | 20 | #include <netdev.h> |
cd782635 | 21 | #include <twl4030.h> |
7379f45a | 22 | #include <asm/io.h> |
c2800b16 | 23 | #include <asm/arch/mem.h> |
d6906cb8 | 24 | #include <asm/arch/mmc_host_def.h> |
7379f45a DB |
25 | #include <asm/arch/mux.h> |
26 | #include <asm/arch/sys_proto.h> | |
27 | #include <asm/mach-types.h> | |
28 | #include "zoom1.h" | |
29 | ||
29565326 JR |
30 | DECLARE_GLOBAL_DATA_PTR; |
31 | ||
c2800b16 NM |
32 | /* gpmc_cfg is initialized by gpmc_init and we use it here */ |
33 | extern struct gpmc *gpmc_cfg; | |
34 | ||
35 | /* GPMC definitions for Ethenet Controller LAN9211 */ | |
36 | static const u32 gpmc_lab_enet[] = { | |
37 | ZOOM1_ENET_GPMC_CONF1, | |
38 | ZOOM1_ENET_GPMC_CONF2, | |
39 | ZOOM1_ENET_GPMC_CONF3, | |
40 | ZOOM1_ENET_GPMC_CONF4, | |
41 | ZOOM1_ENET_GPMC_CONF5, | |
42 | ZOOM1_ENET_GPMC_CONF6, | |
43 | /*CONF7- computed as params */ | |
44 | }; | |
45 | ||
b3f4ca11 | 46 | static const struct ns16550_platdata zoom1_serial = { |
2f6ed3b8 AF |
47 | .base = OMAP34XX_UART3, |
48 | .reg_shift = 2, | |
49 | .clock = V_NS16550_CLK | |
b3f4ca11 SG |
50 | }; |
51 | ||
52 | U_BOOT_DEVICE(zoom1_uart) = { | |
c7b9686d | 53 | "ns16550_serial", |
b3f4ca11 SG |
54 | &zoom1_serial |
55 | }; | |
56 | ||
58911517 | 57 | /* |
7379f45a DB |
58 | * Routine: board_init |
59 | * Description: Early hardware init. | |
58911517 | 60 | */ |
7379f45a DB |
61 | int board_init(void) |
62 | { | |
7379f45a | 63 | gpmc_init(); /* in SRAM or SDRAM, finish GPMC */ |
c2800b16 NM |
64 | /* CS1 is Ethernet LAN9211 */ |
65 | enable_gpmc_cs_config(gpmc_lab_enet, &gpmc_cfg->cs[1], | |
66 | DEBUG_BASE, GPMC_SIZE_16M); | |
7379f45a DB |
67 | /* board id for Linux */ |
68 | gd->bd->bi_arch_number = MACH_TYPE_OMAP_LDP; | |
69 | /* boot param addr */ | |
70 | gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100); | |
71 | ||
72 | return 0; | |
73 | } | |
74 | ||
58911517 | 75 | /* |
7379f45a DB |
76 | * Routine: misc_init_r |
77 | * Description: Configure zoom board specific configurations | |
58911517 | 78 | */ |
7379f45a DB |
79 | int misc_init_r(void) |
80 | { | |
2c155130 | 81 | twl4030_power_init(); |
ead39d7a | 82 | twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON); |
679f82c3 | 83 | omap_die_id_display(); |
cd782635 TR |
84 | |
85 | /* | |
86 | * Board Reset | |
87 | * The board is reset by holding the red button on the | |
88 | * top right front face for eight seconds. | |
89 | */ | |
90 | twl4030_power_reset_init(); | |
91 | ||
7379f45a DB |
92 | return 0; |
93 | } | |
94 | ||
58911517 | 95 | /* |
7379f45a DB |
96 | * Routine: set_muxconf_regs |
97 | * Description: Setting up the configuration Mux registers specific to the | |
98 | * hardware. Many pins need to be moved from protect to primary | |
99 | * mode. | |
58911517 | 100 | */ |
7379f45a DB |
101 | void set_muxconf_regs(void) |
102 | { | |
103 | /* platform specific muxes */ | |
104 | MUX_ZOOM1_MDK(); | |
105 | } | |
1ab70f6f | 106 | |
d6906cb8 TR |
107 | #ifdef CONFIG_GENERIC_MMC |
108 | int board_mmc_init(bd_t *bis) | |
109 | { | |
e3913f56 | 110 | return omap_mmc_init(0, 0, 0, -1, -1); |
d6906cb8 | 111 | } |
aac5450e PK |
112 | |
113 | void board_mmc_power_init(void) | |
114 | { | |
115 | twl4030_power_mmc_init(0); | |
116 | } | |
d6906cb8 TR |
117 | #endif |
118 | ||
1ab70f6f BW |
119 | #ifdef CONFIG_CMD_NET |
120 | int board_eth_init(bd_t *bis) | |
121 | { | |
122 | int rc = 0; | |
9d70e772 NM |
123 | |
124 | #ifdef CONFIG_SMC911X | |
125 | #define STR_ENV_ETHADDR "ethaddr" | |
126 | ||
127 | struct eth_device *dev; | |
128 | uchar eth_addr[6]; | |
129 | ||
130 | rc = smc911x_initialize(0, CONFIG_SMC911X_BASE); | |
131 | if (!eth_getenv_enetaddr(STR_ENV_ETHADDR, eth_addr)) { | |
132 | dev = eth_get_dev_by_index(0); | |
133 | if (dev) { | |
134 | eth_setenv_enetaddr(STR_ENV_ETHADDR, dev->enetaddr); | |
135 | } else { | |
136 | printf("zoom1: Couldn't get eth device\n"); | |
137 | rc = -1; | |
138 | } | |
139 | } | |
1ab70f6f | 140 | #endif |
9d70e772 | 141 | |
1ab70f6f BW |
142 | return rc; |
143 | } | |
144 | #endif |