Return-path: Received: from bear.ext.ti.com ([192.94.94.41]:47928 "EHLO bear.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756469Ab3IZK5I (ORCPT ); Thu, 26 Sep 2013 06:57:08 -0400 Message-ID: <524411B8.4070000@ti.com> (sfid-20130926_125721_941347_FFA53D9C) Date: Thu, 26 Sep 2013 16:21:36 +0530 From: Archit Taneja MIME-Version: 1.0 To: Russell King , , , , , , , , , , , , , , , , , , , , , , , Solarflare linux maintainers , CC: Kukjin Kim , Joonyoung Shim , David Airlie , Seung-Woo Kim , Inki Dae , Kyungmin Park , Tejun Heo , Rob Clark , "Valkeinen, Tomi" Subject: Re: [PATCH 39/51] DMA-API: others: use dma_set_coherent_mask() References: <20130919212235.GD12758@n2100.arm.linux.org.uk> In-Reply-To: Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Sender: linux-wireless-owner@vger.kernel.org List-ID: Hi, On Friday 20 September 2013 04:41 AM, Russell King wrote: > The correct way for a driver to specify the coherent DMA mask is > not to directly access the field in the struct device, but to use > dma_set_coherent_mask(). Only arch and bus code should access this > member directly. > > Convert all direct write accesses to using the correct API. > > Signed-off-by: Russell King > --- > drivers/ata/pata_ixp4xx_cf.c | 5 ++++- > drivers/gpu/drm/exynos/exynos_drm_drv.c | 6 +++++- > drivers/gpu/drm/omapdrm/omap_dmm_tiler.c | 5 +++-- > 3 files changed, 12 insertions(+), 4 deletions(-) > > diff --git a/drivers/ata/pata_ixp4xx_cf.c b/drivers/ata/pata_ixp4xx_cf.c > index 1ec53f8..ddf470c 100644 > --- a/drivers/ata/pata_ixp4xx_cf.c > +++ b/drivers/ata/pata_ixp4xx_cf.c > @@ -144,6 +144,7 @@ static int ixp4xx_pata_probe(struct platform_device *pdev) > struct ata_host *host; > struct ata_port *ap; > struct ixp4xx_pata_data *data = dev_get_platdata(&pdev->dev); > + int ret; > > cs0 = platform_get_resource(pdev, IORESOURCE_MEM, 0); > cs1 = platform_get_resource(pdev, IORESOURCE_MEM, 1); > @@ -157,7 +158,9 @@ static int ixp4xx_pata_probe(struct platform_device *pdev) > return -ENOMEM; > > /* acquire resources and fill host */ > - pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); > + ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); > + if (ret) > + return ret; > > data->cs0 = devm_ioremap(&pdev->dev, cs0->start, 0x1000); > data->cs1 = devm_ioremap(&pdev->dev, cs1->start, 0x1000); > diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c > index bb82ef7..81192d0 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c > @@ -286,7 +286,11 @@ static struct drm_driver exynos_drm_driver = { > > static int exynos_drm_platform_probe(struct platform_device *pdev) > { > - pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); > + int ret; > + > + ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); > + if (ret) > + return ret; > > return drm_platform_init(&exynos_drm_driver, pdev); > } > diff --git a/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c b/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c > index acf6678..701c4c1 100644 > --- a/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c > +++ b/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c > @@ -664,8 +664,9 @@ static int omap_dmm_probe(struct platform_device *dev) > } > > /* set dma mask for device */ > - /* NOTE: this is a workaround for the hwmod not initializing properly */ > - dev->dev.coherent_dma_mask = DMA_BIT_MASK(32); > + ret = dma_set_coherent_mask(&dev->dev, DMA_BIT_MASK(32)); > + if (ret) > + goto fail; Tested with omapdrm on omap4 panda es board. Thanks, Archit