From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8D247C4320D for ; Tue, 24 Sep 2019 18:13:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 628E321841 for ; Tue, 24 Sep 2019 18:13:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2632842AbfIXSNQ (ORCPT ); Tue, 24 Sep 2019 14:13:16 -0400 Received: from mx2.suse.de ([195.135.220.15]:44314 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2409758AbfIXSNP (ORCPT ); Tue, 24 Sep 2019 14:13:15 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 71267ABBD; Tue, 24 Sep 2019 18:13:11 +0000 (UTC) From: Nicolas Saenz Julienne To: robh+dt@kernel.org, devicetree@vger.kernel.org, frowand.list@gmail.com, linux-arm-kernel@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, dmaengine@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, xen-devel@lists.xenproject.org, linux-tegra@vger.kernel.org, linux-media@vger.kernel.org, linux-pci@vger.kernel.org, Greg Kroah-Hartman , "Rafael J. Wysocki" , =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= , Sinan Kaya , Andy Gross , Lucas Stach , Russell King , Christian Gmeiner , Maxime Ripard , Chen-Yu Tsai , Oleksandr Andrushchenko , Thierry Reding , Stanimir Varbanov , Kyungmin Park , Kamil Debski , Jeongtae Park , Andrzej Hajda , Boris Ostrovsky , Juergen Gross , Stefano Stabellini Cc: mbrugger@suse.com, robin.murphy@arm.com, f.fainelli@gmail.com, james.quinlan@broadcom.com, wahrenst@gmx.net, Nicolas Saenz Julienne , Vinod Koul , Dan Williams , David Airlie , Daniel Vetter , Rob Clark , Sean Paul , Mauro Carvalho Chehab , freedreno@lists.freedesktop.org Subject: [PATCH 11/11] of: simplify of_dma_config()'s arguments Date: Tue, 24 Sep 2019 20:12:42 +0200 Message-Id: <20190924181244.7159-12-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190924181244.7159-1-nsaenzjulienne@suse.de> References: <20190924181244.7159-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: dmaengine-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org The widespread use case for of_dma_config() highlights a redundant argument. Most callers provide both 'dev' and 'dev->of_node'. The rest of users use it to copy some device's DMA configuration into a device not represented in DT. In order to simplify the common use case, and make code a little more explicit, create of_dma_config_copy() which will take another device's DT node as an argument and simplify of_dma_config() by removing one of it's redundant arguments. Signed-off-by: Nicolas Saenz Julienne --- drivers/base/platform.c | 2 +- drivers/bcma/main.c | 2 +- drivers/dma/qcom/hidma_mgmt.c | 2 +- drivers/gpu/drm/etnaviv/etnaviv_drv.c | 2 +- drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 2 +- drivers/gpu/drm/sun4i/sun4i_backend.c | 2 +- drivers/gpu/drm/xen/xen_drm_front.c | 2 +- drivers/gpu/host1x/bus.c | 2 +- drivers/media/platform/qcom/venus/firmware.c | 2 +- drivers/media/platform/s5p-mfc/s5p_mfc.c | 2 +- drivers/of/device.c | 30 ++++++++++++++++++-- drivers/xen/gntdev.c | 2 +- include/linux/of_device.h | 12 ++++++-- 13 files changed, 48 insertions(+), 16 deletions(-) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index b6c6c7d97d5b..4e252028aee9 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -1221,7 +1221,7 @@ int platform_dma_configure(struct device *dev) int ret = 0; if (dev->of_node) { - ret = of_dma_configure(dev, dev->of_node, true); + ret = of_dma_configure(dev, true); } else if (has_acpi_companion(dev)) { attr = acpi_get_dma_attr(to_acpi_device_node(dev->fwnode)); ret = acpi_dma_configure(dev, attr); diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c index 6535614a7dc1..4c7e8b35525c 100644 --- a/drivers/bcma/main.c +++ b/drivers/bcma/main.c @@ -207,7 +207,7 @@ static void bcma_of_fill_device(struct device *parent, core->irq = bcma_of_get_irq(parent, core, 0); - of_dma_configure(&core->dev, node, false); + of_dma_configure(&core->dev, false); } unsigned int bcma_core_irq(struct bcma_device *core, int num) diff --git a/drivers/dma/qcom/hidma_mgmt.c b/drivers/dma/qcom/hidma_mgmt.c index 806ca02c52d7..4ea901537902 100644 --- a/drivers/dma/qcom/hidma_mgmt.c +++ b/drivers/dma/qcom/hidma_mgmt.c @@ -388,7 +388,7 @@ static int __init hidma_mgmt_of_populate_channels(struct device_node *np) goto out; } new_pdev->dev.of_node = child; - of_dma_configure(&new_pdev->dev, child, true); + of_dma_configure(&new_pdev->dev, true); /* * It is assumed that calling of_msi_configure is safe on * platforms with or without MSI support. diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c index 1f9c01be40d7..1375f41593ef 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c @@ -706,7 +706,7 @@ static int __init etnaviv_init(void) * device as the GPU we found. This assumes that all Vivante * GPUs in the system share the same DMA constraints. */ - of_dma_configure(&pdev->dev, np, true); + of_dma_configure_copy(&pdev->dev, np, true); ret = platform_device_add(pdev); if (ret) { diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c index 85f14feafdec..825fcdc72bd9 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c @@ -1268,7 +1268,7 @@ int a6xx_gmu_init(struct a6xx_gpu *a6xx_gpu, struct device_node *node) gmu->dev = &pdev->dev; - of_dma_configure(gmu->dev, node, true); + of_dma_configure(gmu->dev, true); /* Fow now, don't do anything fancy until we get our feet under us */ gmu->idle_level = GMU_IDLE_STATE_ACTIVE; diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c index 4e29f4fe4a05..97dd5d31e38d 100644 --- a/drivers/gpu/drm/sun4i/sun4i_backend.c +++ b/drivers/gpu/drm/sun4i/sun4i_backend.c @@ -802,7 +802,7 @@ static int sun4i_backend_bind(struct device *dev, struct device *master, * for us, and DRM doesn't do per-device allocation either, so * we would need to fix DRM first... */ - ret = of_dma_configure(drm->dev, dev->of_node, true); + ret = of_dma_configure_copy(drm->dev, dev->of_node, true); if (ret) return ret; } else { diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c index ba1828acd8c9..fa0bfd6517fa 100644 --- a/drivers/gpu/drm/xen/xen_drm_front.c +++ b/drivers/gpu/drm/xen/xen_drm_front.c @@ -726,7 +726,7 @@ static int xen_drv_probe(struct xenbus_device *xb_dev, * node to set default DMA ops. */ dev->coherent_dma_mask = DMA_BIT_MASK(32); - ret = of_dma_configure(dev, NULL, true); + ret = of_dma_configure(dev, true); if (ret < 0) { DRM_ERROR("Cannot setup DMA ops, ret %d", ret); return ret; diff --git a/drivers/gpu/host1x/bus.c b/drivers/gpu/host1x/bus.c index 2fdc04383a60..4eb531906e4a 100644 --- a/drivers/gpu/host1x/bus.c +++ b/drivers/gpu/host1x/bus.c @@ -337,7 +337,7 @@ static int host1x_device_uevent(struct device *dev, static int host1x_dma_configure(struct device *dev) { - return of_dma_configure(dev, dev->of_node, true); + return of_dma_configure(dev, true); } static const struct dev_pm_ops host1x_device_pm_ops = { diff --git a/drivers/media/platform/qcom/venus/firmware.c b/drivers/media/platform/qcom/venus/firmware.c index d3d1748a7ef6..82f433218d99 100644 --- a/drivers/media/platform/qcom/venus/firmware.c +++ b/drivers/media/platform/qcom/venus/firmware.c @@ -238,7 +238,7 @@ int venus_firmware_init(struct venus_core *core) pdev->dev.of_node = np; - ret = of_dma_configure(&pdev->dev, np, true); + ret = of_dma_configure(&pdev->dev, true); if (ret) { dev_err(core->dev, "dma configure fail\n"); goto err_unregister; diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c index b776f83e395e..ad33e7a655aa 100644 --- a/drivers/media/platform/s5p-mfc/s5p_mfc.c +++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c @@ -1095,7 +1095,7 @@ static struct device *s5p_mfc_alloc_memdev(struct device *dev, * to be treated as valid DMA masters we need a bit of a hack to force * them to inherit the MFC node's DMA configuration. */ - of_dma_configure(child, dev->of_node, true); + of_dma_configure_copy(child, dev->of_node, true); if (device_add(child) == 0) { ret = of_reserved_mem_device_init_by_idx(child, dev->of_node, diff --git a/drivers/of/device.c b/drivers/of/device.c index 1d0b1127d05e..66726a2499d3 100644 --- a/drivers/of/device.c +++ b/drivers/of/device.c @@ -75,19 +75,18 @@ int of_device_add(struct platform_device *ofdev) /** * of_dma_configure - Setup DMA configuration * @dev: Device to apply DMA configuration - * @np: Pointer to OF node having DMA configuration * @force_dma: Whether device is to be set up by of_dma_configure() even if * DMA capability is not explicitly described by firmware. * * Try to get devices's DMA configuration from DT and update it * accordingly. */ -int of_dma_configure(struct device *dev, struct device_node *np, bool force_dma) +int of_dma_configure(struct device *dev, bool force_dma) { struct device_node *dma_parent; int ret; - dma_parent = __of_get_dma_parent(np); + dma_parent = __of_get_dma_parent(dev->of_node); ret = of_dma_configure_parent(dev, dma_parent, force_dma); of_node_put(dma_parent); @@ -95,6 +94,31 @@ int of_dma_configure(struct device *dev, struct device_node *np, bool force_dma) } EXPORT_SYMBOL_GPL(of_dma_configure); +/** + * of_dma_configure_copy - Setup DMA configuration based on another device's DT + * node + * @dev: Device to apply DMA configuration + * @np: Device node to copy the configuration from + * @force_dma: Whether device is to be set up by of_dma_configure() even if + * DMA capability is not explicitly described by firmware. + * + * Try to get devices's DMA configuration from DT and update it + * accordingly. + */ +int of_dma_configure_copy(struct device *dev, struct device_node *np, + bool force_dma) +{ + struct device_node *dma_parent; + int ret; + + dma_parent = __of_get_dma_parent(np); + ret = of_dma_configure_parent(dev, dma_parent, force_dma); + of_node_put(dma_parent); + + return ret; +} +EXPORT_SYMBOL_GPL(of_dma_configure_copy); + /** * of_dma_configure_parent - Setup DMA configuration based on a parent bus' * DT node diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c index a446a7221e13..115e39f9f67a 100644 --- a/drivers/xen/gntdev.c +++ b/drivers/xen/gntdev.c @@ -632,7 +632,7 @@ static int gntdev_open(struct inode *inode, struct file *flip) * Fix this by calling of_dma_configure() with a NULL node to set * default DMA ops. */ - of_dma_configure(priv->dma_dev, NULL, true); + of_dma_configure(priv->dma_dev, true); #endif pr_debug("priv %p\n", priv); diff --git a/include/linux/of_device.h b/include/linux/of_device.h index 8f319b8c9deb..b05a86fd35a4 100644 --- a/include/linux/of_device.h +++ b/include/linux/of_device.h @@ -55,7 +55,9 @@ static inline struct device_node *of_cpu_device_node_get(int cpu) return of_node_get(cpu_dev->of_node); } -int of_dma_configure(struct device *dev, struct devce_node *np, bool force_dma); +int of_dma_configure(struct device *dev, bool force_dma); +int of_dma_configure_copy(struct device *dev, struct device_node *np, + bool force_dma); int of_dma_configure_parent(struct device *dev, struct device_node *parent, bool force_dma); #else /* CONFIG_OF */ @@ -107,12 +109,18 @@ static inline struct device_node *of_cpu_device_node_get(int cpu) } static inline int of_dma_configure(struct device *dev, - struct device_node *np, bool force_dma) { return 0; } +static inline int of_dma_configure_copy(struct device *dev, + struct device_node *np, + bool force_dma) +{ + return 0; +} + static inline int of_dma_configure_parent(struct device *dev, struct device_node *parent, bool force_dma) -- 2.23.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Saenz Julienne Subject: [PATCH 11/11] of: simplify of_dma_config()'s arguments Date: Tue, 24 Sep 2019 20:12:42 +0200 Message-ID: <20190924181244.7159-12-nsaenzjulienne@suse.de> References: <20190924181244.7159-1-nsaenzjulienne@suse.de> Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Return-path: In-Reply-To: <20190924181244.7159-1-nsaenzjulienne@suse.de> Sender: linux-kernel-owner@vger.kernel.org To: robh+dt@kernel.org, devicetree@vger.kernel.org, frowand.list@gmail.com, linux-arm-kernel@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, dmaengine@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, xen-devel@lists.xenproject.org, linux-tegra@vger.kernel.org, linux-media@vger.kernel.org, linux-pci@vger.kernel.org, Greg Kroah-Hartman , "Rafael J. Wysocki" , =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= , Sinan Kaya , Andy Gross , Lucas Stach , Russell King , Christian Gmeiner , Maxime Ripard Cc: mbrugger@suse.com, robin.murphy@arm.com, f.fainelli@gmail.com, james.quinlan@broadcom.com, wahrenst@gmx.net, Nicolas Saenz Julienne , Vinod Koul , Dan Williams , David Airlie , Daniel Vetter , Rob Clark , Sean Paul , Mauro Carvalho Chehab , freedreno@lists.freedesktop.org List-Id: linux-tegra@vger.kernel.org The widespread use case for of_dma_config() highlights a redundant argument. Most callers provide both 'dev' and 'dev->of_node'. The rest of users use it to copy some device's DMA configuration into a device not represented in DT. In order to simplify the common use case, and make code a little more explicit, create of_dma_config_copy() which will take another device's DT node as an argument and simplify of_dma_config() by removing one of it's redundant arguments. Signed-off-by: Nicolas Saenz Julienne --- drivers/base/platform.c | 2 +- drivers/bcma/main.c | 2 +- drivers/dma/qcom/hidma_mgmt.c | 2 +- drivers/gpu/drm/etnaviv/etnaviv_drv.c | 2 +- drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 2 +- drivers/gpu/drm/sun4i/sun4i_backend.c | 2 +- drivers/gpu/drm/xen/xen_drm_front.c | 2 +- drivers/gpu/host1x/bus.c | 2 +- drivers/media/platform/qcom/venus/firmware.c | 2 +- drivers/media/platform/s5p-mfc/s5p_mfc.c | 2 +- drivers/of/device.c | 30 ++++++++++++++++++-- drivers/xen/gntdev.c | 2 +- include/linux/of_device.h | 12 ++++++-- 13 files changed, 48 insertions(+), 16 deletions(-) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index b6c6c7d97d5b..4e252028aee9 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -1221,7 +1221,7 @@ int platform_dma_configure(struct device *dev) int ret = 0; if (dev->of_node) { - ret = of_dma_configure(dev, dev->of_node, true); + ret = of_dma_configure(dev, true); } else if (has_acpi_companion(dev)) { attr = acpi_get_dma_attr(to_acpi_device_node(dev->fwnode)); ret = acpi_dma_configure(dev, attr); diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c index 6535614a7dc1..4c7e8b35525c 100644 --- a/drivers/bcma/main.c +++ b/drivers/bcma/main.c @@ -207,7 +207,7 @@ static void bcma_of_fill_device(struct device *parent, core->irq = bcma_of_get_irq(parent, core, 0); - of_dma_configure(&core->dev, node, false); + of_dma_configure(&core->dev, false); } unsigned int bcma_core_irq(struct bcma_device *core, int num) diff --git a/drivers/dma/qcom/hidma_mgmt.c b/drivers/dma/qcom/hidma_mgmt.c index 806ca02c52d7..4ea901537902 100644 --- a/drivers/dma/qcom/hidma_mgmt.c +++ b/drivers/dma/qcom/hidma_mgmt.c @@ -388,7 +388,7 @@ static int __init hidma_mgmt_of_populate_channels(struct device_node *np) goto out; } new_pdev->dev.of_node = child; - of_dma_configure(&new_pdev->dev, child, true); + of_dma_configure(&new_pdev->dev, true); /* * It is assumed that calling of_msi_configure is safe on * platforms with or without MSI support. diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c index 1f9c01be40d7..1375f41593ef 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c @@ -706,7 +706,7 @@ static int __init etnaviv_init(void) * device as the GPU we found. This assumes that all Vivante * GPUs in the system share the same DMA constraints. */ - of_dma_configure(&pdev->dev, np, true); + of_dma_configure_copy(&pdev->dev, np, true); ret = platform_device_add(pdev); if (ret) { diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c index 85f14feafdec..825fcdc72bd9 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c @@ -1268,7 +1268,7 @@ int a6xx_gmu_init(struct a6xx_gpu *a6xx_gpu, struct device_node *node) gmu->dev = &pdev->dev; - of_dma_configure(gmu->dev, node, true); + of_dma_configure(gmu->dev, true); /* Fow now, don't do anything fancy until we get our feet under us */ gmu->idle_level = GMU_IDLE_STATE_ACTIVE; diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c index 4e29f4fe4a05..97dd5d31e38d 100644 --- a/drivers/gpu/drm/sun4i/sun4i_backend.c +++ b/drivers/gpu/drm/sun4i/sun4i_backend.c @@ -802,7 +802,7 @@ static int sun4i_backend_bind(struct device *dev, struct device *master, * for us, and DRM doesn't do per-device allocation either, so * we would need to fix DRM first... */ - ret = of_dma_configure(drm->dev, dev->of_node, true); + ret = of_dma_configure_copy(drm->dev, dev->of_node, true); if (ret) return ret; } else { diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c index ba1828acd8c9..fa0bfd6517fa 100644 --- a/drivers/gpu/drm/xen/xen_drm_front.c +++ b/drivers/gpu/drm/xen/xen_drm_front.c @@ -726,7 +726,7 @@ static int xen_drv_probe(struct xenbus_device *xb_dev, * node to set default DMA ops. */ dev->coherent_dma_mask = DMA_BIT_MASK(32); - ret = of_dma_configure(dev, NULL, true); + ret = of_dma_configure(dev, true); if (ret < 0) { DRM_ERROR("Cannot setup DMA ops, ret %d", ret); return ret; diff --git a/drivers/gpu/host1x/bus.c b/drivers/gpu/host1x/bus.c index 2fdc04383a60..4eb531906e4a 100644 --- a/drivers/gpu/host1x/bus.c +++ b/drivers/gpu/host1x/bus.c @@ -337,7 +337,7 @@ static int host1x_device_uevent(struct device *dev, static int host1x_dma_configure(struct device *dev) { - return of_dma_configure(dev, dev->of_node, true); + return of_dma_configure(dev, true); } static const struct dev_pm_ops host1x_device_pm_ops = { diff --git a/drivers/media/platform/qcom/venus/firmware.c b/drivers/media/platform/qcom/venus/firmware.c index d3d1748a7ef6..82f433218d99 100644 --- a/drivers/media/platform/qcom/venus/firmware.c +++ b/drivers/media/platform/qcom/venus/firmware.c @@ -238,7 +238,7 @@ int venus_firmware_init(struct venus_core *core) pdev->dev.of_node = np; - ret = of_dma_configure(&pdev->dev, np, true); + ret = of_dma_configure(&pdev->dev, true); if (ret) { dev_err(core->dev, "dma configure fail\n"); goto err_unregister; diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c index b776f83e395e..ad33e7a655aa 100644 --- a/drivers/media/platform/s5p-mfc/s5p_mfc.c +++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c @@ -1095,7 +1095,7 @@ static struct device *s5p_mfc_alloc_memdev(struct device *dev, * to be treated as valid DMA masters we need a bit of a hack to force * them to inherit the MFC node's DMA configuration. */ - of_dma_configure(child, dev->of_node, true); + of_dma_configure_copy(child, dev->of_node, true); if (device_add(child) == 0) { ret = of_reserved_mem_device_init_by_idx(child, dev->of_node, diff --git a/drivers/of/device.c b/drivers/of/device.c index 1d0b1127d05e..66726a2499d3 100644 --- a/drivers/of/device.c +++ b/drivers/of/device.c @@ -75,19 +75,18 @@ int of_device_add(struct platform_device *ofdev) /** * of_dma_configure - Setup DMA configuration * @dev: Device to apply DMA configuration - * @np: Pointer to OF node having DMA configuration * @force_dma: Whether device is to be set up by of_dma_configure() even if * DMA capability is not explicitly described by firmware. * * Try to get devices's DMA configuration from DT and update it * accordingly. */ -int of_dma_configure(struct device *dev, struct device_node *np, bool force_dma) +int of_dma_configure(struct device *dev, bool force_dma) { struct device_node *dma_parent; int ret; - dma_parent = __of_get_dma_parent(np); + dma_parent = __of_get_dma_parent(dev->of_node); ret = of_dma_configure_parent(dev, dma_parent, force_dma); of_node_put(dma_parent); @@ -95,6 +94,31 @@ int of_dma_configure(struct device *dev, struct device_node *np, bool force_dma) } EXPORT_SYMBOL_GPL(of_dma_configure); +/** + * of_dma_configure_copy - Setup DMA configuration based on another device's DT + * node + * @dev: Device to apply DMA configuration + * @np: Device node to copy the configuration from + * @force_dma: Whether device is to be set up by of_dma_configure() even if + * DMA capability is not explicitly described by firmware. + * + * Try to get devices's DMA configuration from DT and update it + * accordingly. + */ +int of_dma_configure_copy(struct device *dev, struct device_node *np, + bool force_dma) +{ + struct device_node *dma_parent; + int ret; + + dma_parent = __of_get_dma_parent(np); + ret = of_dma_configure_parent(dev, dma_parent, force_dma); + of_node_put(dma_parent); + + return ret; +} +EXPORT_SYMBOL_GPL(of_dma_configure_copy); + /** * of_dma_configure_parent - Setup DMA configuration based on a parent bus' * DT node diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c index a446a7221e13..115e39f9f67a 100644 --- a/drivers/xen/gntdev.c +++ b/drivers/xen/gntdev.c @@ -632,7 +632,7 @@ static int gntdev_open(struct inode *inode, struct file *flip) * Fix this by calling of_dma_configure() with a NULL node to set * default DMA ops. */ - of_dma_configure(priv->dma_dev, NULL, true); + of_dma_configure(priv->dma_dev, true); #endif pr_debug("priv %p\n", priv); diff --git a/include/linux/of_device.h b/include/linux/of_device.h index 8f319b8c9deb..b05a86fd35a4 100644 --- a/include/linux/of_device.h +++ b/include/linux/of_device.h @@ -55,7 +55,9 @@ static inline struct device_node *of_cpu_device_node_get(int cpu) return of_node_get(cpu_dev->of_node); } -int of_dma_configure(struct device *dev, struct devce_node *np, bool force_dma); +int of_dma_configure(struct device *dev, bool force_dma); +int of_dma_configure_copy(struct device *dev, struct device_node *np, + bool force_dma); int of_dma_configure_parent(struct device *dev, struct device_node *parent, bool force_dma); #else /* CONFIG_OF */ @@ -107,12 +109,18 @@ static inline struct device_node *of_cpu_device_node_get(int cpu) } static inline int of_dma_configure(struct device *dev, - struct device_node *np, bool force_dma) { return 0; } +static inline int of_dma_configure_copy(struct device *dev, + struct device_node *np, + bool force_dma) +{ + return 0; +} + static inline int of_dma_configure_parent(struct device *dev, struct device_node *parent, bool force_dma) -- 2.23.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8ACCAC432C1 for ; Tue, 24 Sep 2019 18:17:42 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 620BF20872 for ; Tue, 24 Sep 2019 18:17:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Nm8KdSfs" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 620BF20872 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Iavl1WOlOb9H8zEocn6YPgIyLLg1nUX3Nd+tBbBhtOY=; b=Nm8KdSfs1ANs4Q kBIsu4qjzb21IJVgYpVlng1AcDxGxE96+tlv6Qimd4fro8BnxAvLwcb8iHjnnw1yN0OilYuxvdeVE Vb5r3JyIs8qwA/P7p1wVUcXH5K2LL9Uv+TJXl/uykUe3SFZ1HPYKgd4TxDUiv7yy/hfth+mhTvduf OoKeLFwjXKyq1t6Fa1sNl/RRSOw6YaHbVpbqUqthqVbvk1Lk1Q9H7+SXLyPfvcRT2ixAtCf50Otnj doCEgHp0tiLQcDRHZlJNQ7mRkNqnFEEYJj6anIPO4Q5aNvfZY1UwuItvykub3gaX5hPgHfxwoD3JP hAYMWzJGVnoYf0y6gh8A==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.2 #3 (Red Hat Linux)) id 1iCpNd-0007PG-Hh; Tue, 24 Sep 2019 18:17:41 +0000 Received: from mx2.suse.de ([195.135.220.15] helo=mx1.suse.de) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iCpJK-0003Jk-0S for linux-arm-kernel@lists.infradead.org; Tue, 24 Sep 2019 18:13:17 +0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 71267ABBD; Tue, 24 Sep 2019 18:13:11 +0000 (UTC) From: Nicolas Saenz Julienne To: robh+dt@kernel.org, devicetree@vger.kernel.org, frowand.list@gmail.com, linux-arm-kernel@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, dmaengine@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, xen-devel@lists.xenproject.org, linux-tegra@vger.kernel.org, linux-media@vger.kernel.org, linux-pci@vger.kernel.org, Greg Kroah-Hartman , "Rafael J. Wysocki" , =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= , Sinan Kaya , Andy Gross , Lucas Stach , Russell King , Christian Gmeiner , Maxime Ripard , Chen-Yu Tsai , Oleksandr Andrushchenko , Thierry Reding , Stanimir Varbanov , Kyungmin Park , Kamil Debski , Jeongtae Park , Andrzej Hajda , Boris Ostrovsky , Juergen Gross , Stefano Stabellini Subject: [PATCH 11/11] of: simplify of_dma_config()'s arguments Date: Tue, 24 Sep 2019 20:12:42 +0200 Message-Id: <20190924181244.7159-12-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190924181244.7159-1-nsaenzjulienne@suse.de> References: <20190924181244.7159-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190924_111315_056471_E4E9D291 X-CRM114-Status: GOOD ( 19.84 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: freedreno@lists.freedesktop.org, f.fainelli@gmail.com, Daniel Vetter , David Airlie , Sean Paul , Rob Clark , Vinod Koul , mbrugger@suse.com, wahrenst@gmx.net, james.quinlan@broadcom.com, Dan Williams , Mauro Carvalho Chehab , robin.murphy@arm.com, Nicolas Saenz Julienne Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org The widespread use case for of_dma_config() highlights a redundant argument. Most callers provide both 'dev' and 'dev->of_node'. The rest of users use it to copy some device's DMA configuration into a device not represented in DT. In order to simplify the common use case, and make code a little more explicit, create of_dma_config_copy() which will take another device's DT node as an argument and simplify of_dma_config() by removing one of it's redundant arguments. Signed-off-by: Nicolas Saenz Julienne --- drivers/base/platform.c | 2 +- drivers/bcma/main.c | 2 +- drivers/dma/qcom/hidma_mgmt.c | 2 +- drivers/gpu/drm/etnaviv/etnaviv_drv.c | 2 +- drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 2 +- drivers/gpu/drm/sun4i/sun4i_backend.c | 2 +- drivers/gpu/drm/xen/xen_drm_front.c | 2 +- drivers/gpu/host1x/bus.c | 2 +- drivers/media/platform/qcom/venus/firmware.c | 2 +- drivers/media/platform/s5p-mfc/s5p_mfc.c | 2 +- drivers/of/device.c | 30 ++++++++++++++++++-- drivers/xen/gntdev.c | 2 +- include/linux/of_device.h | 12 ++++++-- 13 files changed, 48 insertions(+), 16 deletions(-) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index b6c6c7d97d5b..4e252028aee9 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -1221,7 +1221,7 @@ int platform_dma_configure(struct device *dev) int ret = 0; if (dev->of_node) { - ret = of_dma_configure(dev, dev->of_node, true); + ret = of_dma_configure(dev, true); } else if (has_acpi_companion(dev)) { attr = acpi_get_dma_attr(to_acpi_device_node(dev->fwnode)); ret = acpi_dma_configure(dev, attr); diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c index 6535614a7dc1..4c7e8b35525c 100644 --- a/drivers/bcma/main.c +++ b/drivers/bcma/main.c @@ -207,7 +207,7 @@ static void bcma_of_fill_device(struct device *parent, core->irq = bcma_of_get_irq(parent, core, 0); - of_dma_configure(&core->dev, node, false); + of_dma_configure(&core->dev, false); } unsigned int bcma_core_irq(struct bcma_device *core, int num) diff --git a/drivers/dma/qcom/hidma_mgmt.c b/drivers/dma/qcom/hidma_mgmt.c index 806ca02c52d7..4ea901537902 100644 --- a/drivers/dma/qcom/hidma_mgmt.c +++ b/drivers/dma/qcom/hidma_mgmt.c @@ -388,7 +388,7 @@ static int __init hidma_mgmt_of_populate_channels(struct device_node *np) goto out; } new_pdev->dev.of_node = child; - of_dma_configure(&new_pdev->dev, child, true); + of_dma_configure(&new_pdev->dev, true); /* * It is assumed that calling of_msi_configure is safe on * platforms with or without MSI support. diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c index 1f9c01be40d7..1375f41593ef 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c @@ -706,7 +706,7 @@ static int __init etnaviv_init(void) * device as the GPU we found. This assumes that all Vivante * GPUs in the system share the same DMA constraints. */ - of_dma_configure(&pdev->dev, np, true); + of_dma_configure_copy(&pdev->dev, np, true); ret = platform_device_add(pdev); if (ret) { diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c index 85f14feafdec..825fcdc72bd9 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c @@ -1268,7 +1268,7 @@ int a6xx_gmu_init(struct a6xx_gpu *a6xx_gpu, struct device_node *node) gmu->dev = &pdev->dev; - of_dma_configure(gmu->dev, node, true); + of_dma_configure(gmu->dev, true); /* Fow now, don't do anything fancy until we get our feet under us */ gmu->idle_level = GMU_IDLE_STATE_ACTIVE; diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c index 4e29f4fe4a05..97dd5d31e38d 100644 --- a/drivers/gpu/drm/sun4i/sun4i_backend.c +++ b/drivers/gpu/drm/sun4i/sun4i_backend.c @@ -802,7 +802,7 @@ static int sun4i_backend_bind(struct device *dev, struct device *master, * for us, and DRM doesn't do per-device allocation either, so * we would need to fix DRM first... */ - ret = of_dma_configure(drm->dev, dev->of_node, true); + ret = of_dma_configure_copy(drm->dev, dev->of_node, true); if (ret) return ret; } else { diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c index ba1828acd8c9..fa0bfd6517fa 100644 --- a/drivers/gpu/drm/xen/xen_drm_front.c +++ b/drivers/gpu/drm/xen/xen_drm_front.c @@ -726,7 +726,7 @@ static int xen_drv_probe(struct xenbus_device *xb_dev, * node to set default DMA ops. */ dev->coherent_dma_mask = DMA_BIT_MASK(32); - ret = of_dma_configure(dev, NULL, true); + ret = of_dma_configure(dev, true); if (ret < 0) { DRM_ERROR("Cannot setup DMA ops, ret %d", ret); return ret; diff --git a/drivers/gpu/host1x/bus.c b/drivers/gpu/host1x/bus.c index 2fdc04383a60..4eb531906e4a 100644 --- a/drivers/gpu/host1x/bus.c +++ b/drivers/gpu/host1x/bus.c @@ -337,7 +337,7 @@ static int host1x_device_uevent(struct device *dev, static int host1x_dma_configure(struct device *dev) { - return of_dma_configure(dev, dev->of_node, true); + return of_dma_configure(dev, true); } static const struct dev_pm_ops host1x_device_pm_ops = { diff --git a/drivers/media/platform/qcom/venus/firmware.c b/drivers/media/platform/qcom/venus/firmware.c index d3d1748a7ef6..82f433218d99 100644 --- a/drivers/media/platform/qcom/venus/firmware.c +++ b/drivers/media/platform/qcom/venus/firmware.c @@ -238,7 +238,7 @@ int venus_firmware_init(struct venus_core *core) pdev->dev.of_node = np; - ret = of_dma_configure(&pdev->dev, np, true); + ret = of_dma_configure(&pdev->dev, true); if (ret) { dev_err(core->dev, "dma configure fail\n"); goto err_unregister; diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c index b776f83e395e..ad33e7a655aa 100644 --- a/drivers/media/platform/s5p-mfc/s5p_mfc.c +++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c @@ -1095,7 +1095,7 @@ static struct device *s5p_mfc_alloc_memdev(struct device *dev, * to be treated as valid DMA masters we need a bit of a hack to force * them to inherit the MFC node's DMA configuration. */ - of_dma_configure(child, dev->of_node, true); + of_dma_configure_copy(child, dev->of_node, true); if (device_add(child) == 0) { ret = of_reserved_mem_device_init_by_idx(child, dev->of_node, diff --git a/drivers/of/device.c b/drivers/of/device.c index 1d0b1127d05e..66726a2499d3 100644 --- a/drivers/of/device.c +++ b/drivers/of/device.c @@ -75,19 +75,18 @@ int of_device_add(struct platform_device *ofdev) /** * of_dma_configure - Setup DMA configuration * @dev: Device to apply DMA configuration - * @np: Pointer to OF node having DMA configuration * @force_dma: Whether device is to be set up by of_dma_configure() even if * DMA capability is not explicitly described by firmware. * * Try to get devices's DMA configuration from DT and update it * accordingly. */ -int of_dma_configure(struct device *dev, struct device_node *np, bool force_dma) +int of_dma_configure(struct device *dev, bool force_dma) { struct device_node *dma_parent; int ret; - dma_parent = __of_get_dma_parent(np); + dma_parent = __of_get_dma_parent(dev->of_node); ret = of_dma_configure_parent(dev, dma_parent, force_dma); of_node_put(dma_parent); @@ -95,6 +94,31 @@ int of_dma_configure(struct device *dev, struct device_node *np, bool force_dma) } EXPORT_SYMBOL_GPL(of_dma_configure); +/** + * of_dma_configure_copy - Setup DMA configuration based on another device's DT + * node + * @dev: Device to apply DMA configuration + * @np: Device node to copy the configuration from + * @force_dma: Whether device is to be set up by of_dma_configure() even if + * DMA capability is not explicitly described by firmware. + * + * Try to get devices's DMA configuration from DT and update it + * accordingly. + */ +int of_dma_configure_copy(struct device *dev, struct device_node *np, + bool force_dma) +{ + struct device_node *dma_parent; + int ret; + + dma_parent = __of_get_dma_parent(np); + ret = of_dma_configure_parent(dev, dma_parent, force_dma); + of_node_put(dma_parent); + + return ret; +} +EXPORT_SYMBOL_GPL(of_dma_configure_copy); + /** * of_dma_configure_parent - Setup DMA configuration based on a parent bus' * DT node diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c index a446a7221e13..115e39f9f67a 100644 --- a/drivers/xen/gntdev.c +++ b/drivers/xen/gntdev.c @@ -632,7 +632,7 @@ static int gntdev_open(struct inode *inode, struct file *flip) * Fix this by calling of_dma_configure() with a NULL node to set * default DMA ops. */ - of_dma_configure(priv->dma_dev, NULL, true); + of_dma_configure(priv->dma_dev, true); #endif pr_debug("priv %p\n", priv); diff --git a/include/linux/of_device.h b/include/linux/of_device.h index 8f319b8c9deb..b05a86fd35a4 100644 --- a/include/linux/of_device.h +++ b/include/linux/of_device.h @@ -55,7 +55,9 @@ static inline struct device_node *of_cpu_device_node_get(int cpu) return of_node_get(cpu_dev->of_node); } -int of_dma_configure(struct device *dev, struct devce_node *np, bool force_dma); +int of_dma_configure(struct device *dev, bool force_dma); +int of_dma_configure_copy(struct device *dev, struct device_node *np, + bool force_dma); int of_dma_configure_parent(struct device *dev, struct device_node *parent, bool force_dma); #else /* CONFIG_OF */ @@ -107,12 +109,18 @@ static inline struct device_node *of_cpu_device_node_get(int cpu) } static inline int of_dma_configure(struct device *dev, - struct device_node *np, bool force_dma) { return 0; } +static inline int of_dma_configure_copy(struct device *dev, + struct device_node *np, + bool force_dma) +{ + return 0; +} + static inline int of_dma_configure_parent(struct device *dev, struct device_node *parent, bool force_dma) -- 2.23.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4C1F3C4320D for ; Wed, 25 Sep 2019 04:16:38 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1A7D12075D for ; Wed, 25 Sep 2019 04:16:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1A7D12075D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iCyj5-0000Wm-4A; Wed, 25 Sep 2019 04:16:27 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iCpJY-0000Hj-Ee for xen-devel@lists.xenproject.org; Tue, 24 Sep 2019 18:13:28 +0000 X-Inumbo-ID: f8c21a78-def6-11e9-8628-bc764e2007e4 Received: from mx1.suse.de (unknown [195.135.220.15]) by localhost (Halon) with ESMTPS id f8c21a78-def6-11e9-8628-bc764e2007e4; Tue, 24 Sep 2019 18:13:13 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 71267ABBD; Tue, 24 Sep 2019 18:13:11 +0000 (UTC) From: Nicolas Saenz Julienne To: robh+dt@kernel.org, devicetree@vger.kernel.org, frowand.list@gmail.com, linux-arm-kernel@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, dmaengine@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, xen-devel@lists.xenproject.org, linux-tegra@vger.kernel.org, linux-media@vger.kernel.org, linux-pci@vger.kernel.org, Greg Kroah-Hartman , "Rafael J. Wysocki" , =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= , Sinan Kaya , Andy Gross , Lucas Stach , Russell King , Christian Gmeiner , Maxime Ripard , Chen-Yu Tsai , Oleksandr Andrushchenko , Thierry Reding , Stanimir Varbanov , Kyungmin Park , Kamil Debski , Jeongtae Park , Andrzej Hajda , Boris Ostrovsky , Juergen Gross , Stefano Stabellini Date: Tue, 24 Sep 2019 20:12:42 +0200 Message-Id: <20190924181244.7159-12-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190924181244.7159-1-nsaenzjulienne@suse.de> References: <20190924181244.7159-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 25 Sep 2019 04:16:20 +0000 Subject: [Xen-devel] [PATCH 11/11] of: simplify of_dma_config()'s arguments X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: freedreno@lists.freedesktop.org, f.fainelli@gmail.com, Daniel Vetter , David Airlie , Sean Paul , Rob Clark , Vinod Koul , mbrugger@suse.com, wahrenst@gmx.net, james.quinlan@broadcom.com, Dan Williams , Mauro Carvalho Chehab , robin.murphy@arm.com, Nicolas Saenz Julienne Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" VGhlIHdpZGVzcHJlYWQgdXNlIGNhc2UgZm9yIG9mX2RtYV9jb25maWcoKSBoaWdobGlnaHRzIGEg cmVkdW5kYW50CmFyZ3VtZW50LiBNb3N0IGNhbGxlcnMgcHJvdmlkZSBib3RoICdkZXYnIGFuZCAn ZGV2LT5vZl9ub2RlJy4gVGhlIHJlc3QKb2YgdXNlcnMgdXNlIGl0IHRvIGNvcHkgc29tZSBkZXZp Y2UncyAgRE1BIGNvbmZpZ3VyYXRpb24gaW50byBhIGRldmljZQpub3QgcmVwcmVzZW50ZWQgaW4g RFQuCgpJbiBvcmRlciB0byBzaW1wbGlmeSB0aGUgY29tbW9uIHVzZSBjYXNlLCBhbmQgbWFrZSBj b2RlIGEgbGl0dGxlIG1vcmUKZXhwbGljaXQsIGNyZWF0ZSBvZl9kbWFfY29uZmlnX2NvcHkoKSB3 aGljaCB3aWxsIHRha2UgYW5vdGhlciBkZXZpY2UncwpEVCBub2RlIGFzIGFuIGFyZ3VtZW50IGFu ZCBzaW1wbGlmeSBvZl9kbWFfY29uZmlnKCkgYnkgcmVtb3Zpbmcgb25lIG9mCml0J3MgcmVkdW5k YW50IGFyZ3VtZW50cy4KClNpZ25lZC1vZmYtYnk6IE5pY29sYXMgU2FlbnogSnVsaWVubmUgPG5z YWVuemp1bGllbm5lQHN1c2UuZGU+CgotLS0KCiBkcml2ZXJzL2Jhc2UvcGxhdGZvcm0uYyAgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2JjbWEvbWFpbi5jICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2RtYS9xY29tL2hpZG1hX21nbXQuYyAgICAg ICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2Rydi5j ICAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4X2dtdS5jICAg ICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGlfYmFja2VuZC5jICAgICAg ICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuYyAgICAgICAgICB8 ICAyICstCiBkcml2ZXJzL2dwdS9ob3N0MXgvYnVzLmMgICAgICAgICAgICAgICAgICAgICB8ICAy ICstCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vdmVudXMvZmlybXdhcmUuYyB8ICAyICst CiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3M1cC1tZmMvczVwX21mYy5jICAgICB8ICAyICstCiBk cml2ZXJzL29mL2RldmljZS5jICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMwICsrKysrKysr KysrKysrKysrKy0tCiBkcml2ZXJzL3hlbi9nbnRkZXYuYyAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAyICstCiBpbmNsdWRlL2xpbnV4L29mX2RldmljZS5oICAgICAgICAgICAgICAgICAgICB8 IDEyICsrKysrKy0tCiAxMyBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAxNiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvcGxhdGZvcm0uYyBiL2RyaXZlcnMv YmFzZS9wbGF0Zm9ybS5jCmluZGV4IGI2YzZjN2Q5N2Q1Yi4uNGUyNTIwMjhhZWU5IDEwMDY0NAot LS0gYS9kcml2ZXJzL2Jhc2UvcGxhdGZvcm0uYworKysgYi9kcml2ZXJzL2Jhc2UvcGxhdGZvcm0u YwpAQCAtMTIyMSw3ICsxMjIxLDcgQEAgaW50IHBsYXRmb3JtX2RtYV9jb25maWd1cmUoc3RydWN0 IGRldmljZSAqZGV2KQogCWludCByZXQgPSAwOwogCiAJaWYgKGRldi0+b2Zfbm9kZSkgewotCQly ZXQgPSBvZl9kbWFfY29uZmlndXJlKGRldiwgZGV2LT5vZl9ub2RlLCB0cnVlKTsKKwkJcmV0ID0g b2ZfZG1hX2NvbmZpZ3VyZShkZXYsIHRydWUpOwogCX0gZWxzZSBpZiAoaGFzX2FjcGlfY29tcGFu aW9uKGRldikpIHsKIAkJYXR0ciA9IGFjcGlfZ2V0X2RtYV9hdHRyKHRvX2FjcGlfZGV2aWNlX25v ZGUoZGV2LT5md25vZGUpKTsKIAkJcmV0ID0gYWNwaV9kbWFfY29uZmlndXJlKGRldiwgYXR0cik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2JjbWEvbWFpbi5jIGIvZHJpdmVycy9iY21hL21haW4uYwpp bmRleCA2NTM1NjE0YTdkYzEuLjRjN2U4YjM1NTI1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9iY21h L21haW4uYworKysgYi9kcml2ZXJzL2JjbWEvbWFpbi5jCkBAIC0yMDcsNyArMjA3LDcgQEAgc3Rh dGljIHZvaWQgYmNtYV9vZl9maWxsX2RldmljZShzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsCiAKIAlj b3JlLT5pcnEgPSBiY21hX29mX2dldF9pcnEocGFyZW50LCBjb3JlLCAwKTsKIAotCW9mX2RtYV9j b25maWd1cmUoJmNvcmUtPmRldiwgbm9kZSwgZmFsc2UpOworCW9mX2RtYV9jb25maWd1cmUoJmNv cmUtPmRldiwgZmFsc2UpOwogfQogCiB1bnNpZ25lZCBpbnQgYmNtYV9jb3JlX2lycShzdHJ1Y3Qg YmNtYV9kZXZpY2UgKmNvcmUsIGludCBudW0pCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9xY29t L2hpZG1hX21nbXQuYyBiL2RyaXZlcnMvZG1hL3Fjb20vaGlkbWFfbWdtdC5jCmluZGV4IDgwNmNh MDJjNTJkNy4uNGVhOTAxNTM3OTAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS9xY29tL2hpZG1h X21nbXQuYworKysgYi9kcml2ZXJzL2RtYS9xY29tL2hpZG1hX21nbXQuYwpAQCAtMzg4LDcgKzM4 OCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGhpZG1hX21nbXRfb2ZfcG9wdWxhdGVfY2hhbm5lbHMo c3RydWN0IGRldmljZV9ub2RlICpucCkKIAkJCWdvdG8gb3V0OwogCQl9CiAJCW5ld19wZGV2LT5k ZXYub2Zfbm9kZSA9IGNoaWxkOwotCQlvZl9kbWFfY29uZmlndXJlKCZuZXdfcGRldi0+ZGV2LCBj aGlsZCwgdHJ1ZSk7CisJCW9mX2RtYV9jb25maWd1cmUoJm5ld19wZGV2LT5kZXYsIHRydWUpOwog CQkvKgogCQkgKiBJdCBpcyBhc3N1bWVkIHRoYXQgY2FsbGluZyBvZl9tc2lfY29uZmlndXJlIGlz IHNhZmUgb24KIAkJICogcGxhdGZvcm1zIHdpdGggb3Igd2l0aG91dCBNU0kgc3VwcG9ydC4KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZHJ2LmMgYi9kcml2ZXJz L2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2Rydi5jCmluZGV4IDFmOWMwMWJlNDBkNy4uMTM3NWY0 MTU5M2VmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2Rydi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZHJ2LmMKQEAgLTcwNiw3ICs3 MDYsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBldG5hdml2X2luaXQodm9pZCkKIAkJICogZGV2aWNl IGFzIHRoZSBHUFUgd2UgZm91bmQuIFRoaXMgYXNzdW1lcyB0aGF0IGFsbCBWaXZhbnRlCiAJCSAq IEdQVXMgaW4gdGhlIHN5c3RlbSBzaGFyZSB0aGUgc2FtZSBETUEgY29uc3RyYWludHMuCiAJCSAq LwotCQlvZl9kbWFfY29uZmlndXJlKCZwZGV2LT5kZXYsIG5wLCB0cnVlKTsKKwkJb2ZfZG1hX2Nv bmZpZ3VyZV9jb3B5KCZwZGV2LT5kZXYsIG5wLCB0cnVlKTsKIAogCQlyZXQgPSBwbGF0Zm9ybV9k ZXZpY2VfYWRkKHBkZXYpOwogCQlpZiAocmV0KSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2FkcmVuby9hNnh4X2dtdS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTZ4 eF9nbXUuYwppbmRleCA4NWYxNGZlYWZkZWMuLjgyNWZjZGM3MmJkOSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTZ4eF9nbXUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL2FkcmVuby9hNnh4X2dtdS5jCkBAIC0xMjY4LDcgKzEyNjgsNyBAQCBpbnQgYTZ4eF9nbXVf aW5pdChzdHJ1Y3QgYTZ4eF9ncHUgKmE2eHhfZ3B1LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUp CiAKIAlnbXUtPmRldiA9ICZwZGV2LT5kZXY7CiAKLQlvZl9kbWFfY29uZmlndXJlKGdtdS0+ZGV2 LCBub2RlLCB0cnVlKTsKKwlvZl9kbWFfY29uZmlndXJlKGdtdS0+ZGV2LCB0cnVlKTsKIAogCS8q IEZvdyBub3csIGRvbid0IGRvIGFueXRoaW5nIGZhbmN5IHVudGlsIHdlIGdldCBvdXIgZmVldCB1 bmRlciB1cyAqLwogCWdtdS0+aWRsZV9sZXZlbCA9IEdNVV9JRExFX1NUQVRFX0FDVElWRTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9iYWNrZW5kLmMgYi9kcml2ZXJz L2dwdS9kcm0vc3VuNGkvc3VuNGlfYmFja2VuZC5jCmluZGV4IDRlMjlmNGZlNGEwNS4uOTdkZDVk MzFlMzhkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGlfYmFja2VuZC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9iYWNrZW5kLmMKQEAgLTgwMiw3ICs4 MDIsNyBAQCBzdGF0aWMgaW50IHN1bjRpX2JhY2tlbmRfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKIAkJICogZm9yIHVzLCBhbmQgRFJNIGRvZXNuJ3QgZG8g cGVyLWRldmljZSBhbGxvY2F0aW9uIGVpdGhlciwgc28KIAkJICogd2Ugd291bGQgbmVlZCB0byBm aXggRFJNIGZpcnN0Li4uCiAJCSAqLwotCQlyZXQgPSBvZl9kbWFfY29uZmlndXJlKGRybS0+ZGV2 LCBkZXYtPm9mX25vZGUsIHRydWUpOworCQlyZXQgPSBvZl9kbWFfY29uZmlndXJlX2NvcHkoZHJt LT5kZXYsIGRldi0+b2Zfbm9kZSwgdHJ1ZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0Owog CX0gZWxzZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQu YyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udC5jCmluZGV4IGJhMTgyOGFjZDhj OS4uZmEwYmZkNjUxN2ZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1f ZnJvbnQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuYwpAQCAtNzI2 LDcgKzcyNiw3IEBAIHN0YXRpYyBpbnQgeGVuX2Rydl9wcm9iZShzdHJ1Y3QgeGVuYnVzX2Rldmlj ZSAqeGJfZGV2LAogCSAqIG5vZGUgdG8gc2V0IGRlZmF1bHQgRE1BIG9wcy4KIAkgKi8KIAlkZXYt PmNvaGVyZW50X2RtYV9tYXNrID0gRE1BX0JJVF9NQVNLKDMyKTsKLQlyZXQgPSBvZl9kbWFfY29u ZmlndXJlKGRldiwgTlVMTCwgdHJ1ZSk7CisJcmV0ID0gb2ZfZG1hX2NvbmZpZ3VyZShkZXYsIHRy dWUpOwogCWlmIChyZXQgPCAwKSB7CiAJCURSTV9FUlJPUigiQ2Fubm90IHNldHVwIERNQSBvcHMs IHJldCAlZCIsIHJldCk7CiAJCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9o b3N0MXgvYnVzLmMgYi9kcml2ZXJzL2dwdS9ob3N0MXgvYnVzLmMKaW5kZXggMmZkYzA0MzgzYTYw Li40ZWI1MzE5MDZlNGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2hvc3QxeC9idXMuYworKysg Yi9kcml2ZXJzL2dwdS9ob3N0MXgvYnVzLmMKQEAgLTMzNyw3ICszMzcsNyBAQCBzdGF0aWMgaW50 IGhvc3QxeF9kZXZpY2VfdWV2ZW50KHN0cnVjdCBkZXZpY2UgKmRldiwKIAogc3RhdGljIGludCBo b3N0MXhfZG1hX2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7Ci0JcmV0dXJuIG9mX2Rt YV9jb25maWd1cmUoZGV2LCBkZXYtPm9mX25vZGUsIHRydWUpOworCXJldHVybiBvZl9kbWFfY29u ZmlndXJlKGRldiwgdHJ1ZSk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBo b3N0MXhfZGV2aWNlX3BtX29wcyA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vcWNvbS92ZW51cy9maXJtd2FyZS5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL3Zl bnVzL2Zpcm13YXJlLmMKaW5kZXggZDNkMTc0OGE3ZWY2Li44MmY0MzMyMThkOTkgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS92ZW51cy9maXJtd2FyZS5jCisrKyBiL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS92ZW51cy9maXJtd2FyZS5jCkBAIC0yMzgsNyArMjM4 LDcgQEAgaW50IHZlbnVzX2Zpcm13YXJlX2luaXQoc3RydWN0IHZlbnVzX2NvcmUgKmNvcmUpCiAK IAlwZGV2LT5kZXYub2Zfbm9kZSA9IG5wOwogCi0JcmV0ID0gb2ZfZG1hX2NvbmZpZ3VyZSgmcGRl di0+ZGV2LCBucCwgdHJ1ZSk7CisJcmV0ID0gb2ZfZG1hX2NvbmZpZ3VyZSgmcGRldi0+ZGV2LCB0 cnVlKTsKIAlpZiAocmV0KSB7CiAJCWRldl9lcnIoY29yZS0+ZGV2LCAiZG1hIGNvbmZpZ3VyZSBm YWlsXG4iKTsKIAkJZ290byBlcnJfdW5yZWdpc3RlcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vczVwLW1mYy9zNXBfbWZjLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3M1 cC1tZmMvczVwX21mYy5jCmluZGV4IGI3NzZmODNlMzk1ZS4uYWQzM2U3YTY1NWFhIDEwMDY0NAot LS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3M1cC1tZmMvczVwX21mYy5jCisrKyBiL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vczVwLW1mYy9zNXBfbWZjLmMKQEAgLTEwOTUsNyArMTA5NSw3IEBA IHN0YXRpYyBzdHJ1Y3QgZGV2aWNlICpzNXBfbWZjX2FsbG9jX21lbWRldihzdHJ1Y3QgZGV2aWNl ICpkZXYsCiAJICogdG8gYmUgdHJlYXRlZCBhcyB2YWxpZCBETUEgbWFzdGVycyB3ZSBuZWVkIGEg Yml0IG9mIGEgaGFjayB0byBmb3JjZQogCSAqIHRoZW0gdG8gaW5oZXJpdCB0aGUgTUZDIG5vZGUn cyBETUEgY29uZmlndXJhdGlvbi4KIAkgKi8KLQlvZl9kbWFfY29uZmlndXJlKGNoaWxkLCBkZXYt Pm9mX25vZGUsIHRydWUpOworCW9mX2RtYV9jb25maWd1cmVfY29weShjaGlsZCwgZGV2LT5vZl9u b2RlLCB0cnVlKTsKIAogCWlmIChkZXZpY2VfYWRkKGNoaWxkKSA9PSAwKSB7CiAJCXJldCA9IG9m X3Jlc2VydmVkX21lbV9kZXZpY2VfaW5pdF9ieV9pZHgoY2hpbGQsIGRldi0+b2Zfbm9kZSwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvb2YvZGV2aWNlLmMgYi9kcml2ZXJzL29mL2RldmljZS5jCmluZGV4 IDFkMGIxMTI3ZDA1ZS4uNjY3MjZhMjQ5OWQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL29mL2Rldmlj ZS5jCisrKyBiL2RyaXZlcnMvb2YvZGV2aWNlLmMKQEAgLTc1LDE5ICs3NSwxOCBAQCBpbnQgb2Zf ZGV2aWNlX2FkZChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldikKIC8qKgogICogb2ZfZG1h X2NvbmZpZ3VyZSAtIFNldHVwIERNQSBjb25maWd1cmF0aW9uCiAgKiBAZGV2OglEZXZpY2UgdG8g YXBwbHkgRE1BIGNvbmZpZ3VyYXRpb24KLSAqIEBucDoJCVBvaW50ZXIgdG8gT0Ygbm9kZSBoYXZp bmcgRE1BIGNvbmZpZ3VyYXRpb24KICAqIEBmb3JjZV9kbWE6ICBXaGV0aGVyIGRldmljZSBpcyB0 byBiZSBzZXQgdXAgYnkgb2ZfZG1hX2NvbmZpZ3VyZSgpIGV2ZW4gaWYKICAqCQlETUEgY2FwYWJp bGl0eSBpcyBub3QgZXhwbGljaXRseSBkZXNjcmliZWQgYnkgZmlybXdhcmUuCiAgKgogICogVHJ5 IHRvIGdldCBkZXZpY2VzJ3MgRE1BIGNvbmZpZ3VyYXRpb24gZnJvbSBEVCBhbmQgdXBkYXRlIGl0 CiAgKiBhY2NvcmRpbmdseS4KICAqLwotaW50IG9mX2RtYV9jb25maWd1cmUoc3RydWN0IGRldmlj ZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBib29sIGZvcmNlX2RtYSkKK2ludCBvZl9k bWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldiwgYm9vbCBmb3JjZV9kbWEpCiB7CiAJc3Ry dWN0IGRldmljZV9ub2RlICpkbWFfcGFyZW50OwogCWludCByZXQ7CiAKLQlkbWFfcGFyZW50ID0g X19vZl9nZXRfZG1hX3BhcmVudChucCk7CisJZG1hX3BhcmVudCA9IF9fb2ZfZ2V0X2RtYV9wYXJl bnQoZGV2LT5vZl9ub2RlKTsKIAlyZXQgPSBvZl9kbWFfY29uZmlndXJlX3BhcmVudChkZXYsIGRt YV9wYXJlbnQsIGZvcmNlX2RtYSk7CiAJb2Zfbm9kZV9wdXQoZG1hX3BhcmVudCk7CiAKQEAgLTk1 LDYgKzk0LDMxIEBAIGludCBvZl9kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry dWN0IGRldmljZV9ub2RlICpucCwgYm9vbCBmb3JjZV9kbWEpCiB9CiBFWFBPUlRfU1lNQk9MX0dQ TChvZl9kbWFfY29uZmlndXJlKTsKIAorLyoqCisgKiBvZl9kbWFfY29uZmlndXJlX2NvcHkgLSBT ZXR1cCBETUEgY29uZmlndXJhdGlvbiBiYXNlZCBvbiBhbm90aGVyIGRldmljZSdzIERUCisgKgkJ CSAgIG5vZGUKKyAqIEBkZXY6CURldmljZSB0byBhcHBseSBETUEgY29uZmlndXJhdGlvbgorICog QG5wOgkJRGV2aWNlIG5vZGUgdG8gY29weSB0aGUgY29uZmlndXJhdGlvbiBmcm9tCisgKiBAZm9y Y2VfZG1hOiAgV2hldGhlciBkZXZpY2UgaXMgdG8gYmUgc2V0IHVwIGJ5IG9mX2RtYV9jb25maWd1 cmUoKSBldmVuIGlmCisgKgkJRE1BIGNhcGFiaWxpdHkgaXMgbm90IGV4cGxpY2l0bHkgZGVzY3Jp YmVkIGJ5IGZpcm13YXJlLgorICoKKyAqIFRyeSB0byBnZXQgZGV2aWNlcydzIERNQSBjb25maWd1 cmF0aW9uIGZyb20gRFQgYW5kIHVwZGF0ZSBpdAorICogYWNjb3JkaW5nbHkuCisgKi8KK2ludCBv Zl9kbWFfY29uZmlndXJlX2NvcHkoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25v ZGUgKm5wLAorCQkJICBib29sIGZvcmNlX2RtYSkKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmRt YV9wYXJlbnQ7CisJaW50IHJldDsKKworCWRtYV9wYXJlbnQgPSBfX29mX2dldF9kbWFfcGFyZW50 KG5wKTsKKwlyZXQgPSBvZl9kbWFfY29uZmlndXJlX3BhcmVudChkZXYsIGRtYV9wYXJlbnQsIGZv cmNlX2RtYSk7CisJb2Zfbm9kZV9wdXQoZG1hX3BhcmVudCk7CisKKwlyZXR1cm4gcmV0OworfQor RVhQT1JUX1NZTUJPTF9HUEwob2ZfZG1hX2NvbmZpZ3VyZV9jb3B5KTsKKwogLyoqCiAgKiBvZl9k bWFfY29uZmlndXJlX3BhcmVudCAtIFNldHVwIERNQSBjb25maWd1cmF0aW9uIGJhc2VkIG9uIGEg cGFyZW50IGJ1cycKICAqCQkJICAgICBEVCBub2RlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9n bnRkZXYuYyBiL2RyaXZlcnMveGVuL2dudGRldi5jCmluZGV4IGE0NDZhNzIyMWUxMy4uMTE1ZTM5 ZjlmNjdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9nbnRkZXYuYworKysgYi9kcml2ZXJzL3hl bi9nbnRkZXYuYwpAQCAtNjMyLDcgKzYzMiw3IEBAIHN0YXRpYyBpbnQgZ250ZGV2X29wZW4oc3Ry dWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZsaXApCiAJICogRml4IHRoaXMgYnkgY2Fs bGluZyBvZl9kbWFfY29uZmlndXJlKCkgd2l0aCBhIE5VTEwgbm9kZSB0byBzZXQKIAkgKiBkZWZh dWx0IERNQSBvcHMuCiAJICovCi0Jb2ZfZG1hX2NvbmZpZ3VyZShwcml2LT5kbWFfZGV2LCBOVUxM LCB0cnVlKTsKKwlvZl9kbWFfY29uZmlndXJlKHByaXYtPmRtYV9kZXYsIHRydWUpOwogI2VuZGlm CiAJcHJfZGVidWcoInByaXYgJXBcbiIsIHByaXYpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L29mX2RldmljZS5oIGIvaW5jbHVkZS9saW51eC9vZl9kZXZpY2UuaAppbmRleCA4ZjMxOWI4 YzlkZWIuLmIwNWE4NmZkMzVhNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9vZl9kZXZpY2Uu aAorKysgYi9pbmNsdWRlL2xpbnV4L29mX2RldmljZS5oCkBAIC01NSw3ICs1NSw5IEBAIHN0YXRp YyBpbmxpbmUgc3RydWN0IGRldmljZV9ub2RlICpvZl9jcHVfZGV2aWNlX25vZGVfZ2V0KGludCBj cHUpCiAJcmV0dXJuIG9mX25vZGVfZ2V0KGNwdV9kZXYtPm9mX25vZGUpOwogfQogCi1pbnQgb2Zf ZG1hX2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZjZV9ub2RlICpucCwg Ym9vbCBmb3JjZV9kbWEpOworaW50IG9mX2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2 LCBib29sIGZvcmNlX2RtYSk7CitpbnQgb2ZfZG1hX2NvbmZpZ3VyZV9jb3B5KHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpucCwKKwkJCSAgYm9vbCBmb3JjZV9kbWEpOwog aW50IG9mX2RtYV9jb25maWd1cmVfcGFyZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRl dmljZV9ub2RlICpwYXJlbnQsCiAJCQkgICAgYm9vbCBmb3JjZV9kbWEpOwogI2Vsc2UgLyogQ09O RklHX09GICovCkBAIC0xMDcsMTIgKzEwOSwxOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBkZXZp Y2Vfbm9kZSAqb2ZfY3B1X2RldmljZV9ub2RlX2dldChpbnQgY3B1KQogfQogCiBzdGF0aWMgaW5s aW5lIGludCBvZl9kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldiwKLQkJCQkgICBzdHJ1 Y3QgZGV2aWNlX25vZGUgKm5wLAogCQkJCSAgIGJvb2wgZm9yY2VfZG1hKQogewogCXJldHVybiAw OwogfQogCitzdGF0aWMgaW5saW5lIGludCBvZl9kbWFfY29uZmlndXJlX2NvcHkoc3RydWN0IGRl dmljZSAqZGV2LAorCQkJCQlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAorCQkJCQlib29sIGZvcmNl X2RtYSkKK3sKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGlubGluZSBpbnQgb2ZfZG1hX2NvbmZp Z3VyZV9wYXJlbnQoc3RydWN0IGRldmljZSAqZGV2LAogCQkJCQkgIHN0cnVjdCBkZXZpY2Vfbm9k ZSAqcGFyZW50LAogCQkJCQkgIGJvb2wgZm9yY2VfZG1hKQotLSAKMi4yMy4wCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==