uboot/include/configs/calimain.h
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2011 OMICRON electronics GmbH
   3 *
   4 * Based on da850evm.h. Original Copyrights follow:
   5 *
   6 * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
   7 * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
   8 *
   9 * SPDX-License-Identifier:     GPL-2.0+
  10 */
  11
  12#ifndef __CONFIG_H
  13#define __CONFIG_H
  14
  15/*
  16 * Board
  17 */
  18#define CONFIG_DRIVER_TI_EMAC
  19#define MACH_TYPE_CALIMAIN      3528
  20#define CONFIG_MACH_TYPE        MACH_TYPE_CALIMAIN
  21
  22/*
  23 * SoC Configuration
  24 */
  25#define CONFIG_MACH_DAVINCI_CALIMAIN
  26#define CONFIG_ARM926EJS                /* arm926ejs CPU core */
  27#define CONFIG_SOC_DA8XX                /* TI DA8xx SoC */
  28#define CONFIG_SOC_DA850                /* TI DA850 SoC */
  29#define CONFIG_SYS_EXCEPTION_VECTORS_HIGH
  30#define CONFIG_SYS_CLK_FREQ             clk_get(DAVINCI_ARM_CLKID)
  31#define CONFIG_SYS_OSCIN_FREQ           calimain_get_osc_freq()
  32#define CONFIG_SYS_TIMERBASE            DAVINCI_TIMER0_BASE
  33#define CONFIG_SYS_HZ_CLOCK             clk_get(DAVINCI_AUXCLK_CLKID)
  34#define CONFIG_SYS_TEXT_BASE            0x60000000
  35#define CONFIG_DA850_LOWLEVEL
  36#define CONFIG_SYS_DA850_PLL_INIT
  37#define CONFIG_SYS_DA850_DDR_INIT
  38#define CONFIG_ARCH_CPU_INIT
  39#define CONFIG_DA8XX_GPIO
  40#define CONFIG_HW_WATCHDOG
  41#define CONFIG_SYS_WDTTIMERBASE DAVINCI_TIMER1_BASE
  42#define CONFIG_SYS_WDT_PERIOD_LOW \
  43        (60 * CONFIG_SYS_OSCIN_FREQ) /* 60 s heartbeat */
  44#define CONFIG_SYS_WDT_PERIOD_HIGH      0x0
  45#define CONFIG_SYS_DV_NOR_BOOT_CFG      (0x11)
  46
  47/*
  48 * PLL configuration
  49 */
  50#define CONFIG_SYS_DV_CLKMODE          0
  51#define CONFIG_SYS_DA850_PLL0_POSTDIV  1
  52#define CONFIG_SYS_DA850_PLL0_PLLDIV1  0x8000
  53#define CONFIG_SYS_DA850_PLL0_PLLDIV2  0x8001
  54#define CONFIG_SYS_DA850_PLL0_PLLDIV3  0x8002
  55#define CONFIG_SYS_DA850_PLL0_PLLDIV4  0x8003
  56#define CONFIG_SYS_DA850_PLL0_PLLDIV5  0x8002
  57#define CONFIG_SYS_DA850_PLL0_PLLDIV6  CONFIG_SYS_DA850_PLL0_PLLDIV1
  58#define CONFIG_SYS_DA850_PLL0_PLLDIV7  0x8005
  59
  60#define CONFIG_SYS_DA850_PLL1_POSTDIV  1
  61#define CONFIG_SYS_DA850_PLL1_PLLDIV1  0x8000
  62#define CONFIG_SYS_DA850_PLL1_PLLDIV2  0x8001
  63#define CONFIG_SYS_DA850_PLL1_PLLDIV3  0x8002
  64
  65#define CONFIG_SYS_DA850_PLL0_PLLM \
  66        ((calimain_get_osc_freq() == 25000000) ? 23 : 24)
  67#define CONFIG_SYS_DA850_PLL1_PLLM \
  68        ((calimain_get_osc_freq() == 25000000) ? 20 : 21)
  69
  70/*
  71 * DDR2 memory configuration
  72 */
  73#define CONFIG_SYS_DA850_DDR2_DDRPHYCR (DV_DDR_PHY_PWRDNEN | \
  74                                        DV_DDR_PHY_EXT_STRBEN | \
  75                                        (0x4 << DV_DDR_PHY_RD_LATENCY_SHIFT))
  76
  77#define CONFIG_SYS_DA850_DDR2_SDBCR (           \
  78        (1 << DV_DDR_SDCR_DDR2EN_SHIFT) |       \
  79        (1 << DV_DDR_SDCR_DDRDRIVE0_SHIFT) |    \
  80        (1 << DV_DDR_SDCR_DDREN_SHIFT) |        \
  81        (1 << DV_DDR_SDCR_SDRAMEN_SHIFT) |      \
  82        (1 << DV_DDR_SDCR_BUS_WIDTH_SHIFT) |    \
  83        (0x3 << DV_DDR_SDCR_CL_SHIFT) |         \
  84        (0x3 << DV_DDR_SDCR_IBANK_SHIFT) |      \
  85        (0x2 << DV_DDR_SDCR_PAGESIZE_SHIFT))
  86
  87/* SDBCR2 is only used if IBANK_POS bit in SDBCR is set */
  88#define CONFIG_SYS_DA850_DDR2_SDBCR2    0
  89
  90#define CONFIG_SYS_DA850_DDR2_SDTIMR (          \
  91        (16 << DV_DDR_SDTMR1_RFC_SHIFT) |       \
  92        (1 << DV_DDR_SDTMR1_RP_SHIFT) |         \
  93        (1 << DV_DDR_SDTMR1_RCD_SHIFT) |        \
  94        (1 << DV_DDR_SDTMR1_WR_SHIFT) |         \
  95        (5 << DV_DDR_SDTMR1_RAS_SHIFT) |        \
  96        (7 << DV_DDR_SDTMR1_RC_SHIFT) |         \
  97        (1 << DV_DDR_SDTMR1_RRD_SHIFT) |        \
  98        (1 << DV_DDR_SDTMR1_WTR_SHIFT))
  99
 100#define CONFIG_SYS_DA850_DDR2_SDTIMR2 (         \
 101        (7 << DV_DDR_SDTMR2_RASMAX_SHIFT) |     \
 102        (2 << DV_DDR_SDTMR2_XP_SHIFT) |         \
 103        (0 << DV_DDR_SDTMR2_ODT_SHIFT) |        \
 104        (18 << DV_DDR_SDTMR2_XSNR_SHIFT) |      \
 105        (199 << DV_DDR_SDTMR2_XSRD_SHIFT) |     \
 106        (0 << DV_DDR_SDTMR2_RTP_SHIFT) |        \
 107        (2 << DV_DDR_SDTMR2_CKE_SHIFT))
 108
 109#define CONFIG_SYS_DA850_DDR2_SDRCR     0x000003FF
 110#define CONFIG_SYS_DA850_DDR2_PBBPR     0x30
 111
 112/*
 113 * Flash memory timing
 114 */
 115
 116#define CONFIG_SYS_DA850_CS2CFG (       \
 117        DAVINCI_ABCR_WSETUP(2) |        \
 118        DAVINCI_ABCR_WSTROBE(5) |       \
 119        DAVINCI_ABCR_WHOLD(3) |         \
 120        DAVINCI_ABCR_RSETUP(1) |        \
 121        DAVINCI_ABCR_RSTROBE(14) |      \
 122        DAVINCI_ABCR_RHOLD(0) |         \
 123        DAVINCI_ABCR_TA(3) |            \
 124        DAVINCI_ABCR_ASIZE_16BIT)
 125
 126/* single 64 MB NOR flash device connected to CS2 and CS3 */
 127#define CONFIG_SYS_DA850_CS3CFG CONFIG_SYS_DA850_CS2CFG
 128
 129/*
 130 * Memory Info
 131 */
 132#define CONFIG_SYS_MALLOC_LEN   (0x10000 + 1*1024*1024) /* malloc() len */
 133#define PHYS_SDRAM_1            DAVINCI_DDR_EMIF_DATA_BASE /* DDR Start */
 134#define PHYS_SDRAM_1_SIZE       (128 << 20) /* SDRAM size 128MB */
 135#define CONFIG_MAX_RAM_BANK_SIZE (512 << 20) /* max size from SPRS586*/
 136
 137#define CONFIG_SYS_DA850_SYSCFG_SUSPSRC (       \
 138        DAVINCI_SYSCFG_SUSPSRC_TIMER0 |         \
 139        DAVINCI_SYSCFG_SUSPSRC_SPI1 |           \
 140        DAVINCI_SYSCFG_SUSPSRC_UART2 |          \
 141        DAVINCI_SYSCFG_SUSPSRC_EMAC |           \
 142        DAVINCI_SYSCFG_SUSPSRC_I2C)
 143
 144/* memtest start addr */
 145#define CONFIG_SYS_MEMTEST_START        (PHYS_SDRAM_1 + 0x2000000)
 146
 147/* memtest will be run on 16MB */
 148#define CONFIG_SYS_MEMTEST_END          (CONFIG_SYS_MEMTEST_START + (16 << 20))
 149
 150#define CONFIG_NR_DRAM_BANKS    1 /* we have 1 bank of DRAM */
 151
 152/*
 153 * Serial Driver info
 154 */
 155#define CONFIG_SYS_NS16550
 156#define CONFIG_SYS_NS16550_SERIAL
 157#define CONFIG_SYS_NS16550_REG_SIZE     -4      /* NS16550 register size */
 158#define CONFIG_SYS_NS16550_COM1 DAVINCI_UART2_BASE /* Base address of UART2 */
 159#define CONFIG_SYS_NS16550_CLK  clk_get(DAVINCI_UART2_CLKID)
 160#define CONFIG_CONS_INDEX       1               /* use UART0 for console */
 161#define CONFIG_BAUDRATE         115200          /* Default baud rate */
 162
 163#define CONFIG_ENV_IS_IN_FLASH
 164#define CONFIG_FLASH_CFI_DRIVER
 165#define CONFIG_SYS_FLASH_CFI
 166#define CONFIG_SYS_FLASH_PROTECTION
 167#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
 168#define CONFIG_SYS_MAX_FLASH_BANKS  1 /* max number of flash banks */
 169#define CONFIG_SYS_FLASH_SECT_SZ    (128 << 10) /* 128KB */
 170#define CONFIG_SYS_FLASH_BASE       DAVINCI_ASYNC_EMIF_DATA_CE2_BASE
 171#define CONFIG_ENV_SECT_SIZE        CONFIG_SYS_FLASH_SECT_SZ
 172#define CONFIG_ENV_ADDR \
 173        (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_FLASH_SECT_SZ * 2)
 174#define CONFIG_ENV_SIZE             (128 << 10)
 175#define CONFIG_ENV_ADDR_REDUND      (CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE)
 176#define CONFIG_ENV_SIZE_REDUND      CONFIG_ENV_SIZE
 177#define PHYS_FLASH_SIZE             (64 << 20) /* Flash size 64MB */
 178#define CONFIG_SYS_MAX_FLASH_SECT \
 179        ((PHYS_FLASH_SIZE/CONFIG_SYS_FLASH_SECT_SZ) + 3)
 180
 181/*
 182 * Network & Ethernet Configuration
 183 */
 184#ifdef CONFIG_DRIVER_TI_EMAC
 185#define CONFIG_EMAC_MDIO_PHY_NUM        1
 186#define CONFIG_MII
 187#define CONFIG_BOOTP_DNS
 188#define CONFIG_BOOTP_DNS2
 189#define CONFIG_BOOTP_SEND_HOSTNAME
 190#define CONFIG_NET_RETRY_COUNT  10
 191#endif
 192
 193/*
 194 * U-Boot general configuration
 195 */
 196#define CONFIG_BOOTFILE        "uImage" /* Boot file name */
 197#define CONFIG_SYS_PROMPT      "Calimain > " /* Command Prompt */
 198#define CONFIG_SYS_CBSIZE      1024 /* Console I/O Buffer Size  */
 199#define CONFIG_SYS_PBSIZE      (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
 200#define CONFIG_SYS_MAXARGS     16 /* max number of command args */
 201#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE /* Boot Args Buffer Size */
 202#define CONFIG_SYS_LOAD_ADDR   (PHYS_SDRAM_1 + 0x700000)
 203#define CONFIG_LOADADDR        0xc0700000
 204#define CONFIG_VERSION_VARIABLE
 205#define CONFIG_AUTO_COMPLETE
 206#define CONFIG_SYS_HUSH_PARSER
 207#define CONFIG_CMDLINE_EDITING
 208#define CONFIG_SYS_LONGHELP
 209#define CONFIG_CRC32_VERIFY
 210#define CONFIG_MX_CYCLIC
 211
 212/*
 213 * Linux Information
 214 */
 215#define LINUX_BOOT_PARAM_ADDR     (PHYS_SDRAM_1 + 0x100)
 216#define CONFIG_CMDLINE_TAG
 217#define CONFIG_REVISION_TAG
 218#define CONFIG_SETUP_MEMORY_TAGS
 219#define CONFIG_BOOTARGS           ""
 220#define CONFIG_BOOTCOMMAND        "run checkupdate; run checkbutton;"
 221#define CONFIG_BOOTDELAY          0
 222#define CONFIG_ZERO_BOOTDELAY_CHECK   /* check for keypress on bootdelay==0 */
 223#define CONFIG_BOOT_RETRY_TIME    60  /* continue boot after 60 s inactivity */
 224#define CONFIG_AUTOBOOT_KEYED
 225#define CONFIG_AUTOBOOT_DELAY_STR "\x0d" /* press ENTER to interrupt BOOT */
 226#define CONFIG_RESET_TO_RETRY
 227
 228/*
 229 * Default environment settings
 230 * gpio0 = button, gpio1 = led green, gpio2 = led red
 231 * verify = n ... disable kernel checksum verification for faster booting
 232 */
 233#define CONFIG_EXTRA_ENV_SETTINGS                                       \
 234        "tftpdir=calimero\0"                                            \
 235        "flashkernel=tftpboot $loadaddr $tftpdir/uImage; "              \
 236                "erase 0x60800000 +0x400000; "                          \
 237                "cp.b $loadaddr 0x60800000 $filesize\0"                 \
 238        "flashrootfs="                                                  \
 239                "tftpboot $loadaddr $tftpdir/rootfs.jffs2; "            \
 240                "erase 0x60c00000 +0x2e00000; "                         \
 241                "cp.b $loadaddr 0x60c00000 $filesize\0"                 \
 242        "flashuboot=tftpboot $loadaddr $tftpdir/u-boot.bin; "           \
 243                "protect off all; "                                     \
 244                "erase 0x60000000 +0x80000; "                           \
 245                "cp.b $loadaddr 0x60000000 $filesize\0"                 \
 246        "flashrlk=tftpboot $loadaddr $tftpdir/uImage-rlk; "             \
 247                "erase 0x60080000 +0x780000; "                          \
 248                "cp.b $loadaddr 0x60080000 $filesize\0"                 \
 249        "erase_persistent=erase 0x63a00000 +0x600000;\0"                \
 250        "bootnor=setenv bootargs console=ttyS2,115200n8 "               \
 251                "root=/dev/mtdblock3 rw rootfstype=jffs2 "              \
 252                "rootwait ethaddr=$ethaddr; "                           \
 253                "gpio c 1; gpio s 2; bootm 0x60800000\0"                \
 254        "bootrlk=gpio s 1; gpio s 2;"                                   \
 255                "setenv bootargs console=ttyS2,115200n8 "               \
 256                "ethaddr=$ethaddr; bootm 0x60080000\0"                  \
 257        "boottftp=setenv bootargs console=ttyS2,115200n8 "              \
 258                "root=/dev/mtdblock3 rw rootfstype=jffs2 "              \
 259                "rootwait ethaddr=$ethaddr; "                           \
 260                "tftpboot $loadaddr $tftpdir/uImage;"                   \
 261                "gpio c 1; gpio s 2; bootm $loadaddr\0"                 \
 262        "checkupdate=if test -n $update_flag; then "                    \
 263                "echo Previous update failed - starting RLK; "          \
 264                "run bootrlk; fi; "                                     \
 265                "if test -n $initial_setup; then "                      \
 266                "echo Running initial setup procedure; "                \
 267                "sleep 1; run flashall; fi\0"                           \
 268        "product=accessory\0"                                           \
 269        "serial=XX12345\0"                                              \
 270        "checknor="                                                     \
 271                "if gpio i 0; then run bootnor; fi;\0"                  \
 272        "checkrlk="                                                     \
 273                "if gpio i 0; then run bootrlk; fi;\0"                  \
 274        "checkbutton="                                                  \
 275                "run checknor; sleep 1;"                                \
 276                "run checknor; sleep 1;"                                \
 277                "run checknor; sleep 1;"                                \
 278                "run checknor; sleep 1;"                                \
 279                "run checknor;"                                         \
 280                "gpio s 1; gpio s 2;"                                   \
 281                "echo ---- Release button to boot RLK ----;"            \
 282                "run checkrlk; sleep 1;"                                \
 283                "run checkrlk; sleep 1;"                                \
 284                "run checkrlk; sleep 1;"                                \
 285                "run checkrlk; sleep 1;"                                \
 286                "run checkrlk; sleep 1;"                                \
 287                "run checkrlk;"                                         \
 288                "echo ---- Factory reset requested ----;"               \
 289                "gpio c 1;"                                             \
 290                "setenv factory_reset true;"                            \
 291                "saveenv;"                                              \
 292                "run bootnor;\0"                                        \
 293        "flashall=run flashrlk;"                                        \
 294                "run flashkernel;"                                      \
 295                "run flashrootfs;"                                      \
 296                "setenv erase_datafs true;"                             \
 297                "setenv initial_setup;"                                 \
 298                "saveenv;"                                              \
 299                "run bootnor;\0"                                        \
 300        "verify=n\0"                                                    \
 301        "clearenv=protect off all;"                                     \
 302                "erase 0x60040000 +0x40000;\0"                          \
 303        "bootlimit=3\0"                                                 \
 304        "altbootcmd=run bootrlk\0"
 305
 306#define CONFIG_PREBOOT                  \
 307        "echo Version: $ver; "          \
 308        "echo Serial: $serial; "        \
 309        "echo MAC: $ethaddr; "          \
 310        "echo Product: $product; "      \
 311        "gpio c 1; gpio c 2;"
 312
 313/*
 314 * U-Boot commands
 315 */
 316#include <config_cmd_default.h>
 317#define CONFIG_CMD_ENV
 318#define CONFIG_CMD_ASKENV
 319#define CONFIG_CMD_DHCP
 320#define CONFIG_CMD_DIAG
 321#define CONFIG_CMD_MII
 322#define CONFIG_CMD_PING
 323#define CONFIG_CMD_SAVES
 324#define CONFIG_CMD_MEMORY
 325#define CONFIG_CMD_GPIO
 326
 327#ifndef CONFIG_DRIVER_TI_EMAC
 328#undef CONFIG_CMD_NET
 329#undef CONFIG_CMD_DHCP
 330#undef CONFIG_CMD_MII
 331#undef CONFIG_CMD_PING
 332#endif
 333
 334/* additions for new relocation code, must added to all boards */
 335#define CONFIG_SYS_SDRAM_BASE           0xc0000000
 336/* initial stack pointer in internal SRAM */
 337#define CONFIG_SYS_INIT_SP_ADDR         (0x8001ff00)
 338
 339#define CONFIG_BOOTCOUNT_LIMIT
 340#define CONFIG_SYS_BOOTCOUNT_LE         /* Use little-endian accessors */
 341#define CONFIG_SYS_BOOTCOUNT_ADDR       DAVINCI_RTC_BASE
 342
 343#ifndef __ASSEMBLY__
 344int calimain_get_osc_freq(void);
 345#endif
 346
 347#endif /* __CONFIG_H */
 348