[PATCH v4] GPIO PL061: Adding Clk framework support

Russell King - ARM Linux linux at arm.linux.org.uk
Mon Jul 12 04:34:05 EDT 2010


On Mon, Jul 12, 2010 at 01:48:31PM +0530, Viresh KUMAR wrote:
> On 7/12/2010 1:37 PM, Russell King - ARM Linux wrote:
> > PL061 does not have any other clock signal other than PCLK, the APB (AMBA
> > peripheral bus) clock.  This clock needs to be running to access any
> > register in an APB peripheral.  The primecell drivers and AMBA support
> > is currently implemented with the assumtion that this clock is
> > permanently running.
> > 
> > If you need to enable a clock before using any GPIO pin, and it's not the
> > APB clock, then that's a platform extension that is outside of the PL061
> > domain, and probably also affects alternate functions of the GPIO pins as
> > well.  That means the PL061 code shouldn't manage that clock signal as it
> > won't know what's going on with the alternate functions.
> > 
> 
> Russell,
> 
> I agree that this clock is outside of GPIO's domain, but this is how it
> is done for all other amba and non amba devices too, like pl011, pl022,
> etc. There also we are handling platform specific clocks in drivers only.

No.

1. All primecells take a clock called PCLK, which is the bus clock which
   times accesses to the registers from the CPU.

2. PL011 takes a clock, called UARTCLK.  PL022 takes a clock, called SSPCLK.
   PL061 does not take such a clock.

If you look that up in the ARM documentation (DDI0183, DDI0194 and DDI0190
respectively), you'll find these signal listed in the relevant appendix -
A.1 for the bus signals and A.2 for the internal on-chip peripheral signals.

The existing clk API usage in primecell drivers covers (2).  It does not
cover (1).  As such, and as PL011 and PL022 do have non-APB clock signals,
they have clk API support.  As PL061 doesn't have non-APB clock signals,
it doesn't have clk API support and shouldn't need it.

If your device is setup such that there is a 'GPIO clock' control, it is
either relating to a control for the APB bus clock, or it is something on
the pad side of the PL061 block, or is just a dummy control bit to keep
programmers happy which does nothing.



More information about the linux-arm-kernel mailing list