10176d43eSStelian Pop /* 20176d43eSStelian Pop * (C) Copyright 2007-2008 3c9e798d3SStelian Pop * Stelian Pop <stelian@popies.net> 40176d43eSStelian Pop * Lead Tech Design <www.leadtechdesign.com> 50176d43eSStelian Pop * 6df486b1fSNicolas Ferre * Configuation settings for the AT91SAM9260EK & AT91SAM9G20EK boards. 70176d43eSStelian Pop * 81a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 90176d43eSStelian Pop */ 100176d43eSStelian Pop 110176d43eSStelian Pop #ifndef __CONFIG_H 120176d43eSStelian Pop #define __CONFIG_H 130176d43eSStelian Pop 148c6407fcSReinhard Meyer /* 158c6407fcSReinhard Meyer * SoC must be defined first, before hardware.h is included. 168c6407fcSReinhard Meyer * In this case SoC is defined in boards.cfg. 178c6407fcSReinhard Meyer */ 188c6407fcSReinhard Meyer #include <asm/hardware.h> 190176d43eSStelian Pop 200176d43eSStelian Pop /* 218c6407fcSReinhard Meyer * Warning: changing CONFIG_SYS_TEXT_BASE requires 228c6407fcSReinhard Meyer * adapting the initial boot program. 238c6407fcSReinhard Meyer * Since the linker has to swallow that define, we must use a pure 248c6407fcSReinhard Meyer * hex number here! 250176d43eSStelian Pop */ 268c6407fcSReinhard Meyer #define CONFIG_SYS_TEXT_BASE 0x21f00000 278c6407fcSReinhard Meyer 288c6407fcSReinhard Meyer /* ARM asynchronous clock */ 298c6407fcSReinhard Meyer #define CONFIG_SYS_AT91_SLOW_CLOCK 32768 /* slow clock xtal */ 308c6407fcSReinhard Meyer #define CONFIG_SYS_AT91_MAIN_CLOCK 18432000 /* main clock xtal */ 318c6407fcSReinhard Meyer 328c6407fcSReinhard Meyer /* Define actual evaluation board type from used processor type */ 338c6407fcSReinhard Meyer #ifdef CONFIG_AT91SAM9G20 348c6407fcSReinhard Meyer # define CONFIG_AT91SAM9G20EK /* It's an Atmel AT91SAM9G20 EK */ 358c6407fcSReinhard Meyer #else 368c6407fcSReinhard Meyer # define CONFIG_AT91SAM9260EK /* It's an Atmel AT91SAM9260 EK */ 378c6407fcSReinhard Meyer #endif 388c6407fcSReinhard Meyer 398c6407fcSReinhard Meyer /* Misc CPU related */ 408c6407fcSReinhard Meyer #define CONFIG_ARCH_CPU_INIT 418c6407fcSReinhard Meyer #define CONFIG_CMDLINE_TAG /* enable passing of ATAGs */ 428c6407fcSReinhard Meyer #define CONFIG_SETUP_MEMORY_TAGS 438c6407fcSReinhard Meyer #define CONFIG_INITRD_TAG 448c6407fcSReinhard Meyer #define CONFIG_SKIP_LOWLEVEL_INIT 458c6407fcSReinhard Meyer #define CONFIG_BOARD_EARLY_INIT_F 468c6407fcSReinhard Meyer #define CONFIG_DISPLAY_CPUINFO 478c6407fcSReinhard Meyer 48f9129fe3SNicolas Ferre #define CONFIG_CMD_BOOTZ 4936873e7dSNicolas Ferre #define CONFIG_OF_LIBFDT 5036873e7dSNicolas Ferre 5159158ba3SBo Shen #define CONFIG_SYS_GENERIC_BOARD 5259158ba3SBo Shen 538c6407fcSReinhard Meyer /* general purpose I/O */ 548c6407fcSReinhard Meyer #define CONFIG_ATMEL_LEGACY /* required until (g)pio is fixed */ 558c6407fcSReinhard Meyer #define CONFIG_AT91_GPIO 568c6407fcSReinhard Meyer #define CONFIG_AT91_GPIO_PULLUP 1 /* keep pullups on peripheral pins */ 578c6407fcSReinhard Meyer 588c6407fcSReinhard Meyer /* serial console */ 598c6407fcSReinhard Meyer #define CONFIG_ATMEL_USART 608c6407fcSReinhard Meyer #define CONFIG_USART_BASE ATMEL_BASE_DBGU 618c6407fcSReinhard Meyer #define CONFIG_USART_ID ATMEL_ID_SYS 628c6407fcSReinhard Meyer #define CONFIG_BAUDRATE 115200 630176d43eSStelian Pop 64a484b00bSJean-Christophe PLAGNIOL-VILLARD /* LED */ 65a484b00bSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_AT91_LED 66a484b00bSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_RED_LED AT91_PIN_PA9 /* this is the power led */ 67a484b00bSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_GREEN_LED AT91_PIN_PA6 /* this is the user led */ 68a484b00bSJean-Christophe PLAGNIOL-VILLARD 690176d43eSStelian Pop #define CONFIG_BOOTDELAY 3 700176d43eSStelian Pop 710176d43eSStelian Pop /* 720176d43eSStelian Pop * BOOTP options 730176d43eSStelian Pop */ 740176d43eSStelian Pop #define CONFIG_BOOTP_BOOTFILESIZE 1 750176d43eSStelian Pop #define CONFIG_BOOTP_BOOTPATH 1 760176d43eSStelian Pop #define CONFIG_BOOTP_GATEWAY 1 770176d43eSStelian Pop #define CONFIG_BOOTP_HOSTNAME 1 780176d43eSStelian Pop 790176d43eSStelian Pop /* 800176d43eSStelian Pop * Command line configuration. 810176d43eSStelian Pop */ 820176d43eSStelian Pop #include <config_cmd_default.h> 830176d43eSStelian Pop #undef CONFIG_CMD_BDI 840176d43eSStelian Pop #undef CONFIG_CMD_FPGA 8574de7aefSWolfgang Denk #undef CONFIG_CMD_IMI 860176d43eSStelian Pop #undef CONFIG_CMD_IMLS 8774de7aefSWolfgang Denk #undef CONFIG_CMD_LOADS 8874de7aefSWolfgang Denk #undef CONFIG_CMD_SOURCE 890176d43eSStelian Pop 900176d43eSStelian Pop #define CONFIG_CMD_PING 1 910176d43eSStelian Pop #define CONFIG_CMD_DHCP 1 920176d43eSStelian Pop #define CONFIG_CMD_NAND 1 93a73267a7SWu, Josh #define CONFIG_CMD_FAT 940176d43eSStelian Pop #define CONFIG_CMD_USB 1 950176d43eSStelian Pop 968c6407fcSReinhard Meyer /* 978c6407fcSReinhard Meyer * SDRAM: 1 bank, min 32, max 128 MB 988c6407fcSReinhard Meyer * Initialized before u-boot gets started. 998c6407fcSReinhard Meyer */ 1000176d43eSStelian Pop #define CONFIG_NR_DRAM_BANKS 1 1018c6407fcSReinhard Meyer #define CONFIG_SYS_SDRAM_BASE ATMEL_BASE_CS1 1028c6407fcSReinhard Meyer #define CONFIG_SYS_SDRAM_SIZE 0x04000000 1038c6407fcSReinhard Meyer 1048c6407fcSReinhard Meyer /* 1058c6407fcSReinhard Meyer * Initial stack pointer: 4k - GENERATED_GBL_DATA_SIZE in internal SRAM, 1068c6407fcSReinhard Meyer * leaving the correct space for initial global data structure above 1078c6407fcSReinhard Meyer * that address while providing maximum stack area below. 1088c6407fcSReinhard Meyer */ 1098c6407fcSReinhard Meyer #ifdef CONFIG_AT91SAM9XE 1108c6407fcSReinhard Meyer # define CONFIG_SYS_INIT_SP_ADDR \ 1118c6407fcSReinhard Meyer (ATMEL_BASE_SRAM + 0x1000 - GENERATED_GBL_DATA_SIZE) 1128c6407fcSReinhard Meyer #else 1138c6407fcSReinhard Meyer # define CONFIG_SYS_INIT_SP_ADDR \ 1148c6407fcSReinhard Meyer (ATMEL_BASE_SRAM1 + 0x1000 - GENERATED_GBL_DATA_SIZE) 1158c6407fcSReinhard Meyer #endif 1160176d43eSStelian Pop 117d0a51373SAndreas Bießmann /* 118d0a51373SAndreas Bießmann * The (arm)linux board id set by generic code depending on configured board 119d0a51373SAndreas Bießmann * (see boards.cfg for different boards) 120d0a51373SAndreas Bießmann */ 121d0a51373SAndreas Bießmann #ifdef CONFIG_AT91SAM9G20 122d0a51373SAndreas Bießmann /* the sam9g20 variants have two different board ids */ 123d0a51373SAndreas Bießmann # ifdef CONFIG_AT91SAM9G20EK_2MMC 124d0a51373SAndreas Bießmann /* we may be setup for the 2MMC variant of at91sam9g20ek */ 125d0a51373SAndreas Bießmann # define CONFIG_MACH_TYPE MACH_TYPE_AT91SAM9G20EK_2MMC 126d0a51373SAndreas Bießmann # else 127d0a51373SAndreas Bießmann /* or the normal at91sam9g20ek */ 128d0a51373SAndreas Bießmann # define CONFIG_MACH_TYPE MACH_TYPE_AT91SAM9G20EK 129d0a51373SAndreas Bießmann # endif 130d0a51373SAndreas Bießmann #else 131d0a51373SAndreas Bießmann /* otherwise default to good old at91sam9260ek */ 132d0a51373SAndreas Bießmann # define CONFIG_MACH_TYPE MACH_TYPE_AT91SAM9260EK 133d0a51373SAndreas Bießmann #endif 134d0a51373SAndreas Bießmann 1358495faf5SBo Shen #ifndef CONFIG_AT91SAM9G20EK_2MMC 136*f5702d7dSWu, Josh /* DataFlash */ 1374758ebddSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ATMEL_DATAFLASH_SPI 1380176d43eSStelian Pop #define CONFIG_HAS_DATAFLASH 1 1396d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_MAX_DATAFLASH_BANKS 2 1406d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 0xC0000000 /* CS0 */ 1416d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 0xD0000000 /* CS1 */ 14279f0cb6eSStelian Pop #define AT91_SPI_CLK 15000000 143*f5702d7dSWu, Josh #else 144*f5702d7dSWu, Josh /* Enable MMC. The MCCK is conflicted with DataFlash */ 145*f5702d7dSWu, Josh #define CONFIG_CMD_MMC 1468495faf5SBo Shen #endif 147df486b1fSNicolas Ferre 148df486b1fSNicolas Ferre #ifdef CONFIG_AT91SAM9G20EK 149df486b1fSNicolas Ferre #define DATAFLASH_TCSS (0x22 << 16) 150df486b1fSNicolas Ferre #else 1510176d43eSStelian Pop #define DATAFLASH_TCSS (0x1a << 16) 152df486b1fSNicolas Ferre #endif 1530176d43eSStelian Pop #define DATAFLASH_TCHS (0x1 << 24) 1540176d43eSStelian Pop 1550176d43eSStelian Pop /* NAND flash */ 15674c076d6SJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_CMD_NAND 15774c076d6SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_NAND_ATMEL 1586d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_MAX_NAND_DEVICE 1 1598c6407fcSReinhard Meyer #define CONFIG_SYS_NAND_BASE ATMEL_BASE_CS3 1608c6407fcSReinhard Meyer #define CONFIG_SYS_NAND_DBW_8 16174c076d6SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_NAND_MASK_ALE (1 << 21) 16274c076d6SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_NAND_MASK_CLE (1 << 22) 16374c076d6SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_NAND_ENABLE_PIN AT91_PIN_PC14 16474c076d6SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PC13 16574c076d6SJean-Christophe PLAGNIOL-VILLARD #endif 1660176d43eSStelian Pop 167a73267a7SWu, Josh /* MMC */ 168a73267a7SWu, Josh #ifdef CONFIG_CMD_MMC 169a73267a7SWu, Josh #define CONFIG_MMC 170a73267a7SWu, Josh #define CONFIG_GENERIC_MMC 171a73267a7SWu, Josh #define CONFIG_GENERIC_ATMEL_MCI 172a73267a7SWu, Josh #endif 173a73267a7SWu, Josh 174a73267a7SWu, Josh /* FAT */ 175a73267a7SWu, Josh #ifdef CONFIG_CMD_FAT 176a73267a7SWu, Josh #define CONFIG_DOS_PARTITION 177a73267a7SWu, Josh #endif 178a73267a7SWu, Josh 1790176d43eSStelian Pop /* NOR flash - no real flash on this board */ 1806d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_NO_FLASH 1 1810176d43eSStelian Pop 1820176d43eSStelian Pop /* Ethernet */ 1830176d43eSStelian Pop #define CONFIG_MACB 1 1840176d43eSStelian Pop #define CONFIG_RMII 1 1850176d43eSStelian Pop #define CONFIG_NET_RETRY_COUNT 20 1860176d43eSStelian Pop #define CONFIG_RESET_PHY_R 1 1874535a24cSHeiko Schocher #define CONFIG_AT91_WANTS_COMMON_PHY 1880176d43eSStelian Pop 1890176d43eSStelian Pop /* USB */ 1902b7178afSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_USB_ATMEL 191dcd2f1a0SBo Shen #define CONFIG_USB_ATMEL_CLK_SEL_PLLB 1920176d43eSStelian Pop #define CONFIG_USB_OHCI_NEW 1 1936d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_USB_OHCI_CPU_INIT 1 1946d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_USB_OHCI_REGS_BASE 0x00500000 /* AT91SAM9260_UHP_BASE */ 1956d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_USB_OHCI_SLOT_NAME "at91sam9260" 1966d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2 1970176d43eSStelian Pop #define CONFIG_USB_STORAGE 1 1980176d43eSStelian Pop 1996d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_LOAD_ADDR 0x22000000 /* load address */ 2000176d43eSStelian Pop 2018c6407fcSReinhard Meyer #define CONFIG_SYS_MEMTEST_START CONFIG_SYS_SDRAM_BASE 2026d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_MEMTEST_END 0x23e00000 2030176d43eSStelian Pop 2046d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_SYS_USE_DATAFLASH_CS0 2050176d43eSStelian Pop 2060176d43eSStelian Pop /* bootstrap + u-boot + env + linux in dataflash on CS0 */ 207057c849cSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ENV_IS_IN_DATAFLASH 1 2086d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_MONITOR_BASE (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400) 2090e8d1586SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ENV_OFFSET 0x4200 2106d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ENV_ADDR (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + CONFIG_ENV_OFFSET) 2110e8d1586SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ENV_SIZE 0x4200 212e139cb31SAlexandre Belloni #define CONFIG_BOOTCOMMAND "cp.b 0xC0084000 0x22000000 0x210000; bootm" 21396996ac2SStelian Pop #define CONFIG_BOOTARGS "console=ttyS0,115200 " \ 21496996ac2SStelian Pop "root=/dev/mtdblock0 " \ 215918319c7SAlbin Tonnerre "mtdparts=atmel_nand:-(root) " \ 21696996ac2SStelian Pop "rw rootfstype=jffs2" 2170176d43eSStelian Pop 2186d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #elif CONFIG_SYS_USE_DATAFLASH_CS1 2190176d43eSStelian Pop 2200176d43eSStelian Pop /* bootstrap + u-boot + env + linux in dataflash on CS1 */ 221057c849cSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ENV_IS_IN_DATAFLASH 1 2226d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_MONITOR_BASE (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 + 0x8400) 2230e8d1586SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ENV_OFFSET 0x4200 2246d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ENV_ADDR (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 + CONFIG_ENV_OFFSET) 2250e8d1586SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ENV_SIZE 0x4200 226e139cb31SAlexandre Belloni #define CONFIG_BOOTCOMMAND "cp.b 0xD0084000 0x22000000 0x210000; bootm" 22796996ac2SStelian Pop #define CONFIG_BOOTARGS "console=ttyS0,115200 " \ 22896996ac2SStelian Pop "root=/dev/mtdblock0 " \ 229918319c7SAlbin Tonnerre "mtdparts=atmel_nand:-(root) " \ 23096996ac2SStelian Pop "rw rootfstype=jffs2" 2310176d43eSStelian Pop 23224802073SWu, Josh #elif defined(CONFIG_SYS_USE_NANDFLASH) 2330176d43eSStelian Pop 2340176d43eSStelian Pop /* bootstrap + u-boot + env + linux in nandflash */ 23551bfee19SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ENV_IS_IN_NAND 1 2360c58cfa9SBo Shen #define CONFIG_ENV_OFFSET 0xc0000 2370c58cfa9SBo Shen #define CONFIG_ENV_OFFSET_REDUND 0x100000 2380e8d1586SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ENV_SIZE 0x20000 /* 1 sector = 128 kB */ 2390c58cfa9SBo Shen #define CONFIG_BOOTCOMMAND "nand read 0x22000000 0x200000 0x300000; bootm" 2400c58cfa9SBo Shen #define CONFIG_BOOTARGS \ 2410c58cfa9SBo Shen "console=ttyS0,115200 earlyprintk " \ 2420c58cfa9SBo Shen "mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro," \ 2430c58cfa9SBo Shen "256k(env),256k(env_redundant),256k(spare)," \ 2440c58cfa9SBo Shen "512k(dtb),6M(kernel)ro,-(rootfs) " \ 2450c58cfa9SBo Shen "root=/dev/mtdblock7 rw rootfstype=jffs2" 2460176d43eSStelian Pop 24724802073SWu, Josh #else /* CONFIG_SYS_USE_MMC */ 24824802073SWu, Josh /* bootstrap + u-boot + env + linux in mmc */ 24924802073SWu, Josh #define CONFIG_ENV_IS_IN_MMC 25024802073SWu, Josh /* For FAT system, most cases it should be in the reserved sector */ 25124802073SWu, Josh #define CONFIG_ENV_OFFSET 0x2000 25224802073SWu, Josh #define CONFIG_ENV_SIZE 0x1000 25324802073SWu, Josh #define CONFIG_SYS_MMC_ENV_DEV 0 25424802073SWu, Josh 25524802073SWu, Josh #define CONFIG_BOOTCOMMAND \ 25624802073SWu, Josh "fatload mmc 0:1 0x22000000 uImage; bootm" 25724802073SWu, Josh #define CONFIG_BOOTARGS \ 25824802073SWu, Josh "console=ttyS0,115200 earlyprintk " \ 25924802073SWu, Josh "mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro," \ 26024802073SWu, Josh "256k(env),256k(env_redundant),256k(spare)," \ 26124802073SWu, Josh "512k(dtb),6M(kernel)ro,-(rootfs) " \ 26224802073SWu, Josh "root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait" 2630176d43eSStelian Pop #endif 2640176d43eSStelian Pop 2656d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_PROMPT "U-Boot> " 2666d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_CBSIZE 256 2676d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_MAXARGS 16 2686d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16) 2696d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_LONGHELP 1 2700176d43eSStelian Pop #define CONFIG_CMDLINE_EDITING 1 271e139cb31SAlexandre Belloni #define CONFIG_AUTO_COMPLETE 2720176d43eSStelian Pop 2730176d43eSStelian Pop /* 2740176d43eSStelian Pop * Size of malloc() pool 2750176d43eSStelian Pop */ 2766d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_MALLOC_LEN ROUND(3 * CONFIG_ENV_SIZE + 128*1024, 0x1000) 2770176d43eSStelian Pop 2780176d43eSStelian Pop #endif 279