1. 31 8月, 2021 29 次提交
  2. 27 8月, 2021 1 次提交
    • T
      Merge tag 'xilinx-for-v2021.10-rc3' of https://gitlab.denx.de/u-boot/custodians/u-boot-microblaze · b9cb74a5
      Tom Rini 提交于
      Xilinx changes for v2021.10-rc3
      
      xilinx:
      - Disable CONFIG_ARCH_FIXUP_FDT_MEMORY
      - Print information about cpu via soc drivers and enable DISPLAY_CPUINFO
      - Wire infrastructure for DTB_RESELECT and MULTI_DTB_FIT
      
      zynq:
      - Wire single QSPI
      - Use power-source instead of io-standard properties
      - Enable nor on zc770-xm012
      
      zynqmp:
      - Change handling around multi_boot()
      - Setup offset for u-boot.itb in spi
      - Generate run time dfu_alt_info for capsule update
      - Use explicit values for enums (zynqmp_firmware.h)
      - Enable RTC/SHA1/BUTTON/BUTTON_GPIO command
      - Disable WDT driver by default
      - Bind usb/scsi via preboot because of EFI
      - DT updates/fixes
      - Add soc driver
      - Fix SPL SPI boot mode
      
      versal:
      - Add soc driver
      
      sdhci:
      - Update tap delay programming for zynq_sdhci driver
      
      cmd:
      - Fix RTC uclass handling in date command
      - Update pwm help message
      - Update reset help message
      
      watchdog:
      - Fix wwdt compilation
      
      rtc:
      - Deal with seq alias in rtc uclass
      - Add zynqmp RTC driver
      
      fdt:
      - Add kernel-doc for fdt_fixup_memory_banks()
      b9cb74a5
  3. 26 8月, 2021 10 次提交
    • M
      xilinx: zynqmp: Enable stack relocation to DDR · 229cb5c6
      Michal Simek 提交于
      There is no space in OCM for SPL stack because the space in OCM is occupied
      by TF-A. That's why move relocate stack to DDR to 0x18000000 address
      and also enable SPL_SIZE_LIMIT not to be more then 0xfffea000 which is
      default address for TFA.
      
      It is good to summarize current DDR usage in SPL flow.
      0-0x80000 is used for BSS
       (CONFIG_SPL_BSS_START_ADDR, CONFIG_SPL_BSS_MAX_SIZE)
      0x100000 is used for DTB passing address
       (CONFIG_XILINX_OF_BOARD_DTB_ADDR)
      0x17fffe70 - CONFIG_SPL_STACK_R_ADDR - is used for GD
      0x18000000 is used for SPL stack
       (CONFIG_SPL_STACK_R_ADDR)
      0x20000000-0x21000000 is used for SPL malloc area
       (CONFIG_SYS_SPL_MALLOC_START, CONFIG_SYS_SPL_MALLOC_SIZE)
      Signed-off-by: NMichal Simek <michal.simek@xilinx.com>
      229cb5c6
    • M
      xilinx: zynqmp: Update descriptions for u-boot.its · 060fa0e1
      Michal Simek 提交于
      Use TF-A instead of ATF in description. And update generic description with
      removing ATF because also configurations without it are supported.
      Signed-off-by: NMichal Simek <michal.simek@xilinx.com>
      060fa0e1
    • M
      xilinx: common: Enabling generic function for DT reselection · 52ff1626
      Michal Simek 提交于
      U-Boot support board detection at run time and based on it change DT.
      This feature is implemented for SOM Kria platforms which contain two
      eeproms which contain information about SOM module and CC (Carrier card).
      Full U-Boot starts with minimal DT file defined by
      CONFIG_DEFAULT_DEVICE_TREE which is available in multi DTB fit image.
      It is using default setup of board_name variable initializaed to
      DEVICE_TREE which corresponds to CONFIG_DEFAULT_DEVICE_TREE option.
      
      When DTB_RESELECT is enabled board_detection() is called. Keep it your mind
      that this code is called before relocation. board_detection() is calling
      xilinx_read_eeprom() which fills board_info (xilinx_board_description)
      structure which are parsed in board_name_decode().
      Based on DT configuration and amount of nvmemX aliases name of the board is
      composed by concatenating CONFIG_SYS_BOARD "-" <board_name> "-rev"
      <board_revision> "-" <cc_name> "-rev" <cc_revision>.
      
      If CC is not present or more are available it keeps going.
      
      When board name is composed and returned from board_name_decode() it is
      assigned to board_name variable which is used by
      board_fit_config_name_match() which is called via fdtdec_setup() when it
      goes over config options in multi dtb FIT image.
      
      From practical point of view multi DTB image is key point here which has to
      contain configs for detected combinations. Unfortunately as of now they
      have to be full DTBs and DTBOs are not supported.
      
      That's why configuration like:
      config_X {
      	description = "zynqmp-board-cc";
      	fdt = "board", "cc";
      };
      
      needs to be squashed together with:
      fdtoverlay -o zynqmp-board-cc -i arch/arm/dts/zynqmp-board.dtb \
      arch/arm/dts/zynqmp-cc.dtbo
      
      and only one dtb is in fit:
      config_X {
      	description = "zynqmp-board-cc";
      	fdt = "board-cc";
      };
      
      For creating multi DTBs fit image use mkimage -E, e.g.:
      mkimage -E -f all.its all.dtb
      
      When DTB_RESELECT is enabled xilinx_read_eeprom() is called before
      relocation and it uses calloc for getting a buffer. Because this is dynamic
      memory it is not relocated that's why xilinx_read_eeprom() is called again
      as the part of board_init(). This second read with calloc buffer placed in
      proper position board_late_init_xilinx() can setup u-boot variables as
      before.
      Signed-off-by: NMichal Simek <michal.simek@xilinx.com>
      52ff1626
    • M
      xilinx: zynqmp: Generate different u-boot.itb for MULTI_DTB_FIT · e6921361
      Michal Simek 提交于
      When MULTI_DTB_FIT is enabled fit-dtb.blob fit image is created which
      contain all DTBs listed by CONFIG_OF_LIST. And with DTB_RELESELECT there is
      a need to handle it as one file with DTBs in it not as separate DTBs in
      u-boot.its/itb.
      That's why extend mkimage_fit_atf.sh to generate u-boot.itb correctly.
      Signed-off-by: NMichal Simek <michal.simek@xilinx.com>
      e6921361
    • M
      arm64: dts: Make sure that all DTBs are 64bit aligned · f28a22d5
      Michal Simek 提交于
      Start of DTB should be 64bit aligned that's why also make sure that end is
      also 64bit aligned. It is not required but it is nice thing to do.
      Signed-off-by: NMichal Simek <michal.simek@xilinx.com>
      f28a22d5
    • M
      Makefile: Align fit-dtb.blob and u-boot.itb by 64bits · 570c4636
      Michal Simek 提交于
      Enabling MULTI_DTB_FIT and DTB_RESELECT can end up with multi DTBs in FIT
      image placed and aligned only by 32bits (4bytes). Based on device tree
      specification:
      "Specifically, the memory reservation block shall be aligned to an 8-byte boundary
      and the structure block to a 4-byte boundary."
      is 64bit (8bytes) alignment required. That's why make sure that
      fit-dtb.blob and u-boot.itb as our primary target images for Xilinx ZynqMP
      are all 64bit aligned.
      Signed-off-by: NMichal Simek <michal.simek@xilinx.com>
      Reviewed-by: NAndre Przywara <andre.przywara@arm.com>
      570c4636
    • M
      xilinx: zynqmp: Check that DT is 64bit aligned · 5bd5ee02
      Michal Simek 提交于
      DT needs to be 64bit aligned. If it is not fdt64_to_cpu will fail when try
      to read information about reserved memory. The system ends in exception
      without any clue what's going it. That's why detect not aligned DT and
      panic to show where the issue is coming from.
      Signed-off-by: NMichal Simek <michal.simek@xilinx.com>
      5bd5ee02
    • M
      xilinx: Add support for generic board detection · 88232532
      Michal Simek 提交于
      Add support for changing DT at run time. It is done via board_detection()
      which returns platform_id and platform_version which can be used via
      board_name_decode() to compose board_local_name string which corresponds
      with DT which is should be used.
      Signed-off-by: NMichal Simek <michal.simek@xilinx.com>
      88232532
    • M
      xilinx: common: Free allocated structure · b262863b
      Michal Simek 提交于
      There is no need to keep fru_content around. Free this space.
      Signed-off-by: NMichal Simek <michal.simek@xilinx.com>
      b262863b
    • M
      xilinx: common: Change board_info[] handling · d9c93c9e
      Michal Simek 提交于
      Origin code was allocating only pointers to struct xilinx_board_description
      and there was separate allocation for structure self and freeing in case of
      failure.
      The code is directly allocating space for all structures by one calloc to
      simlify logic.
      Signed-off-by: NMichal Simek <michal.simek@xilinx.com>
      d9c93c9e