1*569a191aSMarek Vasut /* 2*569a191aSMarek Vasut * Copyright (C) 2015 Marek Vasut <marex@denx.de> 3*569a191aSMarek Vasut * 4*569a191aSMarek Vasut * SPDX-License-Identifier: GPL-2.0+ 5*569a191aSMarek Vasut */ 6*569a191aSMarek Vasut #ifndef __CONFIG_SAMTEC_VINING_FPGA_H__ 7*569a191aSMarek Vasut #define __CONFIG_SAMTEC_VINING_FPGA_H__ 8*569a191aSMarek Vasut 9*569a191aSMarek Vasut #include <asm/arch/base_addr_ac5.h> 10*569a191aSMarek Vasut 11*569a191aSMarek Vasut #define CONFIG_HW_WATCHDOG 12*569a191aSMarek Vasut 13*569a191aSMarek Vasut /* Memory configurations */ 14*569a191aSMarek Vasut #define PHYS_SDRAM_1_SIZE 0x40000000 /* 1GiB on VINING_FPGA */ 15*569a191aSMarek Vasut 16*569a191aSMarek Vasut /* Booting Linux */ 17*569a191aSMarek Vasut #define CONFIG_BOOTFILE "openwrt-socfpga-socfpga_cyclone5_vining_fpga-fit-uImage.itb" 18*569a191aSMarek Vasut #define CONFIG_BOOTCOMMAND "run selboot" 19*569a191aSMarek Vasut #define CONFIG_LOADADDR 0x01000000 20*569a191aSMarek Vasut #define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR 21*569a191aSMarek Vasut 22*569a191aSMarek Vasut /* I2C EEPROM */ 23*569a191aSMarek Vasut #ifdef CONFIG_CMD_EEPROM 24*569a191aSMarek Vasut #define CONFIG_SYS_I2C_EEPROM_ADDR 0x50 25*569a191aSMarek Vasut #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1 26*569a191aSMarek Vasut #define CONFIG_SYS_I2C_EEPROM_BUS 0 27*569a191aSMarek Vasut #define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 3 28*569a191aSMarek Vasut #define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 70 29*569a191aSMarek Vasut #endif 30*569a191aSMarek Vasut 31*569a191aSMarek Vasut /* 32*569a191aSMarek Vasut * Status LEDs: 33*569a191aSMarek Vasut * 0 ... Top Green 34*569a191aSMarek Vasut * 1 ... Top Red 35*569a191aSMarek Vasut * 2 ... Bottom Green 36*569a191aSMarek Vasut * 3 ... Bottom Red 37*569a191aSMarek Vasut */ 38*569a191aSMarek Vasut 39*569a191aSMarek Vasut /* Ethernet on SoC (EMAC) */ 40*569a191aSMarek Vasut #if defined(CONFIG_CMD_NET) 41*569a191aSMarek Vasut #define CONFIG_BOOTP_SEND_HOSTNAME 42*569a191aSMarek Vasut /* PHY */ 43*569a191aSMarek Vasut #endif 44*569a191aSMarek Vasut 45*569a191aSMarek Vasut /* Extra Environment */ 46*569a191aSMarek Vasut #define CONFIG_HOSTNAME socfpga_vining_fpga 47*569a191aSMarek Vasut 48*569a191aSMarek Vasut /* 49*569a191aSMarek Vasut * Active LOW GPIO buttons: 50*569a191aSMarek Vasut * A: GPIO 77 ... the button between USB B and ethernet 51*569a191aSMarek Vasut * B: GPIO 78 ... the button between USB A ports 52*569a191aSMarek Vasut * 53*569a191aSMarek Vasut * The logic: 54*569a191aSMarek Vasut * if button B is not pressed, boot normal Linux system immediatelly 55*569a191aSMarek Vasut * if button B is pressed, wait $bootdelay and boot recovery system 56*569a191aSMarek Vasut */ 57*569a191aSMarek Vasut #define CONFIG_PREBOOT \ 58*569a191aSMarek Vasut "setenv hostname vining-${unit_serial} ; " \ 59*569a191aSMarek Vasut "setenv PS1 \"${unit_ident} (${unit_serial}) => \" ; " \ 60*569a191aSMarek Vasut "if gpio input 78 ; then " \ 61*569a191aSMarek Vasut "setenv bootdelay 10 ; " \ 62*569a191aSMarek Vasut "setenv boottype rcvr ; " \ 63*569a191aSMarek Vasut "else " \ 64*569a191aSMarek Vasut "setenv bootdelay 5 ; " \ 65*569a191aSMarek Vasut "setenv boottype norm ; " \ 66*569a191aSMarek Vasut "fi" 67*569a191aSMarek Vasut 68*569a191aSMarek Vasut #define CONFIG_EXTRA_ENV_SETTINGS \ 69*569a191aSMarek Vasut "verify=n\0" \ 70*569a191aSMarek Vasut "consdev=ttyS0\0" \ 71*569a191aSMarek Vasut "baudrate=115200\0" \ 72*569a191aSMarek Vasut "bootscript=boot.scr\0" \ 73*569a191aSMarek Vasut "ubimtdnr=5\0" \ 74*569a191aSMarek Vasut "ubimtd=rootfs\0" \ 75*569a191aSMarek Vasut "ubipart=ubi0:rootfs\0" \ 76*569a191aSMarek Vasut "ubisfcs=1\0" /* Default is flash at CS#1 */ \ 77*569a191aSMarek Vasut "netdev=eth0\0" \ 78*569a191aSMarek Vasut "hostname=vining_fpga\0" \ 79*569a191aSMarek Vasut "kernel_addr_r=0x10000000\0" \ 80*569a191aSMarek Vasut "mtdparts_0=ff705000.spi.0:" \ 81*569a191aSMarek Vasut "1m(u-boot)," \ 82*569a191aSMarek Vasut "64k(env1)," \ 83*569a191aSMarek Vasut "64k(env2)," \ 84*569a191aSMarek Vasut "256k(samtec1)," \ 85*569a191aSMarek Vasut "256k(samtec2)," \ 86*569a191aSMarek Vasut "-(rcvrfs)\0" /* Recovery */ \ 87*569a191aSMarek Vasut "mtdparts_1=ff705000.spi.1:" \ 88*569a191aSMarek Vasut "32m(rootfs)," \ 89*569a191aSMarek Vasut "-(userfs)\0" \ 90*569a191aSMarek Vasut "update_filename=u-boot-with-spl-dtb.sfp\0" \ 91*569a191aSMarek Vasut "update_qspi_offset=0x0\0" \ 92*569a191aSMarek Vasut "update_qspi=" /* Update the QSPI firmware */ \ 93*569a191aSMarek Vasut "if sf probe ; then " \ 94*569a191aSMarek Vasut "if tftp ${update_filename} ; then " \ 95*569a191aSMarek Vasut "sf update ${loadaddr} ${update_qspi_offset} ${filesize} ; " \ 96*569a191aSMarek Vasut "fi ; " \ 97*569a191aSMarek Vasut "fi\0" \ 98*569a191aSMarek Vasut "fpga_filename=output_file.rbf\0" \ 99*569a191aSMarek Vasut "load_fpga=" /* Load FPGA bitstream */ \ 100*569a191aSMarek Vasut "if tftp ${fpga_filename} ; then " \ 101*569a191aSMarek Vasut "fpga load 0 $loadaddr $filesize ; " \ 102*569a191aSMarek Vasut "bridge enable ; " \ 103*569a191aSMarek Vasut "fi\0" \ 104*569a191aSMarek Vasut "addcons=" \ 105*569a191aSMarek Vasut "setenv bootargs ${bootargs} " \ 106*569a191aSMarek Vasut "console=${consdev},${baudrate}\0" \ 107*569a191aSMarek Vasut "addip=" \ 108*569a191aSMarek Vasut "setenv bootargs ${bootargs} " \ 109*569a191aSMarek Vasut "ip=${ipaddr}:${serverip}:${gatewayip}:" \ 110*569a191aSMarek Vasut "${netmask}:${hostname}:${netdev}:off\0" \ 111*569a191aSMarek Vasut "addmisc=" \ 112*569a191aSMarek Vasut "setenv bootargs ${bootargs} ${miscargs}\0" \ 113*569a191aSMarek Vasut "addmtd=" \ 114*569a191aSMarek Vasut "setenv mtdparts \"${mtdparts_0};${mtdparts_1}\" ; " \ 115*569a191aSMarek Vasut "setenv bootargs ${bootargs} mtdparts=${mtdparts}\0" \ 116*569a191aSMarek Vasut "addargs=run addcons addmtd addmisc\0" \ 117*569a191aSMarek Vasut "ubiload=" \ 118*569a191aSMarek Vasut "ubi part ${ubimtd} ; ubifsmount ${ubipart} ; " \ 119*569a191aSMarek Vasut "ubifsload ${kernel_addr_r} /boot/${bootfile}\0" \ 120*569a191aSMarek Vasut "netload=" \ 121*569a191aSMarek Vasut "tftp ${kernel_addr_r} ${hostname}/${bootfile}\0" \ 122*569a191aSMarek Vasut "miscargs=nohlt panic=1\0" \ 123*569a191aSMarek Vasut "ubiargs=" \ 124*569a191aSMarek Vasut "setenv bootargs ubi.mtd=${ubimtdnr} " \ 125*569a191aSMarek Vasut "root=${ubipart} rootfstype=ubifs\0" \ 126*569a191aSMarek Vasut "nfsargs=" \ 127*569a191aSMarek Vasut "setenv bootargs root=/dev/nfs rw " \ 128*569a191aSMarek Vasut "nfsroot=${serverip}:${rootpath},v3,tcp\0" \ 129*569a191aSMarek Vasut "ubi_sfsel=" \ 130*569a191aSMarek Vasut "if test \"${boottype}\" = \"rcvr\" ; then " \ 131*569a191aSMarek Vasut "setenv ubisfcs 0 ; " \ 132*569a191aSMarek Vasut "setenv ubimtd rcvrfs ; " \ 133*569a191aSMarek Vasut "setenv ubimtdnr 5 ; " \ 134*569a191aSMarek Vasut "setenv mtdparts mtdparts=${mtdparts_0} ; " \ 135*569a191aSMarek Vasut "setenv mtdids nor0=ff705000.spi.0 ; " \ 136*569a191aSMarek Vasut "setenv ubipart ubi0:rootfs ; " \ 137*569a191aSMarek Vasut "else " \ 138*569a191aSMarek Vasut "setenv ubisfcs 1 ; " \ 139*569a191aSMarek Vasut "setenv ubimtd rootfs ; " \ 140*569a191aSMarek Vasut "setenv ubimtdnr 6 ; " \ 141*569a191aSMarek Vasut "setenv mtdparts mtdparts=${mtdparts_1} ; " \ 142*569a191aSMarek Vasut "setenv mtdids nor0=ff705000.spi.1 ; " \ 143*569a191aSMarek Vasut "setenv ubipart ubi0:rootfs ; " \ 144*569a191aSMarek Vasut "fi ; " \ 145*569a191aSMarek Vasut "sf probe 0:${ubisfcs}\0" \ 146*569a191aSMarek Vasut "ubi_ubi=" \ 147*569a191aSMarek Vasut "run ubi_sfsel ubiload ubiargs addargs ; " \ 148*569a191aSMarek Vasut "bootm ${kernel_addr_r}\0" \ 149*569a191aSMarek Vasut "ubi_nfs=" \ 150*569a191aSMarek Vasut "run ubiload nfsargs addip addargs ; " \ 151*569a191aSMarek Vasut "bootm ${kernel_addr_r}\0" \ 152*569a191aSMarek Vasut "net_ubi=" \ 153*569a191aSMarek Vasut "run netload ubiargs addargs ; " \ 154*569a191aSMarek Vasut "bootm ${kernel_addr_r}\0" \ 155*569a191aSMarek Vasut "net_nfs=" \ 156*569a191aSMarek Vasut "run netload nfsargs addip addargs ; " \ 157*569a191aSMarek Vasut "bootm ${kernel_addr_r}\0" \ 158*569a191aSMarek Vasut "selboot=" /* Select from where to boot. */ \ 159*569a191aSMarek Vasut "if test \"${bootmode}\" = \"qspi\" ; then " \ 160*569a191aSMarek Vasut "led all off ; " \ 161*569a191aSMarek Vasut "if test \"${boottype}\" = \"rcvr\" ; then " \ 162*569a191aSMarek Vasut "echo \"Booting recovery system\" ; " \ 163*569a191aSMarek Vasut "led 3 on ; " /* Bottom RED */ \ 164*569a191aSMarek Vasut "fi ; " \ 165*569a191aSMarek Vasut "led 1 on ; " /* Top RED */ \ 166*569a191aSMarek Vasut "run ubi_ubi ; " \ 167*569a191aSMarek Vasut "else echo \"Unsupported boot mode: \"${bootmode} ; " \ 168*569a191aSMarek Vasut "fi\0" \ 169*569a191aSMarek Vasut 170*569a191aSMarek Vasut #define MTDPARTS_DEFAULT \ 171*569a191aSMarek Vasut "mtdparts=ff705000.spi.0:" \ 172*569a191aSMarek Vasut "1m(u-boot)," \ 173*569a191aSMarek Vasut "64k(env1)," \ 174*569a191aSMarek Vasut "64k(env2)," \ 175*569a191aSMarek Vasut "256k(samtec1)," \ 176*569a191aSMarek Vasut "256k(samtec2)," \ 177*569a191aSMarek Vasut "-(rcvrfs);" /* Recovery */ \ 178*569a191aSMarek Vasut 179*569a191aSMarek Vasut #define CONFIG_SYS_REDUNDAND_ENVIRONMENT 180*569a191aSMarek Vasut #define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE 181*569a191aSMarek Vasut #define CONFIG_ENV_SECT_SIZE (64 * 1024) 182*569a191aSMarek Vasut #define CONFIG_ENV_OFFSET 0x100000 183*569a191aSMarek Vasut #define CONFIG_ENV_OFFSET_REDUND \ 184*569a191aSMarek Vasut (CONFIG_ENV_OFFSET + CONFIG_ENV_SECT_SIZE) 185*569a191aSMarek Vasut 186*569a191aSMarek Vasut #define CONFIG_MISC_INIT_R 187*569a191aSMarek Vasut 188*569a191aSMarek Vasut /* Support changing the prompt string */ 189*569a191aSMarek Vasut #define CONFIG_CMDLINE_PS_SUPPORT 190*569a191aSMarek Vasut 191*569a191aSMarek Vasut /* The rest of the configuration is shared */ 192*569a191aSMarek Vasut #include <configs/socfpga_common.h> 193*569a191aSMarek Vasut 194*569a191aSMarek Vasut #endif /* __CONFIG_SAMTEC_VINING_FPGA_H__ */ 195