From nobody Tue Dec 2 02:42:44 2025 Received: from fw2.prolan.hu (fw2.prolan.hu [193.68.50.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F32EB35503F; Tue, 18 Nov 2025 13:59:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.68.50.107 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763474352; cv=none; b=JvflSLNVDdKbBGLzbRJldgLdbxHLf7hNHe3lutPJqw72xCEHcwf8M/Cw2xfsl8JvSFiAWBOCs8vRiFDQSLDjb4ymEsmpsH8eK3srtiwi7rcnak3DW+d2JCEG2j723DYsH+x4DOQxJb0raMeZqoJh18Ycm89cZ2+Mud5xArOkUwY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763474352; c=relaxed/simple; bh=Ma7HQDyMOsSkortRll35FHiQPSK80dtQ4ppaAjNf5Rk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=LU4Q3js6BK+aP/Hq8irj1TkfZ2Ud9gBMQ3JoNpFE3PfMendonasAv9dM2rF57hbAqPnZDa3YG9yIuB+/5GsoNf4Q8a9x7HKCUi3jsU5YnNIPTnnhkVaIynFk1S+vK4cSPD4IQOk4PIfLWMC5y7xtfRnkRuu5Pl48q0j/FJKdwYI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=prolan.hu; spf=pass smtp.mailfrom=prolan.hu; dkim=pass (4096-bit key) header.d=prolan.hu header.i=@prolan.hu header.b=XeIM/Umv; arc=none smtp.client-ip=193.68.50.107 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=prolan.hu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=prolan.hu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (4096-bit key) header.d=prolan.hu header.i=@prolan.hu header.b="XeIM/Umv" Received: from proxmox-mailgw.intranet.prolan.hu (localhost.localdomain [127.0.0.1]) by proxmox-mailgw.intranet.prolan.hu (Proxmox) with ESMTP id 1A029A13FD; Tue, 18 Nov 2025 14:58:58 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=prolan.hu; h=cc :cc:content-transfer-encoding:content-type:content-type:date :from:from:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=mail; bh=lVWbjU6OZMZKSfpBWgnJ aHrHugrOdzvPNNE0axpkUrU=; b=XeIM/UmvDcHivrZTyWMvlynxn99Kk3q1Xmin 2tnNhfpQXBsZ/i5ApJLkJPGnb9IKemwX0sKCqBm+ONPB7aj0o/yv6w7ngbOHnuM0 A/AkhK4ohOoXdFdn5tpx72iXnWEfoBI8BfUOQGRNL7TYVMJGanfr6Bo3oZ6g0pj4 6JTuPJFO4dgefcTOBnjiU9JvB3pqsxSF9QW3dNj3byeXr7y+pz303lP+afv3tcGc DOUKefuHsawL7+QGa3cIDS78wBABPmvecg4kWvwMFeKX19yCVB3ANbrYxgnDZLyj ARP1bn3EH0fNgBVcSFha0AALQsxR7hnBLeWUkP03pSGZyi1wn6YoEh4R8n49tMiQ 41Mp3TB3tXs0jQfHppoHGiQHgq78JbtEjc2rVwNGGSDKIQgkvbN94OLdKV5t35t8 p0GuNfPvDC2I4X1HiBYyF/NT8zMJPhesbJQ/G27hS4CMO98CePsWiJBOai2f27cx 1bug+Wy4sAxLznG8fYwXerLYz5wfuSwUqYLFx2JEEGXTBc1CKbYv3C0R6Zqf1Z3C VPpYqm8RcGfC4Cmx+fe1TAwCAnSYNfC9P2h8/YNeZON2Y8gVST8Jv7XByD0+rdOM 8rZgvrrH7b94327swcJuOIdxTWBgGCgwayNBGsUmOCROacCZhyBNle7i3E4ctxZW EovMa1g= From: Buday Csaba To: Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Philipp Zabel , , CC: Buday Csaba Subject: [PATCH net-next v3 1/3] net: mdio: move device reset functions to mdio_device.c Date: Tue, 18 Nov 2025 14:58:52 +0100 Message-ID: <5f684838ee897130f21b21beb07695eea4af8988.1763473655.git.buday.csaba@prolan.hu> X-Mailer: git-send-email 2.39.5 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ESET-AS: R=OK;S=0;OP=CALC;TIME=1763474337;VERSION=8002;MC=2836567782;ID=69549;TRN=0;CRV=0;IPC=;SP=0;SIPS=0;PI=3;F=0 X-ESET-Antispam: OK X-EsetResult: clean, is OK X-EsetId: 37303A2998FD515F617266 Content-Type: text/plain; charset="utf-8" The functions mdiobus_register_gpiod() and mdiobus_register_reset() handle the mdio device reset initialization, which belong to mdio_device.c. Move them from mdio_bus.c to mdio_device.c, and rename them to match the corresponding source file: mdio_device_register_gpio() and mdio_device_register_reset(). Remove 'static' qualifiers and declare them in drivers/net/phy/mdio-private.h (new header file). Signed-off-by: Buday Csaba --- V2 -> V3: removed declarations from include/linux/mdio.h to drivers/net/phy/mdio-private.h on maintainer request. V1 -> V2: rebase, no changes --- drivers/net/phy/mdio-private.h | 11 +++++++++++ drivers/net/phy/mdio_bus.c | 32 +++----------------------------- drivers/net/phy/mdio_device.c | 28 ++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 29 deletions(-) create mode 100644 drivers/net/phy/mdio-private.h diff --git a/drivers/net/phy/mdio-private.h b/drivers/net/phy/mdio-private.h new file mode 100644 index 000000000..44e2e0907 --- /dev/null +++ b/drivers/net/phy/mdio-private.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +#ifndef __MDIO_PRIVATE_H +#define __MDIO_PRIVATE_H + +/* MDIO internal helpers + */ + +int mdio_device_register_reset(struct mdio_device *mdiodev); +int mdio_device_register_gpiod(struct mdio_device *mdiodev); + +#endif /* __MDIO_PRIVATE_H */ diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index 435424113..575b8bb5b 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c @@ -29,37 +29,11 @@ #include #include #include +#include "mdio-private.h" =20 #define CREATE_TRACE_POINTS #include =20 -static int mdiobus_register_gpiod(struct mdio_device *mdiodev) -{ - /* Deassert the optional reset signal */ - mdiodev->reset_gpio =3D gpiod_get_optional(&mdiodev->dev, - "reset", GPIOD_OUT_LOW); - if (IS_ERR(mdiodev->reset_gpio)) - return PTR_ERR(mdiodev->reset_gpio); - - if (mdiodev->reset_gpio) - gpiod_set_consumer_name(mdiodev->reset_gpio, "PHY reset"); - - return 0; -} - -static int mdiobus_register_reset(struct mdio_device *mdiodev) -{ - struct reset_control *reset; - - reset =3D reset_control_get_optional_exclusive(&mdiodev->dev, "phy"); - if (IS_ERR(reset)) - return PTR_ERR(reset); - - mdiodev->reset_ctrl =3D reset; - - return 0; -} - int mdiobus_register_device(struct mdio_device *mdiodev) { int err; @@ -68,11 +42,11 @@ int mdiobus_register_device(struct mdio_device *mdiodev) return -EBUSY; =20 if (mdiodev->flags & MDIO_DEVICE_FLAG_PHY) { - err =3D mdiobus_register_gpiod(mdiodev); + err =3D mdio_device_register_gpiod(mdiodev); if (err) return err; =20 - err =3D mdiobus_register_reset(mdiodev); + err =3D mdio_device_register_reset(mdiodev); if (err) { gpiod_put(mdiodev->reset_gpio); mdiodev->reset_gpio =3D NULL; diff --git a/drivers/net/phy/mdio_device.c b/drivers/net/phy/mdio_device.c index f64176e0e..0e04bddd3 100644 --- a/drivers/net/phy/mdio_device.c +++ b/drivers/net/phy/mdio_device.c @@ -22,6 +22,7 @@ #include #include #include +#include "mdio-private.h" =20 void mdio_device_free(struct mdio_device *mdiodev) { @@ -118,6 +119,33 @@ void mdio_device_remove(struct mdio_device *mdiodev) } EXPORT_SYMBOL(mdio_device_remove); =20 +int mdio_device_register_gpiod(struct mdio_device *mdiodev) +{ + /* Deassert the optional reset signal */ + mdiodev->reset_gpio =3D gpiod_get_optional(&mdiodev->dev, + "reset", GPIOD_OUT_LOW); + if (IS_ERR(mdiodev->reset_gpio)) + return PTR_ERR(mdiodev->reset_gpio); + + if (mdiodev->reset_gpio) + gpiod_set_consumer_name(mdiodev->reset_gpio, "PHY reset"); + + return 0; +} + +int mdio_device_register_reset(struct mdio_device *mdiodev) +{ + struct reset_control *reset; + + reset =3D reset_control_get_optional_exclusive(&mdiodev->dev, "phy"); + if (IS_ERR(reset)) + return PTR_ERR(reset); + + mdiodev->reset_ctrl =3D reset; + + return 0; +} + void mdio_device_reset(struct mdio_device *mdiodev, int value) { unsigned int d; --=20 2.39.5 From nobody Tue Dec 2 02:42:44 2025 Received: from fw2.prolan.hu (fw2.prolan.hu [193.68.50.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5000C35E542; Tue, 18 Nov 2025 13:59:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.68.50.107 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763474354; cv=none; b=rmUhue/HGEpfc1g53MuOSA//1nq2gOp+dRH2oS5HjI4FhGUZ/e/kVz2+pGEk//Mio+o5Mux84MGBG3UOPPS85DrF2j4ka3RJNFxrJHfoVoMiU0bkzKWxRkt2Uxai/YYylYYEB8E19t8xsKme3AG3O2IGzl1ej2iMbxz5EbYXvTE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763474354; c=relaxed/simple; bh=3f7YK3uSc0O+Kfapx1RFq3kfQ8LDm8UVkDFm/HvwC1s=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=rb3mik3HMWye+BLKxNhh0jy3grBvYZNg7b5gfjK7ERwn5dd5OZCosC924S6aSjsVs1yon8KNK0IhTr1onGC6dwY9akReUX2LaYtd+7nLEPWx2JJyDJGOprzSsQCVj3F47zbOa/AGRCTQ6QJelAW7JVlKUNixnmPUhXrSYEV/nqc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=prolan.hu; spf=pass smtp.mailfrom=prolan.hu; dkim=pass (4096-bit key) header.d=prolan.hu header.i=@prolan.hu header.b=Zv9FQRST; arc=none smtp.client-ip=193.68.50.107 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=prolan.hu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=prolan.hu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (4096-bit key) header.d=prolan.hu header.i=@prolan.hu header.b="Zv9FQRST" Received: from proxmox-mailgw.intranet.prolan.hu (localhost.localdomain [127.0.0.1]) by proxmox-mailgw.intranet.prolan.hu (Proxmox) with ESMTP id 5E8E0A1AB9; Tue, 18 Nov 2025 14:58:58 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=prolan.hu; h=cc :cc:content-transfer-encoding:content-type:content-type:date :from:from:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=mail; bh=tWRKjLP0mb6mRQSIsKHy zZvM1mUPS51i1WRMfsMMAtQ=; b=Zv9FQRSTyps8aknnOxKWY/7CceLC6u4ofSh7 AM1h9pOor743Moo3IFbNqBb0AXvue2E1Gc2Y9DvwZxFmY/SgG6YY8h+OgIQquck0 dQs0qxgWgs+Qax+7r+sOT1pugpyx7wo9mrMX2WWh+Jm+sAH2ovyX6DoF2riTavH/ U8XJGibcp7iQwDdpjt8OpOg0Q6hG0Vqr9G8TsxOQ9JQi8FGvftTYxDd5MFDK0NBO WyQ0oKg2M98wQNIvy35nNnXce7a8h56RKyTntnpjlikc8kFwPDNoDGGmSnumemN6 c8PcolOg60xJJuxnKZgKSwe819rjLHwTM6SSCwQTWosaHJlSUEyt7laxGNXFler4 rQSxcqWnieA/LxppljKKQIr92pE/n+5a7VDLbXqbOcOrggWIC+UwjeLIFLfyA69l f0eCeTryZJfcb63IpAD6jsHPqWFwREBJcJYp8gTCStzfDaDMTTBT8EWw68ugJdI3 YiQQzD3oDa0Zdjtaj9yrLRgAhtzLMex/p2+85yW8SKDYDScPdMhDOUM8GaiYXjGw peYMD49ZCLNm87/D9WQx4vMI3L4ncBpQ+Fz1AWlx5XXSIQJYL/2C9Rm2/+TogiXz 0kFHxDNXwz+aapD7M3E/VCFFseUijxaHreAp7/rJgVC1Ft7ADUbASGGp9/gM4SBx VnK6x8E= From: Buday Csaba To: Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Philipp Zabel , , CC: Buday Csaba Subject: [PATCH net-next v3 2/3] net: mdio: common handling of phy device reset properties Date: Tue, 18 Nov 2025 14:58:53 +0100 Message-ID: <17c216efd7a47be17db104378b6aacfc8741d8b9.1763473655.git.buday.csaba@prolan.hu> X-Mailer: git-send-email 2.39.5 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ESET-AS: R=OK;S=0;OP=CALC;TIME=1763474337;VERSION=8002;MC=711453591;ID=69550;TRN=0;CRV=0;IPC=;SP=0;SIPS=0;PI=3;F=0 X-ESET-Antispam: OK X-EsetResult: clean, is OK X-EsetId: 37303A2998FD515F617266 Content-Type: text/plain; charset="utf-8" Unify the handling of the per device reset properties for `mdio_device`. Merge mdio_device_register_gpiod() and mdio_device_register_reset() into mdio_device_register_reset(), that handles both reset-controllers and reset-gpios. Move reading of the reset firmware properties (reset-assert-us, reset-deassert-us) from fwnode_mdio.c to mdio_device_register_reset(), so all reset related initialization code is kept in one place. Introduce mdio_device_unregister_reset() to release the associated resources. These changes make tracking the reset properties easier. Added kernel-doc for mdio_device_register/unregister_reset(). Signed-off-by: Buday Csaba --- V2 -> V3: moved declarations to drivers/net/phy/mdio-private.h V1 -> V2: rebase, no change (leak fix already applied to base) --- drivers/net/mdio/fwnode_mdio.c | 5 ----- drivers/net/phy/mdio-private.h | 2 +- drivers/net/phy/mdio_bus.c | 12 ++-------- drivers/net/phy/mdio_device.c | 40 ++++++++++++++++++++++++++-------- 4 files changed, 34 insertions(+), 25 deletions(-) diff --git a/drivers/net/mdio/fwnode_mdio.c b/drivers/net/mdio/fwnode_mdio.c index 9b41d4697..ba7091518 100644 --- a/drivers/net/mdio/fwnode_mdio.c +++ b/drivers/net/mdio/fwnode_mdio.c @@ -92,11 +92,6 @@ int fwnode_mdiobus_phy_device_register(struct mii_bus *m= dio, if (fwnode_property_read_bool(child, "broken-turn-around")) mdio->phy_ignore_ta_mask |=3D 1 << addr; =20 - fwnode_property_read_u32(child, "reset-assert-us", - &phy->mdio.reset_assert_delay); - fwnode_property_read_u32(child, "reset-deassert-us", - &phy->mdio.reset_deassert_delay); - /* Associate the fwnode with the device structure so it * can be looked up later */ diff --git a/drivers/net/phy/mdio-private.h b/drivers/net/phy/mdio-private.h index 44e2e0907..8bc6d9088 100644 --- a/drivers/net/phy/mdio-private.h +++ b/drivers/net/phy/mdio-private.h @@ -6,6 +6,6 @@ */ =20 int mdio_device_register_reset(struct mdio_device *mdiodev); -int mdio_device_register_gpiod(struct mdio_device *mdiodev); +void mdio_device_unregister_reset(struct mdio_device *mdiodev); =20 #endif /* __MDIO_PRIVATE_H */ diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index 575b8bb5b..ef041ad66 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c @@ -42,16 +42,9 @@ int mdiobus_register_device(struct mdio_device *mdiodev) return -EBUSY; =20 if (mdiodev->flags & MDIO_DEVICE_FLAG_PHY) { - err =3D mdio_device_register_gpiod(mdiodev); - if (err) - return err; - err =3D mdio_device_register_reset(mdiodev); - if (err) { - gpiod_put(mdiodev->reset_gpio); - mdiodev->reset_gpio =3D NULL; + if (err) return err; - } =20 /* Assert the reset signal */ mdio_device_reset(mdiodev, 1); @@ -68,8 +61,7 @@ int mdiobus_unregister_device(struct mdio_device *mdiodev) if (mdiodev->bus->mdio_map[mdiodev->addr] !=3D mdiodev) return -EINVAL; =20 - gpiod_put(mdiodev->reset_gpio); - reset_control_put(mdiodev->reset_ctrl); + mdio_device_unregister_reset(mdiodev); =20 mdiodev->bus->mdio_map[mdiodev->addr] =3D NULL; =20 diff --git a/drivers/net/phy/mdio_device.c b/drivers/net/phy/mdio_device.c index 0e04bddd3..a4d9c6ccf 100644 --- a/drivers/net/phy/mdio_device.c +++ b/drivers/net/phy/mdio_device.c @@ -119,8 +119,17 @@ void mdio_device_remove(struct mdio_device *mdiodev) } EXPORT_SYMBOL(mdio_device_remove); =20 -int mdio_device_register_gpiod(struct mdio_device *mdiodev) +/** + * mdio_device_register_reset - Read and initialize the reset properties of + * an mdio device + * @mdiodev: mdio_device structure + * + * Return: Zero if successful, negative error code on failure + */ +int mdio_device_register_reset(struct mdio_device *mdiodev) { + struct reset_control *reset; + /* Deassert the optional reset signal */ mdiodev->reset_gpio =3D gpiod_get_optional(&mdiodev->dev, "reset", GPIOD_OUT_LOW); @@ -130,22 +139,35 @@ int mdio_device_register_gpiod(struct mdio_device *md= iodev) if (mdiodev->reset_gpio) gpiod_set_consumer_name(mdiodev->reset_gpio, "PHY reset"); =20 - return 0; -} - -int mdio_device_register_reset(struct mdio_device *mdiodev) -{ - struct reset_control *reset; - reset =3D reset_control_get_optional_exclusive(&mdiodev->dev, "phy"); - if (IS_ERR(reset)) + if (IS_ERR(reset)) { + gpiod_put(mdiodev->reset_gpio); + mdiodev->reset_gpio =3D NULL; return PTR_ERR(reset); + } =20 mdiodev->reset_ctrl =3D reset; =20 + /* Read optional firmware properties */ + fwnode_property_read_u32(dev_fwnode(&mdiodev->dev), "reset-assert-us", + &mdiodev->reset_assert_delay); + fwnode_property_read_u32(dev_fwnode(&mdiodev->dev), "reset-deassert-us", + &mdiodev->reset_deassert_delay); + return 0; } =20 +/** + * mdio_device_unregister_reset - uninitialize the reset properties of + * an mdio device + * @mdiodev: mdio_device structure + */ +void mdio_device_unregister_reset(struct mdio_device *mdiodev) +{ + gpiod_put(mdiodev->reset_gpio); + reset_control_put(mdiodev->reset_ctrl); +} + void mdio_device_reset(struct mdio_device *mdiodev, int value) { unsigned int d; --=20 2.39.5 From nobody Tue Dec 2 02:42:44 2025 Received: from fw2.prolan.hu (fw2.prolan.hu [193.68.50.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AACE43570C9; Tue, 18 Nov 2025 13:59:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.68.50.107 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763474353; cv=none; b=Lg0V5/b6wDKG1NELieDeUyq+ZN6+yr+gddjK4e1+MBhP8YbwWU2XTPOQVjDA91gXkr0KTIDiHG9eLjr7iSS6lXbpcqW6/YOB4wBbTvKz+TFw6iBquOnD11j6lyB99jjhB+Ty9WuvpoZFUYFXgWjX0ezLTc5DufmJhiTx/vlw7wM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763474353; c=relaxed/simple; bh=vuCMu8Zyr0++D4LokQ/BIJwvJfctwQ7pVDmzVTNH3mk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=lGuOZCJFqog7UtnEpCNFb2+PuXbm9ujFo5aJ/53aH0mB6uRRCkmW0D7T0Znz9jYxLYKBqklj7QcpzpISj0jOjEic6zWlpLQ0o+i3mrKKJiCqabMTxi7KMMr8IaD/IbCSh/gQL+TMG45B0l27H7Dp1+WvHMJm9NG/ZxsIaUMsCXc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=prolan.hu; spf=pass smtp.mailfrom=prolan.hu; dkim=pass (4096-bit key) header.d=prolan.hu header.i=@prolan.hu header.b=KLGlu8be; arc=none smtp.client-ip=193.68.50.107 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=prolan.hu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=prolan.hu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (4096-bit key) header.d=prolan.hu header.i=@prolan.hu header.b="KLGlu8be" Received: from proxmox-mailgw.intranet.prolan.hu (localhost.localdomain [127.0.0.1]) by proxmox-mailgw.intranet.prolan.hu (Proxmox) with ESMTP id 47A74A0A9C; Tue, 18 Nov 2025 14:58:58 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=prolan.hu; h=cc :cc:content-transfer-encoding:content-type:content-type:date :from:from:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=mail; bh=BH8nS9fyL+TA/Jht3rNm U3h3KU5XVc/dfK0gPokSnho=; b=KLGlu8bePrDaDoExgYUMfAq2aoCoIidrPId3 mye2DjTnnpzgTMzaBLizI3rZIh5ZbmanB3Ojco+A+iJ4ngHaZtyTCHgwmI2BeQJp +ki8n0/TMZJdBm16C9EshdZXRC/i3+EeXwIpNw06WGNoYZEal3gaDorxrmYoLAsd 3elzcyJx1e5Y1zi25drGSHdlsRe/ClOoH1U3vXy0WzeWZP0dk5kVjN314Rnx/8ZT eGU64LHidNz5RX225uu/+Ba08621qr43FkFihx9RcRgvi+s90y/hGaEvk4ZDt9ur AfQ7AHMAnAvpfJbgX4T3MbDvi1ntusZw6jczyGSa/vUJq3GjhLCS8oPqE3K1EikO 8vEUgf9GGKiWggjEBm4dQrHN8ngAPZatVsZxO78WSBgKsXwoUp4dSprjmPvdkFOH lXvOLEvXIfAUlseB3zNm1oZFsX12aGvNIjqLbgWzcMyV/sb+GZhvEpAgpGwrWQTI nKPfz6JmbmP6MOEXIjpRgsfxr/JKOzpYfWmc8i/CffE/aCBIf9Z8ckBQIT1HrQtP 2HEhYWZFC7ww8jeJga0JWqQuytHOeBFRgYlMLQqtEA7Vp49SwUqcAMSq9BJE7hvW I2vgu2sIZ33i5i37GhA9m21VrMcda1Ph3lhMMiq+vI3c2vf9rIMGmKLYlz8JPdiB kJF2Gx4= From: Buday Csaba To: Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Philipp Zabel , , CC: Buday Csaba Subject: [PATCH net-next v3 3/3] net: mdio: improve reset handling in mdio_device.c Date: Tue, 18 Nov 2025 14:58:54 +0100 Message-ID: <641df1488517ae71ba10158ec1e38424211d8651.1763473655.git.buday.csaba@prolan.hu> X-Mailer: git-send-email 2.39.5 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ESET-AS: R=OK;S=0;OP=CALC;TIME=1763474337;VERSION=8002;MC=3304440463;ID=69551;TRN=0;CRV=0;IPC=;SP=0;SIPS=0;PI=3;F=0 X-ESET-Antispam: OK X-EsetResult: clean, is OK X-EsetId: 37303A2998FD515F617266 Content-Type: text/plain; charset="utf-8" Change fwnode_property_read_u32() in mdio_device_register_reset() to device_property_read_u32(), which is more appropriate here. Make mdio_device_unregister_reset() truly reverse mdio_device_register_reset() by setting the internal fields to their default values. Signed-off-by: Buday Csaba --- V2 -> V3: no changes V1 -> V2: rebase, leak fix removed, since it is already in base --- drivers/net/phy/mdio_device.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/mdio_device.c b/drivers/net/phy/mdio_device.c index a4d9c6ccf..fd0e16dbc 100644 --- a/drivers/net/phy/mdio_device.c +++ b/drivers/net/phy/mdio_device.c @@ -149,9 +149,9 @@ int mdio_device_register_reset(struct mdio_device *mdio= dev) mdiodev->reset_ctrl =3D reset; =20 /* Read optional firmware properties */ - fwnode_property_read_u32(dev_fwnode(&mdiodev->dev), "reset-assert-us", + device_property_read_u32(&mdiodev->dev, "reset-assert-us", &mdiodev->reset_assert_delay); - fwnode_property_read_u32(dev_fwnode(&mdiodev->dev), "reset-deassert-us", + device_property_read_u32(&mdiodev->dev, "reset-deassert-us", &mdiodev->reset_deassert_delay); =20 return 0; @@ -165,7 +165,11 @@ int mdio_device_register_reset(struct mdio_device *mdi= odev) void mdio_device_unregister_reset(struct mdio_device *mdiodev) { gpiod_put(mdiodev->reset_gpio); + mdiodev->reset_gpio =3D NULL; reset_control_put(mdiodev->reset_ctrl); + mdiodev->reset_ctrl =3D NULL; + mdiodev->reset_assert_delay =3D 0; + mdiodev->reset_deassert_delay =3D 0; } =20 void mdio_device_reset(struct mdio_device *mdiodev, int value) --=20 2.39.5