All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sourav Poddar <sourav.poddar@ti.com>
To: Kevin Hilman <khilman@linaro.org>
Cc: gregkh@linuxfoundation.org, tony@atomide.com,
	rmk+kernel@arm.linux.org.uk, linux-serial@vger.kernel.org,
	linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCHv3 2/5] driver: serial: omap: prevent runtime PM for "no_console_suspend"
Date: Thu, 25 Apr 2013 10:58:03 +0530	[thread overview]
Message-ID: <5178BEE3.80600@ti.com> (raw)
In-Reply-To: <87sj2f394t.fsf@linaro.org>

Hi Kevin,
On Thursday 25 April 2013 03:04 AM, Kevin Hilman wrote:
> 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>
>> ---
>>   drivers/tty/serial/omap-serial.c |   29 ++++++++++++++++++++++++++++-
>>   1 files changed, 28 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
>> index 08332f3..468e7ad 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)))
>> @@ -1278,6 +1279,24 @@ 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);
>> +
>> +	if (!console_suspend_enabled&&  uart_console(&up->port))
>> +		up->is_suspending = true;
> This flag should be set unconditionally.  IOW, the system is suspending
> independently of the values of those flags.  And then...
>
True. Will change.
>> +	return 0;
>> +}
>> +
>> +static void serial_omap_complete(struct device *dev)
>> +{
>> +	struct uart_omap_port *up = dev_get_drvdata(dev);
>> +
>> +	if (!console_suspend_enabled&&  uart_console(&up->port))
>> +		up->is_suspending = false;
>> +}
>> +
>>   static int serial_omap_suspend(struct device *dev)
>>   {
>>   	struct uart_omap_port *up = dev_get_drvdata(dev);
>> @@ -1296,7 +1315,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)
>>   {
>> @@ -1582,6 +1604,9 @@ 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;
>>
>> +	if (up->is_suspending)
>> +		return -EBUSY;
> ... the console checks should be here.
>
Ok. will change.
>>   	if (!up)
>>   		return -EINVAL;
>>
>> @@ -1632,6 +1657,8 @@ static const struct dev_pm_ops serial_omap_dev_pm_ops = {
>>   	SET_SYSTEM_SLEEP_PM_OPS(serial_omap_suspend, serial_omap_resume)
>>   	SET_RUNTIME_PM_OPS(serial_omap_runtime_suspend,
>>   				serial_omap_runtime_resume, NULL)
>> +	.prepare        = serial_omap_prepare,
>> +	.complete       = serial_omap_complete,
>>   };
>>
>>   #if defined(CONFIG_OF)
> Kevin

WARNING: multiple messages have this Message-ID (diff)
From: Sourav Poddar <sourav.poddar@ti.com>
To: Kevin Hilman <khilman@linaro.org>
Cc: <gregkh@linuxfoundation.org>, <tony@atomide.com>,
	<rmk+kernel@arm.linux.org.uk>, <linux-serial@vger.kernel.org>,
	<linux-omap@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCHv3 2/5] driver: serial: omap: prevent runtime PM for "no_console_suspend"
Date: Thu, 25 Apr 2013 10:58:03 +0530	[thread overview]
Message-ID: <5178BEE3.80600@ti.com> (raw)
In-Reply-To: <87sj2f394t.fsf@linaro.org>

Hi Kevin,
On Thursday 25 April 2013 03:04 AM, Kevin Hilman wrote:
> 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>
>> ---
>>   drivers/tty/serial/omap-serial.c |   29 ++++++++++++++++++++++++++++-
>>   1 files changed, 28 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
>> index 08332f3..468e7ad 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)))
>> @@ -1278,6 +1279,24 @@ 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);
>> +
>> +	if (!console_suspend_enabled&&  uart_console(&up->port))
>> +		up->is_suspending = true;
> This flag should be set unconditionally.  IOW, the system is suspending
> independently of the values of those flags.  And then...
>
True. Will change.
>> +	return 0;
>> +}
>> +
>> +static void serial_omap_complete(struct device *dev)
>> +{
>> +	struct uart_omap_port *up = dev_get_drvdata(dev);
>> +
>> +	if (!console_suspend_enabled&&  uart_console(&up->port))
>> +		up->is_suspending = false;
>> +}
>> +
>>   static int serial_omap_suspend(struct device *dev)
>>   {
>>   	struct uart_omap_port *up = dev_get_drvdata(dev);
>> @@ -1296,7 +1315,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)
>>   {
>> @@ -1582,6 +1604,9 @@ 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;
>>
>> +	if (up->is_suspending)
>> +		return -EBUSY;
> ... the console checks should be here.
>
Ok. will change.
>>   	if (!up)
>>   		return -EINVAL;
>>
>> @@ -1632,6 +1657,8 @@ static const struct dev_pm_ops serial_omap_dev_pm_ops = {
>>   	SET_SYSTEM_SLEEP_PM_OPS(serial_omap_suspend, serial_omap_resume)
>>   	SET_RUNTIME_PM_OPS(serial_omap_runtime_suspend,
>>   				serial_omap_runtime_resume, NULL)
>> +	.prepare        = serial_omap_prepare,
>> +	.complete       = serial_omap_complete,
>>   };
>>
>>   #if defined(CONFIG_OF)
> Kevin


  reply	other threads:[~2013-04-25  5:28 UTC|newest]

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

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=5178BEE3.80600@ti.com \
    --to=sourav.poddar@ti.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=khilman@linaro.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=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.