Skip to content
  1. Feb 10, 2022
  2. Feb 09, 2022
  3. Feb 07, 2022
  4. Feb 04, 2022
  5. Feb 03, 2022
    • Jorge Troncoso's avatar
      fix(ufs): don't zero out the write buffer · cd3ea90b
      Jorge Troncoso authored
      
      
      Previously ufs_write_blocks was memsetting the write buffer before
      calling ufs_prepare_cmd, causing zeros to be written to UFS. This change
      deletes the memset call so the original buffer contents get written to
      UFS.
      
      Signed-off-by: default avatarJorge Troncoso <jatron@google.com>
      Change-Id: I3299f11b30e6d7d409408ce11a6759c88607ee18
      cd3ea90b
    • Manish Pandey2's avatar
      Merge changes from topic "msm8916" into integration · e0a6a512
      Manish Pandey2 authored
      * changes:
        feat(msm8916): allow booting secondary CPU cores
        feat(msm8916): setup hardware for non-secure world
        feat(gic): allow overriding GICD_PIDR2_GICV2 address
        feat(msm8916): initial platform port
        docs(msm8916): new port for Qualcomm Snapdragon 410
      e0a6a512
    • Stephan Gerhold's avatar
      feat(msm8916): allow booting secondary CPU cores · a758c0b6
      Stephan Gerhold authored
      
      
      Add support for the PSCI CPU_ON call to allow booting secondary CPU
      cores. On cold boot they need to be booted with a special register
      sequence. Also, the "boot remapper" needs to be configured to point to
      the BL31_BASE, so the CPUs actually start executing BL31 after reset.
      
      Change-Id: I406c508070ccb046bfdefd51554f12e1db671fd4
      Signed-off-by: default avatarStephan Gerhold <stephan@gerhold.net>
      a758c0b6
    • Stephan Gerhold's avatar
      feat(msm8916): setup hardware for non-secure world · af644731
      Stephan Gerhold authored
      
      
      Booting e.g. Linux in the non-secure world does not work with the
      msm8916 port yet because essential hardware is not made available to
      the non-secure world. Add more platform initialization to:
      
        - Initialize the GICv2 and mark secure interrupts.
          Only secure SGIs/PPIs so far. Override the GICD_PIDR2_GICV2
          register address in platform_def.h to avoid a failing assert()
          because of a (hardware) mistake in Qualcomm's GICv2 implementation.
      
        - Make a timer frame available to the non-secure world.
          The "Qualcomm Timer" (QTMR) implements the ARM generic timer
          specification, so the standard defines (CNTACR_BASE etc)
          can be used.
      
        - Make parts of the "APCS" register region available to the
          non-secure world, e.g. for CPU frequency control implemented
          in Linux.
      
        - Initialize a platform-specific register to route all SMMU context
          bank interrupts to the non-secure interrupt pin, since all control
          of the SMMUs is left up to the non-secure world for now.
      
      Change-Id: Icf676437b8e329dead06658e177107dfd0ba4f9d
      Signed-off-by: default avatarStephan Gerhold <stephan@gerhold.net>
      af644731
    • Stephan Gerhold's avatar
      feat(gic): allow overriding GICD_PIDR2_GICV2 address · a7521bd5
      Stephan Gerhold authored
      
      
      Older Qualcomm SoCs seem to have a custom Qualcomm implementation of
      the GICv2 specification. It's mostly compliant but unfortunately it
      looks like a mistake was made with the GICD_PIDR registers. PIDR2 is
      defined to be at offset 0xFE8, but the Qualcomm implementation has it
      at 0xFD8.
      
      It looks like the entire PIDR0-3/4-7 block is swapped compared to the
      ARM implementation: PIDR0 starts at 0xFD0 (instead of 0xFE0)
      and PIDR4 starts at 0xFE0 (instead of 0xFD0).
      
      Actually this only breaks a single assert in gicv2_main.c that checks
      the GIC version: assert((gic_version == ARCH_REV_GICV2) ...
      In release mode everything seems to work correctly.
      
      To keep the code generic, allow affected platforms to override the
      GICD_PIDR2_GICV2 register address in platform_def.h. Since this header
      is typically included very early (e.g. from assert.h), add an #ifndef
      so the definitions from platform_def.h takes priority.
      
      Change-Id: I2929a8c1726f8d751bc28796567eb30b81eca2fe
      Signed-off-by: default avatarStephan Gerhold <stephan@gerhold.net>
      a7521bd5
    • Daniel Boulby's avatar
      test(el3-runtime): dit is retained on world switch · 4d482156
      Daniel Boulby authored
      
      
      Add tsp service to check the value of the PSTATE DIT bit is as
      expected and toggle it's value. This is used to ensure that
      the DIT bit is maintained during a switch from the Normal to
      Secure worlds and back.
      
      Change-Id: I4e8bdfa6530e5e75925c0079d4fa2795133c5105
      Signed-off-by: default avatarDaniel Boulby <daniel.boulby@arm.com>
      4d482156
    • Daniel Boulby's avatar
      fix(el3-runtime): set unset pstate bits to default · 7d33ffe4
      Daniel Boulby authored
      
      
      During a transition to a higher EL some of the PSTATE bits are not set
      by hardware, this means that their state may be leaked from lower ELs.
      This patch sets those bits to a default value upon entry to EL3.
      
      This patch was tested using a debugger to check the PSTATE values
      are correctly set. As well as adding a test in the next patch to
      ensure the PSTATE in lower ELs is still maintained after this change.
      
      Change-Id: Ie546acbca7b9aa3c86bd68185edded91b2a64ae5
      Signed-off-by: default avatarDaniel Boulby <daniel.boulby@arm.com>
      7d33ffe4
    • Stephan Gerhold's avatar
      feat(msm8916): initial platform port · dddba19a
      Stephan Gerhold authored
      
      
      Introduce the bare mimimum base of the msm8916 BL31 port. This is
      pretty much just a standard platform "skeleton" with CPU/memory
      initialization and an UART driver. This allows booting into
      e.g. U-Boot with working UART output.
      
      Note that the plat/qti/msm8916 port is completely separate and does not
      make use of anything in plat/qti/common at the moment. The main reason
      for that is that plat/qti/common is heavily focused around having a
      binary "qtiseclib" component, while the MSM8916 port is fully
      open-source (and therefore somewhat limited to publicly documented
      functionality).
      
      In the future it might be possible to re-use some of the open-source
      parts in plat/qti/common (e.g. spmi_arb.c or pm_ps_hold.c) but it's
      not strictly required for the basic functionality supported so far.
      
      Change-Id: I7b4375df0f947b3bd1e55b0b52b21edb6e6d175b
      Signed-off-by: default avatarStephan Gerhold <stephan@gerhold.net>
      dddba19a
    • Stephan Gerhold's avatar
      docs(msm8916): new port for Qualcomm Snapdragon 410 · fa145398
      Stephan Gerhold authored
      The Qualcomm Snapdragon 410 is Qualcomm's first 64-bit SoC, released
      in 2014 with four ARM Cortex-A53 cores. There are differents variants
      (MSM8916, APQ8016(E), ...) that are all very similar. A popular device
      based on APQ8016E is the DragonBoard 410c single-board computer,
      but the SoC is also used in various mid-range smartphones/tablets.
      
      This commit adds documentation for a minimal, community-maintained port
      of TF-A/BL31 for MSM8916. The actual platform port is added in the
      following four separate small commits to simplify the review process.
      The code is primarily based on the information from the public
      Snapdragon 410E Technical Reference Manual [1], combined with a lot of
      trial and error to actually make it work.
      
      Note that this port is a pure community effort without any
      commercial interests and is not related to Qualcomm in any way.
      The main motivation for this port is to have a minimal, updatable
      firmware since this old chip does not receive many updates anymore from
      Qualcomm. It works quite well for many use cases so I am willing to
      maintain it as a "code owner". I have also added Nikita Travkin as
      second code owner to help with reviews.
      
      The main limitation so far is the lack of memory protection for TF-A.
      This is similar to the ports for the Raspberry Pi but in this case not
      a lack of hardware support but rather a lack of documentation. However,
      this does not limit the usefulness of the port when used as a minimal
      PSCI implementation.
      
      [1]: https://developer.qualcomm.com/download/sd410/snapdragon-410e-technical-reference-manual.pdf
      
      
      
      Change-Id: I676adf86061638cfc2f3ae8615470d145e84f172
      Signed-off-by: default avatarStephan Gerhold <stephan@gerhold.net>
      fa145398
    • Lionel Debieve's avatar
      feat(st): update the security based on new compatible · 812daf91
      Lionel Debieve authored
      
      
      From the new binding, the RCC become secured based on the new
      compatible. This must be done only from the secure OS initialisation.
      
      Signed-off-by: default avatarLionel Debieve <lionel.debieve@st.com>
      Change-Id: I7f0a62f22bfcca638ddaefc9563df00f89f01653
      812daf91
    • Yann Gautier's avatar
      feat(st): add early console in BL2 · c768b2b2
      Yann Gautier authored
      
      
      Add an early UART console to ease debug before UART is fully configured.
      This is done under flag STM32MP_EARLY_CONSOLE in the first STM32MP1
      platform function called (bl2_el3_early_platform_setup()). It uses the
      parameters defined for crash console: STM32MP_DEBUG_USART* macros.
      
      Signed-off-by: default avatarYann Gautier <yann.gautier@st.com>
      Change-Id: Id6be62368723a0499e97bbf56fb52c166fcbdfad
      c768b2b2
  6. Feb 02, 2022
  7. Feb 01, 2022
  8. Jan 31, 2022
Loading