diff --git a/components/drivers/spi/enc28j60.c b/components/drivers/spi/enc28j60.c index 9266325581eb50707ca5486b446be30753ea28f7..1daaea367a954de40fd3613aada8bbc4eff7d5f4 100644 --- a/components/drivers/spi/enc28j60.c +++ b/components/drivers/spi/enc28j60.c @@ -321,6 +321,8 @@ static rt_err_t enc28j60_init(rt_device_t dev) enc28j60_phy_write(spi_device, PHCON1, PHCON1_PDPXMD); // full duplex // no loopback of transmitted frames enc28j60_phy_write(spi_device, PHCON2, PHCON2_HDLDIS); + /* enable PHY link changed interrupt. */ + enc28j60_phy_write(spi_device, PHIE, PHIE_PGEIE | PHIE_PLNKIE); enc28j60_set_bank(spi_device, ECON2); spi_write_op(spi_device, ENC28J60_BIT_FIELD_SET, ECON2, ECON2_AUTOINC); diff --git a/components/drivers/spi/enc28j60.h b/components/drivers/spi/enc28j60.h index 966f81eb5d6b4d20dfb09ca23a29390be6d1ab39..1207efdec6ec31997c300d5a4e5009d6bac88682 100644 --- a/components/drivers/spi/enc28j60.h +++ b/components/drivers/spi/enc28j60.h @@ -221,6 +221,12 @@ #define PHCON2_TXDIS 0x2000 #define PHCON2_JABBER 0x0400 #define PHCON2_HDLDIS 0x0100 +/* ENC28J60 PHY PHIE Register Bit Definitions */ +#define PHIE_PLNKIE (1 << 4) +#define PHIE_PGEIE (1 << 1) +/* ENC28J60 PHY PHIR Register Bit Definitions */ +#define PHIR_PLNKIF (1 << 4) +#define PHIR_PGEIF (1 << 1) // ENC28J60 Packet Control Byte Bit Definitions #define PKTCTRL_PHUGEEN 0x08