All of lore.kernel.org
 help / color / mirror / Atom feed
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.