1. 13 Sep, 2016 13 commits
  2. 08 Sep, 2016 1 commit
    • Tony Xie's avatar
      rockchip: fix the scu idle for rk3399 · 63ebf051
      Tony Xie authored
      As rk3399 reported the d8/octane scores drop 10% with cpu idle.
      The root cause is thc cpu cluster enter the slow mode.
      We don't need switch the clock to 24MHz if cpu cluster enter the
      retention mode. In order to improve performance, it just needs for
      cluster enter powering off mode.
      
      Also, we shouldn't do anything for hlvl if the system is off.
      
      Change-Id: I2a02962a01343abd0cba47ed63192c1cdf88b119
      63ebf051
  3. 25 Aug, 2016 5 commits
  4. 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
  5. 19 Aug, 2016 1 commit
    • Sandrine Bailleux's avatar
      Add WFI in platform's unexpected error handlers · 8c9e1af0
      Sandrine Bailleux authored
      This patch adds a WFI instruction in the default implementations of
      plat_error_handler() and plat_panic_handler(). This potentially reduces
      power consumption by allowing the hardware to enter a low-power state.
      The same change has been made to the FVP and Juno platform ports.
      
      Change-Id: Ia4e6e1e5bf1ed42efbba7d0ebbad7be8d5f9f173
      8c9e1af0
  6. 11 Aug, 2016 3 commits
    • 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
  7. 10 Aug, 2016 2 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
  8. 09 Aug, 2016 1 commit
  9. 28 Jul, 2016 1 commit
    • Caesar Wang's avatar
      rockchip: fixes typo and some bugs for suspend/resume tests · e6517abd
      Caesar Wang authored
      1. Remove the AP_PWROFF in ATF, should configure it in kernel.
      2. Save and restore the PWMs pin/regs for suspend/resume.
      3. The pmusgrf reset-hold bits needs to be released. since the
         pmusgrf reset-hold bits needs to be held.
      4. Configure the PMU power up/down cycles about delay 3ms.
      5. With the MMIO register block as one big mapping.
      6. Fix the build error with psci_entrypoint since PSCI lib updated.
      
      Fixes the commit
      9ec78bdf ("rockchip: support the suspend/resume for rk3399").
      
      Change-Id: I112806700bf433c87763aac23d22fa7e6a7f5264
      e6517abd
  10. 25 Jul, 2016 1 commit
    • Antonio Nino Diaz's avatar
      ARM platforms: Define common image sizes · 0289970d
      Antonio Nino Diaz authored
      Compile option `ARM_BOARD_OPTIMISE_MMAP` has been renamed to
      `ARM_BOARD_OPTIMISE_MEM` because it now applies not only to defines
      related to the translation tables but to the image size as well.
      
      The defines `PLAT_ARM_MAX_BL1_RW_SIZE`, `PLAT_ARM_MAX_BL2_SIZE` and
      `PLAT_ARM_MAX_BL31_SIZE` have been moved to the file board_arm_def.h.
      This way, ARM platforms no longer have to set their own values if
      `ARM_BOARD_OPTIMISE_MEM=0` and they can specify optimized values
      otherwise. The common sizes have been set to the highest values used
      for any of the current build configurations.
      
      This is needed because in some build configurations some images are
      running out of space. This way there is a common set of values known
      to work for all of them and it can be optimized for each particular
      platform if needed.
      
      The space reserved for BL2 when `TRUSTED_BOARD_BOOT=0` has been
      increased. This is needed because when memory optimisations are
      disabled the values for Juno of `PLAT_ARM_MMAP_ENTRIES` and
      `MAX_XLAT_TABLES` are higher. If in this situation the code is
      compiled in debug mode and with "-O0", the code won't fit.
      
      Change-Id: I70a3d8d3a0b0cad1d6b602c01a7ea334776e718e
      0289970d
  11. 19 Jul, 2016 4 commits
    • Soby Mathew's avatar
      Define `plat_get_syscnt_freq2()` unconditionally for ARM platforms · a4beaaff
      Soby Mathew authored
      Previously the definition of `plat_get_syscnt_freq2()` in `arm_common.c` was
      conditionally defined based on the ERROR_DEPRECATED flag. This patch makes
      this function available irrespective of the flag and removes the deprecated
      `plat_get_syscnt_freq()` definition.
      
      Change-Id: I250ca787ca1b5e867096c6ba8f2bb444db44c97b
      a4beaaff
    • Soby Mathew's avatar
      Cater for preloaded BL33 within plat_get_ns_image_entrypoint() · 48ac1df9
      Soby Mathew authored
      The PRELOADED_BL33_BASE build option allows to preload a BL33 and bypass its
      loading by BL2. In ARM standard platforms, the conditional behaviour of
      PRELOADED_BL33_BASE is moved within the implementation of
      `plat_get_ns_image_entrypoint()` so that all callers may benefit from this
      feature.
      
      Change-Id: Iea060e204ec72f8081087837854535c4e320da4e
      48ac1df9
    • Soby Mathew's avatar
      Move `arm_common.c` out of aarch64 folder · bc149bfc
      Soby Mathew authored
      This patch moves the `arm_common.c` file from `plat/arm/common/aarch64/`
      to the parent directory since the functions implemented in the file are
      not AArch64 specific. The platform makefiles are also modified for this
      change.
      
      Change-Id: I776d2e4958f59041476cf2f53a9adb5b2d304ee0
      bc149bfc
    • Soby Mathew's avatar
      Include `plat_psci_common.c` from the new location · bb2162f1
      Soby Mathew authored
      The `plat_psci_common.c` was moved to the new location `plat/common`
      and a stub file was retained at previous location for compatibility. This
      patch modifies the platform makefiles to include the file from the new
      location.
      
      Change-Id: Iabddeeb824e9a5d72d176d7c644735966c8c0699
      bb2162f1
  12. 18 Jul, 2016 4 commits
    • Soby Mathew's avatar
      Introduce `el3_runtime` and `PSCI` libraries · 532ed618
      Soby Mathew authored
      This patch moves the PSCI services and BL31 frameworks like context
      management and per-cpu data into new library components `PSCI` and
      `el3_runtime` respectively. This enables PSCI to be built independently from
      BL31. A new `psci_lib.mk` makefile is introduced which adds the relevant
      PSCI library sources and gets included by `bl31.mk`. Other changes which
      are done as part of this patch are:
      
      * The runtime services framework is now moved to the `common/` folder to
        enable reuse.
      * The `asm_macros.S` and `assert_macros.S` helpers are moved to architecture
        specific folder.
      * The `plat_psci_common.c` is moved from the `plat/common/aarch64/` folder
        to `plat/common` folder. The original file location now has a stub which
        just includes the file from new location to maintain platform compatibility.
      
      Most of the changes wouldn't affect platform builds as they just involve
      changes to the generic bl1.mk and bl31.mk makefiles.
      
      NOTE: THE `plat_psci_common.c` FILE HAS MOVED LOCATION AND THE STUB FILE AT
      THE ORIGINAL LOCATION IS NOW DEPRECATED. PLATFORMS SHOULD MODIFY THEIR
      MAKEFILES TO INCLUDE THE FILE FROM THE NEW LOCATION.
      
      Change-Id: I6bd87d5b59424995c6a65ef8076d4fda91ad5e86
      532ed618
    • Soby Mathew's avatar
      Rework type usage in Trusted Firmware · 4c0d0390
      Soby Mathew authored
      This patch reworks type usage in generic code, drivers and ARM platform files
      to make it more portable. The major changes done with respect to
      type usage are as listed below:
      
      * Use uintptr_t for storing address instead of uint64_t or unsigned long.
      * Review usage of unsigned long as it can no longer be assumed to be 64 bit.
      * Use u_register_t for register values whose width varies depending on
        whether AArch64 or AArch32.
      * Use generic C types where-ever possible.
      
      In addition to the above changes, this patch also modifies format specifiers
      in print invocations so that they are AArch64/AArch32 agnostic. Only files
      related to upcoming feature development have been reworked.
      
      Change-Id: I9f8c78347c5a52ba7027ff389791f1dad63ee5f8
      4c0d0390
    • Tony Xie's avatar
      rockchip: support the suspend/resume for rk3399 · 9ec78bdf
      Tony Xie authored
      1.Fixes the suspend/resume some bugs.
      2.Add the power domain for saving power consumption.
      3.Add cpu clusters suspend for rk3399 SoCs
      
      Change-Id: Id602779016b41d6281f4ba40a20229d909b28e46
      9ec78bdf
    • Caesar Wang's avatar
      rockchip: support plat SIP runtime service · 1760db68
      Caesar Wang authored
      Software executing in the normal world and in the trusted world at
      exception levels lower than EL3 will request runtime services using the
      SMC instruction.
      
      See the documentation here:
      https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/
      rt-svc-writers-guide.md
      
      This to be implemented as an EL3 Runtime Service in rockchip BL31
      platform port, using the "SiP Service Call" range as specified in the
      SMC Calling Convention.
      This doesn't support any SMC yet, we will support it in later.
      
      Change-Id: I0a638dd0b653c28b08f79d89f77ed7c69864017d
      1760db68
  13. 11 Jul, 2016 1 commit
  14. 08 Jul, 2016 2 commits
    • Sandrine Bailleux's avatar
      ARM CSS platforms: Map flash as execute-never by default · 91fad655
      Sandrine Bailleux authored
      On ARM CSS platforms, the whole flash used to be mapped as executable.
      This is not required, given that the flash is used to store the BL1
      and FIP images and:
      
       - The FIP is not executed in place, its images are copied to RAM
         and executed from there.
      
       - BL1 is executed in place from flash but only its code needs to be
         mapped as executable and platform code takes care of re-mapping
         BL1's read-only section as executable.
      
      Therefore, this patch now maps the flash as non-executable by default
      on these platforms. This increases security by restricting the
      executable region to what is strictly needed.
      
      This patch also adds some comments to clarify the memory mapping
      attributes on these platforms.
      
      Change-Id: I4db3c145508bea1f43fbe0f6dcd551e1aec1ecd3
      91fad655
    • Sandrine Bailleux's avatar
      Add some verbose traces in arm_setup_page_tables() · 84aaf559
      Sandrine Bailleux authored
      This patch adds some verbose traces in the arm_setup_page_tables()
      function to print the extents of the different memory regions it maps.
      
      Change-Id: Ia3ae1053e7ebf3579601ff9238b0e3791eb1e9e4
      84aaf559