1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * (C) Copyright 2007-2010 Michal Simek 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Michal SIMEK <monstr@monstr.eu> 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef __CONFIG_H 10*4882a593Smuzhiyun #define __CONFIG_H 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #include "../board/xilinx/microblaze-generic/xparameters.h" 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun /* MicroBlaze CPU */ 15*4882a593Smuzhiyun #define MICROBLAZE_V5 1 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun /* linear and spi flash memory */ 18*4882a593Smuzhiyun #ifdef XILINX_FLASH_START 19*4882a593Smuzhiyun #define FLASH 20*4882a593Smuzhiyun #undef SPIFLASH 21*4882a593Smuzhiyun #undef RAMENV /* hold environment in flash */ 22*4882a593Smuzhiyun #else 23*4882a593Smuzhiyun #ifdef XILINX_SPI_FLASH_BASEADDR 24*4882a593Smuzhiyun #undef FLASH 25*4882a593Smuzhiyun #define SPIFLASH 26*4882a593Smuzhiyun #undef RAMENV /* hold environment in flash */ 27*4882a593Smuzhiyun #else 28*4882a593Smuzhiyun #undef FLASH 29*4882a593Smuzhiyun #undef SPIFLASH 30*4882a593Smuzhiyun #define RAMENV /* hold environment in RAM */ 31*4882a593Smuzhiyun #endif 32*4882a593Smuzhiyun #endif 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun /* uart */ 35*4882a593Smuzhiyun /* The following table includes the supported baudrates */ 36*4882a593Smuzhiyun # define CONFIG_SYS_BAUDRATE_TABLE \ 37*4882a593Smuzhiyun {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400} 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun /* setting reset address */ 40*4882a593Smuzhiyun /*#define CONFIG_SYS_RESET_ADDRESS CONFIG_SYS_TEXT_BASE*/ 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun /* gpio */ 43*4882a593Smuzhiyun #ifdef XILINX_GPIO_BASEADDR 44*4882a593Smuzhiyun # define CONFIG_XILINX_GPIO 45*4882a593Smuzhiyun # define CONFIG_SYS_GPIO_0_ADDR XILINX_GPIO_BASEADDR 46*4882a593Smuzhiyun #endif 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun /* watchdog */ 49*4882a593Smuzhiyun #if defined(XILINX_WATCHDOG_BASEADDR) && defined(XILINX_WATCHDOG_IRQ) 50*4882a593Smuzhiyun # define CONFIG_WATCHDOG_BASEADDR XILINX_WATCHDOG_BASEADDR 51*4882a593Smuzhiyun # define CONFIG_WATCHDOG_IRQ XILINX_WATCHDOG_IRQ 52*4882a593Smuzhiyun # ifndef CONFIG_SPL_BUILD 53*4882a593Smuzhiyun # define CONFIG_HW_WATCHDOG 54*4882a593Smuzhiyun # define CONFIG_XILINX_TB_WATCHDOG 55*4882a593Smuzhiyun # endif 56*4882a593Smuzhiyun #endif 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun #define CONFIG_SYS_MALLOC_LEN 0xC0000 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun /* Stack location before relocation */ 61*4882a593Smuzhiyun #define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_TEXT_BASE - \ 62*4882a593Smuzhiyun CONFIG_SYS_MALLOC_F_LEN) 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun /* 65*4882a593Smuzhiyun * CFI flash memory layout - Example 66*4882a593Smuzhiyun * CONFIG_SYS_FLASH_BASE = 0x2200_0000; 67*4882a593Smuzhiyun * CONFIG_SYS_FLASH_SIZE = 0x0080_0000; 8MB 68*4882a593Smuzhiyun * 69*4882a593Smuzhiyun * SECT_SIZE = 0x20000; 128kB is one sector 70*4882a593Smuzhiyun * CONFIG_ENV_SIZE = SECT_SIZE; 128kB environment store 71*4882a593Smuzhiyun * 72*4882a593Smuzhiyun * 0x2200_0000 CONFIG_SYS_FLASH_BASE 73*4882a593Smuzhiyun * FREE 256kB 74*4882a593Smuzhiyun * 0x2204_0000 CONFIG_ENV_ADDR 75*4882a593Smuzhiyun * ENV_AREA 128kB 76*4882a593Smuzhiyun * 0x2206_0000 77*4882a593Smuzhiyun * FREE 78*4882a593Smuzhiyun * 0x2280_0000 CONFIG_SYS_FLASH_BASE + CONFIG_SYS_FLASH_SIZE 79*4882a593Smuzhiyun * 80*4882a593Smuzhiyun */ 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun #ifdef FLASH 83*4882a593Smuzhiyun # define CONFIG_SYS_FLASH_BASE XILINX_FLASH_START 84*4882a593Smuzhiyun # define CONFIG_SYS_FLASH_SIZE XILINX_FLASH_SIZE 85*4882a593Smuzhiyun # define CONFIG_SYS_FLASH_CFI 1 86*4882a593Smuzhiyun # define CONFIG_FLASH_CFI_DRIVER 1 87*4882a593Smuzhiyun /* ?empty sector */ 88*4882a593Smuzhiyun # define CONFIG_SYS_FLASH_EMPTY_INFO 1 89*4882a593Smuzhiyun /* max number of memory banks */ 90*4882a593Smuzhiyun # define CONFIG_SYS_MAX_FLASH_BANKS 1 91*4882a593Smuzhiyun /* max number of sectors on one chip */ 92*4882a593Smuzhiyun # define CONFIG_SYS_MAX_FLASH_SECT 512 93*4882a593Smuzhiyun /* hardware flash protection */ 94*4882a593Smuzhiyun # define CONFIG_SYS_FLASH_PROTECTION 95*4882a593Smuzhiyun /* use buffered writes (20x faster) */ 96*4882a593Smuzhiyun # define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1 97*4882a593Smuzhiyun # ifdef RAMENV 98*4882a593Smuzhiyun # define CONFIG_ENV_SIZE 0x1000 99*4882a593Smuzhiyun # define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SIZE) 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun # else /* FLASH && !RAMENV */ 102*4882a593Smuzhiyun /* 128K(one sector) for env */ 103*4882a593Smuzhiyun # define CONFIG_ENV_SECT_SIZE 0x20000 104*4882a593Smuzhiyun # define CONFIG_ENV_ADDR \ 105*4882a593Smuzhiyun (CONFIG_SYS_FLASH_BASE + (2 * CONFIG_ENV_SECT_SIZE)) 106*4882a593Smuzhiyun # define CONFIG_ENV_SIZE 0x20000 107*4882a593Smuzhiyun # endif /* FLASH && !RAMBOOT */ 108*4882a593Smuzhiyun #else /* !FLASH */ 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun #ifdef SPIFLASH 111*4882a593Smuzhiyun # define CONFIG_SYS_SPI_BASE XILINX_SPI_FLASH_BASEADDR 112*4882a593Smuzhiyun # define CONFIG_SF_DEFAULT_MODE SPI_MODE_3 113*4882a593Smuzhiyun # define CONFIG_SF_DEFAULT_SPEED XILINX_SPI_FLASH_MAX_FREQ 114*4882a593Smuzhiyun # define CONFIG_SF_DEFAULT_CS XILINX_SPI_FLASH_CS 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun # ifdef RAMENV 117*4882a593Smuzhiyun # define CONFIG_ENV_SIZE 0x1000 118*4882a593Smuzhiyun # define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SIZE) 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun # else /* SPIFLASH && !RAMENV */ 121*4882a593Smuzhiyun # define CONFIG_ENV_SPI_MODE SPI_MODE_3 122*4882a593Smuzhiyun # define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED 123*4882a593Smuzhiyun # define CONFIG_ENV_SPI_CS CONFIG_SF_DEFAULT_CS 124*4882a593Smuzhiyun /* 128K(two sectors) for env */ 125*4882a593Smuzhiyun # define CONFIG_ENV_SECT_SIZE 0x10000 126*4882a593Smuzhiyun # define CONFIG_ENV_SIZE (2 * CONFIG_ENV_SECT_SIZE) 127*4882a593Smuzhiyun /* Warning: adjust the offset in respect of other flash content and size */ 128*4882a593Smuzhiyun # define CONFIG_ENV_OFFSET (128 * CONFIG_ENV_SECT_SIZE) /* at 8MB */ 129*4882a593Smuzhiyun # endif /* SPIFLASH && !RAMBOOT */ 130*4882a593Smuzhiyun #else /* !SPIFLASH */ 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun /* ENV in RAM */ 133*4882a593Smuzhiyun # define CONFIG_ENV_SIZE 0x1000 134*4882a593Smuzhiyun # define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SIZE) 135*4882a593Smuzhiyun #endif /* !SPIFLASH */ 136*4882a593Smuzhiyun #endif /* !FLASH */ 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun #if defined(XILINX_USE_ICACHE) 139*4882a593Smuzhiyun # define CONFIG_ICACHE 140*4882a593Smuzhiyun #else 141*4882a593Smuzhiyun # undef CONFIG_ICACHE 142*4882a593Smuzhiyun #endif 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun #if defined(XILINX_USE_DCACHE) 145*4882a593Smuzhiyun # define CONFIG_DCACHE 146*4882a593Smuzhiyun #else 147*4882a593Smuzhiyun # undef CONFIG_DCACHE 148*4882a593Smuzhiyun #endif 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun #ifndef XILINX_DCACHE_BYTE_SIZE 151*4882a593Smuzhiyun #define XILINX_DCACHE_BYTE_SIZE 32768 152*4882a593Smuzhiyun #endif 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun /* 155*4882a593Smuzhiyun * BOOTP options 156*4882a593Smuzhiyun */ 157*4882a593Smuzhiyun #define CONFIG_BOOTP_BOOTFILESIZE 158*4882a593Smuzhiyun #define CONFIG_BOOTP_BOOTPATH 159*4882a593Smuzhiyun #define CONFIG_BOOTP_GATEWAY 160*4882a593Smuzhiyun #define CONFIG_BOOTP_HOSTNAME 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun #if defined(CONFIG_MTD_PARTITIONS) 163*4882a593Smuzhiyun /* MTD partitions */ 164*4882a593Smuzhiyun #define CONFIG_FLASH_CFI_MTD 165*4882a593Smuzhiyun #define MTDIDS_DEFAULT "nor0=flash-0" 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun /* default mtd partition table */ 168*4882a593Smuzhiyun #define MTDPARTS_DEFAULT "mtdparts=flash-0:256k(u-boot),"\ 169*4882a593Smuzhiyun "256k(env),3m(kernel),1m(romfs),"\ 170*4882a593Smuzhiyun "1m(cramfs),-(jffs2)" 171*4882a593Smuzhiyun #endif 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun /* size of console buffer */ 174*4882a593Smuzhiyun #define CONFIG_SYS_CBSIZE 512 175*4882a593Smuzhiyun /* max number of command args */ 176*4882a593Smuzhiyun #define CONFIG_SYS_MAXARGS 15 177*4882a593Smuzhiyun #define CONFIG_SYS_LONGHELP 178*4882a593Smuzhiyun /* default load address */ 179*4882a593Smuzhiyun #define CONFIG_SYS_LOAD_ADDR 0 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun #define CONFIG_HOSTNAME XILINX_BOARD_NAME 182*4882a593Smuzhiyun #define CONFIG_BOOTCOMMAND "base 0;tftp 11000000 image.img;bootm" 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun /* architecture dependent code */ 185*4882a593Smuzhiyun #define CONFIG_SYS_USR_EXCEP /* user exception */ 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun #define CONFIG_PREBOOT "echo U-BOOT for ${hostname};setenv preboot;echo" 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun #ifndef CONFIG_EXTRA_ENV_SETTINGS 190*4882a593Smuzhiyun #define CONFIG_EXTRA_ENV_SETTINGS "unlock=yes\0" \ 191*4882a593Smuzhiyun "nor0=flash-0\0"\ 192*4882a593Smuzhiyun "mtdparts=mtdparts=flash-0:"\ 193*4882a593Smuzhiyun "256k(u-boot),256k(env),3m(kernel),"\ 194*4882a593Smuzhiyun "1m(romfs),1m(cramfs),-(jffs2)\0"\ 195*4882a593Smuzhiyun "nc=setenv stdout nc;"\ 196*4882a593Smuzhiyun "setenv stdin nc\0" \ 197*4882a593Smuzhiyun "serial=setenv stdout serial;"\ 198*4882a593Smuzhiyun "setenv stdin serial\0" 199*4882a593Smuzhiyun #endif 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun #define CONFIG_CMDLINE_EDITING 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun /* Enable flat device tree support */ 204*4882a593Smuzhiyun #define CONFIG_LMB 1 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun #if defined(CONFIG_XILINX_AXIEMAC) 207*4882a593Smuzhiyun # define CONFIG_MII 1 208*4882a593Smuzhiyun # define CONFIG_SYS_FAULT_ECHO_LINK_DOWN 1 209*4882a593Smuzhiyun # define CONFIG_PHY_ATHEROS 1 210*4882a593Smuzhiyun # define CONFIG_PHY_BROADCOM 1 211*4882a593Smuzhiyun # define CONFIG_PHY_DAVICOM 1 212*4882a593Smuzhiyun # define CONFIG_PHY_LXT 1 213*4882a593Smuzhiyun # define CONFIG_PHY_MARVELL 1 214*4882a593Smuzhiyun # define CONFIG_PHY_NATSEMI 1 215*4882a593Smuzhiyun # define CONFIG_PHY_REALTEK 1 216*4882a593Smuzhiyun # define CONFIG_PHY_VITESSE 1 217*4882a593Smuzhiyun #else 218*4882a593Smuzhiyun # undef CONFIG_MII 219*4882a593Smuzhiyun #endif 220*4882a593Smuzhiyun 221*4882a593Smuzhiyun /* SPL part */ 222*4882a593Smuzhiyun #define CONFIG_SPL_FRAMEWORK 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun #ifdef CONFIG_SYS_FLASH_BASE 225*4882a593Smuzhiyun # define CONFIG_SYS_UBOOT_BASE CONFIG_SYS_FLASH_BASE 226*4882a593Smuzhiyun #endif 227*4882a593Smuzhiyun 228*4882a593Smuzhiyun /* for booting directly linux */ 229*4882a593Smuzhiyun 230*4882a593Smuzhiyun #define CONFIG_SYS_FDT_BASE (CONFIG_SYS_FLASH_BASE + \ 231*4882a593Smuzhiyun 0x40000) 232*4882a593Smuzhiyun #define CONFIG_SYS_FDT_SIZE (16<<10) 233*4882a593Smuzhiyun #define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_TEXT_BASE + \ 234*4882a593Smuzhiyun 0x1000000) 235*4882a593Smuzhiyun 236*4882a593Smuzhiyun /* SP location before relocation, must use scratch RAM */ 237*4882a593Smuzhiyun /* BRAM start */ 238*4882a593Smuzhiyun #define CONFIG_SYS_INIT_RAM_ADDR 0x0 239*4882a593Smuzhiyun /* BRAM size - will be generated */ 240*4882a593Smuzhiyun #define CONFIG_SYS_INIT_RAM_SIZE 0x100000 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun # define CONFIG_SPL_STACK_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \ 243*4882a593Smuzhiyun CONFIG_SYS_INIT_RAM_SIZE - \ 244*4882a593Smuzhiyun CONFIG_SYS_MALLOC_F_LEN) 245*4882a593Smuzhiyun 246*4882a593Smuzhiyun /* Just for sure that there is a space for stack */ 247*4882a593Smuzhiyun #define CONFIG_SPL_STACK_SIZE 0x100 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun #define CONFIG_SYS_UBOOT_START CONFIG_SYS_TEXT_BASE 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun #define CONFIG_SPL_MAX_FOOTPRINT (CONFIG_SYS_INIT_RAM_SIZE - \ 252*4882a593Smuzhiyun CONFIG_SYS_INIT_RAM_ADDR - \ 253*4882a593Smuzhiyun CONFIG_SYS_MALLOC_F_LEN - \ 254*4882a593Smuzhiyun CONFIG_SPL_STACK_SIZE) 255*4882a593Smuzhiyun 256*4882a593Smuzhiyun #endif /* __CONFIG_H */ 257