]> pilppa.com Git - linux-2.6-omap-h63xx.git/commit
omap2 clock: add clksel and clksel_rate data
authorPaul Walmsley <paul@pwsan.com>
Mon, 27 Aug 2007 08:39:02 +0000 (02:39 -0600)
committerTony Lindgren <tony@atomide.com>
Fri, 31 Aug 2007 17:48:01 +0000 (10:48 -0700)
commit139bd95fd02c03f7df894940940e394c8f3722f5
tree2cc886c8c66a2ce7f694224648874c8318cb9564
parent0a187e0873ec3cdb19088cee6ec1d06df5510fda
omap2 clock: add clksel and clksel_rate data

Many OMAP2 clocks are either source- or divisor-selectable by twiddling
various register bits; these are 'clksel' clocks.  The table of rate divisors
and source clock settings was previously embedded in the clock.c source code.
Encode this data in two data structures:

1) struct clksel_rate for divisor-selection, mapping divisor values to
register bit field values, along with a flags field indicating which
chips the rate is available for -- one for each parent-rate combination; and:

2) struct clksel for source-selection, mapping parent struct clk pointers
to struct clksel_rate array pointers; one for each parent.

Also, add several fields to the clk structure:

1) clksel: pointer to the struct clksel array

2) clksel_reg: pointer to the clksel register

3) clksel_mask: mask for the clksel bitfield

Add this data to each clksel clock.  All this data is not yet used by the clock
framework; that functionality is in the following patches.

N.B. Two clocks, sys_clkout and sys_clkout2, could not be converted to
this setup without splitting source selection and divisor selection.
This is because these clocks use separate registers for each
selector.  So, create two new clocks, sys_clkout_src and
sys_clkout2_src, and locate source-selection there, and keep divisor
selection in sys_clkout/sys_clkout2.  This entailed modifying
board-n800-audio.c.

Signed-off-by: Paul Walmsley <paul@pwsan.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap2/board-n800-audio.c
arch/arm/mach-omap2/clock.h
include/asm-arm/arch-omap/clock.h