80 lines
2.1 KiB
Diff
80 lines
2.1 KiB
Diff
|
From 1e33784f665cb95c2af5481d3e776d2d3099921b Mon Sep 17 00:00:00 2001
|
||
|
From: John Crispin <john@phrozen.org>
|
||
|
Date: Thu, 10 Aug 2017 15:57:17 +0200
|
||
|
Subject: [PATCH 45/57] net: dsa: mediatek: turn into platform driver
|
||
|
|
||
|
Signed-off-by: John Crispin <john@phrozen.org>
|
||
|
---
|
||
|
drivers/net/dsa/mt7530.c | 23 +++++++++++++++--------
|
||
|
1 file changed, 15 insertions(+), 8 deletions(-)
|
||
|
|
||
|
--- a/drivers/net/dsa/mt7530.c
|
||
|
+++ b/drivers/net/dsa/mt7530.c
|
||
|
@@ -1035,10 +1035,10 @@ static struct dsa_switch_ops mt7530_swit
|
||
|
};
|
||
|
|
||
|
static int
|
||
|
-mt7530_probe(struct mdio_device *mdiodev)
|
||
|
+mt7530_probe(struct platform_device *mdiodev)
|
||
|
{
|
||
|
struct mt7530_priv *priv;
|
||
|
- struct device_node *dn;
|
||
|
+ struct device_node *dn, *mdio;
|
||
|
|
||
|
dn = mdiodev->dev.of_node;
|
||
|
|
||
|
@@ -1086,7 +1086,12 @@ mt7530_probe(struct mdio_device *mdiodev
|
||
|
}
|
||
|
}
|
||
|
|
||
|
- priv->bus = mdiodev->bus;
|
||
|
+ mdio = of_parse_phandle(dn, "dsa,mii-bus", 0);
|
||
|
+ if (!mdio)
|
||
|
+ return -EINVAL;
|
||
|
+ priv->bus = of_mdio_find_bus(mdio);
|
||
|
+ if (!priv->bus)
|
||
|
+ return -EPROBE_DEFER;
|
||
|
priv->dev = &mdiodev->dev;
|
||
|
priv->ds->priv = priv;
|
||
|
priv->ds->dev = &mdiodev->dev;
|
||
|
@@ -1098,8 +1103,8 @@ mt7530_probe(struct mdio_device *mdiodev
|
||
|
return dsa_register_switch(priv->ds, priv->ds->dev->of_node);
|
||
|
}
|
||
|
|
||
|
-static void
|
||
|
-mt7530_remove(struct mdio_device *mdiodev)
|
||
|
+static int
|
||
|
+mt7530_remove(struct platform_device *mdiodev)
|
||
|
{
|
||
|
struct mt7530_priv *priv = dev_get_drvdata(&mdiodev->dev);
|
||
|
int ret = 0;
|
||
|
@@ -1116,6 +1121,8 @@ mt7530_remove(struct mdio_device *mdiode
|
||
|
|
||
|
dsa_unregister_switch(priv->ds);
|
||
|
mutex_destroy(&priv->reg_mutex);
|
||
|
+
|
||
|
+ return 0;
|
||
|
}
|
||
|
|
||
|
static const struct of_device_id mt7530_of_match[] = {
|
||
|
@@ -1123,16 +1130,16 @@ static const struct of_device_id mt7530_
|
||
|
{ /* sentinel */ },
|
||
|
};
|
||
|
|
||
|
-static struct mdio_driver mt7530_mdio_driver = {
|
||
|
+static struct platform_driver mtk_mt7530_driver = {
|
||
|
.probe = mt7530_probe,
|
||
|
.remove = mt7530_remove,
|
||
|
- .mdiodrv.driver = {
|
||
|
+ .driver = {
|
||
|
.name = "mt7530",
|
||
|
.of_match_table = mt7530_of_match,
|
||
|
},
|
||
|
};
|
||
|
+module_platform_driver(mtk_mt7530_driver);
|
||
|
|
||
|
-mdio_module_driver(mt7530_mdio_driver);
|
||
|
|
||
|
MODULE_AUTHOR("Sean Wang <sean.wang@mediatek.com>");
|
||
|
MODULE_DESCRIPTION("Driver for Mediatek MT7530 Switch");
|