diff --git a/Documentation/kernel.md b/Documentation/kernel.md index f767d03e7..22f6e6d4f 100644 --- a/Documentation/kernel.md +++ b/Documentation/kernel.md @@ -12,7 +12,7 @@ Default Kernel tree: 5.4 | Raspberry Pi 3 | 4.19.126 | | Raspberry Pi 4 | 4.19.126 | | Tinker Board | 5.4.44 | -| Odroid-C2 | 5.7.0 | -| Odroid-N2 | 5.7.0 | -| Odroid-XU4 | 5.7.0 | +| Odroid-C2 | 5.7.4 | +| Odroid-N2 | 5.7.4 | +| Odroid-XU4 | 5.7.4 | | Intel NUC | 5.4.44 | diff --git a/buildroot-external/board/hardkernel/kernel-amlogic.config b/buildroot-external/board/hardkernel/kernel-amlogic.config index f5630fe14..742b6a24e 100644 --- a/buildroot-external/board/hardkernel/kernel-amlogic.config +++ b/buildroot-external/board/hardkernel/kernel-amlogic.config @@ -4216,24 +4216,24 @@ CONFIG_SND_SOC=y # # ASoC support for Amlogic platforms # -CONFIG_SND_MESON_AIU=m -CONFIG_SND_MESON_AXG_FIFO=m -CONFIG_SND_MESON_AXG_FRDDR=m -CONFIG_SND_MESON_AXG_TODDR=m -CONFIG_SND_MESON_AXG_TDM_FORMATTER=m -CONFIG_SND_MESON_AXG_TDM_INTERFACE=m -CONFIG_SND_MESON_AXG_TDMIN=m -CONFIG_SND_MESON_AXG_TDMOUT=m -CONFIG_SND_MESON_AXG_SOUND_CARD=m -CONFIG_SND_MESON_AXG_SPDIFOUT=m -CONFIG_SND_MESON_AXG_SPDIFIN=m -CONFIG_SND_MESON_AXG_PDM=m -CONFIG_SND_MESON_CARD_UTILS=m -CONFIG_SND_MESON_CODEC_GLUE=m -CONFIG_SND_MESON_GX_SOUND_CARD=m -CONFIG_SND_MESON_G12A_TOACODEC=m -CONFIG_SND_MESON_G12A_TOHDMITX=m -CONFIG_SND_SOC_MESON_T9015=m +CONFIG_SND_MESON_AIU=y +CONFIG_SND_MESON_AXG_FIFO=y +CONFIG_SND_MESON_AXG_FRDDR=y +CONFIG_SND_MESON_AXG_TODDR=y +CONFIG_SND_MESON_AXG_TDM_FORMATTER=y +CONFIG_SND_MESON_AXG_TDM_INTERFACE=y +CONFIG_SND_MESON_AXG_TDMIN=y +CONFIG_SND_MESON_AXG_TDMOUT=y +CONFIG_SND_MESON_AXG_SOUND_CARD=y +CONFIG_SND_MESON_AXG_SPDIFOUT=y +CONFIG_SND_MESON_AXG_SPDIFIN=y +CONFIG_SND_MESON_AXG_PDM=y +CONFIG_SND_MESON_CARD_UTILS=y +CONFIG_SND_MESON_CODEC_GLUE=y +CONFIG_SND_MESON_GX_SOUND_CARD=y +CONFIG_SND_MESON_G12A_TOACODEC=y +CONFIG_SND_MESON_G12A_TOHDMITX=y +CONFIG_SND_SOC_MESON_T9015=y # end of ASoC support for Amlogic platforms # CONFIG_SND_SOC_SOF_TOPLEVEL is not set diff --git a/buildroot-external/board/hardkernel/patches/linux/0001-Fix-N2-audio.patch b/buildroot-external/board/hardkernel/patches/linux/0001-Fix-N2-audio.patch deleted file mode 100644 index a4e9e836d..000000000 --- a/buildroot-external/board/hardkernel/patches/linux/0001-Fix-N2-audio.patch +++ /dev/null @@ -1,154 +0,0 @@ -From 2fb3aa8c5f1534718cce1afd2bf61b1d21a5c851 Mon Sep 17 00:00:00 2001 -From: Pascal Vizeli -Date: Fri, 5 Jun 2020 20:09:56 +0000 -Subject: [PATCH 1/1] Fix N2 audio - -Signed-off-by: Pascal Vizeli ---- - .../boot/dts/amlogic/meson-g12-common.dtsi | 13 ++++++ - arch/arm64/boot/dts/amlogic/meson-g12.dtsi | 9 +++++ - .../boot/dts/amlogic/meson-g12b-odroid-n2.dts | 40 +++++++++++++++++-- - 3 files changed, 58 insertions(+), 4 deletions(-) - -diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi -index c0aef7d69117..bfddca4f91bb 100644 ---- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi -+++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi -@@ -9,6 +9,8 @@ - #include - #include - #include -+#include -+#include - #include - #include - -@@ -250,6 +252,17 @@ - }; - }; - -+ acodec: audio-controller@32000 { -+ compatible = "amlogic,t9015"; -+ reg = <0x0 0x32000 0x0 0x14>; -+ #sound-dai-cells = <0>; -+ sound-name-prefix = "ACODEC"; -+ clocks = <&clkc CLKID_AUDIO_CODEC>; -+ clock-names = "pclk"; -+ resets = <&reset RESET_AUDIO_CODEC>; -+ status = "disabled"; -+ }; -+ - periphs: bus@34400 { - compatible = "simple-bus"; - reg = <0x0 0x34400 0x0 0x400>; -diff --git a/arch/arm64/boot/dts/amlogic/meson-g12.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12.dtsi -index 55d39020ec72..0d14409f509c 100644 ---- a/arch/arm64/boot/dts/amlogic/meson-g12.dtsi -+++ b/arch/arm64/boot/dts/amlogic/meson-g12.dtsi -@@ -343,6 +343,15 @@ - status = "disabled"; - }; - -+ toacodec: audio-controller@740 { -+ compatible = "amlogic,g12a-toacodec"; -+ reg = <0x0 0x740 0x0 0x4>; -+ #sound-dai-cells = <1>; -+ sound-name-prefix = "TOACODEC"; -+ resets = <&clkc_audio AUD_RESET_TOACODEC>; -+ status = "disabled"; -+ }; -+ - tohdmitx: audio-controller@744 { - compatible = "amlogic,g12a-tohdmitx"; - reg = <0x0 0x744 0x0 0x4>; -diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts -index 169ea283d4ee..b0fb25892964 100644 ---- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts -+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts -@@ -10,6 +10,7 @@ - #include - #include - #include -+#include - - / { - compatible = "hardkernel,odroid-n2", "amlogic,s922x", "amlogic,g12b"; -@@ -24,6 +25,20 @@ - stdout-path = "serial0:115200n8"; - }; - -+ dio2133: audio-amplifier-0 { -+ compatible = "simple-audio-amplifier"; -+ enable-gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>; -+ VCC-supply = <&vcc_5v>; -+ sound-name-prefix = "AMP"; -+ }; -+ -+ spdif_dit: audio-codec-1 { -+ #sound-dai-cells = <0>; -+ compatible = "linux,spdif-dit"; -+ status = "okay"; -+ sound-name-prefix = "DIT"; -+ }; -+ - memory@0 { - device_type = "memory"; - reg = <0x0 0x0 0x0 0x40000000>; -@@ -209,11 +224,13 @@ - sound { - compatible = "amlogic,axg-sound-card"; - model = "G12B-ODROID-N2"; -- audio-aux-devs = <&tdmout_b>; -+ audio-aux-devs = <&tdmout_b>, <&dio2133>; - audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1", - "TDMOUT_B IN 1", "FRDDR_B OUT 1", - "TDMOUT_B IN 2", "FRDDR_C OUT 1", -- "TDM_B Playback", "TDMOUT_B OUT"; -+ "TDM_B Playback", "TDMOUT_B OUT", -+ "AMP INL", "ACODEC LOLP", -+ "AMP INR", "ACODEC LORP"; - - assigned-clocks = <&clkc CLKID_MPLL2>, - <&clkc CLKID_MPLL0>, -@@ -251,14 +268,21 @@ - }; - }; - -- /* hdmi glue */ - dai-link-4 { - sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; - -- codec { -+ codec@0 { - sound-dai = <&hdmi_tx>; - }; - }; -+ -+ dai-link-5 { -+ sound-dai = <&toacodec TOACODEC_OUT>; -+ -+ codec@0 { -+ sound-dai = <&acodec>; -+ }; -+ }; - }; - }; - -@@ -484,6 +508,14 @@ - status = "okay"; - }; - -+&toacodec { -+ status = "okay"; -+}; -+ -+&acodec { -+ status = "okay"; -+}; -+ - &uart_AO { - status = "okay"; - pinctrl-0 = <&uart_ao_a_pins>; --- -2.17.1 - diff --git a/buildroot-external/board/hardkernel/patches/linux/0001-mmc-meson-gx-limit-segments-to-1-when-dram-access-qu.patch b/buildroot-external/board/hardkernel/patches/linux/0001-mmc-meson-gx-limit-segments-to-1-when-dram-access-qu.patch new file mode 100644 index 000000000..d744befdf --- /dev/null +++ b/buildroot-external/board/hardkernel/patches/linux/0001-mmc-meson-gx-limit-segments-to-1-when-dram-access-qu.patch @@ -0,0 +1,46 @@ +From bbafdffacb88adb701ca2f37f3169df4c9ac3824 Mon Sep 17 00:00:00 2001 +From: Neil Armstrong +Date: Mon, 8 Jun 2020 10:44:58 +0200 +Subject: [PATCH 1/8] mmc: meson-gx: limit segments to 1 when dram-access-quirk + is needed + +The actual max_segs computation leads to failure while using the broadcom +sdio brcmfmac/bcmsdh driver, since the driver tries to make usage of scatter +gather. + +But with the dram-access-quirk we use a 1,5K SRAM bounce buffer, and the +max_segs current value of 3 leads to max transfers to 4,5k, which doesn't work. + +This patch sets max_segs to 1 to better describe the hardware limitation, +and fix the SDIO functionnality with the brcmfmac/bcmsdh driver on Amlogic +G12A/G12B SoCs on boards like SEI510 or Khadas VIM3. + +Reported-by: Art Nikpal +Reported-by: Christian Hewitt +Fixes: acdc8e71d9bb ("mmc: meson-gx: add dram-access-quirk") +Signed-off-by: Neil Armstrong +--- + drivers/mmc/host/meson-gx-mmc.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c +index 35400cf2a2e4..cfaf8e7e22ec 100644 +--- a/drivers/mmc/host/meson-gx-mmc.c ++++ b/drivers/mmc/host/meson-gx-mmc.c +@@ -1143,9 +1143,11 @@ static int meson_mmc_probe(struct platform_device *pdev) + + mmc->caps |= MMC_CAP_CMD23; + if (host->dram_access_quirk) { ++ /* Limit segments to 1 due to low available sram memory */ ++ mmc->max_segs = 1; + /* Limit to the available sram memory */ +- mmc->max_segs = SD_EMMC_SRAM_DATA_BUF_LEN / mmc->max_blk_size; +- mmc->max_blk_count = mmc->max_segs; ++ mmc->max_blk_count = SD_EMMC_SRAM_DATA_BUF_LEN / ++ mmc->max_blk_size; + } else { + mmc->max_blk_count = CMD_CFG_LENGTH_MASK; + mmc->max_segs = SD_EMMC_DESC_BUF_LEN / +-- +2.17.1 + diff --git a/buildroot-external/board/hardkernel/patches/linux/0002-arm64-defconfig-enable-meson-gx-audio-as-module.patch b/buildroot-external/board/hardkernel/patches/linux/0002-arm64-defconfig-enable-meson-gx-audio-as-module.patch new file mode 100644 index 000000000..d323d6860 --- /dev/null +++ b/buildroot-external/board/hardkernel/patches/linux/0002-arm64-defconfig-enable-meson-gx-audio-as-module.patch @@ -0,0 +1,43 @@ +From e2b93751cfd0722801b65b4603b588ab9df4c12b Mon Sep 17 00:00:00 2001 +From: Jerome Brunet +Date: Tue, 21 Apr 2020 18:39:30 +0200 +Subject: [PATCH 2/8] arm64: defconfig: enable meson gx audio as module + +Enable the module config for the Amlogic GX audio card. +This module will imply the internal components usually associated +with it to make a functional sound card on these platforms. + +Also enable the simple amplifier module which often used on the +output stage of those cards. + +Signed-off-by: Jerome Brunet +Signed-off-by: Kevin Hilman +Tested-by: Christian Hewitt +Link: https://lore.kernel.org/r/20200421163935.775935-2-jbrunet@baylibre.com +--- + arch/arm64/configs/defconfig | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig +index 03d0189f7d68..ceb60ee9c340 100644 +--- a/arch/arm64/configs/defconfig ++++ b/arch/arm64/configs/defconfig +@@ -644,6 +644,7 @@ CONFIG_SND_HDA_CODEC_HDMI=m + CONFIG_SND_SOC=y + CONFIG_SND_BCM2835_SOC_I2S=m + CONFIG_SND_MESON_AXG_SOUND_CARD=m ++CONFIG_SND_MESON_GX_SOUND_CARD=m + CONFIG_SND_SOC_SDM845=m + CONFIG_SND_SOC_ROCKCHIP=m + CONFIG_SND_SOC_ROCKCHIP_SPDIF=m +@@ -656,6 +657,7 @@ CONFIG_SND_SOC_AK4613=m + CONFIG_SND_SOC_ES7134=m + CONFIG_SND_SOC_ES7241=m + CONFIG_SND_SOC_PCM3168A_I2C=m ++CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m + CONFIG_SND_SOC_TAS571X=m + CONFIG_SND_SOC_WCD934X=m + CONFIG_SND_SOC_WSA881X=m +-- +2.17.1 + diff --git a/buildroot-external/board/hardkernel/patches/linux/0003-ASoC-meson-imply-acodec-glue-on-axg-sound-card.patch b/buildroot-external/board/hardkernel/patches/linux/0003-ASoC-meson-imply-acodec-glue-on-axg-sound-card.patch new file mode 100644 index 000000000..b068aa1e4 --- /dev/null +++ b/buildroot-external/board/hardkernel/patches/linux/0003-ASoC-meson-imply-acodec-glue-on-axg-sound-card.patch @@ -0,0 +1,28 @@ +From 821b8ac21b1675910423ee69d37cb1977b8f271e Mon Sep 17 00:00:00 2001 +From: Jerome Brunet +Date: Mon, 30 Mar 2020 17:39:04 +0200 +Subject: [PATCH 3/8] ASoC: meson: imply acodec glue on axg sound card + +When axg card driver support is enabled, lets enable the related +internal DAC glue by default. + +Signed-off-by: Jerome Brunet +--- + sound/soc/meson/Kconfig | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/soc/meson/Kconfig b/sound/soc/meson/Kconfig +index 8b6295283989..363dc3b1bbe4 100644 +--- a/sound/soc/meson/Kconfig ++++ b/sound/soc/meson/Kconfig +@@ -68,6 +68,7 @@ config SND_MESON_AXG_SOUND_CARD + imply SND_MESON_AXG_SPDIFOUT + imply SND_MESON_AXG_SPDIFIN + imply SND_MESON_AXG_PDM ++ imply SND_MESON_G12A_TOACODEC + imply SND_MESON_G12A_TOHDMITX if DRM_MESON_DW_HDMI + help + Select Y or M to add support for the AXG SoC sound card +-- +2.17.1 + diff --git a/buildroot-external/board/hardkernel/patches/linux/0004-ASoC-meson-gx-card-fix-sound-dai-dt-schema.patch b/buildroot-external/board/hardkernel/patches/linux/0004-ASoC-meson-gx-card-fix-sound-dai-dt-schema.patch new file mode 100644 index 000000000..2799dc30f --- /dev/null +++ b/buildroot-external/board/hardkernel/patches/linux/0004-ASoC-meson-gx-card-fix-sound-dai-dt-schema.patch @@ -0,0 +1,47 @@ +From 60164df03c6314d8f5f3afef56b0bf97962ec9ee Mon Sep 17 00:00:00 2001 +From: Jerome Brunet +Date: Mon, 24 Feb 2020 14:35:17 +0100 +Subject: [PATCH 4/8] ASoC: meson: gx-card: fix sound-dai dt schema + +There is a fair amount of warnings when running 'make dtbs_check' with +amlogic,gx-sound-card.yaml. + +Ex: +arch/arm64/boot/dts/amlogic/meson-gxm-q200.dt.yaml: sound: dai-link-0:sound-dai:0:1: missing phandle tag in 0 +arch/arm64/boot/dts/amlogic/meson-gxm-q200.dt.yaml: sound: dai-link-0:sound-dai:0:2: missing phandle tag in 0 +arch/arm64/boot/dts/amlogic/meson-gxm-q200.dt.yaml: sound: dai-link-0:sound-dai:0: [66, 0, 0] is too long + +The reason is that the sound-dai phandle provided has cells, and in such +case the schema should use 'phandle-array' instead of 'phandle'. + +Fixes: fd00366b8e41 ("ASoC: meson: gx: add sound card dt-binding documentation") +Signed-off-by: Jerome Brunet +--- + .../devicetree/bindings/sound/amlogic,gx-sound-card.yaml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Documentation/devicetree/bindings/sound/amlogic,gx-sound-card.yaml b/Documentation/devicetree/bindings/sound/amlogic,gx-sound-card.yaml +index fb374c659be1..a48222e8cd08 100644 +--- a/Documentation/devicetree/bindings/sound/amlogic,gx-sound-card.yaml ++++ b/Documentation/devicetree/bindings/sound/amlogic,gx-sound-card.yaml +@@ -57,7 +57,7 @@ patternProperties: + rate + + sound-dai: +- $ref: /schemas/types.yaml#/definitions/phandle ++ $ref: /schemas/types.yaml#/definitions/phandle-array + description: phandle of the CPU DAI + + patternProperties: +@@ -71,7 +71,7 @@ patternProperties: + + properties: + sound-dai: +- $ref: /schemas/types.yaml#/definitions/phandle ++ $ref: /schemas/types.yaml#/definitions/phandle-array + description: phandle of the codec DAI + + required: +-- +2.17.1 + diff --git a/buildroot-external/board/hardkernel/patches/linux/0005-arm64-dts-meson-g12-add-internal-DAC.patch b/buildroot-external/board/hardkernel/patches/linux/0005-arm64-dts-meson-g12-add-internal-DAC.patch new file mode 100644 index 000000000..4059bf8b0 --- /dev/null +++ b/buildroot-external/board/hardkernel/patches/linux/0005-arm64-dts-meson-g12-add-internal-DAC.patch @@ -0,0 +1,39 @@ +From e128dd1ca079c5ee558ab100387d9f81bd4f3980 Mon Sep 17 00:00:00 2001 +From: Jerome Brunet +Date: Thu, 7 May 2020 00:16:55 +0200 +Subject: [PATCH 5/8] arm64: dts: meson: g12: add internal DAC + +add internal audio DAC support on the g12 and sm1 SoC family + +Signed-off-by: Jerome Brunet +Signed-off-by: Kevin Hilman +Link: https://lore.kernel.org/r/20200506221656.477379-7-jbrunet@baylibre.com +--- + arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +index c0aef7d69117..593a006f4b7b 100644 +--- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi ++++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +@@ -250,6 +250,17 @@ + }; + }; + ++ acodec: audio-controller@32000 { ++ compatible = "amlogic,t9015"; ++ reg = <0x0 0x32000 0x0 0x14>; ++ #sound-dai-cells = <0>; ++ sound-name-prefix = "ACODEC"; ++ clocks = <&clkc CLKID_AUDIO_CODEC>; ++ clock-names = "pclk"; ++ resets = <&reset RESET_AUDIO_CODEC>; ++ status = "disabled"; ++ }; ++ + periphs: bus@34400 { + compatible = "simple-bus"; + reg = <0x0 0x34400 0x0 0x400>; +-- +2.17.1 + diff --git a/buildroot-external/board/hardkernel/patches/linux/0006-arm64-dts-meson-g12-add-internal-DAC-glue.patch b/buildroot-external/board/hardkernel/patches/linux/0006-arm64-dts-meson-g12-add-internal-DAC-glue.patch new file mode 100644 index 000000000..515ba0574 --- /dev/null +++ b/buildroot-external/board/hardkernel/patches/linux/0006-arm64-dts-meson-g12-add-internal-DAC-glue.patch @@ -0,0 +1,39 @@ +From 5ea4085da165fd3f3aa211cb3664dd166d0d5fd7 Mon Sep 17 00:00:00 2001 +From: Jerome Brunet +Date: Thu, 7 May 2020 00:16:56 +0200 +Subject: [PATCH 6/8] arm64: dts: meson: g12: add internal DAC glue + +add the internal DAC glue support on the g12 and sm1 family +This glue connects the different TDM interfaces of the SoC to +the internal audio DAC codec. + +Signed-off-by: Jerome Brunet +Signed-off-by: Kevin Hilman +Link: https://lore.kernel.org/r/20200506221656.477379-8-jbrunet@baylibre.com +--- + arch/arm64/boot/dts/amlogic/meson-g12.dtsi | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12.dtsi +index 55d39020ec72..0d14409f509c 100644 +--- a/arch/arm64/boot/dts/amlogic/meson-g12.dtsi ++++ b/arch/arm64/boot/dts/amlogic/meson-g12.dtsi +@@ -343,6 +343,15 @@ + status = "disabled"; + }; + ++ toacodec: audio-controller@740 { ++ compatible = "amlogic,g12a-toacodec"; ++ reg = <0x0 0x740 0x0 0x4>; ++ #sound-dai-cells = <1>; ++ sound-name-prefix = "TOACODEC"; ++ resets = <&clkc_audio AUD_RESET_TOACODEC>; ++ status = "disabled"; ++ }; ++ + tohdmitx: audio-controller@744 { + compatible = "amlogic,g12a-tohdmitx"; + reg = <0x0 0x744 0x0 0x4>; +-- +2.17.1 + diff --git a/buildroot-external/board/hardkernel/patches/linux/0007-arm64-dts-meson-g12b-odroid-n2-enable-audio-loopback.patch b/buildroot-external/board/hardkernel/patches/linux/0007-arm64-dts-meson-g12b-odroid-n2-enable-audio-loopback.patch new file mode 100644 index 000000000..0a4741d94 --- /dev/null +++ b/buildroot-external/board/hardkernel/patches/linux/0007-arm64-dts-meson-g12b-odroid-n2-enable-audio-loopback.patch @@ -0,0 +1,123 @@ +From 15b3cef2ea75c4d81cb067264be1cf49c49f81b1 Mon Sep 17 00:00:00 2001 +From: Jerome Brunet +Date: Mon, 15 Jun 2020 15:38:44 +0200 +Subject: [PATCH 7/8] arm64: dts: meson-g12b: odroid-n2: enable audio loopback + +Add capture pcm interfaces and loopback routes to the odroid-n2 + +Signed-off-by: Jerome Brunet +--- + .../boot/dts/amlogic/meson-g12b-odroid-n2.dts | 65 +++++++++++++++++-- + 1 file changed, 61 insertions(+), 4 deletions(-) + +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts +index 169ea283d4ee..d4421ad164bd 100644 +--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts ++++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts +@@ -209,11 +209,28 @@ + sound { + compatible = "amlogic,axg-sound-card"; + model = "G12B-ODROID-N2"; +- audio-aux-devs = <&tdmout_b>; ++ audio-aux-devs = <&tdmout_b>, <&tdmin_a>, <&tdmin_b>, ++ <&tdmin_c>, <&tdmin_lb>; + audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1", + "TDMOUT_B IN 1", "FRDDR_B OUT 1", + "TDMOUT_B IN 2", "FRDDR_C OUT 1", +- "TDM_B Playback", "TDMOUT_B OUT"; ++ "TDM_B Playback", "TDMOUT_B OUT", ++ "TDMIN_A IN 4", "TDM_B Loopback", ++ "TDMIN_B IN 4", "TDM_B Loopback", ++ "TDMIN_C IN 4", "TDM_B Loopback", ++ "TDMIN_LB IN 1", "TDM_B Loopback", ++ "TODDR_A IN 0", "TDMIN_A OUT", ++ "TODDR_B IN 0", "TDMIN_A OUT", ++ "TODDR_C IN 0", "TDMIN_A OUT", ++ "TODDR_A IN 1", "TDMIN_B OUT", ++ "TODDR_B IN 1", "TDMIN_B OUT", ++ "TODDR_C IN 1", "TDMIN_B OUT", ++ "TODDR_A IN 2", "TDMIN_C OUT", ++ "TODDR_B IN 2", "TDMIN_C OUT", ++ "TODDR_C IN 2", "TDMIN_C OUT", ++ "TODDR_A IN 6", "TDMIN_LB OUT", ++ "TODDR_B IN 6", "TDMIN_LB OUT", ++ "TODDR_C IN 6", "TDMIN_LB OUT"; + + assigned-clocks = <&clkc CLKID_MPLL2>, + <&clkc CLKID_MPLL0>, +@@ -236,8 +253,20 @@ + sound-dai = <&frddr_c>; + }; + +- /* 8ch hdmi interface */ + dai-link-3 { ++ sound-dai = <&toddr_a>; ++ }; ++ ++ dai-link-4 { ++ sound-dai = <&toddr_b>; ++ }; ++ ++ dai-link-5 { ++ sound-dai = <&toddr_c>; ++ }; ++ ++ /* 8ch hdmi interface */ ++ dai-link-6 { + sound-dai = <&tdmif_b>; + dai-format = "i2s"; + dai-tdm-slot-tx-mask-0 = <1 1>; +@@ -252,7 +281,7 @@ + }; + + /* hdmi glue */ +- dai-link-4 { ++ dai-link-7 { + sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; + + codec { +@@ -476,6 +505,22 @@ + status = "okay"; + }; + ++&tdmin_a { ++ status = "okay"; ++}; ++ ++&tdmin_b { ++ status = "okay"; ++}; ++ ++&tdmin_c { ++ status = "okay"; ++}; ++ ++&tdmin_lb { ++ status = "okay"; ++}; ++ + &tdmout_b { + status = "okay"; + }; +@@ -484,6 +529,18 @@ + status = "okay"; + }; + ++&toddr_a { ++ status = "okay"; ++}; ++ ++&toddr_b { ++ status = "okay"; ++}; ++ ++&toddr_c { ++ status = "okay"; ++}; ++ + &uart_AO { + status = "okay"; + pinctrl-0 = <&uart_ao_a_pins>; +-- +2.17.1 + diff --git a/buildroot-external/board/hardkernel/patches/linux/0008-arm64-dts-meson-odroid-n2-add-jack-audio-output-supp.patch b/buildroot-external/board/hardkernel/patches/linux/0008-arm64-dts-meson-odroid-n2-add-jack-audio-output-supp.patch new file mode 100644 index 000000000..b3f613ef1 --- /dev/null +++ b/buildroot-external/board/hardkernel/patches/linux/0008-arm64-dts-meson-odroid-n2-add-jack-audio-output-supp.patch @@ -0,0 +1,168 @@ +From 978cc250574b7f1ab45f494cc2a094e3c9fd1fa4 Mon Sep 17 00:00:00 2001 +From: Jerome Brunet +Date: Mon, 15 Jun 2020 16:34:37 +0200 +Subject: [PATCH 8/8] arm64: dts: meson: odroid-n2: add jack audio output + support + +Signed-off-by: Jerome Brunet +--- + .../boot/dts/amlogic/meson-g12b-odroid-n2.dts | 79 +++++++++++++++++-- + 1 file changed, 74 insertions(+), 5 deletions(-) + +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts +index d4421ad164bd..34fffa6d859d 100644 +--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts ++++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts +@@ -9,6 +9,7 @@ + #include "meson-g12b-s922x.dtsi" + #include + #include ++#include + #include + + / { +@@ -20,6 +21,14 @@ + ethernet0 = ðmac; + }; + ++ dioo2133: audio-amplifier-0 { ++ compatible = "simple-audio-amplifier"; ++ enable-gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>; ++ VCC-supply = <&vcc_5v>; ++ sound-name-prefix = "U19"; ++ status = "okay"; ++ }; ++ + chosen { + stdout-path = "serial0:115200n8"; + }; +@@ -209,16 +218,26 @@ + sound { + compatible = "amlogic,axg-sound-card"; + model = "G12B-ODROID-N2"; +- audio-aux-devs = <&tdmout_b>, <&tdmin_a>, <&tdmin_b>, +- <&tdmin_c>, <&tdmin_lb>; ++ audio-widgets = "Line", "Lineout"; ++ audio-aux-devs = <&tdmout_b>, <&tdmout_c>, <&tdmin_a>, ++ <&tdmin_b>, <&tdmin_c>, <&tdmin_lb>, ++ <&dioo2133>; + audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1", + "TDMOUT_B IN 1", "FRDDR_B OUT 1", + "TDMOUT_B IN 2", "FRDDR_C OUT 1", + "TDM_B Playback", "TDMOUT_B OUT", ++ "TDMOUT_C IN 0", "FRDDR_A OUT 2", ++ "TDMOUT_C IN 1", "FRDDR_B OUT 2", ++ "TDMOUT_C IN 2", "FRDDR_C OUT 2", ++ "TDM_C Playback", "TDMOUT_C OUT", + "TDMIN_A IN 4", "TDM_B Loopback", + "TDMIN_B IN 4", "TDM_B Loopback", + "TDMIN_C IN 4", "TDM_B Loopback", + "TDMIN_LB IN 1", "TDM_B Loopback", ++ "TDMIN_A IN 5", "TDM_C Loopback", ++ "TDMIN_B IN 5", "TDM_C Loopback", ++ "TDMIN_C IN 5", "TDM_C Loopback", ++ "TDMIN_LB IN 2", "TDM_C Loopback", + "TODDR_A IN 0", "TDMIN_A OUT", + "TODDR_B IN 0", "TDMIN_A OUT", + "TODDR_C IN 0", "TDMIN_A OUT", +@@ -230,7 +249,11 @@ + "TODDR_C IN 2", "TDMIN_C OUT", + "TODDR_A IN 6", "TDMIN_LB OUT", + "TODDR_B IN 6", "TDMIN_LB OUT", +- "TODDR_C IN 6", "TDMIN_LB OUT"; ++ "TODDR_C IN 6", "TDMIN_LB OUT", ++ "U19 INL", "ACODEC LOLP", ++ "U19 INR", "ACODEC LORP", ++ "Lineout", "U19 OUTL", ++ "Lineout", "U19 OUTR"; + + assigned-clocks = <&clkc CLKID_MPLL2>, + <&clkc CLKID_MPLL0>, +@@ -275,22 +298,56 @@ + dai-tdm-slot-tx-mask-3 = <1 1>; + mclk-fs = <256>; + +- codec { ++ codec-0 { + sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>; + }; ++ ++ codec-1 { ++ sound-dai = <&toacodec TOACODEC_IN_B>; ++ }; + }; + +- /* hdmi glue */ ++ /* i2s jack output interface */ + dai-link-7 { ++ sound-dai = <&tdmif_c>; ++ dai-format = "i2s"; ++ dai-tdm-slot-tx-mask-0 = <1 1>; ++ mclk-fs = <256>; ++ ++ codec-0 { ++ sound-dai = <&tohdmitx TOHDMITX_I2S_IN_C>; ++ }; ++ ++ codec-1 { ++ sound-dai = <&toacodec TOACODEC_IN_C>; ++ }; ++ }; ++ ++ /* hdmi glue */ ++ dai-link-8 { + sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; + + codec { + sound-dai = <&hdmi_tx>; + }; + }; ++ ++ /* acodec glue */ ++ dai-link-9 { ++ sound-dai = <&toacodec TOACODEC_OUT>; ++ ++ codec { ++ sound-dai = <&acodec>; ++ }; ++ }; + }; + }; + ++&acodec { ++ AVDD-supply = <&vddao_1v8>; ++ status = "okay"; ++}; ++ + &arb { + status = "okay"; + }; +@@ -505,6 +562,10 @@ + status = "okay"; + }; + ++&tdmif_c { ++ status = "okay"; ++}; ++ + &tdmin_a { + status = "okay"; + }; +@@ -525,6 +586,14 @@ + status = "okay"; + }; + ++&tdmout_c { ++ status = "okay"; ++}; ++ ++&toacodec { ++ status = "okay"; ++}; ++ + &tohdmitx { + status = "okay"; + }; +-- +2.17.1 + diff --git a/buildroot-external/configs/odroid_c2_defconfig b/buildroot-external/configs/odroid_c2_defconfig index 93209d780..c05957ed3 100644 --- a/buildroot-external/configs/odroid_c2_defconfig +++ b/buildroot-external/configs/odroid_c2_defconfig @@ -22,7 +22,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-c2 $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-c2/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.7.4" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/kernel-amlogic.config" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config" diff --git a/buildroot-external/configs/odroid_n2_defconfig b/buildroot-external/configs/odroid_n2_defconfig index d9ce892e5..136ba93c8 100644 --- a/buildroot-external/configs/odroid_n2_defconfig +++ b/buildroot-external/configs/odroid_n2_defconfig @@ -22,7 +22,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-n2 $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-n2/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.7.4" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/kernel-amlogic.config" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config" diff --git a/buildroot-external/configs/odroid_xu4_defconfig b/buildroot-external/configs/odroid_xu4_defconfig index cacd78603..8742b60cd 100644 --- a/buildroot-external/configs/odroid_xu4_defconfig +++ b/buildroot-external/configs/odroid_xu4_defconfig @@ -23,7 +23,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-xu4 $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-xu4/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.7.4" BR2_LINUX_KERNEL_DEFCONFIG="exynos" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config" BR2_LINUX_KERNEL_LZ4=y diff --git a/scripts/update-kernel-odroid.sh b/scripts/update-kernel-odroid.sh index e9459b79c..cfa15d0c5 100755 --- a/scripts/update-kernel-odroid.sh +++ b/scripts/update-kernel-odroid.sh @@ -2,15 +2,10 @@ set -e if [ -z "$1" ]; then - echo "Need a commit ID!" - exit 1 -fi - -if [ -z "$2" ]; then echo "Need a kernel version!" exit 1 fi sed -i "s/BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\".*\"/BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"$1\"/g" buildroot-external/configs/odroid_* -sed -i "s/| Odroid\(.*\) | .* |/| Odroid\1 | $2 |/g" Documentation/kernel.md -git commit -m "Odroid: Update kernel $2 - $1" buildroot-external/configs/* Documentation/kernel.md +sed -i "s/| Odroid\(.*\) | .* |/| Odroid\1 | $1 |/g" Documentation/kernel.md +git commit -m "Odroid: Update kernel $1" buildroot-external/configs/* Documentation/kernel.md