zoom1.c 3.0 KB
Newer Older
1
// SPDX-License-Identifier: GPL-2.0+
D
Dirk Behme 已提交
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/*
 * (C) Copyright 2004-2008
 * Texas Instruments, <www.ti.com>
 *
 * Author :
 *	Nishanth Menon <nm@ti.com>
 *
 * Derived from Beagle Board and 3430 SDP code by
 *	Sunil Kumar <sunilsaini05@gmail.com>
 *	Shashi Ranjan <shashiranjanmca05@gmail.com>
 *	Richard Woodruff <r-woodruff2@ti.com>
 *	Syed Mohammed Khasim <khasim@ti.com>
 *
 */
#include <common.h>
17
#include <dm.h>
S
Simon Glass 已提交
18
#include <env.h>
19
#include <environment.h>
20
#include <ns16550.h>
B
Ben Warren 已提交
21
#include <netdev.h>
T
Tom Rix 已提交
22
#include <twl4030.h>
L
Ladislav Michl 已提交
23
#include <linux/mtd/omap_gpmc.h>
D
Dirk Behme 已提交
24
#include <asm/io.h>
25
#include <asm/arch/mem.h>
T
Tom Rini 已提交
26
#include <asm/arch/mmc_host_def.h>
D
Dirk Behme 已提交
27 28 29 30 31
#include <asm/arch/mux.h>
#include <asm/arch/sys_proto.h>
#include <asm/mach-types.h>
#include "zoom1.h"

32 33
DECLARE_GLOBAL_DATA_PTR;

L
Ladislav Michl 已提交
34 35 36 37
/*
 * gpmc_cfg is initialized by gpmc_init and we use it here.
 * GPMC definitions for Ethenet Controller LAN9211
 */
38 39 40 41 42 43 44 45 46 47
static const u32 gpmc_lab_enet[] = {
	ZOOM1_ENET_GPMC_CONF1,
	ZOOM1_ENET_GPMC_CONF2,
	ZOOM1_ENET_GPMC_CONF3,
	ZOOM1_ENET_GPMC_CONF4,
	ZOOM1_ENET_GPMC_CONF5,
	ZOOM1_ENET_GPMC_CONF6,
	/*CONF7- computed as params */
};

48
static const struct ns16550_platdata zoom1_serial = {
49 50
	.base = OMAP34XX_UART3,
	.reg_shift = 2,
51 52
	.clock = V_NS16550_CLK,
	.fcr = UART_FCR_DEFVAL,
53 54 55
};

U_BOOT_DEVICE(zoom1_uart) = {
T
Thomas Chou 已提交
56
	"ns16550_serial",
57 58 59
	&zoom1_serial
};

60
/*
D
Dirk Behme 已提交
61 62
 * Routine: board_init
 * Description: Early hardware init.
63
 */
D
Dirk Behme 已提交
64 65 66
int board_init(void)
{
	gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
67 68 69
	/* CS1 is Ethernet LAN9211 */
	enable_gpmc_cs_config(gpmc_lab_enet, &gpmc_cfg->cs[1],
			      DEBUG_BASE, GPMC_SIZE_16M);
D
Dirk Behme 已提交
70 71 72 73 74 75 76 77
	/* board id for Linux */
	gd->bd->bi_arch_number = MACH_TYPE_OMAP_LDP;
	/* boot param addr */
	gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);

	return 0;
}

78
/*
D
Dirk Behme 已提交
79 80
 * Routine: misc_init_r
 * Description: Configure zoom board specific configurations
81
 */
D
Dirk Behme 已提交
82 83
int misc_init_r(void)
{
84
	twl4030_power_init();
85
	twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON);
86
	omap_die_id_display();
T
Tom Rix 已提交
87 88 89 90 91 92 93 94

	/*
	 * Board Reset
	 * The board is reset by holding the red button on the
	 * top right front face for eight seconds.
	 */
	twl4030_power_reset_init();

D
Dirk Behme 已提交
95 96 97
	return 0;
}

98
/*
D
Dirk Behme 已提交
99 100 101 102
 * Routine: set_muxconf_regs
 * Description: Setting up the configuration Mux registers specific to the
 *		hardware. Many pins need to be moved from protect to primary
 *		mode.
103
 */
D
Dirk Behme 已提交
104 105 106 107 108
void set_muxconf_regs(void)
{
	/* platform specific muxes */
	MUX_ZOOM1_MDK();
}
B
Ben Warren 已提交
109

110
#ifdef CONFIG_MMC
T
Tom Rini 已提交
111 112
int board_mmc_init(bd_t *bis)
{
113
	return omap_mmc_init(0, 0, 0, -1, -1);
T
Tom Rini 已提交
114
}
115 116 117 118 119

void board_mmc_power_init(void)
{
	twl4030_power_mmc_init(0);
}
T
Tom Rini 已提交
120 121
#endif

B
Ben Warren 已提交
122 123 124 125
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
	int rc = 0;
N
Nishanth Menon 已提交
126 127 128 129 130 131 132 133

#ifdef CONFIG_SMC911X
#define STR_ENV_ETHADDR	"ethaddr"

	struct eth_device *dev;
	uchar eth_addr[6];

	rc = smc911x_initialize(0, CONFIG_SMC911X_BASE);
134
	if (!eth_env_get_enetaddr(STR_ENV_ETHADDR, eth_addr)) {
N
Nishanth Menon 已提交
135 136
		dev = eth_get_dev_by_index(0);
		if (dev) {
137
			eth_env_set_enetaddr(STR_ENV_ETHADDR, dev->enetaddr);
N
Nishanth Menon 已提交
138 139 140 141 142
		} else {
			printf("zoom1: Couldn't get eth device\n");
			rc = -1;
		}
	}
B
Ben Warren 已提交
143
#endif
N
Nishanth Menon 已提交
144

B
Ben Warren 已提交
145 146 147
	return rc;
}
#endif