stmmac: add a generic dwmac driver
authorJoachim Eastwood <manabian@gmail.com>
Thu, 14 May 2015 10:10:59 +0000 (12:10 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 15 May 2015 16:44:22 +0000 (12:44 -0400)
Create a new driver around the generic device tree match strings
in the stmmac platform code. This driver is intended to be used
by all platforms that doesn't require any platform specific code
to function or is using platform data.

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/stmicro/stmmac/Kconfig
drivers/net/ethernet/stmicro/stmmac/Makefile
drivers/net/ethernet/stmicro/stmmac/dwmac-generic.c [new file with mode: 0644]
drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c

index 7d3af190be55d9a4ea49ed903b261bec45a319ce..d4ed2ac3829b0890d3cd84a6a817288385b880cc 100644 (file)
@@ -26,6 +26,18 @@ config STMMAC_PLATFORM
 
          If unsure, say N.
 
+if STMMAC_PLATFORM
+
+config DWMAC_GENERIC
+       tristate "Generic driver for DWMAC"
+       default STMMAC_PLATFORM
+       ---help---
+         Generic DWMAC driver for platforms that don't require any
+         platform specific code to function or is using platform
+         data for setup.
+
+endif
+
 config STMMAC_PCI
        tristate "STMMAC PCI bus support"
        depends on STMMAC_ETH && PCI
index 5c165d8d70047c6f4869a42c1b0134584d6f100f..89a3534501820dd7bee71c8fddc1e3504dbeffed 100644 (file)
@@ -4,7 +4,9 @@ stmmac-objs:= stmmac_main.o stmmac_ethtool.o stmmac_mdio.o ring_mode.o  \
              dwmac100_core.o dwmac100_dma.o enh_desc.o norm_desc.o     \
              mmc_core.o stmmac_hwtstamp.o stmmac_ptp.o $(stmmac-y)
 
-obj-$(CONFIG_STMMAC_PLATFORM) += stmmac-platform.o
+# Ordering matters. Generic driver must be last.
+obj-$(CONFIG_STMMAC_PLATFORM)  += stmmac-platform.o
+obj-$(CONFIG_DWMAC_GENERIC)    += dwmac-generic.o
 stmmac-platform-objs:= stmmac_platform.o dwmac-meson.o dwmac-sunxi.o   \
                       dwmac-sti.o dwmac-socfpga.o dwmac-rk.o           \
                       dwmac-lpc18xx.o
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-generic.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-generic.c
new file mode 100644 (file)
index 0000000..fb96237
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Generic DWMAC platform driver
+ *
+ * Copyright (C) 2015 Joachim Eastwood <manabian@gmail.com>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2. This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+
+#include "stmmac_platform.h"
+
+static const struct of_device_id dwmac_generic_match[] = {
+       { .compatible = "st,spear600-gmac"},
+       { .compatible = "snps,dwmac-3.610"},
+       { .compatible = "snps,dwmac-3.70a"},
+       { .compatible = "snps,dwmac-3.710"},
+       { .compatible = "snps,dwmac"},
+       { }
+};
+MODULE_DEVICE_TABLE(of, dwmac_generic_match);
+
+static struct platform_driver dwmac_generic_driver = {
+       .probe  = stmmac_pltfr_probe,
+       .remove = stmmac_pltfr_remove,
+       .driver = {
+               .name           = "dwmac-generic",
+               .pm             = &stmmac_pltfr_pm_ops,
+               .of_match_table = of_match_ptr(dwmac_generic_match),
+       },
+};
+module_platform_driver(dwmac_generic_driver);
+
+MODULE_DESCRIPTION("Generic dwmac driver");
+MODULE_LICENSE("GPL v2");
index 0d1f1ec96bc0e8ec1956429a5e03beefed857b49..1777e7124d3e5425d1f9b9bb2e717b1f107691e4 100644 (file)
@@ -43,11 +43,6 @@ static const struct of_device_id stmmac_dt_ids[] = {
        { .compatible = "st,stid127-dwmac", .data = &stid127_dwmac_data},
        { .compatible = "st,stih407-dwmac", .data = &stih4xx_dwmac_data},
        { .compatible = "altr,socfpga-stmmac", .data = &socfpga_gmac_data },
-       { .compatible = "st,spear600-gmac"},
-       { .compatible = "snps,dwmac-3.610"},
-       { .compatible = "snps,dwmac-3.70a"},
-       { .compatible = "snps,dwmac-3.710"},
-       { .compatible = "snps,dwmac"},
        { /* sentinel */ }
 };
 MODULE_DEVICE_TABLE(of, stmmac_dt_ids);