Commit 4198b7db authored by Joachim Eastwood's avatar Joachim Eastwood Committed by David S. Miller

stmmac: convert dwmac-sunxi to platform driver

Convert platform glue layer into a proper platform
driver and add it to the build system.
Signed-off-by: default avatarJoachim Eastwood <manabian@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2a321798
...@@ -90,6 +90,16 @@ config DWMAC_STI ...@@ -90,6 +90,16 @@ config DWMAC_STI
device driver. This driver is used on for the STi series device driver. This driver is used on for the STi series
SOCs GMAC ethernet controller. SOCs GMAC ethernet controller.
config DWMAC_SUNXI
tristate "Allwinner GMAC support"
default ARCH_SUNXI
depends on OF
---help---
Support for Allwinner A20/A31 GMAC ethernet controllers.
This selects Allwinner SoC glue layer support for the
stmmac device driver. This driver is used for A20/A31
GMAC ethernet controller.
endif endif
config STMMAC_PCI config STMMAC_PCI
......
...@@ -11,8 +11,9 @@ obj-$(CONFIG_DWMAC_MESON) += dwmac-meson.o ...@@ -11,8 +11,9 @@ obj-$(CONFIG_DWMAC_MESON) += dwmac-meson.o
obj-$(CONFIG_DWMAC_ROCKCHIP) += dwmac-rk.o obj-$(CONFIG_DWMAC_ROCKCHIP) += dwmac-rk.o
obj-$(CONFIG_DWMAC_SOCFPGA) += dwmac-socfpga.o obj-$(CONFIG_DWMAC_SOCFPGA) += dwmac-socfpga.o
obj-$(CONFIG_DWMAC_STI) += dwmac-sti.o obj-$(CONFIG_DWMAC_STI) += dwmac-sti.o
obj-$(CONFIG_DWMAC_SUNXI) += dwmac-sunxi.o
obj-$(CONFIG_DWMAC_GENERIC) += dwmac-generic.o obj-$(CONFIG_DWMAC_GENERIC) += dwmac-generic.o
stmmac-platform-objs:= stmmac_platform.o dwmac-sunxi.o \ stmmac-platform-objs:= stmmac_platform.o
obj-$(CONFIG_STMMAC_PCI) += stmmac-pci.o obj-$(CONFIG_STMMAC_PCI) += stmmac-pci.o
stmmac-pci-objs:= stmmac_pci.o stmmac-pci-objs:= stmmac_pci.o
...@@ -18,7 +18,9 @@ ...@@ -18,7 +18,9 @@
#include <linux/stmmac.h> #include <linux/stmmac.h>
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/module.h>
#include <linux/phy.h> #include <linux/phy.h>
#include <linux/platform_device.h>
#include <linux/of_net.h> #include <linux/of_net.h>
#include <linux/regulator/consumer.h> #include <linux/regulator/consumer.h>
...@@ -132,7 +134,7 @@ static void sun7i_fix_speed(void *priv, unsigned int speed) ...@@ -132,7 +134,7 @@ static void sun7i_fix_speed(void *priv, unsigned int speed)
/* of_data specifying hardware features and callbacks. /* of_data specifying hardware features and callbacks.
* hardware features were copied from Allwinner drivers. */ * hardware features were copied from Allwinner drivers. */
const struct stmmac_of_data sun7i_gmac_data = { static const struct stmmac_of_data sun7i_gmac_data = {
.has_gmac = 1, .has_gmac = 1,
.tx_coe = 1, .tx_coe = 1,
.fix_mac_speed = sun7i_fix_speed, .fix_mac_speed = sun7i_fix_speed,
...@@ -140,3 +142,24 @@ const struct stmmac_of_data sun7i_gmac_data = { ...@@ -140,3 +142,24 @@ const struct stmmac_of_data sun7i_gmac_data = {
.init = sun7i_gmac_init, .init = sun7i_gmac_init,
.exit = sun7i_gmac_exit, .exit = sun7i_gmac_exit,
}; };
static const struct of_device_id sun7i_dwmac_match[] = {
{ .compatible = "allwinner,sun7i-a20-gmac", .data = &sun7i_gmac_data},
{ }
};
MODULE_DEVICE_TABLE(of, sun7i_dwmac_match);
static struct platform_driver sun7i_dwmac_driver = {
.probe = stmmac_pltfr_probe,
.remove = stmmac_pltfr_remove,
.driver = {
.name = "sun7i-dwmac",
.pm = &stmmac_pltfr_pm_ops,
.of_match_table = sun7i_dwmac_match,
},
};
module_platform_driver(sun7i_dwmac_driver);
MODULE_AUTHOR("Chen-Yu Tsai <wens@csie.org>");
MODULE_DESCRIPTION("Allwinner sunxi DWMAC specific glue layer");
MODULE_LICENSE("GPL");
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
static const struct of_device_id stmmac_dt_ids[] = { static const struct of_device_id stmmac_dt_ids[] = {
/* SoC specific glue layers should come before generic bindings */ /* SoC specific glue layers should come before generic bindings */
{ .compatible = "allwinner,sun7i-a20-gmac", .data = &sun7i_gmac_data},
{ /* sentinel */ } { /* sentinel */ }
}; };
MODULE_DEVICE_TABLE(of, stmmac_dt_ids); MODULE_DEVICE_TABLE(of, stmmac_dt_ids);
......
...@@ -23,6 +23,4 @@ int stmmac_pltfr_probe(struct platform_device *pdev); ...@@ -23,6 +23,4 @@ int stmmac_pltfr_probe(struct platform_device *pdev);
int stmmac_pltfr_remove(struct platform_device *pdev); int stmmac_pltfr_remove(struct platform_device *pdev);
extern const struct dev_pm_ops stmmac_pltfr_pm_ops; extern const struct dev_pm_ops stmmac_pltfr_pm_ops;
extern const struct stmmac_of_data sun7i_gmac_data;
#endif /* __STMMAC_PLATFORM_H__ */ #endif /* __STMMAC_PLATFORM_H__ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment