From: heiko@sntech.de (Heiko Stübner)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH RFC 3/3] clk: dt: binding for basic divider clock
Date: Thu, 6 Jun 2013 02:09:43 +0200 [thread overview]
Message-ID: <201306060209.43486.heiko@sntech.de> (raw)
In-Reply-To: <20130604192243.10233.76496@quantum>
Am Dienstag, 4. Juni 2013, 21:22:43 schrieb Mike Turquette:
> Quoting Matt Sealey (2013-06-04 10:39:53)
>
> > On Tue, Jun 4, 2013 at 12:11 PM, Stephen Boyd <sboyd@codeaurora.org>
wrote:
> > > On 06/03/13 10:53, Mike Turquette wrote:
> > >> +Required properties:
> > >> +- compatible : shall be "divider-clock".
> > >> +- #clock-cells : from common clock binding; shall be set to 0.
> > >> +- clocks : link to phandle of parent clock
> > >> +- reg : base address for register controlling adjustable divider
> > >> +- mask : arbitrary bitmask for programming the adjustable divider
> > >> +
> > >> +Optional properties:
> > >> +- clock-output-names : From common clock binding.
> > >> +- table : array of integer pairs defining divisors & bitfield values
> > >> +- shift : number of bits to shift the mask, defaults to 0 if not
> > >> present +- index_one : valid divisor programming starts at 1, not
> > >> zero +- index_power_of_two : valid divisor programming must be a
> > >> power of two +- allow_zero : implies index_one, and programming zero
> > >> results in + divide-by-one
> > >
> > > It's preferred that property names have dashes instead of underscores.
> >
> > I think I have a suggestion or two here..
> >
> > I mailed one to Mike earlier, I have had some mailing list problems
> > which I think are solved now..
> >
> > If you provide a mask for programming the divider, surely the "shift"
> > property is therefore redundant. Unless some device has a completely
> > strange way of doing things and uses two seperated bitfields for
> > programming in the same register, the shift value is simply a function
> > of ffs() on the mask, isn't it? It is nice to put the information
> > specifically in the device tree, but where a shift is not specified
> > it'd probably be a good idea to go about deriving that value that way
> > anyway, right, and if we're doing that.. why specify it?
>
> Shift is optional. Also I think the integer values in a DTS are
> 32-bits, so if some day someone had a clock driver that needed to write
> to a 64-bit register then shift might be useful there, combined with a
> 32-bit mask. Or perhaps dtc will have a 64-bit value for that case? I
> don't know.
>
> I certainly do see your point about only using the mask, and the
> original clock basic types did this a while back before the shift+width
> style came into vogue.
>
> If other reviewers also want to use a pure 32-bit mask and no shift then
> I'll drop it in the next round.
I would object to dropping the shift :-)
If you look at the two clk extensions in my rockchip patches you can see that
they use a different regiment to set values.
Using the lower 16 bits to set the value and the upper 16 bit to mark which
values are changed, i.e. (mask << shift + 16) | (val << shift).
(I'm not sure, if the naming or solution could be improved though)
Heiko
WARNING: multiple messages have this Message-ID (diff)
From: "Heiko Stübner" <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>
To: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Cc: Stephen Boyd <sboyd-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
Mike Turquette
<mturquette-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Matt Sealey <neko-HhXTZounMxbZATc7fWT8Dg@public.gmane.org>
Subject: Re: [PATCH RFC 3/3] clk: dt: binding for basic divider clock
Date: Thu, 6 Jun 2013 02:09:43 +0200 [thread overview]
Message-ID: <201306060209.43486.heiko@sntech.de> (raw)
In-Reply-To: <20130604192243.10233.76496@quantum>
Am Dienstag, 4. Juni 2013, 21:22:43 schrieb Mike Turquette:
> Quoting Matt Sealey (2013-06-04 10:39:53)
>
> > On Tue, Jun 4, 2013 at 12:11 PM, Stephen Boyd <sboyd-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
wrote:
> > > On 06/03/13 10:53, Mike Turquette wrote:
> > >> +Required properties:
> > >> +- compatible : shall be "divider-clock".
> > >> +- #clock-cells : from common clock binding; shall be set to 0.
> > >> +- clocks : link to phandle of parent clock
> > >> +- reg : base address for register controlling adjustable divider
> > >> +- mask : arbitrary bitmask for programming the adjustable divider
> > >> +
> > >> +Optional properties:
> > >> +- clock-output-names : From common clock binding.
> > >> +- table : array of integer pairs defining divisors & bitfield values
> > >> +- shift : number of bits to shift the mask, defaults to 0 if not
> > >> present +- index_one : valid divisor programming starts at 1, not
> > >> zero +- index_power_of_two : valid divisor programming must be a
> > >> power of two +- allow_zero : implies index_one, and programming zero
> > >> results in + divide-by-one
> > >
> > > It's preferred that property names have dashes instead of underscores.
> >
> > I think I have a suggestion or two here..
> >
> > I mailed one to Mike earlier, I have had some mailing list problems
> > which I think are solved now..
> >
> > If you provide a mask for programming the divider, surely the "shift"
> > property is therefore redundant. Unless some device has a completely
> > strange way of doing things and uses two seperated bitfields for
> > programming in the same register, the shift value is simply a function
> > of ffs() on the mask, isn't it? It is nice to put the information
> > specifically in the device tree, but where a shift is not specified
> > it'd probably be a good idea to go about deriving that value that way
> > anyway, right, and if we're doing that.. why specify it?
>
> Shift is optional. Also I think the integer values in a DTS are
> 32-bits, so if some day someone had a clock driver that needed to write
> to a 64-bit register then shift might be useful there, combined with a
> 32-bit mask. Or perhaps dtc will have a 64-bit value for that case? I
> don't know.
>
> I certainly do see your point about only using the mask, and the
> original clock basic types did this a while back before the shift+width
> style came into vogue.
>
> If other reviewers also want to use a pure 32-bit mask and no shift then
> I'll drop it in the next round.
I would object to dropping the shift :-)
If you look at the two clk extensions in my rockchip patches you can see that
they use a different regiment to set values.
Using the lower 16 bits to set the value and the upper 16 bit to mark which
values are changed, i.e. (mask << shift + 16) | (val << shift).
(I'm not sure, if the naming or solution could be improved though)
Heiko
WARNING: multiple messages have this Message-ID (diff)
From: "Heiko Stübner" <heiko@sntech.de>
To: linux-arm-kernel@lists.infradead.org
Cc: Mike Turquette <mturquette@linaro.org>,
Matt Sealey <neko@bakuhatsu.net>,
Stephen Boyd <sboyd@codeaurora.org>,
devicetree-discuss@lists.ozlabs.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH RFC 3/3] clk: dt: binding for basic divider clock
Date: Thu, 6 Jun 2013 02:09:43 +0200 [thread overview]
Message-ID: <201306060209.43486.heiko@sntech.de> (raw)
In-Reply-To: <20130604192243.10233.76496@quantum>
Am Dienstag, 4. Juni 2013, 21:22:43 schrieb Mike Turquette:
> Quoting Matt Sealey (2013-06-04 10:39:53)
>
> > On Tue, Jun 4, 2013 at 12:11 PM, Stephen Boyd <sboyd@codeaurora.org>
wrote:
> > > On 06/03/13 10:53, Mike Turquette wrote:
> > >> +Required properties:
> > >> +- compatible : shall be "divider-clock".
> > >> +- #clock-cells : from common clock binding; shall be set to 0.
> > >> +- clocks : link to phandle of parent clock
> > >> +- reg : base address for register controlling adjustable divider
> > >> +- mask : arbitrary bitmask for programming the adjustable divider
> > >> +
> > >> +Optional properties:
> > >> +- clock-output-names : From common clock binding.
> > >> +- table : array of integer pairs defining divisors & bitfield values
> > >> +- shift : number of bits to shift the mask, defaults to 0 if not
> > >> present +- index_one : valid divisor programming starts at 1, not
> > >> zero +- index_power_of_two : valid divisor programming must be a
> > >> power of two +- allow_zero : implies index_one, and programming zero
> > >> results in + divide-by-one
> > >
> > > It's preferred that property names have dashes instead of underscores.
> >
> > I think I have a suggestion or two here..
> >
> > I mailed one to Mike earlier, I have had some mailing list problems
> > which I think are solved now..
> >
> > If you provide a mask for programming the divider, surely the "shift"
> > property is therefore redundant. Unless some device has a completely
> > strange way of doing things and uses two seperated bitfields for
> > programming in the same register, the shift value is simply a function
> > of ffs() on the mask, isn't it? It is nice to put the information
> > specifically in the device tree, but where a shift is not specified
> > it'd probably be a good idea to go about deriving that value that way
> > anyway, right, and if we're doing that.. why specify it?
>
> Shift is optional. Also I think the integer values in a DTS are
> 32-bits, so if some day someone had a clock driver that needed to write
> to a 64-bit register then shift might be useful there, combined with a
> 32-bit mask. Or perhaps dtc will have a 64-bit value for that case? I
> don't know.
>
> I certainly do see your point about only using the mask, and the
> original clock basic types did this a while back before the shift+width
> style came into vogue.
>
> If other reviewers also want to use a pure 32-bit mask and no shift then
> I'll drop it in the next round.
I would object to dropping the shift :-)
If you look at the two clk extensions in my rockchip patches you can see that
they use a different regiment to set values.
Using the lower 16 bits to set the value and the upper 16 bit to mark which
values are changed, i.e. (mask << shift + 16) | (val << shift).
(I'm not sure, if the naming or solution could be improved though)
Heiko
next prev parent reply other threads:[~2013-06-06 0:09 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-03 17:53 [PATCH RFC 0/3] clk: dt: bindings for mux & divider clocks Mike Turquette
2013-06-03 17:53 ` Mike Turquette
2013-06-03 17:53 ` [PATCH RFC 1/3] clk: of: helper for determining number of parent clocks Mike Turquette
2013-06-03 17:53 ` Mike Turquette
2013-06-03 17:53 ` Mike Turquette
2013-06-03 17:53 ` [PATCH RFC 2/3] clk: dt: binding for basic multiplexor clock Mike Turquette
2013-06-03 17:53 ` Mike Turquette
2013-06-03 19:33 ` Heiko Stübner
2013-06-03 19:33 ` Heiko Stübner
2013-06-03 20:07 ` Mike Turquette
2013-06-03 20:07 ` Mike Turquette
2013-06-03 20:15 ` Heiko Stübner
2013-06-03 20:15 ` Heiko Stübner
2013-06-03 20:15 ` Heiko Stübner
2013-06-03 21:39 ` Heiko Stübner
2013-06-03 21:39 ` Heiko Stübner
2013-06-03 21:39 ` Heiko Stübner
2013-06-04 6:14 ` Mike Turquette
2013-06-04 6:14 ` Mike Turquette
2013-06-03 17:53 ` [PATCH RFC 3/3] clk: dt: binding for basic divider clock Mike Turquette
2013-06-03 17:53 ` Mike Turquette
2013-06-03 22:18 ` Heiko Stübner
2013-06-03 22:18 ` Heiko Stübner
2013-06-03 22:18 ` Heiko Stübner
2013-06-13 2:41 ` Mike Turquette
2013-06-13 2:41 ` Mike Turquette
2013-06-04 17:11 ` Stephen Boyd
2013-06-04 17:11 ` Stephen Boyd
2013-06-04 17:39 ` Matt Sealey
2013-06-04 17:39 ` Matt Sealey
2013-06-04 17:39 ` Matt Sealey
2013-06-04 19:22 ` Mike Turquette
2013-06-04 19:22 ` Mike Turquette
2013-06-04 20:13 ` Matt Sealey
2013-06-04 20:13 ` Matt Sealey
2013-06-06 0:09 ` Heiko Stübner [this message]
2013-06-06 0:09 ` Heiko Stübner
2013-06-06 0:09 ` Heiko Stübner
2013-06-03 22:31 ` [PATCH RFC 0/3] clk: dt: bindings for mux & divider clocks Heiko Stübner
2013-06-03 22:31 ` Heiko Stübner
2013-06-03 22:31 ` Heiko Stübner
2013-06-07 5:51 ` Shawn Guo
2013-06-07 5:51 ` Shawn Guo
2013-06-07 5:51 ` Shawn Guo
2013-06-07 17:52 ` Mike Turquette
2013-06-07 17:52 ` Mike Turquette
2013-06-08 3:02 ` Shawn Guo
2013-06-08 3:02 ` Shawn Guo
2013-06-08 3:02 ` Shawn Guo
2013-06-08 18:25 ` Mike Turquette
2013-06-08 18:25 ` Mike Turquette
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=201306060209.43486.heiko@sntech.de \
--to=heiko@sntech.de \
--cc=linux-arm-kernel@lists.infradead.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.