From mboxrd@z Thu Jan 1 00:00:00 1970 From: archit@ti.com (Archit Taneja) Date: Thu, 26 Sep 2013 16:29:26 +0530 Subject: [PATCH 39/51] DMA-API: others: use dma_set_coherent_mask() In-Reply-To: <20130926105528.GY25647@n2100.arm.linux.org.uk> References: <20130919212235.GD12758@n2100.arm.linux.org.uk> <524411B8.4070000@ti.com> <20130926105528.GY25647@n2100.arm.linux.org.uk> Message-ID: <5244138E.5010306@ti.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Thursday 26 September 2013 04:25 PM, Russell King - ARM Linux wrote: > On Thu, Sep 26, 2013 at 04:21:36PM +0530, Archit Taneja wrote: >> 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. > > Just wish to make sure - that's code for: > > Tested-by: Archit Taneja > > to be added? Sure :) Thanks, Archit