From 155cf5cd2ee844e9fb86f0f2487ccca65e560f33 Mon Sep 17 00:00:00 2001 From: Mario Scheithauer Date: Thu, 10 Nov 2022 09:34:57 +0100 Subject: [PATCH] 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 Reviewed-on: https://review.coreboot.org/c/coreboot/+/69433 Reviewed-by: Arthur Heymans Tested-by: build bot (Jenkins) --- src/drivers/net/phy/m88e1512/chip.h | 1 + src/drivers/net/phy/m88e1512/m88e1512.c | 16 ++++++++++++++++ src/drivers/net/phy/m88e1512/m88e1512.h | 2 ++ 3 files changed, 19 insertions(+) diff --git a/src/drivers/net/phy/m88e1512/chip.h b/src/drivers/net/phy/m88e1512/chip.h index 36a46e93c9..9a3523d7ee 100644 --- a/src/drivers/net/phy/m88e1512/chip.h +++ b/src/drivers/net/phy/m88e1512/chip.h @@ -7,4 +7,5 @@ struct drivers_net_phy_m88e1512_config { 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 d0883bf9d6..a8d1c730a1 100644 --- a/src/drivers/net/phy/m88e1512/m88e1512.c +++ b/src/drivers/net/phy/m88e1512/m88e1512.c @@ -34,6 +34,22 @@ static void m88e1512_init(struct device *dev) /* 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(®, 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 36e3279689..ca0f756693 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_ */