Message ID | 20200422101013.31267-1-ulf.hansson@linaro.org (mailing list archive) |
---|---|
State | Mainlined |
Commit | f458488425f1cc9a396aa1d09bb00c48783936da |
Headers | show |
Series | [RESEND,v2,1/2] driver core: platform: Initialize dma_parms for platform devices | expand |
On Wed, Apr 22, 2020 at 12:10:13PM +0200, Ulf Hansson wrote: > 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(). Looks good, Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c index fe1523664816..8558b629880b 100644 --- a/drivers/amba/bus.c +++ b/drivers/amba/bus.c @@ -645,6 +645,7 @@ static void amba_device_initialize(struct amba_device *dev, const char *name) dev->dev.release = amba_device_release; dev->dev.bus = &amba_bustype; dev->dev.dma_mask = &dev->dev.coherent_dma_mask; + dev->dev.dma_parms = &dev->dma_parms; dev->res.name = dev_name(&dev->dev); } 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;