Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- 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 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox