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