[U-Boot] [PATCH v3 1/3] spi: pl022: Simplify platdata code
Jagan Teki
jagan at amarulasolutions.com
Thu Nov 22 08:01:25 UTC 2018
On Thu, Nov 22, 2018 at 1:21 PM Quentin Schulz
<quentin.schulz at bootlin.com> wrote:
>
> Hi Jagan,
>
> On Thu, Nov 22, 2018 at 12:03:47PM +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 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 | 9 ------
> > 2 files changed, 20 insertions(+), 37 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..57d12ac912 100644
> > --- a/include/dm/platform_data/pl022_spi.h
> > +++ b/include/dm/platform_data/pl022_spi.h
> > @@ -10,19 +10,10 @@
> > #ifndef __PL022_SPI_H__
> > #define __PL022_SPI_H__
> >
> > -#if !CONFIG_IS_ENABLED(OF_PLATDATA)
> > -#include <clk.h>
> > -#endif
> > -#include <fdtdec.h>
> > -
>
> As stated in your first version of the patch[1][2], I need fdtdec.h to
> be in this header file so that I can successfuly compile.
which board config I need to enable?
More information about the U-Boot
mailing list