From mboxrd@z Thu Jan 1 00:00:00 1970 From: Adam Ford Date: Sat, 6 Oct 2018 20:39:22 -0500 Subject: [U-Boot] [PATCH 1/3] spi: davinci: Add platdata support In-Reply-To: References: <20180903173025.9101-1-jagan@amarulasolutions.com> 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 Mon, Oct 1, 2018 at 4:57 PM Adam Ford wrote: > > On Mon, Oct 1, 2018 at 7:54 AM Adam Ford wrote: > > > > On Mon, Sep 3, 2018 at 5:22 PM Adam Ford wrote: > > > > > > On Mon, Sep 3, 2018 at 5:21 PM Adam Ford wrote: > > > > > > > > On Mon, Sep 3, 2018 at 12:30 PM Jagan Teki wrote: > > > > > > > > > > Davanci spi driver has DM support already, this patch > > > > > add support for platdata so-that SPL can use it for > > > > > low foot-print. > > > > > > > > > > > > > In order for this to work, I had to apply a patch [1] that I submitted before. > > > > That patch disabled the manual initialization of the UART in da850_lowlevel.c > > > > to not conflict with the DM version of initialization. > > > > > > > > Assuming that [1] gets applied first then this, you can add me as > > > > 'tested-by' on > > > > both patches 1 of 3 and 2 of 3. I don't have the hardware to test 3 of 3. > > > > > > > > [1] - https://patchwork.ozlabs.org/patch/957336/ > > > > > > > > adam > > > > > > > > > > I should have stated, that without the [1] patch, this does does not work. > > > > The patch I mentioned is applied. I am back in the US and ready and > > willing to test/retest anything. > > If you want me to just retest this patch as-is, I can do so, if you > > want to rebase against master and sent out updated patches, I can do > > that too. If you have a git repo you want me to pull, I can test from > > there too. > > > > As of 30 September 2018, the master branch booted the da850-evm and > > the concern I had about DM_SERIAL has been applied, so I am confident > > for at least the da850-evm your patch series should allow us to enable > > DM and boot both SPL (with OF_PLATDATA) and U-Boot. > > > > adam > > > > > > > > adam > > > > > Signed-off-by: Jagan Teki > > Tested-by: Adam Ford > Is this patch series going to be acceptable as-is? I'm very happy and excited about it as it helps migrate more and more into DM. thanks adam > > > > > --- > > > > > drivers/spi/davinci_spi.c | 47 +++++++++++++++----------- > > > > > include/dm/platform_data/spi_davinci.h | 15 ++++++++ > > > > > 2 files changed, 43 insertions(+), 19 deletions(-) > > > > > create mode 100644 include/dm/platform_data/spi_davinci.h > > > > > > > > > > diff --git a/drivers/spi/davinci_spi.c b/drivers/spi/davinci_spi.c > > > > > index a822858323..07fa5e3b8a 100644 > > > > > --- a/drivers/spi/davinci_spi.c > > > > > +++ b/drivers/spi/davinci_spi.c > > > > > @@ -14,6 +14,7 @@ > > > > > #include > > > > > #include > > > > > #include > > > > > +#include > > > > > > > > > > /* SPIGCR0 */ > > > > > #define SPIGCR0_SPIENA_MASK 0x1 > > > > > @@ -529,50 +530,58 @@ static int davinci_spi_xfer(struct udevice *dev, unsigned int bitlen, > > > > > return __davinci_spi_xfer(ds, bitlen, dout, din, flags); > > > > > } > > > > > > > > > > +static const struct dm_spi_ops davinci_spi_ops = { > > > > > + .claim_bus = davinci_spi_claim_bus, > > > > > + .release_bus = davinci_spi_release_bus, > > > > > + .xfer = davinci_spi_xfer, > > > > > + .set_speed = davinci_spi_set_speed, > > > > > + .set_mode = davinci_spi_set_mode, > > > > > +}; > > > > > + > > > > > static int davinci_spi_probe(struct udevice *bus) > > > > > { > > > > > - /* Nothing to do */ > > > > > + struct davinci_spi_slave *ds = dev_get_priv(bus); > > > > > + struct davinci_spi_platdata *plat = bus->platdata; > > > > > + ds->regs = plat->regs; > > > > > + ds->num_cs = plat->num_cs; > > > > > + > > > > > return 0; > > > > > } > > > > > > > > > > +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) > > > > > static int davinci_ofdata_to_platadata(struct udevice *bus) > > > > > { > > > > > - struct davinci_spi_slave *ds = dev_get_priv(bus); > > > > > - const void *blob = gd->fdt_blob; > > > > > - int node = dev_of_offset(bus); > > > > > + struct davinci_spi_platdata *plat = bus->platdata; > > > > > + fdt_addr_t addr; > > > > > > > > > > - ds->regs = devfdt_map_physmem(bus, sizeof(struct davinci_spi_regs)); > > > > > - if (!ds->regs) { > > > > > - printf("%s: could not map device address\n", __func__); > > > > > + addr = devfdt_get_addr(bus); > > > > > + if (addr == FDT_ADDR_T_NONE) > > > > > return -EINVAL; > > > > > - } > > > > > - ds->num_cs = fdtdec_get_int(blob, node, "num-cs", 4); > > > > > + > > > > > + plat->regs = (struct davinci_spi_regs *)addr; > > > > > + plat->num_cs = fdtdec_get_int(gd->fdt_blob, dev_of_offset(bus), "num-cs", 4); > > > > > > > > > > return 0; > > > > > } > > > > > > > > > > -static const struct dm_spi_ops davinci_spi_ops = { > > > > > - .claim_bus = davinci_spi_claim_bus, > > > > > - .release_bus = davinci_spi_release_bus, > > > > > - .xfer = davinci_spi_xfer, > > > > > - .set_speed = davinci_spi_set_speed, > > > > > - .set_mode = davinci_spi_set_mode, > > > > > -}; > > > > > - > > > > > static const struct udevice_id davinci_spi_ids[] = { > > > > > { .compatible = "ti,keystone-spi" }, > > > > > { .compatible = "ti,dm6441-spi" }, > > > > > { .compatible = "ti,da830-spi" }, > > > > > { } > > > > > }; > > > > > +#endif > > > > > > > > > > U_BOOT_DRIVER(davinci_spi) = { > > > > > .name = "davinci_spi", > > > > > .id = UCLASS_SPI, > > > > > +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) > > > > > .of_match = davinci_spi_ids, > > > > > - .ops = &davinci_spi_ops, > > > > > .ofdata_to_platdata = davinci_ofdata_to_platadata, > > > > > - .priv_auto_alloc_size = sizeof(struct davinci_spi_slave), > > > > > + .platdata_auto_alloc_size = sizeof(struct davinci_spi_platdata), > > > > > +#endif > > > > > .probe = davinci_spi_probe, > > > > > + .ops = &davinci_spi_ops, > > > > > + .priv_auto_alloc_size = sizeof(struct davinci_spi_slave), > > > > > }; > > > > > #endif > > > > > diff --git a/include/dm/platform_data/spi_davinci.h b/include/dm/platform_data/spi_davinci.h > > > > > new file mode 100644 > > > > > index 0000000000..fbc62c262a > > > > > --- /dev/null > > > > > +++ b/include/dm/platform_data/spi_davinci.h > > > > > @@ -0,0 +1,15 @@ > > > > > +/* > > > > > + * Copyright (C) 2018 Jagan Teki > > > > > + * > > > > > + * SPDX-License-Identifier: GPL-2.0+ > > > > > + */ > > > > > + > > > > > +#ifndef __spi_davinci_h > > > > > +#define __spi_davinci_h > > > > > + > > > > > +struct davinci_spi_platdata { > > > > > + struct davinci_spi_regs *regs; > > > > > + u8 num_cs; /* total no. of CS available */ > > > > > +}; > > > > > + > > > > > +#endif /* __spi_davinci_h */ > > > > > -- > > > > > 2.18.0.321.gffc6fa0e3 > > > > >