clk: Add support for rate table based dividers
authorRajendra Nayak <rnayak@ti.com>
Fri, 29 Jun 2012 13:36:32 +0000 (19:06 +0530)
committerMike Turquette <mturquette@linaro.org>
Wed, 11 Jul 2012 22:36:42 +0000 (15:36 -0700)
commit357c3f0a6c7613f7230fcaf1eb16190ed2a4b0af
treeab2067f4d31b734a0e5e01bbcd32fad190e0baea
parent6d9252bd9a4bb1dadc1f199fd276e3464a251085
clk: Add support for rate table based dividers

Some divider clks do not have any obvious relationship
between the divider and the value programmed in the
register. For instance, say a value of 1 could signify divide
by 6 and a value of 2 could signify divide by 4 etc.
Also there are dividers where not all values possible
based on the bitfield width are valid. For instance
a 3 bit wide bitfield can be used to program a value
from 0 to 7. However its possible that only 0 to 4
are valid values.

All these cases need the platform code to pass a simple
table of divider/value tuple, so the framework knows
the exact value to be written based on the divider
calculation and can also do better error checking.

This patch adds support for such rate table based
dividers and as part of the support adds a new
registration function 'clk_register_divider_table()'
and a new macro for static definition
'DEFINE_CLK_DIVIDER_TABLE'.

Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Mike Turquette <mturquette@linaro.org>
drivers/clk/clk-divider.c
include/linux/clk-private.h
include/linux/clk-provider.h