mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-27 07:15:20 +00:00
fix(tegra210): mark bits [23:17] as zero for Fast SMCs
Per SMCCC documentation, bits [23:17] must be zero for Fast
SMCs. Other values are reserved for future use. Ensure that
these bits are zeroes for TEGRA_SIP_PMC_COMMANDS.
Commit f8a35797
introduced a check to return error if these
bits are not zero, thus breaking Tegra210 platforms. This
patch fixes the anomaly.
Change-Id: I19edc3b33c999a6fee6b86184233fba146316466
Signed-off-by: Kalyani Chidambaram Vaidyanathan <kalyanic@nvidia.com>
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
This commit is contained in:
parent
dcf430656c
commit
cb6c8efc4f
1 changed files with 5 additions and 4 deletions
|
@ -33,8 +33,7 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Tegra210 SiP SMCs
|
* Tegra210 SiP SMCs
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
#define TEGRA_SIP_PMC_COMMANDS_LEGACY U(0xC2FEFE00)
|
#define TEGRA_SIP_PMC_COMMANDS U(0xC200FE00)
|
||||||
#define TEGRA_SIP_PMC_COMMANDS U(0xC2FFFE00)
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* This function is responsible for handling all T210 SiP calls
|
* This function is responsible for handling all T210 SiP calls
|
||||||
|
@ -55,10 +54,12 @@ int plat_sip_handler(uint32_t smc_fid,
|
||||||
if (!ns)
|
if (!ns)
|
||||||
SMC_RET1(handle, SMC_UNK);
|
SMC_RET1(handle, SMC_UNK);
|
||||||
|
|
||||||
if ((smc_fid == TEGRA_SIP_PMC_COMMANDS) || (smc_fid == TEGRA_SIP_PMC_COMMANDS_LEGACY)) {
|
if (smc_fid == TEGRA_SIP_PMC_COMMANDS) {
|
||||||
|
|
||||||
/* check the address is within PMC range and is 4byte aligned */
|
/* check the address is within PMC range and is 4byte aligned */
|
||||||
if ((x2 >= TEGRA_PMC_SIZE) || (x2 & 0x3))
|
if ((x2 >= TEGRA_PMC_SIZE) || (x2 & 0x3)) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
switch (x2) {
|
switch (x2) {
|
||||||
/* Black listed PMC registers */
|
/* Black listed PMC registers */
|
||||||
|
|
Loading…
Add table
Reference in a new issue