summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-09-12Merge pull request #699 from soby-mathew/sm/flush_plat_psci_opsdanh-arm
Flush `psci_plat_pm_ops` after initialization
2016-09-10rockchip: fixes some typoCaesar Wang
As the checkpatch reports the warning or error. plat/rockchip/common/plat_pm.c:96: ERROR: do not set execute permissions for source files plat/rockchip/rk3399/drivers/pmu/pmu.c:294: ERROR: do not set execute permissions for source files plat/rockchip/common/plat_pm.c:286: WARNING: line over 80 characters plat/rockchip/common/plat_pm.c:287: WARNING: line over 80 characters Change-Id: Ib347da21c56551c31df3f90f03777b13c75d5c26
2016-09-10rockchip: SIP call use 32 bit return value for rk3399Caesar Wang
for compatible 32bit and 64bit, we use 0x82xxxxxx as function ID, we modify SIP call function return value to 32 bit. Change-Id: Ib99b03a9ea423853aaa296dcc634ee82c622a552
2016-09-10rockchip: set gpio2 ~ gpio4 to input and pull none modeCaesar Wang
For save power cosumption, if gpio power supply shut down, we need to set gpio2 ~ gpio4 to input and HiZ status when suspend, and recovery they status when rusume. we do it base on apio pass from loader. Change-Id: I59fd2395e5e37e63425472a39f519822c9197e4c
2016-09-10rockchip: support disable/enable specific gpio when suspend/resumeCaesar Wang
some specific board need to disable/enable specific gpio when suspend/resume, so we add this function, bootloader can pass the specific gpio, and we can handle these gpios in bl31 suspend/resuem function. Change-Id: I373b03ef9202ee4a05a2b9caacdfa01b47ee2177
2016-09-10rockchip/rk3399: improve gpio driver and support get pull mode functionCaesar Wang
We may need gpio pull mode later, so add this function. Besides fix a set pull mode bug, and save gpio clock gate, when operate the gpio, we will enable gpio clock, when finish gpio operate, restore gpio clock gate status. Change-Id: Ia1d602804f571a17f5ddc499908663b968b02974
2016-09-09Flush `psci_plat_pm_ops` after initializationSoby Mathew
The `psci_plat_pm_ops` global pointer is initialized during cold boot by the primary CPU and will be accessed by the secondary CPUs before enabling data cache during warm boot. This patch adds a missing data cache flush of `psci_plat_psci_ops` after initialization during psci_setup() so that secondaries can see the updated `psci_plat_psci_ops` pointer. Fixes ARM-software/tf-issues#424 Change-Id: Id4554800b5646302b944115a33be69507d53cedb
2016-09-08Merge pull request #697 from rockchip-linux/fixes-scu-idledavidcunado-arm
rockchip: fix the scu idle for rk3399
2016-09-08rockchip: fix the scu idle for rk3399Tony Xie
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
2016-09-01Merge pull request #695 from soby-mathew/sm/AArch32_fixesdavidcunado-arm
Fixes for AArch32 port of TF
2016-08-31AArch32: Fix SCTLR context initializationSoby Mathew
This patch fixes a bug in context management library when writing SCTLR register during context initialization. The write happened prior to initialization of the register context pointer. This resulted in the compiler optimizing the write sequence from the final binary and hence SCTLR remains uninitialized when entering normal world. The bug is fixed by doing the initialization of the register context pointer earlier in the sequence. Change-Id: Ic7465593a74534046b79f40446ffa1165c52ed76
2016-08-31AArch32: resolve build error when LOG_LEVEL=50Soby Mathew
This patch resolves a build error in Trusted Firmware when `ARCH=aarch32` and LOG_LEVEL >= 50. Change-Id: I62a23ded4a25304533cdcc5ff11442aee041709b
2016-08-31Merge pull request #689 from yatharth-arm/yk/plat_report_expndavidcunado-arm
Remove looping around `plat_report_exception`
2016-08-31Merge pull request #690 from soby-mathew/sm/level_sel_xlatdavidcunado-arm
Automatically select initial xlation lookup level
2016-08-31Merge pull request #693 from dp-arm/pmf-asmdavidcunado-arm
Move pmf headers to include/lib/pmf and add assembler helper
2016-08-26Merge pull request #692 from dp-arm/masterdavidcunado-arm
fiptool: Fix typo in create and update usage functions
2016-08-26Merge pull request #691 from rockchip-linux/fixes-suspend/resume-bugsdavidcunado-arm
Fixes suspend/resume bugs
2016-08-26Add assembler helper to calculate PMF timestamp offsetdp-arm
Given the service name and timestamp id, this assembler macro calculates the offset into a memory region where the per-cpu timestamp value is located. Change-Id: I47f6dfa2a17be182675e2ca0489d6eed42433209
2016-08-26Move pmf headers to include/lib/pmfdp-arm
More headers will be needed soon so better to move these to their own directory to avoid cluttering include/lib. Change-Id: I6a72dc5b602d6f51954cf60aadd1beb52a268670
2016-08-25Merge pull request #684 from rockchip-linux/add-sdram-for-rk3399davidcunado-arm
rockchip: add dram driver for rk3399
2016-08-25fiptool: Fix typo in create and update usage functionsdp-arm
It should be 'fiptool' instead of 'fiptfool'. Change-Id: I84ce1b6aaae5b8b33e5781bfe4f9e9cf462edb03
2016-08-25rockchip: handle some interrupt before enter power mode for rk3399Caesar Wang
For the PMU design, we don't expect to get the interrupts before enter the power mode. Since that will cause the confusion for the state machine in the power mode. Change-Id: Id8dee79ae617a66271b5caf92caf35f520f45099
2016-08-25rockchip: remove the unused code for rk3399Caesar Wang
Change-Id: I986d64df9dc62354d50ccea0468b90f090a44160 Signed-off-by: Caesar Wang <wxt@rock-chips.com>
2016-08-25rockchip: on rk3399 enable Schmitt trigger on 32 kHz clockCaesar Wang
If we don't enable the Schmitt trigger on the 32 kHz clock then systems won't always resume from suspend properly. Presumably anything else in the system that relies on the 32 kHz clock also will have problems without the Schmitt trigger enabled. Enable it always since having the 32 kHz clock on GPIO0_A0 isn't exactly an optional feature, so all boards using rk3399 will need this. Change-Id: Idc18c6cd1adc5be5f60efd9cb805d83d5cd40129
2016-08-25rockchip: enable or disable auto power down base on frequencyCaesar Wang
add auto_pd_dis_freq parameter, we can pass a frequency from kernel to disable or enable ddr auto power down function. Change-Id: Ie30914701336c59047c380381c6b75dd76a89562
2016-08-25rockchip: rk3399: add dram driverCaesar Wang
add dram driver, and kernel can through sip function talk to bl31 to do ddr frequency scaling. and ddr auto powerdown. Change-Id: I0d0f2869aed95e336c6e23ba96a9310985c84840
2016-08-25rockchip: on rk3399 init the PMU counts at boot; set 24M/32k properlyCaesar Wang
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
2016-08-23Automatically select initial xlation lookup levelAntonio Nino Diaz
Instead of hardcoding a level 1 table as the base translation level table, let the code decide which level is the most appropriate given the virtual address space size. As the table granularity is 4 KB, this allows the code to select level 0, 1 or 2 as base level for AArch64. This way, instead of limiting the virtual address space width to 39-31 bits, widths of 48-25 bit can be used. For AArch32, this change allows the code to select level 1 or 2 as the base translation level table and use virtual address space width of 32-25 bits. Also removed some unused definitions related to translation tables. Fixes ARM-software/tf-issues#362 Change-Id: Ie3bb5d6d1a4730a26700b09827c79f37ca3cdb65
2016-08-22Remove looping around `plat_report_exception`Yatharth Kochar
This patch removes the tight loop that calls `plat_report_exception` in unhandled exceptions in AArch64 state. The new behaviour is to call the `plat_report_exception` only once followed by call to `plat_panic_handler`. This allows platforms to take platform-specific action when there is an unhandled exception, instead of always spinning in a tight loop. Note: This is a subtle break in behaviour for platforms that expect `plat_report_exception` to be continuously executed when there is an unhandled exception. Change-Id: Ie2453804b9b7caf9b010ee73e1a90eeb8384e4e8
2016-08-19Merge pull request #687 from sandrine-bailleux-arm/sb/panic-handlerdanh-arm
Add WFI in platform's unexpected error handlers
2016-08-19Add WFI in platform's unexpected error handlersSandrine Bailleux
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
2016-08-18Merge pull request #686 from danh-arm/dh/remove-inv-dcache-after-authdanh-arm
Remove dcache invalidation after image authentication
2016-08-18Merge pull request #678 from soby-mathew/sm/PSCI_AArch32danh-arm
Introduce AArch32 support for PSCI library
2016-08-17Remove dcache invalidation after image authenticationDan Handley
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
2016-08-17Merge pull request #685 from sandrine-bailleux-arm/sb/base-fvp-7.6danh-arm
Move up to Base FVP version 7.6
2016-08-17Merge pull request #683 from dp-arm/dp/fiptooldanh-arm
fiptool: Suppress verbose messages during normal build
2016-08-17Merge pull request #682 from sudeep-holla/gicv3_ns_intrdanh-arm
gicv3: disable Group1 NonSecure interrupts during core powerdown
2016-08-17Merge pull request #680 from hzhuang1/emmc_cmd23_v2danh-arm
emmc: support CMD23
2016-08-16Move up to Base FVP version 7.6Sandrine Bailleux
This patch updates the User Guide to move up from version 7.2 to 7.6 of the Base FVP. Change-Id: I792b2250deb4836266e14b40992ae59a5ab5f729
2016-08-15fiptool: Suppress verbose messages during normal builddp-arm
The output is shown only when built with V=1. Change-Id: I17fef10df6f127f07956a78b478ff3cadba4bd61
2016-08-15AArch32: Enable build at top level Makefile for FVPSoby Mathew
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
2016-08-12Merge pull request #679 from rockchip-linux/support-pwm-for-rk3399danh-arm
Support pwm for rk3399
2016-08-12emmc: support CMD23Haojian Zhuang
Support CMD23. When CMD23 is used, CMD12 could be avoided. Two scenarios: 1. CMD17 for single block, CMD18 + CMD12 for multiple blocks. 2. CMD23 + CMD18 for both single block and multiple blocks. The emmc_init() should initialize whether CMD23 is supported or not. Signed-off-by: Haojian Zhuang <haojian.zhuang@linaro.org>
2016-08-11gicv3: disable Group1 NonSecure interrupts during core powerdownSudeep Holla
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
2016-08-11rockchip: fix the reset-hold release for rk3399 resumeCaesar Wang
The pmusgrf reset-hold bits needs to be released, since the pmusgrf reset-hold bits needs to be held. Change-Id: Ia1eccc8fba18294f26b4cc07d47bc5e513dd9a1f
2016-08-11rockchip: fix the power up/dowm cnt for rk3399Caesar Wang
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
2016-08-11rockchip: update to handle PWMs for rk3399Caesar Wang
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
2016-08-10AArch32: Add FVP support for SP_MINSoby Mathew
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
2016-08-10AArch32: Add essential ARM platform and FVP supportSoby Mathew
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
2016-08-10AArch32: add a minimal secure payload (SP_MIN)Soby Mathew
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