Warning: touch() [function.touch]: Unable to create file /home/starterkit/starterkit.ru/html/error.log because Permission denied in /home/starterkit/starterkit.ru/html/errorhandler.php on line 51
Audio с ноым ядром на Mini2440 - Embedded Linux - Форум - starterkit.ru
Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
Audio с ноым ядром на Mini2440
a1ien
Добавлено 07.03.2011 16:33
0
Сообщение: 1
a1ien
0

Пункты: 60
Регистрация: 07.03.2011
В новых ядрах почему-то не работает звук.

Попытался разобраться сам но что-то не выходит.
[code=c]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);
}
[/code]
Тут все ок s3c24xx_uda134x_probe вызывается. Птому собственно доходит до snd_soc_instantiate_card(который в linux-2.6\sound\soс\soc-core.c)
А вот в нем доходит до сюда
[code=c]for (i = 0; i < card->num_links; i++)
soc_bind_dai_link(card, i);[/code]
[code=c]
//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;
}
}
...
[/code]
А вот и проблема. platform_list пуст. начал искать как заполняется. нашел файл linux-2.6\sound\soc\samsung\dma.c там
[code=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);
....[/code]
Куда мне копать?
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux