@@ -248,41 +248,35 @@ static int xlnx_spdif_probe(struct platform_device *pdev)
248
248
if (!ctx )
249
249
return - ENOMEM ;
250
250
251
- ctx -> axi_clk = devm_clk_get (dev , "s_axi_aclk" );
251
+ ctx -> axi_clk = devm_clk_get_enabled (dev , "s_axi_aclk" );
252
252
if (IS_ERR (ctx -> axi_clk )) {
253
253
ret = PTR_ERR (ctx -> axi_clk );
254
254
dev_err (dev , "failed to get s_axi_aclk(%d)\n" , ret );
255
255
return ret ;
256
256
}
257
- ret = clk_prepare_enable (ctx -> axi_clk );
258
- if (ret ) {
259
- dev_err (dev , "failed to enable s_axi_aclk(%d)\n" , ret );
260
- return ret ;
261
- }
262
257
263
258
ctx -> base = devm_platform_ioremap_resource (pdev , 0 );
264
- if (IS_ERR (ctx -> base )) {
265
- ret = PTR_ERR (ctx -> base );
266
- goto clk_err ;
267
- }
259
+ if (IS_ERR (ctx -> base ))
260
+ return PTR_ERR (ctx -> base );
261
+
268
262
ret = of_property_read_u32 (node , "xlnx,spdif-mode" , & ctx -> mode );
269
263
if (ret < 0 ) {
270
264
dev_err (dev , "cannot get SPDIF mode\n" );
271
- goto clk_err ;
265
+ return ret ;
272
266
}
273
267
if (ctx -> mode ) {
274
268
dai_drv = & xlnx_spdif_tx_dai ;
275
269
} else {
276
270
ret = platform_get_irq (pdev , 0 );
277
271
if (ret < 0 )
278
- goto clk_err ;
272
+ return ret ;
273
+
279
274
ret = devm_request_irq (dev , ret ,
280
275
xlnx_spdifrx_irq_handler ,
281
276
0 , "XLNX_SPDIF_RX" , ctx );
282
277
if (ret ) {
283
278
dev_err (dev , "spdif rx irq request failed\n" );
284
- ret = - ENODEV ;
285
- goto clk_err ;
279
+ return - ENODEV ;
286
280
}
287
281
288
282
init_waitqueue_head (& ctx -> chsts_q );
@@ -292,7 +286,7 @@ static int xlnx_spdif_probe(struct platform_device *pdev)
292
286
ret = of_property_read_u32 (node , "xlnx,aud_clk_i" , & ctx -> aclk );
293
287
if (ret < 0 ) {
294
288
dev_err (dev , "cannot get aud_clk_i value\n" );
295
- goto clk_err ;
289
+ return ret ;
296
290
}
297
291
298
292
dev_set_drvdata (dev , ctx );
@@ -301,22 +295,13 @@ static int xlnx_spdif_probe(struct platform_device *pdev)
301
295
dai_drv , 1 );
302
296
if (ret ) {
303
297
dev_err (dev , "SPDIF component registration failed\n" );
304
- goto clk_err ;
298
+ return ret ;
305
299
}
306
300
307
301
writel (XSPDIF_SOFT_RESET_VALUE , ctx -> base + XSPDIF_SOFT_RESET_REG );
308
302
dev_info (dev , "%s DAI registered\n" , dai_drv -> name );
309
303
310
- clk_err :
311
- clk_disable_unprepare (ctx -> axi_clk );
312
- return ret ;
313
- }
314
-
315
- static void xlnx_spdif_remove (struct platform_device * pdev )
316
- {
317
- struct spdif_dev_data * ctx = dev_get_drvdata (& pdev -> dev );
318
-
319
- clk_disable_unprepare (ctx -> axi_clk );
304
+ return 0 ;
320
305
}
321
306
322
307
static struct platform_driver xlnx_spdif_driver = {
@@ -325,7 +310,6 @@ static struct platform_driver xlnx_spdif_driver = {
325
310
.of_match_table = xlnx_spdif_of_match ,
326
311
},
327
312
.probe = xlnx_spdif_probe ,
328
- .remove = xlnx_spdif_remove ,
329
313
};
330
314
module_platform_driver (xlnx_spdif_driver );
331
315
0 commit comments