diff options
author | Steffen Trumtrar <s.trumtrar@pengutronix.de> | 2018-01-10 09:14:17 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-01-11 09:34:33 +0100 |
commit | c1f902841ce3c759a4dddbf02ccc8012e4c50162 (patch) | |
tree | 0776271a5df71a70d39f6b2f605554cd8be2b2ed /drivers/net/designware_generic.c | |
parent | 896894088e7de081caddb5fc8dc653bc0f5ac7bb (diff) | |
download | barebox-c1f902841ce3c759a4dddbf02ccc8012e4c50162.tar.gz barebox-c1f902841ce3c759a4dddbf02ccc8012e4c50162.tar.xz |
net: designware: move probe to generic driver
The designware ethernet core is used on multiple different SoCs.
The linux kernel has a generic driver and SoC-specific drivers.
Do the same here.
Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/net/designware_generic.c')
-rw-r--r-- | drivers/net/designware_generic.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/drivers/net/designware_generic.c b/drivers/net/designware_generic.c new file mode 100644 index 0000000000..0e5b9c067b --- /dev/null +++ b/drivers/net/designware_generic.c @@ -0,0 +1,59 @@ +/* + * (C) Copyright 2010 + * Vipin Kumar, ST Micoelectronics, vipin.kumar@st.com. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +/* + * Designware ethernet IP driver for u-boot + */ + +#include <common.h> +#include "designware.h" + +static struct dw_eth_drvdata dwmac_370a_drvdata = { + .enh_desc = 1, +}; + +static int dwc_ether_probe(struct device_d *dev) +{ + struct dw_eth_dev *dwc; + + dwc = dwc_drv_probe(dev); + if (IS_ERR(dwc)) + return PTR_ERR(dwc); + + return 0; +} + +static __maybe_unused struct of_device_id dwc_ether_compatible[] = { + { + .compatible = "snps,dwmac-3.70a", + .data = &dwmac_370a_drvdata, + }, { + .compatible = "snps,dwmac-3.72a", + .data = &dwmac_370a_drvdata, + }, { + /* sentinel */ + } +}; + +static struct driver_d dwc_ether_driver = { + .name = "designware_eth", + .probe = dwc_ether_probe, + .of_compatible = DRV_OF_COMPAT(dwc_ether_compatible), +}; +device_platform_driver(dwc_ether_driver); |