1. 25 Aug, 2016 2 commits
  2. 24 Aug, 2016 1 commit
    • Caesar Wang's avatar
      rockchip: on rk3399 init the PMU counts at boot; set 24M/32k properly · 0786d688
      Caesar Wang authored
      In a previous change we mistakenly thought that PMU_24M_EN_CFG directly
      controlled whether the PMU counts ran off the 32k vs. 24M clock.
      Apparently that's not true.  Real logic is now documented in code.
      
      Also in the previous change we mistaknely though that PMU_24M_EN_CFG was
      normally supposed to be 1 and we should "restore" it at resume time.
      This is a terrible idea and made the system totally unreliable after
      resume.  Apparently PMU_24M_EN_CFG should always be 0 with all the
      current code and settings.
      
      Let's fix the above two problems.  While we're changing all of this,
      let's also:
      
      1. Init at boot time.  Many of these counts are used when the system is
         running normally.  We want the behavior at boot to match the behavior
         after suspend/resume.
      
      2. Init CPU counts to be 1 us.  Although old code was trying to set this
         to 1 ms (1000x slower) at suspend/resume time, we've been testing the
         kernel with 1 us for a long time now.  That's because the kernel (at
         boot time) set these values to 24.  Let's keep at 24 until we know
         that's wrong.
      
      3. Init GPU counts to be 1 us.  Old code wasn't touching the GPU, but as
         documented in comments it makes sense to init here.  Do it.
      
      4. Document the crap out of this code, since the SoC's behavior is
         confusing and poorly documented in the TRM.
      
      5. Increase some stabilization times to 30 ms (from 3 ms).  It's unclear
         that a full 30 ms is needed, but let's be safe for now.
      
      This also inits the counts for the GPU.
      
      (Thanks to Doug's patch that come from https://crosreview.com/372381)
      
      Change-Id: Id1bc159a5a99916aeab043895e5c4585c4adab22
      0786d688
  3. 19 Aug, 2016 2 commits
  4. 18 Aug, 2016 2 commits
  5. 17 Aug, 2016 5 commits
    • Dan Handley's avatar
      Remove dcache invalidation after image authentication · ad4494dc
      Dan Handley authored
      At the end of successful image authentication in load_auth_image(),
      the data cache for the virtual address range corresponding to the
      image is invalidated (by a call to inv_dcache_range()). The intent
      seems to be to ensure the data caches do not contain any sensitive
      data used during authentication, which subsequent code can read.
      However, this same address range is already flushed (cleaned and
      invalidated by a call to flush_dcache_range()) at the end of
      load_image(), and the subsequent invalidate has no functional
      effect.
      
      This patch removes the redundant call to inv_dcache_range(). It
      also moves the flush_dcache_range() call from the end of load_image()
      to the end of load_auth_image(), so the image data will remain in
      the caches during authentication, improving performance.
      
      This also improves the comments that explain the rationale for
      calling flush_dcache_range() after image loading/authentication.
      
      Change-Id: I14f17ad2935075ef6f3d1327361c5088bfb2d284
      ad4494dc
    • danh-arm's avatar
      Merge pull request #685 from sandrine-bailleux-arm/sb/base-fvp-7.6 · 974603b5
      danh-arm authored
      Move up to Base FVP version 7.6
      974603b5
    • danh-arm's avatar
      Merge pull request #683 from dp-arm/dp/fiptool · a5794cc1
      danh-arm authored
      fiptool: Suppress verbose messages during normal build
      a5794cc1
    • danh-arm's avatar
      Merge pull request #682 from sudeep-holla/gicv3_ns_intr · 6700ae65
      danh-arm authored
      gicv3: disable Group1 NonSecure interrupts during core powerdown
      6700ae65
    • danh-arm's avatar
      Merge pull request #680 from hzhuang1/emmc_cmd23_v2 · d3ca949f
      danh-arm authored
      emmc: support CMD23
      d3ca949f
  6. 16 Aug, 2016 1 commit
  7. 15 Aug, 2016 2 commits
    • dp-arm's avatar
      fiptool: Suppress verbose messages during normal build · c2427cb0
      dp-arm authored
      The output is shown only when built with V=1.
      
      Change-Id: I17fef10df6f127f07956a78b478ff3cadba4bd61
      c2427cb0
    • Soby Mathew's avatar
      AArch32: Enable build at top level Makefile for FVP · 9d29c227
      Soby Mathew authored
      This patch enables the AArch32 build including SP_MIN in the
      top level Makefile. The build flag `ARCH` now can specify either
      `aarch64`(default) or `aarch32`. Currently only FVP AEM model is
      supported for AArch32 build. Another new build flag `AARCH32_SP`
      is introduced to specify the AArch32 secure payload to be built.
      
      Change-Id: Ie1198cb9e52d7da1b79b93243338fc3868b08faa
      9d29c227
  8. 12 Aug, 2016 2 commits
  9. 11 Aug, 2016 4 commits
    • Sudeep Holla's avatar
      gicv3: disable Group1 NonSecure interrupts during core powerdown · 65d68ca6
      Sudeep Holla authored
      As per the GICv3 specification, to power down a processor using GICv3
      and allow automatic power-on if an interrupt must be sent to a processor,
      software must set Enable to zero for all interrupt groups(by writing to
      GICC_CTLR or ICC_IGRPEN{0,1}_EL1/3 as appropriate.
      
      Also, NonSecure EL1 software may not be aware of the CPU power state
      details and fail to choose right states that require quiescing the CPU
      interface. So it's preferred that the PSCI implementation handles it as
      it is fully aware of the CPU power states.
      
      This patch adds disabling of Group1 NonSecure interrupts during processor
      power down along with Group0 and Group1 Secure interrupts so that all the
      interrupt groups are handled at once as per specification.
      
      Change-Id: Ib564d773c9c4c41f2ca9471451c030e3de75e641
      65d68ca6
    • Caesar Wang's avatar
      rockchip: fix the reset-hold release for rk3399 resume · 78f7017c
      Caesar Wang authored
      The pmusgrf reset-hold bits needs to be released, since the
      pmusgrf reset-hold bits needs to be held.
      
      Change-Id: Ia1eccc8fba18294f26b4cc07d47bc5e513dd9a1f
      78f7017c
    • Caesar Wang's avatar
      rockchip: fix the power up/dowm cnt for rk3399 · 545bff0e
      Caesar Wang authored
      Sometimes this will cause the long delay for suspend/resume.
      Since the 24M OCS will be turned off in power mode.
      Also, remove the ERROR_DEPRECATED config define.
      
      Change-Id: I78f21c35912c2250972e551695cdacc7bc4c020a
      545bff0e
    • Caesar Wang's avatar
      rockchip: update to handle PWMs for rk3399 · 5d3b1067
      Caesar Wang authored
      This patch updates some things for rk3399, as following:
      
      1) Add the new file to handle the pwm. (e.g. the pwm regulator)
      Make sure that good deal with the pwm related things.
      Also, remove some pwm setting for pmu.c.
      
      2) Set the plls slow mode and bypass in suspend, and restore them.
      
      Change-Id: I112806700bf433c87763aac23d22fa7e6a7f5264
      5d3b1067
  10. 10 Aug, 2016 13 commits
    • Soby Mathew's avatar
      AArch32: Add FVP support for SP_MIN · 181bbd41
      Soby Mathew authored
      This patch implements the support for SP_MIN in FVP. The SP_MIN platform
      APIs are implemented and the required makefile support is added for FVP.
      
      Change-Id: Id50bd6093eccbd5e38894e3fd2b20d5baeac5452
      181bbd41
    • Soby Mathew's avatar
      AArch32: Add essential ARM platform and FVP support · 877cf3ff
      Soby Mathew authored
      This patch adds AArch32 support for FVP and implements common platform APIs
      like `plat_get_my_stack`, `plat_set_my_stack`, `plat_my_core_cos` for AArch32.
      Only Multi Processor(MP) implementations of these functions are considered in
      this patch. The ARM Standard platform layer helpers are implemented for
      AArch32 and the common makefiles are modified to cater for both AArch64 and
      AArch32 builds. Compatibility with the deprecated platform API is not
      supported for AArch32.
      
      Change-Id: Iad228400613eec91abf731b49e21a15bcf2833ea
      877cf3ff
    • Soby Mathew's avatar
      AArch32: add a minimal secure payload (SP_MIN) · c11ba852
      Soby Mathew authored
      This patch adds a minimal AArch32 secure payload SP_MIN. It relies on PSCI
      library to initialize the normal world context. It runs in Monitor mode
      and uses the runtime service framework to handle SMCs. It is added as
      a BL32 component in the Trusted Firmware source tree.
      
      Change-Id: Icc04fa6b242025a769c1f6c7022fde19459c43e9
      c11ba852
    • Soby Mathew's avatar
      AArch32: Add support to PSCI lib · 727e5238
      Soby Mathew authored
      This patch adds AArch32 support to PSCI library, as follows :
      
      * The `psci_helpers.S` is implemented for AArch32.
      
      * AArch32 version of internal helper function `psci_get_ns_ep_info()` is
        defined.
      
      * The PSCI Library is responsible for the Non Secure context initialization.
        Hence a library interface `psci_prepare_next_non_secure_ctx()` is introduced
        to enable EL3 runtime firmware to initialize the non secure context without
        invoking context management library APIs.
      
      Change-Id: I25595b0cc2dbfdf39dbf7c589b875cba33317b9d
      727e5238
    • Soby Mathew's avatar
      AArch32: Add support in TF libraries · e33b78a6
      Soby Mathew authored
      This patch adds AArch32 support to cpu ops, context management,
      per-cpu data and spinlock libraries. The `entrypoint_info`
      structure is modified to add support for AArch32 register
      arguments. The CPU operations for AEM generic cpu in AArch32
      mode is also added.
      
      Change-Id: I1e52e79f498661d8f31f1e7b3a29e222bc7a4483
      e33b78a6
    • Soby Mathew's avatar
      AArch32: Add console driver · 66be868e
      Soby Mathew authored
      This patch adds console drivers including the pl011 driver
      for the AArch32 mode.
      
      Change-Id: Ifd22520d370fca3e73dbbf6f2d97d6aee65b67dd
      66be868e
    • Soby Mathew's avatar
      AArch32: Enable GIC and TZC support · 367d0ffb
      Soby Mathew authored
      This patch modifies GICv3 and TZC drivers to add AArch32 support.
      No modifications are required for the GICv2 driver for AArch32 support.
      The TZC driver assumes that the secure world is running in Little-Endian
      mode to do 64 bit manipulations. Assertions are present to validate the
      assumption.
      
      Note: The legacy GICv3 driver is not supported for AArch32.
      
      Change-Id: Id1bc75a9f5dafb9715c9500ca77b4606eb1e2458
      367d0ffb
    • Soby Mathew's avatar
      AArch32: Add SMCC context · 3e3616ab
      Soby Mathew authored
      This patch defines a SMCC context to save and restore
      registers during a SMC call. It also adds appropriate helpers
      to save and restore from this context for use by AArch32
      secure payload and BL stages.
      
      Change-Id: I64c8d6fe1d6cac22e1f1f39ea1b54ee1b1b72248
      3e3616ab
    • Soby Mathew's avatar
      AArch32: Add API to invoke runtime service handler · 1ae0a49a
      Soby Mathew authored
      This patch adds an API in runtime service framework to
      invoke the registered handler corresponding to the SMC function
      identifier. This is helpful for AArch32 because the number of
      arguments required by the handler is more than registers
      available as per AArch32 program calling conventions and
      requires the use of stack. Hence this new API will do the
      necessary argument setup and invoke the appropriate
      handler. Although this API is primarily intended for AArch32,
      it can be used for AArch64 as well.
      
      Change-Id: Iefa15947fe5a1df55b0859886e677446a0fd7241
      1ae0a49a
    • Soby Mathew's avatar
      AArch32: Add tf_printf support · bc202b44
      Soby Mathew authored
      The tf_printf library uses 64 bit division to print numbers
      in appropriate formats but AArch32 mode cannot do 64 bit division
      natively. Hence this patch adds additional number printing routines
      to handle AArch32 mode in tf_printf library. The decimal format
      printing capability is limited to 32 bit integers whereas 64 bits
      are supported in hexadecimal format. The library assumes that
      secure world is running in Little-Endian mode to do bit
      manipulations on 64 bit. Suitable assertions are present to
      enforce this assumption.
      
      Change-Id: I55a21e448cef4915d1834d76e48a84ccf0bec36d
      bc202b44
    • Soby Mathew's avatar
      AArch32: Add translation table library support · b2bca61d
      Soby Mathew authored
      This patch adds translation library supports for AArch32 platforms.
      The library only supports long descriptor formats for AArch32.
      The `enable_mmu_secure()` enables the MMU for secure world with
      `TTBR0` pointing to the populated translation tables.
      
      Change-Id: I061345b1779391d098e35e7fe0c76e3ebf850e08
      b2bca61d
    • Soby Mathew's avatar
      AArch32: Add assembly helpers · f24307de
      Soby Mathew authored
      This patch adds various assembly helpers for AArch32 like :
      
      * cache management : Functions to flush, invalidate and clean
      cache by MVA. Also helpers to do cache operations by set-way
      are also added.
      
      * stack management: Macros to declare stack and get the current
      stack corresponding to current CPU.
      
      * Misc: Macros to access co processor registers in AArch32,
      macros to define functions in assembly, assert macros, generic
      `do_panic()` implementation and function to zero block of memory.
      
      Change-Id: I7b78ca3f922c0eda39beb9786b7150e9193425be
      f24307de
    • Soby Mathew's avatar
      AArch32: Add essential Arch helpers · 031dbb12
      Soby Mathew authored
      This patch adds the essential AArch32 architecture helpers
      arch.h and arch_helpers.h and modifies `_types.h` to add AArch32
      support.
      
      A new build option `ARCH` is defined in the top level makefile to
      enable the component makefiles to choose the right files based on the
      Architecture it is being build for. Depending on this flag, either
      `AARCH32` or `AARCH64` flag is defined by the Makefile. The default
      value of `ARCH` flag is `aarch64`. The AArch32 build support will be
      added in a later patch.
      
      Change-Id: I405e5fac02db828a55cd25989b572b64cb005241
      031dbb12
  11. 09 Aug, 2016 6 commits
    • Soby Mathew's avatar
      Move SIZE_FROM_LOG2_WORDS macro to utils.h · c45f627d
      Soby Mathew authored
      This patch moves the macro SIZE_FROM_LOG2_WORDS() defined in
      `arch.h` to `utils.h` as it is utility macro.
      
      Change-Id: Ia8171a226978f053a1ee4037f80142c0a4d21430
      c45f627d
    • Soby Mathew's avatar
      Move spinlock library code to AArch64 folder · 12ab697e
      Soby Mathew authored
      This patch moves the assembly exclusive lock library code
      `spinlock.S` into architecture specific folder `aarch64`.
      A stub file which includes the file from new location is
      retained at the original location for compatibility. The BL
      makefiles are also modified to include the file from the new
      location.
      
      Change-Id: Ide0b601b79c439e390c3a017d93220a66be73543
      12ab697e
    • Soby Mathew's avatar
      Migrate platform makefile to new console driver location · b1271091
      Soby Mathew authored
      This patch migrates the upstream platform makefiles to include the
      console drivers from the new location in ARM Trusted Firmware code
      base.
      
      Change-Id: I866d6c4951e475de1f836ce8a8c1d5e6da9577e3
      b1271091
    • Soby Mathew's avatar
      Move console drivers to AArch64 folder · 9c94d3b3
      Soby Mathew authored
      This patch moves the various assembly console drivers
      into `aarch64` architecture specific folder. Stub files,
      which include files from new location, are retained at the
      original location for platform compatibility reasons.
      
      Change-Id: I0069b6c1c0489ca47f5204d4e26e3bc3def533a8
      9c94d3b3
    • Soby Mathew's avatar
      Fix the translation table library for wraparound cases · 20002655
      Soby Mathew authored
      This patch fixes the translation table library for wraparound cases. These
      cases are not expected to occur on AArch64 platforms because only the
      48 bits of the 64 bit address space are used. But it is a possibility for
      AArch32 platforms.
      
      Change-Id: Ie7735f7ba2977019381e1c124800381471381499
      20002655
    • danh-arm's avatar
      Merge pull request #676 from hzhuang1/fix_io_unaligned · ee3e9359
      danh-arm authored
      io: block: fix unaligned buffer
      ee3e9359