@@ -86,18 +86,23 @@ __dualdiv_get_setting(unsigned long rate, unsigned long parent_rate,
86
86
return (struct meson_clk_dualdiv_param * )& table [best_i ];
87
87
}
88
88
89
- static long meson_clk_dualdiv_round_rate (struct clk_hw * hw , unsigned long rate ,
90
- unsigned long * parent_rate )
89
+ static int meson_clk_dualdiv_determine_rate (struct clk_hw * hw ,
90
+ struct clk_rate_request * req )
91
91
{
92
92
struct clk_regmap * clk = to_clk_regmap (hw );
93
93
struct meson_clk_dualdiv_data * dualdiv = meson_clk_dualdiv_data (clk );
94
- const struct meson_clk_dualdiv_param * setting =
95
- __dualdiv_get_setting (rate , * parent_rate , dualdiv );
94
+ const struct meson_clk_dualdiv_param * setting ;
96
95
97
- if (!setting )
98
- return meson_clk_dualdiv_recalc_rate (hw , * parent_rate );
96
+ setting = __dualdiv_get_setting (req -> rate , req -> best_parent_rate ,
97
+ dualdiv );
98
+ if (setting )
99
+ req -> rate = __dualdiv_param_to_rate (req -> best_parent_rate ,
100
+ setting );
101
+ else
102
+ req -> rate = meson_clk_dualdiv_recalc_rate (hw ,
103
+ req -> best_parent_rate );
99
104
100
- return __dualdiv_param_to_rate ( * parent_rate , setting ) ;
105
+ return 0 ;
101
106
}
102
107
103
108
static int meson_clk_dualdiv_set_rate (struct clk_hw * hw , unsigned long rate ,
@@ -122,7 +127,7 @@ static int meson_clk_dualdiv_set_rate(struct clk_hw *hw, unsigned long rate,
122
127
123
128
const struct clk_ops meson_clk_dualdiv_ops = {
124
129
.recalc_rate = meson_clk_dualdiv_recalc_rate ,
125
- .round_rate = meson_clk_dualdiv_round_rate ,
130
+ .determine_rate = meson_clk_dualdiv_determine_rate ,
126
131
.set_rate = meson_clk_dualdiv_set_rate ,
127
132
};
128
133
EXPORT_SYMBOL_GPL (meson_clk_dualdiv_ops );
0 commit comments