]> git.baikalelectronics.ru Git - kernel.git/commit
clk: clk-divider: fix divisor > 255 bug
authorJames Hogan <james.hogan@imgtec.com>
Mon, 16 Dec 2013 10:41:38 +0000 (10:41 +0000)
committerMike Turquette <mturquette@linaro.org>
Wed, 8 Jan 2014 16:33:12 +0000 (08:33 -0800)
commit31cad6ec77bf4246bd6fef85c2e5012f5754c36a
tree7721a277ab3427f7941915122ed327b006153128
parent26c8905207f6be064890a86e1d5b2256553cbcf0
clk: clk-divider: fix divisor > 255 bug

Commit e2db1565048fc (clk: Add support for power of two type dividers)
merged in v3.6 added the _get_val function to convert a divisor value to
a register field value depending on the flags. However it used the type
u8 for the div field, causing divisors larger than 255 to be masked
and the resultant clock rate to be too high.

E.g. in my case an 11bit divider was supposed to divide 24.576 MHz down
to 32.768KHz. The divisor was correctly calculated as 750 (0x2ee). This
was masked to 238 (0xee) resulting in a frequency of 103.26KHz.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Rajendra Nayak <rnayak@ti.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: stable@vger.kernel.org
Signed-off-by: Mike Turquette <mturquette@linaro.org>
drivers/clk/clk-divider.c