2 Антон Мидюков
Попробовал регулярную сборку от 25 октября. Изменений не заметил (есть ли они?). Загрузчик "молча" грузит. Система через какое-то время подвисает. Подвисает именно ядро, а не X, или что-то в интерфейсной части. Проверял.
Собственно новую сборку смотрел по большей части по причине наличия там ядра 5.3.х.
Пробовал наложить патч, который присоветовали на другом форуме. Он должен был решать проблему отсутствия отключения питания по завершении работы на ядрах 5.х на t4. Но оказалось, что в 5.3.х изменения уже внесены.
Однако, результат все равно получился отрицательный - питание не выключается.
Посмотрел исходники ядра от rockchip-а и 5.3.4. Разница, конечно, есть. Но и там и там нашел буквально место, где нужные биты устанавливаются в контроллере питания. Однако ядро от rockchip-а питание отключает, а 5.3.4 нет, мистика какая-то.
Вот патч, который включает звук на T4:
diff -u a/arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi
--- a/arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi 2019-10-17 23:47:33.000000000 +0300
+++ b/arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi 2019-10-27 22:34:55.988303874 +0300
@@ -105,6 +105,27 @@
};
};
+ rt5651-sound {
+ compatible = "simple-audio-card";
+ simple-audio-card,name = "realtek,rt5651-codec";
+ simple-audio-card,format = "i2s";
+ simple-audio-card,mclk-fs = <256>;
+ simple-audio-card,widgets =
+ "Microphone", "Mic Jack",
+ "Headphone", "Headphone Jack";
+ simple-audio-card,routing =
+ "Mic Jack", "MICBIAS1",
+ "IN1P", "Mic Jack",
+ "Headphone Jack", "HPOL",
+ "Headphone Jack", "HPOR";
+ simple-audio-card,cpu {
+ sound-dai = <&i2s0>;
+ };
+ simple-audio-card,codec {
+ sound-dai = <&rt5651>;
+ };
+ };
+
sdio_pwrseq: sdio-pwrseq {
compatible = "mmc-pwrseq-simple";
clocks = <&rk808 1>;
@@ -184,6 +205,10 @@
status = "okay";
};
+&hdmi_sound {
+ status = "okay";
+};
+
&i2c0 {
clock-frequency = <400000>;
i2c-scl-rising-time-ns = <160>;
@@ -432,6 +457,16 @@
i2c-scl-rising-time-ns = <150>;
i2c-scl-falling-time-ns = <30>;
status = "okay";
+
+ rt5651: rt5651@1a {
+ compatible = "rockchip,rt5651";
+ reg = <0x1a>;
+ clocks = <&cru SCLK_I2S_8CH_OUT>;
+ clock-names = "mclk";
+ hp-det-gpio = <&gpio4 RK_PC4 GPIO_ACTIVE_LOW>;
+ spk-con-gpio = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>;
+ #sound-dai-cells = <0>;
+ };
};
&i2c2 {
@@ -459,6 +494,16 @@
status = "okay";
};
+&i2s0 {
+ rockchip,playback-channels = <8>;
+ rockchip,capture-channels = <8>;
+ status = "okay";
+};
+
+&i2s2 {
+ status = "okay";
+};
+
&io_domains {
bt656-supply = <&vcc_1v8>;
audio-supply = <&vcca1v8_codec>;
@@ -724,3 +769,9 @@
&vopl_mmu {
status = "okay";
};
+
+&spdif {
+ i2c-scl-rising-time-ns = <450>;
+ i2c-scl-falling-time-ns = <15>;
+ status = "okay";
+};
Вывод звука через hdmi работает. spdif мне проверить не чем. Чтобы заработал вывод звука через аналоговый выход, нужно собрать модуль для кодека rt5651. Пока не разобрался, как это сделать. Возможно еще нужен какой-то модуль, который должен рулить этим делом через i2c. На других платах серии nanopc так же должен заработать вывод звука. По этой части в них нет разницы. Но убедиться на практике нет возможности.