From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com
Subject: [frank-w-bpi-r2-4.14:7.2-rc 97/160] drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3854:18: sparse: sparse: unsigned value that used to be signed checked against zero?
Date: Tue, 30 Jun 2026 23:27:31 +0800 [thread overview]
Message-ID: <202606302329.LU6hi3Uw-lkp@intel.com> (raw)
::::::
:::::: Manual check reason: "low confidence static check first_new_problem: drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3854:18: sparse: sparse: unsigned value that used to be signed checked against zero?"
::::::
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Frank Wunderlich <frank-w@public-files.de>
Hi Daniel,
First bad commit (maybe != root cause):
tree: https://github.com/frank-w/BPI-R2-4.14 7.2-rc
head: 39cd8d05e83250c6294b8e0da3ca69359eff8a3c
commit: b38c51084f43bbd0577275476789fd2611e06ffc [97/160] net: dsa: add 802.1Q VLAN-based tag driver for MxL862xx
:::::: branch date: 19 hours ago
:::::: commit date: 19 hours ago
config: sparc64-randconfig-r133-20260630 (https://download.01.org/0day-ci/archive/20260630/202606302329.LU6hi3Uw-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 8.5.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260630/202606302329.LU6hi3Uw-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/r/202606302329.LU6hi3Uw-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2138:30: sparse: expected restricted __le16 [addressable] [assigned] [usertype] entry_index
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2138:30: sparse: got int
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2145:44: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] vid_val @@ got unsigned short [usertype] vid @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2145:44: sparse: expected restricted __le32 [addressable] [assigned] [usertype] vid_val
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2145:44: sparse: got unsigned short [usertype] vid
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2157:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected signed short @@ got restricted __le16 [addressable] [assigned] [usertype] entry_index @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2157:33: sparse: expected signed short
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2157:33: sparse: got restricted __le16 [addressable] [assigned] [usertype] entry_index
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2333:65: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [assigned] [usertype] egress_extended_vlan_block_id @@ got unsigned short [usertype] block_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2333:65: sparse: expected restricted __le16 [assigned] [usertype] egress_extended_vlan_block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2333:65: sparse: got unsigned short [usertype] block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2336:66: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [assigned] [usertype] ingress_extended_vlan_block_id @@ got unsigned short [usertype] block_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2336:66: sparse: expected restricted __le16 [assigned] [usertype] ingress_extended_vlan_block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2336:66: sparse: got unsigned short [usertype] block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2399:65: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [assigned] [usertype] egress_extended_vlan_block_id @@ got unsigned short [usertype] block_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2399:65: sparse: expected restricted __le16 [assigned] [usertype] egress_extended_vlan_block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2399:65: sparse: got unsigned short [usertype] block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2402:66: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [assigned] [usertype] ingress_extended_vlan_block_id @@ got unsigned short [usertype] block_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2402:66: sparse: expected restricted __le16 [assigned] [usertype] ingress_extended_vlan_block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2402:66: sparse: got unsigned short [usertype] block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2419:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] bridge_port_id @@ got int port @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2419:36: sparse: expected restricted __le16 [usertype] bridge_port_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2419:36: sparse: got int port
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2424:51: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [assigned] [usertype] egress_extended_vlan_block_id @@ got unsigned short [usertype] block_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2424:51: sparse: expected restricted __le16 [assigned] [usertype] egress_extended_vlan_block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2424:51: sparse: got unsigned short [usertype] block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2427:52: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [assigned] [usertype] ingress_extended_vlan_block_id @@ got unsigned short [usertype] block_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2427:52: sparse: expected restricted __le16 [assigned] [usertype] ingress_extended_vlan_block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2427:52: sparse: got unsigned short [usertype] block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2555:41: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] bridge_id @@ got restricted __le16 [addressable] [usertype] bridge_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2555:41: sparse: expected unsigned short [usertype] bridge_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2555:41: sparse: got restricted __le16 [addressable] [usertype] bridge_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2605:32: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] bridge_id @@ got unsigned short [usertype] bridge_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2605:32: sparse: expected restricted __le16 [usertype] bridge_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2605:32: sparse: got unsigned short [usertype] bridge_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2676:35: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le16 [usertype] bridge_port_id @@ got int port @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2676:35: sparse: expected restricted __le16 [usertype] bridge_port_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2676:35: sparse: got int port
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2784:25: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [addressable] [assigned] [usertype] age_timer @@ got unsigned int @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2784:25: sparse: expected restricted __le32 [addressable] [assigned] [usertype] age_timer
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2784:25: sparse: got unsigned int
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2814:49: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] bridge_id @@ got restricted __le16 [addressable] [usertype] bridge_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2814:49: sparse: expected unsigned short [usertype] bridge_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2814:49: sparse: got restricted __le16 [addressable] [usertype] bridge_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2851:57: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [assigned] [usertype] egress_extended_vlan_block_id @@ got unsigned short [usertype] block_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2851:57: sparse: expected restricted __le16 [assigned] [usertype] egress_extended_vlan_block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2851:57: sparse: got unsigned short [usertype] block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2854:58: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [assigned] [usertype] ingress_extended_vlan_block_id @@ got unsigned short [usertype] block_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2854:58: sparse: expected restricted __le16 [assigned] [usertype] ingress_extended_vlan_block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2854:58: sparse: got unsigned short [usertype] block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2867:44: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] bridge_port_id @@ got int port @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2867:44: sparse: expected restricted __le16 [usertype] bridge_port_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2867:44: sparse: got int port
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2871:59: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [assigned] [usertype] egress_extended_vlan_block_id @@ got unsigned short [usertype] block_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2871:59: sparse: expected restricted __le16 [assigned] [usertype] egress_extended_vlan_block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2871:59: sparse: got unsigned short [usertype] block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2874:60: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [assigned] [usertype] ingress_extended_vlan_block_id @@ got unsigned short [usertype] block_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2874:60: sparse: expected restricted __le16 [assigned] [usertype] ingress_extended_vlan_block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2874:60: sparse: got unsigned short [usertype] block_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2894:51: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le16 [usertype] bridge_id @@ got unsigned short [usertype] bridge_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2894:51: sparse: expected restricted __le16 [usertype] bridge_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2894:51: sparse: got unsigned short [usertype] bridge_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2990:28: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le16 [usertype] port_id @@ got int port @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2990:28: sparse: expected restricted __le16 [usertype] port_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2990:28: sparse: got int port
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2993:28: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le16 [usertype] port_id @@ got int port @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2993:28: sparse: expected restricted __le16 [usertype] port_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:2993:28: sparse: got int port
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3178:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] bridge_port_id @@ got unsigned int [assigned] cpu_port @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3178:36: sparse: expected restricted __le16 [usertype] bridge_port_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3178:36: sparse: got unsigned int [assigned] cpu_port
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3179:40: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 @@ got unsigned short @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3179:40: sparse: expected restricted __le16
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3179:40: sparse: got unsigned short
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3195:28: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le16 [usertype] port_id @@ got int port @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3195:28: sparse: expected restricted __le16 [usertype] port_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3195:28: sparse: got int port
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3368:28: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le16 [usertype] port_id @@ got int port @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3368:28: sparse: expected restricted __le16 [usertype] port_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3368:28: sparse: got int port
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3506:28: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le32 [usertype] port_id @@ got int port @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3506:28: sparse: expected restricted __le32 [usertype] port_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3506:28: sparse: got int port
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3525:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [usertype] fid @@ got unsigned short [usertype] bridge_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3525:27: sparse: expected restricted __le16 [addressable] [usertype] fid
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3525:27: sparse: got unsigned short [usertype] bridge_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3527:35: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [usertype] tci @@ got int @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3527:35: sparse: expected restricted __le16 [addressable] [usertype] tci
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3527:35: sparse: got int
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3551:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [usertype] tci @@ got int @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3551:27: sparse: expected restricted __le16 [addressable] [usertype] tci
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3551:27: sparse: got int
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3561:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [addressable] [usertype] fid @@ got unsigned short [usertype] bridge_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3561:27: sparse: expected restricted __le16 [addressable] [usertype] fid
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3561:27: sparse: got unsigned short [usertype] bridge_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3591:26: sparse: sparse: restricted __le32 degrades to integer
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3592:44: sparse: sparse: restricted __le16 degrades to integer
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3633:41: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [assigned] [usertype] bridge_id @@ got unsigned short [assigned] [usertype] bridge_id @@
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3633:41: sparse: expected restricted __le16 [assigned] [usertype] bridge_id
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3633:41: sparse: got unsigned short [assigned] [usertype] bridge_id
>> drivers/net/dsa/mxl862xx_downstream/mxl862xx.c:3854:18: sparse: sparse: unsigned value that used to be signed checked against zero?
drivers/net/dsa/mxl862xx_downstream/mxl862xx.c: note: in included file (through include/linux/byteorder/big_endian.h, arch/sparc/include/uapi/asm/byteorder.h, include/asm-generic/qrwlock_types.h, ...):
include/uapi/linux/byteorder/big_endian.h:83:32: sparse: signed value source
vim +3854 drivers/net/dsa/mxl862xx_downstream/mxl862xx.c
96aefe538fdf60 Frank Wunderlich 2026-03-07 3839
96aefe538fdf60 Frank Wunderlich 2026-03-07 3840 static int ds_add_mux(struct mxl862xx_priv *priv, struct device_node *np)
96aefe538fdf60 Frank Wunderlich 2026-03-07 3841 {
96aefe538fdf60 Frank Wunderlich 2026-03-07 3842 const __be32 *_id = of_get_property(np, "reg", NULL);
96aefe538fdf60 Frank Wunderlich 2026-03-07 3843 struct device_node *child;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3844 struct combo_port_mux *mux;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3845 unsigned int id;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3846 int err, sfp_present;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3847
96aefe538fdf60 Frank Wunderlich 2026-03-07 3848 if (!_id) {
96aefe538fdf60 Frank Wunderlich 2026-03-07 3849 dev_err(priv->dev, "missing attach dp id\n");
96aefe538fdf60 Frank Wunderlich 2026-03-07 3850 return -EINVAL;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3851 }
96aefe538fdf60 Frank Wunderlich 2026-03-07 3852
96aefe538fdf60 Frank Wunderlich 2026-03-07 3853 id = be32_to_cpup(_id);
96aefe538fdf60 Frank Wunderlich 2026-03-07 @3854 if (id < 0 || id >= MAX_PORTS) {
96aefe538fdf60 Frank Wunderlich 2026-03-07 3855 dev_err(priv->dev, "%d is not a valid attach dp id\n", id);
96aefe538fdf60 Frank Wunderlich 2026-03-07 3856 return -EINVAL;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3857 }
96aefe538fdf60 Frank Wunderlich 2026-03-07 3858
96aefe538fdf60 Frank Wunderlich 2026-03-07 3859 mux = kzalloc(sizeof(struct combo_port_mux), GFP_KERNEL);
96aefe538fdf60 Frank Wunderlich 2026-03-07 3860 if (unlikely(!mux)) {
96aefe538fdf60 Frank Wunderlich 2026-03-07 3861 dev_err(priv->dev, "failed to create mux structure\n");
96aefe538fdf60 Frank Wunderlich 2026-03-07 3862 return -ENOMEM;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3863 }
96aefe538fdf60 Frank Wunderlich 2026-03-07 3864
96aefe538fdf60 Frank Wunderlich 2026-03-07 3865 mux->mod_def0_gpio = fwnode_gpiod_get_index(of_fwnode_handle(np),
96aefe538fdf60 Frank Wunderlich 2026-03-07 3866 "mod-def0", 0, GPIOD_IN |
96aefe538fdf60 Frank Wunderlich 2026-03-07 3867 GPIOD_FLAGS_BIT_NONEXCLUSIVE, "?");
96aefe538fdf60 Frank Wunderlich 2026-03-07 3868
96aefe538fdf60 Frank Wunderlich 2026-03-07 3869 if (IS_ERR(mux->mod_def0_gpio)) {
96aefe538fdf60 Frank Wunderlich 2026-03-07 3870 dev_err(priv->dev, "failed to requset gpio for mod-def0\n");
96aefe538fdf60 Frank Wunderlich 2026-03-07 3871 err = PTR_ERR(mux->mod_def0_gpio);
96aefe538fdf60 Frank Wunderlich 2026-03-07 3872 goto err_free_mux;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3873 }
96aefe538fdf60 Frank Wunderlich 2026-03-07 3874
96aefe538fdf60 Frank Wunderlich 2026-03-07 3875 mux->chan_sel_gpio = fwnode_gpiod_get_index(of_fwnode_handle(np),
96aefe538fdf60 Frank Wunderlich 2026-03-07 3876 "chan-sel", 0, GPIOD_OUT_LOW, "?");
96aefe538fdf60 Frank Wunderlich 2026-03-07 3877
96aefe538fdf60 Frank Wunderlich 2026-03-07 3878 if (IS_ERR(mux->chan_sel_gpio)) {
96aefe538fdf60 Frank Wunderlich 2026-03-07 3879 dev_err(priv->dev, "failed to requset gpio for chan-sel\n");
96aefe538fdf60 Frank Wunderlich 2026-03-07 3880 err = PTR_ERR(mux->chan_sel_gpio);
96aefe538fdf60 Frank Wunderlich 2026-03-07 3881 goto err_put_mod_def0;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3882 }
96aefe538fdf60 Frank Wunderlich 2026-03-07 3883
96aefe538fdf60 Frank Wunderlich 2026-03-07 3884 if (of_property_read_u32(np, "sfp-present-channel",
96aefe538fdf60 Frank Wunderlich 2026-03-07 3885 &mux->sfp_present_channel))
96aefe538fdf60 Frank Wunderlich 2026-03-07 3886 mux->sfp_present_channel = 0;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3887 else if (mux->sfp_present_channel > 1)
96aefe538fdf60 Frank Wunderlich 2026-03-07 3888 mux->sfp_present_channel = 1;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3889
96aefe538fdf60 Frank Wunderlich 2026-03-07 3890 priv->ds_mux[id] = mux;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3891 mux->dp = dsa_to_port(priv->ds, id);
96aefe538fdf60 Frank Wunderlich 2026-03-07 3892 /* Keep probe deterministic: always start from non-SFP channel.
96aefe538fdf60 Frank Wunderlich 2026-03-07 3893 * The monitor worker will switch to SFP channel after boot if needed.
96aefe538fdf60 Frank Wunderlich 2026-03-07 3894 */
96aefe538fdf60 Frank Wunderlich 2026-03-07 3895 sfp_present = gpiod_get_value_cansleep(mux->mod_def0_gpio);
96aefe538fdf60 Frank Wunderlich 2026-03-07 3896 if (sfp_present < 0) {
96aefe538fdf60 Frank Wunderlich 2026-03-07 3897 dev_warn(priv->dev,
96aefe538fdf60 Frank Wunderlich 2026-03-07 3898 "failed to read mod-def0 gpio, forcing non-SFP init channel\n");
96aefe538fdf60 Frank Wunderlich 2026-03-07 3899 }
96aefe538fdf60 Frank Wunderlich 2026-03-07 3900 mux->channel = !mux->sfp_present_channel;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3901 gpiod_set_value_cansleep(mux->chan_sel_gpio, mux->channel);
96aefe538fdf60 Frank Wunderlich 2026-03-07 3902
96aefe538fdf60 Frank Wunderlich 2026-03-07 3903 for_each_child_of_node(np, child) {
96aefe538fdf60 Frank Wunderlich 2026-03-07 3904 err = ds_add_mux_channel(mux, child);
96aefe538fdf60 Frank Wunderlich 2026-03-07 3905 if (err) {
96aefe538fdf60 Frank Wunderlich 2026-03-07 3906 dev_err(priv->dev, "failed to add ds_mux\n");
96aefe538fdf60 Frank Wunderlich 2026-03-07 3907 of_node_put(child);
96aefe538fdf60 Frank Wunderlich 2026-03-07 3908 goto err_put_chan_sel;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3909 }
96aefe538fdf60 Frank Wunderlich 2026-03-07 3910 }
96aefe538fdf60 Frank Wunderlich 2026-03-07 3911
96aefe538fdf60 Frank Wunderlich 2026-03-07 3912 mux->dp->dn = mux->data[mux->channel]->of_node;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3913 mux->dp->pl = mux->data[mux->channel]->phylink;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3914
96aefe538fdf60 Frank Wunderlich 2026-03-07 3915 INIT_DELAYED_WORK(&mux->sfp_monitor_work, sfp_monitor_work_func);
96aefe538fdf60 Frank Wunderlich 2026-03-07 3916 mod_delayed_work(system_wq, &mux->sfp_monitor_work, msecs_to_jiffies(3000));
96aefe538fdf60 Frank Wunderlich 2026-03-07 3917
96aefe538fdf60 Frank Wunderlich 2026-03-07 3918 return 0;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3919
96aefe538fdf60 Frank Wunderlich 2026-03-07 3920 err_put_chan_sel:
96aefe538fdf60 Frank Wunderlich 2026-03-07 3921 gpiod_put(mux->chan_sel_gpio);
96aefe538fdf60 Frank Wunderlich 2026-03-07 3922 err_put_mod_def0:
96aefe538fdf60 Frank Wunderlich 2026-03-07 3923 gpiod_put(mux->mod_def0_gpio);
96aefe538fdf60 Frank Wunderlich 2026-03-07 3924 err_free_mux:
96aefe538fdf60 Frank Wunderlich 2026-03-07 3925 kfree(mux);
96aefe538fdf60 Frank Wunderlich 2026-03-07 3926 priv->ds_mux[id] = NULL;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3927 return err;
96aefe538fdf60 Frank Wunderlich 2026-03-07 3928 }
96aefe538fdf60 Frank Wunderlich 2026-03-07 3929
:::::: The code at line 3854 was first introduced by commit
:::::: 96aefe538fdf60924d25ab9ee28d665648458ddc net: dsa: add mxl downstream driver from 6.19-main
:::::: TO: Frank Wunderlich <frank-w@public-files.de>
:::::: CC: Frank Wunderlich <frank-w@public-files.de>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-06-30 15:27 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=202606302329.LU6hi3Uw-lkp@intel.com \
--to=lkp@intel.com \
--cc=oe-kbuild@lists.linux.dev \
/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.