All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
To: Tony Lindgren <tony@atomide.com>
Cc: robh+dt@kernel.org, pawel.moll@arm.com, mark.rutland@arm.com,
	ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
	thierry.reding@gmail.com, bcousson@baylibre.com,
	linux@arm.linux.org.uk, mchehab@osg.samsung.com,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-pwm@vger.kernel.org, linux-omap@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-media@vger.kernel.org, sre@kernel.org,
	pali.rohar@gmail.com
Subject: Re: [PATCH 5/7] ARM: OMAP: dmtimer: Do not call PM runtime functions when not needed.
Date: Mon, 9 May 2016 23:51:12 +0300	[thread overview]
Message-ID: <5730F840.3050807@gmail.com> (raw)
In-Reply-To: <20160509193624.GH5995@atomide.com>

Hi,

On  9.05.2016 22:36, Tony Lindgren wrote:
> * Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com> [160507 08:24]:
>> once omap_dm_timer_start() is called, which calls omap_dm_timer_enable()
>> and thus pm_runtime_get_sync(), it doesn't make sense to call PM runtime
>> functions again before omap_dm_timer_stop is called(). Otherwise PM runtime
>> functions called in omap_dm_timer_enable/disable lead to long and unneeded
>> delays.
>>
>> Fix that by implementing an "enabled" counter, so the PM runtime functions
>> get called only when really needed.
>>
>> Without that patch Nokia N900 IR TX driver (ir-rx51) does not function.
>

Well, I just tested again, with the $subject patch reverted and 
contradictory to my own words, it worked just fine. I believe the reason 
is that I did hrtimer "migration" after I did the $subject patch. I was 
thinking the reason for the slow transmission was PWM dmtimer, but now 
it turns out it has been the "pulse" dmtimer. So, I think the $subject 
patch should be dropped.

> We should use pm_runtime for the refcounting though and call PM runtime
> unconditionally. Can you try to follow the standard PM runtime usage
> like this:
>

It works without that, but on the other hand, I finally have some 
reference on how PM runtime API should be called :).

> init:
> pm_runtime_use_autosuspend(&timer->pdev->dev);
> pm_runtime_set_autosuspend_delay(&timer->pdev->dev, 200);
> pm_runtime_enable(&timer->pdev->dev);
> ...
> enable:
> pm_runtime_get_sync(&timer->pdev->dev);
> ...
> disable:
> pm_runtime_mark_last_busy(&timer->pdev->dev);
> pm_runtime_put_autosuspend(&timer->pdev->dev);
> ...
> exit:
> pm_runtime_dont_use_autosuspend(&timer->pdev->dev);
> pm_runtime_put_sync(&timer->pdev->dev);
> pm_runtime_disable(&timer->pdev->dev);
>
> No idea what the timeout should be, maybe less than 200 ms. Also we need
> to test that off idle still works with timer1, that might need special
> handling.
>

Thanks,
Ivo

WARNING: multiple messages have this Message-ID (diff)
From: ivo.g.dimitrov.75@gmail.com (Ivaylo Dimitrov)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 5/7] ARM: OMAP: dmtimer: Do not call PM runtime functions when not needed.
Date: Mon, 9 May 2016 23:51:12 +0300	[thread overview]
Message-ID: <5730F840.3050807@gmail.com> (raw)
In-Reply-To: <20160509193624.GH5995@atomide.com>

Hi,

On  9.05.2016 22:36, Tony Lindgren wrote:
> * Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com> [160507 08:24]:
>> once omap_dm_timer_start() is called, which calls omap_dm_timer_enable()
>> and thus pm_runtime_get_sync(), it doesn't make sense to call PM runtime
>> functions again before omap_dm_timer_stop is called(). Otherwise PM runtime
>> functions called in omap_dm_timer_enable/disable lead to long and unneeded
>> delays.
>>
>> Fix that by implementing an "enabled" counter, so the PM runtime functions
>> get called only when really needed.
>>
>> Without that patch Nokia N900 IR TX driver (ir-rx51) does not function.
>

Well, I just tested again, with the $subject patch reverted and 
contradictory to my own words, it worked just fine. I believe the reason 
is that I did hrtimer "migration" after I did the $subject patch. I was 
thinking the reason for the slow transmission was PWM dmtimer, but now 
it turns out it has been the "pulse" dmtimer. So, I think the $subject 
patch should be dropped.

> We should use pm_runtime for the refcounting though and call PM runtime
> unconditionally. Can you try to follow the standard PM runtime usage
> like this:
>

It works without that, but on the other hand, I finally have some 
reference on how PM runtime API should be called :).

> init:
> pm_runtime_use_autosuspend(&timer->pdev->dev);
> pm_runtime_set_autosuspend_delay(&timer->pdev->dev, 200);
> pm_runtime_enable(&timer->pdev->dev);
> ...
> enable:
> pm_runtime_get_sync(&timer->pdev->dev);
> ...
> disable:
> pm_runtime_mark_last_busy(&timer->pdev->dev);
> pm_runtime_put_autosuspend(&timer->pdev->dev);
> ...
> exit:
> pm_runtime_dont_use_autosuspend(&timer->pdev->dev);
> pm_runtime_put_sync(&timer->pdev->dev);
> pm_runtime_disable(&timer->pdev->dev);
>
> No idea what the timeout should be, maybe less than 200 ms. Also we need
> to test that off idle still works with timer1, that might need special
> handling.
>

Thanks,
Ivo

  reply	other threads:[~2016-05-09 20:51 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-07 15:21 [PATCH 0/7] ir-rx51 driver fixes Ivaylo Dimitrov
2016-05-07 15:21 ` Ivaylo Dimitrov
2016-05-07 15:21 ` [PATCH 1/7] ir-rx51: Fix build after multiarch changes broke it Ivaylo Dimitrov
2016-05-07 15:21   ` Ivaylo Dimitrov
2016-05-07 15:21   ` Ivaylo Dimitrov
     [not found] ` <1462634508-24961-1-git-send-email-ivo.g.dimitrov.75-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-05-07 15:21   ` [PATCH 2/7] pwm: omap-dmtimer: Allow for setting dmtimer clock source Ivaylo Dimitrov
2016-05-07 15:21     ` Ivaylo Dimitrov
2016-05-07 15:21     ` Ivaylo Dimitrov
2016-05-09 20:01     ` Rob Herring
2016-05-09 20:01       ` Rob Herring
2016-05-07 15:21 ` [PATCH 3/7] [media] ir-rx51: use PWM framework instead of OMAP dmtimer Ivaylo Dimitrov
2016-05-07 15:21   ` Ivaylo Dimitrov
2016-05-07 15:21 ` [PATCH 4/7] [media] ir-rx51: add DT support to driver Ivaylo Dimitrov
2016-05-07 15:21   ` Ivaylo Dimitrov
2016-05-09 20:06   ` Rob Herring
2016-05-09 20:06     ` Rob Herring
2016-05-09 20:53     ` Ivaylo Dimitrov
2016-05-09 20:53       ` Ivaylo Dimitrov
2016-05-09 20:53       ` Ivaylo Dimitrov
     [not found]       ` <5730F8BA.5000402-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-05-09 21:07         ` Rob Herring
2016-05-09 21:07           ` Rob Herring
2016-05-09 21:07           ` Rob Herring
2016-05-09 22:06           ` Ivaylo Dimitrov
2016-05-09 22:06             ` Ivaylo Dimitrov
2016-05-10  2:18           ` Sebastian Reichel
2016-05-10  2:18             ` Sebastian Reichel
2016-05-11 14:14             ` Rob Herring
2016-05-11 14:14               ` Rob Herring
2016-05-13  6:15               ` Ivaylo Dimitrov
2016-05-13  6:15                 ` Ivaylo Dimitrov
2016-05-13 14:01                 ` Sebastian Reichel
2016-05-13 14:01                   ` Sebastian Reichel
2016-05-07 15:21 ` [PATCH 5/7] ARM: OMAP: dmtimer: Do not call PM runtime functions when not needed Ivaylo Dimitrov
2016-05-07 15:21   ` Ivaylo Dimitrov
2016-05-07 15:21   ` Ivaylo Dimitrov
     [not found]   ` <1462634508-24961-6-git-send-email-ivo.g.dimitrov.75-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-05-09 19:36     ` Tony Lindgren
2016-05-09 19:36       ` Tony Lindgren
2016-05-09 19:36       ` Tony Lindgren
2016-05-09 20:51       ` Ivaylo Dimitrov [this message]
2016-05-09 20:51         ` Ivaylo Dimitrov
2016-06-10 10:22         ` Tony Lindgren
2016-06-10 10:22           ` Tony Lindgren
2016-06-10 21:21           ` Ivaylo Dimitrov
2016-06-10 21:21             ` Ivaylo Dimitrov
2016-06-13  7:10             ` Tony Lindgren
2016-06-13  7:10               ` Tony Lindgren
2016-06-13  7:39               ` Tony Lindgren
2016-06-13  7:39                 ` Tony Lindgren
2016-06-13 18:58               ` Ivaylo Dimitrov
2016-06-13 18:58                 ` Ivaylo Dimitrov
     [not found]                 ` <575F025F.7000101-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-06-14  7:53                   ` Tony Lindgren
2016-06-14  7:53                     ` Tony Lindgren
2016-06-14  7:53                     ` Tony Lindgren
2016-05-07 15:21 ` [PATCH 6/7] [media] ir-rx51: use hrtimer instead of dmtimer Ivaylo Dimitrov
2016-05-07 15:21   ` Ivaylo Dimitrov
2016-05-07 15:21 ` [PATCH 7/7] ARM: dts: n900: enable lirc-rx51 driver Ivaylo Dimitrov
2016-05-07 15:21   ` Ivaylo Dimitrov
2016-06-10 10:20   ` Tony Lindgren
2016-06-10 10:20     ` Tony Lindgren
2016-06-13 18:17 ` [PATCH 0/7] ir-rx51 driver fixes Pali Rohár
2016-06-13 18:17   ` Pali Rohár
2016-06-13 18:48   ` Ivaylo Dimitrov
2016-06-13 18:48     ` Ivaylo Dimitrov

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=5730F840.3050807@gmail.com \
    --to=ivo.g.dimitrov.75@gmail.com \
    --cc=bcousson@baylibre.com \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=mchehab@osg.samsung.com \
    --cc=pali.rohar@gmail.com \
    --cc=pawel.moll@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=sre@kernel.org \
    --cc=thierry.reding@gmail.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.