All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Amit Singh Tomar <amittomer25@gmail.com>,
	andre.przywara@arm.com, vkoul@kernel.org, afaerber@suse.de,
	manivannan.sadhasivam@linaro.org
Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com,
	dan.j.williams@intel.com, cristian.ciocaltea@gmail.com,
	dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-actions@lists.infradead.org
Subject: Re: [PATCH v5 03/10] dmaengine: Actions: Add support for S700 DMA engine
Date: Fri, 3 Jul 2020 06:07:41 +0800	[thread overview]
Message-ID: <202007030555.x6EIKt95%lkp@intel.com> (raw)
In-Reply-To: <1593701576-28580-4-git-send-email-amittomer25@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 6828 bytes --]

Hi Amit,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on robh/for-next]
[also build test WARNING on clk/clk-next pza/reset/next linus/master v5.8-rc3 next-20200702]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use  as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Amit-Singh-Tomar/Add-MMC-and-DMA-support-for-Actions-S700/20200702-225741
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
config: arm64-randconfig-r002-20200701 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 003a086ffc0d1affbb8300b36225fb8150a2d40a)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm64 cross compiling tool for clang build
        # apt-get install binutils-aarch64-linux-gnu
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/dma/owl-dma.c:1117:14: warning: cast to smaller integer type 'enum owl_dma_id' from 'const void *' [-Wvoid-pointer-to-enum-cast]
           od->devid = (enum owl_dma_id)of_device_get_match_data(&pdev->dev);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   1 warning generated.

vim +1117 drivers/dma/owl-dma.c

  1087	
  1088	static int owl_dma_probe(struct platform_device *pdev)
  1089	{
  1090		struct device_node *np = pdev->dev.of_node;
  1091		struct owl_dma *od;
  1092		int ret, i, nr_channels, nr_requests;
  1093	
  1094		od = devm_kzalloc(&pdev->dev, sizeof(*od), GFP_KERNEL);
  1095		if (!od)
  1096			return -ENOMEM;
  1097	
  1098		od->base = devm_platform_ioremap_resource(pdev, 0);
  1099		if (IS_ERR(od->base))
  1100			return PTR_ERR(od->base);
  1101	
  1102		ret = of_property_read_u32(np, "dma-channels", &nr_channels);
  1103		if (ret) {
  1104			dev_err(&pdev->dev, "can't get dma-channels\n");
  1105			return ret;
  1106		}
  1107	
  1108		ret = of_property_read_u32(np, "dma-requests", &nr_requests);
  1109		if (ret) {
  1110			dev_err(&pdev->dev, "can't get dma-requests\n");
  1111			return ret;
  1112		}
  1113	
  1114		dev_info(&pdev->dev, "dma-channels %d, dma-requests %d\n",
  1115			 nr_channels, nr_requests);
  1116	
> 1117		od->devid = (enum owl_dma_id)of_device_get_match_data(&pdev->dev);
  1118	
  1119		od->nr_pchans = nr_channels;
  1120		od->nr_vchans = nr_requests;
  1121	
  1122		pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
  1123	
  1124		platform_set_drvdata(pdev, od);
  1125		spin_lock_init(&od->lock);
  1126	
  1127		dma_cap_set(DMA_MEMCPY, od->dma.cap_mask);
  1128		dma_cap_set(DMA_SLAVE, od->dma.cap_mask);
  1129		dma_cap_set(DMA_CYCLIC, od->dma.cap_mask);
  1130	
  1131		od->dma.dev = &pdev->dev;
  1132		od->dma.device_free_chan_resources = owl_dma_free_chan_resources;
  1133		od->dma.device_tx_status = owl_dma_tx_status;
  1134		od->dma.device_issue_pending = owl_dma_issue_pending;
  1135		od->dma.device_prep_dma_memcpy = owl_dma_prep_memcpy;
  1136		od->dma.device_prep_slave_sg = owl_dma_prep_slave_sg;
  1137		od->dma.device_prep_dma_cyclic = owl_prep_dma_cyclic;
  1138		od->dma.device_config = owl_dma_config;
  1139		od->dma.device_pause = owl_dma_pause;
  1140		od->dma.device_resume = owl_dma_resume;
  1141		od->dma.device_terminate_all = owl_dma_terminate_all;
  1142		od->dma.src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES);
  1143		od->dma.dst_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES);
  1144		od->dma.directions = BIT(DMA_MEM_TO_MEM);
  1145		od->dma.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST;
  1146	
  1147		INIT_LIST_HEAD(&od->dma.channels);
  1148	
  1149		od->clk = devm_clk_get(&pdev->dev, NULL);
  1150		if (IS_ERR(od->clk)) {
  1151			dev_err(&pdev->dev, "unable to get clock\n");
  1152			return PTR_ERR(od->clk);
  1153		}
  1154	
  1155		/*
  1156		 * Eventhough the DMA controller is capable of generating 4
  1157		 * IRQ's for DMA priority feature, we only use 1 IRQ for
  1158		 * simplification.
  1159		 */
  1160		od->irq = platform_get_irq(pdev, 0);
  1161		ret = devm_request_irq(&pdev->dev, od->irq, owl_dma_interrupt, 0,
  1162				       dev_name(&pdev->dev), od);
  1163		if (ret) {
  1164			dev_err(&pdev->dev, "unable to request IRQ\n");
  1165			return ret;
  1166		}
  1167	
  1168		/* Init physical channel */
  1169		od->pchans = devm_kcalloc(&pdev->dev, od->nr_pchans,
  1170					  sizeof(struct owl_dma_pchan), GFP_KERNEL);
  1171		if (!od->pchans)
  1172			return -ENOMEM;
  1173	
  1174		for (i = 0; i < od->nr_pchans; i++) {
  1175			struct owl_dma_pchan *pchan = &od->pchans[i];
  1176	
  1177			pchan->id = i;
  1178			pchan->base = od->base + OWL_DMA_CHAN_BASE(i);
  1179		}
  1180	
  1181		/* Init virtual channel */
  1182		od->vchans = devm_kcalloc(&pdev->dev, od->nr_vchans,
  1183					  sizeof(struct owl_dma_vchan), GFP_KERNEL);
  1184		if (!od->vchans)
  1185			return -ENOMEM;
  1186	
  1187		for (i = 0; i < od->nr_vchans; i++) {
  1188			struct owl_dma_vchan *vchan = &od->vchans[i];
  1189	
  1190			vchan->vc.desc_free = owl_dma_desc_free;
  1191			vchan_init(&vchan->vc, &od->dma);
  1192		}
  1193	
  1194		/* Create a pool of consistent memory blocks for hardware descriptors */
  1195		od->lli_pool = dma_pool_create(dev_name(od->dma.dev), od->dma.dev,
  1196					       sizeof(struct owl_dma_lli),
  1197					       __alignof__(struct owl_dma_lli),
  1198					       0);
  1199		if (!od->lli_pool) {
  1200			dev_err(&pdev->dev, "unable to allocate DMA descriptor pool\n");
  1201			return -ENOMEM;
  1202		}
  1203	
  1204		clk_prepare_enable(od->clk);
  1205	
  1206		ret = dma_async_device_register(&od->dma);
  1207		if (ret) {
  1208			dev_err(&pdev->dev, "failed to register DMA engine device\n");
  1209			goto err_pool_free;
  1210		}
  1211	
  1212		/* Device-tree DMA controller registration */
  1213		ret = of_dma_controller_register(pdev->dev.of_node,
  1214						 owl_dma_of_xlate, od);
  1215		if (ret) {
  1216			dev_err(&pdev->dev, "of_dma_controller_register failed\n");
  1217			goto err_dma_unregister;
  1218		}
  1219	
  1220		return 0;
  1221	
  1222	err_dma_unregister:
  1223		dma_async_device_unregister(&od->dma);
  1224	err_pool_free:
  1225		clk_disable_unprepare(od->clk);
  1226		dma_pool_destroy(od->lli_pool);
  1227	
  1228		return ret;
  1229	}
  1230	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 36278 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Amit Singh Tomar <amittomer25@gmail.com>,
	andre.przywara@arm.com, vkoul@kernel.org, afaerber@suse.de,
	manivannan.sadhasivam@linaro.org
Cc: kbuild-all@lists.01.org, linux-actions@lists.infradead.org,
	linux-kernel@vger.kernel.org, cristian.ciocaltea@gmail.com,
	clang-built-linux@googlegroups.com, dmaengine@vger.kernel.org,
	dan.j.williams@intel.com, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v5 03/10] dmaengine: Actions: Add support for S700 DMA engine
Date: Fri, 3 Jul 2020 06:07:41 +0800	[thread overview]
Message-ID: <202007030555.x6EIKt95%lkp@intel.com> (raw)
In-Reply-To: <1593701576-28580-4-git-send-email-amittomer25@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 6828 bytes --]

Hi Amit,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on robh/for-next]
[also build test WARNING on clk/clk-next pza/reset/next linus/master v5.8-rc3 next-20200702]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use  as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Amit-Singh-Tomar/Add-MMC-and-DMA-support-for-Actions-S700/20200702-225741
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
config: arm64-randconfig-r002-20200701 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 003a086ffc0d1affbb8300b36225fb8150a2d40a)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm64 cross compiling tool for clang build
        # apt-get install binutils-aarch64-linux-gnu
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/dma/owl-dma.c:1117:14: warning: cast to smaller integer type 'enum owl_dma_id' from 'const void *' [-Wvoid-pointer-to-enum-cast]
           od->devid = (enum owl_dma_id)of_device_get_match_data(&pdev->dev);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   1 warning generated.

vim +1117 drivers/dma/owl-dma.c

  1087	
  1088	static int owl_dma_probe(struct platform_device *pdev)
  1089	{
  1090		struct device_node *np = pdev->dev.of_node;
  1091		struct owl_dma *od;
  1092		int ret, i, nr_channels, nr_requests;
  1093	
  1094		od = devm_kzalloc(&pdev->dev, sizeof(*od), GFP_KERNEL);
  1095		if (!od)
  1096			return -ENOMEM;
  1097	
  1098		od->base = devm_platform_ioremap_resource(pdev, 0);
  1099		if (IS_ERR(od->base))
  1100			return PTR_ERR(od->base);
  1101	
  1102		ret = of_property_read_u32(np, "dma-channels", &nr_channels);
  1103		if (ret) {
  1104			dev_err(&pdev->dev, "can't get dma-channels\n");
  1105			return ret;
  1106		}
  1107	
  1108		ret = of_property_read_u32(np, "dma-requests", &nr_requests);
  1109		if (ret) {
  1110			dev_err(&pdev->dev, "can't get dma-requests\n");
  1111			return ret;
  1112		}
  1113	
  1114		dev_info(&pdev->dev, "dma-channels %d, dma-requests %d\n",
  1115			 nr_channels, nr_requests);
  1116	
> 1117		od->devid = (enum owl_dma_id)of_device_get_match_data(&pdev->dev);
  1118	
  1119		od->nr_pchans = nr_channels;
  1120		od->nr_vchans = nr_requests;
  1121	
  1122		pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
  1123	
  1124		platform_set_drvdata(pdev, od);
  1125		spin_lock_init(&od->lock);
  1126	
  1127		dma_cap_set(DMA_MEMCPY, od->dma.cap_mask);
  1128		dma_cap_set(DMA_SLAVE, od->dma.cap_mask);
  1129		dma_cap_set(DMA_CYCLIC, od->dma.cap_mask);
  1130	
  1131		od->dma.dev = &pdev->dev;
  1132		od->dma.device_free_chan_resources = owl_dma_free_chan_resources;
  1133		od->dma.device_tx_status = owl_dma_tx_status;
  1134		od->dma.device_issue_pending = owl_dma_issue_pending;
  1135		od->dma.device_prep_dma_memcpy = owl_dma_prep_memcpy;
  1136		od->dma.device_prep_slave_sg = owl_dma_prep_slave_sg;
  1137		od->dma.device_prep_dma_cyclic = owl_prep_dma_cyclic;
  1138		od->dma.device_config = owl_dma_config;
  1139		od->dma.device_pause = owl_dma_pause;
  1140		od->dma.device_resume = owl_dma_resume;
  1141		od->dma.device_terminate_all = owl_dma_terminate_all;
  1142		od->dma.src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES);
  1143		od->dma.dst_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES);
  1144		od->dma.directions = BIT(DMA_MEM_TO_MEM);
  1145		od->dma.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST;
  1146	
  1147		INIT_LIST_HEAD(&od->dma.channels);
  1148	
  1149		od->clk = devm_clk_get(&pdev->dev, NULL);
  1150		if (IS_ERR(od->clk)) {
  1151			dev_err(&pdev->dev, "unable to get clock\n");
  1152			return PTR_ERR(od->clk);
  1153		}
  1154	
  1155		/*
  1156		 * Eventhough the DMA controller is capable of generating 4
  1157		 * IRQ's for DMA priority feature, we only use 1 IRQ for
  1158		 * simplification.
  1159		 */
  1160		od->irq = platform_get_irq(pdev, 0);
  1161		ret = devm_request_irq(&pdev->dev, od->irq, owl_dma_interrupt, 0,
  1162				       dev_name(&pdev->dev), od);
  1163		if (ret) {
  1164			dev_err(&pdev->dev, "unable to request IRQ\n");
  1165			return ret;
  1166		}
  1167	
  1168		/* Init physical channel */
  1169		od->pchans = devm_kcalloc(&pdev->dev, od->nr_pchans,
  1170					  sizeof(struct owl_dma_pchan), GFP_KERNEL);
  1171		if (!od->pchans)
  1172			return -ENOMEM;
  1173	
  1174		for (i = 0; i < od->nr_pchans; i++) {
  1175			struct owl_dma_pchan *pchan = &od->pchans[i];
  1176	
  1177			pchan->id = i;
  1178			pchan->base = od->base + OWL_DMA_CHAN_BASE(i);
  1179		}
  1180	
  1181		/* Init virtual channel */
  1182		od->vchans = devm_kcalloc(&pdev->dev, od->nr_vchans,
  1183					  sizeof(struct owl_dma_vchan), GFP_KERNEL);
  1184		if (!od->vchans)
  1185			return -ENOMEM;
  1186	
  1187		for (i = 0; i < od->nr_vchans; i++) {
  1188			struct owl_dma_vchan *vchan = &od->vchans[i];
  1189	
  1190			vchan->vc.desc_free = owl_dma_desc_free;
  1191			vchan_init(&vchan->vc, &od->dma);
  1192		}
  1193	
  1194		/* Create a pool of consistent memory blocks for hardware descriptors */
  1195		od->lli_pool = dma_pool_create(dev_name(od->dma.dev), od->dma.dev,
  1196					       sizeof(struct owl_dma_lli),
  1197					       __alignof__(struct owl_dma_lli),
  1198					       0);
  1199		if (!od->lli_pool) {
  1200			dev_err(&pdev->dev, "unable to allocate DMA descriptor pool\n");
  1201			return -ENOMEM;
  1202		}
  1203	
  1204		clk_prepare_enable(od->clk);
  1205	
  1206		ret = dma_async_device_register(&od->dma);
  1207		if (ret) {
  1208			dev_err(&pdev->dev, "failed to register DMA engine device\n");
  1209			goto err_pool_free;
  1210		}
  1211	
  1212		/* Device-tree DMA controller registration */
  1213		ret = of_dma_controller_register(pdev->dev.of_node,
  1214						 owl_dma_of_xlate, od);
  1215		if (ret) {
  1216			dev_err(&pdev->dev, "of_dma_controller_register failed\n");
  1217			goto err_dma_unregister;
  1218		}
  1219	
  1220		return 0;
  1221	
  1222	err_dma_unregister:
  1223		dma_async_device_unregister(&od->dma);
  1224	err_pool_free:
  1225		clk_disable_unprepare(od->clk);
  1226		dma_pool_destroy(od->lli_pool);
  1227	
  1228		return ret;
  1229	}
  1230	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 36278 bytes --]

[-- Attachment #3: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH v5 03/10] dmaengine: Actions: Add support for S700 DMA engine
Date: Fri, 03 Jul 2020 06:07:41 +0800	[thread overview]
Message-ID: <202007030555.x6EIKt95%lkp@intel.com> (raw)
In-Reply-To: <1593701576-28580-4-git-send-email-amittomer25@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 7012 bytes --]

Hi Amit,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on robh/for-next]
[also build test WARNING on clk/clk-next pza/reset/next linus/master v5.8-rc3 next-20200702]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use  as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Amit-Singh-Tomar/Add-MMC-and-DMA-support-for-Actions-S700/20200702-225741
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
config: arm64-randconfig-r002-20200701 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 003a086ffc0d1affbb8300b36225fb8150a2d40a)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm64 cross compiling tool for clang build
        # apt-get install binutils-aarch64-linux-gnu
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/dma/owl-dma.c:1117:14: warning: cast to smaller integer type 'enum owl_dma_id' from 'const void *' [-Wvoid-pointer-to-enum-cast]
           od->devid = (enum owl_dma_id)of_device_get_match_data(&pdev->dev);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   1 warning generated.

vim +1117 drivers/dma/owl-dma.c

  1087	
  1088	static int owl_dma_probe(struct platform_device *pdev)
  1089	{
  1090		struct device_node *np = pdev->dev.of_node;
  1091		struct owl_dma *od;
  1092		int ret, i, nr_channels, nr_requests;
  1093	
  1094		od = devm_kzalloc(&pdev->dev, sizeof(*od), GFP_KERNEL);
  1095		if (!od)
  1096			return -ENOMEM;
  1097	
  1098		od->base = devm_platform_ioremap_resource(pdev, 0);
  1099		if (IS_ERR(od->base))
  1100			return PTR_ERR(od->base);
  1101	
  1102		ret = of_property_read_u32(np, "dma-channels", &nr_channels);
  1103		if (ret) {
  1104			dev_err(&pdev->dev, "can't get dma-channels\n");
  1105			return ret;
  1106		}
  1107	
  1108		ret = of_property_read_u32(np, "dma-requests", &nr_requests);
  1109		if (ret) {
  1110			dev_err(&pdev->dev, "can't get dma-requests\n");
  1111			return ret;
  1112		}
  1113	
  1114		dev_info(&pdev->dev, "dma-channels %d, dma-requests %d\n",
  1115			 nr_channels, nr_requests);
  1116	
> 1117		od->devid = (enum owl_dma_id)of_device_get_match_data(&pdev->dev);
  1118	
  1119		od->nr_pchans = nr_channels;
  1120		od->nr_vchans = nr_requests;
  1121	
  1122		pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
  1123	
  1124		platform_set_drvdata(pdev, od);
  1125		spin_lock_init(&od->lock);
  1126	
  1127		dma_cap_set(DMA_MEMCPY, od->dma.cap_mask);
  1128		dma_cap_set(DMA_SLAVE, od->dma.cap_mask);
  1129		dma_cap_set(DMA_CYCLIC, od->dma.cap_mask);
  1130	
  1131		od->dma.dev = &pdev->dev;
  1132		od->dma.device_free_chan_resources = owl_dma_free_chan_resources;
  1133		od->dma.device_tx_status = owl_dma_tx_status;
  1134		od->dma.device_issue_pending = owl_dma_issue_pending;
  1135		od->dma.device_prep_dma_memcpy = owl_dma_prep_memcpy;
  1136		od->dma.device_prep_slave_sg = owl_dma_prep_slave_sg;
  1137		od->dma.device_prep_dma_cyclic = owl_prep_dma_cyclic;
  1138		od->dma.device_config = owl_dma_config;
  1139		od->dma.device_pause = owl_dma_pause;
  1140		od->dma.device_resume = owl_dma_resume;
  1141		od->dma.device_terminate_all = owl_dma_terminate_all;
  1142		od->dma.src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES);
  1143		od->dma.dst_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES);
  1144		od->dma.directions = BIT(DMA_MEM_TO_MEM);
  1145		od->dma.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST;
  1146	
  1147		INIT_LIST_HEAD(&od->dma.channels);
  1148	
  1149		od->clk = devm_clk_get(&pdev->dev, NULL);
  1150		if (IS_ERR(od->clk)) {
  1151			dev_err(&pdev->dev, "unable to get clock\n");
  1152			return PTR_ERR(od->clk);
  1153		}
  1154	
  1155		/*
  1156		 * Eventhough the DMA controller is capable of generating 4
  1157		 * IRQ's for DMA priority feature, we only use 1 IRQ for
  1158		 * simplification.
  1159		 */
  1160		od->irq = platform_get_irq(pdev, 0);
  1161		ret = devm_request_irq(&pdev->dev, od->irq, owl_dma_interrupt, 0,
  1162				       dev_name(&pdev->dev), od);
  1163		if (ret) {
  1164			dev_err(&pdev->dev, "unable to request IRQ\n");
  1165			return ret;
  1166		}
  1167	
  1168		/* Init physical channel */
  1169		od->pchans = devm_kcalloc(&pdev->dev, od->nr_pchans,
  1170					  sizeof(struct owl_dma_pchan), GFP_KERNEL);
  1171		if (!od->pchans)
  1172			return -ENOMEM;
  1173	
  1174		for (i = 0; i < od->nr_pchans; i++) {
  1175			struct owl_dma_pchan *pchan = &od->pchans[i];
  1176	
  1177			pchan->id = i;
  1178			pchan->base = od->base + OWL_DMA_CHAN_BASE(i);
  1179		}
  1180	
  1181		/* Init virtual channel */
  1182		od->vchans = devm_kcalloc(&pdev->dev, od->nr_vchans,
  1183					  sizeof(struct owl_dma_vchan), GFP_KERNEL);
  1184		if (!od->vchans)
  1185			return -ENOMEM;
  1186	
  1187		for (i = 0; i < od->nr_vchans; i++) {
  1188			struct owl_dma_vchan *vchan = &od->vchans[i];
  1189	
  1190			vchan->vc.desc_free = owl_dma_desc_free;
  1191			vchan_init(&vchan->vc, &od->dma);
  1192		}
  1193	
  1194		/* Create a pool of consistent memory blocks for hardware descriptors */
  1195		od->lli_pool = dma_pool_create(dev_name(od->dma.dev), od->dma.dev,
  1196					       sizeof(struct owl_dma_lli),
  1197					       __alignof__(struct owl_dma_lli),
  1198					       0);
  1199		if (!od->lli_pool) {
  1200			dev_err(&pdev->dev, "unable to allocate DMA descriptor pool\n");
  1201			return -ENOMEM;
  1202		}
  1203	
  1204		clk_prepare_enable(od->clk);
  1205	
  1206		ret = dma_async_device_register(&od->dma);
  1207		if (ret) {
  1208			dev_err(&pdev->dev, "failed to register DMA engine device\n");
  1209			goto err_pool_free;
  1210		}
  1211	
  1212		/* Device-tree DMA controller registration */
  1213		ret = of_dma_controller_register(pdev->dev.of_node,
  1214						 owl_dma_of_xlate, od);
  1215		if (ret) {
  1216			dev_err(&pdev->dev, "of_dma_controller_register failed\n");
  1217			goto err_dma_unregister;
  1218		}
  1219	
  1220		return 0;
  1221	
  1222	err_dma_unregister:
  1223		dma_async_device_unregister(&od->dma);
  1224	err_pool_free:
  1225		clk_disable_unprepare(od->clk);
  1226		dma_pool_destroy(od->lli_pool);
  1227	
  1228		return ret;
  1229	}
  1230	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 36278 bytes --]

  reply	other threads:[~2020-07-02 22:43 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-02 14:52 [PATCH v5 00/10] Add MMC and DMA support for Actions S700 Amit Singh Tomar
2020-07-02 14:52 ` Amit Singh Tomar
2020-07-02 14:52 ` [PATCH v5 01/10] dt-bindings: dmaengine: convert Actions Semi Owl SoCs bindings to yaml Amit Singh Tomar
2020-07-02 14:52   ` Amit Singh Tomar
2020-07-02 21:00   ` Rob Herring
2020-07-02 21:00     ` Rob Herring
2020-07-03  7:18     ` Amit Tomer
2020-07-03  7:18       ` Amit Tomer
2020-07-03  7:54       ` Amit Tomer
2020-07-03  7:54         ` Amit Tomer
2020-07-07 14:31         ` Rob Herring
2020-07-07 14:31           ` Rob Herring
2020-07-02 14:52 ` [PATCH v5 02/10] dmaengine: Actions: get rid of bit fields from dma descriptor Amit Singh Tomar
2020-07-02 14:52   ` Amit Singh Tomar
2020-07-12 17:11   ` Manivannan Sadhasivam
2020-07-12 17:11     ` Manivannan Sadhasivam
2020-07-02 14:52 ` [PATCH v5 03/10] dmaengine: Actions: Add support for S700 DMA engine Amit Singh Tomar
2020-07-02 14:52   ` Amit Singh Tomar
2020-07-02 22:07   ` kernel test robot [this message]
2020-07-02 22:07     ` kernel test robot
2020-07-02 22:07     ` kernel test robot
2020-07-02 14:52 ` [PATCH v5 04/10] clk: actions: Add MMC clock-register reset bits Amit Singh Tomar
2020-07-02 14:52   ` Amit Singh Tomar
2020-07-12 17:20   ` Manivannan Sadhasivam
2020-07-12 17:20     ` Manivannan Sadhasivam
2020-07-02 14:52 ` [PATCH v5 05/10] arm64: dts: actions: limit address range for pinctrl node Amit Singh Tomar
2020-07-02 14:52   ` Amit Singh Tomar
2020-07-12 17:23   ` Manivannan Sadhasivam
2020-07-12 17:23     ` Manivannan Sadhasivam
2020-07-02 14:52 ` [PATCH v5 06/10] arm64: dts: actions: Add DMA Controller for S700 Amit Singh Tomar
2020-07-02 14:52   ` Amit Singh Tomar
2020-07-12 17:24   ` Manivannan Sadhasivam
2020-07-12 17:24     ` Manivannan Sadhasivam
2020-07-02 14:52 ` [PATCH v5 07/10] dt-bindings: reset: s700: Add binding constants for mmc Amit Singh Tomar
2020-07-02 14:52   ` Amit Singh Tomar
2020-07-12 17:25   ` Manivannan Sadhasivam
2020-07-12 17:25     ` Manivannan Sadhasivam
2020-07-02 14:52 ` [PATCH v5 08/10] dt-bindings: mmc: owl: add compatible string actions,s700-mmc Amit Singh Tomar
2020-07-02 14:52   ` [PATCH v5 08/10] dt-bindings: mmc: owl: add compatible string actions, s700-mmc Amit Singh Tomar
2020-07-12 17:26   ` [PATCH v5 08/10] dt-bindings: mmc: owl: add compatible string actions,s700-mmc Manivannan Sadhasivam
2020-07-12 17:26     ` Manivannan Sadhasivam
2020-07-02 14:52 ` [PATCH v5 09/10] arm64: dts: actions: Add MMC controller support for S700 Amit Singh Tomar
2020-07-02 14:52   ` Amit Singh Tomar
2020-07-12 17:28   ` Manivannan Sadhasivam
2020-07-12 17:28     ` Manivannan Sadhasivam
2020-07-02 14:52 ` [PATCH v5 10/10] arm64: dts: actions: Add uSD support for Cubieboard7 Amit Singh Tomar
2020-07-02 14:52   ` Amit Singh Tomar
2020-07-12 17:30   ` Manivannan Sadhasivam
2020-07-12 17:30     ` Manivannan Sadhasivam
2020-07-12 18:45     ` Amit Tomer
2020-07-12 18:45       ` Amit Tomer
2020-07-12 23:17       ` André Przywara
2020-07-12 23:17         ` André Przywara
2020-07-13  9:03         ` Amit Tomer
2020-07-13  9:03           ` Amit Tomer
2020-07-13  3:00       ` Manivannan Sadhasivam
2020-07-13  3:00         ` Manivannan Sadhasivam
2020-07-13  9:08         ` Amit Tomer
2020-07-13  9:08           ` Amit Tomer
2020-07-17 14:40           ` Manivannan Sadhasivam
2020-07-17 14:40             ` Manivannan Sadhasivam

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202007030555.x6EIKt95%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=afaerber@suse.de \
    --cc=amittomer25@gmail.com \
    --cc=andre.przywara@arm.com \
    --cc=clang-built-linux@googlegroups.com \
    --cc=cristian.ciocaltea@gmail.com \
    --cc=dan.j.williams@intel.com \
    --cc=dmaengine@vger.kernel.org \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-actions@lists.infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=manivannan.sadhasivam@linaro.org \
    --cc=vkoul@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.