Messages in this thread | | | Subject | Re: [PATCH 2/2] amba: Initialize dma_parms for amba devices | From | Ludovic BARRE <> | Date | Wed, 25 Mar 2020 16:24:03 +0100 |
| |
Le 3/25/20 à 12:34 PM, Ulf Hansson a écrit : > It's currently the amba driver's responsibility to initialize the pointer, > dma_parms, for its corresponding struct device. The benefit with this > approach allows us to avoid the initialization and to not waste memory for > the struct device_dma_parameters, as this can be decided on a case by case > basis. > > However, it has turned out that this approach is not very practical. Not > only does it lead to open coding, but also to real errors. In principle > callers of dma_set_max_seg_size() doesn't check the error code, but just > assumes it succeeds. > > For these reasons, let's do the initialization from the common amba bus at > the device registration point. This also follows the way the PCI devices > are being managed, see pci_device_add(). >
tested with mmc: mmci_sdmmc fix Tested-by: Ludovic Barre <ludovic.barre@st.com>
> Suggested-by: Christoph Hellwig <hch@lst.de> > Cc: Russell King <linux@armlinux.org.uk> > Cc: <stable@vger.kernel.org> > Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> > --- > drivers/amba/bus.c | 2 ++ > include/linux/amba/bus.h | 1 + > 2 files changed, 3 insertions(+) > > diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c > index fe1523664816..5e61783ce92d 100644 > --- a/drivers/amba/bus.c > +++ b/drivers/amba/bus.c > @@ -374,6 +374,8 @@ static int amba_device_try_add(struct amba_device *dev, struct resource *parent) > WARN_ON(dev->irq[0] == (unsigned int)-1); > WARN_ON(dev->irq[1] == (unsigned int)-1); > > + dev->dev.dma_parms = &dev->dma_parms; > + > ret = request_resource(parent, &dev->res); > if (ret) > goto err_out; > diff --git a/include/linux/amba/bus.h b/include/linux/amba/bus.h > index 26f0ecf401ea..0bbfd647f5c6 100644 > --- a/include/linux/amba/bus.h > +++ b/include/linux/amba/bus.h > @@ -65,6 +65,7 @@ struct amba_device { > struct device dev; > struct resource res; > struct clk *pclk; > + struct device_dma_parameters dma_parms; > unsigned int periphid; > unsigned int cid; > struct amba_cs_uci_id uci; >
| |