diff mbox series

[v1] imx8: scu_api: sync sc_rm_is_pad_owned api change

Message ID 20221213040803.92424-1-marcel@ziswiler.com
State Accepted
Commit 7246ec19345a07befaabcde1cbf38ad78d0c1c8d
Delegated to: Stefano Babic
Headers show
Series [v1] imx8: scu_api: sync sc_rm_is_pad_owned api change | expand

Commit Message

Marcel Ziswiler Dec. 13, 2022, 4:08 a.m. UTC
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-marcel@ziswiler.com/
[2] https://github.com/nxp-imx/uboot-imx/commit/9be6761bccd008de16191aed325004bd982f770f

 arch/arm/include/asm/arch-imx8/sci/rpc.h | 2 +-
 drivers/misc/imx8/scu_api.c              | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Marcel Ziswiler Jan. 10, 2023, 9:54 a.m. UTC | #1
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-marcel@ziswiler.com/
> [2] https://github.com/nxp-imx/uboot-imx/commit/9be6761bccd008de16191aed325004bd982f770f
> 
>  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);
Stefano Babic Jan. 31, 2023, 8:34 p.m. UTC | #2
> 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
diff mbox series

Patch

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);