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: Joachim Eastwood <manabian@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Joachim Eastwood
2015-05-14 12:11:05 +02:00
committed by David S. Miller
parent 2a3217988e
commit 4198b7db47
5 changed files with 36 additions and 5 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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)
/* 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 = {
.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");

View File

@@ -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);

View File

@@ -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__ */