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.sch...@bootlin.com> > Signed-off-by: Jagan Teki <ja...@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. [1] https://lists.denx.de/pipermail/u-boot/2018-November/346470.html [2] https://lists.denx.de/pipermail/u-boot/2018-November/347371.html Quentin
signature.asc
Description: PGP signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot