All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Linus Walleij <linus.walleij@linaro.org>,
	Vinod Koul <vkoul@kernel.org>, Rob Herring <robh+dt@kernel.org>,
	Krzysztof Kozlowski <krzk@kernel.org>
Cc: oe-kbuild-all@lists.linux.dev, dmaengine@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	Linus Walleij <linus.walleij@linaro.org>
Subject: Re: [PATCH 2/7] dmaengine: ste_dma40: Get LCPA SRAM from SRAM node
Date: Tue, 18 Apr 2023 03:54:51 +0800	[thread overview]
Message-ID: <202304180357.gfLjNPk9-lkp@intel.com> (raw)
In-Reply-To: <20230417-ux500-dma40-cleanup-v1-2-b26324956e47@linaro.org>

Hi Linus,

kernel test robot noticed the following build warnings:

[auto build test WARNING on fe15c26ee26efa11741a7b632e9f23b01aca4cc6]

url:    https://github.com/intel-lab-lkp/linux/commits/Linus-Walleij/dt-bindings-dma-dma40-Prefer-to-pass-sram-through-phandle/20230417-160001
base:   fe15c26ee26efa11741a7b632e9f23b01aca4cc6
patch link:    https://lore.kernel.org/r/20230417-ux500-dma40-cleanup-v1-2-b26324956e47%40linaro.org
patch subject: [PATCH 2/7] dmaengine: ste_dma40: Get LCPA SRAM from SRAM node
config: arm-buildonly-randconfig-r005-20230417 (https://download.01.org/0day-ci/archive/20230418/202304180357.gfLjNPk9-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
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
        # https://github.com/intel-lab-lkp/linux/commit/168b5818186247983ec0f99554e13c3aaa9383bb
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Linus-Walleij/dt-bindings-dma-dma40-Prefer-to-pass-sram-through-phandle/20230417-160001
        git checkout 168b5818186247983ec0f99554e13c3aaa9383bb
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/dma/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202304180357.gfLjNPk9-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from include/linux/device.h:15,
                    from include/linux/dma-mapping.h:7,
                    from drivers/dma/ste_dma40.c:9:
   drivers/dma/ste_dma40.c: In function 'd40_probe':
>> drivers/dma/ste_dma40.c:3555:30: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'dma_addr_t' {aka 'long long unsigned int'} [-Wformat=]
    3555 |         dev_info(&pdev->dev, "found LCPA SRAM at 0x%08x, size 0x%08x\n",
         |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:110:30: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                              ^~~
   include/linux/dev_printk.h:150:58: note: in expansion of macro 'dev_fmt'
     150 |         dev_printk_index_wrap(_dev_info, KERN_INFO, dev, dev_fmt(fmt), ##__VA_ARGS__)
         |                                                          ^~~~~~~
   drivers/dma/ste_dma40.c:3555:9: note: in expansion of macro 'dev_info'
    3555 |         dev_info(&pdev->dev, "found LCPA SRAM at 0x%08x, size 0x%08x\n",
         |         ^~~~~~~~
   drivers/dma/ste_dma40.c:3555:55: note: format string is defined here
    3555 |         dev_info(&pdev->dev, "found LCPA SRAM at 0x%08x, size 0x%08x\n",
         |                                                    ~~~^
         |                                                       |
         |                                                       unsigned int
         |                                                    %08llx
   drivers/dma/ste_dma40.c:3562:26: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'dma_addr_t' {aka 'long long unsigned int'} [-Wformat=]
    3562 |                          "[%s] Mismatch LCPA dma 0x%x, def %08x\n",
         |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:110:30: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                              ^~~
   include/linux/dev_printk.h:146:61: note: in expansion of macro 'dev_fmt'
     146 |         dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
         |                                                             ^~~~~~~
   drivers/dma/ste_dma40.c:3561:17: note: in expansion of macro 'dev_warn'
    3561 |                 dev_warn(&pdev->dev,
         |                 ^~~~~~~~
   drivers/dma/ste_dma40.c:3562:63: note: format string is defined here
    3562 |                          "[%s] Mismatch LCPA dma 0x%x, def %08x\n",
         |                                                            ~~~^
         |                                                               |
         |                                                               unsigned int
         |                                                            %08llx


vim +3555 drivers/dma/ste_dma40.c

  3505	
  3506	static int __init d40_probe(struct platform_device *pdev)
  3507	{
  3508		struct stedma40_platform_data *plat_data = dev_get_platdata(&pdev->dev);
  3509		struct device_node *np = pdev->dev.of_node;
  3510		struct device_node *np_lcpa;
  3511		int ret = -ENOENT;
  3512		struct d40_base *base;
  3513		struct resource *res;
  3514		struct resource res_lcpa;
  3515		int num_reserved_chans;
  3516		u32 val;
  3517	
  3518		if (!plat_data) {
  3519			if (np) {
  3520				if (d40_of_probe(pdev, np)) {
  3521					ret = -ENOMEM;
  3522					goto report_failure;
  3523				}
  3524			} else {
  3525				d40_err(&pdev->dev, "No pdata or Device Tree provided\n");
  3526				goto report_failure;
  3527			}
  3528		}
  3529	
  3530		base = d40_hw_detect_init(pdev);
  3531		if (!base)
  3532			goto report_failure;
  3533	
  3534		num_reserved_chans = d40_phy_res_init(base);
  3535	
  3536		platform_set_drvdata(pdev, base);
  3537	
  3538		spin_lock_init(&base->interrupt_lock);
  3539		spin_lock_init(&base->execmd_lock);
  3540	
  3541		/* Get IO for logical channel parameter address (LCPA) */
  3542		np_lcpa = of_parse_phandle(np, "sram", 0);
  3543		if (!np_lcpa) {
  3544			dev_err(&pdev->dev, "no LCPA SRAM node\n");
  3545			goto report_failure;
  3546		}
  3547		/* This is no device so read the address directly from the node */
  3548		ret = of_address_to_resource(np_lcpa, 0, &res_lcpa);
  3549		if (ret) {
  3550			dev_err(&pdev->dev, "no LCPA SRAM resource\n");
  3551			goto report_failure;
  3552		}
  3553		base->lcpa_size = resource_size(&res_lcpa);
  3554		base->phy_lcpa = res_lcpa.start;
> 3555		dev_info(&pdev->dev, "found LCPA SRAM at 0x%08x, size 0x%08x\n",
  3556			 base->phy_lcpa, base->lcpa_size);
  3557	
  3558		/* We make use of ESRAM memory for this. */
  3559		val = readl(base->virtbase + D40_DREG_LCPA);
  3560		if (base->phy_lcpa != val && val != 0) {
  3561			dev_warn(&pdev->dev,
  3562				 "[%s] Mismatch LCPA dma 0x%x, def %08x\n",
  3563				 __func__, val, base->phy_lcpa);
  3564		} else
  3565			writel(base->phy_lcpa, base->virtbase + D40_DREG_LCPA);
  3566	
  3567		base->lcpa_base = ioremap(base->phy_lcpa, base->lcpa_size);
  3568		if (!base->lcpa_base) {
  3569			ret = -ENOMEM;
  3570			d40_err(&pdev->dev, "Failed to ioremap LCPA region\n");
  3571			goto release_base;
  3572		}
  3573		/* If lcla has to be located in ESRAM we don't need to allocate */
  3574		if (base->plat_data->use_esram_lcla) {
  3575			res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
  3576								"lcla_esram");
  3577			if (!res) {
  3578				ret = -ENOENT;
  3579				d40_err(&pdev->dev,
  3580					"No \"lcla_esram\" memory resource\n");
  3581				goto destroy_cache;
  3582			}
  3583			base->lcla_pool.base = ioremap(res->start,
  3584							resource_size(res));
  3585			if (!base->lcla_pool.base) {
  3586				ret = -ENOMEM;
  3587				d40_err(&pdev->dev, "Failed to ioremap LCLA region\n");
  3588				goto destroy_cache;
  3589			}
  3590			writel(res->start, base->virtbase + D40_DREG_LCLA);
  3591	
  3592		} else {
  3593			ret = d40_lcla_allocate(base);
  3594			if (ret) {
  3595				d40_err(&pdev->dev, "Failed to allocate LCLA area\n");
  3596				goto destroy_cache;
  3597			}
  3598		}
  3599	
  3600		spin_lock_init(&base->lcla_pool.lock);
  3601	
  3602		base->irq = platform_get_irq(pdev, 0);
  3603	
  3604		ret = request_irq(base->irq, d40_handle_interrupt, 0, D40_NAME, base);
  3605		if (ret) {
  3606			d40_err(&pdev->dev, "No IRQ defined\n");
  3607			goto destroy_cache;
  3608		}
  3609	
  3610		if (base->plat_data->use_esram_lcla) {
  3611	
  3612			base->lcpa_regulator = regulator_get(base->dev, "lcla_esram");
  3613			if (IS_ERR(base->lcpa_regulator)) {
  3614				d40_err(&pdev->dev, "Failed to get lcpa_regulator\n");
  3615				ret = PTR_ERR(base->lcpa_regulator);
  3616				base->lcpa_regulator = NULL;
  3617				goto destroy_cache;
  3618			}
  3619	
  3620			ret = regulator_enable(base->lcpa_regulator);
  3621			if (ret) {
  3622				d40_err(&pdev->dev,
  3623					"Failed to enable lcpa_regulator\n");
  3624				regulator_put(base->lcpa_regulator);
  3625				base->lcpa_regulator = NULL;
  3626				goto destroy_cache;
  3627			}
  3628		}
  3629	
  3630		writel_relaxed(D40_DREG_GCC_ENABLE_ALL, base->virtbase + D40_DREG_GCC);
  3631	
  3632		pm_runtime_irq_safe(base->dev);
  3633		pm_runtime_set_autosuspend_delay(base->dev, DMA40_AUTOSUSPEND_DELAY);
  3634		pm_runtime_use_autosuspend(base->dev);
  3635		pm_runtime_mark_last_busy(base->dev);
  3636		pm_runtime_set_active(base->dev);
  3637		pm_runtime_enable(base->dev);
  3638	
  3639		ret = d40_dmaengine_init(base, num_reserved_chans);
  3640		if (ret)
  3641			goto destroy_cache;
  3642	
  3643		ret = dma_set_max_seg_size(base->dev, STEDMA40_MAX_SEG_SIZE);
  3644		if (ret) {
  3645			d40_err(&pdev->dev, "Failed to set dma max seg size\n");
  3646			goto destroy_cache;
  3647		}
  3648	
  3649		d40_hw_init(base);
  3650	
  3651		if (np) {
  3652			ret = of_dma_controller_register(np, d40_xlate, NULL);
  3653			if (ret)
  3654				dev_err(&pdev->dev,
  3655					"could not register of_dma_controller\n");
  3656		}
  3657	
  3658		dev_info(base->dev, "initialized\n");
  3659		return 0;
  3660	 destroy_cache:
  3661		kmem_cache_destroy(base->desc_slab);
  3662		if (base->virtbase)
  3663			iounmap(base->virtbase);
  3664	
  3665		if (base->lcla_pool.base && base->plat_data->use_esram_lcla) {
  3666			iounmap(base->lcla_pool.base);
  3667			base->lcla_pool.base = NULL;
  3668		}
  3669	
  3670		if (base->lcla_pool.dma_addr)
  3671			dma_unmap_single(base->dev, base->lcla_pool.dma_addr,
  3672					 SZ_1K * base->num_phy_chans,
  3673					 DMA_TO_DEVICE);
  3674	
  3675		if (!base->lcla_pool.base_unaligned && base->lcla_pool.base)
  3676			free_pages((unsigned long)base->lcla_pool.base,
  3677				   base->lcla_pool.pages);
  3678	
  3679		kfree(base->lcla_pool.base_unaligned);
  3680	
  3681		if (base->lcpa_base)
  3682			iounmap(base->lcpa_base);
  3683	
  3684	release_base:
  3685		if (base->phy_start)
  3686			release_mem_region(base->phy_start,
  3687					   base->phy_size);
  3688		if (base->clk) {
  3689			clk_disable_unprepare(base->clk);
  3690			clk_put(base->clk);
  3691		}
  3692	
  3693		if (base->lcpa_regulator) {
  3694			regulator_disable(base->lcpa_regulator);
  3695			regulator_put(base->lcpa_regulator);
  3696		}
  3697	
  3698		kfree(base->lcla_pool.alloc_map);
  3699		kfree(base->lookup_log_chans);
  3700		kfree(base->lookup_phy_chans);
  3701		kfree(base->phy_res);
  3702		kfree(base);
  3703	 report_failure:
  3704		d40_err(&pdev->dev, "probe failed\n");
  3705		return ret;
  3706	}
  3707	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Linus Walleij <linus.walleij@linaro.org>,
	Vinod Koul <vkoul@kernel.org>, Rob Herring <robh+dt@kernel.org>,
	Krzysztof Kozlowski <krzk@kernel.org>
Cc: oe-kbuild-all@lists.linux.dev, dmaengine@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	Linus Walleij <linus.walleij@linaro.org>
Subject: Re: [PATCH 2/7] dmaengine: ste_dma40: Get LCPA SRAM from SRAM node
Date: Tue, 18 Apr 2023 03:54:51 +0800	[thread overview]
Message-ID: <202304180357.gfLjNPk9-lkp@intel.com> (raw)
In-Reply-To: <20230417-ux500-dma40-cleanup-v1-2-b26324956e47@linaro.org>

Hi Linus,

kernel test robot noticed the following build warnings:

[auto build test WARNING on fe15c26ee26efa11741a7b632e9f23b01aca4cc6]

url:    https://github.com/intel-lab-lkp/linux/commits/Linus-Walleij/dt-bindings-dma-dma40-Prefer-to-pass-sram-through-phandle/20230417-160001
base:   fe15c26ee26efa11741a7b632e9f23b01aca4cc6
patch link:    https://lore.kernel.org/r/20230417-ux500-dma40-cleanup-v1-2-b26324956e47%40linaro.org
patch subject: [PATCH 2/7] dmaengine: ste_dma40: Get LCPA SRAM from SRAM node
config: arm-buildonly-randconfig-r005-20230417 (https://download.01.org/0day-ci/archive/20230418/202304180357.gfLjNPk9-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
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
        # https://github.com/intel-lab-lkp/linux/commit/168b5818186247983ec0f99554e13c3aaa9383bb
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Linus-Walleij/dt-bindings-dma-dma40-Prefer-to-pass-sram-through-phandle/20230417-160001
        git checkout 168b5818186247983ec0f99554e13c3aaa9383bb
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/dma/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202304180357.gfLjNPk9-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from include/linux/device.h:15,
                    from include/linux/dma-mapping.h:7,
                    from drivers/dma/ste_dma40.c:9:
   drivers/dma/ste_dma40.c: In function 'd40_probe':
>> drivers/dma/ste_dma40.c:3555:30: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'dma_addr_t' {aka 'long long unsigned int'} [-Wformat=]
    3555 |         dev_info(&pdev->dev, "found LCPA SRAM at 0x%08x, size 0x%08x\n",
         |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:110:30: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                              ^~~
   include/linux/dev_printk.h:150:58: note: in expansion of macro 'dev_fmt'
     150 |         dev_printk_index_wrap(_dev_info, KERN_INFO, dev, dev_fmt(fmt), ##__VA_ARGS__)
         |                                                          ^~~~~~~
   drivers/dma/ste_dma40.c:3555:9: note: in expansion of macro 'dev_info'
    3555 |         dev_info(&pdev->dev, "found LCPA SRAM at 0x%08x, size 0x%08x\n",
         |         ^~~~~~~~
   drivers/dma/ste_dma40.c:3555:55: note: format string is defined here
    3555 |         dev_info(&pdev->dev, "found LCPA SRAM at 0x%08x, size 0x%08x\n",
         |                                                    ~~~^
         |                                                       |
         |                                                       unsigned int
         |                                                    %08llx
   drivers/dma/ste_dma40.c:3562:26: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'dma_addr_t' {aka 'long long unsigned int'} [-Wformat=]
    3562 |                          "[%s] Mismatch LCPA dma 0x%x, def %08x\n",
         |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:110:30: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                              ^~~
   include/linux/dev_printk.h:146:61: note: in expansion of macro 'dev_fmt'
     146 |         dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
         |                                                             ^~~~~~~
   drivers/dma/ste_dma40.c:3561:17: note: in expansion of macro 'dev_warn'
    3561 |                 dev_warn(&pdev->dev,
         |                 ^~~~~~~~
   drivers/dma/ste_dma40.c:3562:63: note: format string is defined here
    3562 |                          "[%s] Mismatch LCPA dma 0x%x, def %08x\n",
         |                                                            ~~~^
         |                                                               |
         |                                                               unsigned int
         |                                                            %08llx


vim +3555 drivers/dma/ste_dma40.c

  3505	
  3506	static int __init d40_probe(struct platform_device *pdev)
  3507	{
  3508		struct stedma40_platform_data *plat_data = dev_get_platdata(&pdev->dev);
  3509		struct device_node *np = pdev->dev.of_node;
  3510		struct device_node *np_lcpa;
  3511		int ret = -ENOENT;
  3512		struct d40_base *base;
  3513		struct resource *res;
  3514		struct resource res_lcpa;
  3515		int num_reserved_chans;
  3516		u32 val;
  3517	
  3518		if (!plat_data) {
  3519			if (np) {
  3520				if (d40_of_probe(pdev, np)) {
  3521					ret = -ENOMEM;
  3522					goto report_failure;
  3523				}
  3524			} else {
  3525				d40_err(&pdev->dev, "No pdata or Device Tree provided\n");
  3526				goto report_failure;
  3527			}
  3528		}
  3529	
  3530		base = d40_hw_detect_init(pdev);
  3531		if (!base)
  3532			goto report_failure;
  3533	
  3534		num_reserved_chans = d40_phy_res_init(base);
  3535	
  3536		platform_set_drvdata(pdev, base);
  3537	
  3538		spin_lock_init(&base->interrupt_lock);
  3539		spin_lock_init(&base->execmd_lock);
  3540	
  3541		/* Get IO for logical channel parameter address (LCPA) */
  3542		np_lcpa = of_parse_phandle(np, "sram", 0);
  3543		if (!np_lcpa) {
  3544			dev_err(&pdev->dev, "no LCPA SRAM node\n");
  3545			goto report_failure;
  3546		}
  3547		/* This is no device so read the address directly from the node */
  3548		ret = of_address_to_resource(np_lcpa, 0, &res_lcpa);
  3549		if (ret) {
  3550			dev_err(&pdev->dev, "no LCPA SRAM resource\n");
  3551			goto report_failure;
  3552		}
  3553		base->lcpa_size = resource_size(&res_lcpa);
  3554		base->phy_lcpa = res_lcpa.start;
> 3555		dev_info(&pdev->dev, "found LCPA SRAM at 0x%08x, size 0x%08x\n",
  3556			 base->phy_lcpa, base->lcpa_size);
  3557	
  3558		/* We make use of ESRAM memory for this. */
  3559		val = readl(base->virtbase + D40_DREG_LCPA);
  3560		if (base->phy_lcpa != val && val != 0) {
  3561			dev_warn(&pdev->dev,
  3562				 "[%s] Mismatch LCPA dma 0x%x, def %08x\n",
  3563				 __func__, val, base->phy_lcpa);
  3564		} else
  3565			writel(base->phy_lcpa, base->virtbase + D40_DREG_LCPA);
  3566	
  3567		base->lcpa_base = ioremap(base->phy_lcpa, base->lcpa_size);
  3568		if (!base->lcpa_base) {
  3569			ret = -ENOMEM;
  3570			d40_err(&pdev->dev, "Failed to ioremap LCPA region\n");
  3571			goto release_base;
  3572		}
  3573		/* If lcla has to be located in ESRAM we don't need to allocate */
  3574		if (base->plat_data->use_esram_lcla) {
  3575			res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
  3576								"lcla_esram");
  3577			if (!res) {
  3578				ret = -ENOENT;
  3579				d40_err(&pdev->dev,
  3580					"No \"lcla_esram\" memory resource\n");
  3581				goto destroy_cache;
  3582			}
  3583			base->lcla_pool.base = ioremap(res->start,
  3584							resource_size(res));
  3585			if (!base->lcla_pool.base) {
  3586				ret = -ENOMEM;
  3587				d40_err(&pdev->dev, "Failed to ioremap LCLA region\n");
  3588				goto destroy_cache;
  3589			}
  3590			writel(res->start, base->virtbase + D40_DREG_LCLA);
  3591	
  3592		} else {
  3593			ret = d40_lcla_allocate(base);
  3594			if (ret) {
  3595				d40_err(&pdev->dev, "Failed to allocate LCLA area\n");
  3596				goto destroy_cache;
  3597			}
  3598		}
  3599	
  3600		spin_lock_init(&base->lcla_pool.lock);
  3601	
  3602		base->irq = platform_get_irq(pdev, 0);
  3603	
  3604		ret = request_irq(base->irq, d40_handle_interrupt, 0, D40_NAME, base);
  3605		if (ret) {
  3606			d40_err(&pdev->dev, "No IRQ defined\n");
  3607			goto destroy_cache;
  3608		}
  3609	
  3610		if (base->plat_data->use_esram_lcla) {
  3611	
  3612			base->lcpa_regulator = regulator_get(base->dev, "lcla_esram");
  3613			if (IS_ERR(base->lcpa_regulator)) {
  3614				d40_err(&pdev->dev, "Failed to get lcpa_regulator\n");
  3615				ret = PTR_ERR(base->lcpa_regulator);
  3616				base->lcpa_regulator = NULL;
  3617				goto destroy_cache;
  3618			}
  3619	
  3620			ret = regulator_enable(base->lcpa_regulator);
  3621			if (ret) {
  3622				d40_err(&pdev->dev,
  3623					"Failed to enable lcpa_regulator\n");
  3624				regulator_put(base->lcpa_regulator);
  3625				base->lcpa_regulator = NULL;
  3626				goto destroy_cache;
  3627			}
  3628		}
  3629	
  3630		writel_relaxed(D40_DREG_GCC_ENABLE_ALL, base->virtbase + D40_DREG_GCC);
  3631	
  3632		pm_runtime_irq_safe(base->dev);
  3633		pm_runtime_set_autosuspend_delay(base->dev, DMA40_AUTOSUSPEND_DELAY);
  3634		pm_runtime_use_autosuspend(base->dev);
  3635		pm_runtime_mark_last_busy(base->dev);
  3636		pm_runtime_set_active(base->dev);
  3637		pm_runtime_enable(base->dev);
  3638	
  3639		ret = d40_dmaengine_init(base, num_reserved_chans);
  3640		if (ret)
  3641			goto destroy_cache;
  3642	
  3643		ret = dma_set_max_seg_size(base->dev, STEDMA40_MAX_SEG_SIZE);
  3644		if (ret) {
  3645			d40_err(&pdev->dev, "Failed to set dma max seg size\n");
  3646			goto destroy_cache;
  3647		}
  3648	
  3649		d40_hw_init(base);
  3650	
  3651		if (np) {
  3652			ret = of_dma_controller_register(np, d40_xlate, NULL);
  3653			if (ret)
  3654				dev_err(&pdev->dev,
  3655					"could not register of_dma_controller\n");
  3656		}
  3657	
  3658		dev_info(base->dev, "initialized\n");
  3659		return 0;
  3660	 destroy_cache:
  3661		kmem_cache_destroy(base->desc_slab);
  3662		if (base->virtbase)
  3663			iounmap(base->virtbase);
  3664	
  3665		if (base->lcla_pool.base && base->plat_data->use_esram_lcla) {
  3666			iounmap(base->lcla_pool.base);
  3667			base->lcla_pool.base = NULL;
  3668		}
  3669	
  3670		if (base->lcla_pool.dma_addr)
  3671			dma_unmap_single(base->dev, base->lcla_pool.dma_addr,
  3672					 SZ_1K * base->num_phy_chans,
  3673					 DMA_TO_DEVICE);
  3674	
  3675		if (!base->lcla_pool.base_unaligned && base->lcla_pool.base)
  3676			free_pages((unsigned long)base->lcla_pool.base,
  3677				   base->lcla_pool.pages);
  3678	
  3679		kfree(base->lcla_pool.base_unaligned);
  3680	
  3681		if (base->lcpa_base)
  3682			iounmap(base->lcpa_base);
  3683	
  3684	release_base:
  3685		if (base->phy_start)
  3686			release_mem_region(base->phy_start,
  3687					   base->phy_size);
  3688		if (base->clk) {
  3689			clk_disable_unprepare(base->clk);
  3690			clk_put(base->clk);
  3691		}
  3692	
  3693		if (base->lcpa_regulator) {
  3694			regulator_disable(base->lcpa_regulator);
  3695			regulator_put(base->lcpa_regulator);
  3696		}
  3697	
  3698		kfree(base->lcla_pool.alloc_map);
  3699		kfree(base->lookup_log_chans);
  3700		kfree(base->lookup_phy_chans);
  3701		kfree(base->phy_res);
  3702		kfree(base);
  3703	 report_failure:
  3704		d40_err(&pdev->dev, "probe failed\n");
  3705		return ret;
  3706	}
  3707	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

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

  reply	other threads:[~2023-04-17 19:55 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-17  7:55 [PATCH 0/7] DMA40 SRAM refactoring and cleanup Linus Walleij
2023-04-17  7:55 ` Linus Walleij
2023-04-17  7:55 ` [PATCH 1/7] dt-bindings: dma: dma40: Prefer to pass sram through phandle Linus Walleij
2023-04-17  7:55   ` Linus Walleij
2023-04-18 16:22   ` Krzysztof Kozlowski
2023-04-18 16:22     ` Krzysztof Kozlowski
2023-04-18 22:41   ` Rob Herring
2023-04-18 22:41     ` Rob Herring
2023-04-17  7:55 ` [PATCH 2/7] dmaengine: ste_dma40: Get LCPA SRAM from SRAM node Linus Walleij
2023-04-17  7:55   ` Linus Walleij
2023-04-17 19:54   ` kernel test robot [this message]
2023-04-17 19:54     ` kernel test robot
2023-04-18  7:52   ` kernel test robot
2023-04-18  7:52     ` kernel test robot
2023-04-17  7:55 ` [PATCH 3/7] dmaengine: ste_dma40: Add dev helper variable Linus Walleij
2023-04-17  7:55   ` Linus Walleij
2023-04-17  7:55 ` [PATCH 4/7] dmaengine: ste_dma40: Remove platform data Linus Walleij
2023-04-17  7:55   ` Linus Walleij
2023-04-17  7:55 ` [PATCH 5/7] dmaengine: ste_dma40: Pass dev to OF function Linus Walleij
2023-04-17  7:55   ` Linus Walleij
2023-04-17  7:55 ` [PATCH 6/7] dmaengine: ste_dma40: Use managed resources Linus Walleij
2023-04-17  7:55   ` Linus Walleij
2023-04-17  7:55 ` [PATCH 7/7] dmaengine: ste_dma40: Return error codes properly Linus Walleij
2023-04-17  7:55   ` Linus Walleij

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=202304180357.gfLjNPk9-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dmaengine@vger.kernel.org \
    --cc=krzk@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=robh+dt@kernel.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.