mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 11:03:43 +02:00
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)
|
static int adin1110_check_spi(struct adin1110_priv *priv)
|
||||||
{
|
{
|
||||||
|
struct gpio_desc *reset_gpio;
|
||||||
int ret;
|
int ret;
|
||||||
u32 val;
|
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);
|
ret = adin1110_read_reg(priv, ADIN1110_PHY_ID, &val);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user