arm64: zynqmp: Remove ifdef around zynqmp mmio read and write rotuines
This patch removes ifdef around mmio read and write rotuines and make them a single routine by checking the current el. This patch helps to remove ifdef around invoke_smc as well. Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
parent
a076789efe
commit
cb186e74fb
|
|
@ -110,9 +110,8 @@ unsigned int zynqmp_get_silicon_version(void)
|
||||||
#define ZYNQMP_MMIO_READ 0xC2000014
|
#define ZYNQMP_MMIO_READ 0xC2000014
|
||||||
#define ZYNQMP_MMIO_WRITE 0xC2000013
|
#define ZYNQMP_MMIO_WRITE 0xC2000013
|
||||||
|
|
||||||
#ifndef CONFIG_SPL_BUILD
|
int __maybe_unused invoke_smc(u32 pm_api_id, u32 arg0, u32 arg1, u32 arg2,
|
||||||
int invoke_smc(u32 pm_api_id, u32 arg0, u32 arg1, u32 arg2, u32 arg3,
|
u32 arg3, u32 *ret_payload)
|
||||||
u32 *ret_payload)
|
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Added SIP service call Function Identifier
|
* Added SIP service call Function Identifier
|
||||||
|
|
@ -172,28 +171,7 @@ void zynqmp_pmufw_version(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int zynqmp_mmio_write(const u32 address,
|
static int zynqmp_mmio_rawwrite(const u32 address,
|
||||||
const u32 mask,
|
|
||||||
const u32 value)
|
|
||||||
{
|
|
||||||
return invoke_smc(ZYNQMP_MMIO_WRITE, address, mask, value, 0, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
int zynqmp_mmio_read(const u32 address, u32 *value)
|
|
||||||
{
|
|
||||||
u32 ret_payload[PAYLOAD_ARG_CNT];
|
|
||||||
u32 ret;
|
|
||||||
|
|
||||||
if (!value)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
ret = invoke_smc(ZYNQMP_MMIO_READ, address, 0, 0, 0, ret_payload);
|
|
||||||
*value = ret_payload[1];
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
int zynqmp_mmio_write(const u32 address,
|
|
||||||
const u32 mask,
|
const u32 mask,
|
||||||
const u32 value)
|
const u32 value)
|
||||||
{
|
{
|
||||||
|
|
@ -208,9 +186,40 @@ int zynqmp_mmio_write(const u32 address,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int zynqmp_mmio_read(const u32 address, u32 *value)
|
static int zynqmp_mmio_rawread(const u32 address, u32 *value)
|
||||||
{
|
{
|
||||||
*value = readl((ulong)address);
|
*value = readl((ulong)address);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
int zynqmp_mmio_write(const u32 address,
|
||||||
|
const u32 mask,
|
||||||
|
const u32 value)
|
||||||
|
{
|
||||||
|
if (IS_ENABLED(CONFIG_SPL_BUILD) || current_el() == 3)
|
||||||
|
return zynqmp_mmio_rawwrite(address, mask, value);
|
||||||
|
else if (!IS_ENABLED(CONFIG_SPL_BUILD))
|
||||||
|
return invoke_smc(ZYNQMP_MMIO_WRITE, address, mask,
|
||||||
|
value, 0, NULL);
|
||||||
|
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int zynqmp_mmio_read(const u32 address, u32 *value)
|
||||||
|
{
|
||||||
|
u32 ret_payload[PAYLOAD_ARG_CNT];
|
||||||
|
u32 ret;
|
||||||
|
|
||||||
|
if (!value)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (IS_ENABLED(CONFIG_SPL_BUILD) || current_el() == 3) {
|
||||||
|
ret = zynqmp_mmio_rawread(address, value);
|
||||||
|
} else if (!IS_ENABLED(CONFIG_SPL_BUILD)) {
|
||||||
|
ret = invoke_smc(ZYNQMP_MMIO_READ, address, 0, 0,
|
||||||
|
0, ret_payload);
|
||||||
|
*value = ret_payload[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue