return;
 
        req->rate = rate;
+       clk_core_get_boundaries(core, &req->min_rate, &req->max_rate);
 
        parent = core->parent;
        if (parent) {
        struct clk_rate_request req;
 
        clk_core_init_rate_req(hw->core, &req, rate);
-       clk_core_get_boundaries(hw->core, &req.min_rate, &req.max_rate);
 
        ret = clk_core_round_rate_nolock(hw->core, &req);
        if (ret)
                clk_core_rate_unprotect(clk->core);
 
        clk_core_init_rate_req(clk->core, &req, rate);
-       clk_core_get_boundaries(clk->core, &req.min_rate, &req.max_rate);
 
        ret = clk_core_round_rate_nolock(clk->core, &req);
 
        if (clk_core_can_round(core)) {
                struct clk_rate_request req;
 
-               req.min_rate = min_rate;
-               req.max_rate = max_rate;
-
                clk_core_init_rate_req(core, &req, rate);
 
                ret = clk_core_determine_round_nolock(core, &req);
                return cnt;
 
        clk_core_init_rate_req(core, &req, req_rate);
-       clk_core_get_boundaries(core, &req.min_rate, &req.max_rate);
 
        ret = clk_core_round_rate_nolock(core, &req);