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