diff mbox series

lib: utils/gpio: Fix RV32 compile error for designware GPIO driver

Message ID 20230711124519.1591123-1-apatel@ventanamicro.com
State Superseded
Headers show
Series lib: utils/gpio: Fix RV32 compile error for designware GPIO driver | expand

Commit Message

Anup Patel July 11, 2023, 12:45 p.m. UTC
Currently, we see following compile error in the designeware GPIO driver
for RV32 systems:

lib/utils/gpio/fdt_gpio_designware.c:115:20: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
  115 |         chip->dr = (void *)addr + (bank * 0xc);
      |                    ^
lib/utils/gpio/fdt_gpio_designware.c:116:21: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
  116 |         chip->ext = (void *)addr + (bank * 4) + 0x50;

We fix the above error using an explicit type-cast to 'unsigned long'.

Fixes: 7828eebaaa77 ("gpio/desginware: add Synopsys DesignWare APB GPIO support")
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
---
 lib/utils/gpio/fdt_gpio_designware.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Xiang W July 11, 2023, 2:49 p.m. UTC | #1
在 2023-07-11星期二的 18:15 +0530,Anup Patel写道:
> Currently, we see following compile error in the designeware GPIO driver
> for RV32 systems:
> 
> lib/utils/gpio/fdt_gpio_designware.c:115:20: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
>   115 |         chip->dr = (void *)addr + (bank * 0xc);
>       |                    ^
> lib/utils/gpio/fdt_gpio_designware.c:116:21: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
>   116 |         chip->ext = (void *)addr + (bank * 4) + 0x50;
> 
> We fix the above error using an explicit type-cast to 'unsigned long'.
> 
> Fixes: 7828eebaaa77 ("gpio/desginware: add Synopsys DesignWare APB GPIO support")
> Signed-off-by: Anup Patel <apatel@ventanamicro.com>
> ---
>  lib/utils/gpio/fdt_gpio_designware.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/utils/gpio/fdt_gpio_designware.c b/lib/utils/gpio/fdt_gpio_designware.c
> index 6223d7e..603e5a0 100644
> --- a/lib/utils/gpio/fdt_gpio_designware.c
> +++ b/lib/utils/gpio/fdt_gpio_designware.c
> @@ -112,8 +112,8 @@ static int dw_gpio_init_bank(void *fdt, int nodeoff, u32 phandle,
>  
>         chip = &dw_gpio_chip_array[dw_gpio_chip_count];
>  
> -       chip->dr = (void *)addr + (bank * 0xc);
> -       chip->ext = (void *)addr + (bank * 4) + 0x50;
> +       chip->dr = (void *)(ulong)addr + (bank * 0xc);
> +       chip->ext = (void *)(ulong)addr + (bank * 4) + 0x50;
Replacing ulong with uintptr_t would be better.

Otherwise it looks good to me.

Reviewed-by: Xiang W <wxjstz@126.com>
>         chip->chip.driver = &fdt_gpio_designware;
>         chip->chip.id = phandle;
>         chip->chip.ngpio = nr_pins;
> -- 
> 2.34.1
> 
>
diff mbox series

Patch

diff --git a/lib/utils/gpio/fdt_gpio_designware.c b/lib/utils/gpio/fdt_gpio_designware.c
index 6223d7e..603e5a0 100644
--- a/lib/utils/gpio/fdt_gpio_designware.c
+++ b/lib/utils/gpio/fdt_gpio_designware.c
@@ -112,8 +112,8 @@  static int dw_gpio_init_bank(void *fdt, int nodeoff, u32 phandle,
 
 	chip = &dw_gpio_chip_array[dw_gpio_chip_count];
 
-	chip->dr = (void *)addr + (bank * 0xc);
-	chip->ext = (void *)addr + (bank * 4) + 0x50;
+	chip->dr = (void *)(ulong)addr + (bank * 0xc);
+	chip->ext = (void *)(ulong)addr + (bank * 4) + 0x50;
 	chip->chip.driver = &fdt_gpio_designware;
 	chip->chip.id = phandle;
 	chip->chip.ngpio = nr_pins;