Sound в mini2440
a1ien_n3t 8 марта, 2011 - 00:36
В новых ядрах почему-то не работает звук в девките http://www.friendlyarm.net/products/mini2440?lang=en
Попытался разобраться сам но что-то не выходит.
static struct platform_driver s3c24xx_uda134x_driver = { .probe = s3c24xx_uda134x_probe, .remove = s3c24xx_uda134x_remove, .driver = { .name = "s3c24xx_uda134x", .owner = THIS_MODULE, }, }; static int __init s3c24xx_uda134x_init(void) { return platform_driver_register(&s3c24xx_uda134x_driver); }
Тут все ок s3c24xx_uda134x_probe вызывается. Птому собственно доходит до snd_soc_instantiate_card(который в linux-2.6\sound\soс\soc-core.c)
А вот в нем доходит до сюда
for (i = 0; i < card->num_links; i++) soc_bind_dai_link(card, i);
//soc_bind_dai_link .... find_platform: /* do we already have the CODEC DAI for this link ? */ if (rtd->platform) { goto out; } /* no, then find CPU DAI from registered DAIs*/ list_for_each_entry(platform, &platform_list, list) { if (!strcmp(platform->name, dai_link->platform_name)) { rtd->platform = platform; goto out; } } ...
А вот и проблема. platform_list пуст. начал искать как заполняется. нашел файл linux-2.6\sound\soc\samsung\dma.c там
..... static int __devinit samsung_asoc_platform_probe(struct platform_device *pdev) { //В эту функцию уже незаходит. return snd_soc_register_platform(&pdev->dev, &samsung_asoc_platform); } static int __devexit samsung_asoc_platform_remove(struct platform_device *pdev) { snd_soc_unregister_platform(&pdev->dev); return 0; } static struct platform_driver asoc_dma_driver = { .driver = { .name = "samsung-audio", .owner = THIS_MODULE, }, .probe = samsung_asoc_platform_probe, .remove = __devexit_p(samsung_asoc_platform_remove), }; static int __init samsung_asoc_init(void) { //А вот эта выполняется return platform_driver_register(&asoc_dma_driver); } module_init(samsung_asoc_init); ....
Куда мне копать?
»
- Для комментирования войдите или зарегистрируйтесь