diff mbox series

reset: stm32: Fix bank and offset computation

Message ID 20210428114245.21229-1-patrice.chotard@foss.st.com
State Accepted
Commit 6d734be905ef16043471dca6ce5495a905a8590f
Delegated to: Patrick Delaunay
Headers show
Series reset: stm32: Fix bank and offset computation | expand

Commit Message

Patrice CHOTARD April 28, 2021, 11:42 a.m. UTC
BITS_PER_LONG is used to represent register's size which is 32.
But when compiled on arch64, BITS_PER_LONG is then equal to 64.

Fix bank and offset computation to make it work on arch32 and
arch64 and ensure that register's size is always equal to 32.

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Signed-off-by: Pankaj Dev <pankaj.dev@st.com>
---

 drivers/reset/stm32-reset.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Patrick DELAUNAY May 4, 2021, 2:01 p.m. UTC | #1
Hi Patrice,

On 4/28/21 1:42 PM, Patrice Chotard wrote:
> BITS_PER_LONG is used to represent register's size which is 32.
> But when compiled on arch64, BITS_PER_LONG is then equal to 64.
>
> Fix bank and offset computation to make it work on arch32 and
> arch64 and ensure that register's size is always equal to 32.
>
> Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
> Signed-off-by: Pankaj Dev <pankaj.dev@st.com>
> ---
>
>   drivers/reset/stm32-reset.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/reset/stm32-reset.c b/drivers/reset/stm32-reset.c
> index daa2e47ebb..bbc6b135a9 100644
> --- a/drivers/reset/stm32-reset.c
> +++ b/drivers/reset/stm32-reset.c
> @@ -40,8 +40,8 @@ static int stm32_reset_free(struct reset_ctl *reset_ctl)
>   static int stm32_reset_assert(struct reset_ctl *reset_ctl)
>   {
>   	struct stm32_reset_priv *priv = dev_get_priv(reset_ctl->dev);
> -	int bank = (reset_ctl->id / BITS_PER_LONG) * 4;
> -	int offset = reset_ctl->id % BITS_PER_LONG;
> +	int bank = (reset_ctl->id / (sizeof(u32) * BITS_PER_BYTE)) * 4;
> +	int offset = reset_ctl->id % (sizeof(u32) * BITS_PER_BYTE);
>   
>   	dev_dbg(reset_ctl->dev, "reset id = %ld bank = %d offset = %d)\n",
>   		reset_ctl->id, bank, offset);
> @@ -61,8 +61,8 @@ static int stm32_reset_assert(struct reset_ctl *reset_ctl)
>   static int stm32_reset_deassert(struct reset_ctl *reset_ctl)
>   {
>   	struct stm32_reset_priv *priv = dev_get_priv(reset_ctl->dev);
> -	int bank = (reset_ctl->id / BITS_PER_LONG) * 4;
> -	int offset = reset_ctl->id % BITS_PER_LONG;
> +	int bank = (reset_ctl->id / (sizeof(u32) * BITS_PER_BYTE)) * 4;
> +	int offset = reset_ctl->id % (sizeof(u32) * BITS_PER_BYTE);
>   
>   	dev_dbg(reset_ctl->dev, "reset id = %ld bank = %d offset = %d)\n",
>   		reset_ctl->id, bank, offset);


Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>

Thanks
Patrick
Patrick DELAUNAY May 28, 2021, 9:36 a.m. UTC | #2
Hi,

On 4/28/21 1:42 PM, Patrice Chotard wrote:
> BITS_PER_LONG is used to represent register's size which is 32.
> But when compiled on arch64, BITS_PER_LONG is then equal to 64.
>
> Fix bank and offset computation to make it work on arch32 and
> arch64 and ensure that register's size is always equal to 32.
>
> Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
> Signed-off-by: Pankaj Dev <pankaj.dev@st.com>
> ---
>
>   drivers/reset/stm32-reset.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
>

Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>

Thanks
Patrick
Patrick DELAUNAY May 28, 2021, 12:36 p.m. UTC | #3
On 4/28/21 1:42 PM, Patrice Chotard wrote:
> BITS_PER_LONG is used to represent register's size which is 32.
> But when compiled on arch64, BITS_PER_LONG is then equal to 64.
>
> Fix bank and offset computation to make it work on arch32 and
> arch64 and ensure that register's size is always equal to 32.
>
> Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
> Signed-off-by: Pankaj Dev <pankaj.dev@st.com>
> ---
>
>   drivers/reset/stm32-reset.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
>

Applied to u-boot-stm/master, thanks!

Regards
Patrick
diff mbox series

Patch

diff --git a/drivers/reset/stm32-reset.c b/drivers/reset/stm32-reset.c
index daa2e47ebb..bbc6b135a9 100644
--- a/drivers/reset/stm32-reset.c
+++ b/drivers/reset/stm32-reset.c
@@ -40,8 +40,8 @@  static int stm32_reset_free(struct reset_ctl *reset_ctl)
 static int stm32_reset_assert(struct reset_ctl *reset_ctl)
 {
 	struct stm32_reset_priv *priv = dev_get_priv(reset_ctl->dev);
-	int bank = (reset_ctl->id / BITS_PER_LONG) * 4;
-	int offset = reset_ctl->id % BITS_PER_LONG;
+	int bank = (reset_ctl->id / (sizeof(u32) * BITS_PER_BYTE)) * 4;
+	int offset = reset_ctl->id % (sizeof(u32) * BITS_PER_BYTE);
 
 	dev_dbg(reset_ctl->dev, "reset id = %ld bank = %d offset = %d)\n",
 		reset_ctl->id, bank, offset);
@@ -61,8 +61,8 @@  static int stm32_reset_assert(struct reset_ctl *reset_ctl)
 static int stm32_reset_deassert(struct reset_ctl *reset_ctl)
 {
 	struct stm32_reset_priv *priv = dev_get_priv(reset_ctl->dev);
-	int bank = (reset_ctl->id / BITS_PER_LONG) * 4;
-	int offset = reset_ctl->id % BITS_PER_LONG;
+	int bank = (reset_ctl->id / (sizeof(u32) * BITS_PER_BYTE)) * 4;
+	int offset = reset_ctl->id % (sizeof(u32) * BITS_PER_BYTE);
 
 	dev_dbg(reset_ctl->dev, "reset id = %ld bank = %d offset = %d)\n",
 		reset_ctl->id, bank, offset);