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 <netdev.h>
  19#include <twl4030.h>
  20#include <asm/io.h>
  21#include <asm/arch/mem.h>
  22#include <asm/arch/mmc_host_def.h>
  23#include <asm/arch/mux.h>
  24#include <asm/arch/sys_proto.h>
  25#include <asm/mach-types.h>
  26#include "zoom1.h"
  27
  28DECLARE_GLOBAL_DATA_PTR;
  29
  30/* gpmc_cfg is initialized by gpmc_init and we use it here */
  31extern struct gpmc *gpmc_cfg;
  32
  33/* GPMC definitions for Ethenet Controller LAN9211 */
  34static const u32 gpmc_lab_enet[] = {
  35        ZOOM1_ENET_GPMC_CONF1,
  36        ZOOM1_ENET_GPMC_CONF2,
  37        ZOOM1_ENET_GPMC_CONF3,
  38        ZOOM1_ENET_GPMC_CONF4,
  39        ZOOM1_ENET_GPMC_CONF5,
  40        ZOOM1_ENET_GPMC_CONF6,
  41        /*CONF7- computed as params */
  42};
  43
  44/*
  45 * Routine: board_init
  46 * Description: Early hardware init.
  47 */
  48int board_init(void)
  49{
  50        gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
  51        /* CS1 is Ethernet LAN9211 */
  52        enable_gpmc_cs_config(gpmc_lab_enet, &gpmc_cfg->cs[1],
  53                              DEBUG_BASE, GPMC_SIZE_16M);
  54        /* board id for Linux */
  55        gd->bd->bi_arch_number = MACH_TYPE_OMAP_LDP;
  56        /* boot param addr */
  57        gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);
  58
  59        return 0;
  60}
  61
  62/*
  63 * Routine: misc_init_r
  64 * Description: Configure zoom board specific configurations
  65 */
  66int misc_init_r(void)
  67{
  68        twl4030_power_init();
  69        twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON);
  70        dieid_num_r();
  71
  72        /*
  73         * Board Reset
  74         * The board is reset by holding the red button on the
  75         * top right front face for eight seconds.
  76         */
  77        twl4030_power_reset_init();
  78
  79        return 0;
  80}
  81
  82/*
  83 * Routine: set_muxconf_regs
  84 * Description: Setting up the configuration Mux registers specific to the
  85 *              hardware. Many pins need to be moved from protect to primary
  86 *              mode.
  87 */
  88void set_muxconf_regs(void)
  89{
  90        /* platform specific muxes */
  91        MUX_ZOOM1_MDK();
  92}
  93
  94#ifdef CONFIG_GENERIC_MMC
  95int board_mmc_init(bd_t *bis)
  96{
  97        return omap_mmc_init(0, 0, 0, -1, -1);
  98}
  99#endif
 100
 101#ifdef CONFIG_CMD_NET
 102int board_eth_init(bd_t *bis)
 103{
 104        int rc = 0;
 105
 106#ifdef CONFIG_SMC911X
 107#define STR_ENV_ETHADDR "ethaddr"
 108
 109        struct eth_device *dev;
 110        uchar eth_addr[6];
 111
 112        rc = smc911x_initialize(0, CONFIG_SMC911X_BASE);
 113        if (!eth_getenv_enetaddr(STR_ENV_ETHADDR, eth_addr)) {
 114                dev = eth_get_dev_by_index(0);
 115                if (dev) {
 116                        eth_setenv_enetaddr(STR_ENV_ETHADDR, dev->enetaddr);
 117                } else {
 118                        printf("zoom1: Couldn't get eth device\n");
 119                        rc = -1;
 120                }
 121        }
 122#endif
 123
 124        return rc;
 125}
 126#endif
 127