@@ -237,7 +237,8 @@ static int snd_davinci_audiocard_probe(struct platform_device *pdev)
237
237
struct snd_soc_dai_link * dai = (struct snd_soc_dai_link * ) match -> data ;
238
238
struct snd_soc_card_drvdata_davinci * drvdata = NULL ;
239
239
struct clk * mclk ;
240
- int ret = 0 ;
240
+ int ret = 0 , bb_device = 0 ;
241
+
241
242
242
243
snd_davinci_audiocard .dai_link = dai ;
243
244
@@ -279,25 +280,40 @@ static int snd_davinci_audiocard_probe(struct platform_device *pdev)
279
280
return - EINVAL ;
280
281
}
281
282
283
+ ret = of_property_read_u32 (np , "bb-device" , & bb_device );
284
+ if (ret < 0 ){
285
+ dev_warn (& pdev -> dev , "No BeagleBoard device specified (0=BBB/BBG, 1=BB-X15).\n\
286
+ Using BeagleBone Black/Green as default device.\n" );
287
+ bb_device = 0 ;
288
+ }
289
+
282
290
/*
283
- Configure internal 24,576 MHz oscillator as master clock for McASP
291
+ Configure CPU DAI clock of specific BeagleBoard SBC
284
292
*/
285
- ret = of_property_read_u32 (np , "cpu-clock-rate" , & drvdata -> sysclk );
286
- if (ret < 0 ) {
287
- if (!drvdata -> mclk ) {
288
- dev_err (& pdev -> dev ,
289
- "No clock or clock rate defined.\n" );
290
- return - EINVAL ;
293
+ if (bb_device == 0 ){ //BeagleBone Black/Green
294
+ /*
295
+ Configure internal 24,576 MHz oscillator as master clock for McASP
296
+ */
297
+ ret = of_property_read_u32 (np , "cpu-clock-rate" , & drvdata -> sysclk );
298
+ if (ret < 0 ) {
299
+ if (!drvdata -> mclk ) {
300
+ dev_err (& pdev -> dev , "No clock or clock rate defined.\n" );
301
+ return - EINVAL ;
302
+ }
303
+ drvdata -> sysclk = clk_get_rate (drvdata -> mclk );
304
+ } else if (drvdata -> mclk ) {
305
+ unsigned int requestd_rate = drvdata -> sysclk ;
306
+ clk_set_rate (drvdata -> mclk , drvdata -> sysclk );
307
+ drvdata -> sysclk = clk_get_rate (drvdata -> mclk );
308
+ if (drvdata -> sysclk != requestd_rate )
309
+ dev_warn (& pdev -> dev , "Could not get requested rate %u using %u.\n" ,
310
+ requestd_rate , drvdata -> sysclk );
291
311
}
292
- drvdata -> sysclk = clk_get_rate (drvdata -> mclk );
293
- } else if (drvdata -> mclk ) {
294
- unsigned int requestd_rate = drvdata -> sysclk ;
295
- clk_set_rate (drvdata -> mclk , drvdata -> sysclk );
296
- drvdata -> sysclk = clk_get_rate (drvdata -> mclk );
297
- if (drvdata -> sysclk != requestd_rate )
298
- dev_warn (& pdev -> dev ,
299
- "Could not get requested rate %u using %u.\n" ,
300
- requestd_rate , drvdata -> sysclk );
312
+ }
313
+ else if (bb_device == 1 ){ //BeagleBoard-X15
314
+ /*
315
+ Nothing to do (CPU DAI clock is configured in dra7.dtsi)
316
+ */
301
317
}
302
318
303
319
/*
@@ -319,12 +335,12 @@ static int snd_davinci_audiocard_remove(struct platform_device *pdev)
319
335
320
336
/* Sound card platform driver */
321
337
static struct platform_driver snd_davinci_audiocard_driver = {
322
- .probe = snd_davinci_audiocard_probe ,
323
338
.driver = {
324
339
.name = "snd_ctag_face_2_4" ,
325
340
.pm = & snd_soc_pm_ops ,
326
341
.of_match_table = of_match_ptr (snd_davinci_audiocard_dt_ids ),
327
342
},
343
+ .probe = snd_davinci_audiocard_probe ,
328
344
.remove = snd_davinci_audiocard_remove ,
329
345
};
330
346
0 commit comments