1. 21 May, 2021 1 commit
    • Igor Opaniuk's avatar
      feat(plat/imx8m): add SiP call for secondary boot · 9ce232fe
      Igor Opaniuk authored
      In iMX8MM it is possible to have two copies of bootloader in
      SD/eMMC and switch between them. The switch is triggered either
      by the BootROM in case the bootloader image is faulty OR can be
      enforced by the user. To trigger that switch the
      PERSIST_SECONDARY_BOOT bit should be set in GPR10 SRC register.
      As the bit is retained after WARM reset, that permits to control
      BootROM behavior regarding what boot image it will boot after
      reset: primary or secondary.
      
      This is useful for reliable bootloader A/B updates, as it permits
      switching between two copies of bootloader at different offsets of
      the same storage.
      
      If the PERSIST_SECONDARY_BOOT is 0, the boot ROM uses address
      0x8400 for the primary image. If the PERSIST_SECONDARY_BOOT is 1,
      the boot ROM reads that secondary image table from address 0x8200
      on the boot media and uses the address specified in the table for
      the secondary image.
      
      Secondary Image Table contains the sector of secondary bootloader
      image, exluding the offset to that image (explained below in the
      note). To generate the Secondary Image Table, use e.g.:
      $ printf '\x0\x0\x0\x0\x0\x0\x0\x0\x33\x22\x11'
               '\x00\x00\x10\x0\x0\x00\x0\x0\x0'
        > /tmp/sit.bin
      $ hexdump  -vC /tmp/sit.bin
        00000000  00 00 00 00
        00000004  00 00 00 00
        00000008  33 22 11 00 <--- This is the "tag"
        0000000c  00 10 00 00 <--- This is the "firstSectorNumber"
        00000010  00 00 00 00
      
      You can also use NXP script from [1][2] imx-mkimage tool for
      SIT generation. Note that the firstSectorNumber is NOT the offset
      of the IVT, but an offset of the IVT decremented by Image Vector
      Table offset (Table 6-25. Image Vector Table Offset and Initial
      Load Region Size for iMX8MM/MQ), so for secondary SPL copy at
      offset 0x1042 sectors, firstSectorNumber must be 0x1000
      (0x42 sectors * 512 = 0x8400 bytes offset).
      
      In order to test redundant boot board should be closed and
      SD/MMC manufacture mode disabled, as secondary boot is not
      supported in the SD/MMC manufacture mode, which can be disabled
      by blowing DISABLE_SDMMC_MFG (example for iMX8MM):
      > fuse prog -y 2 1 0x00800000
      
      For additional details check i.MX 8M Mini Apllication Processor
      Reference Manual, 6.1.5.4.5 Redundant boot support for
      expansion device chapter.
      
      [1] https://source.codeaurora.org/external/imx/imx-mkimage/
      
      
      [2] scripts/gen_sit.sh
      Change-Id: I0a5cea7295a4197f6c89183d74b4011cada52d4c
      Signed-off-by: default avatarIgor Opaniuk <igor.opaniuk@foundries.io>
      9ce232fe
  2. 20 Aug, 2020 1 commit
  3. 19 Aug, 2020 1 commit
  4. 10 Jul, 2020 1 commit
    • Jacky Bai's avatar
      plat: imx8m: Move the gpc hw reg to a separate header file · 9e5c3e92
      Jacky Bai authored
      
      
      Although the GPC provides the similar functions for all the
      i.MX8M SoC family, the HW register offset and bit defines
      still have some slight difference, so move the hw reg
      offset & most of the bitfield defines in 'gpc_reg.h' that
      is specific to each SoC.
      Signed-off-by: default avatarJacky Bai <ping.bai@nxp.com>
      Change-Id: I291c435fe98c2f6e6ff8fe0c715ff3a83daa6a0f
      9e5c3e92
  5. 30 Mar, 2020 1 commit
    • Alexei Fedorov's avatar
      TF-A GICv3 driver: Introduce makefile · a6ea06f5
      Alexei Fedorov authored
      
      
      This patch moves all GICv3 driver files into new added
      'gicv3.mk' makefile for the benefit of the generic driver
      which can evolve in the future without affecting platforms.
      The patch adds GICv3 driver configuration flags
      'GICV3_IMPL', 'GICV3_IMPL_GIC600_MULTICHIP' and
      'GICV3_OVERRIDE_DISTIF_PWR_OPS' described in
      'GICv3 driver options' section of 'build-option.rst'
      document.
      
      NOTE: Platforms with GICv3 driver need to be modified to
      include 'drivers/arm/gic/v3/gicv3.mk' in their makefiles.
      
      Change-Id: If055f6770ff20f5dee5a3c99ae7ced7cdcac5c44
      Signed-off-by: default avatarAlexei Fedorov <Alexei.Fedorov@arm.com>
      a6ea06f5
  6. 10 Mar, 2020 1 commit
  7. 25 Feb, 2020 1 commit
  8. 24 Jan, 2020 1 commit
  9. 05 Nov, 2019 1 commit
  10. 04 Jul, 2019 1 commit
  11. 28 Jun, 2019 1 commit
  12. 21 May, 2019 1 commit
  13. 20 May, 2019 2 commits
  14. 13 May, 2019 1 commit
  15. 09 May, 2019 1 commit
  16. 08 May, 2019 2 commits
  17. 08 Apr, 2019 1 commit
  18. 12 Mar, 2019 1 commit
  19. 22 Feb, 2019 1 commit
  20. 24 Jan, 2019 1 commit
  21. 15 Jan, 2019 1 commit
    • Anson Huang's avatar
      imx: make imx uart work for debug mode · 2e8ab4f5
      Anson Huang authored
      
      
      With DEBUG_CONSOLE enabled, build will fail for imx8mq platform:
      
      ./build/imx8mq/release/bl31/imx8mq_bl31_setup.o:
      In function `bl31_early_platform_setup2':
      imx8mq_bl31_setup.c:(.text.bl31_early_platform_setup2+0x40):
      	undefined reference to `console_uart_register'
      Makefile:741: recipe for target 'build/imx8mq/release/bl31/bl31.elf' failed
      make: *** [build/imx8mq/release/bl31/bl31.elf] Error 1
      
      Besides, the .console_flush callback needs to be added to avoid
      panic when debug mode is enabled, since the console_flush() will
      call it without checking whether the function callback is valid.
      Signed-off-by: default avatarAnson Huang <Anson.Huang@nxp.com>
      2e8ab4f5
  22. 04 Jan, 2019 1 commit
    • Antonio Nino Diaz's avatar
      Sanitise includes across codebase · 09d40e0e
      Antonio Nino Diaz authored
      Enforce full include path for includes. Deprecate old paths.
      
      The following folders inside include/lib have been left unchanged:
      
      - include/lib/cpus/${ARCH}
      - include/lib/el3_runtime/${ARCH}
      
      The reason for this change is that having a global namespace for
      includes isn't a good idea. It defeats one of the advantages of having
      folders and it introduces problems that are sometimes subtle (because
      you may not know the header you are actually including if there are two
      of them).
      
      For example, this patch had to be created because two headers were
      called the same way: e0ea0928 ("Fix gpio includes of mt8173 platform
      to avoid collision."). More recently, this patch has had similar
      problems: 46f9b2c3 ("drivers: add tzc380 support").
      
      This problem was introduced in commit 4ecca339
      
       ("Move include and
      source files to logical locations"). At that time, there weren't too
      many headers so it wasn't a real issue. However, time has shown that
      this creates problems.
      
      Platforms that want to preserve the way they include headers may add the
      removed paths to PLAT_INCLUDES, but this is discouraged.
      
      Change-Id: I39dc53ed98f9e297a5966e723d1936d6ccf2fc8f
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      09d40e0e
  23. 05 Dec, 2018 1 commit
    • Bai Ping's avatar
      plat: imx: Add i.MX8MQ basic support · 81136819
      Bai Ping authored
      
      
      i.MX8MQ is new SOC of NXP's i.MX8M family based on
      A53. It can provide industry-leading audio, voice
      and video processing for applications that scale
      from consumer home audio to industrial building
      automation and mobile computers
      
      this patchset add the basic supoort to boot up
      the 4 X A53. more feature will be added later.
      Signed-off-by: default avatarBai Ping <ping.bai@nxp.com>
      81136819