All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Michal Simek <monstr@monstr.eu>
Cc: kbuild-all@lists.01.org, linux-arm-kernel@lists.infradead.org
Subject: [xilinx-xlnx:xlnx_rebase_v5.4 1277/1768] drivers/gpio/gpio-xilinx.c:694:39: sparse: sparse: incorrect type in argument 1 (different base types)
Date: Sat, 18 Dec 2021 01:20:36 +0800	[thread overview]
Message-ID: <202112180150.eRkJwheM-lkp@intel.com> (raw)

tree:   https://github.com/Xilinx/linux-xlnx xlnx_rebase_v5.4
head:   abafefebd1f1e040eef74e4ab571ea08bf745641
commit: af0c19b6f15388c554317280433100fd9f3d7d0a [1277/1768] gpio: xilinx: Use xilinx tested gpio driver
config: i386-randconfig-s002-20211216 (https://download.01.org/0day-ci/archive/20211218/202112180150.eRkJwheM-lkp@intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://github.com/Xilinx/linux-xlnx/commit/af0c19b6f15388c554317280433100fd9f3d7d0a
        git remote add xilinx-xlnx https://github.com/Xilinx/linux-xlnx
        git fetch --no-tags xilinx-xlnx xlnx_rebase_v5.4
        git checkout af0c19b6f15388c554317280433100fd9f3d7d0a
        # save the config file to linux build tree
        mkdir build_dir
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 SHELL=/bin/bash drivers/gpio/

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


sparse warnings: (new ones prefixed by >>)
>> drivers/gpio/gpio-xilinx.c:694:39: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected restricted __be32 const [usertype] *p @@     got unsigned int const [usertype] *[assigned] tree_info @@
   drivers/gpio/gpio-xilinx.c:694:39: sparse:     expected restricted __be32 const [usertype] *p
   drivers/gpio/gpio-xilinx.c:694:39: sparse:     got unsigned int const [usertype] *[assigned] tree_info

vim +694 drivers/gpio/gpio-xilinx.c

   586	
   587	/**
   588	 * xgpio_of_probe - Probe method for the GPIO device.
   589	 * @pdev:       platform device instance
   590	 *
   591	 * This function probes the GPIO device in the device tree. It initializes the
   592	 * driver data structure.
   593	 *
   594	 * Return:
   595	 * It returns 0, if the driver is bound to the GPIO device, or
   596	 * a negative value if there is an error.
   597	 */
   598	static int xgpio_of_probe(struct platform_device *pdev)
   599	{
   600		struct device_node *np = pdev->dev.of_node;
   601		struct xgpio_instance *chip, *chip_dual;
   602		int status = 0;
   603		const u32 *tree_info;
   604		u32 ngpio;
   605		u32 cells = 2;
   606	
   607		chip = devm_kzalloc(&pdev->dev, sizeof(*chip), GFP_KERNEL);
   608		if (!chip)
   609			return -ENOMEM;
   610	
   611		/* Update GPIO state shadow register with default value */
   612		of_property_read_u32(np, "xlnx,dout-default", &chip->gpio_state);
   613	
   614		/* By default, all pins are inputs */
   615		chip->gpio_dir = 0xFFFFFFFF;
   616	
   617		/* Update GPIO direction shadow register with default value */
   618		of_property_read_u32(np, "xlnx,tri-default", &chip->gpio_dir);
   619	
   620		chip->no_init = of_property_read_bool(np, "xlnx,no-init");
   621	
   622		/* Update cells with gpio-cells value */
   623		of_property_read_u32(np, "#gpio-cells", &cells);
   624	
   625		/*
   626		 * Check device node and parent device node for device width
   627		 * and assume default width of 32
   628		 */
   629		if (of_property_read_u32(np, "xlnx,gpio-width", &ngpio))
   630			ngpio = 32;
   631		chip->mmchip.gc.ngpio = (u16)ngpio;
   632	
   633		spin_lock_init(&chip->gpio_lock);
   634	
   635		chip->mmchip.gc.parent = &pdev->dev;
   636		chip->mmchip.gc.owner = THIS_MODULE;
   637		chip->mmchip.gc.of_xlate = xgpio_xlate;
   638		chip->mmchip.gc.of_gpio_n_cells = cells;
   639		chip->mmchip.gc.direction_input = xgpio_dir_in;
   640		chip->mmchip.gc.direction_output = xgpio_dir_out;
   641		chip->mmchip.gc.get = xgpio_get;
   642		chip->mmchip.gc.set = xgpio_set;
   643		chip->mmchip.gc.request = xgpio_request;
   644		chip->mmchip.gc.free = xgpio_free;
   645		chip->mmchip.gc.set_multiple = xgpio_set_multiple;
   646	
   647		chip->mmchip.save_regs = xgpio_save_regs;
   648	
   649		platform_set_drvdata(pdev, chip);
   650	
   651		chip->clk = devm_clk_get(&pdev->dev, "s_axi_aclk");
   652		if (IS_ERR(chip->clk)) {
   653			if (PTR_ERR(chip->clk) != -ENOENT) {
   654				if (PTR_ERR(chip->clk) != -EPROBE_DEFER)
   655					dev_err(&pdev->dev, "Input clock not found\n");
   656				return PTR_ERR(chip->clk);
   657			}
   658	
   659			/*
   660			 * Clock framework support is optional, continue on
   661			 * anyways if we don't find a matching clock.
   662			 */
   663			chip->clk = NULL;
   664		}
   665	
   666		status = clk_prepare_enable(chip->clk);
   667		if (status < 0) {
   668			dev_err(&pdev->dev, "Failed to prepare clk\n");
   669			return status;
   670		}
   671	
   672		pm_runtime_set_active(&pdev->dev);
   673		pm_runtime_enable(&pdev->dev);
   674	
   675		/* Call the OF gpio helper to setup and register the GPIO device */
   676		status = of_mm_gpiochip_add(np, &chip->mmchip);
   677		if (status) {
   678			pr_err("%pOF: error in probe function with status %d\n",
   679			       np, status);
   680			goto err_unprepare_clk;
   681		}
   682	
   683		status = xgpio_irq_setup(np, chip);
   684		if (status) {
   685			pr_err("%s: GPIO IRQ initialization failed %d\n",
   686			       np->full_name, status);
   687			goto err_pm_put;
   688		}
   689	
   690		pr_info("XGpio: %s: registered, base is %d\n", np->full_name,
   691								chip->mmchip.gc.base);
   692	
   693		tree_info = of_get_property(np, "xlnx,is-dual", NULL);
 > 694		if (tree_info && be32_to_cpup(tree_info)) {
   695			chip_dual = devm_kzalloc(&pdev->dev, sizeof(*chip_dual),
   696						 GFP_KERNEL);
   697			if (!chip_dual)
   698				goto err_pm_put;
   699	
   700			/* Add dual channel offset */
   701			chip_dual->offset = XGPIO_CHANNEL_OFFSET;
   702	
   703			/* Update GPIO state shadow register with default value */
   704			of_property_read_u32(np, "xlnx,dout-default-2",
   705					     &chip_dual->gpio_state);
   706	
   707			/* By default, all pins are inputs */
   708			chip_dual->gpio_dir = 0xFFFFFFFF;
   709	
   710			/* Update GPIO direction shadow register with default value */
   711			of_property_read_u32(np, "xlnx,tri-default-2",
   712					     &chip_dual->gpio_dir);
   713	
   714			/*
   715			 * Check device node and parent device node for device width
   716			 * and assume default width of 32
   717			 */
   718			if (of_property_read_u32(np, "xlnx,gpio2-width", &ngpio))
   719				ngpio = 32;
   720			chip_dual->mmchip.gc.ngpio = (u16)ngpio;
   721	
   722			spin_lock_init(&chip_dual->gpio_lock);
   723	
   724			chip_dual->mmchip.gc.parent = &pdev->dev;
   725			chip_dual->mmchip.gc.owner = THIS_MODULE;
   726			chip_dual->mmchip.gc.of_xlate = xgpio_xlate;
   727			chip_dual->mmchip.gc.of_gpio_n_cells = cells;
   728			chip_dual->mmchip.gc.direction_input = xgpio_dir_in;
   729			chip_dual->mmchip.gc.direction_output = xgpio_dir_out;
   730			chip_dual->mmchip.gc.get = xgpio_get;
   731			chip_dual->mmchip.gc.set = xgpio_set;
   732			chip_dual->mmchip.gc.request = xgpio_request;
   733			chip_dual->mmchip.gc.free = xgpio_free;
   734			chip_dual->mmchip.gc.set_multiple = xgpio_set_multiple;
   735	
   736			chip_dual->mmchip.save_regs = xgpio_save_regs;
   737	
   738			chip->mmchip_dual = &chip_dual->mmchip;
   739	
   740			status = xgpio_irq_setup(np, chip_dual);
   741			if (status) {
   742				pr_err("%s: GPIO IRQ initialization failed %d\n",
   743				      np->full_name, status);
   744				goto err_pm_put;
   745			}
   746	
   747			/* Call the OF gpio helper to setup and register the GPIO dev */
   748			status = of_mm_gpiochip_add(np, &chip_dual->mmchip);
   749			if (status) {
   750				pr_err("%s: error in probe function with status %d\n",
   751				       np->full_name, status);
   752				goto err_pm_put;
   753			}
   754			pr_info("XGpio: %s: dual channel registered, base is %d\n",
   755				np->full_name, chip_dual->mmchip.gc.base);
   756		}
   757	
   758		pm_runtime_put(&pdev->dev);
   759		return 0;
   760	
   761	err_pm_put:
   762		pm_runtime_put(&pdev->dev);
   763	err_unprepare_clk:
   764		pm_runtime_disable(&pdev->dev);
   765		clk_disable_unprepare(chip->clk);
   766		return status;
   767	}
   768	

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

_______________________________________________
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: [xilinx-xlnx:xlnx_rebase_v5.4 1277/1768] drivers/gpio/gpio-xilinx.c:694:39: sparse: sparse: incorrect type in argument 1 (different base types)
Date: Sat, 18 Dec 2021 01:20:36 +0800	[thread overview]
Message-ID: <202112180150.eRkJwheM-lkp@intel.com> (raw)

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

tree:   https://github.com/Xilinx/linux-xlnx xlnx_rebase_v5.4
head:   abafefebd1f1e040eef74e4ab571ea08bf745641
commit: af0c19b6f15388c554317280433100fd9f3d7d0a [1277/1768] gpio: xilinx: Use xilinx tested gpio driver
config: i386-randconfig-s002-20211216 (https://download.01.org/0day-ci/archive/20211218/202112180150.eRkJwheM-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://github.com/Xilinx/linux-xlnx/commit/af0c19b6f15388c554317280433100fd9f3d7d0a
        git remote add xilinx-xlnx https://github.com/Xilinx/linux-xlnx
        git fetch --no-tags xilinx-xlnx xlnx_rebase_v5.4
        git checkout af0c19b6f15388c554317280433100fd9f3d7d0a
        # save the config file to linux build tree
        mkdir build_dir
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 SHELL=/bin/bash drivers/gpio/

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


sparse warnings: (new ones prefixed by >>)
>> drivers/gpio/gpio-xilinx.c:694:39: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected restricted __be32 const [usertype] *p @@     got unsigned int const [usertype] *[assigned] tree_info @@
   drivers/gpio/gpio-xilinx.c:694:39: sparse:     expected restricted __be32 const [usertype] *p
   drivers/gpio/gpio-xilinx.c:694:39: sparse:     got unsigned int const [usertype] *[assigned] tree_info

vim +694 drivers/gpio/gpio-xilinx.c

   586	
   587	/**
   588	 * xgpio_of_probe - Probe method for the GPIO device.
   589	 * @pdev:       platform device instance
   590	 *
   591	 * This function probes the GPIO device in the device tree. It initializes the
   592	 * driver data structure.
   593	 *
   594	 * Return:
   595	 * It returns 0, if the driver is bound to the GPIO device, or
   596	 * a negative value if there is an error.
   597	 */
   598	static int xgpio_of_probe(struct platform_device *pdev)
   599	{
   600		struct device_node *np = pdev->dev.of_node;
   601		struct xgpio_instance *chip, *chip_dual;
   602		int status = 0;
   603		const u32 *tree_info;
   604		u32 ngpio;
   605		u32 cells = 2;
   606	
   607		chip = devm_kzalloc(&pdev->dev, sizeof(*chip), GFP_KERNEL);
   608		if (!chip)
   609			return -ENOMEM;
   610	
   611		/* Update GPIO state shadow register with default value */
   612		of_property_read_u32(np, "xlnx,dout-default", &chip->gpio_state);
   613	
   614		/* By default, all pins are inputs */
   615		chip->gpio_dir = 0xFFFFFFFF;
   616	
   617		/* Update GPIO direction shadow register with default value */
   618		of_property_read_u32(np, "xlnx,tri-default", &chip->gpio_dir);
   619	
   620		chip->no_init = of_property_read_bool(np, "xlnx,no-init");
   621	
   622		/* Update cells with gpio-cells value */
   623		of_property_read_u32(np, "#gpio-cells", &cells);
   624	
   625		/*
   626		 * Check device node and parent device node for device width
   627		 * and assume default width of 32
   628		 */
   629		if (of_property_read_u32(np, "xlnx,gpio-width", &ngpio))
   630			ngpio = 32;
   631		chip->mmchip.gc.ngpio = (u16)ngpio;
   632	
   633		spin_lock_init(&chip->gpio_lock);
   634	
   635		chip->mmchip.gc.parent = &pdev->dev;
   636		chip->mmchip.gc.owner = THIS_MODULE;
   637		chip->mmchip.gc.of_xlate = xgpio_xlate;
   638		chip->mmchip.gc.of_gpio_n_cells = cells;
   639		chip->mmchip.gc.direction_input = xgpio_dir_in;
   640		chip->mmchip.gc.direction_output = xgpio_dir_out;
   641		chip->mmchip.gc.get = xgpio_get;
   642		chip->mmchip.gc.set = xgpio_set;
   643		chip->mmchip.gc.request = xgpio_request;
   644		chip->mmchip.gc.free = xgpio_free;
   645		chip->mmchip.gc.set_multiple = xgpio_set_multiple;
   646	
   647		chip->mmchip.save_regs = xgpio_save_regs;
   648	
   649		platform_set_drvdata(pdev, chip);
   650	
   651		chip->clk = devm_clk_get(&pdev->dev, "s_axi_aclk");
   652		if (IS_ERR(chip->clk)) {
   653			if (PTR_ERR(chip->clk) != -ENOENT) {
   654				if (PTR_ERR(chip->clk) != -EPROBE_DEFER)
   655					dev_err(&pdev->dev, "Input clock not found\n");
   656				return PTR_ERR(chip->clk);
   657			}
   658	
   659			/*
   660			 * Clock framework support is optional, continue on
   661			 * anyways if we don't find a matching clock.
   662			 */
   663			chip->clk = NULL;
   664		}
   665	
   666		status = clk_prepare_enable(chip->clk);
   667		if (status < 0) {
   668			dev_err(&pdev->dev, "Failed to prepare clk\n");
   669			return status;
   670		}
   671	
   672		pm_runtime_set_active(&pdev->dev);
   673		pm_runtime_enable(&pdev->dev);
   674	
   675		/* Call the OF gpio helper to setup and register the GPIO device */
   676		status = of_mm_gpiochip_add(np, &chip->mmchip);
   677		if (status) {
   678			pr_err("%pOF: error in probe function with status %d\n",
   679			       np, status);
   680			goto err_unprepare_clk;
   681		}
   682	
   683		status = xgpio_irq_setup(np, chip);
   684		if (status) {
   685			pr_err("%s: GPIO IRQ initialization failed %d\n",
   686			       np->full_name, status);
   687			goto err_pm_put;
   688		}
   689	
   690		pr_info("XGpio: %s: registered, base is %d\n", np->full_name,
   691								chip->mmchip.gc.base);
   692	
   693		tree_info = of_get_property(np, "xlnx,is-dual", NULL);
 > 694		if (tree_info && be32_to_cpup(tree_info)) {
   695			chip_dual = devm_kzalloc(&pdev->dev, sizeof(*chip_dual),
   696						 GFP_KERNEL);
   697			if (!chip_dual)
   698				goto err_pm_put;
   699	
   700			/* Add dual channel offset */
   701			chip_dual->offset = XGPIO_CHANNEL_OFFSET;
   702	
   703			/* Update GPIO state shadow register with default value */
   704			of_property_read_u32(np, "xlnx,dout-default-2",
   705					     &chip_dual->gpio_state);
   706	
   707			/* By default, all pins are inputs */
   708			chip_dual->gpio_dir = 0xFFFFFFFF;
   709	
   710			/* Update GPIO direction shadow register with default value */
   711			of_property_read_u32(np, "xlnx,tri-default-2",
   712					     &chip_dual->gpio_dir);
   713	
   714			/*
   715			 * Check device node and parent device node for device width
   716			 * and assume default width of 32
   717			 */
   718			if (of_property_read_u32(np, "xlnx,gpio2-width", &ngpio))
   719				ngpio = 32;
   720			chip_dual->mmchip.gc.ngpio = (u16)ngpio;
   721	
   722			spin_lock_init(&chip_dual->gpio_lock);
   723	
   724			chip_dual->mmchip.gc.parent = &pdev->dev;
   725			chip_dual->mmchip.gc.owner = THIS_MODULE;
   726			chip_dual->mmchip.gc.of_xlate = xgpio_xlate;
   727			chip_dual->mmchip.gc.of_gpio_n_cells = cells;
   728			chip_dual->mmchip.gc.direction_input = xgpio_dir_in;
   729			chip_dual->mmchip.gc.direction_output = xgpio_dir_out;
   730			chip_dual->mmchip.gc.get = xgpio_get;
   731			chip_dual->mmchip.gc.set = xgpio_set;
   732			chip_dual->mmchip.gc.request = xgpio_request;
   733			chip_dual->mmchip.gc.free = xgpio_free;
   734			chip_dual->mmchip.gc.set_multiple = xgpio_set_multiple;
   735	
   736			chip_dual->mmchip.save_regs = xgpio_save_regs;
   737	
   738			chip->mmchip_dual = &chip_dual->mmchip;
   739	
   740			status = xgpio_irq_setup(np, chip_dual);
   741			if (status) {
   742				pr_err("%s: GPIO IRQ initialization failed %d\n",
   743				      np->full_name, status);
   744				goto err_pm_put;
   745			}
   746	
   747			/* Call the OF gpio helper to setup and register the GPIO dev */
   748			status = of_mm_gpiochip_add(np, &chip_dual->mmchip);
   749			if (status) {
   750				pr_err("%s: error in probe function with status %d\n",
   751				       np->full_name, status);
   752				goto err_pm_put;
   753			}
   754			pr_info("XGpio: %s: dual channel registered, base is %d\n",
   755				np->full_name, chip_dual->mmchip.gc.base);
   756		}
   757	
   758		pm_runtime_put(&pdev->dev);
   759		return 0;
   760	
   761	err_pm_put:
   762		pm_runtime_put(&pdev->dev);
   763	err_unprepare_clk:
   764		pm_runtime_disable(&pdev->dev);
   765		clk_disable_unprepare(chip->clk);
   766		return status;
   767	}
   768	

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

             reply	other threads:[~2021-12-17 18:18 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-17 17:20 kernel test robot [this message]
2021-12-17 17:20 ` [xilinx-xlnx:xlnx_rebase_v5.4 1277/1768] drivers/gpio/gpio-xilinx.c:694:39: sparse: sparse: incorrect type in argument 1 (different base types) kernel test robot

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=202112180150.eRkJwheM-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=monstr@monstr.eu \
    /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.