Re: [net-next PATCH 5/6] net: pcs: airoha: add PCS driver for Airoha SoC
From: kernel test robot
Date: Wed Mar 19 2025 - 21:55:33 EST
Hi Christian,
kernel test robot noticed the following build warnings:
[auto build test WARNING on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Christian-Marangi/net-phylink-reset-PCS-Phylink-double-reference-on-phylink_stop/20250319-080303
base: net-next/main
patch link: https://lore.kernel.org/r/20250318235850.6411-6-ansuelsmth%40gmail.com
patch subject: [net-next PATCH 5/6] net: pcs: airoha: add PCS driver for Airoha SoC
config: arm64-randconfig-r132-20250320 (https://download.01.org/0day-ci/archive/20250320/202503200928.j6AEMrdf-lkp@xxxxxxxxx/config)
compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project 87916f8c32ebd8e284091db9b70339df57fd1e90)
reproduce: (https://download.01.org/0day-ci/archive/20250320/202503200928.j6AEMrdf-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202503200928.j6AEMrdf-lkp@xxxxxxxxx/
sparse warnings: (new ones prefixed by >>)
>> drivers/net/pcs/pcs-airoha.c:2723:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *base @@ got void [noderef] __iomem * @@
drivers/net/pcs/pcs-airoha.c:2723:14: sparse: expected void *base
drivers/net/pcs/pcs-airoha.c:2723:14: sparse: got void [noderef] __iomem *
>> drivers/net/pcs/pcs-airoha.c:2728:25: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected void [noderef] __iomem *regs @@ got void *base @@
drivers/net/pcs/pcs-airoha.c:2728:25: sparse: expected void [noderef] __iomem *regs
drivers/net/pcs/pcs-airoha.c:2728:25: sparse: got void *base
drivers/net/pcs/pcs-airoha.c:2732:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *base @@ got void [noderef] __iomem * @@
drivers/net/pcs/pcs-airoha.c:2732:14: sparse: expected void *base
drivers/net/pcs/pcs-airoha.c:2732:14: sparse: got void [noderef] __iomem *
drivers/net/pcs/pcs-airoha.c:2737:27: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected void [noderef] __iomem *regs @@ got void *base @@
drivers/net/pcs/pcs-airoha.c:2737:27: sparse: expected void [noderef] __iomem *regs
drivers/net/pcs/pcs-airoha.c:2737:27: sparse: got void *base
drivers/net/pcs/pcs-airoha.c:2741:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *base @@ got void [noderef] __iomem * @@
drivers/net/pcs/pcs-airoha.c:2741:14: sparse: expected void *base
drivers/net/pcs/pcs-airoha.c:2741:14: sparse: got void [noderef] __iomem *
drivers/net/pcs/pcs-airoha.c:2746:28: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected void [noderef] __iomem *regs @@ got void *base @@
drivers/net/pcs/pcs-airoha.c:2746:28: sparse: expected void [noderef] __iomem *regs
drivers/net/pcs/pcs-airoha.c:2746:28: sparse: got void *base
drivers/net/pcs/pcs-airoha.c:2750:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *base @@ got void [noderef] __iomem * @@
drivers/net/pcs/pcs-airoha.c:2750:14: sparse: expected void *base
drivers/net/pcs/pcs-airoha.c:2750:14: sparse: got void [noderef] __iomem *
drivers/net/pcs/pcs-airoha.c:2755:33: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected void [noderef] __iomem *regs @@ got void *base @@
drivers/net/pcs/pcs-airoha.c:2755:33: sparse: expected void [noderef] __iomem *regs
drivers/net/pcs/pcs-airoha.c:2755:33: sparse: got void *base
drivers/net/pcs/pcs-airoha.c:2759:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *base @@ got void [noderef] __iomem * @@
drivers/net/pcs/pcs-airoha.c:2759:14: sparse: expected void *base
drivers/net/pcs/pcs-airoha.c:2759:14: sparse: got void [noderef] __iomem *
drivers/net/pcs/pcs-airoha.c:2764:29: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected void [noderef] __iomem *regs @@ got void *base @@
drivers/net/pcs/pcs-airoha.c:2764:29: sparse: expected void [noderef] __iomem *regs
drivers/net/pcs/pcs-airoha.c:2764:29: sparse: got void *base
drivers/net/pcs/pcs-airoha.c:2768:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *base @@ got void [noderef] __iomem * @@
drivers/net/pcs/pcs-airoha.c:2768:14: sparse: expected void *base
drivers/net/pcs/pcs-airoha.c:2768:14: sparse: got void [noderef] __iomem *
drivers/net/pcs/pcs-airoha.c:2773:29: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected void [noderef] __iomem *regs @@ got void *base @@
drivers/net/pcs/pcs-airoha.c:2773:29: sparse: expected void [noderef] __iomem *regs
drivers/net/pcs/pcs-airoha.c:2773:29: sparse: got void *base
drivers/net/pcs/pcs-airoha.c:2777:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *base @@ got void [noderef] __iomem * @@
drivers/net/pcs/pcs-airoha.c:2777:14: sparse: expected void *base
drivers/net/pcs/pcs-airoha.c:2777:14: sparse: got void [noderef] __iomem *
drivers/net/pcs/pcs-airoha.c:2782:25: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected void [noderef] __iomem *regs @@ got void *base @@
drivers/net/pcs/pcs-airoha.c:2782:25: sparse: expected void [noderef] __iomem *regs
drivers/net/pcs/pcs-airoha.c:2782:25: sparse: got void *base
drivers/net/pcs/pcs-airoha.c:2786:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *base @@ got void [noderef] __iomem * @@
drivers/net/pcs/pcs-airoha.c:2786:14: sparse: expected void *base
drivers/net/pcs/pcs-airoha.c:2786:14: sparse: got void [noderef] __iomem *
drivers/net/pcs/pcs-airoha.c:2791:25: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected void [noderef] __iomem *regs @@ got void *base @@
drivers/net/pcs/pcs-airoha.c:2791:25: sparse: expected void [noderef] __iomem *regs
drivers/net/pcs/pcs-airoha.c:2791:25: sparse: got void *base
vim +2723 drivers/net/pcs/pcs-airoha.c
2707
2708 static int airoha_pcs_probe(struct platform_device *pdev)
2709 {
2710 struct regmap_config syscon_config = airoha_pcs_regmap_config;
2711 struct device *dev = &pdev->dev;
2712 struct airoha_pcs_priv *priv;
2713 void *base;
2714 int ret;
2715
2716 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
2717 if (!priv)
2718 return -ENOMEM;
2719
2720 priv->dev = dev;
2721 priv->data = of_device_get_match_data(dev);
2722
> 2723 base = devm_platform_ioremap_resource_byname(pdev, "xfi_mac");
2724 if (IS_ERR(base))
2725 return PTR_ERR(base);
2726
2727 syscon_config.name = "xfi_mac";
> 2728 priv->xfi_mac = devm_regmap_init_mmio(dev, base, &syscon_config);
2729 if (IS_ERR(priv->xfi_mac))
2730 return PTR_ERR(priv->xfi_mac);
2731
2732 base = devm_platform_ioremap_resource_byname(pdev, "hsgmii_an");
2733 if (IS_ERR(base))
2734 return PTR_ERR(base);
2735
2736 syscon_config.name = "hsgmii_an";
2737 priv->hsgmii_an = devm_regmap_init_mmio(dev, base, &syscon_config);
2738 if (IS_ERR(priv->hsgmii_an))
2739 return PTR_ERR(priv->hsgmii_an);
2740
2741 base = devm_platform_ioremap_resource_byname(pdev, "hsgmii_pcs");
2742 if (IS_ERR(base))
2743 return PTR_ERR(base);
2744
2745 syscon_config.name = "hsgmii_pcs";
2746 priv->hsgmii_pcs = devm_regmap_init_mmio(dev, base, &syscon_config);
2747 if (IS_ERR(priv->hsgmii_pcs))
2748 return PTR_ERR(priv->hsgmii_pcs);
2749
2750 base = devm_platform_ioremap_resource_byname(pdev, "hsgmii_rate_adp");
2751 if (IS_ERR(base))
2752 return PTR_ERR(base);
2753
2754 syscon_config.name = "hsgmii_rate_adp";
2755 priv->hsgmii_rate_adp = devm_regmap_init_mmio(dev, base, &syscon_config);
2756 if (IS_ERR(priv->hsgmii_rate_adp))
2757 return PTR_ERR(priv->hsgmii_rate_adp);
2758
2759 base = devm_platform_ioremap_resource_byname(pdev, "multi_sgmii");
2760 if (IS_ERR(base))
2761 return PTR_ERR(base);
2762
2763 syscon_config.name = "multi_sgmii";
2764 priv->multi_sgmii = devm_regmap_init_mmio(dev, base, &syscon_config);
2765 if (IS_ERR(priv->multi_sgmii))
2766 return PTR_ERR(priv->multi_sgmii);
2767
2768 base = devm_platform_ioremap_resource_byname(pdev, "usxgmii");
2769 if (IS_ERR(base) && PTR_ERR(base) != -ENOENT)
2770 return PTR_ERR(base);
2771
2772 syscon_config.name = "usxgmii";
2773 priv->usxgmii_pcs = devm_regmap_init_mmio(dev, base, &syscon_config);
2774 if (IS_ERR(priv->usxgmii_pcs))
2775 return PTR_ERR(priv->usxgmii_pcs);
2776
2777 base = devm_platform_ioremap_resource_byname(pdev, "xfi_pma");
2778 if (IS_ERR(base) && PTR_ERR(base) != -ENOENT)
2779 return PTR_ERR(base);
2780
2781 syscon_config.name = "xfi_pma";
2782 priv->xfi_pma = devm_regmap_init_mmio(dev, base, &syscon_config);
2783 if (IS_ERR(priv->xfi_pma))
2784 return PTR_ERR(priv->xfi_pma);
2785
2786 base = devm_platform_ioremap_resource_byname(pdev, "xfi_ana");
2787 if (IS_ERR(base) && PTR_ERR(base) != -ENOENT)
2788 return PTR_ERR(base);
2789
2790 syscon_config.name = "xfi_ana";
2791 priv->xfi_ana = devm_regmap_init_mmio(dev, base, &syscon_config);
2792 if (IS_ERR(priv->xfi_ana))
2793 return PTR_ERR(priv->xfi_ana);
2794
2795 /* SCU is used to toggle XFI or HSGMII in global SoC registers */
2796 priv->scu = syscon_regmap_lookup_by_compatible("airoha,en7581-scu");
2797 if (IS_ERR(priv->scu))
2798 return PTR_ERR(priv->scu);
2799
2800 priv->rsts[0].id = "mac";
2801 priv->rsts[1].id = "phy";
2802 ret = devm_reset_control_bulk_get_exclusive(dev, ARRAY_SIZE(priv->rsts),
2803 priv->rsts);
2804 if (ret)
2805 return dev_err_probe(dev, ret, "failed to get bulk reset lines\n");
2806
2807 platform_set_drvdata(pdev, priv);
2808
2809 priv->pcs.ops = &airoha_pcs_ops;
2810 priv->pcs.poll = true;
2811
2812 __set_bit(PHY_INTERFACE_MODE_SGMII, priv->pcs.supported_interfaces);
2813 __set_bit(PHY_INTERFACE_MODE_1000BASEX, priv->pcs.supported_interfaces);
2814 __set_bit(PHY_INTERFACE_MODE_2500BASEX, priv->pcs.supported_interfaces);
2815 __set_bit(PHY_INTERFACE_MODE_10GBASER, priv->pcs.supported_interfaces);
2816 __set_bit(PHY_INTERFACE_MODE_USXGMII, priv->pcs.supported_interfaces);
2817
2818 return of_pcs_add_provider(dev->of_node, of_pcs_simple_get,
2819 &priv->pcs);
2820 }
2821
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki