static int get_div(struct tegra_clk_frac_div *divider, unsigned long rate,
unsigned long parent_rate)
{
--- -- u64 divider_ux1 = parent_rate;
--- -- u8 flags = divider->flags;
--- -- int mul;
-- --
-- -- if (!rate)
-- -- return 0;
-- --
-- -- mul = get_mul(divider);
-- --
-- -- if (!(flags & TEGRA_DIVIDER_INT))
-- -- divider_ux1 *= mul;
-- --
-- -- if (flags & TEGRA_DIVIDER_ROUND_UP)
-- -- divider_ux1 += rate - 1;
-- --
-- -- do_div(divider_ux1, rate);
-- --
-- -- if (flags & TEGRA_DIVIDER_INT)
-- -- divider_ux1 *= mul;
+++ ++ int div;
- if (!rate)
- return 0;
-
- mul = get_mul(divider);
-
- if (!(flags & TEGRA_DIVIDER_INT))
- divider_ux1 *= mul;
-
- if (flags & TEGRA_DIVIDER_ROUND_UP)
- divider_ux1 += rate - 1;
-- -- divider_ux1 -= mul;
+++ ++ div = div_frac_get(rate, parent_rate, divider->width,
+++ ++ divider->frac_width, divider->flags);
- do_div(divider_ux1, rate);
-
- if (flags & TEGRA_DIVIDER_INT)
- divider_ux1 *= mul;
-
- divider_ux1 -= mul;
-
--- -- if ((s64)divider_ux1 < 0)
+++ ++ if (div < 0)
return 0;
--- -- if (divider_ux1 > get_max_div(divider))
--- -- return get_max_div(divider);
--- --
--- -- return divider_ux1;
+++ ++ return div;
}
static unsigned long clk_frac_div_recalc_rate(struct clk_hw *hw,