uboot/board/logicpd/zoom1/zoom1.c
<<
>>
Prefs
   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 *
  15 * SPDX-License-Identifier:     GPL-2.0+
  16 */
  17#include <common.h>
  18#include <dm.h>
  19#include <ns16550.h>
  20#include <netdev.h>
  21#include <twl4030.h>
  22#include <asm/io.h>
  23#include <asm/arch/mem.h>
  24#include <asm/arch/mmc_host_def.h>
  25#include <asm/arch/mux.h>
  26#include <asm/arch/sys_proto.h>
  27#include <asm/mach-types.h>
  28#include "zoom1.h"
  29
  30DECLARE_GLOBAL_DATA_PTR;
  31
  32/* gpmc_cfg is initialized by gpmc_init and we use it here */
  33extern struct gpmc *gpmc_cfg;
  34
  35/* GPMC definitions for Ethenet Controller LAN9211 */
  36static 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
  46static const struct ns16550_platdata zoom1_serial = {
  47        .base = OMAP34XX_UART3,
  48        .reg_shift = 2,
  49        .clock = V_NS16550_CLK
  50};
  51
  52U_BOOT_DEVICE(zoom1_uart) = {
  53        "ns16550_serial",
  54        &zoom1_serial
  55};
  56
  57/*
  58 * Routine: board_init
  59 * Description: Early hardware init.
  60 */
  61int board_init(void)
  62{
  63        gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
  64        /* CS1 is Ethernet LAN9211 */
  65        enable_gpmc_cs_config(gpmc_lab_enet, &gpmc_cfg->cs[1],
  66                              DEBUG_BASE, GPMC_SIZE_16M);
  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
  75/*
  76 * Routine: misc_init_r
  77 * Description: Configure zoom board specific configurations
  78 */
  79int misc_init_r(void)
  80{
  81        twl4030_power_init();
  82        twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON);
  83        omap_die_id_display();
  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
  92        return 0;
  93}
  94
  95/*
  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.
 100 */
 101void set_muxconf_regs(void)
 102{
 103        /* platform specific muxes */
 104        MUX_ZOOM1_MDK();
 105}
 106
 107#ifdef CONFIG_GENERIC_MMC
 108int board_mmc_init(bd_t *bis)
 109{
 110        return omap_mmc_init(0, 0, 0, -1, -1);
 111}
 112
 113void board_mmc_power_init(void)
 114{
 115        twl4030_power_mmc_init(0);
 116}
 117#endif
 118
 119#ifdef CONFIG_CMD_NET
 120int board_eth_init(bd_t *bis)
 121{
 122        int rc = 0;
 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        }
 140#endif
 141
 142        return rc;
 143}
 144#endif
 145