1. 25 Mar, 2021 1 commit
    • Andre Przywara's avatar
      allwinner: A64: Limit FDT checks to reduce code size · 8fa5592b
      Andre Przywara authored
      
      
      The upcoming refactoring to support the new H616 SoCs will push the A64
      build over the edge, by using more than the 48KB of SRAM available.
      
      To reduce the code size, set some libfdt options that aim to reduce
      sanity checks (for saving code space):
      - ASSUME_LATEST: only allow v17 DTBs (as created by dtc)
      - ASSUME_NO_ROLLBACK: don't prepare for failed DT additions
      - ASSUME_LIBFDT_ORDER: assume sane ordering, as done by dtc
      
      Change-Id: I12c93ec09e7587c5ae71e54947f817c32ce5fd6d
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      8fa5592b
  2. 14 Dec, 2019 3 commits
    • Samuel Holland's avatar
      allwinner: h6: power: Switch to using the AXP driver · fb23b104
      Samuel Holland authored
      
      
      Chip ID checking and poweroff work just like they did before.
      Regulators are now enabled just like on A64/H5.
      
      This changes the signatures of the low-level register read/write
      functions to match the interface expected by the common driver.
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Change-Id: I14d63d171a094fa1375904928270fa3e21761646
      fb23b104
    • Samuel Holland's avatar
      allwinner: Convert AXP803 regulator setup code into a driver · 0bc752c9
      Samuel Holland authored
      
      
      Previously, the A64/H5 and H6 platforms' PMIC setup code was entirely
      independent. However, some H6 boards also need early regulator setup.
      
      Most of the register interface and all of the device tree traversal code
      can be reused between the AXP803 and AXP805. The main difference is the
      hardware bus interface, so that part is left to the platforms. The
      remainder is moved into a driver.
      
      I factored out the bits that were obviously specific to the AXP803;
      additional changes for compatibility with other PMICs can be made as
      needed.
      
      The only functional change is that rsb_init() now checks the PMIC's chip
      ID register against the expected value. This was already being done in
      the H6 version of the code.
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Change-Id: Icdcf9edd6565f78cccc503922405129ac27e08a2
      0bc752c9
    • Samuel Holland's avatar
      allwinner: Build PMIC bus drivers only in BL31 · 18fbfefb
      Samuel Holland authored
      
      
      These are used by the PMIC setup code, which runs during BL31
      initialization, and the PSCI shutdown code, also a part of BL31.
      They can't be needed before BL31, or it wouldn't be possible to boot.
      Allwinner platforms don't generally build anything but BL31 anyway, but
      this change improves clarity and consistency with allwinner-common.mk.
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Change-Id: I24f1d9ca8b4256e44badf5218d04d8690082babf
      18fbfefb
  3. 20 Oct, 2018 2 commits
    • Andre Przywara's avatar
      allwinner: A64: Add AXP803 PMIC support to power off the board · eae5fe79
      Andre Przywara authored
      
      
      Boards with the Allwinner A64 SoC are mostly paired with an AXP803 PMIC,
      which allows to programmatically power down the board.
      
      Use the newly introduced RSB driver to detect and program the PMIC on
      boot, then later to turn off the main voltage rails when receiving a
      PSCI SYSTEM_POWER_OFF command.
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      eae5fe79
    • Andre Przywara's avatar
      allwinner: Unify platform.mk files · a80490c5
      Andre Przywara authored
      
      
      For the two different platforms we support in the Allwinner port we
      mostly rely on header files covering the differences. This leads to the
      platform.mk files in the respective directories to be almost identical.
      
      To avoid further divergence and make sure that one platform doesn't
      break accidentally, let's create a shared allwinner-common.mk file and
      include that from the platform directory.
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      a80490c5
  4. 28 Sep, 2018 1 commit
  5. 07 Sep, 2018 1 commit
  6. 15 Jun, 2018 3 commits
    • Andre Przywara's avatar
      allwinner: Add security setup · acb8b3ca
      Andre Przywara authored
      
      
      Some peripherals are TrustZone aware, so they need to be configured to
      be accessible from non-secure world, as we don't need any of them being
      exclusive to the secure world.
      This affects some clocks, DMA channels and the Secure Peripheral
      Controller (SPC). The latter controls access to most devices, but is not
      active unless booting with the secure boot fuse burnt.
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      acb8b3ca
    • Samuel Holland's avatar
      allwinner: Add functions to control CPU power/reset · 333d66cf
      Samuel Holland authored
      
      
      sun50i_cpu_on will be used by the PSCI implementation to initialize
      secondary cores for SMP. Unfortunately, sun50i_cpu_off is not usable by
      PSCI directly, because it is not possible for a CPU to use this function
      to power itself down. Power cannot be shut off until the outputs are
      clamped, and MMIO does not work once the outputs are clamped.
      
      But at least CPU0 can shutdown the other cores early in the BL31 boot
      process and before shutting down the system.
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      333d66cf
    • Samuel Holland's avatar
      allwinner: Add Allwinner A64 support · 64b3d9d8
      Samuel Holland authored
      
      
      The Allwinner A64 SoC is quite popular on single board computers.
      It comes with four Cortex-A53 cores in a singe cluster and the usual
      peripherals for set-top box/tablet SoC.
      
      The ATF platform target is called "sun50i_a64".
      
      [Andre: adapted to amended directory layout, removed unneeded definitions ]
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      64b3d9d8