From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jagan Teki Date: Tue, 27 Nov 2018 21:08:01 +0530 Subject: [U-Boot] [PATCH v4 1/3] spi: pl022: Simplify platdata code In-Reply-To: <20181127075921.wm5dzqwwqxv3dak6@qschulz> References: <20181124121723.15151-1-jagan@amarulasolutions.com> <20181127075921.wm5dzqwwqxv3dak6@qschulz> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Tue, Nov 27, 2018 at 1:29 PM Quentin Schulz wrote: > > 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 > > Signed-off-by: Jagan Teki > > --- > > 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 > > -#endif > > #include > > > > 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 Applied to u-boot-spi/master