[PATCH v2 23/23] spi: sun4i_spi: Remove non-DM pin setup

Andre Przywara andre.przywara at arm.com
Fri Apr 1 01:21:27 CEST 2022


On Thu, 17 Mar 2022 22:54:20 -0500
Samuel Holland <samuel at sholland.org> wrote:

> This is now handled automatically by the pinctrl driver.
> 
> Signed-off-by: Samuel Holland <samuel at sholland.org>

Again a nice cleanup!

Reviewed-by: Andre Przywara <andre.przywara at arm.com>

Cheers,
Andre

> ---
> 
> (no changes since v1)
> 
>  drivers/spi/spi-sunxi.c | 84 -----------------------------------------
>  1 file changed, 84 deletions(-)
> 
> diff --git a/drivers/spi/spi-sunxi.c b/drivers/spi/spi-sunxi.c
> index d62355ec6f..b6cd7ddafa 100644
> --- a/drivers/spi/spi-sunxi.c
> +++ b/drivers/spi/spi-sunxi.c
> @@ -32,7 +32,6 @@
>  #include <linux/bitops.h>
>  
>  #include <asm/bitops.h>
> -#include <asm/gpio.h>
>  #include <asm/io.h>
>  
>  #include <linux/iopoll.h>
> @@ -180,87 +179,6 @@ static void sun4i_spi_set_cs(struct udevice *bus, u8 cs, bool enable)
>  	writel(reg, SPI_REG(priv, SPI_TCR));
>  }
>  
> -static int sun4i_spi_parse_pins(struct udevice *dev)
> -{
> -	const void *fdt = gd->fdt_blob;
> -	const char *pin_name;
> -	const fdt32_t *list;
> -	u32 phandle;
> -	int drive, pull = 0, pin, i;
> -	int offset;
> -	int size;
> -
> -	list = fdt_getprop(fdt, dev_of_offset(dev), "pinctrl-0", &size);
> -	if (!list) {
> -		printf("WARNING: sun4i_spi: cannot find pinctrl-0 node\n");
> -		return -EINVAL;
> -	}
> -
> -	while (size) {
> -		phandle = fdt32_to_cpu(*list++);
> -		size -= sizeof(*list);
> -
> -		offset = fdt_node_offset_by_phandle(fdt, phandle);
> -		if (offset < 0)
> -			return offset;
> -
> -		drive = fdt_getprop_u32_default_node(fdt, offset, 0,
> -						     "drive-strength", 0);
> -		if (drive) {
> -			if (drive <= 10)
> -				drive = 0;
> -			else if (drive <= 20)
> -				drive = 1;
> -			else if (drive <= 30)
> -				drive = 2;
> -			else
> -				drive = 3;
> -		} else {
> -			drive = fdt_getprop_u32_default_node(fdt, offset, 0,
> -							     "allwinner,drive",
> -							      0);
> -			drive = min(drive, 3);
> -		}
> -
> -		if (fdt_get_property(fdt, offset, "bias-disable", NULL))
> -			pull = 0;
> -		else if (fdt_get_property(fdt, offset, "bias-pull-up", NULL))
> -			pull = 1;
> -		else if (fdt_get_property(fdt, offset, "bias-pull-down", NULL))
> -			pull = 2;
> -		else
> -			pull = fdt_getprop_u32_default_node(fdt, offset, 0,
> -							    "allwinner,pull",
> -							     0);
> -		pull = min(pull, 2);
> -
> -		for (i = 0; ; i++) {
> -			pin_name = fdt_stringlist_get(fdt, offset,
> -						      "pins", i, NULL);
> -			if (!pin_name) {
> -				pin_name = fdt_stringlist_get(fdt, offset,
> -							      "allwinner,pins",
> -							       i, NULL);
> -				if (!pin_name)
> -					break;
> -			}
> -
> -			pin = sunxi_name_to_gpio(pin_name);
> -			if (pin < 0)
> -				break;
> -
> -			if (IS_ENABLED(CONFIG_MACH_SUN50I) ||
> -			    IS_ENABLED(CONFIG_SUN50I_GEN_H6))
> -				sunxi_gpio_set_cfgpin(pin, SUN50I_GPC_SPI0);
> -			else
> -				sunxi_gpio_set_cfgpin(pin, SUNXI_GPC_SPI0);
> -			sunxi_gpio_set_drv(pin, drive);
> -			sunxi_gpio_set_pull(pin, pull);
> -		}
> -	}
> -	return 0;
> -}
> -
>  static inline int sun4i_spi_set_clock(struct udevice *dev, bool enable)
>  {
>  	struct sun4i_spi_priv *priv = dev_get_priv(dev);
> @@ -507,8 +425,6 @@ static int sun4i_spi_probe(struct udevice *bus)
>  		return ret;
>  	}
>  
> -	sun4i_spi_parse_pins(bus);
> -
>  	priv->variant = plat->variant;
>  	priv->base = plat->base;
>  	priv->freq = plat->max_hz;



More information about the U-Boot mailing list