[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAPUzuU1oqiOhKcV5e21rhjP_XcscGGLq9oZMvcK4DB_B2yZ7Jw@mail.gmail.com>
Date: Tue, 17 Jun 2025 13:16:41 +0300
From: Alexander Kochetkov <al.kochet@...il.com>
To: kernel test robot <lkp@...el.com>
Cc: Vinod Koul <vkoul@...nel.org>, dmaengine@...r.kernel.org,
linux-kernel@...r.kernel.org, llvm@...ts.linux.dev,
oe-kbuild-all@...ts.linux.dev, Nishad Saraf <nishads@....com>,
Lizhi Hou <lizhi.hou@....com>, Jacky Huang <ychuang3@...oton.com>,
Shan-Chun Hung <schung@...oton.com>, Florian Fainelli <florian.fainelli@...adcom.com>,
Ray Jui <rjui@...adcom.com>, Scott Branden <sbranden@...adcom.com>,
Lars-Peter Clausen <lars@...afoo.de>, Paul Cercueil <paul@...pouillou.net>,
Eugeniy Paltsev <Eugeniy.Paltsev@...opsys.com>, Manivannan Sadhasivam <mani@...nel.org>,
Frank Li <Frank.Li@....com>, Zhou Wang <wangzhou1@...ilicon.com>,
Longfang Liu <liulongfang@...wei.com>, Andy Shevchenko <andy@...nel.org>,
Shawn Guo <shawnguo@...nel.org>, Sascha Hauer <s.hauer@...gutronix.de>,
Pengutronix Kernel Team <kernel@...gutronix.de>, Fabio Estevam <festevam@...il.com>,
Keguang Zhang <keguang.zhang@...il.com>, Sean Wang <sean.wang@...iatek.com>,
Matthias Brugger <matthias.bgg@...il.com>,
AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>,
Andreas Färber <afaerber@...e.de>,
Daniel Mack <daniel@...que.org>, Haojian Zhuang <haojian.zhuang@...il.com>,
Robert Jarzmik <robert.jarzmik@...e.fr>
Subject: Re: [PATCH v2 2/2] !!! TESTING ONLY !!! Allow compile virt-dma users
on ARM64 platform
One more question. I can translate all other dma drivers to BH
workqueue. I cannot test all of them, but I did this for sun6i and it
works as usual. Fix straightforward. Is it a good idea?
That happened because of this change and this driver doesn't compile on x64.
Any action from me? Should I send v3 without this change?
diff --git a/drivers/dma/qcom/Kconfig b/drivers/dma/qcom/Kconfig
index ace75d7b835a..224436d3e50a 100644
--- a/drivers/dma/qcom/Kconfig
+++ b/drivers/dma/qcom/Kconfig
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-only
config QCOM_ADM
tristate "Qualcomm ADM support"
- depends on (ARCH_QCOM || COMPILE_TEST) && !PHYS_ADDR_T_64BIT
+ depends on (ARCH_QCOM || COMPILE_TEST)
select DMA_ENGINE
select DMA_VIRTUAL_CHANNELS
help
вт, 17 июн. 2025 г. в 12:31, kernel test robot <lkp@...el.com>:
>
> Hi Alexander,
>
> kernel test robot noticed the following build warnings:
>
> [auto build test WARNING on vkoul-dmaengine/next]
> [also build test WARNING on shawnguo/for-next sunxi/sunxi/for-next lee-mfd/for-mfd-next linus/master v6.16-rc2 next-20250617]
> [cannot apply to atorgue-stm32/stm32-next lee-mfd/for-mfd-fixes]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch#_base_tree_information]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Alexander-Kochetkov/dmaengine-virt-dma-convert-tasklet-to-BH-workqueue-for-callback-invocation/20250616-205118
> base: https://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine.git next
> patch link: https://lore.kernel.org/r/20250616124934.141782-3-al.kochet%40gmail.com
> patch subject: [PATCH v2 2/2] !!! TESTING ONLY !!! Allow compile virt-dma users on ARM64 platform
> config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20250617/202506171615.p1kpBZuQ-lkp@intel.com/config)
> compiler: clang version 20.1.2 (https://github.com/llvm/llvm-project 58df0ef89dd64126512e4ee27b4ac3fd8ddf6247)
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250617/202506171615.p1kpBZuQ-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@...el.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202506171615.p1kpBZuQ-lkp@intel.com/
>
> All warnings (new ones prefixed by >>):
>
> drivers/dma/qcom/qcom_adm.c:245:7: error: incompatible pointer types assigning to 'u32 *' (aka 'unsigned int *') from 'phys_addr_t *' (aka 'unsigned long long *') [-Werror,-Wincompatible-pointer-types]
> 245 | src = &achan->slave.src_addr;
> | ^ ~~~~~~~~~~~~~~~~~~~~~~
> drivers/dma/qcom/qcom_adm.c:251:7: error: incompatible pointer types assigning to 'u32 *' (aka 'unsigned int *') from 'phys_addr_t *' (aka 'unsigned long long *') [-Werror,-Wincompatible-pointer-types]
> 251 | dst = &achan->slave.dst_addr;
> | ^ ~~~~~~~~~~~~~~~~~~~~~~
> drivers/dma/qcom/qcom_adm.c:309:7: error: incompatible pointer types assigning to 'u32 *' (aka 'unsigned int *') from 'phys_addr_t *' (aka 'unsigned long long *') [-Werror,-Wincompatible-pointer-types]
> 309 | src = &achan->slave.src_addr;
> | ^ ~~~~~~~~~~~~~~~~~~~~~~
> drivers/dma/qcom/qcom_adm.c:313:7: error: incompatible pointer types assigning to 'u32 *' (aka 'unsigned int *') from 'phys_addr_t *' (aka 'unsigned long long *') [-Werror,-Wincompatible-pointer-types]
> 313 | dst = &achan->slave.dst_addr;
> | ^ ~~~~~~~~~~~~~~~~~~~~~~
> >> drivers/dma/qcom/qcom_adm.c:848:59: warning: implicit conversion from 'unsigned long' to 'unsigned int' changes value from 18446744072371568648 to 2956984328 [-Wconstant-conversion]
> 848 | writel(ADM_CI_RANGE_START(0x40) | ADM_CI_RANGE_END(0xb0) |
> | ~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
> 849 | ADM_CI_BURST_8_WORDS, adev->regs + ADM_CI_CONF(0));
> | ~~~~~~~~~~~~~~~~~~~~
> 1 warning and 4 errors generated.
>
>
> vim +848 drivers/dma/qcom/qcom_adm.c
>
> 03de6b273805b3 Arnd Bergmann 2021-11-22 745
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 746 static int adm_dma_probe(struct platform_device *pdev)
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 747 {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 748 struct adm_device *adev;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 749 int ret;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 750 u32 i;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 751
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 752 adev = devm_kzalloc(&pdev->dev, sizeof(*adev), GFP_KERNEL);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 753 if (!adev)
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 754 return -ENOMEM;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 755
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 756 adev->dev = &pdev->dev;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 757
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 758 adev->regs = devm_platform_ioremap_resource(pdev, 0);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 759 if (IS_ERR(adev->regs))
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 760 return PTR_ERR(adev->regs);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 761
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 762 adev->irq = platform_get_irq(pdev, 0);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 763 if (adev->irq < 0)
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 764 return adev->irq;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 765
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 766 ret = of_property_read_u32(pdev->dev.of_node, "qcom,ee", &adev->ee);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 767 if (ret) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 768 dev_err(adev->dev, "Execution environment unspecified\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 769 return ret;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 770 }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 771
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 772 adev->core_clk = devm_clk_get(adev->dev, "core");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 773 if (IS_ERR(adev->core_clk))
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 774 return PTR_ERR(adev->core_clk);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 775
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 776 adev->iface_clk = devm_clk_get(adev->dev, "iface");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 777 if (IS_ERR(adev->iface_clk))
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 778 return PTR_ERR(adev->iface_clk);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 779
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 780 adev->clk_reset = devm_reset_control_get_exclusive(&pdev->dev, "clk");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 781 if (IS_ERR(adev->clk_reset)) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 782 dev_err(adev->dev, "failed to get ADM0 reset\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 783 return PTR_ERR(adev->clk_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 784 }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 785
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 786 adev->c0_reset = devm_reset_control_get_exclusive(&pdev->dev, "c0");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 787 if (IS_ERR(adev->c0_reset)) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 788 dev_err(adev->dev, "failed to get ADM0 C0 reset\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 789 return PTR_ERR(adev->c0_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 790 }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 791
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 792 adev->c1_reset = devm_reset_control_get_exclusive(&pdev->dev, "c1");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 793 if (IS_ERR(adev->c1_reset)) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 794 dev_err(adev->dev, "failed to get ADM0 C1 reset\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 795 return PTR_ERR(adev->c1_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 796 }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 797
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 798 adev->c2_reset = devm_reset_control_get_exclusive(&pdev->dev, "c2");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 799 if (IS_ERR(adev->c2_reset)) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 800 dev_err(adev->dev, "failed to get ADM0 C2 reset\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 801 return PTR_ERR(adev->c2_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 802 }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 803
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 804 ret = clk_prepare_enable(adev->core_clk);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 805 if (ret) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 806 dev_err(adev->dev, "failed to prepare/enable core clock\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 807 return ret;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 808 }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 809
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 810 ret = clk_prepare_enable(adev->iface_clk);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 811 if (ret) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 812 dev_err(adev->dev, "failed to prepare/enable iface clock\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 813 goto err_disable_core_clk;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 814 }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 815
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 816 reset_control_assert(adev->clk_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 817 reset_control_assert(adev->c0_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 818 reset_control_assert(adev->c1_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 819 reset_control_assert(adev->c2_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 820
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 821 udelay(2);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 822
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 823 reset_control_deassert(adev->clk_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 824 reset_control_deassert(adev->c0_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 825 reset_control_deassert(adev->c1_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 826 reset_control_deassert(adev->c2_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 827
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 828 adev->channels = devm_kcalloc(adev->dev, ADM_MAX_CHANNELS,
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 829 sizeof(*adev->channels), GFP_KERNEL);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 830
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 831 if (!adev->channels) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 832 ret = -ENOMEM;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 833 goto err_disable_clks;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 834 }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 835
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 836 /* allocate and initialize channels */
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 837 INIT_LIST_HEAD(&adev->common.channels);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 838
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 839 for (i = 0; i < ADM_MAX_CHANNELS; i++)
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 840 adm_channel_init(adev, &adev->channels[i], i);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 841
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 842 /* reset CRCIs */
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 843 for (i = 0; i < 16; i++)
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 844 writel(ADM_CRCI_CTL_RST, adev->regs +
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 845 ADM_CRCI_CTL(i, adev->ee));
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 846
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 847 /* configure client interfaces */
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 @848 writel(ADM_CI_RANGE_START(0x40) | ADM_CI_RANGE_END(0xb0) |
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 849 ADM_CI_BURST_8_WORDS, adev->regs + ADM_CI_CONF(0));
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 850 writel(ADM_CI_RANGE_START(0x2a) | ADM_CI_RANGE_END(0x2c) |
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 851 ADM_CI_BURST_8_WORDS, adev->regs + ADM_CI_CONF(1));
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 852 writel(ADM_CI_RANGE_START(0x12) | ADM_CI_RANGE_END(0x28) |
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 853 ADM_CI_BURST_8_WORDS, adev->regs + ADM_CI_CONF(2));
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 854 writel(ADM_GP_CTL_LP_EN | ADM_GP_CTL_LP_CNT(0xf),
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 855 adev->regs + ADM_GP_CTL);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 856
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 857 ret = devm_request_irq(adev->dev, adev->irq, adm_dma_irq,
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 858 0, "adm_dma", adev);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 859 if (ret)
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 860 goto err_disable_clks;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 861
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 862 platform_set_drvdata(pdev, adev);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 863
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 864 adev->common.dev = adev->dev;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 865 adev->common.dev->dma_parms = &adev->dma_parms;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 866
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 867 /* set capabilities */
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 868 dma_cap_zero(adev->common.cap_mask);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 869 dma_cap_set(DMA_SLAVE, adev->common.cap_mask);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 870 dma_cap_set(DMA_PRIVATE, adev->common.cap_mask);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 871
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 872 /* initialize dmaengine apis */
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 873 adev->common.directions = BIT(DMA_DEV_TO_MEM | DMA_MEM_TO_DEV);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 874 adev->common.residue_granularity = DMA_RESIDUE_GRANULARITY_DESCRIPTOR;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 875 adev->common.src_addr_widths = DMA_SLAVE_BUSWIDTH_4_BYTES;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 876 adev->common.dst_addr_widths = DMA_SLAVE_BUSWIDTH_4_BYTES;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 877 adev->common.device_free_chan_resources = adm_free_chan;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 878 adev->common.device_prep_slave_sg = adm_prep_slave_sg;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 879 adev->common.device_issue_pending = adm_issue_pending;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 880 adev->common.device_tx_status = adm_tx_status;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 881 adev->common.device_terminate_all = adm_terminate_all;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 882 adev->common.device_config = adm_slave_config;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 883
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 884 ret = dma_async_device_register(&adev->common);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 885 if (ret) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 886 dev_err(adev->dev, "failed to register dma async device\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 887 goto err_disable_clks;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 888 }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 889
> 03de6b273805b3 Arnd Bergmann 2021-11-22 890 ret = of_dma_controller_register(pdev->dev.of_node, adm_dma_xlate,
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 891 &adev->common);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 892 if (ret)
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 893 goto err_unregister_dma;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 894
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 895 return 0;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 896
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 897 err_unregister_dma:
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 898 dma_async_device_unregister(&adev->common);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 899 err_disable_clks:
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 900 clk_disable_unprepare(adev->iface_clk);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 901 err_disable_core_clk:
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 902 clk_disable_unprepare(adev->core_clk);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 903
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 904 return ret;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 905 }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 906
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists