All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marek Vasut <marex@denx.de>
To: netdev@vger.kernel.org
Cc: Marek Vasut <marex@denx.de>,
	"David S . Miller" <davem@davemloft.net>,
	Lukas Wunner <lukas@wunner.de>, Petr Stetiar <ynezz@true.cz>,
	YueHaibing <yuehaibing@huawei.com>
Subject: [PATCH V4 13/19] net: ks8851: Split out SPI specific code from probe() and remove()
Date: Tue, 14 Apr 2020 20:20:23 +0200	[thread overview]
Message-ID: <20200414182029.183594-14-marex@denx.de> (raw)
In-Reply-To: <20200414182029.183594-1-marex@denx.de>

Factor out common code into ks8851_probe_common() and
ks8851_remove_common() to permit both SPI and parallel
bus driver variants to use the common code path for
both probing and removal.

There should be no functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: David S. Miller <davem@davemloft.net>
Cc: Lukas Wunner <lukas@wunner.de>
Cc: Petr Stetiar <ynezz@true.cz>
Cc: YueHaibing <yuehaibing@huawei.com>
---
V2: - Add RB from Andrew
    - Rework on top of locking patches, drop RB
V3: No change
V4: No change
---
 drivers/net/ethernet/micrel/ks8851.c | 77 ++++++++++++++++------------
 1 file changed, 43 insertions(+), 34 deletions(-)

diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
index 440ddd5cafbd..5dbbde5929d0 100644
--- a/drivers/net/ethernet/micrel/ks8851.c
+++ b/drivers/net/ethernet/micrel/ks8851.c
@@ -1431,27 +1431,14 @@ static int ks8851_resume(struct device *dev)
 
 static SIMPLE_DEV_PM_OPS(ks8851_pm_ops, ks8851_suspend, ks8851_resume);
 
-static int ks8851_probe(struct spi_device *spi)
+static int ks8851_probe_common(struct net_device *netdev, struct device *dev)
 {
-	struct device *dev = &spi->dev;
-	struct ks8851_net_spi *kss;
-	struct net_device *netdev;
-	struct ks8851_net *ks;
-	int ret;
+	struct ks8851_net *ks = netdev_priv(netdev);
 	unsigned cider;
 	int gpio;
-
-	netdev = devm_alloc_etherdev(dev, sizeof(struct ks8851_net_spi));
-	if (!netdev)
-		return -ENOMEM;
-
-	spi->bits_per_word = 8;
-
-	ks = netdev_priv(netdev);
-	kss = to_ks8851_spi(ks);
+	int ret;
 
 	ks->netdev = netdev;
-	kss->spidev = spi;
 	ks->tx_space = 6144;
 
 	gpio = of_get_named_gpio_flags(dev->of_node, "reset-gpios", 0, NULL);
@@ -1497,23 +1484,11 @@ static int ks8851_probe(struct spi_device *spi)
 		gpio_set_value(gpio, 1);
 	}
 
-	mutex_init(&kss->lock);
 	spin_lock_init(&ks->statelock);
 
-	INIT_WORK(&kss->tx_work, ks8851_tx_work);
 	INIT_WORK(&ks->rxctrl_work, ks8851_rxctrl_work);
 
-	/* initialise pre-made spi transfer messages */
-
-	spi_message_init(&kss->spi_msg1);
-	spi_message_add_tail(&kss->spi_xfer1, &kss->spi_msg1);
-
-	spi_message_init(&kss->spi_msg2);
-	spi_message_add_tail(&kss->spi_xfer2[0], &kss->spi_msg2);
-	spi_message_add_tail(&kss->spi_xfer2[1], &kss->spi_msg2);
-
 	/* setup EEPROM state */
-
 	ks->eeprom.data = ks;
 	ks->eeprom.width = PCI_EEPROM_WIDTH_93C46;
 	ks->eeprom.register_read = ks8851_eeprom_regread;
@@ -1544,7 +1519,6 @@ static int ks8851_probe(struct spi_device *spi)
 	netif_carrier_off(ks->netdev);
 	netdev->if_port = IF_PORT_100BASET;
 	netdev->netdev_ops = &ks8851_netdev_ops;
-	netdev->irq = spi->irq;
 
 	/* issue a global soft reset to reset the device. */
 	ks8851_soft_reset(ks, GRR_GSR);
@@ -1586,12 +1560,9 @@ static int ks8851_probe(struct spi_device *spi)
 	return ret;
 }
 
-static int ks8851_remove(struct spi_device *spi)
+static int ks8851_remove_common(struct device *dev)
 {
-	struct device *dev = &spi->dev;
-	struct ks8851_net *priv;
-
-	priv = dev_get_drvdata(dev);
+	struct ks8851_net *priv = dev_get_drvdata(dev);
 
 	if (netif_msg_drv(priv))
 		dev_info(dev, "remove\n");
@@ -1605,6 +1576,44 @@ static int ks8851_remove(struct spi_device *spi)
 	return 0;
 }
 
+static int ks8851_probe(struct spi_device *spi)
+{
+	struct device *dev = &spi->dev;
+	struct ks8851_net_spi *kss;
+	struct net_device *netdev;
+	struct ks8851_net *ks;
+
+	netdev = devm_alloc_etherdev(dev, sizeof(struct ks8851_net_spi));
+	if (!netdev)
+		return -ENOMEM;
+
+	spi->bits_per_word = 8;
+
+	ks = netdev_priv(netdev);
+	kss = to_ks8851_spi(ks);
+
+	kss->spidev = spi;
+	mutex_init(&kss->lock);
+	INIT_WORK(&kss->tx_work, ks8851_tx_work);
+
+	/* initialise pre-made spi transfer messages */
+	spi_message_init(&kss->spi_msg1);
+	spi_message_add_tail(&kss->spi_xfer1, &kss->spi_msg1);
+
+	spi_message_init(&kss->spi_msg2);
+	spi_message_add_tail(&kss->spi_xfer2[0], &kss->spi_msg2);
+	spi_message_add_tail(&kss->spi_xfer2[1], &kss->spi_msg2);
+
+	netdev->irq = spi->irq;
+
+	return ks8851_probe_common(netdev, dev);
+}
+
+static int ks8851_remove(struct spi_device *spi)
+{
+	return ks8851_remove_common(&spi->dev);
+}
+
 static const struct of_device_id ks8851_match_table[] = {
 	{ .compatible = "micrel,ks8851" },
 	{ }
-- 
2.25.1


  parent reply	other threads:[~2020-04-14 18:24 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-28  0:31 [PATCH V3 00/18] net: ks8851: Unify KS8851 SPI and MLL drivers Marek Vasut
2020-03-28  0:31 ` [PATCH V3 01/18] net: ks8851: Factor out spi->dev in probe()/remove() Marek Vasut
2020-03-28  0:31 ` [PATCH V3 02/18] net: ks8851: Rename ndev to netdev in probe Marek Vasut
2020-03-28  0:31 ` [PATCH V3 03/18] net: ks8851: Replace dev_err() with netdev_err() in IRQ handler Marek Vasut
2020-03-28  0:31 ` [PATCH V3 04/18] net: ks8851: Pass device node into ks8851_init_mac() Marek Vasut
2020-03-28  0:31 ` [PATCH V3 05/18] net: ks8851: Use devm_alloc_etherdev() Marek Vasut
2020-03-28  0:31 ` [PATCH V3 06/18] net: ks8851: Use dev_{get,set}_drvdata() Marek Vasut
2020-03-28  0:31 ` [PATCH V3 07/18] net: ks8851: Remove ks8851_rdreg32() Marek Vasut
2020-03-28  0:31 ` [PATCH V3 08/18] net: ks8851: Use 16-bit writes to program MAC address Marek Vasut
2020-03-28  0:31 ` [PATCH V3 09/18] net: ks8851: Use 16-bit read of RXFC register Marek Vasut
2020-03-28  0:31 ` [PATCH V3 10/18] net: ks8851: Factor out bus lock handling Marek Vasut
2020-03-28  0:31 ` [PATCH V3 11/18] net: ks8851: Factor out SKB receive function Marek Vasut
2020-03-28  0:31 ` [PATCH V3 12/18] net: ks8851: Split out SPI specific entries in struct ks8851_net Marek Vasut
2020-03-28  0:31 ` [PATCH V3 13/18] net: ks8851: Split out SPI specific code from probe() and remove() Marek Vasut
2020-03-28  0:31 ` [PATCH V3 14/18] net: ks8851: Factor out TX work flush function Marek Vasut
2020-03-28  0:31 ` [PATCH V3 15/18] net: ks8851: Permit overridding interrupt enable register Marek Vasut
2020-03-28  0:31 ` [PATCH V3 16/18] net: ks8851: Separate SPI operations into separate file Marek Vasut
2020-03-28  2:45   ` kbuild test robot
2020-03-28  2:45     ` kbuild test robot
2020-03-28  4:11   ` kbuild test robot
2020-03-28  4:11     ` kbuild test robot
2020-03-28  0:31 ` [PATCH V3 17/18] net: ks8851: Implement Parallel bus operations Marek Vasut
2020-03-28  0:31 ` [PATCH V3 18/18] net: ks8851: Remove ks8851_mll.c Marek Vasut
2020-03-29 16:15 ` [PATCH V3 00/18] net: ks8851: Unify KS8851 SPI and MLL drivers Marek Vasut
2020-04-06  3:16 ` Lukas Wunner
2020-04-06 11:20   ` Marek Vasut
2020-04-08 19:49     ` Marek Vasut
2020-04-10 11:01       ` Lukas Wunner
2020-04-10 18:10         ` Marek Vasut
2020-04-14 18:20           ` [PATCH V4 00/19] " Marek Vasut
2020-04-14 18:20             ` [PATCH V4 01/19] net: ks8851: Factor out spi->dev in probe()/remove() Marek Vasut
2020-04-14 18:20             ` [PATCH V4 02/19] net: ks8851: Rename ndev to netdev in probe Marek Vasut
2020-04-14 18:20             ` [PATCH V4 03/19] net: ks8851: Replace dev_err() with netdev_err() in IRQ handler Marek Vasut
2020-04-14 18:20             ` [PATCH V4 04/19] net: ks8851: Pass device node into ks8851_init_mac() Marek Vasut
2020-04-14 18:20             ` [PATCH V4 05/19] net: ks8851: Use devm_alloc_etherdev() Marek Vasut
2020-04-14 18:20             ` [PATCH V4 06/19] net: ks8851: Use dev_{get,set}_drvdata() Marek Vasut
2020-04-14 18:20             ` [PATCH V4 07/19] net: ks8851: Remove ks8851_rdreg32() Marek Vasut
2020-04-20 14:07               ` Lukas Wunner
2020-04-20 14:12                 ` Marek Vasut
2020-04-20 14:20                   ` Lukas Wunner
2020-04-20 14:24                     ` Marek Vasut
2020-04-20 14:44                       ` Lukas Wunner
2020-04-20 15:38                         ` Marek Vasut
2020-04-20 15:50                           ` Andrew Lunn
2020-05-07 14:22                             ` Marek Vasut
2020-04-14 18:20             ` [PATCH V4 08/19] net: ks8851: Use 16-bit writes to program MAC address Marek Vasut
2020-04-14 18:20             ` [PATCH V4 09/19] net: ks8851: Use 16-bit read of RXFC register Marek Vasut
2020-04-14 18:20             ` [PATCH V4 10/19] net: ks8851: Factor out bus lock handling Marek Vasut
2020-04-14 18:20             ` [PATCH V4 11/19] net: ks8851: Factor out SKB receive function Marek Vasut
2020-04-14 18:20             ` [PATCH V4 12/19] net: ks8851: Split out SPI specific entries in struct ks8851_net Marek Vasut
2020-04-14 18:20             ` Marek Vasut [this message]
2020-04-14 18:20             ` [PATCH V4 14/19] net: ks8851: Factor out TX work flush function Marek Vasut
2020-04-14 18:20             ` [PATCH V4 15/19] net: ks8851: Permit overridding interrupt enable register Marek Vasut
2020-04-14 18:20             ` [PATCH V4 16/19] net: ks8851: Implement register, FIFO, lock accessor callbacks Marek Vasut
2020-04-14 18:20             ` [PATCH V4 17/19] net: ks8851: Separate SPI operations into separate file Marek Vasut
2020-04-15 14:56               ` Lukas Wunner
2020-04-16  9:58                 ` Marek Vasut
2020-04-14 18:20             ` [PATCH V4 18/19] net: ks8851: Implement Parallel bus operations Marek Vasut
2020-04-14 18:20             ` [PATCH V4 19/19] net: ks8851: Remove ks8851_mll.c Marek Vasut
2020-04-14 20:13             ` [PATCH V4 00/19] net: ks8851: Unify KS8851 SPI and MLL drivers David Miller
2020-04-15 14:39             ` Lukas Wunner
2020-04-15 14:51               ` Marek Vasut
2020-04-15 15:12                 ` Lukas Wunner
2020-04-16 10:18                   ` 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=20200414182029.183594-14-marex@denx.de \
    --to=marex@denx.de \
    --cc=davem@davemloft.net \
    --cc=lukas@wunner.de \
    --cc=netdev@vger.kernel.org \
    --cc=ynezz@true.cz \
    --cc=yuehaibing@huawei.com \
    /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.