[PATCH v1] imx8: scu_api: sync sc_rm_is_pad_owned api change

From: Ye Li ye.li@nxp.com
SCFW has fixed a overflow issue in sc_rm_is_pad_owned API. This requires u-boot to update API implementation, since it will cause compatible issue. Otherwise all pad checking will have problem and cause pad setting not continue.
Due to the compatible issue, the new u-boot only works with new SCFW (API version: 1.21 and later).
old scfw + old u-boot: API overflow issue old scfw + new u-boot, or new scfw + old u-boot: API compatible issue new scfw + new u-boot: Working
Signed-off-by: Ye Li ye.li@nxp.com Reviewed-by : Jason Liu Jason.hui.liu@nxp.com Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com
--- I stumbled over this one when working on the apalis-imx8 boot issue fix and support refresh [1] where I noticed that using the latest SCFW Ethernet won't come up. Through manual testing, I identified SCFW 1.3.1 to still work fine so I settled with that for the time being. Re-visiting this SCFW incompatibility issue again now I stumbled over this downstream commit [2] which I believe would be very suitable for upstreaming as well. With that latest SCFW 1.14.0 works fine again. So here it goes.
[1] https://patchwork.ozlabs.org/project/uboot/cover/20221212000930.45505-1-marc... [2] https://github.com/nxp-imx/uboot-imx/commit/9be6761bccd008de16191aed325004bd...
arch/arm/include/asm/arch-imx8/sci/rpc.h | 2 +- drivers/misc/imx8/scu_api.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/include/asm/arch-imx8/sci/rpc.h b/arch/arm/include/asm/arch-imx8/sci/rpc.h index 9f55904f44..39de7f0e3e 100644 --- a/arch/arm/include/asm/arch-imx8/sci/rpc.h +++ b/arch/arm/include/asm/arch-imx8/sci/rpc.h @@ -11,7 +11,7 @@ /* Defines */
#define SCFW_API_VERSION_MAJOR 1U -#define SCFW_API_VERSION_MINOR 15U +#define SCFW_API_VERSION_MINOR 21U
#define SC_RPC_VERSION 1U
diff --git a/drivers/misc/imx8/scu_api.c b/drivers/misc/imx8/scu_api.c index 27ecce710f..8f546e9b3f 100644 --- a/drivers/misc/imx8/scu_api.c +++ b/drivers/misc/imx8/scu_api.c @@ -788,7 +788,7 @@ sc_bool_t sc_rm_is_pad_owned(sc_ipc_t ipc, sc_pad_t pad) RPC_VER(&msg) = SC_RPC_VERSION; RPC_SVC(&msg) = (u8)SC_RPC_SVC_RM; RPC_FUNC(&msg) = (u8)RM_FUNC_IS_PAD_OWNED; - RPC_U8(&msg, 0U) = (u8)pad; + RPC_U16(&msg, 0U) = (u16)pad; RPC_SIZE(&msg) = 2U;
ret = misc_call(dev, SC_FALSE, &msg, size, &msg, size);

Any feedback?
@Stefano: Any plans to apply anything?
On Tue, 2022-12-13 at 05:08 +0100, Marcel Ziswiler wrote:
From: Ye Li ye.li@nxp.com
SCFW has fixed a overflow issue in sc_rm_is_pad_owned API. This requires u-boot to update API implementation, since it will cause compatible issue. Otherwise all pad checking will have problem and cause pad setting not continue.
Due to the compatible issue, the new u-boot only works with new SCFW (API version: 1.21 and later).
old scfw + old u-boot: API overflow issue old scfw + new u-boot, or new scfw + old u-boot: API compatible issue new scfw + new u-boot: Working
Signed-off-by: Ye Li ye.li@nxp.com Reviewed-by : Jason Liu Jason.hui.liu@nxp.com Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com
I stumbled over this one when working on the apalis-imx8 boot issue fix and support refresh [1] where I noticed that using the latest SCFW Ethernet won't come up. Through manual testing, I identified SCFW 1.3.1 to still work fine so I settled with that for the time being. Re-visiting this SCFW incompatibility issue again now I stumbled over this downstream commit [2] which I believe would be very suitable for upstreaming as well. With that latest SCFW 1.14.0 works fine again. So here it goes.
[1] https://patchwork.ozlabs.org/project/uboot/cover/20221212000930.45505-1-marc... [2] https://github.com/nxp-imx/uboot-imx/commit/9be6761bccd008de16191aed325004bd...
arch/arm/include/asm/arch-imx8/sci/rpc.h | 2 +- drivers/misc/imx8/scu_api.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/include/asm/arch-imx8/sci/rpc.h b/arch/arm/include/asm/arch-imx8/sci/rpc.h index 9f55904f44..39de7f0e3e 100644 --- a/arch/arm/include/asm/arch-imx8/sci/rpc.h +++ b/arch/arm/include/asm/arch-imx8/sci/rpc.h @@ -11,7 +11,7 @@ /* Defines */ #define SCFW_API_VERSION_MAJOR 1U -#define SCFW_API_VERSION_MINOR 15U +#define SCFW_API_VERSION_MINOR 21U #define SC_RPC_VERSION 1U diff --git a/drivers/misc/imx8/scu_api.c b/drivers/misc/imx8/scu_api.c index 27ecce710f..8f546e9b3f 100644 --- a/drivers/misc/imx8/scu_api.c +++ b/drivers/misc/imx8/scu_api.c @@ -788,7 +788,7 @@ sc_bool_t sc_rm_is_pad_owned(sc_ipc_t ipc, sc_pad_t pad) RPC_VER(&msg) = SC_RPC_VERSION; RPC_SVC(&msg) = (u8)SC_RPC_SVC_RM; RPC_FUNC(&msg) = (u8)RM_FUNC_IS_PAD_OWNED; - RPC_U8(&msg, 0U) = (u8)pad; + RPC_U16(&msg, 0U) = (u16)pad; RPC_SIZE(&msg) = 2U; ret = misc_call(dev, SC_FALSE, &msg, size, &msg, size);

From: Ye Li ye.li@nxp.com SCFW has fixed a overflow issue in sc_rm_is_pad_owned API. This requires u-boot to update API implementation, since it will cause compatible issue. Otherwise all pad checking will have problem and cause pad setting not continue. Due to the compatible issue, the new u-boot only works with new SCFW (API version: 1.21 and later). old scfw + old u-boot: API overflow issue old scfw + new u-boot, or new scfw + old u-boot: API compatible issue new scfw + new u-boot: Working Signed-off-by: Ye Li ye.li@nxp.com Reviewed-by : Jason Liu Jason.hui.liu@nxp.com Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com
Applied to u-boot-imx, master, thanks !
Best regards, Stefano Babic
participants (3)
-
Marcel Ziswiler
-
Marcel Ziswiler
-
sbabic@denx.de