From: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
To: Thierry Reding
<thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>,
Jon Mayo <jmayo-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Cc: Peter De Schrijver
<pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Prashant Gaikwad
<pgaikwad-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
Joseph Lo <josephl-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Subject: Re: Tegra DRM with HDMI support (\o/)
Date: Wed, 17 Oct 2012 09:20:45 -0600 [thread overview]
Message-ID: <507ECCCD.7000600@wwwdotorg.org> (raw)
In-Reply-To: <20121017065547.GE21783-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
On 10/17/2012 12:55 AM, Thierry Reding wrote:
> On Tue, Oct 16, 2012 at 11:28:27AM +0300, Peter De Schrijver
> wrote:
>>>
>>> There are two ways this could work:
>>>
>>> 1)
>>>
>>> All clocks needed could be represented in the node of that
>>> device (or perhaps in the DC node?) For example, perhaps hdmi
>>> might contain:
>>>
>>> clocks = <&car TEGRA_CLK_PLL_D> <&car TEGRA_CLK_PLL_D_OUT_0>
>>> <&car TEGRA_CLK_HDMI> ...; clock-names = "pll_d",
>>> "pll_d_out_0", "hdmi", ...;
>>>
>>> That should work (I think) with pretty much no modification to
>>> the current code, other than calling clk_get(dev, "hdmi")
>>> rather than clk_get_sys(NULL, "hdmi").
>>>
>>> However, I'm not sure this is the best way or not; this still
>>> requires the HDMI driver to implement all the clocking policy
>>> (e.g. is the HDMI clock a child of PLL_D, PLL_C, PLL_P, ... and
>>> what rate should the parent PLL be set to, etc.)
>>>
>>> For example, what if the clock frequency HDMI needs can be
>>> generated by PLL_C, so we make PLL_C the parent of HDMI (so as
>>> to save power by not running PLL_D, or to use PLL_D for a
>>> second display head), then something else comes along and /has/
>>> to use PLL_C. If the two childs' frequency requirements are the
>>> same, everything is fine. If the two child's frequency
>>> requirements are not compatible, we might need to spin up PLL_D
>>> and reparent HDMI onto it. More complex scenarios are possible
>>> where PLL_C needs to be reprogrammed, yet can be in a way that
>>> supports both HDMI and some other requirement, so we only need
>>> to temporarily move HDMI onto PLL_D, then reprogram PLL_C, then
>>> move HDMI back to it and spin PLL_D down. All these decisions
>>> should be made centrally in the Tegra clock driver, or at least
>>> some kind of centralized policy management point, and not by
>>> the HDMI driver:
>>>
>>
>> This assumes we can glitch free provide a new parent clock to eg.
>> HDMI, I doubt the hardware can do that.
>
> I think for starters it would be enough if the clock code was
> smart enough to choose an appropriate parent. We could start
> thinking about power optimizations later. I took a brief look at
> the current code and it seems like all the information is already
> there, so we just need an algorithm that figures out the proper
> parent that can provide the right frequency and select it as parent
> in clk_set_rate() automatically. Such an algorithm could be as
> simple as this:
>
> if (current parent supports frequency) { set parent frequency }
> else { foreach (parent clock) { if (clock supports frequency)
> select as new parent }
>
> if (no parent found) abort }
>
> Checking for frequency support of a new parent would also involve
> checking for conflicts with other children of that clock. For some
> rudimentary power saving it should be enough to prefer already
> enabled clocks when looking for a new parent, so that if a
> compatible match is found no new clocks need to be enabled.
>
> Does that sound reasonable?
At a high level it sounds OK to me. I'm sure there are many details.
Jon Mayo (now CC'd) (and other NVIDIA people already CC'd) should
chime in with any comments or objections though.
next prev parent reply other threads:[~2012-10-17 15:20 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-11 20:07 Tegra DRM with HDMI support (\o/) Thierry Reding
[not found] ` <20121011200705.GB27599-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-10-11 23:36 ` Stephen Warren
[not found] ` <50775803.1010209-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-10-12 1:16 ` Mark Zhang
2012-10-12 5:09 ` Thierry Reding
[not found] ` <20121012050957.GA29881-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-10-12 21:17 ` Stephen Warren
[not found] ` <507888D0.1090103-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-10-13 20:42 ` Thierry Reding
[not found] ` <20121013204223.GA24354-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-10-15 16:11 ` Stephen Warren
[not found] ` <507C35C6.20705-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-10-17 6:46 ` Thierry Reding
2012-10-16 8:28 ` Peter De Schrijver
[not found] ` <20121016082827.GI3196-Rysk9IDjsxmJz7etNGeUX8VPkgjIgRvpAL8bYrjMMd8@public.gmane.org>
2012-10-17 6:55 ` Thierry Reding
[not found] ` <20121017065547.GE21783-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-10-17 15:20 ` Stephen Warren [this message]
[not found] ` <507ECCCD.7000600-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-10-17 18:04 ` Jon Mayo
[not found] ` <D6C615D3E4730340AE82D5BD856631C0A1DA306B31-QfAaPSPn5qZDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2012-10-17 19:12 ` Thierry Reding
[not found] ` <20121017191240.GA22570-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-10-17 19:41 ` Stephen Warren
[not found] ` <507F0A03.2050008-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-10-17 20:08 ` Jon Mayo
[not found] ` <D6C615D3E4730340AE82D5BD856631C0A1DA306B39-QfAaPSPn5qZDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2012-10-18 6:29 ` Thierry Reding
[not found] ` <20121018062918.GC24637-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-10-18 21:37 ` Jon Mayo
2012-10-18 22:05 ` Stephen Warren
2012-10-18 22:14 ` Stephen Warren
2012-10-12 1:20 ` Mark Zhang
2012-10-16 8:18 ` Mark Zhang
2012-10-16 16:03 ` Stephen Warren
[not found] ` <507D856C.1070708-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-10-17 1:32 ` Mark Zhang
[not found] ` <507E0AC1.8020001-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-10-17 20:38 ` Stephen Warren
[not found] ` <507F175A.3000406-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-10-18 5:55 ` Thierry Reding
[not found] ` <20121018055518.GB24637-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-10-18 8:43 ` Mark Zhang
2012-10-18 7:00 ` Mark Zhang
2012-10-17 5:42 ` Thierry Reding
[not found] ` <20121017054224.GA21783-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-10-18 6:04 ` Mark Zhang
[not found] ` <507F9BF5.20002-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-10-18 6:34 ` Thierry Reding
[not found] ` <20121018063453.GD24637-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-10-18 7:05 ` Mark Zhang
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=507ECCCD.7000600@wwwdotorg.org \
--to=swarren-3lzwwm7+weoh9zmkesr00q@public.gmane.org \
--cc=jmayo-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=josephl-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=pgaikwad-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@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.