uboot/include/configs/mx28evk.h
<<
>>
Prefs
   1/*
   2 * (C) Copyright 2011 Freescale Semiconductor, Inc.
   3 * Author: Fabio Estevam <fabio.estevam@freescale.com>
   4 *
   5 * Based on m28evk.h:
   6 * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
   7 * on behalf of DENX Software Engineering GmbH
   8 *
   9 * SPDX-License-Identifier:     GPL-2.0+
  10 */
  11#ifndef __CONFIGS_MX28EVK_H__
  12#define __CONFIGS_MX28EVK_H__
  13
  14/* System configurations */
  15#define CONFIG_MX28                             /* i.MX28 SoC */
  16#define CONFIG_MACH_TYPE        MACH_TYPE_MX28EVK
  17
  18/* U-Boot Commands */
  19#define CONFIG_SYS_NO_FLASH
  20#define CONFIG_DISPLAY_CPUINFO
  21#define CONFIG_DOS_PARTITION
  22
  23#define CONFIG_CMD_DATE
  24#define CONFIG_CMD_NAND
  25#define CONFIG_CMD_NAND_TRIMFFS
  26#define CONFIG_VIDEO
  27
  28/* Memory configuration */
  29#define CONFIG_NR_DRAM_BANKS            1               /* 1 bank of DRAM */
  30#define PHYS_SDRAM_1                    0x40000000      /* Base address */
  31#define PHYS_SDRAM_1_SIZE               0x40000000      /* Max 1 GB RAM */
  32#define CONFIG_SYS_SDRAM_BASE           PHYS_SDRAM_1
  33
  34/* Environment */
  35#ifndef CONFIG_ENV_IS_IN_SPI_FLASH
  36#define CONFIG_ENV_SIZE                 (16 * 1024)
  37#else
  38#define CONFIG_ENV_SIZE                 (4 * 1024)
  39#endif
  40#define CONFIG_ENV_OVERWRITE
  41
  42/* Environment is in MMC */
  43#if defined(CONFIG_CMD_MMC) && defined(CONFIG_ENV_IS_IN_MMC)
  44#define CONFIG_ENV_OFFSET               (256 * 1024)
  45#define CONFIG_SYS_MMC_ENV_DEV          0
  46#endif
  47
  48/* Environment is in NAND */
  49#if defined(CONFIG_CMD_NAND) && defined(CONFIG_ENV_IS_IN_NAND)
  50#define CONFIG_ENV_SIZE_REDUND          CONFIG_ENV_SIZE
  51#define CONFIG_ENV_SECT_SIZE            (128 * 1024)
  52#define CONFIG_ENV_RANGE                (512 * 1024)
  53#define CONFIG_ENV_OFFSET               0x300000
  54#define CONFIG_ENV_OFFSET_REDUND        \
  55                (CONFIG_ENV_OFFSET + CONFIG_ENV_RANGE)
  56#endif
  57
  58/* Environemnt is in SPI flash */
  59#if defined(CONFIG_CMD_SF) && defined(CONFIG_ENV_IS_IN_SPI_FLASH)
  60#define CONFIG_SYS_REDUNDAND_ENVIRONMENT
  61#define CONFIG_ENV_OFFSET               0x40000         /* 256K */
  62#define CONFIG_ENV_OFFSET_REDUND        (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
  63#define CONFIG_ENV_SECT_SIZE            0x1000
  64#define CONFIG_ENV_SPI_CS               0
  65#define CONFIG_ENV_SPI_BUS              2
  66#define CONFIG_ENV_SPI_MAX_HZ           24000000
  67#define CONFIG_ENV_SPI_MODE             SPI_MODE_0
  68#endif
  69
  70/* UBI and NAND partitioning */
  71#ifdef CONFIG_CMD_NAND
  72#define CONFIG_CMD_UBI
  73#define CONFIG_CMD_UBIFS
  74#define CONFIG_CMD_MTDPARTS
  75#define CONFIG_RBTREE
  76#define CONFIG_LZO
  77#define CONFIG_MTD_DEVICE
  78#define CONFIG_MTD_PARTITIONS
  79#define MTDIDS_DEFAULT                  "nand0=gpmi-nand"
  80#define MTDPARTS_DEFAULT                        \
  81        "mtdparts=gpmi-nand:"                   \
  82                "3m(bootloader)ro,"             \
  83                "512k(environment),"            \
  84                "512k(redundant-environment),"  \
  85                "4m(kernel),"                   \
  86                "512k(fdt),"                    \
  87                "8m(ramdisk),"                  \
  88                "-(filesystem)"
  89#endif
  90
  91/* FEC Ethernet on SoC */
  92#ifdef  CONFIG_CMD_NET
  93#define CONFIG_FEC_MXC
  94#define CONFIG_MX28_FEC_MAC_IN_OCOTP
  95#endif
  96
  97/* RTC */
  98#ifdef  CONFIG_CMD_DATE
  99#define CONFIG_RTC_MXS
 100#endif
 101
 102/* USB */
 103#ifdef  CONFIG_CMD_USB
 104#define CONFIG_EHCI_MXS_PORT1
 105#define CONFIG_USB_MAX_CONTROLLER_COUNT 1
 106#define CONFIG_USB_STORAGE
 107#define CONFIG_USB_HOST_ETHER
 108#define CONFIG_USB_ETHER_ASIX
 109#define CONFIG_USB_ETHER_SMSC95XX
 110#endif
 111
 112/* SPI */
 113#ifdef CONFIG_CMD_SPI
 114#define CONFIG_DEFAULT_SPI_BUS          2
 115#define CONFIG_DEFAULT_SPI_MODE         SPI_MODE_0
 116
 117/* SPI Flash */
 118#ifdef CONFIG_CMD_SF
 119#define CONFIG_SF_DEFAULT_BUS           2
 120#define CONFIG_SF_DEFAULT_CS            0
 121/* this may vary and depends on the installed chip */
 122#define CONFIG_SF_DEFAULT_MODE          SPI_MODE_0
 123#define CONFIG_SF_DEFAULT_SPEED         24000000
 124#endif
 125
 126#endif
 127
 128/* Framebuffer support */
 129#ifdef CONFIG_VIDEO
 130#define CONFIG_VIDEO_LOGO
 131#define CONFIG_SPLASH_SCREEN
 132#define CONFIG_CMD_BMP
 133#define CONFIG_BMP_16BPP
 134#define CONFIG_VIDEO_BMP_RLE8
 135#define CONFIG_VIDEO_BMP_GZIP
 136#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE  (512 << 10)
 137#endif
 138
 139/* Boot Linux */
 140#define CONFIG_BOOTDELAY        1
 141#define CONFIG_BOOTFILE         "uImage"
 142#define CONFIG_LOADADDR         0x42000000
 143#define CONFIG_SYS_LOAD_ADDR    CONFIG_LOADADDR
 144
 145/* Extra Environment */
 146#define CONFIG_EXTRA_ENV_SETTINGS \
 147        "ubifs_file=filesystem.ubifs\0" \
 148        "update_nand_full_filename=u-boot.nand\0" \
 149        "update_nand_firmware_filename=u-boot.sb\0"     \
 150        "update_nand_firmware_maxsz=0x100000\0" \
 151        "update_nand_stride=0x40\0"     /* MX28 datasheet ch. 12.12 */ \
 152        "update_nand_count=0x4\0"       /* MX28 datasheet ch. 12.12 */ \
 153        "update_nand_get_fcb_size="     /* Get size of FCB blocks */ \
 154                "nand device 0 ; " \
 155                "nand info ; " \
 156                "setexpr fcb_sz ${update_nand_stride} * ${update_nand_count};" \
 157                "setexpr update_nand_fcb ${fcb_sz} * ${nand_writesize}\0" \
 158        "update_nand_firmware_full=" /* Update FCB, DBBT and FW */ \
 159                "if tftp ${update_nand_full_filename} ; then " \
 160                "run update_nand_get_fcb_size ; " \
 161                "nand scrub -y 0x0 ${filesize} ; " \
 162                "nand write.raw ${loadaddr} 0x0 ${fcb_sz} ; " \
 163                "setexpr update_off ${loadaddr} + ${update_nand_fcb} ; " \
 164                "setexpr update_sz ${filesize} - ${update_nand_fcb} ; " \
 165                "nand write ${update_off} ${update_nand_fcb} ${update_sz} ; " \
 166                "fi\0" \
 167        "update_nand_firmware="         /* Update only firmware */ \
 168                "if tftp ${update_nand_firmware_filename} ; then " \
 169                "run update_nand_get_fcb_size ; " \
 170                "setexpr fcb_sz ${update_nand_fcb} * 2 ; " /* FCB + DBBT */ \
 171                "setexpr fw_sz ${update_nand_firmware_maxsz} * 2 ; " \
 172                "setexpr fw_off ${fcb_sz} + ${update_nand_firmware_maxsz};" \
 173                "nand erase ${fcb_sz} ${fw_sz} ; " \
 174                "nand write ${loadaddr} ${fcb_sz} ${filesize} ; " \
 175                "nand write ${loadaddr} ${fw_off} ${filesize} ; " \
 176                "fi\0" \
 177        "update_nand_kernel="           /* Update kernel */ \
 178                "mtdparts default; " \
 179                "nand erase.part kernel; " \
 180                "if test ${ip_dyn} = yes; then " \
 181                        "setenv get_cmd dhcp; " \
 182                "else " \
 183                        "setenv get_cmd tftp; " \
 184                "fi; " \
 185                "${get_cmd} ${image}; " \
 186                "nand write ${loadaddr} kernel ${filesize}\0" \
 187        "update_nand_fdt="              /* Update fdt */ \
 188                "mtdparts default; " \
 189                "nand erase.part fdt; " \
 190                "if test ${ip_dyn} = yes; then " \
 191                        "setenv get_cmd dhcp; " \
 192                "else " \
 193                        "setenv get_cmd tftp; " \
 194                "fi; " \
 195                "${get_cmd} ${fdt_file}; " \
 196                "nand write ${loadaddr} fdt ${filesize}\0" \
 197        "update_nand_filesystem="               /* Update filesystem */ \
 198                "mtdparts default; " \
 199                "nand erase.part filesystem; " \
 200                "if test ${ip_dyn} = yes; then " \
 201                        "setenv get_cmd dhcp; " \
 202                "else " \
 203                        "setenv get_cmd tftp; " \
 204                "fi; " \
 205                "${get_cmd} ${ubifs_file}; " \
 206                "ubi part filesystem; " \
 207                "ubi create filesystem; " \
 208                "ubi write ${loadaddr} filesystem ${filesize}\0" \
 209        "nandargs=setenv bootargs console=${console_mainline},${baudrate} " \
 210                "rootfstype=ubifs ubi.mtd=6 root=ubi0_0 ${mtdparts}\0" \
 211        "nandboot="             /* Boot from NAND */ \
 212                "mtdparts default; " \
 213                "run nandargs; " \
 214                "nand read ${loadaddr} kernel 0x00400000; " \
 215                "if test ${boot_fdt} = yes; then " \
 216                        "nand read ${fdt_addr} fdt 0x00080000; " \
 217                        "bootz ${loadaddr} - ${fdt_addr}; " \
 218                "else " \
 219                        "if test ${boot_fdt} = no; then " \
 220                                "bootz; " \
 221                        "else " \
 222                                "echo \"ERROR: Set boot_fdt to yes or no.\"; " \
 223                        "fi; " \
 224                "fi\0" \
 225        "update_sd_firmware_filename=u-boot.sd\0" \
 226        "update_sd_firmware="           /* Update the SD firmware partition */ \
 227                "if mmc rescan ; then " \
 228                "if tftp ${update_sd_firmware_filename} ; then " \
 229                "setexpr fw_sz ${filesize} / 0x200 ; "  /* SD block size */ \
 230                "setexpr fw_sz ${fw_sz} + 1 ; " \
 231                "mmc write ${loadaddr} 0x800 ${fw_sz} ; " \
 232                "fi ; " \
 233                "fi\0" \
 234        "script=boot.scr\0"     \
 235        "image=zImage\0" \
 236        "console_fsl=ttyAM0\0" \
 237        "console_mainline=ttyAMA0\0" \
 238        "fdt_file=imx28-evk.dtb\0" \
 239        "fdt_addr=0x41000000\0" \
 240        "boot_fdt=try\0" \
 241        "ip_dyn=yes\0" \
 242        "mmcdev=0\0" \
 243        "mmcpart=2\0" \
 244        "mmcroot=/dev/mmcblk0p3 rw rootwait\0" \
 245        "mmcargs=setenv bootargs console=${console_mainline},${baudrate} " \
 246                "root=${mmcroot}\0" \
 247        "loadbootscript="  \
 248                "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
 249        "bootscript=echo Running bootscript from mmc ...; "     \
 250                "source\0" \
 251        "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
 252        "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
 253        "mmcboot=echo Booting from mmc ...; " \
 254                "run mmcargs; " \
 255                "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
 256                        "if run loadfdt; then " \
 257                                "bootz ${loadaddr} - ${fdt_addr}; " \
 258                        "else " \
 259                                "if test ${boot_fdt} = try; then " \
 260                                        "bootz; " \
 261                                "else " \
 262                                        "echo WARN: Cannot load the DT; " \
 263                                "fi; " \
 264                        "fi; " \
 265                "else " \
 266                        "bootz; " \
 267                "fi;\0" \
 268        "netargs=setenv bootargs console=${console_mainline},${baudrate} " \
 269                "root=/dev/nfs " \
 270                "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
 271        "netboot=echo Booting from net ...; " \
 272                "run netargs; " \
 273                "if test ${ip_dyn} = yes; then " \
 274                        "setenv get_cmd dhcp; " \
 275                "else " \
 276                        "setenv get_cmd tftp; " \
 277                "fi; " \
 278                "${get_cmd} ${image}; " \
 279                "if test ${boot_fdt} = yes; then " \
 280                        "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
 281                                "bootz ${loadaddr} - ${fdt_addr}; " \
 282                        "else " \
 283                                "if test ${boot_fdt} = try; then " \
 284                                        "bootz; " \
 285                                "else " \
 286                                        "echo WARN: Cannot load the DT; " \
 287                                "fi;" \
 288                        "fi; " \
 289                "else " \
 290                        "bootz; " \
 291                "fi;\0"
 292
 293#define CONFIG_BOOTCOMMAND \
 294        "mmc dev ${mmcdev}; if mmc rescan; then " \
 295                "if run loadbootscript; then " \
 296                        "run bootscript; " \
 297                "else " \
 298                        "if run loadimage; then " \
 299                                "run mmcboot; " \
 300                        "else run netboot; " \
 301                        "fi; " \
 302                "fi; " \
 303        "else run netboot; fi"
 304
 305/* The rest of the configuration is shared */
 306#include <configs/mxs.h>
 307
 308#endif /* __CONFIGS_MX28EVK_H__ */
 309