All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [net-next: PATCH v3 3/8] net: dsa: switch to device_/fwnode_ APIs
@ 2022-07-28  7:22 kernel test robot
  2022-07-28  8:13 ` kernel test robot
  0 siblings, 1 reply; 4+ messages in thread
From: kernel test robot @ 2022-07-28  7:22 UTC (permalink / raw)
  To: kbuild

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

:::::: 
:::::: Manual check reason: "commit no functional change"
:::::: 

CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
In-Reply-To: <20220727064321.2953971-4-mw@semihalf.com>
References: <20220727064321.2953971-4-mw@semihalf.com>
TO: Marcin Wojtas <mw@semihalf.com>
TO: linux-kernel(a)vger.kernel.org
TO: linux-acpi(a)vger.kernel.org
TO: netdev(a)vger.kernel.org
CC: rafael(a)kernel.org
CC: andriy.shevchenko(a)linux.intel.com
CC: sean.wang(a)mediatek.com
CC: Landen.Chao(a)mediatek.com
CC: linus.walleij(a)linaro.org
CC: andrew(a)lunn.ch
CC: vivien.didelot(a)gmail.com
CC: f.fainelli(a)gmail.com
CC: olteanv(a)gmail.com
CC: davem(a)davemloft.net
CC: edumazet(a)google.com
CC: kuba(a)kernel.org
CC: pabeni(a)redhat.com
CC: linux(a)armlinux.org.uk
CC: hkallweit1(a)gmail.com
CC: gjb(a)semihalf.com
CC: mw(a)semihalf.com
CC: jaz(a)semihalf.com
CC: tn(a)semihalf.com
CC: Samer.El-Haj-Mahmoud(a)arm.com
CC: upstream(a)semihalf.com

Hi Marcin,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20220726]
[cannot apply to driver-core/driver-core-testing robh/for-next horms-ipvs/master linus/master v5.19-rc8 v5.19-rc7 v5.19-rc6 v5.19-rc8]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Marcin-Wojtas/DSA-switch-to-fwnode_-device_/20220727-144515
base:    058affafc65a74cf54499fb578b66ad0b18f939b
:::::: branch date: 24 hours ago
:::::: commit date: 24 hours ago
config: i386-allyesconfig (https://download.01.org/0day-ci/archive/20220728/202207281516.7lNRXIgu-lkp(a)intel.com/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0
reproduce (this is a W=1 build):
        # https://github.com/intel-lab-lkp/linux/commit/0cd0cba4df268433a47eb7d7e6c4b657dac14cbc
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Marcin-Wojtas/DSA-switch-to-fwnode_-device_/20220727-144515
        git checkout 0cd0cba4df268433a47eb7d7e6c4b657dac14cbc
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash

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

All errors (new ones prefixed by >>):

   drivers/net/dsa/mt7530.c: In function 'mt7530_setup':
>> drivers/net/dsa/mt7530.c:2254:63: error: passing argument 2 of 'of_get_phy_mode' from incompatible pointer type [-Werror=incompatible-pointer-types]
    2254 |                                 ret = of_get_phy_mode(mac_np, &interface);
         |                                                               ^~~~~~~~~~
         |                                                               |
         |                                                               int *
   In file included from drivers/net/dsa/mt7530.c:15:
   include/linux/of_net.h:15:69: note: expected 'phy_interface_t *' but argument is of type 'int *'
      15 | extern int of_get_phy_mode(struct device_node *np, phy_interface_t *interface);
         |                                                    ~~~~~~~~~~~~~~~~~^~~~~~~~~
   cc1: some warnings being treated as errors


vim +/of_get_phy_mode +2254 drivers/net/dsa/mt7530.c

ba751e28d442557 DENG Qingfang       2021-05-19  2103  
b8f126a8d54318b Sean Wang           2017-04-07  2104  static int
b8f126a8d54318b Sean Wang           2017-04-07  2105  mt7530_setup(struct dsa_switch *ds)
b8f126a8d54318b Sean Wang           2017-04-07  2106  {
b8f126a8d54318b Sean Wang           2017-04-07  2107  	struct mt7530_priv *priv = ds->priv;
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2108  	struct device_node *dn = NULL;
38f790a805609b2 René van Dorst      2019-09-02  2109  	struct device_node *phy_node;
38f790a805609b2 René van Dorst      2019-09-02  2110  	struct device_node *mac_np;
b8f126a8d54318b Sean Wang           2017-04-07  2111  	struct mt7530_dummy_poll p;
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2112  	struct dsa_port *cpu_dp;
0cd0cba4df26843 Marcin Wojtas       2022-07-27  2113  	int interface;
ca366d6c889b5d3 René van Dorst      2019-09-02  2114  	u32 id, val;
ca366d6c889b5d3 René van Dorst      2019-09-02  2115  	int ret, i;
b8f126a8d54318b Sean Wang           2017-04-07  2116  
0abfd494deefdba Vivien Didelot      2017-09-20  2117  	/* The parent node of master netdev which holds the common system
b8f126a8d54318b Sean Wang           2017-04-07  2118  	 * controller also is the container for two GMACs nodes representing
b8f126a8d54318b Sean Wang           2017-04-07  2119  	 * as two netdev instances.
b8f126a8d54318b Sean Wang           2017-04-07  2120  	 */
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2121  	dsa_switch_for_each_cpu_port(cpu_dp, ds) {
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2122  		dn = cpu_dp->master->dev.of_node->parent;
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2123  		/* It doesn't matter which CPU port is found first,
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2124  		 * their masters should share the same parent OF node
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2125  		 */
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2126  		break;
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2127  	}
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2128  
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2129  	if (!dn) {
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2130  		dev_err(ds->dev, "parent OF node of DSA master not found");
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2131  		return -EINVAL;
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2132  	}
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2133  
0b69c54c74bcb60 DENG Qingfang       2021-08-04  2134  	ds->assisted_learning_on_cpu_port = true;
771c8901568dd87 DENG Qingfang       2020-12-11  2135  	ds->mtu_enforcement_ingress = true;
ddda1ac116c852b Greg Ungerer        2019-01-30  2136  
ddda1ac116c852b Greg Ungerer        2019-01-30  2137  	if (priv->id == ID_MT7530) {
b8f126a8d54318b Sean Wang           2017-04-07  2138  		regulator_set_voltage(priv->core_pwr, 1000000, 1000000);
b8f126a8d54318b Sean Wang           2017-04-07  2139  		ret = regulator_enable(priv->core_pwr);
b8f126a8d54318b Sean Wang           2017-04-07  2140  		if (ret < 0) {
b8f126a8d54318b Sean Wang           2017-04-07  2141  			dev_err(priv->dev,
b8f126a8d54318b Sean Wang           2017-04-07  2142  				"Failed to enable core power: %d\n", ret);
b8f126a8d54318b Sean Wang           2017-04-07  2143  			return ret;
b8f126a8d54318b Sean Wang           2017-04-07  2144  		}
b8f126a8d54318b Sean Wang           2017-04-07  2145  
b8f126a8d54318b Sean Wang           2017-04-07  2146  		regulator_set_voltage(priv->io_pwr, 3300000, 3300000);
b8f126a8d54318b Sean Wang           2017-04-07  2147  		ret = regulator_enable(priv->io_pwr);
b8f126a8d54318b Sean Wang           2017-04-07  2148  		if (ret < 0) {
b8f126a8d54318b Sean Wang           2017-04-07  2149  			dev_err(priv->dev, "Failed to enable io pwr: %d\n",
b8f126a8d54318b Sean Wang           2017-04-07  2150  				ret);
b8f126a8d54318b Sean Wang           2017-04-07  2151  			return ret;
b8f126a8d54318b Sean Wang           2017-04-07  2152  		}
ddda1ac116c852b Greg Ungerer        2019-01-30  2153  	}
b8f126a8d54318b Sean Wang           2017-04-07  2154  
b8f126a8d54318b Sean Wang           2017-04-07  2155  	/* Reset whole chip through gpio pin or memory-mapped registers for
b8f126a8d54318b Sean Wang           2017-04-07  2156  	 * different type of hardware
b8f126a8d54318b Sean Wang           2017-04-07  2157  	 */
b8f126a8d54318b Sean Wang           2017-04-07  2158  	if (priv->mcm) {
b8f126a8d54318b Sean Wang           2017-04-07  2159  		reset_control_assert(priv->rstc);
b8f126a8d54318b Sean Wang           2017-04-07  2160  		usleep_range(1000, 1100);
b8f126a8d54318b Sean Wang           2017-04-07  2161  		reset_control_deassert(priv->rstc);
b8f126a8d54318b Sean Wang           2017-04-07  2162  	} else {
b8f126a8d54318b Sean Wang           2017-04-07  2163  		gpiod_set_value_cansleep(priv->reset, 0);
b8f126a8d54318b Sean Wang           2017-04-07  2164  		usleep_range(1000, 1100);
b8f126a8d54318b Sean Wang           2017-04-07  2165  		gpiod_set_value_cansleep(priv->reset, 1);
b8f126a8d54318b Sean Wang           2017-04-07  2166  	}
b8f126a8d54318b Sean Wang           2017-04-07  2167  
b8f126a8d54318b Sean Wang           2017-04-07  2168  	/* Waiting for MT7530 got to stable */
b8f126a8d54318b Sean Wang           2017-04-07  2169  	INIT_MT7530_DUMMY_POLL(&p, priv, MT7530_HWTRAP);
b8f126a8d54318b Sean Wang           2017-04-07  2170  	ret = readx_poll_timeout(_mt7530_read, &p, val, val != 0,
b8f126a8d54318b Sean Wang           2017-04-07  2171  				 20, 1000000);
b8f126a8d54318b Sean Wang           2017-04-07  2172  	if (ret < 0) {
b8f126a8d54318b Sean Wang           2017-04-07  2173  		dev_err(priv->dev, "reset timeout\n");
b8f126a8d54318b Sean Wang           2017-04-07  2174  		return ret;
b8f126a8d54318b Sean Wang           2017-04-07  2175  	}
b8f126a8d54318b Sean Wang           2017-04-07  2176  
b8f126a8d54318b Sean Wang           2017-04-07  2177  	id = mt7530_read(priv, MT7530_CREV);
b8f126a8d54318b Sean Wang           2017-04-07  2178  	id >>= CHIP_NAME_SHIFT;
b8f126a8d54318b Sean Wang           2017-04-07  2179  	if (id != MT7530_ID) {
b8f126a8d54318b Sean Wang           2017-04-07  2180  		dev_err(priv->dev, "chip %x can't be supported\n", id);
b8f126a8d54318b Sean Wang           2017-04-07  2181  		return -ENODEV;
b8f126a8d54318b Sean Wang           2017-04-07  2182  	}
b8f126a8d54318b Sean Wang           2017-04-07  2183  
b8f126a8d54318b Sean Wang           2017-04-07  2184  	/* Reset the switch through internal reset */
b8f126a8d54318b Sean Wang           2017-04-07  2185  	mt7530_write(priv, MT7530_SYS_CTRL,
b8f126a8d54318b Sean Wang           2017-04-07  2186  		     SYS_CTRL_PHY_RST | SYS_CTRL_SW_RST |
b8f126a8d54318b Sean Wang           2017-04-07  2187  		     SYS_CTRL_REG_RST);
b8f126a8d54318b Sean Wang           2017-04-07  2188  
b8f126a8d54318b Sean Wang           2017-04-07  2189  	/* Enable Port 6 only; P5 as GMAC5 which currently is not supported */
b8f126a8d54318b Sean Wang           2017-04-07  2190  	val = mt7530_read(priv, MT7530_MHWTRAP);
b8f126a8d54318b Sean Wang           2017-04-07  2191  	val &= ~MHWTRAP_P6_DIS & ~MHWTRAP_PHY_ACCESS;
b8f126a8d54318b Sean Wang           2017-04-07  2192  	val |= MHWTRAP_MANUAL;
b8f126a8d54318b Sean Wang           2017-04-07  2193  	mt7530_write(priv, MT7530_MHWTRAP, val);
b8f126a8d54318b Sean Wang           2017-04-07  2194  
ca366d6c889b5d3 René van Dorst      2019-09-02  2195  	priv->p6_interface = PHY_INTERFACE_MODE_NA;
ca366d6c889b5d3 René van Dorst      2019-09-02  2196  
b8f126a8d54318b Sean Wang           2017-04-07  2197  	/* Enable and reset MIB counters */
b8f126a8d54318b Sean Wang           2017-04-07  2198  	mt7530_mib_reset(ds);
b8f126a8d54318b Sean Wang           2017-04-07  2199  
b8f126a8d54318b Sean Wang           2017-04-07  2200  	for (i = 0; i < MT7530_NUM_PORTS; i++) {
b8f126a8d54318b Sean Wang           2017-04-07  2201  		/* Disable forwarding by default on all ports */
b8f126a8d54318b Sean Wang           2017-04-07  2202  		mt7530_rmw(priv, MT7530_PCR_P(i), PCR_MATRIX_MASK,
b8f126a8d54318b Sean Wang           2017-04-07  2203  			   PCR_MATRIX_CLR);
b8f126a8d54318b Sean Wang           2017-04-07  2204  
0b69c54c74bcb60 DENG Qingfang       2021-08-04  2205  		/* Disable learning by default on all ports */
0b69c54c74bcb60 DENG Qingfang       2021-08-04  2206  		mt7530_set(priv, MT7530_PSC_P(i), SA_DIS);
0b69c54c74bcb60 DENG Qingfang       2021-08-04  2207  
0ce0c3cd2239502 Alex Dewar          2020-09-19  2208  		if (dsa_is_cpu_port(ds, i)) {
0ce0c3cd2239502 Alex Dewar          2020-09-19  2209  			ret = mt753x_cpu_port_enable(ds, i);
0ce0c3cd2239502 Alex Dewar          2020-09-19  2210  			if (ret)
0ce0c3cd2239502 Alex Dewar          2020-09-19  2211  				return ret;
5a30833b9a16f8d DENG Qingfang       2021-03-16  2212  		} else {
75104db0cb353ec Andrew Lunn         2019-02-24  2213  			mt7530_port_disable(ds, i);
6087175b7991a90 DENG Qingfang       2021-08-04  2214  
6087175b7991a90 DENG Qingfang       2021-08-04  2215  			/* Set default PVID to 0 on all user ports */
6087175b7991a90 DENG Qingfang       2021-08-04  2216  			mt7530_rmw(priv, MT7530_PPBV1_P(i), G0_PORT_VID_MASK,
6087175b7991a90 DENG Qingfang       2021-08-04  2217  				   G0_PORT_VID_DEF);
5a30833b9a16f8d DENG Qingfang       2021-03-16  2218  		}
e045124e93995fe DENG Qingfang       2020-04-14  2219  		/* Enable consistent egress tag */
e045124e93995fe DENG Qingfang       2020-04-14  2220  		mt7530_rmw(priv, MT7530_PVC_P(i), PVC_EG_TAG_MASK,
e045124e93995fe DENG Qingfang       2020-04-14  2221  			   PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT));
b8f126a8d54318b Sean Wang           2017-04-07  2222  	}
b8f126a8d54318b Sean Wang           2017-04-07  2223  
1ca8a193cade7f4 DENG Qingfang       2021-08-25  2224  	/* Setup VLAN ID 0 for VLAN-unaware bridges */
1ca8a193cade7f4 DENG Qingfang       2021-08-25  2225  	ret = mt7530_setup_vlan0(priv);
1ca8a193cade7f4 DENG Qingfang       2021-08-25  2226  	if (ret)
1ca8a193cade7f4 DENG Qingfang       2021-08-25  2227  		return ret;
1ca8a193cade7f4 DENG Qingfang       2021-08-25  2228  
38f790a805609b2 René van Dorst      2019-09-02  2229  	/* Setup port 5 */
38f790a805609b2 René van Dorst      2019-09-02  2230  	priv->p5_intf_sel = P5_DISABLED;
38f790a805609b2 René van Dorst      2019-09-02  2231  	interface = PHY_INTERFACE_MODE_NA;
38f790a805609b2 René van Dorst      2019-09-02  2232  
38f790a805609b2 René van Dorst      2019-09-02  2233  	if (!dsa_is_unused_port(ds, 5)) {
38f790a805609b2 René van Dorst      2019-09-02  2234  		priv->p5_intf_sel = P5_INTF_SEL_GMAC5;
0cd0cba4df26843 Marcin Wojtas       2022-07-27  2235  		interface = fwnode_get_phy_mode(dsa_to_port(ds, 5)->fwnode);
0cd0cba4df26843 Marcin Wojtas       2022-07-27  2236  		if (interface < 0)
0c65b2b90d13c1d Andrew Lunn         2019-11-04  2237  			return ret;
38f790a805609b2 René van Dorst      2019-09-02  2238  	} else {
38f790a805609b2 René van Dorst      2019-09-02  2239  		/* Scan the ethernet nodes. look for GMAC1, lookup used phy */
38f790a805609b2 René van Dorst      2019-09-02  2240  		for_each_child_of_node(dn, mac_np) {
38f790a805609b2 René van Dorst      2019-09-02  2241  			if (!of_device_is_compatible(mac_np,
38f790a805609b2 René van Dorst      2019-09-02  2242  						     "mediatek,eth-mac"))
38f790a805609b2 René van Dorst      2019-09-02  2243  				continue;
38f790a805609b2 René van Dorst      2019-09-02  2244  
38f790a805609b2 René van Dorst      2019-09-02  2245  			ret = of_property_read_u32(mac_np, "reg", &id);
38f790a805609b2 René van Dorst      2019-09-02  2246  			if (ret < 0 || id != 1)
38f790a805609b2 René van Dorst      2019-09-02  2247  				continue;
38f790a805609b2 René van Dorst      2019-09-02  2248  
38f790a805609b2 René van Dorst      2019-09-02  2249  			phy_node = of_parse_phandle(mac_np, "phy-handle", 0);
0452800f6db4ed0 Chuanhong Guo       2020-04-03  2250  			if (!phy_node)
0452800f6db4ed0 Chuanhong Guo       2020-04-03  2251  				continue;
0452800f6db4ed0 Chuanhong Guo       2020-04-03  2252  
38f790a805609b2 René van Dorst      2019-09-02  2253  			if (phy_node->parent == priv->dev->of_node->parent) {
0c65b2b90d13c1d Andrew Lunn         2019-11-04 @2254  				ret = of_get_phy_mode(mac_np, &interface);
8e4efd4706f77d7 Sumera Priyadarsini 2020-08-25  2255  				if (ret && ret != -ENODEV) {
8e4efd4706f77d7 Sumera Priyadarsini 2020-08-25  2256  					of_node_put(mac_np);
a9e9b091a1c14ec Yang Yingliang      2022-04-28  2257  					of_node_put(phy_node);
0c65b2b90d13c1d Andrew Lunn         2019-11-04  2258  					return ret;
8e4efd4706f77d7 Sumera Priyadarsini 2020-08-25  2259  				}
38f790a805609b2 René van Dorst      2019-09-02  2260  				id = of_mdio_parse_addr(ds->dev, phy_node);
38f790a805609b2 René van Dorst      2019-09-02  2261  				if (id == 0)
38f790a805609b2 René van Dorst      2019-09-02  2262  					priv->p5_intf_sel = P5_INTF_SEL_PHY_P0;
38f790a805609b2 René van Dorst      2019-09-02  2263  				if (id == 4)
38f790a805609b2 René van Dorst      2019-09-02  2264  					priv->p5_intf_sel = P5_INTF_SEL_PHY_P4;
38f790a805609b2 René van Dorst      2019-09-02  2265  			}
8e4efd4706f77d7 Sumera Priyadarsini 2020-08-25  2266  			of_node_put(mac_np);
38f790a805609b2 René van Dorst      2019-09-02  2267  			of_node_put(phy_node);
38f790a805609b2 René van Dorst      2019-09-02  2268  			break;
38f790a805609b2 René van Dorst      2019-09-02  2269  		}
38f790a805609b2 René van Dorst      2019-09-02  2270  	}
38f790a805609b2 René van Dorst      2019-09-02  2271  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [net-next: PATCH v3 3/8] net: dsa: switch to device_/fwnode_ APIs
  2022-07-28  7:22 [net-next: PATCH v3 3/8] net: dsa: switch to device_/fwnode_ APIs kernel test robot
@ 2022-07-28  8:13 ` kernel test robot
  0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2022-07-28  8:13 UTC (permalink / raw)
  To: Marcin Wojtas, linux-kernel, linux-acpi, netdev
  Cc: rafael, andriy.shevchenko, sean.wang, Landen.Chao, linus.walleij,
	andrew, vivien.didelot, f.fainelli, olteanv, davem, edumazet,
	kuba, pabeni, linux, hkallweit1, gjb, mw, jaz, tn,
	Samer.El-Haj-Mahmoud, upstream, kbuild-all

Hi Marcin,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20220726]
[cannot apply to driver-core/driver-core-testing robh/for-next 
horms-ipvs/master linus/master v5.19-rc8 v5.19-rc7 v5.19-rc6 v5.19-rc8]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: 
https://github.com/intel-lab-lkp/linux/commits/Marcin-Wojtas/DSA-switch-to-fwnode_-device_/20220727-144515
base:    058affafc65a74cf54499fb578b66ad0b18f939b
:::::: branch date: 24 hours ago
:::::: commit date: 24 hours ago
config: i386-allyesconfig 
(https://download.01.org/0day-ci/archive/20220728/202207281516.7lNRXIgu-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0
reproduce (this is a W=1 build):
         # 
https://github.com/intel-lab-lkp/linux/commit/0cd0cba4df268433a47eb7d7e6c4b657dac14cbc
         git remote add linux-review https://github.com/intel-lab-lkp/linux
         git fetch --no-tags linux-review 
Marcin-Wojtas/DSA-switch-to-fwnode_-device_/20220727-144515
         git checkout 0cd0cba4df268433a47eb7d7e6c4b657dac14cbc
         # save the config file
         mkdir build_dir && cp config build_dir/.config
         make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash

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

All errors (new ones prefixed by >>):

    drivers/net/dsa/mt7530.c: In function 'mt7530_setup':
>> drivers/net/dsa/mt7530.c:2254:63: error: passing argument 2 of 'of_get_phy_mode' from incompatible pointer type [-Werror=incompatible-pointer-types]
     2254 |                                 ret = 
of_get_phy_mode(mac_np, &interface);
          | 
   ^~~~~~~~~~
          |                                                               |
          | 
   int *
    In file included from drivers/net/dsa/mt7530.c:15:
    include/linux/of_net.h:15:69: note: expected 'phy_interface_t *' but 
argument is of type 'int *'
       15 | extern int of_get_phy_mode(struct device_node *np, 
phy_interface_t *interface);
          | 
~~~~~~~~~~~~~~~~~^~~~~~~~~
    cc1: some warnings being treated as errors


vim +/of_get_phy_mode +2254 drivers/net/dsa/mt7530.c

ba751e28d442557 DENG Qingfang       2021-05-19  2103  b8f126a8d54318b 
Sean Wang           2017-04-07  2104  static int
b8f126a8d54318b Sean Wang           2017-04-07  2105 
mt7530_setup(struct dsa_switch *ds)
b8f126a8d54318b Sean Wang           2017-04-07  2106  {
b8f126a8d54318b Sean Wang           2017-04-07  2107  	struct 
mt7530_priv *priv = ds->priv;
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2108  	struct 
device_node *dn = NULL;
38f790a805609b2 René van Dorst      2019-09-02  2109  	struct 
device_node *phy_node;
38f790a805609b2 René van Dorst      2019-09-02  2110  	struct 
device_node *mac_np;
b8f126a8d54318b Sean Wang           2017-04-07  2111  	struct 
mt7530_dummy_poll p;
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2112  	struct dsa_port 
*cpu_dp;
0cd0cba4df26843 Marcin Wojtas       2022-07-27  2113  	int interface;
ca366d6c889b5d3 René van Dorst      2019-09-02  2114  	u32 id, val;
ca366d6c889b5d3 René van Dorst      2019-09-02  2115  	int ret, i;
b8f126a8d54318b Sean Wang           2017-04-07  2116  0abfd494deefdba 
Vivien Didelot      2017-09-20  2117  	/* The parent node of master 
netdev which holds the common system
b8f126a8d54318b Sean Wang           2017-04-07  2118  	 * controller 
also is the container for two GMACs nodes representing
b8f126a8d54318b Sean Wang           2017-04-07  2119  	 * as two netdev 
instances.
b8f126a8d54318b Sean Wang           2017-04-07  2120  	 */
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2121 
dsa_switch_for_each_cpu_port(cpu_dp, ds) {
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2122  		dn = 
cpu_dp->master->dev.of_node->parent;
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2123  		/* It doesn't 
matter which CPU port is found first,
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2124  		 * their masters 
should share the same parent OF node
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2125  		 */
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2126  		break;
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2127  	}
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2128  6e19bc26cccdd34 
Frank Wunderlich    2022-06-10  2129  	if (!dn) {
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2130  		dev_err(ds->dev, 
"parent OF node of DSA master not found");
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2131  		return -EINVAL;
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2132  	}
6e19bc26cccdd34 Frank Wunderlich    2022-06-10  2133  0b69c54c74bcb60 
DENG Qingfang       2021-08-04  2134  	ds->assisted_learning_on_cpu_port 
= true;
771c8901568dd87 DENG Qingfang       2020-12-11  2135 
ds->mtu_enforcement_ingress = true;
ddda1ac116c852b Greg Ungerer        2019-01-30  2136  ddda1ac116c852b 
Greg Ungerer        2019-01-30  2137  	if (priv->id == ID_MT7530) {
b8f126a8d54318b Sean Wang           2017-04-07  2138  	 
regulator_set_voltage(priv->core_pwr, 1000000, 1000000);
b8f126a8d54318b Sean Wang           2017-04-07  2139  		ret = 
regulator_enable(priv->core_pwr);
b8f126a8d54318b Sean Wang           2017-04-07  2140  		if (ret < 0) {
b8f126a8d54318b Sean Wang           2017-04-07  2141  			dev_err(priv->dev,
b8f126a8d54318b Sean Wang           2017-04-07  2142  				"Failed to 
enable core power: %d\n", ret);
b8f126a8d54318b Sean Wang           2017-04-07  2143  			return ret;
b8f126a8d54318b Sean Wang           2017-04-07  2144  		}
b8f126a8d54318b Sean Wang           2017-04-07  2145  b8f126a8d54318b 
Sean Wang           2017-04-07  2146  	 
regulator_set_voltage(priv->io_pwr, 3300000, 3300000);
b8f126a8d54318b Sean Wang           2017-04-07  2147  		ret = 
regulator_enable(priv->io_pwr);
b8f126a8d54318b Sean Wang           2017-04-07  2148  		if (ret < 0) {
b8f126a8d54318b Sean Wang           2017-04-07  2149  		 
dev_err(priv->dev, "Failed to enable io pwr: %d\n",
b8f126a8d54318b Sean Wang           2017-04-07  2150  				ret);
b8f126a8d54318b Sean Wang           2017-04-07  2151  			return ret;
b8f126a8d54318b Sean Wang           2017-04-07  2152  		}
ddda1ac116c852b Greg Ungerer        2019-01-30  2153  	}
b8f126a8d54318b Sean Wang           2017-04-07  2154  b8f126a8d54318b 
Sean Wang           2017-04-07  2155  	/* Reset whole chip through gpio 
pin or memory-mapped registers for
b8f126a8d54318b Sean Wang           2017-04-07  2156  	 * different type 
of hardware
b8f126a8d54318b Sean Wang           2017-04-07  2157  	 */
b8f126a8d54318b Sean Wang           2017-04-07  2158  	if (priv->mcm) {
b8f126a8d54318b Sean Wang           2017-04-07  2159  	 
reset_control_assert(priv->rstc);
b8f126a8d54318b Sean Wang           2017-04-07  2160  	 
usleep_range(1000, 1100);
b8f126a8d54318b Sean Wang           2017-04-07  2161  	 
reset_control_deassert(priv->rstc);
b8f126a8d54318b Sean Wang           2017-04-07  2162  	} else {
b8f126a8d54318b Sean Wang           2017-04-07  2163  	 
gpiod_set_value_cansleep(priv->reset, 0);
b8f126a8d54318b Sean Wang           2017-04-07  2164  	 
usleep_range(1000, 1100);
b8f126a8d54318b Sean Wang           2017-04-07  2165  	 
gpiod_set_value_cansleep(priv->reset, 1);
b8f126a8d54318b Sean Wang           2017-04-07  2166  	}
b8f126a8d54318b Sean Wang           2017-04-07  2167  b8f126a8d54318b 
Sean Wang           2017-04-07  2168  	/* Waiting for MT7530 got to 
stable */
b8f126a8d54318b Sean Wang           2017-04-07  2169 
INIT_MT7530_DUMMY_POLL(&p, priv, MT7530_HWTRAP);
b8f126a8d54318b Sean Wang           2017-04-07  2170  	ret = 
readx_poll_timeout(_mt7530_read, &p, val, val != 0,
b8f126a8d54318b Sean Wang           2017-04-07  2171  				 20, 1000000);
b8f126a8d54318b Sean Wang           2017-04-07  2172  	if (ret < 0) {
b8f126a8d54318b Sean Wang           2017-04-07  2173  	 
dev_err(priv->dev, "reset timeout\n");
b8f126a8d54318b Sean Wang           2017-04-07  2174  		return ret;
b8f126a8d54318b Sean Wang           2017-04-07  2175  	}
b8f126a8d54318b Sean Wang           2017-04-07  2176  b8f126a8d54318b 
Sean Wang           2017-04-07  2177  	id = mt7530_read(priv, MT7530_CREV);
b8f126a8d54318b Sean Wang           2017-04-07  2178  	id >>= 
CHIP_NAME_SHIFT;
b8f126a8d54318b Sean Wang           2017-04-07  2179  	if (id != 
MT7530_ID) {
b8f126a8d54318b Sean Wang           2017-04-07  2180  	 
dev_err(priv->dev, "chip %x can't be supported\n", id);
b8f126a8d54318b Sean Wang           2017-04-07  2181  		return -ENODEV;
b8f126a8d54318b Sean Wang           2017-04-07  2182  	}
b8f126a8d54318b Sean Wang           2017-04-07  2183  b8f126a8d54318b 
Sean Wang           2017-04-07  2184  	/* Reset the switch through 
internal reset */
b8f126a8d54318b Sean Wang           2017-04-07  2185 
mt7530_write(priv, MT7530_SYS_CTRL,
b8f126a8d54318b Sean Wang           2017-04-07  2186  		 
SYS_CTRL_PHY_RST | SYS_CTRL_SW_RST |
b8f126a8d54318b Sean Wang           2017-04-07  2187  		 
SYS_CTRL_REG_RST);
b8f126a8d54318b Sean Wang           2017-04-07  2188  b8f126a8d54318b 
Sean Wang           2017-04-07  2189  	/* Enable Port 6 only; P5 as 
GMAC5 which currently is not supported */
b8f126a8d54318b Sean Wang           2017-04-07  2190  	val = 
mt7530_read(priv, MT7530_MHWTRAP);
b8f126a8d54318b Sean Wang           2017-04-07  2191  	val &= 
~MHWTRAP_P6_DIS & ~MHWTRAP_PHY_ACCESS;
b8f126a8d54318b Sean Wang           2017-04-07  2192  	val |= 
MHWTRAP_MANUAL;
b8f126a8d54318b Sean Wang           2017-04-07  2193 
mt7530_write(priv, MT7530_MHWTRAP, val);
b8f126a8d54318b Sean Wang           2017-04-07  2194  ca366d6c889b5d3 
René van Dorst      2019-09-02  2195  	priv->p6_interface = 
PHY_INTERFACE_MODE_NA;
ca366d6c889b5d3 René van Dorst      2019-09-02  2196  b8f126a8d54318b 
Sean Wang           2017-04-07  2197  	/* Enable and reset MIB counters */
b8f126a8d54318b Sean Wang           2017-04-07  2198  	mt7530_mib_reset(ds);
b8f126a8d54318b Sean Wang           2017-04-07  2199  b8f126a8d54318b 
Sean Wang           2017-04-07  2200  	for (i = 0; i < MT7530_NUM_PORTS; 
i++) {
b8f126a8d54318b Sean Wang           2017-04-07  2201  		/* Disable 
forwarding by default on all ports */
b8f126a8d54318b Sean Wang           2017-04-07  2202  		mt7530_rmw(priv, 
MT7530_PCR_P(i), PCR_MATRIX_MASK,
b8f126a8d54318b Sean Wang           2017-04-07  2203  			   PCR_MATRIX_CLR);
b8f126a8d54318b Sean Wang           2017-04-07  2204  0b69c54c74bcb60 
DENG Qingfang       2021-08-04  2205  		/* Disable learning by default 
on all ports */
0b69c54c74bcb60 DENG Qingfang       2021-08-04  2206  		mt7530_set(priv, 
MT7530_PSC_P(i), SA_DIS);
0b69c54c74bcb60 DENG Qingfang       2021-08-04  2207  0ce0c3cd2239502 
Alex Dewar          2020-09-19  2208  		if (dsa_is_cpu_port(ds, i)) {
0ce0c3cd2239502 Alex Dewar          2020-09-19  2209  			ret = 
mt753x_cpu_port_enable(ds, i);
0ce0c3cd2239502 Alex Dewar          2020-09-19  2210  			if (ret)
0ce0c3cd2239502 Alex Dewar          2020-09-19  2211  				return ret;
5a30833b9a16f8d DENG Qingfang       2021-03-16  2212  		} else {
75104db0cb353ec Andrew Lunn         2019-02-24  2213  		 
mt7530_port_disable(ds, i);
6087175b7991a90 DENG Qingfang       2021-08-04  2214  6087175b7991a90 
DENG Qingfang       2021-08-04  2215  			/* Set default PVID to 0 on all 
user ports */
6087175b7991a90 DENG Qingfang       2021-08-04  2216  		 
mt7530_rmw(priv, MT7530_PPBV1_P(i), G0_PORT_VID_MASK,
6087175b7991a90 DENG Qingfang       2021-08-04  2217  				 
G0_PORT_VID_DEF);
5a30833b9a16f8d DENG Qingfang       2021-03-16  2218  		}
e045124e93995fe DENG Qingfang       2020-04-14  2219  		/* Enable 
consistent egress tag */
e045124e93995fe DENG Qingfang       2020-04-14  2220  		mt7530_rmw(priv, 
MT7530_PVC_P(i), PVC_EG_TAG_MASK,
e045124e93995fe DENG Qingfang       2020-04-14  2221  			 
PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT));
b8f126a8d54318b Sean Wang           2017-04-07  2222  	}
b8f126a8d54318b Sean Wang           2017-04-07  2223  1ca8a193cade7f4 
DENG Qingfang       2021-08-25  2224  	/* Setup VLAN ID 0 for 
VLAN-unaware bridges */
1ca8a193cade7f4 DENG Qingfang       2021-08-25  2225  	ret = 
mt7530_setup_vlan0(priv);
1ca8a193cade7f4 DENG Qingfang       2021-08-25  2226  	if (ret)
1ca8a193cade7f4 DENG Qingfang       2021-08-25  2227  		return ret;
1ca8a193cade7f4 DENG Qingfang       2021-08-25  2228  38f790a805609b2 
René van Dorst      2019-09-02  2229  	/* Setup port 5 */
38f790a805609b2 René van Dorst      2019-09-02  2230  	priv->p5_intf_sel 
= P5_DISABLED;
38f790a805609b2 René van Dorst      2019-09-02  2231  	interface = 
PHY_INTERFACE_MODE_NA;
38f790a805609b2 René van Dorst      2019-09-02  2232  38f790a805609b2 
René van Dorst      2019-09-02  2233  	if (!dsa_is_unused_port(ds, 5)) {
38f790a805609b2 René van Dorst      2019-09-02  2234  	 
priv->p5_intf_sel = P5_INTF_SEL_GMAC5;
0cd0cba4df26843 Marcin Wojtas       2022-07-27  2235  		interface = 
fwnode_get_phy_mode(dsa_to_port(ds, 5)->fwnode);
0cd0cba4df26843 Marcin Wojtas       2022-07-27  2236  		if (interface < 0)
0c65b2b90d13c1d Andrew Lunn         2019-11-04  2237  			return ret;
38f790a805609b2 René van Dorst      2019-09-02  2238  	} else {
38f790a805609b2 René van Dorst      2019-09-02  2239  		/* Scan the 
ethernet nodes. look for GMAC1, lookup used phy */
38f790a805609b2 René van Dorst      2019-09-02  2240  	 
for_each_child_of_node(dn, mac_np) {
38f790a805609b2 René van Dorst      2019-09-02  2241  			if 
(!of_device_is_compatible(mac_np,
38f790a805609b2 René van Dorst      2019-09-02  2242  						 
"mediatek,eth-mac"))
38f790a805609b2 René van Dorst      2019-09-02  2243  				continue;
38f790a805609b2 René van Dorst      2019-09-02  2244  38f790a805609b2 
René van Dorst      2019-09-02  2245  			ret = 
of_property_read_u32(mac_np, "reg", &id);
38f790a805609b2 René van Dorst      2019-09-02  2246  			if (ret < 0 || 
id != 1)
38f790a805609b2 René van Dorst      2019-09-02  2247  				continue;
38f790a805609b2 René van Dorst      2019-09-02  2248  38f790a805609b2 
René van Dorst      2019-09-02  2249  			phy_node = 
of_parse_phandle(mac_np, "phy-handle", 0);
0452800f6db4ed0 Chuanhong Guo       2020-04-03  2250  			if (!phy_node)
0452800f6db4ed0 Chuanhong Guo       2020-04-03  2251  				continue;
0452800f6db4ed0 Chuanhong Guo       2020-04-03  2252  38f790a805609b2 
René van Dorst      2019-09-02  2253  			if (phy_node->parent == 
priv->dev->of_node->parent) {
0c65b2b90d13c1d Andrew Lunn         2019-11-04 @2254  				ret = 
of_get_phy_mode(mac_np, &interface);
8e4efd4706f77d7 Sumera Priyadarsini 2020-08-25  2255  				if (ret && ret 
!= -ENODEV) {
8e4efd4706f77d7 Sumera Priyadarsini 2020-08-25  2256  				 
of_node_put(mac_np);
a9e9b091a1c14ec Yang Yingliang      2022-04-28  2257  				 
of_node_put(phy_node);
0c65b2b90d13c1d Andrew Lunn         2019-11-04  2258  					return ret;
8e4efd4706f77d7 Sumera Priyadarsini 2020-08-25  2259  				}
38f790a805609b2 René van Dorst      2019-09-02  2260  				id = 
of_mdio_parse_addr(ds->dev, phy_node);
38f790a805609b2 René van Dorst      2019-09-02  2261  				if (id == 0)
38f790a805609b2 René van Dorst      2019-09-02  2262  				 
priv->p5_intf_sel = P5_INTF_SEL_PHY_P0;
38f790a805609b2 René van Dorst      2019-09-02  2263  				if (id == 4)
38f790a805609b2 René van Dorst      2019-09-02  2264  				 
priv->p5_intf_sel = P5_INTF_SEL_PHY_P4;
38f790a805609b2 René van Dorst      2019-09-02  2265  			}
8e4efd4706f77d7 Sumera Priyadarsini 2020-08-25  2266  		 
of_node_put(mac_np);
38f790a805609b2 René van Dorst      2019-09-02  2267  		 
of_node_put(phy_node);
38f790a805609b2 René van Dorst      2019-09-02  2268  			break;
38f790a805609b2 René van Dorst      2019-09-02  2269  		}
38f790a805609b2 René van Dorst      2019-09-02  2270  	}
38f790a805609b2 René van Dorst      2019-09-02  2271
-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [net-next: PATCH v3 3/8] net: dsa: switch to device_/fwnode_ APIs
  2022-07-27  6:43 ` [net-next: PATCH v3 3/8] net: dsa: switch to device_/fwnode_ APIs Marcin Wojtas
@ 2022-07-27 11:29   ` Andy Shevchenko
  0 siblings, 0 replies; 4+ messages in thread
From: Andy Shevchenko @ 2022-07-27 11:29 UTC (permalink / raw)
  To: Marcin Wojtas
  Cc: linux-kernel, linux-acpi, netdev, rafael, sean.wang, Landen.Chao,
	linus.walleij, andrew, vivien.didelot, f.fainelli, olteanv,
	davem, edumazet, kuba, pabeni, linux, hkallweit1, gjb, jaz, tn,
	Samer.El-Haj-Mahmoud, upstream

On Wed, Jul 27, 2022 at 08:43:16AM +0200, Marcin Wojtas wrote:
> In order to support both DT and ACPI in future, modify the generic DSA
> code to use device_/fwnode_ equivalent routines. Drop using port's 'dn'
> field and use only fwnode - update all dependent drivers.
> 
> Because support for more generic fwnode is added, replace '_of' suffix
> with '_fw' in related routines. No functional change is introduced by
> this patch.

...

>  static int mv88e6xxx_setup_port(struct mv88e6xxx_chip *chip, int port)
>  {
> -	struct device_node *phy_handle = NULL;
> +	struct fwnode_handle *phy_handle = NULL;
>  	struct dsa_switch *ds = chip->ds;
>  	phy_interface_t mode;
>  	struct dsa_port *dp;
> @@ -3499,15 +3499,15 @@ static int mv88e6xxx_setup_port(struct mv88e6xxx_chip *chip, int port)
>  
>  	if (chip->info->ops->serdes_set_tx_amplitude) {
>  		if (dp)
> -			phy_handle = of_parse_phandle(dp->dn, "phy-handle", 0);
> +			phy_handle = fwnode_find_reference(dp->fwnode, "phy-handle", 0);
>  
> -		if (phy_handle && !of_property_read_u32(phy_handle,
> -							"tx-p2p-microvolt",
> -							&tx_amp))
> +		if (!IS_ERR(phy_handle) && !fwnode_property_read_u32(phy_handle,
> +								     "tx-p2p-microvolt",
> +								     &tx_amp))
>  			err = chip->info->ops->serdes_set_tx_amplitude(chip,
>  								port, tx_amp);
> -		if (phy_handle) {
> -			of_node_put(phy_handle);
> +		if (!IS_ERR(phy_handle)) {
> +			fwnode_handle_put(phy_handle);
>  			if (err)
>  				return err;
>  		}

I believe after 002752af7b89 ("device property: Allow error pointer to be
passed to fwnode APIs") you may simplify above like:

		if (!fwnode_property_read_u32(phy_handle, "tx-p2p-microvolt",
					      &tx_amp))
			err = chip->info->ops->serdes_set_tx_amplitude(chip,
								port, tx_amp);
		else
			err = 0;
		fwnode_handle_put(phy_handle);
		if (err)
			return err;

It also possible you can do refactoring before/after this one.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [net-next: PATCH v3 3/8] net: dsa: switch to device_/fwnode_ APIs
  2022-07-27  6:43 [net-next: PATCH v3 0/8] DSA: switch to fwnode_/device_ Marcin Wojtas
@ 2022-07-27  6:43 ` Marcin Wojtas
  2022-07-27 11:29   ` Andy Shevchenko
  0 siblings, 1 reply; 4+ messages in thread
From: Marcin Wojtas @ 2022-07-27  6:43 UTC (permalink / raw)
  To: linux-kernel, linux-acpi, netdev
  Cc: rafael, andriy.shevchenko, sean.wang, Landen.Chao, linus.walleij,
	andrew, vivien.didelot, f.fainelli, olteanv, davem, edumazet,
	kuba, pabeni, linux, hkallweit1, gjb, mw, jaz, tn,
	Samer.El-Haj-Mahmoud, upstream

In order to support both DT and ACPI in future, modify the generic DSA
code to use device_/fwnode_ equivalent routines. Drop using port's 'dn'
field and use only fwnode - update all dependent drivers.

Because support for more generic fwnode is added, replace '_of' suffix
with '_fw' in related routines. No functional change is introduced by
this patch.

Signed-off-by: Marcin Wojtas <mw@semihalf.com>
---
 include/net/dsa.h                   |   2 +-
 net/dsa/dsa_priv.h                  |   4 +-
 drivers/net/dsa/mt7530.c            |   6 +-
 drivers/net/dsa/mv88e6xxx/chip.c    |  14 +--
 drivers/net/dsa/qca/qca8k.c         |   2 +-
 drivers/net/dsa/realtek/rtl8365mb.c |   2 +-
 net/dsa/dsa2.c                      | 100 +++++++++++---------
 net/dsa/port.c                      |  68 +++++++------
 net/dsa/slave.c                     |   7 +-
 9 files changed, 103 insertions(+), 102 deletions(-)

diff --git a/include/net/dsa.h b/include/net/dsa.h
index b902b31bebce..0a328c0073ec 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -302,7 +302,7 @@ struct dsa_port {
 
 	u8			setup:1;
 
-	struct device_node	*dn;
+	struct fwnode_handle    *fwnode;
 	unsigned int		ageing_time;
 
 	struct dsa_bridge	*bridge;
diff --git a/net/dsa/dsa_priv.h b/net/dsa/dsa_priv.h
index d9722e49864b..2c0034a915ee 100644
--- a/net/dsa/dsa_priv.h
+++ b/net/dsa/dsa_priv.h
@@ -285,8 +285,8 @@ int dsa_port_mrp_add_ring_role(const struct dsa_port *dp,
 int dsa_port_mrp_del_ring_role(const struct dsa_port *dp,
 			       const struct switchdev_obj_ring_role_mrp *mrp);
 int dsa_port_phylink_create(struct dsa_port *dp);
-int dsa_port_link_register_of(struct dsa_port *dp);
-void dsa_port_link_unregister_of(struct dsa_port *dp);
+int dsa_port_link_register_fw(struct dsa_port *dp);
+void dsa_port_link_unregister_fw(struct dsa_port *dp);
 int dsa_port_hsr_join(struct dsa_port *dp, struct net_device *hsr);
 void dsa_port_hsr_leave(struct dsa_port *dp, struct net_device *hsr);
 int dsa_port_tag_8021q_vlan_add(struct dsa_port *dp, u16 vid, bool broadcast);
diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
index 835807911be0..427b66342493 100644
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
@@ -2109,8 +2109,8 @@ mt7530_setup(struct dsa_switch *ds)
 	struct device_node *phy_node;
 	struct device_node *mac_np;
 	struct mt7530_dummy_poll p;
-	phy_interface_t interface;
 	struct dsa_port *cpu_dp;
+	int interface;
 	u32 id, val;
 	int ret, i;
 
@@ -2232,8 +2232,8 @@ mt7530_setup(struct dsa_switch *ds)
 
 	if (!dsa_is_unused_port(ds, 5)) {
 		priv->p5_intf_sel = P5_INTF_SEL_GMAC5;
-		ret = of_get_phy_mode(dsa_to_port(ds, 5)->dn, &interface);
-		if (ret && ret != -ENODEV)
+		interface = fwnode_get_phy_mode(dsa_to_port(ds, 5)->fwnode);
+		if (interface < 0)
 			return ret;
 	} else {
 		/* Scan the ethernet nodes. look for GMAC1, lookup used phy */
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 07e9a4da924c..a46ebdfba1c3 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -3275,7 +3275,7 @@ static int mv88e6xxx_setup_upstream_port(struct mv88e6xxx_chip *chip, int port)
 
 static int mv88e6xxx_setup_port(struct mv88e6xxx_chip *chip, int port)
 {
-	struct device_node *phy_handle = NULL;
+	struct fwnode_handle *phy_handle = NULL;
 	struct dsa_switch *ds = chip->ds;
 	phy_interface_t mode;
 	struct dsa_port *dp;
@@ -3499,15 +3499,15 @@ static int mv88e6xxx_setup_port(struct mv88e6xxx_chip *chip, int port)
 
 	if (chip->info->ops->serdes_set_tx_amplitude) {
 		if (dp)
-			phy_handle = of_parse_phandle(dp->dn, "phy-handle", 0);
+			phy_handle = fwnode_find_reference(dp->fwnode, "phy-handle", 0);
 
-		if (phy_handle && !of_property_read_u32(phy_handle,
-							"tx-p2p-microvolt",
-							&tx_amp))
+		if (!IS_ERR(phy_handle) && !fwnode_property_read_u32(phy_handle,
+								     "tx-p2p-microvolt",
+								     &tx_amp))
 			err = chip->info->ops->serdes_set_tx_amplitude(chip,
 								port, tx_amp);
-		if (phy_handle) {
-			of_node_put(phy_handle);
+		if (!IS_ERR(phy_handle)) {
+			fwnode_handle_put(phy_handle);
 			if (err)
 				return err;
 		}
diff --git a/drivers/net/dsa/qca/qca8k.c b/drivers/net/dsa/qca/qca8k.c
index 1cbb05b0323f..77b14ade0828 100644
--- a/drivers/net/dsa/qca/qca8k.c
+++ b/drivers/net/dsa/qca/qca8k.c
@@ -1517,7 +1517,7 @@ qca8k_parse_port_config(struct qca8k_priv *priv)
 			continue;
 
 		dp = dsa_to_port(priv->ds, port);
-		port_dn = dp->dn;
+		port_dn = to_of_node(dp->fwnode);
 		cpu_port_index++;
 
 		if (!of_device_is_available(port_dn))
diff --git a/drivers/net/dsa/realtek/rtl8365mb.c b/drivers/net/dsa/realtek/rtl8365mb.c
index da31d8b839ac..d61da012451f 100644
--- a/drivers/net/dsa/realtek/rtl8365mb.c
+++ b/drivers/net/dsa/realtek/rtl8365mb.c
@@ -887,7 +887,7 @@ static int rtl8365mb_ext_config_rgmii(struct realtek_priv *priv, int port,
 		return -ENODEV;
 
 	dp = dsa_to_port(priv->ds, port);
-	dn = dp->dn;
+	dn = to_of_node(dp->fwnode);
 
 	/* Set the RGMII TX/RX delay
 	 *
diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c
index cac48a741f27..82fb3b009fb4 100644
--- a/net/dsa/dsa2.c
+++ b/net/dsa/dsa2.c
@@ -296,12 +296,12 @@ static void dsa_tree_put(struct dsa_switch_tree *dst)
 }
 
 static struct dsa_port *dsa_tree_find_port_by_node(struct dsa_switch_tree *dst,
-						   struct device_node *dn)
+						   struct fwnode_handle *fwnode)
 {
 	struct dsa_port *dp;
 
 	list_for_each_entry(dp, &dst->ports, list)
-		if (dp->dn == dn)
+		if (dp->fwnode == fwnode)
 			return dp;
 
 	return NULL;
@@ -337,14 +337,13 @@ static bool dsa_port_setup_routing_table(struct dsa_port *dp)
 {
 	struct dsa_switch *ds = dp->ds;
 	struct dsa_switch_tree *dst = ds->dst;
-	struct device_node *dn = dp->dn;
 	struct of_phandle_iterator it;
 	struct dsa_port *link_dp;
 	struct dsa_link *dl;
 	int err;
 
-	of_for_each_phandle(&it, err, dn, "link", NULL, 0) {
-		link_dp = dsa_tree_find_port_by_node(dst, it.node);
+	of_for_each_phandle(&it, err, to_of_node(dp->fwnode), "link", NULL, 0) {
+		link_dp = dsa_tree_find_port_by_node(dst, of_fwnode_handle(it.node));
 		if (!link_dp) {
 			of_node_put(it.node);
 			return false;
@@ -469,7 +468,7 @@ static int dsa_port_setup(struct dsa_port *dp)
 		dsa_port_disable(dp);
 		break;
 	case DSA_PORT_TYPE_CPU:
-		err = dsa_port_link_register_of(dp);
+		err = dsa_port_link_register_fw(dp);
 		if (err)
 			break;
 		dsa_port_link_registered = true;
@@ -481,7 +480,7 @@ static int dsa_port_setup(struct dsa_port *dp)
 
 		break;
 	case DSA_PORT_TYPE_DSA:
-		err = dsa_port_link_register_of(dp);
+		err = dsa_port_link_register_fw(dp);
 		if (err)
 			break;
 		dsa_port_link_registered = true;
@@ -493,7 +492,7 @@ static int dsa_port_setup(struct dsa_port *dp)
 
 		break;
 	case DSA_PORT_TYPE_USER:
-		of_get_mac_address(dp->dn, dp->mac);
+		fwnode_get_mac_address(dp->fwnode, dp->mac);
 		err = dsa_slave_create(dp);
 		if (err)
 			break;
@@ -505,7 +504,7 @@ static int dsa_port_setup(struct dsa_port *dp)
 	if (err && dsa_port_enabled)
 		dsa_port_disable(dp);
 	if (err && dsa_port_link_registered)
-		dsa_port_link_unregister_of(dp);
+		dsa_port_link_unregister_fw(dp);
 	if (err) {
 		if (ds->ops->port_teardown)
 			ds->ops->port_teardown(ds, dp->index);
@@ -577,11 +576,11 @@ static void dsa_port_teardown(struct dsa_port *dp)
 		break;
 	case DSA_PORT_TYPE_CPU:
 		dsa_port_disable(dp);
-		dsa_port_link_unregister_of(dp);
+		dsa_port_link_unregister_fw(dp);
 		break;
 	case DSA_PORT_TYPE_DSA:
 		dsa_port_disable(dp);
-		dsa_port_link_unregister_of(dp);
+		dsa_port_link_unregister_fw(dp);
 		break;
 	case DSA_PORT_TYPE_USER:
 		if (dp->slave) {
@@ -853,7 +852,7 @@ static int dsa_switch_setup_tag_protocol(struct dsa_switch *ds)
 static int dsa_switch_setup(struct dsa_switch *ds)
 {
 	struct dsa_devlink_priv *dl_priv;
-	struct device_node *dn;
+	struct fwnode_handle *fwnode;
 	struct dsa_port *dp;
 	int err;
 
@@ -909,10 +908,10 @@ static int dsa_switch_setup(struct dsa_switch *ds)
 
 		dsa_slave_mii_bus_init(ds);
 
-		dn = of_get_child_by_name(ds->dev->of_node, "mdio");
+		fwnode = device_get_named_child_node(ds->dev, "mdio");
 
-		err = of_mdiobus_register(ds->slave_mii_bus, dn);
-		of_node_put(dn);
+		err = of_mdiobus_register(ds->slave_mii_bus, to_of_node(fwnode));
+		fwnode_handle_put(fwnode);
 		if (err < 0)
 			goto free_slave_mii_bus;
 	}
@@ -1482,24 +1481,33 @@ static int dsa_port_parse_cpu(struct dsa_port *dp, struct net_device *master,
 	return 0;
 }
 
-static int dsa_port_parse_of(struct dsa_port *dp, struct device_node *dn)
+static int dsa_port_parse_fw(struct dsa_port *dp, struct fwnode_handle *fwnode)
 {
-	struct device_node *ethernet = of_parse_phandle(dn, "ethernet", 0);
-	const char *name = of_get_property(dn, "label", NULL);
-	bool link = of_property_read_bool(dn, "link");
+	struct fwnode_handle *ethernet = fwnode_find_reference(fwnode, "ethernet", 0);
+	bool link = fwnode_property_present(fwnode, "link");
+	const char *name;
+	int ret;
+
+	ret = fwnode_property_read_string(fwnode, "label", &name);
+	if (ret)
+		return ret;
 
-	dp->dn = dn;
+	dp->fwnode = fwnode;
 
-	if (ethernet) {
+	if (!IS_ERR(ethernet)) {
 		struct net_device *master;
 		const char *user_protocol;
 
-		master = of_find_net_device_by_node(ethernet);
-		of_node_put(ethernet);
+		master = of_find_net_device_by_node(to_of_node(ethernet));
+		fwnode_handle_put(ethernet);
 		if (!master)
 			return -EPROBE_DEFER;
 
-		user_protocol = of_get_property(dn, "dsa-tag-protocol", NULL);
+		ret = fwnode_property_read_string(fwnode, "dsa-tag-protocol",
+						  &user_protocol);
+		if (ret)
+			user_protocol = NULL;
+
 		return dsa_port_parse_cpu(dp, master, user_protocol);
 	}
 
@@ -1509,61 +1517,61 @@ static int dsa_port_parse_of(struct dsa_port *dp, struct device_node *dn)
 	return dsa_port_parse_user(dp, name);
 }
 
-static int dsa_switch_parse_ports_of(struct dsa_switch *ds,
-				     struct device_node *dn)
+static int dsa_switch_parse_ports_fw(struct dsa_switch *ds,
+				     struct fwnode_handle *fwnode)
 {
-	struct device_node *ports, *port;
+	struct fwnode_handle *ports, *port;
 	struct dsa_port *dp;
 	int err = 0;
 	u32 reg;
 
-	ports = of_get_child_by_name(dn, "ports");
+	ports = fwnode_get_named_child_node(fwnode, "ports");
 	if (!ports) {
 		/* The second possibility is "ethernet-ports" */
-		ports = of_get_child_by_name(dn, "ethernet-ports");
+		ports = fwnode_get_named_child_node(fwnode, "ethernet-ports");
 		if (!ports) {
 			dev_err(ds->dev, "no ports child node found\n");
 			return -EINVAL;
 		}
 	}
 
-	for_each_available_child_of_node(ports, port) {
-		err = of_property_read_u32(port, "reg", &reg);
+	fwnode_for_each_available_child_node(ports, port) {
+		err = fwnode_property_read_u32(port, "reg", &reg);
 		if (err) {
-			of_node_put(port);
+			fwnode_handle_put(port);
 			goto out_put_node;
 		}
 
 		if (reg >= ds->num_ports) {
 			dev_err(ds->dev, "port %pOF index %u exceeds num_ports (%u)\n",
 				port, reg, ds->num_ports);
-			of_node_put(port);
+			fwnode_handle_put(port);
 			err = -EINVAL;
 			goto out_put_node;
 		}
 
 		dp = dsa_to_port(ds, reg);
 
-		err = dsa_port_parse_of(dp, port);
+		err = dsa_port_parse_fw(dp, port);
 		if (err) {
-			of_node_put(port);
+			fwnode_handle_put(port);
 			goto out_put_node;
 		}
 	}
 
 out_put_node:
-	of_node_put(ports);
+	fwnode_handle_put(ports);
 	return err;
 }
 
-static int dsa_switch_parse_member_of(struct dsa_switch *ds,
-				      struct device_node *dn)
+static int dsa_switch_parse_member_fw(struct dsa_switch *ds,
+				      struct fwnode_handle *fwnode)
 {
 	u32 m[2] = { 0, 0 };
 	int sz;
 
 	/* Don't error out if this optional property isn't found */
-	sz = of_property_read_variable_u32_array(dn, "dsa,member", m, 2, 2);
+	sz = fwnode_property_read_u32_array(fwnode, "dsa,member", m, 2);
 	if (sz < 0 && sz != -EINVAL)
 		return sz;
 
@@ -1600,11 +1608,11 @@ static int dsa_switch_touch_ports(struct dsa_switch *ds)
 	return 0;
 }
 
-static int dsa_switch_parse_of(struct dsa_switch *ds, struct device_node *dn)
+static int dsa_switch_parse_fw(struct dsa_switch *ds, struct fwnode_handle *fwnode)
 {
 	int err;
 
-	err = dsa_switch_parse_member_of(ds, dn);
+	err = dsa_switch_parse_member_fw(ds, fwnode);
 	if (err)
 		return err;
 
@@ -1612,7 +1620,7 @@ static int dsa_switch_parse_of(struct dsa_switch *ds, struct device_node *dn)
 	if (err)
 		return err;
 
-	return dsa_switch_parse_ports_of(ds, dn);
+	return dsa_switch_parse_ports_fw(ds, fwnode);
 }
 
 static int dsa_port_parse(struct dsa_port *dp, const char *name,
@@ -1705,20 +1713,20 @@ static int dsa_switch_probe(struct dsa_switch *ds)
 {
 	struct dsa_switch_tree *dst;
 	struct dsa_chip_data *pdata;
-	struct device_node *np;
+	struct fwnode_handle *fwnode;
 	int err;
 
 	if (!ds->dev)
 		return -ENODEV;
 
 	pdata = ds->dev->platform_data;
-	np = ds->dev->of_node;
+	fwnode = dev_fwnode(ds->dev);
 
 	if (!ds->num_ports)
 		return -EINVAL;
 
-	if (np) {
-		err = dsa_switch_parse_of(ds, np);
+	if (fwnode) {
+		err = dsa_switch_parse_fw(ds, fwnode);
 		if (err)
 			dsa_switch_release_ports(ds);
 	} else if (pdata) {
diff --git a/net/dsa/port.c b/net/dsa/port.c
index 2dd76eb1621c..40c7d1d9b488 100644
--- a/net/dsa/port.c
+++ b/net/dsa/port.c
@@ -6,10 +6,9 @@
  *	Vivien Didelot <vivien.didelot@savoirfairelinux.com>
  */
 
+#include <linux/fwnode_mdio.h>
 #include <linux/if_bridge.h>
 #include <linux/notifier.h>
-#include <linux/of_mdio.h>
-#include <linux/of_net.h>
 
 #include "dsa_priv.h"
 
@@ -1380,20 +1379,20 @@ void dsa_port_set_tag_protocol(struct dsa_port *cpu_dp,
 
 static struct phy_device *dsa_port_get_phy_device(struct dsa_port *dp)
 {
-	struct device_node *phy_dn;
+	struct fwnode_handle *phy_handle;
 	struct phy_device *phydev;
 
-	phy_dn = of_parse_phandle(dp->dn, "phy-handle", 0);
-	if (!phy_dn)
+	phy_handle = fwnode_find_reference(dp->fwnode, "phy-handle", 0);
+	if (IS_ERR(phy_handle))
 		return NULL;
 
-	phydev = of_phy_find_device(phy_dn);
+	phydev = fwnode_phy_find_device(phy_handle);
 	if (!phydev) {
-		of_node_put(phy_dn);
+		fwnode_handle_put(phy_handle);
 		return ERR_PTR(-EPROBE_DEFER);
 	}
 
-	of_node_put(phy_dn);
+	fwnode_handle_put(phy_handle);
 	return phydev;
 }
 
@@ -1525,11 +1524,10 @@ static const struct phylink_mac_ops dsa_port_phylink_mac_ops = {
 int dsa_port_phylink_create(struct dsa_port *dp)
 {
 	struct dsa_switch *ds = dp->ds;
-	phy_interface_t mode;
-	int err;
+	int mode;
 
-	err = of_get_phy_mode(dp->dn, &mode);
-	if (err)
+	mode = fwnode_get_phy_mode(dp->fwnode);
+	if (mode < 0)
 		mode = PHY_INTERFACE_MODE_NA;
 
 	/* Presence of phylink_mac_link_state or phylink_mac_an_restart is
@@ -1542,7 +1540,7 @@ int dsa_port_phylink_create(struct dsa_port *dp)
 	if (ds->ops->phylink_get_caps)
 		ds->ops->phylink_get_caps(ds, dp->index, &dp->pl_config);
 
-	dp->pl = phylink_create(&dp->pl_config, of_fwnode_handle(dp->dn),
+	dp->pl = phylink_create(&dp->pl_config, dp->fwnode,
 				mode, &dsa_port_phylink_mac_ops);
 	if (IS_ERR(dp->pl)) {
 		pr_err("error creating PHYLINK: %ld\n", PTR_ERR(dp->pl));
@@ -1552,7 +1550,7 @@ int dsa_port_phylink_create(struct dsa_port *dp)
 	return 0;
 }
 
-static int dsa_port_setup_phy_of(struct dsa_port *dp, bool enable)
+static int dsa_port_setup_phy_fw(struct dsa_port *dp, bool enable)
 {
 	struct dsa_switch *ds = dp->ds;
 	struct phy_device *phydev;
@@ -1590,16 +1588,15 @@ static int dsa_port_setup_phy_of(struct dsa_port *dp, bool enable)
 	return err;
 }
 
-static int dsa_port_fixed_link_register_of(struct dsa_port *dp)
+static int dsa_port_fixed_link_register_fw(struct dsa_port *dp)
 {
-	struct device_node *dn = dp->dn;
 	struct dsa_switch *ds = dp->ds;
 	struct phy_device *phydev;
 	int port = dp->index;
-	phy_interface_t mode;
+	int mode;
 	int err;
 
-	err = of_phy_register_fixed_link(dn);
+	err = fwnode_phy_register_fixed_link(dp->fwnode);
 	if (err) {
 		dev_err(ds->dev,
 			"failed to register the fixed PHY of port %d\n",
@@ -1607,10 +1604,10 @@ static int dsa_port_fixed_link_register_of(struct dsa_port *dp)
 		return err;
 	}
 
-	phydev = of_phy_find_device(dn);
+	phydev = fwnode_phy_find_device(dp->fwnode);
 
-	err = of_get_phy_mode(dn, &mode);
-	if (err)
+	mode = fwnode_get_phy_mode(dp->fwnode);
+	if (mode < 0)
 		mode = PHY_INTERFACE_MODE_NA;
 	phydev->interface = mode;
 
@@ -1627,7 +1624,6 @@ static int dsa_port_fixed_link_register_of(struct dsa_port *dp)
 static int dsa_port_phylink_register(struct dsa_port *dp)
 {
 	struct dsa_switch *ds = dp->ds;
-	struct device_node *port_dn = dp->dn;
 	int err;
 
 	dp->pl_config.dev = ds->dev;
@@ -1637,7 +1633,7 @@ static int dsa_port_phylink_register(struct dsa_port *dp)
 	if (err)
 		return err;
 
-	err = phylink_of_phy_connect(dp->pl, port_dn, 0);
+	err = phylink_fwnode_phy_connect(dp->pl, dp->fwnode, 0);
 	if (err && err != -ENODEV) {
 		pr_err("could not attach to PHY: %d\n", err);
 		goto err_phy_connect;
@@ -1650,35 +1646,35 @@ static int dsa_port_phylink_register(struct dsa_port *dp)
 	return err;
 }
 
-int dsa_port_link_register_of(struct dsa_port *dp)
+int dsa_port_link_register_fw(struct dsa_port *dp)
 {
+	struct fwnode_handle *phy_handle;
 	struct dsa_switch *ds = dp->ds;
-	struct device_node *phy_np;
 	int port = dp->index;
 
 	if (!ds->ops->adjust_link) {
-		phy_np = of_parse_phandle(dp->dn, "phy-handle", 0);
-		if (of_phy_is_fixed_link(dp->dn) || phy_np) {
+		phy_handle = fwnode_find_reference(dp->fwnode, "phy-handle", 0);
+		if (fwnode_phy_is_fixed_link(dp->fwnode) || !IS_ERR(phy_handle)) {
 			if (ds->ops->phylink_mac_link_down)
 				ds->ops->phylink_mac_link_down(ds, port,
 					MLO_AN_FIXED, PHY_INTERFACE_MODE_NA);
-			of_node_put(phy_np);
+			fwnode_handle_put(dp->fwnode);
 			return dsa_port_phylink_register(dp);
 		}
-		of_node_put(phy_np);
+		fwnode_handle_put(dp->fwnode);
 		return 0;
 	}
 
 	dev_warn(ds->dev,
 		 "Using legacy PHYLIB callbacks. Please migrate to PHYLINK!\n");
 
-	if (of_phy_is_fixed_link(dp->dn))
-		return dsa_port_fixed_link_register_of(dp);
+	if (fwnode_phy_is_fixed_link(dp->fwnode))
+		return dsa_port_fixed_link_register_fw(dp);
 	else
-		return dsa_port_setup_phy_of(dp, true);
+		return dsa_port_setup_phy_fw(dp, true);
 }
 
-void dsa_port_link_unregister_of(struct dsa_port *dp)
+void dsa_port_link_unregister_fw(struct dsa_port *dp)
 {
 	struct dsa_switch *ds = dp->ds;
 
@@ -1691,10 +1687,10 @@ void dsa_port_link_unregister_of(struct dsa_port *dp)
 		return;
 	}
 
-	if (of_phy_is_fixed_link(dp->dn))
-		of_phy_deregister_fixed_link(dp->dn);
+	if (fwnode_phy_is_fixed_link(dp->fwnode))
+		fwnode_phy_deregister_fixed_link(dp->fwnode);
 	else
-		dsa_port_setup_phy_of(dp, false);
+		dsa_port_setup_phy_fw(dp, false);
 }
 
 int dsa_port_hsr_join(struct dsa_port *dp, struct net_device *hsr)
diff --git a/net/dsa/slave.c b/net/dsa/slave.c
index ad6a6663feeb..209e24cb1477 100644
--- a/net/dsa/slave.c
+++ b/net/dsa/slave.c
@@ -10,8 +10,6 @@
 #include <linux/phy.h>
 #include <linux/phy_fixed.h>
 #include <linux/phylink.h>
-#include <linux/of_net.h>
-#include <linux/of_mdio.h>
 #include <linux/mdio.h>
 #include <net/rtnetlink.h>
 #include <net/pkt_cls.h>
@@ -2228,7 +2226,6 @@ static int dsa_slave_phy_connect(struct net_device *slave_dev, int addr,
 static int dsa_slave_phy_setup(struct net_device *slave_dev)
 {
 	struct dsa_port *dp = dsa_slave_to_port(slave_dev);
-	struct device_node *port_dn = dp->dn;
 	struct dsa_switch *ds = dp->ds;
 	u32 phy_flags = 0;
 	int ret;
@@ -2252,7 +2249,7 @@ static int dsa_slave_phy_setup(struct net_device *slave_dev)
 	if (ds->ops->get_phy_flags)
 		phy_flags = ds->ops->get_phy_flags(ds, dp->index);
 
-	ret = phylink_of_phy_connect(dp->pl, port_dn, phy_flags);
+	ret = phylink_fwnode_phy_connect(dp->pl, dp->fwnode, phy_flags);
 	if (ret == -ENODEV && ds->slave_mii_bus) {
 		/* We could not connect to a designated PHY or SFP, so try to
 		 * use the switch internal MDIO bus instead
@@ -2364,7 +2361,7 @@ int dsa_slave_create(struct dsa_port *port)
 	SET_NETDEV_DEVTYPE(slave_dev, &dsa_type);
 
 	SET_NETDEV_DEV(slave_dev, port->ds->dev);
-	slave_dev->dev.of_node = port->dn;
+	device_set_node(&slave_dev->dev, port->fwnode);
 	slave_dev->vlan_features = master->vlan_features;
 
 	p = netdev_priv(slave_dev);
-- 
2.29.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-07-28  8:13 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-28  7:22 [net-next: PATCH v3 3/8] net: dsa: switch to device_/fwnode_ APIs kernel test robot
2022-07-28  8:13 ` kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2022-07-27  6:43 [net-next: PATCH v3 0/8] DSA: switch to fwnode_/device_ Marcin Wojtas
2022-07-27  6:43 ` [net-next: PATCH v3 3/8] net: dsa: switch to device_/fwnode_ APIs Marcin Wojtas
2022-07-27 11:29   ` Andy Shevchenko

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.