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
next 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.