rtc: m41t80: fix m41t80_sqw_round_rate return value
Previously it was returning the best of 32768, 8192, 1024, 64, 2, 0 Now, best of 32768, 8192, 4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 0 Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
This commit is contained in:
parent
de6042d2fa
commit
c8384bb042
@ -468,18 +468,13 @@ static unsigned long m41t80_sqw_recalc_rate(struct clk_hw *hw,
|
|||||||
static long m41t80_sqw_round_rate(struct clk_hw *hw, unsigned long rate,
|
static long m41t80_sqw_round_rate(struct clk_hw *hw, unsigned long rate,
|
||||||
unsigned long *prate)
|
unsigned long *prate)
|
||||||
{
|
{
|
||||||
int i, freq = M41T80_SQW_MAX_FREQ;
|
if (rate >= M41T80_SQW_MAX_FREQ)
|
||||||
|
return M41T80_SQW_MAX_FREQ;
|
||||||
if (freq <= rate)
|
if (rate >= M41T80_SQW_MAX_FREQ / 4)
|
||||||
return freq;
|
return M41T80_SQW_MAX_FREQ / 4;
|
||||||
|
if (!rate)
|
||||||
for (i = 2; i <= ilog2(M41T80_SQW_MAX_FREQ); i++) {
|
return 0;
|
||||||
freq /= 1 << i;
|
return 1 << ilog2(rate);
|
||||||
if (freq <= rate)
|
|
||||||
return freq;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int m41t80_sqw_set_rate(struct clk_hw *hw, unsigned long rate,
|
static int m41t80_sqw_set_rate(struct clk_hw *hw, unsigned long rate,
|
||||||
|
Loading…
Reference in New Issue
Block a user