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 468c6407fcSReinhard Meyer /* general purpose I/O */ 478c6407fcSReinhard Meyer #define CONFIG_ATMEL_LEGACY /* required until (g)pio is fixed */ 480176d43eSStelian Pop 490176d43eSStelian Pop /* 500176d43eSStelian Pop * BOOTP options 510176d43eSStelian Pop */ 520176d43eSStelian Pop #define CONFIG_BOOTP_BOOTFILESIZE 1 530176d43eSStelian Pop #define CONFIG_BOOTP_BOOTPATH 1 540176d43eSStelian Pop #define CONFIG_BOOTP_GATEWAY 1 550176d43eSStelian Pop #define CONFIG_BOOTP_HOSTNAME 1 560176d43eSStelian Pop 570176d43eSStelian Pop /* 588c6407fcSReinhard Meyer * SDRAM: 1 bank, min 32, max 128 MB 598c6407fcSReinhard Meyer * Initialized before u-boot gets started. 608c6407fcSReinhard Meyer */ 610176d43eSStelian Pop #define CONFIG_NR_DRAM_BANKS 1 628c6407fcSReinhard Meyer #define CONFIG_SYS_SDRAM_BASE ATMEL_BASE_CS1 638c6407fcSReinhard Meyer #define CONFIG_SYS_SDRAM_SIZE 0x04000000 648c6407fcSReinhard Meyer 658c6407fcSReinhard Meyer /* 668c6407fcSReinhard Meyer * Initial stack pointer: 4k - GENERATED_GBL_DATA_SIZE in internal SRAM, 678c6407fcSReinhard Meyer * leaving the correct space for initial global data structure above 688c6407fcSReinhard Meyer * that address while providing maximum stack area below. 698c6407fcSReinhard Meyer */ 708c6407fcSReinhard Meyer #ifdef CONFIG_AT91SAM9XE 718c6407fcSReinhard Meyer # define CONFIG_SYS_INIT_SP_ADDR \ 7283f1c2efSWenyou Yang (ATMEL_BASE_SRAM + 16 * 1024 - GENERATED_GBL_DATA_SIZE) 738c6407fcSReinhard Meyer #else 748c6407fcSReinhard Meyer # define CONFIG_SYS_INIT_SP_ADDR \ 7583f1c2efSWenyou Yang (ATMEL_BASE_SRAM1 + 16 * 1024 - GENERATED_GBL_DATA_SIZE) 768c6407fcSReinhard Meyer #endif 770176d43eSStelian Pop 78d0a51373SAndreas Bießmann /* 79d0a51373SAndreas Bießmann * The (arm)linux board id set by generic code depending on configured board 80d0a51373SAndreas Bießmann * (see boards.cfg for different boards) 81d0a51373SAndreas Bießmann */ 82d0a51373SAndreas Bießmann #ifdef CONFIG_AT91SAM9G20 83d0a51373SAndreas Bießmann /* the sam9g20 variants have two different board ids */ 84d0a51373SAndreas Bießmann # ifdef CONFIG_AT91SAM9G20EK_2MMC 85d0a51373SAndreas Bießmann /* we may be setup for the 2MMC variant of at91sam9g20ek */ 86d0a51373SAndreas Bießmann # define CONFIG_MACH_TYPE MACH_TYPE_AT91SAM9G20EK_2MMC 87d0a51373SAndreas Bießmann # else 88d0a51373SAndreas Bießmann /* or the normal at91sam9g20ek */ 89d0a51373SAndreas Bießmann # define CONFIG_MACH_TYPE MACH_TYPE_AT91SAM9G20EK 90d0a51373SAndreas Bießmann # endif 91d0a51373SAndreas Bießmann #else 92d0a51373SAndreas Bießmann /* otherwise default to good old at91sam9260ek */ 93d0a51373SAndreas Bießmann # define CONFIG_MACH_TYPE MACH_TYPE_AT91SAM9260EK 94d0a51373SAndreas Bießmann #endif 95d0a51373SAndreas Bießmann 960176d43eSStelian Pop /* NAND flash */ 9774c076d6SJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_CMD_NAND 986d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_MAX_NAND_DEVICE 1 998c6407fcSReinhard Meyer #define CONFIG_SYS_NAND_BASE ATMEL_BASE_CS3 1008c6407fcSReinhard Meyer #define CONFIG_SYS_NAND_DBW_8 10174c076d6SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_NAND_MASK_ALE (1 << 21) 10274c076d6SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_NAND_MASK_CLE (1 << 22) 10374c076d6SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_NAND_ENABLE_PIN AT91_PIN_PC14 10474c076d6SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PC13 10574c076d6SJean-Christophe PLAGNIOL-VILLARD #endif 1060176d43eSStelian Pop 1070176d43eSStelian Pop /* USB */ 1082b7178afSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_USB_ATMEL 109dcd2f1a0SBo Shen #define CONFIG_USB_ATMEL_CLK_SEL_PLLB 1100176d43eSStelian Pop #define CONFIG_USB_OHCI_NEW 1 1116d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_USB_OHCI_CPU_INIT 1 1126d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_USB_OHCI_REGS_BASE 0x00500000 /* AT91SAM9260_UHP_BASE */ 1136d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_USB_OHCI_SLOT_NAME "at91sam9260" 1146d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2 1150176d43eSStelian Pop 1166d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_LOAD_ADDR 0x22000000 /* load address */ 1170176d43eSStelian Pop 1188c6407fcSReinhard Meyer #define CONFIG_SYS_MEMTEST_START CONFIG_SYS_SDRAM_BASE 1196d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_MEMTEST_END 0x23e00000 1200176d43eSStelian Pop 1216d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_SYS_USE_DATAFLASH_CS0 1220176d43eSStelian Pop 1230176d43eSStelian Pop /* bootstrap + u-boot + env + linux in dataflash on CS0 */ 1240e8d1586SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ENV_OFFSET 0x4200 1250e8d1586SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ENV_SIZE 0x4200 126*f166af88SWenyou.Yang@microchip.com #define CONFIG_ENV_SECT_SIZE 0x210 127*f166af88SWenyou.Yang@microchip.com #define CONFIG_ENV_SPI_MAX_HZ 15000000 128*f166af88SWenyou.Yang@microchip.com #define CONFIG_BOOTCOMMAND "sf probe 0:0; " \ 129*f166af88SWenyou.Yang@microchip.com "sf read 0x22000000 0x84000 0x294000; " \ 130*f166af88SWenyou.Yang@microchip.com "bootm 0x22000000" 1310176d43eSStelian Pop 1326d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #elif CONFIG_SYS_USE_DATAFLASH_CS1 1330176d43eSStelian Pop 1340e8d1586SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ENV_OFFSET 0x4200 1350e8d1586SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ENV_SIZE 0x4200 136*f166af88SWenyou.Yang@microchip.com #define CONFIG_ENV_SECT_SIZE 0x210 137*f166af88SWenyou.Yang@microchip.com #define CONFIG_ENV_SPI_MAX_HZ 15000000 138*f166af88SWenyou.Yang@microchip.com #define CONFIG_BOOTCOMMAND "sf probe 0:1; " \ 139*f166af88SWenyou.Yang@microchip.com "sf read 0x22000000 0x84000 0x294000; " \ 140*f166af88SWenyou.Yang@microchip.com "bootm 0x22000000" 1410176d43eSStelian Pop 14224802073SWu, Josh #elif defined(CONFIG_SYS_USE_NANDFLASH) 1430176d43eSStelian Pop 1440176d43eSStelian Pop /* bootstrap + u-boot + env + linux in nandflash */ 14583f1c2efSWenyou Yang #define CONFIG_ENV_OFFSET 0x120000 1460c58cfa9SBo Shen #define CONFIG_ENV_OFFSET_REDUND 0x100000 1470e8d1586SJean-Christophe PLAGNIOL-VILLARD #define CONFIG_ENV_SIZE 0x20000 /* 1 sector = 128 kB */ 1480c58cfa9SBo Shen #define CONFIG_BOOTCOMMAND "nand read 0x22000000 0x200000 0x300000; bootm" 1490176d43eSStelian Pop 15024802073SWu, Josh #else /* CONFIG_SYS_USE_MMC */ 15124802073SWu, Josh /* bootstrap + u-boot + env + linux in mmc */ 15224802073SWu, Josh /* For FAT system, most cases it should be in the reserved sector */ 15324802073SWu, Josh #define CONFIG_ENV_OFFSET 0x2000 15424802073SWu, Josh #define CONFIG_ENV_SIZE 0x1000 15524802073SWu, Josh #define CONFIG_SYS_MMC_ENV_DEV 0 15624802073SWu, Josh 15724802073SWu, Josh #define CONFIG_BOOTCOMMAND \ 15824802073SWu, Josh "fatload mmc 0:1 0x22000000 uImage; bootm" 1590176d43eSStelian Pop #endif 1600176d43eSStelian Pop 1616d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_LONGHELP 1 1620176d43eSStelian Pop #define CONFIG_CMDLINE_EDITING 1 163e139cb31SAlexandre Belloni #define CONFIG_AUTO_COMPLETE 1640176d43eSStelian Pop 1650176d43eSStelian Pop /* 1660176d43eSStelian Pop * Size of malloc() pool 1670176d43eSStelian Pop */ 1686d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_SYS_MALLOC_LEN ROUND(3 * CONFIG_ENV_SIZE + 128*1024, 0x1000) 1690176d43eSStelian Pop 1700176d43eSStelian Pop #endif 171