13b5df50eSHeiko Schocher /* 23b5df50eSHeiko Schocher * (C) Copyright 2007-2008 33b5df50eSHeiko Schocher * Stelian Pop <stelian@popies.net> 43b5df50eSHeiko Schocher * Lead Tech Design <www.leadtechdesign.com> 53b5df50eSHeiko Schocher * 63b5df50eSHeiko Schocher * (C) Copyright 2010 73b5df50eSHeiko Schocher * Achim Ehrlich <aehrlich@taskit.de> 83b5df50eSHeiko Schocher * taskit GmbH <www.taskit.de> 93b5df50eSHeiko Schocher * 103b5df50eSHeiko Schocher * (C) Copyright 2012 113b5df50eSHeiko Schocher * Markus Hubig <mhubig@imko.de> 123b5df50eSHeiko Schocher * IMKO GmbH <www.imko.de> 133b5df50eSHeiko Schocher * 143b5df50eSHeiko Schocher * (C) Copyright 2014 153b5df50eSHeiko Schocher * Heiko Schocher <hs@denx.de> 163b5df50eSHeiko Schocher * DENX Software Engineering GmbH 173b5df50eSHeiko Schocher * 183b5df50eSHeiko Schocher * Configuation settings for the smartweb. 193b5df50eSHeiko Schocher * 203b5df50eSHeiko Schocher * SPDX-License-Identifier: GPL-2.0+ 213b5df50eSHeiko Schocher */ 223b5df50eSHeiko Schocher 233b5df50eSHeiko Schocher #ifndef __CONFIG_H 243b5df50eSHeiko Schocher #define __CONFIG_H 253b5df50eSHeiko Schocher 263b5df50eSHeiko Schocher /* 273b5df50eSHeiko Schocher * SoC must be defined first, before hardware.h is included. 283b5df50eSHeiko Schocher * In this case SoC is defined in boards.cfg. 293b5df50eSHeiko Schocher */ 303b5df50eSHeiko Schocher #include <asm/hardware.h> 31e8b81eefSHeiko Schocher #include <linux/sizes.h> 323b5df50eSHeiko Schocher 333b5df50eSHeiko Schocher /* 343b5df50eSHeiko Schocher * Warning: changing CONFIG_SYS_TEXT_BASE requires adapting the initial boot 353b5df50eSHeiko Schocher * program. Since the linker has to swallow that define, we must use a pure 363b5df50eSHeiko Schocher * hex number here! 373b5df50eSHeiko Schocher */ 383b5df50eSHeiko Schocher #define CONFIG_SYS_TEXT_BASE 0x23000000 393b5df50eSHeiko Schocher 403b5df50eSHeiko Schocher /* ARM asynchronous clock */ 413b5df50eSHeiko Schocher #define CONFIG_SYS_AT91_SLOW_CLOCK 32768 /* slow clock xtal */ 423b5df50eSHeiko Schocher #define CONFIG_SYS_AT91_MAIN_CLOCK 18432000 /* 18.432MHz crystal */ 433b5df50eSHeiko Schocher 443b5df50eSHeiko Schocher /* misc settings */ 453b5df50eSHeiko Schocher #define CONFIG_CMDLINE_TAG /* pass commandline to Kernel */ 463b5df50eSHeiko Schocher #define CONFIG_SETUP_MEMORY_TAGS /* pass memory defs to kernel */ 473b5df50eSHeiko Schocher #define CONFIG_INITRD_TAG /* pass initrd param to kernel */ 4813ee7890SHeiko Schocher #define CONFIG_SKIP_LOWLEVEL_INIT_ONLY /* U-Boot is loaded by a bootloader */ 493b5df50eSHeiko Schocher 50b96fd825SMatthias Michel /* We set the max number of command args high to avoid HUSH bugs. */ 51b96fd825SMatthias Michel #define CONFIG_SYS_MAXARGS 32 52b96fd825SMatthias Michel 533b5df50eSHeiko Schocher /* setting board specific options */ 54*94ba26f2STom Rini #define CONFIG_MACH_TYPE MACH_TYPE_SMARTWEB 553b5df50eSHeiko Schocher #define CONFIG_AUTO_COMPLETE 56b96fd825SMatthias Michel #define CONFIG_ENV_OVERWRITE 1 /* Overwrite ethaddr / serial# */ 57b96fd825SMatthias Michel #define CONFIG_AUTO_COMPLETE 58b96fd825SMatthias Michel #define CONFIG_SYS_AUTOLOAD "yes" 59b96fd825SMatthias Michel #define CONFIG_RESET_TO_RETRY 603b5df50eSHeiko Schocher 613b5df50eSHeiko Schocher /* The LED PINs */ 623b5df50eSHeiko Schocher #define CONFIG_RED_LED AT91_PIN_PA9 633b5df50eSHeiko Schocher #define CONFIG_GREEN_LED AT91_PIN_PA6 643b5df50eSHeiko Schocher 653b5df50eSHeiko Schocher /* 663b5df50eSHeiko Schocher * SDRAM: 1 bank, 64 MB, base address 0x20000000 673b5df50eSHeiko Schocher * Already initialized before u-boot gets started. 683b5df50eSHeiko Schocher */ 693b5df50eSHeiko Schocher #define CONFIG_NR_DRAM_BANKS 1 703b5df50eSHeiko Schocher #define CONFIG_SYS_SDRAM_BASE ATMEL_BASE_CS1 71e8b81eefSHeiko Schocher #define CONFIG_SYS_SDRAM_SIZE (64 * SZ_1M) 723b5df50eSHeiko Schocher 733b5df50eSHeiko Schocher /* 743b5df50eSHeiko Schocher * Perform a SDRAM Memtest from the start of SDRAM 753b5df50eSHeiko Schocher * till the beginning of the U-Boot position in RAM. 763b5df50eSHeiko Schocher */ 773b5df50eSHeiko Schocher #define CONFIG_SYS_MEMTEST_START CONFIG_SYS_SDRAM_BASE 783b5df50eSHeiko Schocher #define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_TEXT_BASE - 0x100000) 793b5df50eSHeiko Schocher 803b5df50eSHeiko Schocher /* Size of malloc() pool */ 813b5df50eSHeiko Schocher #define CONFIG_SYS_MALLOC_LEN \ 82e8b81eefSHeiko Schocher ROUND(3 * CONFIG_ENV_SIZE + (4 * SZ_1M), 0x1000) 833b5df50eSHeiko Schocher 843b5df50eSHeiko Schocher /* NAND flash settings */ 853b5df50eSHeiko Schocher #define CONFIG_SYS_MAX_NAND_DEVICE 1 863b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_BASE ATMEL_BASE_CS3 873b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_DBW_8 883b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_MASK_ALE (1 << 21) 893b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_MASK_CLE (1 << 22) 903b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_ENABLE_PIN AT91_PIN_PC14 913b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PC13 923b5df50eSHeiko Schocher 933b5df50eSHeiko Schocher /* general purpose I/O */ 943b5df50eSHeiko Schocher #define CONFIG_ATMEL_LEGACY /* required until (g)pio is fixed */ 953b5df50eSHeiko Schocher #define CONFIG_AT91_GPIO /* enable the GPIO features */ 963b5df50eSHeiko Schocher #define CONFIG_AT91_GPIO_PULLUP 1 /* keep pullups on peripheral pins */ 973b5df50eSHeiko Schocher 983b5df50eSHeiko Schocher /* serial console */ 993b5df50eSHeiko Schocher #define CONFIG_ATMEL_USART 1003b5df50eSHeiko Schocher #define CONFIG_USART_BASE ATMEL_BASE_DBGU 1013b5df50eSHeiko Schocher #define CONFIG_USART_ID ATMEL_ID_SYS 1023b5df50eSHeiko Schocher 1033b5df50eSHeiko Schocher /* 1043b5df50eSHeiko Schocher * Ethernet configuration 1053b5df50eSHeiko Schocher * 1063b5df50eSHeiko Schocher */ 1073b5df50eSHeiko Schocher #define CONFIG_MACB 1083b5df50eSHeiko Schocher #define CONFIG_RMII /* use reduced MII inteface */ 1093b5df50eSHeiko Schocher #define CONFIG_NET_RETRY_COUNT 20 /* # of DHCP/BOOTP retries */ 1103b5df50eSHeiko Schocher #define CONFIG_AT91_WANTS_COMMON_PHY 1113b5df50eSHeiko Schocher 1123b5df50eSHeiko Schocher /* BOOTP and DHCP options */ 1133b5df50eSHeiko Schocher #define CONFIG_BOOTP_BOOTFILESIZE 1143b5df50eSHeiko Schocher #define CONFIG_BOOTP_BOOTPATH 1153b5df50eSHeiko Schocher #define CONFIG_BOOTP_GATEWAY 1163b5df50eSHeiko Schocher #define CONFIG_BOOTP_HOSTNAME 1173b5df50eSHeiko Schocher #define CONFIG_NFSBOOTCOMMAND \ 1183b5df50eSHeiko Schocher "setenv autoload yes; setenv autoboot yes; " \ 1193b5df50eSHeiko Schocher "setenv bootargs ${basicargs} ${mtdparts} " \ 1203b5df50eSHeiko Schocher "root=/dev/nfs ip=dhcp nfsroot=${serverip}:/srv/nfs/rootfs; " \ 1213b5df50eSHeiko Schocher "dhcp" 1223b5df50eSHeiko Schocher 1233b5df50eSHeiko Schocher /* Enable the watchdog */ 1243b5df50eSHeiko Schocher #define CONFIG_AT91SAM9_WATCHDOG 1253b5df50eSHeiko Schocher #if !defined(CONFIG_SPL_BUILD) 1263b5df50eSHeiko Schocher #define CONFIG_HW_WATCHDOG 1273b5df50eSHeiko Schocher #endif 1283b5df50eSHeiko Schocher #define CONFIG_AT91_HW_WDT_TIMEOUT 15 1293b5df50eSHeiko Schocher 1303b5df50eSHeiko Schocher #if !defined(CONFIG_SPL_BUILD) 1313b5df50eSHeiko Schocher /* USB configuration */ 1323b5df50eSHeiko Schocher #define CONFIG_USB_ATMEL 1333b5df50eSHeiko Schocher #define CONFIG_USB_ATMEL_CLK_SEL_PLLB 1343b5df50eSHeiko Schocher #define CONFIG_USB_OHCI_NEW 1353b5df50eSHeiko Schocher #define CONFIG_SYS_USB_OHCI_CPU_INIT 1363b5df50eSHeiko Schocher #define CONFIG_SYS_USB_OHCI_REGS_BASE ATMEL_UHP_BASE 1373b5df50eSHeiko Schocher #define CONFIG_SYS_USB_OHCI_SLOT_NAME "at91sam9260" 1383b5df50eSHeiko Schocher #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2 139e8b81eefSHeiko Schocher 140e8b81eefSHeiko Schocher /* USB DFU support */ 141e8b81eefSHeiko Schocher 142e8b81eefSHeiko Schocher #define CONFIG_USB_GADGET_AT91 143e8b81eefSHeiko Schocher 144e8b81eefSHeiko Schocher /* DFU class support */ 145e8b81eefSHeiko Schocher #define CONFIG_SYS_DFU_DATA_BUF_SIZE SZ_1M 146e8b81eefSHeiko Schocher #define DFU_MANIFEST_POLL_TIMEOUT 25000 1473b5df50eSHeiko Schocher #endif 1483b5df50eSHeiko Schocher 1493b5df50eSHeiko Schocher /* General Boot Parameter */ 1503b5df50eSHeiko Schocher #define CONFIG_BOOTCOMMAND "run flashboot" 1513b5df50eSHeiko Schocher #define CONFIG_SYS_CBSIZE 512 1523b5df50eSHeiko Schocher #define CONFIG_SYS_LONGHELP 1533b5df50eSHeiko Schocher #define CONFIG_CMDLINE_EDITING 1543b5df50eSHeiko Schocher 1553b5df50eSHeiko Schocher /* 1563b5df50eSHeiko Schocher * RAM Memory address where to put the 1573b5df50eSHeiko Schocher * Linux Kernel befor starting. 1583b5df50eSHeiko Schocher */ 1593b5df50eSHeiko Schocher #define CONFIG_SYS_LOAD_ADDR 0x22000000 1603b5df50eSHeiko Schocher 1613b5df50eSHeiko Schocher /* 1623b5df50eSHeiko Schocher * The NAND Flash partitions: 1633b5df50eSHeiko Schocher */ 1643b5df50eSHeiko Schocher #define CONFIG_ENV_OFFSET (0x100000) 1653b5df50eSHeiko Schocher #define CONFIG_ENV_OFFSET_REDUND (0x180000) 166e8b81eefSHeiko Schocher #define CONFIG_ENV_RANGE (SZ_512K) 167e8b81eefSHeiko Schocher #define CONFIG_ENV_SIZE (SZ_128K) 1683b5df50eSHeiko Schocher 1693b5df50eSHeiko Schocher /* 1703b5df50eSHeiko Schocher * Predefined environment variables. 1713b5df50eSHeiko Schocher * Usefull to define some easy to use boot commands. 1723b5df50eSHeiko Schocher */ 1733b5df50eSHeiko Schocher #define CONFIG_EXTRA_ENV_SETTINGS \ 1743b5df50eSHeiko Schocher \ 1753b5df50eSHeiko Schocher "basicargs=console=ttyS0,115200\0" \ 1763b5df50eSHeiko Schocher \ 1773b5df50eSHeiko Schocher "mtdparts="MTDPARTS_DEFAULT"\0" 1783b5df50eSHeiko Schocher 1793b5df50eSHeiko Schocher #ifdef CONFIG_SPL_BUILD 1803b5df50eSHeiko Schocher #define CONFIG_SYS_INIT_SP_ADDR 0x301000 1813b5df50eSHeiko Schocher #define CONFIG_SPL_STACK_R 1823b5df50eSHeiko Schocher #define CONFIG_SPL_STACK_R_ADDR CONFIG_SYS_TEXT_BASE 1833b5df50eSHeiko Schocher #else 1843b5df50eSHeiko Schocher /* 1853b5df50eSHeiko Schocher * Initial stack pointer: 4k - GENERATED_GBL_DATA_SIZE in internal SRAM, 1863b5df50eSHeiko Schocher * leaving the correct space for initial global data structure above that 1873b5df50eSHeiko Schocher * address while providing maximum stack area below. 1883b5df50eSHeiko Schocher */ 1893b5df50eSHeiko Schocher #define CONFIG_SYS_INIT_SP_ADDR \ 1903b5df50eSHeiko Schocher (ATMEL_BASE_SRAM1 + 0x1000 - GENERATED_GBL_DATA_SIZE) 1913b5df50eSHeiko Schocher #endif 1923b5df50eSHeiko Schocher 1933b5df50eSHeiko Schocher /* Defines for SPL */ 1943b5df50eSHeiko Schocher #define CONFIG_SPL_FRAMEWORK 1953b5df50eSHeiko Schocher #define CONFIG_SPL_TEXT_BASE 0x0 196e8b81eefSHeiko Schocher #define CONFIG_SPL_MAX_SIZE (SZ_4K) 1973b5df50eSHeiko Schocher 1983b5df50eSHeiko Schocher #define CONFIG_SPL_BSS_START_ADDR CONFIG_SYS_SDRAM_BASE 199e8b81eefSHeiko Schocher #define CONFIG_SPL_BSS_MAX_SIZE (SZ_16K) 2003b5df50eSHeiko Schocher #define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SPL_BSS_START_ADDR + \ 2013b5df50eSHeiko Schocher CONFIG_SPL_BSS_MAX_SIZE) 2023b5df50eSHeiko Schocher #define CONFIG_SYS_SPL_MALLOC_SIZE CONFIG_SYS_MALLOC_LEN 2033b5df50eSHeiko Schocher 2043b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_ENABLE_PIN_SPL (2*32 + 14) 2053b5df50eSHeiko Schocher #define CONFIG_SYS_USE_NANDFLASH 1 2063b5df50eSHeiko Schocher #define CONFIG_SPL_NAND_DRIVERS 2073b5df50eSHeiko Schocher #define CONFIG_SPL_NAND_BASE 2083b5df50eSHeiko Schocher #define CONFIG_SPL_NAND_ECC 2093b5df50eSHeiko Schocher #define CONFIG_SPL_NAND_RAW_ONLY 2103b5df50eSHeiko Schocher #define CONFIG_SPL_NAND_SOFTECC 2113b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x20000 212e8b81eefSHeiko Schocher #define CONFIG_SYS_NAND_U_BOOT_SIZE SZ_512K 2133b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_U_BOOT_START CONFIG_SYS_TEXT_BASE 2143b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_U_BOOT_DST CONFIG_SYS_TEXT_BASE 2153b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_5_ADDR_CYCLE 2163b5df50eSHeiko Schocher 217e8b81eefSHeiko Schocher #define CONFIG_SYS_NAND_SIZE (SZ_256M) 218e8b81eefSHeiko Schocher #define CONFIG_SYS_NAND_PAGE_SIZE SZ_2K 219e8b81eefSHeiko Schocher #define CONFIG_SYS_NAND_BLOCK_SIZE (SZ_128K) 2203b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_PAGE_COUNT (CONFIG_SYS_NAND_BLOCK_SIZE / \ 2213b5df50eSHeiko Schocher CONFIG_SYS_NAND_PAGE_SIZE) 2223b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_BAD_BLOCK_POS NAND_LARGE_BADBLOCK_POS 2233b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_ECCSIZE 256 2243b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_ECCBYTES 3 2253b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_OOBSIZE 64 2263b5df50eSHeiko Schocher #define CONFIG_SYS_NAND_ECCPOS { 40, 41, 42, 43, 44, 45, 46, 47, \ 2273b5df50eSHeiko Schocher 48, 49, 50, 51, 52, 53, 54, 55, \ 2283b5df50eSHeiko Schocher 56, 57, 58, 59, 60, 61, 62, 63, } 2293b5df50eSHeiko Schocher 2303b5df50eSHeiko Schocher #define CONFIG_SPL_ATMEL_SIZE 2313b5df50eSHeiko Schocher #define CONFIG_SYS_MASTER_CLOCK (198656000/2) 2323b5df50eSHeiko Schocher #define AT91_PLL_LOCK_TIMEOUT 1000000 2333b5df50eSHeiko Schocher #define CONFIG_SYS_AT91_PLLA 0x2060bf09 2343b5df50eSHeiko Schocher #define CONFIG_SYS_MCKR 0x100 2353b5df50eSHeiko Schocher #define CONFIG_SYS_MCKR_CSS (0x02 | CONFIG_SYS_MCKR) 2363b5df50eSHeiko Schocher #define CONFIG_SYS_AT91_PLLB 0x10483f0e 2373b5df50eSHeiko Schocher 2383b5df50eSHeiko Schocher #if defined(CONFIG_SPL_BUILD) 2393b5df50eSHeiko Schocher #define CONFIG_SYS_ICACHE_OFF 2403b5df50eSHeiko Schocher #define CONFIG_SYS_DCACHE_OFF 2413b5df50eSHeiko Schocher #endif 2423b5df50eSHeiko Schocher #endif /* __CONFIG_H */ 243