@@ -4822,36 +4822,45 @@ static unsigned long fu540_macb_tx_recalc_rate(struct clk_hw *hw,
48224822 return mgmt -> rate ;
48234823}
48244824
4825- static long fu540_macb_tx_round_rate (struct clk_hw * hw , unsigned long rate ,
4826- unsigned long * parent_rate )
4827- {
4828- if (WARN_ON (rate < 2500000 ))
4829- return 2500000 ;
4830- else if (rate == 2500000 )
4831- return 2500000 ;
4832- else if (WARN_ON (rate < 13750000 ))
4833- return 2500000 ;
4834- else if (WARN_ON (rate < 25000000 ))
4835- return 25000000 ;
4836- else if (rate == 25000000 )
4837- return 25000000 ;
4838- else if (WARN_ON (rate < 75000000 ))
4839- return 25000000 ;
4840- else if (WARN_ON (rate < 125000000 ))
4841- return 125000000 ;
4842- else if (rate == 125000000 )
4843- return 125000000 ;
4844-
4845- WARN_ON (rate > 125000000 );
4846-
4847- return 125000000 ;
4825+ static int fu540_macb_tx_determine_rate (struct clk_hw * hw ,
4826+ struct clk_rate_request * req )
4827+ {
4828+ if (WARN_ON (req -> rate < 2500000 ))
4829+ req -> rate = 2500000 ;
4830+ else if (req -> rate == 2500000 )
4831+ req -> rate = 2500000 ;
4832+ else if (WARN_ON (req -> rate < 13750000 ))
4833+ req -> rate = 2500000 ;
4834+ else if (WARN_ON (req -> rate < 25000000 ))
4835+ req -> rate = 25000000 ;
4836+ else if (req -> rate == 25000000 )
4837+ req -> rate = 25000000 ;
4838+ else if (WARN_ON (req -> rate < 75000000 ))
4839+ req -> rate = 25000000 ;
4840+ else if (WARN_ON (req -> rate < 125000000 ))
4841+ req -> rate = 125000000 ;
4842+ else if (req -> rate == 125000000 )
4843+ req -> rate = 125000000 ;
4844+ else if (WARN_ON (req -> rate > 125000000 ))
4845+ req -> rate = 125000000 ;
4846+ else
4847+ req -> rate = 125000000 ;
4848+
4849+ return 0 ;
48484850}
48494851
48504852static int fu540_macb_tx_set_rate (struct clk_hw * hw , unsigned long rate ,
48514853 unsigned long parent_rate )
48524854{
4853- rate = fu540_macb_tx_round_rate (hw , rate , & parent_rate );
4854- if (rate != 125000000 )
4855+ struct clk_rate_request req ;
4856+ int ret ;
4857+
4858+ clk_hw_init_rate_request (hw , & req , rate );
4859+ ret = fu540_macb_tx_determine_rate (hw , & req );
4860+ if (ret != 0 )
4861+ return ret ;
4862+
4863+ if (req .rate != 125000000 )
48554864 iowrite32 (1 , mgmt -> reg );
48564865 else
48574866 iowrite32 (0 , mgmt -> reg );
@@ -4862,7 +4871,7 @@ static int fu540_macb_tx_set_rate(struct clk_hw *hw, unsigned long rate,
48624871
48634872static const struct clk_ops fu540_c000_ops = {
48644873 .recalc_rate = fu540_macb_tx_recalc_rate ,
4865- .round_rate = fu540_macb_tx_round_rate ,
4874+ .determine_rate = fu540_macb_tx_determine_rate ,
48664875 .set_rate = fu540_macb_tx_set_rate ,
48674876};
48684877
0 commit comments