diff options
-rw-r--r-- | drivers/clk/at91/clk-usb.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/clk/at91/clk-usb.c b/drivers/clk/at91/clk-usb.c index 183877712c6c..24b5b020753a 100644 --- a/drivers/clk/at91/clk-usb.c +++ b/drivers/clk/at91/clk-usb.c | |||
@@ -279,10 +279,13 @@ static int at91rm9200_clk_usb_set_rate(struct clk_hw *hw, unsigned long rate, | |||
279 | int i; | 279 | int i; |
280 | struct at91rm9200_clk_usb *usb = to_at91rm9200_clk_usb(hw); | 280 | struct at91rm9200_clk_usb *usb = to_at91rm9200_clk_usb(hw); |
281 | struct at91_pmc *pmc = usb->pmc; | 281 | struct at91_pmc *pmc = usb->pmc; |
282 | unsigned long div = parent_rate / rate; | 282 | unsigned long div; |
283 | 283 | ||
284 | if (parent_rate % rate) | 284 | if (!rate || parent_rate % rate) |
285 | return -EINVAL; | 285 | return -EINVAL; |
286 | |||
287 | div = parent_rate / rate; | ||
288 | |||
286 | for (i = 0; i < RM9200_USB_DIV_TAB_SIZE; i++) { | 289 | for (i = 0; i < RM9200_USB_DIV_TAB_SIZE; i++) { |
287 | if (usb->divisors[i] == div) { | 290 | if (usb->divisors[i] == div) { |
288 | tmp = pmc_read(pmc, AT91_CKGR_PLLBR) & | 291 | tmp = pmc_read(pmc, AT91_CKGR_PLLBR) & |