net: ethernet: adi: adin1110: add reset GPIO
Add an optional GPIO to be used for a hardware reset of the IC. Signed-off-by: Alexandru Tachici <alexandru.tachici@analog.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c0facc045a
commit
36934cac7a
@ -1082,9 +1082,30 @@ static void adin1110_adjust_link(struct net_device *dev)
|
||||
*/
|
||||
static int adin1110_check_spi(struct adin1110_priv *priv)
|
||||
{
|
||||
struct gpio_desc *reset_gpio;
|
||||
int ret;
|
||||
u32 val;
|
||||
|
||||
reset_gpio = devm_gpiod_get_optional(&priv->spidev->dev, "reset",
|
||||
GPIOD_OUT_LOW);
|
||||
if (reset_gpio) {
|
||||
/* MISO pin is used for internal configuration, can't have
|
||||
* anyone else disturbing the SDO line.
|
||||
*/
|
||||
spi_bus_lock(priv->spidev->controller);
|
||||
|
||||
gpiod_set_value(reset_gpio, 1);
|
||||
fsleep(10000);
|
||||
gpiod_set_value(reset_gpio, 0);
|
||||
|
||||
/* Need to wait 90 ms before interacting with
|
||||
* the MAC after a HW reset.
|
||||
*/
|
||||
fsleep(90000);
|
||||
|
||||
spi_bus_unlock(priv->spidev->controller);
|
||||
}
|
||||
|
||||
ret = adin1110_read_reg(priv, ADIN1110_PHY_ID, &val);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
Loading…
x
Reference in New Issue
Block a user