[PATCH] arm64: zynqmp: Introduce kria SOM defconfig

Michal Simek michal.simek at amd.com
Tue Oct 17 15:51:17 CEST 2023



On 10/17/23 05:17, Venkatesh Yadav Abbarapu wrote:
> Enable the initial kria SOM specific configurations like pinctrl,
> pinconf etc. Also add the environment file.
> 
> Signed-off-by: Venkatesh Yadav Abbarapu <venkatesh.abbarapu at amd.com>
> ---
>   board/xilinx/zynqmp/zynqmp_kria.env  |  71 +++++++++
>   configs/xilinx_zynqmp_kria_defconfig | 230 +++++++++++++++++++++++++++
>   2 files changed, 301 insertions(+)
>   create mode 100644 board/xilinx/zynqmp/zynqmp_kria.env
>   create mode 100644 configs/xilinx_zynqmp_kria_defconfig
> 
> diff --git a/board/xilinx/zynqmp/zynqmp_kria.env b/board/xilinx/zynqmp/zynqmp_kria.env
> new file mode 100644
> index 0000000000..916ac2df14
> --- /dev/null
> +++ b/board/xilinx/zynqmp/zynqmp_kria.env
> @@ -0,0 +1,71 @@
> +autoload=no
> +baudrate=115200
> +boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
> +boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootaa64.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
> +boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_conf}
> +boot_net_usb_start=usb start
> +boot_prefixes=/ /boot/
> +boot_script_dhcp=boot.scr.uimg
> +boot_scripts=boot.scr.uimg boot.scr
> +boot_syslinux_conf=extlinux/extlinux.conf
> +bootcmd_dhcp=run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fdtfile}; setenv efi_old_vci ${bootp_vci};setenv efi_old_arch ${bootp_arch};setenv bootp_vci PXEClient:Arch:00011:UNDI:003000;setenv bootp_arch 0xb;if dhcp ${kernel_addr_r}; then tftpboot ${fdt_addr_r} dtb/${efi_fdtfile};if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r}; else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi;fi;setenv bootp_vci ${efi_old_vci};setenv bootp_arch ${efi_old_arch};setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci;
> +bootcmd_jtag=echo JTAG: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo JTAG: SCRIPT FAILED: continuing...;
> +bootcmd_mmc0=devnum=0; run mmc_boot
> +bootcmd_mmc1=devnum=1; run mmc_boot
> +bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi
> +bootcmd_usb0=devnum=0; run usb_boot
> +bootcmd_usb1=devnum=1; run usb_boot
> +bootcmd_usb2=devnum=2; run usb_boot
> +bootcmd_usb3=devnum=3; run usb_boot
> +bootdelay=2
> +bootfstype=fat
> +bootm_low=0
> +bootm_size=80000000

0x prefix please

> +distro_bootcmd=scsi_need_init=; for target in ${boot_targets}; do run bootcmd_${target}; done
> +efi_dtb_prefixes=/ /dtb/ /dtb/current/
> +fdt_addr_r=0x40000000
> +fdt_high=0x10000000
> +fileaddr=0x18000000
> +initrd_high=0x79000000
> +kernel_addr_r=0x18000000
> +load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
> +mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi
> +pxefile_addr_r=0x10000000
> +ramdisk_addr_r=0x02100000
> +scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;
> +scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done; setenv devplist
> +scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootaa64.efi; then echo Found EFI removable media binary efi/boot/bootaa64.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile
> +scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${boot_syslinux_conf}; then echo Found ${prefix}${boot_syslinux_conf}; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi
> +scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
> +script_offset_f=0x3e80000
> +script_size_f=0x80000
> +scriptaddr=0x20000000
> +usb_boot=usb start; if usb dev ${devnum}; then devtype=usb; run scan_dev_for_boot_part; fi
> +preboot=setenv boot_targets; setenv modeboot; cls; run board_setup

please remove "cls" from this.

> +
> +# SOM specific boot methods
> +som_cc_boot=if test ${card1_name} = SCK-KV-G; then setenv boot_targets mmc1 usb0 usb1 usb2 usb3 pxe dhcp && run distro_bootcmd; elif test ${card1_name} = SCK-KR-G; then setenv boot_targets usb0 usb1 usb2 usb3 pxe dhcp && run distro_bootcmd; else test ${card1_name} = SCK-KD-G; setenv boot_targets usb0 usb1 usb2 usb3 pxe dhcp && run distro_bootcmd; fi;"
> +som_mmc_boot=setenv boot_targets mmc0 && run distro_bootcmd
> +
> +k26_starter=SMK-K26-XCL2G
> +k24_starter=SMK-K24-XCL2G
> +bootcmd=setenv model $board_name && if setexpr model gsub .*$k24_starter* $k24_starter || setexpr model gsub .*$k26_starter* $k26_starter; then run som_cc_boot; else run som_mmc_boot; run som_cc_boot; fi
> +
> +usb_hub_init=mw 1000 0056 && sleep 1 && i2c write 1000 2d aa 2 -s
> +
> +# usb hub init
> +kv260_setup=i2c dev 1 && run usb_hub_init
> +# usb hub init
> +kr260_setup=i2c dev 1 && run usb_hub_init; i2c dev 2 && run usb_hub_init;
> +# usb hub init with enabling PM nodes for ...
> +kd240_setup=i2c dev 0 && run usb_hub_init; run pm-cfg-snd
> +
> +

one newline is enoguht.

> +board_setup=\
> +if test ${card1_name} = SCK-KV-G; then run kv260_setup; fi;\
> +if test ${card1_name} = SCK-KR-G; then run kr260_setup; fi;\
> +if test ${card1_name} = SCK-KD-G; then run kd240_setup; fi;
> +
> +pm-cfg-snd=run pm-config
> +
> +pm-config=if test ${card1_name} = SCK-KD-G; then zynqmp pmufw node 33; zynqmp pmufw node 47; fi

This test is done already as the part of board_setup for KD. That's why just 
define it like this

kd240_setup=i2c dev 0 && run usb_hub_init; zynqmp pmufw node 33; zynqmp pmufw 
node 47;


and remove pm-cf-snd, pm-config variables.


> diff --git a/configs/xilinx_zynqmp_kria_defconfig b/configs/xilinx_zynqmp_kria_defconfig
> new file mode 100644
> index 0000000000..486ed14c3a
> --- /dev/null
> +++ b/configs/xilinx_zynqmp_kria_defconfig
> @@ -0,0 +1,230 @@
> +CONFIG_ARM=y
> +CONFIG_POSITION_INDEPENDENT=y
> +CONFIG_ARCH_ZYNQMP=y
> +CONFIG_TEXT_BASE=0x8000000
> +CONFIG_SYS_MALLOC_LEN=0x4040000
> +CONFIG_SYS_MALLOC_F_LEN=0x8000
> +CONFIG_ENV_SIZE=0x20000
> +CONFIG_ENV_SECT_SIZE=0x20000
> +CONFIG_DM_GPIO=y
> +CONFIG_DEFAULT_DEVICE_TREE="zynqmp-smk-k26-revA"
> +CONFIG_SPL_STACK_R_ADDR=0x18000000
> +CONFIG_SPL_SIZE_LIMIT=0x2a000
> +CONFIG_SPL_SIZE_LIMIT_PROVIDE_STACK=0x0
> +CONFIG_SPL=y
> +CONFIG_ENV_OFFSET_REDUND=0x222000

This is actually 0x2220000

> +CONFIG_SPL_SPI_FLASH_SUPPORT=y
> +CONFIG_SPL_SPI=y
> +CONFIG_CMD_FRU=y
> +CONFIG_SYS_LOAD_ADDR=0x8000000
> +CONFIG_ENV_ADDR=0x2200000
> +CONFIG_AHCI=y
> +CONFIG_SYS_MEMTEST_START=0x00000000
> +CONFIG_SYS_MEMTEST_END=0x00001000
> +CONFIG_DISTRO_DEFAULTS=y
> +CONFIG_REMAKE_ELF=y
> +CONFIG_FIT=y
> +CONFIG_FIT_VERBOSE=y
> +CONFIG_SPL_LOAD_FIT=y
> +CONFIG_SPL_LOAD_FIT_ADDRESS=0x10000000
> +# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
> +CONFIG_USE_PREBOOT=y
> +CONFIG_SYS_DEVICE_NULLDEV=y

we are not using this option that's why please remove it.

> +CONFIG_BOARD_EARLY_INIT_R=y
> +CONFIG_CLOCKS=y
> +CONFIG_SPL_MAX_SIZE=0x40000
> +CONFIG_SPL_BSS_MAX_SIZE=0x80000
> +# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set
> +CONFIG_SPL_STACK=0xfffffffc
> +CONFIG_SPL_STACK_R=y
> +CONFIG_SYS_SPL_MALLOC=y
> +CONFIG_HAS_CUSTOM_SPL_MALLOC_START=y
> +CONFIG_CUSTOM_SYS_SPL_MALLOC_ADDR=0x20000000
> +CONFIG_SYS_SPL_MALLOC_SIZE=0x1000000
> +CONFIG_SPL_FS_LOAD_KERNEL_NAME=""
> +CONFIG_SPL_FS_LOAD_ARGS_NAME=""
> +CONFIG_SPL_FPGA=y
> +CONFIG_SPL_OS_BOOT=y

please disable this option. It is not needed.

> +CONFIG_SYS_SPL_ARGS_ADDR=0x8000000

This has been renamed recently that's why please resync this defconfig.

> +CONFIG_SPL_RAM_SUPPORT=y
> +CONFIG_SPL_RAM_DEVICE=y
> +CONFIG_SPL_SPI_LOAD=y
> +CONFIG_SYS_SPI_U_BOOT_OFFS=0xF80000
> +CONFIG_SPL_ATF=y
> +CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y
> +CONFIG_SYS_MAXARGS=64
> +CONFIG_SYS_PBSIZE=2073
> +CONFIG_SYS_BOOTM_LEN=0x6400000
> +CONFIG_CMD_BOOTMENU=y
> +CONFIG_CMD_GREPENV=y
> +CONFIG_CMD_NVEDIT_EFI=y
> +CONFIG_CMD_MEMTEST=y
> +CONFIG_SYS_ALT_MEMTEST=y
> +CONFIG_CMD_SHA1SUM=y
> +CONFIG_CMD_CLK=y
> +CONFIG_CMD_DFU=y
> +CONFIG_CMD_FPGA_LOADBP=y
> +CONFIG_CMD_FPGA_LOADP=y
> +CONFIG_CMD_FPGA_LOAD_SECURE=y
> +CONFIG_CMD_GPIO=y
> +CONFIG_CMD_PWM=y
> +CONFIG_CMD_GPT=y
> +CONFIG_CMD_I2C=y
> +CONFIG_CMD_MMC=y
> +CONFIG_CMD_MTD=y
> +CONFIG_CMD_POWEROFF=y
> +CONFIG_CMD_SDRAM=y
> +CONFIG_CMD_SF_TEST=y
> +CONFIG_CMD_SPI=y
> +CONFIG_CMD_USB=y
> +CONFIG_CMD_USB_MASS_STORAGE=y
> +CONFIG_BOOTP_MAY_FAIL=y
> +CONFIG_BOOTP_BOOTFILESIZE=y
> +CONFIG_CMD_TFTPPUT=y
> +CONFIG_CMD_BMP=y
> +CONFIG_CMD_CACHE=y
> +CONFIG_CMD_EFIDEBUG=y
> +CONFIG_CMD_RTC=y
> +CONFIG_CMD_TIME=y
> +CONFIG_CMD_GETTIME=y
> +CONFIG_CMD_RNG=y
> +CONFIG_CMD_KASLRSEED=y
> +CONFIG_CMD_TIMER=y
> +CONFIG_CMD_REGULATOR=y
> +CONFIG_CMD_SMC=y
> +CONFIG_CMD_TPM=y
> +CONFIG_CMD_EXT4_WRITE=y
> +CONFIG_CMD_SQUASHFS=y
> +CONFIG_CMD_MTDPARTS=y
> +CONFIG_CMD_MTDPARTS_SPREAD=y
> +CONFIG_CMD_MTDPARTS_SHOW_NET_SIZES=y
> +CONFIG_CMD_UBI=y
> +CONFIG_PARTITION_TYPE_GUID=y
> +CONFIG_SPL_OF_CONTROL=y
> +CONFIG_OF_BOARD=y
> +CONFIG_OF_LIST=""
> +CONFIG_DTB_RESELECT=y
> +CONFIG_MULTI_DTB_FIT=y
> +CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names interrupt-parent interrupts iommus power-domains"
> +CONFIG_ENV_SOURCE_FILE="zynqmp_kria"
> +CONFIG_ENV_IS_NOWHERE=y
> +CONFIG_ENV_IS_IN_FAT=y
> +CONFIG_ENV_IS_IN_SPI_FLASH=y
> +CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
> +CONFIG_ENV_FAT_DEVICE_AND_PART=":auto"
> +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
> +CONFIG_NET_RANDOM_ETHADDR=y
> +CONFIG_NETCONSOLE=y
> +CONFIG_SYS_FAULT_ECHO_LINK_DOWN=y
> +CONFIG_SPL_DM_SEQ_ALIAS=y
> +CONFIG_SATA=y
> +CONFIG_SCSI_AHCI=y
> +CONFIG_SATA_CEVA=y
> +CONFIG_BUTTON=y
> +CONFIG_BUTTON_GPIO=y
> +CONFIG_CLK_ZYNQMP=y
> +CONFIG_DFU_TFTP=y
> +CONFIG_DFU_TIMEOUT=y
> +CONFIG_DFU_MMC=y
> +CONFIG_DFU_MTD=y
> +CONFIG_DFU_RAM=y
> +CONFIG_DFU_SF=y
> +CONFIG_SYS_DFU_DATA_BUF_SIZE=0x1800000
> +CONFIG_DMA=y
> +CONFIG_XILINX_DPDMA=y
> +CONFIG_USB_FUNCTION_FASTBOOT=y
> +CONFIG_FASTBOOT_FLASH=y
> +CONFIG_FASTBOOT_FLASH_MMC_DEV=0
> +CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
> +CONFIG_FPGA_XILINX=y
> +CONFIG_FPGA_ZYNQMPPL=y
> +CONFIG_GPIO_HOG=y
> +CONFIG_XILINX_GPIO=y
> +CONFIG_DM_PCA953X=y
> +CONFIG_SLG7XL45106_I2C_GPO=y
> +CONFIG_DM_I2C=y
> +CONFIG_SYS_I2C_CADENCE=y
> +CONFIG_I2C_MUX=y
> +CONFIG_I2C_MUX_PCA954x=y
> +CONFIG_LED=y
> +CONFIG_LED_GPIO=y
> +CONFIG_MISC=y
> +CONFIG_I2C_EEPROM=y
> +CONFIG_SUPPORT_EMMC_BOOT=y
> +CONFIG_MMC_IO_VOLTAGE=y
> +CONFIG_MMC_UHS_SUPPORT=y
> +CONFIG_MMC_HS200_SUPPORT=y
> +CONFIG_MMC_SDHCI=y
> +CONFIG_MMC_SDHCI_ZYNQ=y
> +CONFIG_MTD=y
> +CONFIG_DM_MTD=y
> +CONFIG_SPI_FLASH_BAR=y
> +CONFIG_SPI_FLASH_STMICRO=y
> +# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
> +CONFIG_SPI_FLASH_MTD=y
> +CONFIG_PHY_ADIN=y
> +CONFIG_PHY_TI_DP83867=y
> +CONFIG_PHY_XILINX_GMII2RGMII=y
> +CONFIG_PHY_FIXED=y
> +CONFIG_DM_ETH_PHY=y
> +CONFIG_PHY_GIGE=y
> +CONFIG_XILINX_AXIEMAC=y
> +CONFIG_ZYNQ_GEM=y
> +CONFIG_PHY=y
> +CONFIG_PHY_XILINX_ZYNQMP=y
> +CONFIG_PINCTRL=y
> +CONFIG_PINCONF=y
> +CONFIG_POWER_DOMAIN=y
> +CONFIG_ZYNQMP_POWER_DOMAIN=y
> +CONFIG_DM_REGULATOR=y
> +CONFIG_DM_REGULATOR_FIXED=y
> +CONFIG_DM_PWM=y
> +CONFIG_PWM_CADENCE_TTC=y
> +CONFIG_DM_RESET=y
> +CONFIG_RESET_ZYNQMP=y
> +CONFIG_DM_RTC=y
> +CONFIG_RTC_EMULATION=y
> +CONFIG_RTC_ZYNQMP=y
> +CONFIG_SCSI=y
> +CONFIG_DM_SCSI=y
> +CONFIG_ARM_DCC=y
> +CONFIG_XILINX_UARTLITE=y
> +CONFIG_ZYNQ_SERIAL=y
> +CONFIG_SOC_XILINX_ZYNQMP=y
> +CONFIG_SPI=y
> +CONFIG_ZYNQ_SPI=y
> +CONFIG_ZYNQMP_GQSPI=y
> +CONFIG_SYSRESET=y
> +CONFIG_SYSRESET_CMD_POWEROFF=y
> +CONFIG_SYSRESET_PSCI=y
> +CONFIG_TPM2_TIS_SPI=y
> +CONFIG_USB=y
> +CONFIG_USB_XHCI_HCD=y
> +CONFIG_USB_XHCI_DWC3=y
> +CONFIG_USB_DWC3=y
> +CONFIG_USB_DWC3_GENERIC=y
> +CONFIG_USB_ULPI_VIEWPORT=y
> +CONFIG_USB_ULPI=y
> +CONFIG_USB_HOST_ETHER=y
> +CONFIG_USB_ETHER_ASIX=y
> +CONFIG_USB_GADGET=y
> +CONFIG_USB_GADGET_MANUFACTURER="Xilinx"
> +CONFIG_USB_GADGET_VENDOR_NUM=0x03FD
> +CONFIG_USB_GADGET_PRODUCT_NUM=0x0300
> +CONFIG_USB_ETHER=y
> +CONFIG_USB_ETH_CDC=y
> +CONFIG_VIDEO=y
> +# CONFIG_VIDEO_LOGO is not set
> +CONFIG_VIDEO_COPY=y
> +CONFIG_I2C_EDID=y
> +CONFIG_VIRTIO_MMIO=y
> +CONFIG_VIRTIO_NET=y
> +CONFIG_VIRTIO_BLK=y
> +CONFIG_PANIC_HANG=y
> +CONFIG_TPM=y
> +CONFIG_SPL_GZIP=y
> +CONFIG_OF_LIBFDT_OVERLAY=y
> +CONFIG_EFI_SET_TIME=y
> +CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y
> +CONFIG_EFI_CAPSULE_ON_DISK=y
> +CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y

Based on my testing I am missing
CONFIG_SF_DEFAULT_SPEED=30000000

And I am missing enabling
CONFIG_VIDEO_ZYNQMP_DPSUB=y

When we have driver for DP ported to Kria we can get cls call back.
As of now it just send some chars to terminal to reset.

Thanks,
Michal



More information about the U-Boot mailing list