All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Hilman <khilman-1D3HCaltpLuhEniVeURVKkEOCMrvLtNR@public.gmane.org>
To: Shubhrajyoti D <shubhrajyoti-l0cyMroinI0@public.gmane.org>
Cc: linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org,
	tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org,
	w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org
Subject: Re: [PATCHv8 00/23]I2C big cleanup
Date: Wed, 12 Sep 2012 15:27:22 -0700	[thread overview]
Message-ID: <874nn2vpv9.fsf@deeprootsystems.com> (raw)
In-Reply-To: <1347447496-16793-1-git-send-email-shubhrajyoti-l0cyMroinI0@public.gmane.org> (Shubhrajyoti D.'s message of "Wed, 12 Sep 2012 16:27:54 +0530")

Shubhrajyoti D <shubhrajyoti-l0cyMroinI0@public.gmane.org> writes:

[...]

>
> This is the cleanup only series.
>   
> Tested on omap4sdp and 3430sdp.

It would be extremely helpful if you would describe how this was tested.
And for me, it would be a source of extreme joy if you described any PM
testing.

I gave this some additional PM testing on 3430/n900, 3530/Overo,
3730/OveroSTORM, 3730/Beagle-xM and 4430/Panda.

I tested v3.6-rc5 which passed all PM tests and then added this series
(by merging the i2c-embedded/i2c-next branch.)  PM tests then fail.

At least on 3530/Overo and 3730/Overo, CORE no longer hits retenion (or
off) during idle.  

The easy way to notice this is to see that even when no i2c transactions
are happening, the runtime PM status for omap_i2c.1 is remains 'active':

# cat omap_i2c.*/power/runtime_status 
active
suspended

Of course that means that clocks are never gated during idle, and CORE
will never hit retention.

I noticed it because my PM tests detected that the CORE powerdomain was
not transitioning to retention (or off) during idle.

To reproduce, simply enable UART timeouts so CORE will hit retention:

echo 3000 > /sys/devices/platform/omap_uart.0/power/autosuspend_delay_ms
echo 3000 > /sys/devices/platform/omap_uart.1/power/autosuspend_delay_ms
echo 3000 > /sys/devices/platform/omap_uart.2/power/autosuspend_delay_ms
echo 3000 > /sys/devices/platform/omap_uart.3/power/autosuspend_delay_ms

and check the core_pwrm state counters:

cat /debug/pm_debug/count

wait > 3 seconds for the UART autosuspend timers to kick in.  At this
point, CORE should be transitioning to retenion in idle (determined by
noticing that the RET counter for core_pwrdm is increasing.)

With $SUBJECT series applied, you'll notice that CORE is not
transitioning.

Kevin

> The following changes since commit 55d512e245bc7699a8800e23df1a24195dd08217:
>
>   Linux 3.6-rc5 (2012-09-08 16:43:45 -0700)
>
> are available in the git repository at:
>   git://gitorious.org/linus-tree/linus-tree.git for_3.7/i2c/big_cleanups
>
>
> Felipe Balbi (22):
>   i2c: omap: switch to devm_* API
>   i2c: omap: simplify num_bytes handling
>   i2c: omap: decrease indentation level on data handling
>   i2c: omap: add blank lines
>   i2c: omap: simplify omap_i2c_ack_stat()
>   i2c: omap: split out [XR]DR and [XR]RDY
>   i2c: omap: improve i462 errata handling
>   i2c: omap: re-factor receive/transmit data loop
>   i2c: omap: switch over to do {} while loop
>   i2c: omap: ack IRQ in parts
>   i2c: omap: switch to platform_get_irq()
>   i2c: omap: bus: add a receiver flag
>   i2c: omap: simplify errata check
>   i2c: omap: always return IRQ_HANDLED
>   i2c: omap: simplify IRQ exit path
>   i2c: omap: resize fifos before each message
>   i2c: omap: get rid of the "complete" label
>   i2c: omap: always return IRQ_HANDLED
>   i2c: omap: switch to threaded IRQ support
>   i2c: omap: remove unnecessary pm_runtime_suspended check
>   i2c: omap: switch over to autosuspend API
>   i2c: omap: sanitize exit path
>
> Shubhrajyoti D (1):
>   i2c: omap: remove redundant status read
>
>  drivers/i2c/busses/i2c-omap.c |  442 +++++++++++++++++++++++++----------------
>  1 files changed, 271 insertions(+), 171 deletions(-)

WARNING: multiple messages have this Message-ID (diff)
From: khilman@deeprootsystems.com (Kevin Hilman)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv8 00/23]I2C big cleanup
Date: Wed, 12 Sep 2012 15:27:22 -0700	[thread overview]
Message-ID: <874nn2vpv9.fsf@deeprootsystems.com> (raw)
In-Reply-To: <1347447496-16793-1-git-send-email-shubhrajyoti@ti.com> (Shubhrajyoti D.'s message of "Wed, 12 Sep 2012 16:27:54 +0530")

Shubhrajyoti D <shubhrajyoti@ti.com> writes:

[...]

>
> This is the cleanup only series.
>   
> Tested on omap4sdp and 3430sdp.

It would be extremely helpful if you would describe how this was tested.
And for me, it would be a source of extreme joy if you described any PM
testing.

I gave this some additional PM testing on 3430/n900, 3530/Overo,
3730/OveroSTORM, 3730/Beagle-xM and 4430/Panda.

I tested v3.6-rc5 which passed all PM tests and then added this series
(by merging the i2c-embedded/i2c-next branch.)  PM tests then fail.

At least on 3530/Overo and 3730/Overo, CORE no longer hits retenion (or
off) during idle.  

The easy way to notice this is to see that even when no i2c transactions
are happening, the runtime PM status for omap_i2c.1 is remains 'active':

# cat omap_i2c.*/power/runtime_status 
active
suspended

Of course that means that clocks are never gated during idle, and CORE
will never hit retention.

I noticed it because my PM tests detected that the CORE powerdomain was
not transitioning to retention (or off) during idle.

To reproduce, simply enable UART timeouts so CORE will hit retention:

echo 3000 > /sys/devices/platform/omap_uart.0/power/autosuspend_delay_ms
echo 3000 > /sys/devices/platform/omap_uart.1/power/autosuspend_delay_ms
echo 3000 > /sys/devices/platform/omap_uart.2/power/autosuspend_delay_ms
echo 3000 > /sys/devices/platform/omap_uart.3/power/autosuspend_delay_ms

and check the core_pwrm state counters:

cat /debug/pm_debug/count

wait > 3 seconds for the UART autosuspend timers to kick in.  At this
point, CORE should be transitioning to retenion in idle (determined by
noticing that the RET counter for core_pwrdm is increasing.)

With $SUBJECT series applied, you'll notice that CORE is not
transitioning.

Kevin

> The following changes since commit 55d512e245bc7699a8800e23df1a24195dd08217:
>
>   Linux 3.6-rc5 (2012-09-08 16:43:45 -0700)
>
> are available in the git repository at:
>   git://gitorious.org/linus-tree/linus-tree.git for_3.7/i2c/big_cleanups
>
>
> Felipe Balbi (22):
>   i2c: omap: switch to devm_* API
>   i2c: omap: simplify num_bytes handling
>   i2c: omap: decrease indentation level on data handling
>   i2c: omap: add blank lines
>   i2c: omap: simplify omap_i2c_ack_stat()
>   i2c: omap: split out [XR]DR and [XR]RDY
>   i2c: omap: improve i462 errata handling
>   i2c: omap: re-factor receive/transmit data loop
>   i2c: omap: switch over to do {} while loop
>   i2c: omap: ack IRQ in parts
>   i2c: omap: switch to platform_get_irq()
>   i2c: omap: bus: add a receiver flag
>   i2c: omap: simplify errata check
>   i2c: omap: always return IRQ_HANDLED
>   i2c: omap: simplify IRQ exit path
>   i2c: omap: resize fifos before each message
>   i2c: omap: get rid of the "complete" label
>   i2c: omap: always return IRQ_HANDLED
>   i2c: omap: switch to threaded IRQ support
>   i2c: omap: remove unnecessary pm_runtime_suspended check
>   i2c: omap: switch over to autosuspend API
>   i2c: omap: sanitize exit path
>
> Shubhrajyoti D (1):
>   i2c: omap: remove redundant status read
>
>  drivers/i2c/busses/i2c-omap.c |  442 +++++++++++++++++++++++++----------------
>  1 files changed, 271 insertions(+), 171 deletions(-)

  parent reply	other threads:[~2012-09-12 22:27 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-12 10:57 [PATCHv8 00/23]I2C big cleanup Shubhrajyoti D
2012-09-12 10:57 ` Shubhrajyoti D
2012-09-12 10:57 ` [PATCHv8 01/22] i2c: omap: switch to devm_* API Shubhrajyoti D
2012-09-12 10:57   ` Shubhrajyoti D
     [not found] ` <1347447496-16793-1-git-send-email-shubhrajyoti-l0cyMroinI0@public.gmane.org>
2012-09-12 10:57   ` [PATCHv8 02/22] i2c: omap: simplify num_bytes handling Shubhrajyoti D
2012-09-12 10:57     ` Shubhrajyoti D
2012-09-12 10:57   ` [PATCHv8 03/22] i2c: omap: decrease indentation level on data handling Shubhrajyoti D
2012-09-12 10:57     ` Shubhrajyoti D
2012-09-12 10:58   ` [PATCHv8 06/22] i2c: omap: split out [XR]DR and [XR]RDY Shubhrajyoti D
2012-09-12 10:58     ` Shubhrajyoti D
2012-09-12 10:58   ` [PATCHv8 07/22] i2c: omap: improve i462 errata handling Shubhrajyoti D
2012-09-12 10:58     ` Shubhrajyoti D
2012-09-12 10:58   ` [PATCHv8 09/22] i2c: omap: switch over to do {} while loop Shubhrajyoti D
2012-09-12 10:58     ` Shubhrajyoti D
2012-09-12 10:58   ` [PATCHv8 10/22] i2c: omap: ack IRQ in parts Shubhrajyoti D
2012-09-12 10:58     ` Shubhrajyoti D
2012-09-12 10:58   ` [PATCHv8 11/22] i2c: omap: switch to platform_get_irq() Shubhrajyoti D
2012-09-12 10:58     ` Shubhrajyoti D
2012-09-12 10:58   ` [PATCHv8 15/22] i2c: omap: simplify IRQ exit path Shubhrajyoti D
2012-09-12 10:58     ` Shubhrajyoti D
2012-09-12 10:58   ` [PATCHv8 16/22] i2c: omap: resize fifos before each message Shubhrajyoti D
2012-09-12 10:58     ` Shubhrajyoti D
2012-09-12 10:58   ` [PATCHv8 17/22] i2c: omap: get rid of the "complete" label Shubhrajyoti D
2012-09-12 10:58     ` Shubhrajyoti D
2012-09-12 10:58   ` [PATCHv8 18/22] i2c: omap: remove redundant status read Shubhrajyoti D
2012-09-12 10:58     ` Shubhrajyoti D
2012-09-12 10:58   ` [PATCHv8 19/22] i2c: omap: switch to threaded IRQ support Shubhrajyoti D
2012-09-12 10:58     ` Shubhrajyoti D
2012-09-12 10:58   ` [PATCHv8 21/22] i2c: omap: switch over to autosuspend API Shubhrajyoti D
2012-09-12 10:58     ` Shubhrajyoti D
     [not found]     ` <1347447496-16793-22-git-send-email-shubhrajyoti-l0cyMroinI0@public.gmane.org>
2012-09-12 23:03       ` Kevin Hilman
2012-09-12 23:03         ` Kevin Hilman
2012-09-12 13:16   ` [PATCHv8 00/23]I2C big cleanup Wolfram Sang
2012-09-12 13:16     ` Wolfram Sang
2012-09-12 13:25     ` Shubhrajyoti
2012-09-12 13:25       ` Shubhrajyoti
     [not found]     ` <20120912131615.GB16547-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-09-12 22:39       ` Kevin Hilman
2012-09-12 22:39         ` Kevin Hilman
2012-09-12 23:08         ` Kevin Hilman
2012-09-12 23:08           ` Kevin Hilman
     [not found]           ` <87wqzysuu3.fsf-1D3HCaltpLuhEniVeURVKkEOCMrvLtNR@public.gmane.org>
2012-09-13  8:52             ` Wolfram Sang
2012-09-13  8:52               ` Wolfram Sang
2012-09-13 18:04           ` Kevin Hilman
2012-09-13 18:04             ` Kevin Hilman
     [not found]             ` <87sjaldcjp.fsf-1D3HCaltpLuhEniVeURVKkEOCMrvLtNR@public.gmane.org>
2012-09-13 18:37               ` Felipe Balbi
2012-09-13 18:37                 ` Felipe Balbi
     [not found]                 ` <20120913183705.GA17430-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-09-13 21:28                   ` Kevin Hilman
2012-09-13 21:28                     ` Kevin Hilman
     [not found]                     ` <87txv1bokd.fsf-1D3HCaltpLuhEniVeURVKkEOCMrvLtNR@public.gmane.org>
2012-09-14 10:40                       ` Shubhrajyoti
2012-09-14 10:40                         ` Shubhrajyoti
2012-09-12 22:27   ` Kevin Hilman [this message]
2012-09-12 22:27     ` Kevin Hilman
     [not found]     ` <874nn2vpv9.fsf-1D3HCaltpLuhEniVeURVKkEOCMrvLtNR@public.gmane.org>
2012-09-13  5:33       ` Felipe Balbi
2012-09-13  5:33         ` Felipe Balbi
2012-09-13 14:31         ` Kevin Hilman
2012-09-13 14:31           ` Kevin Hilman
2012-09-13  6:04       ` Shubhrajyoti
2012-09-13  6:04         ` Shubhrajyoti
     [not found]         ` <50517780.2080002-l0cyMroinI0@public.gmane.org>
2012-09-13  6:36           ` Felipe Balbi
2012-09-13  6:36             ` Felipe Balbi
2012-09-13  6:55           ` Shubhrajyoti
2012-09-13  6:55             ` Shubhrajyoti
2012-09-12 10:57 ` [PATCHv8 04/22] i2c: omap: add blank lines Shubhrajyoti D
2012-09-12 10:57   ` Shubhrajyoti D
2012-09-12 10:57 ` [PATCHv8 05/22] i2c: omap: simplify omap_i2c_ack_stat() Shubhrajyoti D
2012-09-12 10:57   ` Shubhrajyoti D
2012-09-12 10:58 ` [PATCHv8 08/22] i2c: omap: re-factor receive/transmit data loop Shubhrajyoti D
2012-09-12 10:58   ` Shubhrajyoti D
2012-09-12 10:58 ` [PATCHv8 12/22] i2c: omap: bus: add a receiver flag Shubhrajyoti D
2012-09-12 10:58   ` Shubhrajyoti D
2012-09-12 10:58 ` [PATCHv8 13/22] i2c: omap: simplify errata check Shubhrajyoti D
2012-09-12 10:58   ` Shubhrajyoti D
2012-09-12 10:58 ` [PATCHv8 14/22] i2c: omap: always return IRQ_HANDLED Shubhrajyoti D
2012-09-12 10:58   ` Shubhrajyoti D
2012-09-12 10:58 ` [PATCHv8 20/22] i2c: omap: remove unnecessary pm_runtime_suspended check Shubhrajyoti D
2012-09-12 10:58   ` Shubhrajyoti D
2012-09-12 10:58 ` [PATCHv8 22/22] i2c: omap: sanitize exit path Shubhrajyoti D
2012-09-12 10:58   ` Shubhrajyoti D

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=874nn2vpv9.fsf@deeprootsystems.com \
    --to=khilman-1d3hcaltpluheniveurvkkeocmrvltnr@public.gmane.org \
    --cc=ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=shubhrajyoti-l0cyMroinI0@public.gmane.org \
    --cc=tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org \
    --cc=w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
    /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.