linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* Common clock: function clock and bus clock
@ 2014-03-11  2:06 Chao Xie
  2014-03-11  2:48 ` Haojian Zhuang
  2014-03-20  9:45 ` Ben Dooks
  0 siblings, 2 replies; 11+ messages in thread
From: Chao Xie @ 2014-03-11  2:06 UTC (permalink / raw)
  To: linux-arm-kernel

hi

I can not find any examples for handling function clock and bus clock
in drivers/clk/.

For a device, it will have a function clock and bus clock. function
clock will control the fucntionality of this device, while bus clock
will control the communication part to the bus.

For some SOCes, they do not export bus clock, so from the hardware it
seems that function clock is combined with bus clock, while for some
SOCes, they are not.

For most of the device driver, they will enable/disable function clock
and bus clock both. While for some devices, they may share bus clock,
and have different function clocks.

In fact, i want to define the APIs as below:

struct clk* soc_register_bus_clock(struct device *dev, char **parent_name, ...);
This function will  create and register bus clock

struct clk* soc_register_fucntion_clock(struct device *dev, char
**parent_name, ...);
This function will create and register function clock

struct clk* soc_register_clk(struct device *dev, char **parent_name);
This function will create and register a device clock. Then this clock
is enable, it will enable bus clock and function clock both, and it is
similar for disabling.

struct clk* soc_register_composite_clk(struct device *dev, char
*bus_clk_name, char *function_clk_name);
This function will create and register a composite device clock. When
enable this clock, it will invoke clk_enable(bus_clk) and
clk_enable(function_clk) both. It is similar for disabling.

So for the device which has its own control register and bits for
function clock and bus clock. We can call  soc_register_clk.
For the device share bus clock with other devices, we create the clock
for the device by calling  soc_register_composite_clk.

1. Now clk_enable can be preempted by same caller.
2. For above devices, the bus clock only have enable/disable ops.

Based on above conditions, I think soc_register_composite_clk is fine.

Does anyone have same problems? Will above proposal break common clock rules.

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2014-03-20 11:42 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-11  2:06 Common clock: function clock and bus clock Chao Xie
2014-03-11  2:48 ` Haojian Zhuang
2014-03-12  2:30   ` Chao Xie
2014-03-12 10:14     ` Grygorii Strashko
2014-03-13  2:15       ` Chao Xie
2014-03-13  3:16         ` Emilio López
2014-03-13 11:30           ` Grygorii Strashko
     [not found]             ` <20140319210428.31449.19420@quantum>
     [not found]               ` <CAPDyKFqg230Ob5Wxu0tvXqia+B3WG5+YdKTdxTQ0ySbZokb+7Q@mail.gmail.com>
2014-03-20 10:30                 ` Grygorii Strashko
2014-03-20 11:42         ` Russell King - ARM Linux
2014-03-20  9:45 ` Ben Dooks
2014-03-20 11:35   ` Russell King - ARM Linux

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).