1. 20 Dec, 2019 5 commits
    • Paul Beesley's avatar
      spm-mm: Remove mm_svc.h header · 962c44e7
      Paul Beesley authored
      
      
      The contents of this header have been merged into the spm_mm_svc.h
      header file.
      
      Change-Id: I01530b2e4ec1b4c091ce339758025e2216e740a4
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      962c44e7
    • Paul Beesley's avatar
      spm-mm: Refactor spm_svc.h and its contents · 0bf9f567
      Paul Beesley authored
      
      
      Change-Id: I91c192924433226b54d33e57d56d146c1c6df81b
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      0bf9f567
    • Paul Beesley's avatar
      spm-mm: Refactor secure_partition.h and its contents · aeaa225c
      Paul Beesley authored
      
      
      Before adding any new SPM-related components we should first do
      some cleanup around the existing SPM-MM implementation. The aim
      is to make sure that any SPM-MM components have names that clearly
      indicate that they are MM-related. Otherwise, when adding new SPM
      code, it could quickly become confusing as it would be unclear to
      which component the code belongs.
      
      The secure_partition.h header is a clear example of this, as the
      name is generic so it could easily apply to any SPM-related code,
      when it is in fact SPM-MM specific.
      
      This patch renames the file and the two structures defined within
      it, and then modifies any references in files that use the header.
      
      Change-Id: I44bd95fab774c358178b3e81262a16da500fda26
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      aeaa225c
    • Paul Beesley's avatar
      spm: Remove SPM Alpha 1 prototype and support files · 538b0020
      Paul Beesley authored
      
      
      The Secure Partition Manager (SPM) prototype implementation is
      being removed. This is preparatory work for putting in place a
      dispatcher component that, in turn, enables partition managers
      at S-EL2 / S-EL1.
      
      This patch removes:
      
      - The core service files (std_svc/spm)
      - The Resource Descriptor headers (include/services)
      - SPRT protocol support and service definitions
      - SPCI protocol support and service definitions
      
      Change-Id: Iaade6f6422eaf9a71187b1e2a4dffd7fb8766426
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      Signed-off-by: default avatarArtsem Artsemenka <artsem.artsemenka@arm.com>
      538b0020
    • Paul Beesley's avatar
      Remove dependency between SPM_MM and ENABLE_SPM build flags · 3f3c341a
      Paul Beesley authored
      
      
      There are two different implementations of Secure Partition
      management in TF-A. One is based on the "Management Mode" (MM)
      design, the other is based on the Secure Partition Client Interface
      (SPCI) specification. Currently there is a dependency between their
      build flags that shouldn't exist, making further development
      harder than it should be. This patch removes that
      dependency, making the two flags function independently.
      
      Before: ENABLE_SPM=1 is required for using either implementation.
              By default, the SPCI-based implementation is enabled and
              this is overridden if SPM_MM=1.
      
      After: ENABLE_SPM=1 enables the SPCI-based implementation.
             SPM_MM=1 enables the MM-based implementation.
             The two build flags are mutually exclusive.
      
      Note that the name of the ENABLE_SPM flag remains a bit
      ambiguous - this will be improved in a subsequent patch. For this
      patch the intention was to leave the name as-is so that it is
      easier to track the changes that were made.
      
      Change-Id: I8e64ee545d811c7000f27e8dc8ebb977d670608a
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      3f3c341a
  2. 19 Dec, 2019 1 commit
  3. 18 Dec, 2019 2 commits
  4. 17 Dec, 2019 19 commits
  5. 14 Dec, 2019 11 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: a64: power: Use fdt_for_each_subnode · 79b85465
      Samuel Holland authored
      
      
      This simplifies the code a bit. Verified to produce the same binary.
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Change-Id: Ie1ec1ce2ea39c46525840906826c90a8a7eff287
      79b85465
    • Samuel Holland's avatar
      allwinner: a64: power: Remove obsolete register check · 494c8233
      Samuel Holland authored
      As of a561e41b
      
       ("allwinner: power: add enable switches for DCDC1/5")
      there are no longer regulators without an enable register provided.
      Since it seems reasonable that this will continue to be the case, drop
      the check.
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Change-Id: Icd7ec26fc6450d053e6e6d855fc16229b1d65a39
      494c8233
    • Samuel Holland's avatar
      allwinner: a64: power: Remove duplicate DT check · 3bea03e7
      Samuel Holland authored
      
      
      should_enable_regulator() is already checked in the regulators subnode
      loop before setup_regulator() is called, so there's no need to check it
      again here.
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Change-Id: Idb8b8a6e435246f4fb226bc84813449d80a0a977
      3bea03e7
    • 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
    • Samuel Holland's avatar
      allwinner: a64: power: Make sunxi_turn_off_soc static · df77a954
      Samuel Holland authored
      
      
      The function is only used in this file, and it doesn't make sense for it
      to be used anywhere else.
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Change-Id: Iab18f082911edcdbc37ceeaff8c512be68e0cb0f
      df77a954
    • Samuel Holland's avatar
      allwinner: Merge duplicate code in sunxi_power_down · 818e6732
      Samuel Holland authored
      
      
      The action of last resort isn't going to change between SoCs. This moves
      that code back to the PSCI implementation, where it more obviously
      matches the code in sunxi_system_reset().
      
      The two error messages say essentially the same thing anyway.
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Change-Id: I62ac35fdb5ed78a016e9b18281416f1dcea38a4a
      818e6732
    • Samuel Holland's avatar
      allwinner: Clean up PMIC-related error handling · 4538c498
      Samuel Holland authored
      
      
      - Check the return value from sunxi_init_platform_r_twi().
      - Print the PMIC banner before doing anything that might fail.
      - Remove double prefixes in error messages.
      - Consistently omit the trailing period.
      - No need to print the unknown SoC's ID, since we already did that
        earlier in bl31_platform_setup().
      - On the other hand, do print the ID of the unknown PMIC.
      - Try to keep the messages concise, as the large string size in these
        files was causing the firmware to spill into the next page.
      - Downgrade the banner from NOTICE to INFO. It's purely informational,
        and people should be using debug builds on untested hardware anyway.
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Change-Id: Ib909408a5fdaebe05470fbce48d245dd0bf040eb
      4538c498
    • Samuel Holland's avatar
      allwinner: Synchronize PMIC enumerations · c0e109f2
      Samuel Holland authored
      
      
      Ensure that the default (zero) value represents the case where we take
      no action. Previously, if a PLAT=sun50i_a64 build was booted on an
      unknown SoC ID, it would be treated as an H5 at shutdown.
      
      This removes some duplicate code and fixes error propagation on H6.
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Change-Id: I4e51d8a43a56eccb0d8088593cb9908e52e782bc
      c0e109f2
    • Samuel Holland's avatar
      allwinner: Enable clock before resetting I2C/RSB · eb75518d
      Samuel Holland authored
      
      
      The clock must be running for the module to be reset.
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Change-Id: Ic8fafc946f3a1a697174b91288e357ffa033ab9a
      eb75518d
  6. 13 Dec, 2019 2 commits