Buildroot MangoPi T113-S3. Драйвер для MAX98357
dolmatov
Пункты: 2686
Регистрация: 03.07.2016
Существует ли готовый драйвер MAX98357 для Allwinner? Удалось найти только для iMX... Только вариант писать самому?
sasamy
Пункты: 89294
Регистрация: 14.08.2009
dolmatov
Пункты: 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
Пункты: 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
Пункты: 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
Пункты: 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
Пункты: 2686
Регистрация: 03.07.2016
Для обоих I2S интерфейсов, имеется минимум по два I2S-DOUT. Это на что то намекает - можно использовать два MAX98357 на одном I2S интерфейсе?
sasamy
Пункты: 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
Пункты: 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, но у меня его и так нет ..