From: Stefan Agner <stefan@agner.ch>
To: wg@grandegger.com, mkl@pengutronix.de
Cc: chripell@fsfe.org, linux-can@vger.kernel.org,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] can: mcp251x: fix resume when device is down
Date: Wed, 15 Jul 2015 15:05:35 +0200 [thread overview]
Message-ID: <a52e25bc10d3d669b41f19faedf82d57@agner.ch> (raw)
In-Reply-To: <1431966808-26213-1-git-send-email-stefan@agner.ch>
Hi Marc, hi Wolfgang,
Any comment on this two patches? I don't think these have made it in any
tree...
--
Stefan
On 2015-05-18 18:33, Stefan Agner wrote:
> If a valid power regulator or a dummy regulator is used (which
> happens to be the case when no regulator is specified), restart_work
> is queued no matter whether the device was running or not at suspend
> time. Since work queues get initialized in the ndo_open callback,
> resuming leads to a NULL pointer exception.
>
> Reverse exactly the steps executed at suspend time:
> - Enable the power regulator in any case
> - Enable the transceiver regulator if the device was running, even in
> case we have a power regulator
> - Queue restart_work only in case the device was running
>
> Fixes: bf66f3736a94 ("can: mcp251x: Move to threaded interrupts
> instead of workqueues.")
> Signed-off-by: Stefan Agner <stefan@agner.ch>
> ---
> drivers/net/can/spi/mcp251x.c | 13 ++++++-------
> 1 file changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/net/can/spi/mcp251x.c b/drivers/net/can/spi/mcp251x.c
> index bf63fee..34c625e 100644
> --- a/drivers/net/can/spi/mcp251x.c
> +++ b/drivers/net/can/spi/mcp251x.c
> @@ -1221,17 +1221,16 @@ 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);
>
> - if (priv->after_suspend & AFTER_SUSPEND_POWER) {
> + 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);
> queue_work(priv->wq, &priv->restart_work);
> } else {
> - if (priv->after_suspend & AFTER_SUSPEND_UP) {
> - mcp251x_power_enable(priv->transceiver, 1);
> - queue_work(priv->wq, &priv->restart_work);
> - } else {
> - priv->after_suspend = 0;
> - }
> + priv->after_suspend = 0;
> }
> +
> priv->force_quit = 0;
> enable_irq(spi->irq);
> return 0;
next prev parent reply other threads:[~2015-07-15 13:05 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-18 16:33 [PATCH 1/2] can: mcp251x: fix resume when device is down Stefan Agner
2015-05-18 16:33 ` [PATCH 2/2] can: mcp251x: get regulators optionally Stefan Agner
2015-07-15 13:05 ` Stefan Agner [this message]
2015-07-15 13:15 ` [PATCH 1/2] can: mcp251x: fix resume when device is down Marc Kleine-Budde
2015-07-15 13:17 ` Stefan Agner
-- strict thread matches above, loose matches on Subject: below --
2015-07-16 8:33 pull-request: can 2015-07-16 Marc Kleine-Budde
2015-07-16 8:33 ` [PATCH 1/2] can: mcp251x: fix resume when device is down Marc Kleine-Budde
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a52e25bc10d3d669b41f19faedf82d57@agner.ch \
--to=stefan@agner.ch \
--cc=chripell@fsfe.org \
--cc=linux-can@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mkl@pengutronix.de \
--cc=netdev@vger.kernel.org \
--cc=wg@grandegger.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.