[PATCH 09/15] net fec_imx: oftree support
Sascha Hauer
s.hauer at pengutronix.de
Wed Sep 12 16:06:41 EDT 2012
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
drivers/net/fec_imx.c | 34 +++++++++++++++++++++++++++-------
1 file changed, 27 insertions(+), 7 deletions(-)
diff --git a/drivers/net/fec_imx.c b/drivers/net/fec_imx.c
index 599a9b4..d9a97b8 100644
--- a/drivers/net/fec_imx.c
+++ b/drivers/net/fec_imx.c
@@ -617,6 +617,7 @@ static int fec_probe(struct device_d *dev)
struct eth_device *edev;
struct fec_priv *fec;
void *base;
+
#ifdef CONFIG_ARCH_IMX27
PCCR0 |= PCCR0_FEC_EN;
#endif
@@ -656,13 +657,19 @@ static int fec_probe(struct device_d *dev)
fec_alloc_receive_packets(fec, FEC_RBD_NUM, FEC_MAX_PKT_SIZE);
- fec->xcv_type = pdata->xcv_type;
+ if (pdata)
+ fec->xcv_type = pdata->xcv_type;
+ else
+ fec->xcv_type = MII100;
if (fec->xcv_type != SEVENWIRE) {
fec->miidev.read = fec_miidev_read;
fec->miidev.write = fec_miidev_write;
- fec->miidev.address = pdata->phy_addr;
- fec->miidev.flags = pdata->xcv_type == MII10 ? MIIDEV_FORCE_10 : 0;
+ if (pdata) {
+ fec->miidev.address = pdata->phy_addr;
+ fec->miidev.flags = pdata->xcv_type == MII10 ? MIIDEV_FORCE_10 : 0;
+ } else
+ fec->miidev.address = 0;
fec->miidev.edev = edev;
fec->miidev.parent = dev;
@@ -680,19 +687,32 @@ static void fec_remove(struct device_d *dev)
fec_halt(&fec->edev);
}
+static __maybe_unused struct of_device_id imx_fec_dt_ids[] = {
+ {
+ .compatible = "fsl,imx25-fec",
+ }, {
+ .compatible = "fsl,imx27-fec",
+ }, {
+ .compatible = "fsl,imx6q-fec",
+ }, {
+ /* sentinel */
+ }
+};
+
/**
* Driver description for registering
*/
static struct driver_d fec_driver = {
- .name = "fec_imx",
- .probe = fec_probe,
+ .name = "fec_imx",
+ .probe = fec_probe,
.remove = fec_remove,
+ .of_compatible = DRV_OF_COMPAT(imx_fec_dt_ids),
};
static int fec_register(void)
{
- register_driver(&fec_driver);
- return 0;
+ register_driver(&fec_driver);
+ return 0;
}
device_initcall(fec_register);
--
1.7.10.4
More information about the barebox
mailing list