drivers/net/phy/m88e1512: Add interrupt enable

INTn on Marvell PHY can be routed to LED[2] pin. This setting must be
made via LED Timer Control Register on page 3.

Change-Id: Ida1efbb604c382676b9d13ac8bf14de768f93637
Signed-off-by: Mario Scheithauer <mario.scheithauer@siemens.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/69433
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/drivers/net/phy/m88e1512/chip.h b/src/drivers/net/phy/m88e1512/chip.h
index 36a46e9..9a3523d 100644
--- a/src/drivers/net/phy/m88e1512/chip.h
+++ b/src/drivers/net/phy/m88e1512/chip.h
@@ -7,4 +7,5 @@
 	unsigned char led_0_ctrl;	/* LED[0] Control */
 	unsigned char led_1_ctrl;	/* LED[1] Control */
 	unsigned char led_2_ctrl;	/* LED[2] Control */
+	bool enable_int;		/* INTn can be routed to LED[2] pin */
 };
diff --git a/src/drivers/net/phy/m88e1512/m88e1512.c b/src/drivers/net/phy/m88e1512/m88e1512.c
index d0883bf..a8d1c73 100644
--- a/src/drivers/net/phy/m88e1512/m88e1512.c
+++ b/src/drivers/net/phy/m88e1512/m88e1512.c
@@ -34,6 +34,22 @@
 		/* Switch back to page 0. */
 		switch_page(dev, 0);
 	}
+
+	/* INTn can be routed to LED[2] pin. */
+	if (config->enable_int) {
+		printk(BIOS_DEBUG, "%s: INTn is routed to LED[2] pin %s.\n",
+				dev_path(dev->bus->dev), dev->chip_ops->name);
+
+		/* Select page 3 to access LED function control register. */
+		switch_page(dev, 3);
+
+		reg = mdio_read(dev, LED_TIMER_CTRL_REG);
+		setbits16(&reg, LED_IRQ_ENABLE);
+		mdio_write(dev, LED_TIMER_CTRL_REG, reg);
+
+		/* Switch back to page 0. */
+		switch_page(dev, 0);
+	}
 }
 
 struct device_operations m88e1512_ops = {
diff --git a/src/drivers/net/phy/m88e1512/m88e1512.h b/src/drivers/net/phy/m88e1512/m88e1512.h
index 36e3279..ca0f756 100644
--- a/src/drivers/net/phy/m88e1512/m88e1512.h
+++ b/src/drivers/net/phy/m88e1512/m88e1512.h
@@ -7,5 +7,7 @@
 #define PAGE_REG		0x16
 #define LED_FUNC_CTRL_REG	0x10
 #define LED_FUNC_CTRL_MASK	0x0FFF
+#define LED_TIMER_CTRL_REG	0x12
+#define  LED_IRQ_ENABLE		(1 << 7)
 
 #endif /* _PHY_M88E1512_H_ */