1. 20 Oct, 2018 2 commits
    • Andre Przywara's avatar
      allwinner: Adjust memory mapping to fit into 256MB · c3af6b00
      Andre Przywara authored
      
      
      At the moment we map as much of the DRAM into EL3 as possible, however
      we actually don't use it. The only exception is the secure DRAM for
      BL32 (if that is configured).
      
      To decrease the memory footprint of ATF, we save on some page tables by
      reducing the memory mapping to the actually required regions: SRAM, device
      MMIO, secure DRAM and U-Boot (to be used later).
      This introduces a non-identity mapping for the DRAM regions.
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      c3af6b00
    • 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
  2. 28 Sep, 2018 1 commit
  3. 19 Sep, 2018 1 commit
    • Andre Przywara's avatar
      drivers: i2c: mentor: move platform code into header files · dfc0fb27
      Andre Przywara authored
      
      
      At the moment we have two I2C stub drivers (for the Allwinner and the
      Marvell platform), which #include the actual .c driver file.
      Change this into the more usual design, by renaming and moving the stub
      drivers into platform specific header files and including these from the
      actual driver file. The platform specific include directories make sure
      the driver picks up the right header automatically.
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      dfc0fb27
  4. 17 Sep, 2018 2 commits
    • Andre Przywara's avatar
      allwinner: sun50i_h6: initialise I2C just before powering down · 159c5249
      Andre Przywara authored
      
      
      Even though we initialise the platform part and the I2C controller
      itself at boot time, we actually only access the bus on power down.
      Meanwhile a rich OS might have configured the I2C pins differently or
      even disabled the controller.
      So repeat the platform setup and controller initialisation just before
      we actually access the bus to power off the system. This is safe,
      because at this point the rich OS should no longer be running.
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      159c5249
    • Andre Przywara's avatar
      allwinner: sun50i_h6: improve I2C setup · 1a910bce
      Andre Przywara authored
      
      
      Drop the unnecessary check for the I2C pins being already configured as
      I2C pins (we actually don't care).
      Also avoid resetting *every* peripheral that is covered by the PRCM reset
      controller, instead just clear the one line connected to the I2C controller.
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      1a910bce
  5. 07 Sep, 2018 3 commits
  6. 20 Jul, 2018 1 commit
  7. 03 Jul, 2018 1 commit
    • Andre Przywara's avatar
      allwinner: Add Allwinner H6 SoC support · bed42a5d
      Andre Przywara authored
      
      
      The H6 is Allwinner's most recent SoC. It shares most peripherals with the
      other ARMv8 Allwinner SoCs (A64/H5), but has a completely different memory
      map.
      
      Introduce a separate platform target, which includes a different header
      file to cater for the address differences. Also add the new build target
      to the documentation.
      
      The new ATF platform name is "sun50i_h6".
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      bed42a5d
  8. 28 Jun, 2018 8 commits
  9. 23 Jun, 2018 1 commit
  10. 15 Jun, 2018 5 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 platform PSCI functions required for SMP · 560581ec
      Samuel Holland authored
      
      
      The reset vector entry point is preserved across CPU resets, so it only
      needs to be set once at boot.
      
      Hotplugged CPUs are not actually powered down, but are put in a wfi with
      the GIC disconnected.
      
      With this commit, Linux is able to enable, hotplug and use all four CPUs.
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      560581ec
    • 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
    • Samuel Holland's avatar
      allwinner: Introduce basic platform support · 58032586
      Samuel Holland authored
      
      
      This platform supports Allwinner's SoCs with ARMv8 cores. So far they
      all sport a single cluster of Cortex-A53 cores.
      
      "sunxi" is the original code name used for this platform, and since it
      appears in the Linux kernel and in U-Boot as well, we use it here as a
      short file name prefix and for identifiers.
      
      This port includes BL31 support only. U-Boot's SPL takes the role of the
      primary loader, also doing the DRAM initialization. It then loads the
      rest of the firmware, namely ATF and U-Boot (BL33), then hands execution
      over to ATF.
      
      This commit includes the basic platform code shared across all SoCs.
      There is no platform.mk yet.
      
      [Andre: moved files into proper directories, supported RESET_TO_BL31,
      	various clean ups and simplifications ]
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      58032586