uboot/board/logicpd/zoom1/zoom1.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   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 *
  15 */
  16#include <common.h>
  17#include <dm.h>
  18#include <environment.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        .fcr = UART_FCR_DEFVAL,
  52};
  53
  54U_BOOT_DEVICE(zoom1_uart) = {
  55        "ns16550_serial",
  56        &zoom1_serial
  57};
  58
  59/*
  60 * Routine: board_init
  61 * Description: Early hardware init.
  62 */
  63int board_init(void)
  64{
  65        gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
  66        /* CS1 is Ethernet LAN9211 */
  67        enable_gpmc_cs_config(gpmc_lab_enet, &gpmc_cfg->cs[1],
  68                              DEBUG_BASE, GPMC_SIZE_16M);
  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
  77/*
  78 * Routine: misc_init_r
  79 * Description: Configure zoom board specific configurations
  80 */
  81int misc_init_r(void)
  82{
  83        twl4030_power_init();
  84        twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON);
  85        omap_die_id_display();
  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
  94        return 0;
  95}
  96
  97/*
  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.
 102 */
 103void set_muxconf_regs(void)
 104{
 105        /* platform specific muxes */
 106        MUX_ZOOM1_MDK();
 107}
 108
 109#ifdef CONFIG_MMC
 110int board_mmc_init(bd_t *bis)
 111{
 112        return omap_mmc_init(0, 0, 0, -1, -1);
 113}
 114
 115void board_mmc_power_init(void)
 116{
 117        twl4030_power_mmc_init(0);
 118}
 119#endif
 120
 121#ifdef CONFIG_CMD_NET
 122int board_eth_init(bd_t *bis)
 123{
 124        int rc = 0;
 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);
 133        if (!eth_env_get_enetaddr(STR_ENV_ETHADDR, eth_addr)) {
 134                dev = eth_get_dev_by_index(0);
 135                if (dev) {
 136                        eth_env_set_enetaddr(STR_ENV_ETHADDR, dev->enetaddr);
 137                } else {
 138                        printf("zoom1: Couldn't get eth device\n");
 139                        rc = -1;
 140                }
 141        }
 142#endif
 143
 144        return rc;
 145}
 146#endif
 147