Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 5 additions & 24 deletions drivers/net/can/spi/mcp251x.c
Original file line number Diff line number Diff line change
Expand Up @@ -1212,11 +1212,7 @@ static int mcp251x_open(struct net_device *net)
}

mutex_lock(&priv->mcp_lock);
ret = mcp251x_power_enable(priv->transceiver, 1);
if (ret) {
dev_err(&spi->dev, "failed to enable transceiver power: %pe\n", ERR_PTR(ret));
goto out_close_candev;
}
mcp251x_power_enable(priv->transceiver, 1);

priv->force_quit = 0;
priv->tx_skb = NULL;
Expand Down Expand Up @@ -1263,7 +1259,6 @@ static int mcp251x_open(struct net_device *net)
mcp251x_hw_sleep(spi);
out_close:
mcp251x_power_enable(priv->transceiver, 0);
out_close_candev:
close_candev(net);
mutex_unlock(&priv->mcp_lock);
if (release_irq)
Expand Down Expand Up @@ -1499,25 +1494,11 @@ static int __maybe_unused mcp251x_can_resume(struct device *dev)
{
struct spi_device *spi = to_spi_device(dev);
struct mcp251x_priv *priv = spi_get_drvdata(spi);
int ret = 0;

if (priv->after_suspend & AFTER_SUSPEND_POWER) {
ret = mcp251x_power_enable(priv->power, 1);
if (ret) {
dev_err(dev, "failed to restore power: %pe\n", ERR_PTR(ret));
return ret;
}
}

if (priv->after_suspend & AFTER_SUSPEND_UP) {
ret = mcp251x_power_enable(priv->transceiver, 1);
if (ret) {
dev_err(dev, "failed to restore transceiver power: %pe\n", ERR_PTR(ret));
if (priv->after_suspend & AFTER_SUSPEND_POWER)
mcp251x_power_enable(priv->power, 0);
return ret;
}
}
if (priv->after_suspend & AFTER_SUSPEND_POWER)
mcp251x_power_enable(priv->power, 1);
if (priv->after_suspend & AFTER_SUSPEND_UP)
mcp251x_power_enable(priv->transceiver, 1);

if (priv->after_suspend & (AFTER_SUSPEND_POWER | AFTER_SUSPEND_UP))
queue_work(priv->wq, &priv->restart_work);
Expand Down
Loading