[U-Boot] [PATCH v4 1/3] spi: pl022: Simplify platdata code

Quentin Schulz quentin.schulz at bootlin.com
Tue Nov 27 07:59:21 UTC 2018


Hi Jagan,

On Sat, Nov 24, 2018 at 05:47:21PM +0530, Jagan Teki wrote:
> pl022 spi driver support both OF_CONTROL and PLATDATA, this
> patch is trying to simplify the code that differentiating
> platdata vs of_control.
> - Move OF_CONTROL code at one place
> - Handle clock setup code directly in pl022_spi_ofdata_to_platdata
> 
> Cc: Quentin Schulz <quentin.schulz at bootlin.com>
> Signed-off-by: Jagan Teki <jagan at amarulasolutions.com>
> ---
> Changes for v4:
> - preserve fdtdec.h
> Changes for v3:
> - none 
> Changes for v2:
> - Update commit message
> - Use struct clk for clkdev
> 
>  drivers/spi/pl022_spi.c              | 48 ++++++++++++----------------
>  include/dm/platform_data/pl022_spi.h |  7 ----
>  2 files changed, 20 insertions(+), 35 deletions(-)
> 
> diff --git a/drivers/spi/pl022_spi.c b/drivers/spi/pl022_spi.c
> index 86b71d2e21..05f4f6f481 100644
> --- a/drivers/spi/pl022_spi.c
> +++ b/drivers/spi/pl022_spi.c
> @@ -72,11 +72,7 @@
>  
>  struct pl022_spi_slave {
>  	void *base;
> -#if !CONFIG_IS_ENABLED(OF_PLATDATA)
> -	struct clk clk;
> -#else
>  	unsigned int freq;
> -#endif
>  };
>  
>  /*
> @@ -96,30 +92,13 @@ static int pl022_is_supported(struct pl022_spi_slave *ps)
>  	return 0;
>  }
>  
> -#if !CONFIG_IS_ENABLED(OF_PLATDATA)
> -static int pl022_spi_ofdata_to_platdata(struct udevice *bus)
> -{
> -	struct pl022_spi_pdata *plat = bus->platdata;
> -	const void *fdt = gd->fdt_blob;
> -	int node = dev_of_offset(bus);
> -
> -	plat->addr = fdtdec_get_addr_size(fdt, node, "reg", &plat->size);
> -
> -	return clk_get_by_index(bus, 0, &plat->clk);
> -}
> -#endif
> -
>  static int pl022_spi_probe(struct udevice *bus)
>  {
>  	struct pl022_spi_pdata *plat = dev_get_platdata(bus);
>  	struct pl022_spi_slave *ps = dev_get_priv(bus);
>  
>  	ps->base = ioremap(plat->addr, plat->size);
> -#if !CONFIG_IS_ENABLED(OF_PLATDATA)
> -	ps->clk = plat->clk;
> -#else
>  	ps->freq = plat->freq;
> -#endif
>  
>  	/* Check the PL022 version */
>  	if (!pl022_is_supported(ps))
> @@ -240,11 +219,7 @@ static int pl022_spi_set_speed(struct udevice *bus, uint speed)
>  	u16 scr = SSP_SCR_MIN, cr0 = 0, cpsr = SSP_CPSR_MIN, best_scr = scr,
>  	    best_cpsr = cpsr;
>  	u32 min, max, best_freq = 0, tmp;
> -#if !CONFIG_IS_ENABLED(OF_PLATDATA)
> -	u32 rate = clk_get_rate(&ps->clk);
> -#else
>  	u32 rate = ps->freq;
> -#endif
>  	bool found = false;
>  
>  	max = spi_rate(rate, SSP_CPSR_MIN, SSP_SCR_MIN);
> @@ -316,6 +291,25 @@ static const struct dm_spi_ops pl022_spi_ops = {
>  };
>  
>  #if !CONFIG_IS_ENABLED(OF_PLATDATA)
> +static int pl022_spi_ofdata_to_platdata(struct udevice *bus)
> +{
> +	struct pl022_spi_pdata *plat = bus->platdata;
> +	const void *fdt = gd->fdt_blob;
> +	int node = dev_of_offset(bus);
> +	struct clk clkdev;
> +	int ret;
> +
> +	plat->addr = fdtdec_get_addr_size(fdt, node, "reg", &plat->size);
> +
> +	ret = clk_get_by_index(bus, 0, &clkdev);
> +	if (ret)
> +		return ret;
> +
> +	plat->freq = clk_get_rate(&clkdev);
> +
> +	return 0;
> +}
> +
>  static const struct udevice_id pl022_spi_ids[] = {
>  	{ .compatible = "arm,pl022-spi" },
>  	{ }
> @@ -327,11 +321,9 @@ U_BOOT_DRIVER(pl022_spi) = {
>  	.id     = UCLASS_SPI,
>  #if !CONFIG_IS_ENABLED(OF_PLATDATA)
>  	.of_match = pl022_spi_ids,
> -#endif
> -	.ops    = &pl022_spi_ops,
> -#if !CONFIG_IS_ENABLED(OF_PLATDATA)
>  	.ofdata_to_platdata = pl022_spi_ofdata_to_platdata,
>  #endif
> +	.ops    = &pl022_spi_ops,
>  	.platdata_auto_alloc_size = sizeof(struct pl022_spi_pdata),
>  	.priv_auto_alloc_size = sizeof(struct pl022_spi_slave),
>  	.probe  = pl022_spi_probe,
> diff --git a/include/dm/platform_data/pl022_spi.h b/include/dm/platform_data/pl022_spi.h
> index 77fe6da3cb..df8870169d 100644
> --- a/include/dm/platform_data/pl022_spi.h
> +++ b/include/dm/platform_data/pl022_spi.h
> @@ -10,19 +10,12 @@
>  #ifndef __PL022_SPI_H__
>  #define __PL022_SPI_H__
>  
> -#if !CONFIG_IS_ENABLED(OF_PLATDATA)
> -#include <clk.h>
> -#endif
>  #include <fdtdec.h>
>  
>  struct pl022_spi_pdata {
>  	fdt_addr_t addr;
>  	fdt_size_t size;
> -#if !CONFIG_IS_ENABLED(OF_PLATDATA)
> -	struct clk clk;
> -#else
>  	unsigned int freq;
> -#endif
>  };
>  
>  #endif

Acked-by: Quentin Schulz <quentin.schulz at bootlin.com>

Thanks for the patch,
Quentin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181127/55ac2bdf/attachment.sig>


More information about the U-Boot mailing list