Skip to content

Commit 997f16b

Browse files
msperlanholt
authored andcommitted
clk: bcm2835: divider value has to be 1 or more
Current clamping of a normal divider allows a value < 1 to be valid. A divider of < 1 would actually only be possible if we had a PLL... So this patch clamps the divider to 1. Fixes: 41691b8 ("clk: bcm2835: Add support for programming the audio domain clocks") Signed-off-by: Martin Sperl <[email protected]> Signed-off-by: Eric Anholt <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
1 parent ec36a5c commit 997f16b

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

drivers/clk/bcm/clk-bcm2835.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1190,8 +1190,9 @@ static u32 bcm2835_clock_choose_div(struct clk_hw *hw,
11901190
div += unused_frac_mask + 1;
11911191
div &= ~unused_frac_mask;
11921192

1193-
/* Clamp to the limits. */
1194-
div = max(div, unused_frac_mask + 1);
1193+
/* clamp to min divider of 1 */
1194+
div = max_t(u32, div, 1 << CM_DIV_FRAC_BITS);
1195+
/* clamp to the highest possible fractional divider */
11951196
div = min_t(u32, div, GENMASK(data->int_bits + CM_DIV_FRAC_BITS - 1,
11961197
CM_DIV_FRAC_BITS - data->frac_bits));
11971198

0 commit comments

Comments
 (0)