Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:3
Форум » starterkit.ru » Embedded Linux
Buildroot MangoPi T113-S3. Драйвер для MAX98357
dolmatov
Добавлено 19.08.2024 20:22
0
Сообщение: 1
dolmatov
0

Пункты: 2686
Регистрация: 03.07.2016
Существует ли готовый драйвер MAX98357 для Allwinner? Удалось найти только для iMX... Только вариант писать самому?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 19.08.2024 22:23 Сообщение: 2
sasamy
4.71

Пункты: 89294
Регистрация: 14.08.2009
Цитата
Существует ли готовый драйвер MAX98357 для Allwinner? Удалось найти только для iMX... Только вариант писать самому?


драйвер asoc codec для max98357a не зависит от процессора и есть в ядре

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/sound/soc/codecs/max98357a.c?h=v6.1.106

у t113 интерфейс i2s такой же как

.compatible = "allwinner,sun50i-r329-i2s"

и драйвер тоже есть в ядре

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/sound/soc/sunxi/sun4i-i2s.c?h=v6.1.106#n1649

можно описать их связку в DT через универсальный драйвер simple audio card

https://community.toradex.com/t/max98357a-on-imx7s-with-simple-audio-card/12315

писать специальный machine driver для такого простого случая не вижу смысла
Спуститься к концу Подняться к началу
Персональная информация
dolmatov
Добавлено 12.06.2025 17:03 Сообщение: 3
dolmatov
0

Пункты: 2686
Регистрация: 03.07.2016
добавил в dts в соответствии с подключением MAX98357
Код

sound {
compatible = "simple-audio-card";
simple-audio-card,format = "i2s";
simple-audio-card,name = "MAX98357A-Sound";
simple-audio-card,mclk-fs = <256>; // Соотношение MCLK к частоте дискретизации

simple-audio-card,cpu {
sound-dai = <&i2s2>; // Ссылка на I2S2
};

simple-audio-card,codec {
sound-dai = <&max98357a>; // Ссылка на кодек
};
};

max98357a: codec {
compatible = "maxim,max98357a";
#sound-dai-cells = <0>;
status = "okay";
};
};

&i2s2 {
compatible = "allwinner,sun50i-r329-i2s",
"allwinner,sun20i-d1-i2s";

#sound-dai-cells = <0>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2s2_pins>; // Настройка пинов
};

&pio {
i2s2_pins: i2s2-pins {
pins = "PF1", "PF3", "PF5"; // BCLK, LRCK, DOUT
function = "i2s2"; // Режим работы пинов
};
};

&ccu {
assigned-clocks = <&ccu CLK_PLL_AUDIO0>;
assigned-clock-rates = <24576000>; // Для 48кГц/44.1кГц
};

&i2s2 {
dmas = <&dma 5>; // DMA канал для TX
dma-names = "tx";
};


make linux-rebuild
заливка dtb
запуск

Код

an 2 02:55:01 MangoPI_MQ-Dual kern.warn kernel: [ 15.210274] platform dmic-sound: deferred probe pending: asoc-simple-card: parse error
Спуститься к концу Подняться к началу
Персональная информация
dolmatov
Добавлено 12.06.2025 17:56 Сообщение: 4
dolmatov
0

Пункты: 2686
Регистрация: 03.07.2016
почти получилось. Система видит MAX98357. Запускаю speaker-test -t sine -f 1000 &. на линиях LRCK и BCLK есть необходимые сигналы. А вот на линии DIN нтчего нет. Кроме того именно эта линия (PF1) gpioinfo показывает незанятой
root@MangoPI_MQ-Dual:~$ dmesg | grep -i "i2s\|dma\|audio"
[ 0.019808] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 1.730878] sun20i-d1-pinctrl 2000000.pinctrl: unsupported function i2s2 on pin PF1
Спуститься к концу Подняться к началу
Персональная информация
dolmatov
Добавлено 12.06.2025 20:45 Сообщение: 5
dolmatov
0

Пункты: 2686
Регистрация: 03.07.2016
та же история для i2s1

Код

[ 0.019812] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 1.943919] sun20i-d1-pinctrl 2000000.pinctrl: unsupported function i2s1 on pin PG15


в чем проблема то?
Спуститься к концу Подняться к началу
Персональная информация
dolmatov
Добавлено 12.06.2025 21:45 Сообщение: 6
dolmatov
0

Пункты: 2686
Регистрация: 03.07.2016
[quote]та же история для i2s1

Код

[ 0.019812] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 1.943919] sun20i-d1-pinctrl 2000000.pinctrl: unsupported function i2s1 on pin PG15


в чем проблема то?[/quote]

разобрался, все просто оказалось...
Спуститься к концу Подняться к началу
Персональная информация
dolmatov
Добавлено 13.06.2025 00:54 Редактировалось 13.06.2025 01:25 Сообщение: 7
dolmatov
0

Пункты: 2686
Регистрация: 03.07.2016
Для обоих I2S интерфейсов, имеется минимум по два I2S-DOUT. Это на что то намекает - можно использовать два MAX98357 на одном I2S интерфейсе?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 13.06.2025 18:11 Редактировалось 13.06.2025 18:34 Сообщение: 8
sasamy
4.71

Пункты: 89294
Регистрация: 14.08.2009
Цитата
Для обоих I2S интерфейсов, имеется минимум по два I2S-DOUT. Это на что то намекает - можно использовать два MAX98357 на одном I2S интерфейсе?


а разве нельзя просто параллельно подключить два MAX98357 на один i2s ? один будет левый канал петь а второй правый. Тут готовый с внешним обвязом

https://static.chipdip.ru/lib/554/DOC011554652.pdf

SD/MODE

If the voltage on SD is between 0.77V and 1.4V then the output is just the Right channel
If the voltage on SD is higher than 1.4V then the output is the Left channel.
Спуститься к концу Подняться к началу
Персональная информация
dolmatov
Добавлено 15.06.2025 23:20 Редактировалось 15.06.2025 23:21 Сообщение: 9
dolmatov
0

Пункты: 2686
Регистрация: 03.07.2016
Цитата

а разве нельзя просто параллельно подключить два MAX98357 на один i2s ? один будет левый канал петь а второй правый. Тут готовый с внешним обвязом

https://static.chipdip.ru/lib/554/DOC011554652.pdf

SD/MODE

If the voltage on SD is between 0.77V and 1.4V then the output is just the Right channel
If the voltage on SD is higher than 1.4V then the output is the Left channel.

Так и сделал, да, работает.
попутно вопрос: Пытаюсь запустить пример от miniAudio

Код

ALSA lib pcm_direct.c:2188:(_snd_pcm_direct_new) unable to create IPC semaphore


в инете нашел рекомендацию удалить asound.conf, но у меня его и так нет ..
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux