spi/rockchip: Round up clock rate divisor to err on the safe side
authorJulius Werner <jwerner@chromium.org>
Thu, 26 Mar 2015 23:30:24 +0000 (16:30 -0700)
committerMark Brown <broonie@kernel.org>
Fri, 27 Mar 2015 00:41:52 +0000 (17:41 -0700)
commit754ec43c0184aae48f5a8c917d8282449ab564a9
treec33f76a8c4541c67df166ec3f19f1e6b9962ea90
parentc517d838eb7d07bbe9507871fab3931deccff539
spi/rockchip: Round up clock rate divisor to err on the safe side

The Rockchip SPI driver currently calculates its clock rate divisor by
integer dividing the parent rate by the target rate, and then rounding
the result up to the next even number (since the divisor must be
even).

Clock rate divisors should always be rounded up, so that the resulting
frequency is lower or equal to the target. This is correctly done in the
second step here but not in the first, so we still have a risk of
exceeding the desired target frequency (e.g. setting spi-max-frequency
to 40000000 with a parent clock of 99000000 could lead to a divisor of
99000000 / 40000000 == 2 (which is even) that then results in an
effective frequency of 99000000 / 2 == 49500000 (potentially exceeding
the flash chip's specifications).

This patch changes the division to round up to fix this problem.

Signed-off-by: Julius Werner <jwerner@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-rockchip.c