* [GIT PULL] Renesas ARM-based SoC: r8a7740 SoC for 3.7 @ 2012-08-30 5:52 Simon Horman 2012-08-30 5:52 ` [PATCH] ARM: shmobile: r8a7740: add USB24 clock explain and sample code Simon Horman 0 siblings, 1 reply; 4+ messages in thread From: Simon Horman @ 2012-08-30 5:52 UTC (permalink / raw) To: linux-arm-kernel Hi Olof, Hi Arnd, please consider the following documentation enhancement for the r8a7740 SoC from Morimoto-san for inclusion in 3.7. ---------------------------------------------------------------- The following changes since commit fea7a08acb13524b47711625eebea40a0ede69a0: Linux 3.6-rc3 (2012-08-22 13:29:06 -0700) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git r8a7740 for you to fetch changes up to a6e7c110f972d7ca5c6eb288f5e64d5659b44dc0: ARM: shmobile: r8a7740: add USB24 clock explain and sample code (2012-08-27 17:43:22 +0900) ---------------------------------------------------------------- Kuninori Morimoto (1): ARM: shmobile: r8a7740: add USB24 clock explain and sample code arch/arm/mach-shmobile/clock-r8a7740.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] ARM: shmobile: r8a7740: add USB24 clock explain and sample code 2012-08-30 5:52 [GIT PULL] Renesas ARM-based SoC: r8a7740 SoC for 3.7 Simon Horman @ 2012-08-30 5:52 ` Simon Horman 2012-09-05 22:54 ` Olof Johansson 0 siblings, 1 reply; 4+ messages in thread From: Simon Horman @ 2012-08-30 5:52 UTC (permalink / raw) To: linux-arm-kernel From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> USBCKCR is controlling USB parent clock and divide rate. This parent clock is used as a "usb24s" from other devices, but the "divide rate" is not used. Further, this clock itself is known as "usb24". So, to set this clock is a little confusable. This patch adds quick explain and sample code for this clock. Cc: Damian Hobson-Garcia <dhobsong@igel.co.jp> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Simon Horman <horms@verge.net.au> --- arch/arm/mach-shmobile/clock-r8a7740.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/arch/arm/mach-shmobile/clock-r8a7740.c b/arch/arm/mach-shmobile/clock-r8a7740.c index ad5fccc..a6a7583 100644 --- a/arch/arm/mach-shmobile/clock-r8a7740.c +++ b/arch/arm/mach-shmobile/clock-r8a7740.c @@ -188,6 +188,22 @@ static struct clk pllc1_div2_clk = { }; /* USB clock */ +/* + * USBCKCR is controlling usb24 clock + * bit[7] : parent clock + * bit[6] : clock divide rate + * And this bit[7] is used as a "usb24s" from other devices. + * (Video clock / Sub clock / SPU clock) + * You can controll this clock as a below. + * + * struct clk *usb24 = clk_get(dev, "usb24"); + * struct clk *usb24s = clk_get(NULL, "usb24s"); + * struct clk *system = clk_get(NULL, "system_clk"); + * int rate = clk_get_rate(system); + * + * clk_set_parent(usb24s, system); // for bit[7] + * clk_set_rate(usb24, rate / 2); // for bit[6] + */ static struct clk *usb24s_parents[] = { [0] = &system_clk, [1] = &extal2_clk -- 1.7.10.2.484.gcd07cc5 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH] ARM: shmobile: r8a7740: add USB24 clock explain and sample code 2012-08-30 5:52 ` [PATCH] ARM: shmobile: r8a7740: add USB24 clock explain and sample code Simon Horman @ 2012-09-05 22:54 ` Olof Johansson 2012-09-07 1:23 ` Kuninori Morimoto 0 siblings, 1 reply; 4+ messages in thread From: Olof Johansson @ 2012-09-05 22:54 UTC (permalink / raw) To: linux-arm-kernel Hi, A couple of comments below. On Thu, Aug 30, 2012 at 02:52:49PM +0900, Simon Horman wrote: > From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > > USBCKCR is controlling USB parent clock and divide rate. > This parent clock is used as a "usb24s" from other devices, > but the "divide rate" is not used. > Further, this clock itself is known as "usb24". > So, to set this clock is a little confusable. > This patch adds quick explain and sample code for this clock. > > Cc: Damian Hobson-Garcia <dhobsong@igel.co.jp> > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > Signed-off-by: Simon Horman <horms@verge.net.au> > --- > arch/arm/mach-shmobile/clock-r8a7740.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/arch/arm/mach-shmobile/clock-r8a7740.c b/arch/arm/mach-shmobile/clock-r8a7740.c > index ad5fccc..a6a7583 100644 > --- a/arch/arm/mach-shmobile/clock-r8a7740.c > +++ b/arch/arm/mach-shmobile/clock-r8a7740.c > @@ -188,6 +188,22 @@ static struct clk pllc1_div2_clk = { > }; > > /* USB clock */ > +/* > + * USBCKCR is controlling usb24 clock > + * bit[7] : parent clock > + * bit[6] : clock divide rate The divisor is either 1 or 2 in this case, for bit[6] values of 0 and 1? > + * And this bit[7] is used as a "usb24s" from other devices. Sorry, I don't follow the explanation here. This is how I interpret the current code, can you confirm if it's accurate? usb24 is the (potentially) divided output from usb24s, while usb24s is at a fixed pass-through rate from the parent if enabled. Both share the same enable bit. In other words, usb24 is a directly derived, potentially divided-by-two rate from usb24s? > + * (Video clock / Sub clock / SPU clock) > + * You can controll this clock as a below. > + * > + * struct clk *usb24 = clk_get(dev, "usb24"); > + * struct clk *usb24s = clk_get(NULL, "usb24s"); > + * struct clk *system = clk_get(NULL, "system_clk"); > + * int rate = clk_get_rate(system); > + * > + * clk_set_parent(usb24s, system); // for bit[7] > + * clk_set_rate(usb24, rate / 2); // for bit[6] This is just standard clk infrastructure usage, I don't think there's need to include the example code here. -Olof ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] ARM: shmobile: r8a7740: add USB24 clock explain and sample code 2012-09-05 22:54 ` Olof Johansson @ 2012-09-07 1:23 ` Kuninori Morimoto 0 siblings, 0 replies; 4+ messages in thread From: Kuninori Morimoto @ 2012-09-07 1:23 UTC (permalink / raw) To: linux-arm-kernel Hi Olof Thank you for checking patch > On Thu, Aug 30, 2012 at 02:52:49PM +0900, Simon Horman wrote: > > From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > > > > USBCKCR is controlling USB parent clock and divide rate. > > This parent clock is used as a "usb24s" from other devices, > > but the "divide rate" is not used. > > Further, this clock itself is known as "usb24". > > So, to set this clock is a little confusable. > > This patch adds quick explain and sample code for this clock. > > > > Cc: Damian Hobson-Garcia <dhobsong@igel.co.jp> > > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > > Signed-off-by: Simon Horman <horms@verge.net.au> > > --- > > arch/arm/mach-shmobile/clock-r8a7740.c | 16 ++++++++++++++++ > > 1 file changed, 16 insertions(+) > > > > diff --git a/arch/arm/mach-shmobile/clock-r8a7740.c b/arch/arm/mach-shmobile/clock-r8a7740.c > > index ad5fccc..a6a7583 100644 > > --- a/arch/arm/mach-shmobile/clock-r8a7740.c > > +++ b/arch/arm/mach-shmobile/clock-r8a7740.c > > @@ -188,6 +188,22 @@ static struct clk pllc1_div2_clk = { > > }; > > > > /* USB clock */ > > +/* > > + * USBCKCR is controlling usb24 clock > > + * bit[7] : parent clock > > + * bit[6] : clock divide rate > > The divisor is either 1 or 2 in this case, for bit[6] values of 0 and 1? Yes. if (0 == bit[6]) clock is 1/2 if (1 == bit[6]) clock is 1/1 > > + * And this bit[7] is used as a "usb24s" from other devices. > > Sorry, I don't follow the explanation here. > > This is how I interpret the current code, can you confirm if it's accurate? > > usb24 is the (potentially) divided output from usb24s, while usb24s is > at a fixed pass-through rate from the parent if enabled. Both share the > same enable bit. In other words, usb24 is a directly derived, potentially > divided-by-two rate from usb24s? clcok A ---+ bit[7] bit[6] |- select -> usb24s -+--> divide (1/1 or 1/2) -> usb24 clock B ---+ | +--> other clocks -> > > + * (Video clock / Sub clock / SPU clock) > > + * You can controll this clock as a below. > > + * > > + * struct clk *usb24 = clk_get(dev, "usb24"); > > + * struct clk *usb24s = clk_get(NULL, "usb24s"); > > + * struct clk *system = clk_get(NULL, "system_clk"); > > + * int rate = clk_get_rate(system); > > + * > > + * clk_set_parent(usb24s, system); // for bit[7] > > + * clk_set_rate(usb24, rate / 2); // for bit[6] > > This is just standard clk infrastructure usage, I don't think there's need to > include the example code here. Ahh.. 50% yes. _If_ this usb24/usb24s explanation on datasheet is same as other clocks, it is easy to understand and can use clk_set_rate(). But this setting style of these 2 clock is very special case on our datasheet. Maybe first case. So, I added sample setting code here, since it is difficult to understand how to set the clock from datasheet/clock tree and clock-r8a7740.c Best regards --- Kuninori Morimoto ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-09-07 1:23 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-08-30 5:52 [GIT PULL] Renesas ARM-based SoC: r8a7740 SoC for 3.7 Simon Horman 2012-08-30 5:52 ` [PATCH] ARM: shmobile: r8a7740: add USB24 clock explain and sample code Simon Horman 2012-09-05 22:54 ` Olof Johansson 2012-09-07 1:23 ` Kuninori Morimoto
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).