All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Hilman <khilman@linaro.org>
To: Sourav Poddar <sourav.poddar@ti.com>
Cc: gregkh@linuxfoundation.org, tony@atomide.com,
	rmk+kernel@arm.linux.org.uk, linux-kernel@vger.kernel.org,
	linux-serial@vger.kernel.org, linux-omap@vger.kernel.org
Subject: Re: [PATCHv4 2/5] driver: serial: omap: prevent runtime PM for "no_console_suspend"
Date: Fri, 26 Apr 2013 11:28:58 -0700	[thread overview]
Message-ID: <87mwslw3h1.fsf@linaro.org> (raw)
In-Reply-To: <1366980168-30566-3-git-send-email-sourav.poddar@ti.com> (Sourav Poddar's message of "Fri, 26 Apr 2013 18:12:45 +0530")

Sourav Poddar <sourav.poddar@ti.com> writes:

> The driver manages "no_console_suspend" by preventing runtime PM
> during the suspend path, which forces the console UART to stay awake.
>
> Signed-off-by: Sourav Poddar <sourav.poddar@ti.com>
> Reviewed-by: Felipe Balbi <balbi@ti.com>
> ---
>  drivers/tty/serial/omap-serial.c |   28 +++++++++++++++++++++++++++-
>  1 files changed, 27 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
> index 30d4f7a..eddff3c 100644
> --- a/drivers/tty/serial/omap-serial.c
> +++ b/drivers/tty/serial/omap-serial.c
> @@ -161,6 +161,7 @@ struct uart_omap_port {
>  	u32			calc_latency;
>  	struct work_struct	qos_work;
>  	struct pinctrl		*pins;
> +	bool			is_suspending;
>  };
>  
>  #define to_uart_omap_port(p)	((container_of((p), struct uart_omap_port, port)))
> @@ -1312,6 +1313,22 @@ static struct uart_driver serial_omap_reg = {
>  };
>  
>  #ifdef CONFIG_PM_SLEEP
> +static int serial_omap_prepare(struct device *dev)
> +{
> +	struct uart_omap_port *up = dev_get_drvdata(dev);
> +
> +	up->is_suspending = true;
> +
> +	return 0;
> +}
> +
> +static void serial_omap_complete(struct device *dev)
> +{
> +	struct uart_omap_port *up = dev_get_drvdata(dev);
> +
> +	up->is_suspending = false;
> +}
> +
>  static int serial_omap_suspend(struct device *dev)
>  {
>  	struct uart_omap_port *up = dev_get_drvdata(dev);
> @@ -1330,7 +1347,10 @@ static int serial_omap_resume(struct device *dev)
>  
>  	return 0;
>  }
> -#endif
> +#else
> +#define serial_omap_prepare NULL
> +#define serial_omap_prepare NULL
> +#endif /* CONFIG_PM_SLEEP */
>  
>  static void omap_serial_fill_features_erratas(struct uart_omap_port *up)
>  {
> @@ -1616,6 +1636,10 @@ static int serial_omap_runtime_suspend(struct device *dev)
>  	struct uart_omap_port *up = dev_get_drvdata(dev);
>  	struct omap_uart_port_info *pdata = dev->platform_data;
>  

I'd like to see a comment here about why we return error.  It's written
in the changelog, but it deserves a comment here as well.  Something like:

When using 'no_console_suspend', the console UART must not be suspended.
Since driver suspend is managed by runtime suspend, preventing runtime
suspend (by returning error) will keep device active during suspend.


> +	if (up->is_suspending && !console_suspend_enabled
> +			&& uart_console(&up->port))

nit: can you put the '&&' at the end of the first line, and have the
2nd line line up with the start of the first line?

See other examples of similiar multi-line checks elsewhere in the
driver.

Other than those minor things, this patch is good.

Then, can you repost and break this into 2 series since they can go
independently.

Patches 1-2 need to go through the serial tree (Greg), and I will queue
up the OMAP specific changes once Greg has queued the serial core changes.

Kevin

WARNING: multiple messages have this Message-ID (diff)
From: Kevin Hilman <khilman@linaro.org>
To: Sourav Poddar <sourav.poddar@ti.com>
Cc: <gregkh@linuxfoundation.org>, <tony@atomide.com>,
	<rmk+kernel@arm.linux.org.uk>, <linux-kernel@vger.kernel.org>,
	<linux-serial@vger.kernel.org>, <linux-omap@vger.kernel.org>
Subject: Re: [PATCHv4 2/5] driver: serial: omap: prevent runtime PM for "no_console_suspend"
Date: Fri, 26 Apr 2013 11:28:58 -0700	[thread overview]
Message-ID: <87mwslw3h1.fsf@linaro.org> (raw)
In-Reply-To: <1366980168-30566-3-git-send-email-sourav.poddar@ti.com> (Sourav Poddar's message of "Fri, 26 Apr 2013 18:12:45 +0530")

Sourav Poddar <sourav.poddar@ti.com> writes:

> The driver manages "no_console_suspend" by preventing runtime PM
> during the suspend path, which forces the console UART to stay awake.
>
> Signed-off-by: Sourav Poddar <sourav.poddar@ti.com>
> Reviewed-by: Felipe Balbi <balbi@ti.com>
> ---
>  drivers/tty/serial/omap-serial.c |   28 +++++++++++++++++++++++++++-
>  1 files changed, 27 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
> index 30d4f7a..eddff3c 100644
> --- a/drivers/tty/serial/omap-serial.c
> +++ b/drivers/tty/serial/omap-serial.c
> @@ -161,6 +161,7 @@ struct uart_omap_port {
>  	u32			calc_latency;
>  	struct work_struct	qos_work;
>  	struct pinctrl		*pins;
> +	bool			is_suspending;
>  };
>  
>  #define to_uart_omap_port(p)	((container_of((p), struct uart_omap_port, port)))
> @@ -1312,6 +1313,22 @@ static struct uart_driver serial_omap_reg = {
>  };
>  
>  #ifdef CONFIG_PM_SLEEP
> +static int serial_omap_prepare(struct device *dev)
> +{
> +	struct uart_omap_port *up = dev_get_drvdata(dev);
> +
> +	up->is_suspending = true;
> +
> +	return 0;
> +}
> +
> +static void serial_omap_complete(struct device *dev)
> +{
> +	struct uart_omap_port *up = dev_get_drvdata(dev);
> +
> +	up->is_suspending = false;
> +}
> +
>  static int serial_omap_suspend(struct device *dev)
>  {
>  	struct uart_omap_port *up = dev_get_drvdata(dev);
> @@ -1330,7 +1347,10 @@ static int serial_omap_resume(struct device *dev)
>  
>  	return 0;
>  }
> -#endif
> +#else
> +#define serial_omap_prepare NULL
> +#define serial_omap_prepare NULL
> +#endif /* CONFIG_PM_SLEEP */
>  
>  static void omap_serial_fill_features_erratas(struct uart_omap_port *up)
>  {
> @@ -1616,6 +1636,10 @@ static int serial_omap_runtime_suspend(struct device *dev)
>  	struct uart_omap_port *up = dev_get_drvdata(dev);
>  	struct omap_uart_port_info *pdata = dev->platform_data;
>  

I'd like to see a comment here about why we return error.  It's written
in the changelog, but it deserves a comment here as well.  Something like:

When using 'no_console_suspend', the console UART must not be suspended.
Since driver suspend is managed by runtime suspend, preventing runtime
suspend (by returning error) will keep device active during suspend.


> +	if (up->is_suspending && !console_suspend_enabled
> +			&& uart_console(&up->port))

nit: can you put the '&&' at the end of the first line, and have the
2nd line line up with the start of the first line?

See other examples of similiar multi-line checks elsewhere in the
driver.

Other than those minor things, this patch is good.

Then, can you repost and break this into 2 series since they can go
independently.

Patches 1-2 need to go through the serial tree (Greg), and I will queue
up the OMAP specific changes once Greg has queued the serial core changes.

Kevin

  reply	other threads:[~2013-04-26 18:28 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-26 12:42 [PATCHv4 0/5] Serial Omap fixes and cleanups Sourav Poddar
2013-04-26 12:42 ` Sourav Poddar
2013-04-26 12:42 ` [PATCHv4 1/5] driver: tty: serial: Move "uart_console" def to core header file Sourav Poddar
2013-04-26 12:42   ` Sourav Poddar
2013-04-26 12:42 ` [PATCHv4 2/5] driver: serial: omap: prevent runtime PM for "no_console_suspend" Sourav Poddar
2013-04-26 12:42   ` Sourav Poddar
2013-04-26 18:28   ` Kevin Hilman [this message]
2013-04-26 18:28     ` Kevin Hilman
2013-04-26 18:39     ` Sourav Poddar
2013-04-26 18:39       ` Sourav Poddar
2013-04-26 12:42 ` [PATCHv4 3/5] arm: omap2+: serial: remove no_console_suspend support Sourav Poddar
2013-04-26 12:42   ` Sourav Poddar
2013-04-26 12:42 ` [PATCHv4 4/5] arm: dts: am33xx: Remove "ti,no_idle_on_suspend" property Sourav Poddar
2013-04-26 12:42   ` Sourav Poddar
2013-04-26 12:42 ` [PATCHv4 5/5] arm: omap2+: omap_device: remove no_idle_on_suspend Sourav Poddar
2013-04-26 12:42   ` Sourav Poddar

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=87mwslw3h1.fsf@linaro.org \
    --to=khilman@linaro.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=rmk+kernel@arm.linux.org.uk \
    --cc=sourav.poddar@ti.com \
    --cc=tony@atomide.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.