From: Marek Vasut <marex@denx.de>
To: netdev@vger.kernel.org
Cc: Marek Vasut <marex@denx.de>,
"David S . Miller" <davem@davemloft.net>,
Nisar Sayed <Nisar.Sayed@microchip.com>,
Woojung Huh <Woojung.Huh@microchip.com>,
Andrew Lunn <andrew@lunn.ch>,
Florian Fainelli <f.fainelli@gmail.com>,
linux-usb@vger.kernel.org
Subject: [PATCH 07/19] usbnet: smsc95xx: Split the reset function
Date: Thu, 3 Jan 2019 02:10:28 +0100 [thread overview]
Message-ID: <20190103011040.25974-8-marex@denx.de> (raw)
In-Reply-To: <20190103011040.25974-1-marex@denx.de>
The smsc95xx_reset() is called either during bind or later during
the driver operation. However, the MII structure can be populated
only once, when the smsc95xx_reset() is called from the drivers
bind function.
Split the reset function to allow filling the MII structure only
once. This is done in preparation of phydev conversion, where the
code will connect to PHY between those two halves of the reset
function.
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: David S. Miller <davem@davemloft.net>
Cc: Nisar Sayed <Nisar.Sayed@microchip.com>
Cc: Woojung Huh <Woojung.Huh@microchip.com>
Cc: Andrew Lunn <andrew@lunn.ch>
Cc: Florian Fainelli <f.fainelli@gmail.com>
Cc: linux-usb@vger.kernel.org
To: netdev@vger.kernel.org
---
drivers/net/usb/smsc95xx.c | 36 +++++++++++++++++++++++++++---------
1 file changed, 27 insertions(+), 9 deletions(-)
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index 551d05eb258e..e40cde490a42 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -944,14 +944,6 @@ static int smsc95xx_phy_initialize(struct usbnet *dev)
{
int bmcr, ret, timeout = 0;
- /* Initialize MII structure */
- dev->mii.dev = dev->net;
- dev->mii.mdio_read = smsc95xx_mdio_read;
- dev->mii.mdio_write = smsc95xx_mdio_write;
- dev->mii.phy_id_mask = 0x1f;
- dev->mii.reg_num_mask = 0x1f;
- dev->mii.phy_id = SMSC95XX_INTERNAL_PHY_ID;
-
/* reset phy and wait for reset to complete */
smsc95xx_mdio_write(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET);
@@ -985,7 +977,7 @@ static int smsc95xx_phy_initialize(struct usbnet *dev)
return 0;
}
-static int smsc95xx_reset(struct usbnet *dev)
+static int smsc95xx_reset_pre(struct usbnet *dev)
{
struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
u32 read_buf, write_buf, burst_cap;
@@ -1165,6 +1157,13 @@ static int smsc95xx_reset(struct usbnet *dev)
}
smsc95xx_set_multicast(dev->net);
+ return 0;
+}
+
+static int smsc95xx_reset_post(struct usbnet *dev)
+{
+ u32 read_buf;
+ int ret;
ret = smsc95xx_phy_initialize(dev);
if (ret < 0) {
@@ -1199,6 +1198,25 @@ static int smsc95xx_reset(struct usbnet *dev)
return 0;
}
+static int smsc95xx_reset(struct usbnet *dev)
+{
+ int ret;
+
+ ret = smsc95xx_reset_pre(dev);
+ if (ret)
+ return ret;
+
+ /* Initialize MII structure */
+ dev->mii.dev = dev->net;
+ dev->mii.mdio_read = smsc95xx_mdio_read;
+ dev->mii.mdio_write = smsc95xx_mdio_write;
+ dev->mii.phy_id_mask = 0x1f;
+ dev->mii.reg_num_mask = 0x1f;
+ dev->mii.phy_id = SMSC95XX_INTERNAL_PHY_ID;
+
+ return smsc95xx_reset_post(dev);
+}
+
static const struct net_device_ops smsc95xx_netdev_ops = {
.ndo_open = usbnet_open,
.ndo_stop = usbnet_stop,
--
2.19.2
next prev parent reply other threads:[~2019-01-03 1:11 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-03 1:10 [PATCH 00/19] usbnet: smsc95xx: Convert to phydev Marek Vasut
2019-01-03 1:10 ` [PATCH 01/19] usbnet: smsc95xx: Fix memory leak in smsc95xx_bind Marek Vasut
2019-01-03 1:10 ` [PATCH 02/19] usbnet: smsc95xx: Stop propagation of in_pm Marek Vasut
2019-01-07 11:02 ` Oliver Neukum
2019-01-07 11:50 ` Marek Vasut
2019-01-03 1:10 ` [PATCH 03/19] usbnet: smsc95xx: Remove smsc95xx_{read,write}_reg_nopm() Marek Vasut
2019-01-03 1:10 ` [PATCH 04/19] usbnet: smsc95xx: Remove __smsc95xx_{read,write}_reg() Marek Vasut
2019-01-03 1:10 ` [PATCH 05/19] usbnet: smsc95xx: Remove smsc95xx_{read,write}_nopm() Marek Vasut
2019-01-03 1:10 ` [PATCH 06/19] usbnet: smsc95xx: Remove __smsc95xx_mdio_{read,write}() Marek Vasut
2019-01-03 1:10 ` Marek Vasut [this message]
2019-01-07 11:05 ` [PATCH 07/19] usbnet: smsc95xx: Split the reset function Oliver Neukum
2019-01-03 1:10 ` [PATCH 08/19] usbnet: smsc95xx: Register MII bus Marek Vasut
2019-01-03 1:10 ` [PATCH 09/19] usbnet: smsc95xx: Connect to phydev Marek Vasut
2019-01-03 13:22 ` Andrew Lunn
2019-01-04 2:18 ` Marek Vasut
2019-01-03 1:10 ` [PATCH 10/19] usbnet: smsc95xx: Replace smsc95xx_mdio_read() with phy_read() Marek Vasut
2019-01-03 13:39 ` Andrew Lunn
2019-01-04 2:19 ` Marek Vasut
2019-01-04 13:24 ` Andrew Lunn
2019-01-04 14:58 ` Marek Vasut
2019-01-04 15:57 ` Andrew Lunn
2019-01-04 18:02 ` Heiner Kallweit
2019-01-03 1:10 ` [PATCH 11/19] usbnet: smsc95xx: Replace smsc95xx_mdio_write() with phy_write() Marek Vasut
2019-01-03 1:10 ` [PATCH 12/19] usbnet: smsc95xx: Replace ad-hoc PHY functions with generic ones Marek Vasut
2019-01-03 13:28 ` Andrew Lunn
2019-01-04 2:19 ` Marek Vasut
2019-01-03 1:10 ` [PATCH 13/19] usbnet: smsc95xx: Replace smsc95xx_link_ok_nopm() Marek Vasut
2019-01-03 1:10 ` [PATCH 14/19] usbnet: smsc95xx: Replace mii_nway_restart() Marek Vasut
2019-01-03 1:10 ` [PATCH 15/19] usbnet: smsc95xx: Replace mii_ethtool_gset() Marek Vasut
2019-01-03 1:10 ` [PATCH 16/19] usbnet: smsc95xx: Replace mii_check_media() Marek Vasut
2019-01-03 1:10 ` [PATCH 17/19] usbnet: smsc95xx: Replace generic_mii_ioctl() Marek Vasut
2019-01-03 1:10 ` [PATCH 18/19] usbnet: smsc95xx: Remove all of the carrier checking code Marek Vasut
2019-01-03 1:10 ` [PATCH 19/19] usbnet: smsc95xx: Use phy bit operations Marek Vasut
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=20190103011040.25974-8-marex@denx.de \
--to=marex@denx.de \
--cc=Nisar.Sayed@microchip.com \
--cc=Woojung.Huh@microchip.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=linux-usb@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).