uboot/board/trizepsiv/conxs.c
<<
>>
Prefs
   1/*
   2 * (C) Copyright 2007
   3 * Stefano Babic, DENX Gmbh, sbabic@denx.de
   4 *
   5 * (C) Copyright 2004
   6 * Robert Whaley, Applied Data Systems, Inc. rwhaley@applieddata.net
   7 *
   8 * (C) Copyright 2002
   9 * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
  10 *
  11 * (C) Copyright 2002
  12 * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
  13 * Marius Groeger <mgroeger@sysgo.de>
  14 *
  15 * See file CREDITS for list of people who contributed to this
  16 * project.
  17 *
  18 * This program is free software; you can redistribute it and/or
  19 * modify it under the terms of the GNU General Public License as
  20 * published by the Free Software Foundation; either version 2 of
  21 * the License, or (at your option) any later version.
  22 *
  23 * This program is distributed in the hope that it will be useful,
  24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  26 * GNU General Public License for more details.
  27 *
  28 * You should have received a copy of the GNU General Public License
  29 * along with this program; if not, write to the Free Software
  30 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  31 * MA 02111-1307 USA
  32 */
  33
  34#include <common.h>
  35#include <asm/arch/pxa-regs.h>
  36#include <netdev.h>
  37
  38DECLARE_GLOBAL_DATA_PTR;
  39
  40#define         RH_A_PSM        (1 << 8)        /* power switching mode */
  41#define         RH_A_NPS        (1 << 9)        /* no power switching */
  42
  43extern struct serial_device serial_ffuart_device;
  44extern struct serial_device serial_btuart_device;
  45extern struct serial_device serial_stuart_device;
  46
  47#if CONFIG_POLARIS
  48#define BOOT_CONSOLE    "serial_stuart"
  49#else
  50#define BOOT_CONSOLE    "serial_ffuart"
  51#endif
  52/* ------------------------------------------------------------------------- */
  53
  54/*
  55 * Miscelaneous platform dependent initialisations
  56 */
  57
  58int usb_board_init(void)
  59{
  60        UHCHR = (UHCHR | UHCHR_PCPL | UHCHR_PSPL) &
  61                ~(UHCHR_SSEP0 | UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSE);
  62
  63        UHCHR |= UHCHR_FSBIR;
  64
  65        while (UHCHR & UHCHR_FSBIR);
  66
  67        UHCHR &= ~UHCHR_SSE;
  68        UHCHIE = (UHCHIE_UPRIE | UHCHIE_RWIE);
  69
  70        /* Clear any OTG Pin Hold */
  71        if (PSSR & PSSR_OTGPH)
  72                PSSR |= PSSR_OTGPH;
  73
  74        UHCRHDA &= ~(RH_A_NPS);
  75        UHCRHDA |= RH_A_PSM;
  76
  77        /* Set port power control mask bits, only 3 ports. */
  78        UHCRHDB |= (0x7<<17);
  79
  80        return 0;
  81}
  82
  83void usb_board_init_fail(void)
  84{
  85        return;
  86}
  87
  88void usb_board_stop(void)
  89{
  90        UHCHR |= UHCHR_FHR;
  91        udelay(11);
  92        UHCHR &= ~UHCHR_FHR;
  93
  94        UHCCOMS |= 1;
  95        udelay(10);
  96
  97        CKEN &= ~CKEN10_USBHOST;
  98
  99        return;
 100}
 101
 102int board_init (void)
 103{
 104        /* memory and cpu-speed are setup before relocation */
 105        /* so we do _nothing_ here */
 106
 107        /* arch number of ConXS Board */
 108        gd->bd->bi_arch_number = 776;
 109
 110        /* adress of boot parameters */
 111        gd->bd->bi_boot_params = 0xa000003c;
 112
 113        return 0;
 114}
 115
 116int board_late_init(void)
 117{
 118#if defined(CONFIG_SERIAL_MULTI)
 119        char *console=getenv("boot_console");
 120
 121        if ((console == NULL) || (strcmp(console,"serial_btuart") &&
 122                strcmp(console,"serial_stuart") &&
 123                strcmp(console,"serial_ffuart"))) {
 124                        console = BOOT_CONSOLE;
 125        }
 126        setenv("stdout",console);
 127        setenv("stdin", console);
 128        setenv("stderr",console);
 129#endif
 130        return 0;
 131}
 132
 133struct serial_device *default_serial_console (void)
 134{
 135        return &serial_ffuart_device;
 136}
 137
 138int dram_init (void)
 139{
 140        gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
 141        gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
 142        gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
 143        gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
 144        gd->bd->bi_dram[2].start = PHYS_SDRAM_3;
 145        gd->bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE;
 146        gd->bd->bi_dram[3].start = PHYS_SDRAM_4;
 147        gd->bd->bi_dram[3].size = PHYS_SDRAM_4_SIZE;
 148
 149        return 0;
 150}
 151
 152#ifdef CONFIG_DRIVER_DM9000
 153int board_eth_init(bd_t *bis)
 154{
 155        return dm9000_initialize(bis);
 156}
 157#endif
 158