@@ -3325,7 +3325,7 @@ static void macb_probe_queues(void __iomem *mem,
3325
3325
3326
3326
static int macb_clk_init (struct platform_device * pdev , struct clk * * pclk ,
3327
3327
struct clk * * hclk , struct clk * * tx_clk ,
3328
- struct clk * * rx_clk )
3328
+ struct clk * * rx_clk , struct clk * * tsu_clk )
3329
3329
{
3330
3330
struct macb_platform_data * pdata ;
3331
3331
int err ;
@@ -3359,6 +3359,10 @@ static int macb_clk_init(struct platform_device *pdev, struct clk **pclk,
3359
3359
if (IS_ERR (* rx_clk ))
3360
3360
* rx_clk = NULL ;
3361
3361
3362
+ * tsu_clk = devm_clk_get (& pdev -> dev , "tsu_clk" );
3363
+ if (IS_ERR (* tsu_clk ))
3364
+ * tsu_clk = NULL ;
3365
+
3362
3366
err = clk_prepare_enable (* pclk );
3363
3367
if (err ) {
3364
3368
dev_err (& pdev -> dev , "failed to enable pclk (%u)\n" , err );
@@ -3383,8 +3387,17 @@ static int macb_clk_init(struct platform_device *pdev, struct clk **pclk,
3383
3387
goto err_disable_txclk ;
3384
3388
}
3385
3389
3390
+ err = clk_prepare_enable (* tsu_clk );
3391
+ if (err ) {
3392
+ dev_err (& pdev -> dev , "failed to enable tsu_clk (%u)\n" , err );
3393
+ goto err_disable_rxclk ;
3394
+ }
3395
+
3386
3396
return 0 ;
3387
3397
3398
+ err_disable_rxclk :
3399
+ clk_disable_unprepare (* rx_clk );
3400
+
3388
3401
err_disable_txclk :
3389
3402
clk_disable_unprepare (* tx_clk );
3390
3403
@@ -3835,13 +3848,14 @@ static const struct net_device_ops at91ether_netdev_ops = {
3835
3848
3836
3849
static int at91ether_clk_init (struct platform_device * pdev , struct clk * * pclk ,
3837
3850
struct clk * * hclk , struct clk * * tx_clk ,
3838
- struct clk * * rx_clk )
3851
+ struct clk * * rx_clk , struct clk * * tsu_clk )
3839
3852
{
3840
3853
int err ;
3841
3854
3842
3855
* hclk = NULL ;
3843
3856
* tx_clk = NULL ;
3844
3857
* rx_clk = NULL ;
3858
+ * tsu_clk = NULL ;
3845
3859
3846
3860
* pclk = devm_clk_get (& pdev -> dev , "ether_clk" );
3847
3861
if (IS_ERR (* pclk ))
@@ -3992,11 +4006,12 @@ static int macb_probe(struct platform_device *pdev)
3992
4006
{
3993
4007
const struct macb_config * macb_config = & default_gem_config ;
3994
4008
int (* clk_init )(struct platform_device * , struct clk * * ,
3995
- struct clk * * , struct clk * * , struct clk * * )
3996
- = macb_config -> clk_init ;
4009
+ struct clk * * , struct clk * * , struct clk * * ,
4010
+ struct clk * * ) = macb_config -> clk_init ;
3997
4011
int (* init )(struct platform_device * ) = macb_config -> init ;
3998
4012
struct device_node * np = pdev -> dev .of_node ;
3999
4013
struct clk * pclk , * hclk = NULL , * tx_clk = NULL , * rx_clk = NULL ;
4014
+ struct clk * tsu_clk = NULL ;
4000
4015
unsigned int queue_mask , num_queues ;
4001
4016
struct macb_platform_data * pdata ;
4002
4017
bool native_io ;
@@ -4024,7 +4039,7 @@ static int macb_probe(struct platform_device *pdev)
4024
4039
}
4025
4040
}
4026
4041
4027
- err = clk_init (pdev , & pclk , & hclk , & tx_clk , & rx_clk );
4042
+ err = clk_init (pdev , & pclk , & hclk , & tx_clk , & rx_clk , & tsu_clk );
4028
4043
if (err )
4029
4044
return err ;
4030
4045
@@ -4061,6 +4076,7 @@ static int macb_probe(struct platform_device *pdev)
4061
4076
bp -> hclk = hclk ;
4062
4077
bp -> tx_clk = tx_clk ;
4063
4078
bp -> rx_clk = rx_clk ;
4079
+ bp -> tsu_clk = tsu_clk ;
4064
4080
if (macb_config )
4065
4081
bp -> jumbo_max_len = macb_config -> jumbo_max_len ;
4066
4082
@@ -4180,6 +4196,7 @@ static int macb_probe(struct platform_device *pdev)
4180
4196
clk_disable_unprepare (hclk );
4181
4197
clk_disable_unprepare (pclk );
4182
4198
clk_disable_unprepare (rx_clk );
4199
+ clk_disable_unprepare (tsu_clk );
4183
4200
4184
4201
return err ;
4185
4202
}
@@ -4207,6 +4224,7 @@ static int macb_remove(struct platform_device *pdev)
4207
4224
clk_disable_unprepare (bp -> hclk );
4208
4225
clk_disable_unprepare (bp -> pclk );
4209
4226
clk_disable_unprepare (bp -> rx_clk );
4227
+ clk_disable_unprepare (bp -> tsu_clk );
4210
4228
of_node_put (bp -> phy_node );
4211
4229
free_netdev (dev );
4212
4230
}
@@ -4232,6 +4250,7 @@ static int __maybe_unused macb_suspend(struct device *dev)
4232
4250
clk_disable_unprepare (bp -> pclk );
4233
4251
clk_disable_unprepare (bp -> rx_clk );
4234
4252
}
4253
+ clk_disable_unprepare (bp -> tsu_clk );
4235
4254
4236
4255
return 0 ;
4237
4256
}
@@ -4251,6 +4270,7 @@ static int __maybe_unused macb_resume(struct device *dev)
4251
4270
clk_prepare_enable (bp -> tx_clk );
4252
4271
clk_prepare_enable (bp -> rx_clk );
4253
4272
}
4273
+ clk_prepare_enable (bp -> tsu_clk );
4254
4274
4255
4275
netif_device_attach (netdev );
4256
4276
0 commit comments