From 956c1606de8c457f5bb18eea7eaeef7d44e59b71 Mon Sep 17 00:00:00 2001 From: Ricardo Pardini Date: Sun, 26 Sep 2021 21:44:28 +0200 Subject: [PATCH] meson64: current (5.10.y): ODROID N2(+) patchset rework for mainline u-boot, stability and rebootability (#3154) - starting from Home Assistant OS (HASSOS) setup/patchset, which is stable with pure-mainline - *huge thanks* to Stefan Agner (@agners) from Home Assistant for his work and help with this - CONFIG_DRM_MESON=y fixes the order of shutdown callbacks, allowing it to reboot without patches - this increases the kernel size a bit, due to some dependencies like DRM=y - remove the shutdown revert patch, allowing other meson64 boards to mainline-reboot - add fdt/no-map patch fixing the dreaded "SError Interrupt on CPU4" panics that plagued the N2 - move the N2 to mainline u-boot on current (rebased, already done) - add SPI-enabling DTB variants, which allow writing to SPI NOR flash (and usage instructions in comments) - add UBOOT_TARGET_MAP and write_uboot_platform_mtd to current, for nand-sata-install to SPI/USB goodness - remove the UHS-enabling patch, to avoid 1.8v vs 3.3v mess. Make sure to use only A1-rated SD cards as recommended. - change default cpufreq governor for 24h+ stability - other patch cleanups: - move deprecated/non-applying patch to need-check - remove the HardKernel ODROID-specific reboot driver and DTS patches (odroid-reboot.c) which are now useless. - remove documentation-only patches (we have enough patches in meson64 without those) - remove duplicated SAR ADC patches - remove multiple different and conflicting patches for DTS and emulated-PWM GPIO fan - now using simple on/off GPIO fan at 30 celsius, unrelated to passive cooling --- config/boards/odroidn2.conf | 10 +- config/kernel/linux-meson64-current.config | 16 +- ...add-i2c3-rtc-nodes-and-rtc-aliases-t.patch | 53 +++ ...eson-add-saradc-node-to-ODROID-N2-N2.patch | 37 ++ ...add-GPIO-line-names-to-ODROID-N2-N2.patch} | 25 +- ...-meson-g12b-add-power-button-support.patch | 42 ++ ...-dts-meson-g12b-add-GPIO-fan-support.patch | 42 ++ ...g12b-odroid-n2-add-fan-as-cooling-de.patch | 73 ++++ ...0007-arm64-dts-meson-add-uart_A-node.patch | 44 +++ ...-meson-add-i2c2-node-to-ODROID-N2-N2.patch | 37 ++ ...ke-sure-no-map-does-not-remove-alrea.patch | 52 +++ ...OMMON-power-reset-Add-odroid-support.patch | 232 ----------- ...dts-reboot-power-off-support-for-ODR.patch | 36 -- ...abled_versions_of_N2_and_N2Plus_DTBs.patch | 83 ++++ .../9999-revert-meson_drv_shutdown.patch | 25 -- ...h => board-odroidc2-add-uartA-uartC.patch} | 11 +- ...ings-display-bridge-lvds-codec-Add-n.patch | 53 --- ...SoC-meson-convert-axg-fifo-to-schema.patch | 173 --------- ...ASoC-meson-convert-axg-pdm-to-schema.patch | 136 ------- ...onvert-axg-sound-card-control-to-sch.patch | 334 ---------------- ...on-convert-axg-spdif-input-to-schema.patch | 139 ------- ...n-convert-axg-spdif-output-to-schema.patch | 130 ------- ...convert-axg-tdm-formatters-to-schema.patch | 166 -------- ...-convert-axg-tdm-interface-to-schema.patch | 107 ----- ...onvert-g12a-tohdmitx-control-to-sche.patch | 140 ------- .../general-meson64-i2cX-missing-pins.patch | 13 +- ...dts-support-Ulta-High-Speed-MMC-card.patch | 31 -- ...el-0006-N2-ARM64-dts-add-uart_A-node.patch | 41 -- ...0007-N2-ARM64-dts-add-i2c2-i2c3-node.patch | 91 ----- ...el-0008-N2-ARM64-dts-add-saradc-node.patch | 28 -- ...m-gpio-Add-a-generic-gpio-based-PWM-.patch | 367 ------------------ ...91-Add-fan-support-to-Odroid-N2-plus.patch | 88 ----- ...dts-reboot-power-off-support-for-ODR.patch | 51 --- .../archive/meson64-5.10/odroid-n2-rtc0.patch | 24 -- 34 files changed, 509 insertions(+), 2421 deletions(-) create mode 100644 patch/kernel/archive/meson64-5.10/0001-arm64-dts-meson-add-i2c3-rtc-nodes-and-rtc-aliases-t.patch create mode 100644 patch/kernel/archive/meson64-5.10/0002-arm64-dts-meson-add-saradc-node-to-ODROID-N2-N2.patch rename patch/kernel/archive/meson64-5.10/{hardkernel-0005-N2-arm64-dts-Add-gpio-line-names.patch => 0003-arm64-dts-meson-add-GPIO-line-names-to-ODROID-N2-N2.patch} (63%) create mode 100644 patch/kernel/archive/meson64-5.10/0004-arm64-dts-meson-g12b-add-power-button-support.patch create mode 100644 patch/kernel/archive/meson64-5.10/0005-arm64-dts-meson-g12b-add-GPIO-fan-support.patch create mode 100644 patch/kernel/archive/meson64-5.10/0006-arm64-dts-meson-g12b-odroid-n2-add-fan-as-cooling-de.patch create mode 100644 patch/kernel/archive/meson64-5.10/0007-arm64-dts-meson-add-uart_A-node.patch create mode 100644 patch/kernel/archive/meson64-5.10/0008-arm64-dts-meson-add-i2c2-node-to-ODROID-N2-N2.patch create mode 100644 patch/kernel/archive/meson64-5.10/0009-Revert-of-fdt-Make-sure-no-map-does-not-remove-alrea.patch delete mode 100644 patch/kernel/archive/meson64-5.10/0073-ODROID-COMMON-power-reset-Add-odroid-support.patch delete mode 100644 patch/kernel/archive/meson64-5.10/0074-ODROID-C4-arm64-dts-reboot-power-off-support-for-ODR.patch create mode 100644 patch/kernel/archive/meson64-5.10/9999-HACK-Add_SPI_Flash_enabled_versions_of_N2_and_N2Plus_DTBs.patch delete mode 100644 patch/kernel/archive/meson64-5.10/9999-revert-meson_drv_shutdown.patch rename patch/kernel/archive/meson64-5.10/{board-odroid-c2-add-uartA-uartC.patch => board-odroidc2-add-uartA-uartC.patch} (77%) delete mode 100644 patch/kernel/archive/meson64-5.10/docs-FROMLIST-dt-bindings-display-bridge-lvds-codec-Add-n.patch delete mode 100644 patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-fifo-to-schema.patch delete mode 100644 patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-pdm-to-schema.patch delete mode 100644 patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-sound-card-control-to-sch.patch delete mode 100644 patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-spdif-input-to-schema.patch delete mode 100644 patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-spdif-output-to-schema.patch delete mode 100644 patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-tdm-formatters-to-schema.patch delete mode 100644 patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-tdm-interface-to-schema.patch delete mode 100644 patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-g12a-tohdmitx-control-to-sche.patch delete mode 100644 patch/kernel/archive/meson64-5.10/hardkernel-0003-N2-arm64-dts-support-Ulta-High-Speed-MMC-card.patch delete mode 100644 patch/kernel/archive/meson64-5.10/hardkernel-0006-N2-ARM64-dts-add-uart_A-node.patch delete mode 100644 patch/kernel/archive/meson64-5.10/hardkernel-0007-N2-ARM64-dts-add-i2c2-i2c3-node.patch delete mode 100644 patch/kernel/archive/meson64-5.10/hardkernel-0008-N2-ARM64-dts-add-saradc-node.patch delete mode 100644 patch/kernel/archive/meson64-5.10/hardkernel-0029-COMMON-pwm-gpio-Add-a-generic-gpio-based-PWM-.patch delete mode 100644 patch/kernel/archive/meson64-5.10/hardkernel-igor-0091-Add-fan-support-to-Odroid-N2-plus.patch delete mode 100644 patch/kernel/archive/meson64-5.10/need_check/0075-ODROID-N2-arm64-dts-reboot-power-off-support-for-ODR.patch delete mode 100644 patch/kernel/archive/meson64-5.10/odroid-n2-rtc0.patch diff --git a/config/boards/odroidn2.conf b/config/boards/odroidn2.conf index 8e1fcf3d62..c188f2df0c 100644 --- a/config/boards/odroidn2.conf +++ b/config/boards/odroidn2.conf @@ -6,11 +6,9 @@ FULL_DESKTOP="yes" FORCE_BOOTSCRIPT_UPDATE="yes" BOOT_LOGO="desktop" -# Odroid N2 requires Odroid's u-boot for stable operation for mainline kernel -# and also for legacy booting. These vars will be handled by the family (meson-g12b.conf) -# and possibibly in the future will be refactored into VENDOR=odroid. -# 'edge' should use mainline, allowing for stabilizing development. -USE_ODROID_UBOOT="legacy,current" +# Odroid N2 requires Odroid's u-boot for legacy kernel booting. +# These vars will be handled by the family (meson-g12b.conf) +USE_ODROID_UBOOT="legacy" BOOTCONFIG="odroid-n2_defconfig" # For mainline uboot BOOTCONFIG_ODROID="odroidn2_config" # For odroid uboot BOOTSCRIPT_ODROID="boot-odroid-n2.ini:boot.ini" # For odroid uboot, default BOOTSCRIPT is boot-meson64.cmd for mainline (in meson64_common.inc) @@ -26,7 +24,7 @@ write_uboot_platform_mtd() { # MAX might be different for N2/N2+, for now use N2+'s CPUMIN=1000000 CPUMAX=2400000 -GOVERNOR=ondemand # some people recommend performance to avoid random hangs after 24+ hours running. +GOVERNOR=performance # some people recommend performance to avoid random hangs after 24+ hours running. # U-boot has detection code for the ODROID boards. # https://github.com/u-boot/u-boot/blob/v2021.04/board/amlogic/odroid-n2/odroid-n2.c#L35-L106 diff --git a/config/kernel/linux-meson64-current.config b/config/kernel/linux-meson64-current.config index f3dd7a723b..0dda68cf47 100644 --- a/config/kernel/linux-meson64-current.config +++ b/config/kernel/linux-meson64-current.config @@ -4960,7 +4960,7 @@ CONFIG_IR_SERIAL_TRANSMITTER=y CONFIG_IR_SIR=m CONFIG_RC_XBOX_DVD=m CONFIG_IR_TOY=m -CONFIG_CEC_CORE=m +CONFIG_CEC_CORE=y CONFIG_CEC_NOTIFIER=y CONFIG_CEC_PIN=y # CONFIG_MEDIA_CEC_RC is not set @@ -5774,12 +5774,12 @@ CONFIG_DVB_DUMMY_FE=m # CONFIG_VGA_ARB=y CONFIG_VGA_ARB_MAX_GPUS=16 -CONFIG_DRM=m +CONFIG_DRM=y CONFIG_DRM_MIPI_DBI=m CONFIG_DRM_MIPI_DSI=y # CONFIG_DRM_DP_AUX_CHARDEV is not set # CONFIG_DRM_DEBUG_SELFTEST is not set -CONFIG_DRM_KMS_HELPER=m +CONFIG_DRM_KMS_HELPER=y CONFIG_DRM_KMS_FB_HELPER=y # CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set CONFIG_DRM_FBDEV_EMULATION=y @@ -5921,7 +5921,7 @@ CONFIG_DRM_ANALOGIX_ANX78XX=m CONFIG_DRM_ANALOGIX_DP=m # CONFIG_DRM_I2C_ADV7511 is not set CONFIG_DRM_CDNS_MHDP8546=m -CONFIG_DRM_DW_HDMI=m +CONFIG_DRM_DW_HDMI=y # CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set CONFIG_DRM_DW_HDMI_I2S_AUDIO=m # CONFIG_DRM_DW_HDMI_CEC is not set @@ -5932,8 +5932,8 @@ CONFIG_DRM_DW_HDMI_I2S_AUDIO=m # CONFIG_DRM_HISI_HIBMC is not set CONFIG_DRM_HISI_KIRIN=m # CONFIG_DRM_MXSFB is not set -CONFIG_DRM_MESON=m -CONFIG_DRM_MESON_DW_HDMI=m +CONFIG_DRM_MESON=y +CONFIG_DRM_MESON_DW_HDMI=y # CONFIG_DRM_CIRRUS_QEMU is not set CONFIG_DRM_GM12U320=m CONFIG_TINYDRM_HX8357D=m @@ -5955,7 +5955,7 @@ CONFIG_DRM_LEGACY=y # CONFIG_DRM_MGA is not set # CONFIG_DRM_VIA is not set # CONFIG_DRM_SAVAGE is not set -CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=m +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y # # Frame buffer Devices @@ -7759,7 +7759,7 @@ CONFIG_RPMSG_QCOM_GLINK_RPM=y # # Amlogic SoC drivers # -CONFIG_MESON_CANVAS=m +CONFIG_MESON_CANVAS=y CONFIG_MESON_CLK_MEASURE=y CONFIG_MESON_GX_SOCINFO=y CONFIG_MESON_GX_PM_DOMAINS=y diff --git a/patch/kernel/archive/meson64-5.10/0001-arm64-dts-meson-add-i2c3-rtc-nodes-and-rtc-aliases-t.patch b/patch/kernel/archive/meson64-5.10/0001-arm64-dts-meson-add-i2c3-rtc-nodes-and-rtc-aliases-t.patch new file mode 100644 index 0000000000..8da158ec39 --- /dev/null +++ b/patch/kernel/archive/meson64-5.10/0001-arm64-dts-meson-add-i2c3-rtc-nodes-and-rtc-aliases-t.patch @@ -0,0 +1,53 @@ +From c7825747afd8bb975dc918f28e4afe8058a518f3 Mon Sep 17 00:00:00 2001 +Message-Id: +From: Christian Hewitt +Date: Mon, 11 Jan 2021 13:58:31 +0000 +Subject: [PATCH 1/9] arm64: dts: meson: add i2c3/rtc nodes and rtc aliases to + ODROID-N2 dtsi + +Enable the onboard pcf8563 rtc hardware on ODROID N2/N2+ boards via the +common dtsi. Also add aliases to ensure vrtc does not claim /dev/rtc0. + +Signed-off-by: Christian Hewitt +Reviewed-by: Neil Armstrong +Signed-off-by: Kevin Hilman +Link: https://lore.kernel.org/r/20210111135831.2218-1-christianshewitt@gmail.com +--- + .../boot/dts/amlogic/meson-g12b-odroid-n2.dtsi | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +index 39a09661c5f6..b78be3e6974d 100644 +--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi ++++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +@@ -13,6 +13,8 @@ / { + aliases { + serial0 = &uart_AO; + ethernet0 = ðmac; ++ rtc0 = &rtc; ++ rtc1 = &vrtc; + }; + + dioo2133: audio-amplifier-0 { +@@ -478,6 +480,18 @@ &ir { + linux,rc-map-name = "rc-odroid"; + }; + ++&i2c3 { ++ status = "okay"; ++ pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>; ++ pinctrl-names = "default"; ++ ++ rtc: rtc@51 { ++ compatible = "nxp,pcf8563"; ++ reg = <0x51>; ++ wakeup-source; ++ }; ++}; ++ + &pwm_ab { + pinctrl-0 = <&pwm_a_e_pins>; + pinctrl-names = "default"; +-- +2.32.0 + diff --git a/patch/kernel/archive/meson64-5.10/0002-arm64-dts-meson-add-saradc-node-to-ODROID-N2-N2.patch b/patch/kernel/archive/meson64-5.10/0002-arm64-dts-meson-add-saradc-node-to-ODROID-N2-N2.patch new file mode 100644 index 0000000000..8ee566b053 --- /dev/null +++ b/patch/kernel/archive/meson64-5.10/0002-arm64-dts-meson-add-saradc-node-to-ODROID-N2-N2.patch @@ -0,0 +1,37 @@ +From ec3b1240b428c5652ccb7fdadad217a2ff8ab4db Mon Sep 17 00:00:00 2001 +Message-Id: +In-Reply-To: +References: +From: Hyeonki Hong +Date: Wed, 7 Apr 2021 04:26:08 +0000 +Subject: [PATCH 2/9] arm64: dts: meson: add saradc node to ODROID N2/N2+ + +Add the meson saradc node to the ODROID N2/N2+ common dtsi. + +Signed-off-by: Hyeonki Hong +Signed-off-by: Christian Hewitt +Signed-off-by: Kevin Hilman +Link: https://lore.kernel.org/r/20210407042609.9736-3-christianshewitt@gmail.com +--- + arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +index b78be3e6974d..8a5e132c4b79 100644 +--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi ++++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +@@ -508,6 +508,11 @@ &pwm_AO_cd { + status = "okay"; + }; + ++&saradc { ++ status = "okay"; ++ vref-supply = <&vddao_1v8>; ++}; ++ + /* SD card */ + &sd_emmc_b { + status = "okay"; +-- +2.32.0 + diff --git a/patch/kernel/archive/meson64-5.10/hardkernel-0005-N2-arm64-dts-Add-gpio-line-names.patch b/patch/kernel/archive/meson64-5.10/0003-arm64-dts-meson-add-GPIO-line-names-to-ODROID-N2-N2.patch similarity index 63% rename from patch/kernel/archive/meson64-5.10/hardkernel-0005-N2-arm64-dts-Add-gpio-line-names.patch rename to patch/kernel/archive/meson64-5.10/0003-arm64-dts-meson-add-GPIO-line-names-to-ODROID-N2-N2.patch index 7a5724eb20..1d32b68461 100644 --- a/patch/kernel/archive/meson64-5.10/hardkernel-0005-N2-arm64-dts-Add-gpio-line-names.patch +++ b/patch/kernel/archive/meson64-5.10/0003-arm64-dts-meson-add-GPIO-line-names-to-ODROID-N2-N2.patch @@ -1,18 +1,27 @@ -From abe827c2f577deecd87f04dcf06b0f26a607e79c Mon Sep 17 00:00:00 2001 +From 5ca49a58577f7e9e6f8e0b1cb7c97e756a0e921f Mon Sep 17 00:00:00 2001 +Message-Id: <5ca49a58577f7e9e6f8e0b1cb7c97e756a0e921f.1627311993.git.stefan@agner.ch> +In-Reply-To: +References: From: Hyeonki Hong -Date: Fri, 13 Mar 2020 14:07:34 +0900 -Subject: [PATCH 05/74] ODROID-N2: arm64/dts: Add gpio-line-names +Date: Wed, 7 Apr 2021 04:26:09 +0000 +Subject: [PATCH 3/9] arm64: dts: meson: add GPIO line names to ODROID N2/N2+ -Change-Id: Ie5b40ea8885c324c81b4fa80a5bbe59b533b1b3a +Add GPIO line-name identifiers to the ODROID N2/N2+ common dtsi. + +Signed-off-by: Hyeonki Hong +Signed-off-by: Christian Hewitt +Reviewed-by: Neil Armstrong +Signed-off-by: Kevin Hilman +Link: https://lore.kernel.org/r/20210407042609.9736-4-christianshewitt@gmail.com --- - .../boot/dts/amlogic/meson-g12b-odroid-n2.dtsi | 45 +++++++++++++++++++ + .../dts/amlogic/meson-g12b-odroid-n2.dtsi | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -index e9d8d6bf4100..0bbd97997a42 100644 +index 8a5e132c4b79..41b2f9c96b5f 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -@@ -412,6 +412,51 @@ &frddr_c { +@@ -446,6 +446,51 @@ &frddr_c { }; &gpio { @@ -65,5 +74,5 @@ index e9d8d6bf4100..0bbd97997a42 100644 * WARNING: The USB Hub on the Odroid-N2 needs a reset signal * to be turned high in order to be detected by the USB Controller -- -2.25.1 +2.32.0 diff --git a/patch/kernel/archive/meson64-5.10/0004-arm64-dts-meson-g12b-add-power-button-support.patch b/patch/kernel/archive/meson64-5.10/0004-arm64-dts-meson-g12b-add-power-button-support.patch new file mode 100644 index 0000000000..55ae4590f8 --- /dev/null +++ b/patch/kernel/archive/meson64-5.10/0004-arm64-dts-meson-g12b-add-power-button-support.patch @@ -0,0 +1,42 @@ +From 70e65f906389f7236fe9ad8e1c05dedac0d1988b Mon Sep 17 00:00:00 2001 +Message-Id: <70e65f906389f7236fe9ad8e1c05dedac0d1988b.1627311993.git.stefan@agner.ch> +In-Reply-To: +References: +From: Stefan Agner +Date: Mon, 11 Jan 2021 11:20:48 +0100 +Subject: [PATCH 4/9] arm64: dts: meson: g12b: add power button support + +Add power button support on J2 pin 11 (GPIOX_3 on the SoC side). The +GPIO is low active, e.g. when connecting with pin 9 (GND) a power +button press is triggered. + +Signed-off-by: Stefan Agner +--- + arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +index 41b2f9c96b5f..4b6bb7e74e25 100644 +--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi ++++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +@@ -39,6 +39,17 @@ emmc_pwrseq: emmc-pwrseq { + reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; + }; + ++ gpio-keys-polled { ++ compatible = "gpio-keys-polled"; ++ poll-interval = <100>; ++ ++ power-button { ++ label = "power"; ++ linux,code = ; ++ gpios = <&gpio GPIOX_3 GPIO_ACTIVE_LOW>; ++ }; ++ }; ++ + leds { + compatible = "gpio-leds"; + +-- +2.32.0 + diff --git a/patch/kernel/archive/meson64-5.10/0005-arm64-dts-meson-g12b-add-GPIO-fan-support.patch b/patch/kernel/archive/meson64-5.10/0005-arm64-dts-meson-g12b-add-GPIO-fan-support.patch new file mode 100644 index 0000000000..dc8c5b71ac --- /dev/null +++ b/patch/kernel/archive/meson64-5.10/0005-arm64-dts-meson-g12b-add-GPIO-fan-support.patch @@ -0,0 +1,42 @@ +From 86d9151effff69d2a8fc2027a31dd60bd8c6eb05 Mon Sep 17 00:00:00 2001 +Message-Id: <86d9151effff69d2a8fc2027a31dd60bd8c6eb05.1627311993.git.stefan@agner.ch> +In-Reply-To: +References: +From: Stefan Agner +Date: Mon, 11 Jan 2021 11:38:54 +0100 +Subject: [PATCH 5/9] arm64: dts: meson: g12b: add GPIO fan support + +Add simple GPIO fan node to support a fan on GPIO J8. Unfortunately the +pad used to control the fan does not support real PWM, hence the RPM +cannot be modulated. + +Signed-off-by: Stefan Agner +--- + arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +index 4b6bb7e74e25..e8a3ede698b5 100644 +--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi ++++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +@@ -39,6 +39,17 @@ emmc_pwrseq: emmc-pwrseq { + reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; + }; + ++ /* ++ * 5V 80x80x10.8mm cooling fan from Hardkernel shop. ++ */ ++ fan0: gpio-fan { ++ #cooling-cells = <2>; ++ compatible = "gpio-fan"; ++ gpio-fan,speed-map = <0 0 1600 1>; ++ gpios = <&gpio_ao GPIOAO_10 GPIO_ACTIVE_HIGH>; ++ status = "okay"; ++ }; ++ + gpio-keys-polled { + compatible = "gpio-keys-polled"; + poll-interval = <100>; +-- +2.32.0 + diff --git a/patch/kernel/archive/meson64-5.10/0006-arm64-dts-meson-g12b-odroid-n2-add-fan-as-cooling-de.patch b/patch/kernel/archive/meson64-5.10/0006-arm64-dts-meson-g12b-odroid-n2-add-fan-as-cooling-de.patch new file mode 100644 index 0000000000..1b07af63e0 --- /dev/null +++ b/patch/kernel/archive/meson64-5.10/0006-arm64-dts-meson-g12b-odroid-n2-add-fan-as-cooling-de.patch @@ -0,0 +1,73 @@ +From f1120f132dbdf2e7f7acf328de55bbdce877d882 Mon Sep 17 00:00:00 2001 +Message-Id: +In-Reply-To: +References: +From: Stefan Agner +Date: Mon, 11 Jan 2021 15:53:55 +0100 +Subject: [PATCH 6/9] arm64: dts: meson: g12b: odroid-n2: add fan as cooling + device +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Add the GPIO fan as a cooling device for the CPU thermal zone. Since we +have only full fan speed available with this, set the tripping point to +30°C. + +Signed-off-by: Stefan Agner +--- + .../dts/amlogic/meson-g12b-odroid-n2.dtsi | 38 +++++++++++++++++++ + 1 file changed, 38 insertions(+) + +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +index e8a3ede698b5..dd345c6aa4b5 100644 +--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi ++++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +@@ -388,6 +388,44 @@ &clkc_audio { + status = "okay"; + }; + ++&cpu_thermal { ++ trips { ++ cpu_warm: cpu_warm { ++ hysteresis = <5000>; ++ temperature = <30000>; ++ type = "active"; ++ }; ++ }; ++ ++ cooling-maps { ++ map0 { ++ cooling-device = ++ <&fan0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; ++ trip = <&cpu_warm>; ++ }; ++ map1 { ++ trip = <&cpu_passive>; ++ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&fan0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; ++ }; ++ map2 { ++ trip = <&cpu_hot>; ++ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&fan0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; ++ }; ++ }; ++}; ++ + &cpu0 { + cpu-supply = <&vddcpu_b>; + operating-points-v2 = <&cpu_opp_table_0>; +-- +2.32.0 + diff --git a/patch/kernel/archive/meson64-5.10/0007-arm64-dts-meson-add-uart_A-node.patch b/patch/kernel/archive/meson64-5.10/0007-arm64-dts-meson-add-uart_A-node.patch new file mode 100644 index 0000000000..1257c45c4d --- /dev/null +++ b/patch/kernel/archive/meson64-5.10/0007-arm64-dts-meson-add-uart_A-node.patch @@ -0,0 +1,44 @@ +From dcaf2dc71dd62487eb37561682934414a5795e0e Mon Sep 17 00:00:00 2001 +Message-Id: +In-Reply-To: +References: +From: Hyeonki Hong +Date: Fri, 27 Mar 2020 17:05:22 +0900 +Subject: [PATCH 7/9] arm64: dts: meson: add uart_A node + +The UART_A is available through J3 pin 8/10 and documented to be +available as UART by default. + +Signed-off-by: Stefan Agner +--- + arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +index dd345c6aa4b5..cec346178e3d 100644 +--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi ++++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +@@ -12,6 +12,7 @@ + / { + aliases { + serial0 = &uart_AO; ++ serial1 = &uart_A; + ethernet0 = ðmac; + rtc0 = &rtc; + rtc1 = &vrtc; +@@ -728,6 +729,12 @@ &toddr_c { + status = "okay"; + }; + ++&uart_A { ++ status = "okay"; ++ pinctrl-0 = <&uart_a_pins>; ++ pinctrl-names = "default"; ++}; ++ + &uart_AO { + status = "okay"; + pinctrl-0 = <&uart_ao_a_pins>; +-- +2.32.0 + diff --git a/patch/kernel/archive/meson64-5.10/0008-arm64-dts-meson-add-i2c2-node-to-ODROID-N2-N2.patch b/patch/kernel/archive/meson64-5.10/0008-arm64-dts-meson-add-i2c2-node-to-ODROID-N2-N2.patch new file mode 100644 index 0000000000..91a4485072 --- /dev/null +++ b/patch/kernel/archive/meson64-5.10/0008-arm64-dts-meson-add-i2c2-node-to-ODROID-N2-N2.patch @@ -0,0 +1,37 @@ +From d5d2d8b9eb93eab85af12f1844975903a7c5a879 Mon Sep 17 00:00:00 2001 +Message-Id: +In-Reply-To: +References: +From: Stefan Agner +Date: Thu, 29 Apr 2021 21:32:43 +0200 +Subject: [PATCH 8/9] arm64: dts: meson: add i2c2 node to ODROID N2/N2+ + +The J2 connectors pinout documents "I2C.SDA0/SCL0" on pin 3 and 5, which +are connected to GPIOX_17/18. This GPIO allow to mux I2C to the second +I2C instance. Enable i2c2 and use the appropriate pinmux. + +Signed-off-by: Stefan Agner +--- + arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +index cec346178e3d..f1c3356c78a0 100644 +--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi ++++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +@@ -586,6 +586,12 @@ &ir { + linux,rc-map-name = "rc-odroid"; + }; + ++&i2c2 { ++ status = "okay"; ++ pinctrl-0 = <&i2c2_sda_x_pins>, <&i2c2_sck_x_pins>; ++ pinctrl-names = "default"; ++}; ++ + &i2c3 { + status = "okay"; + pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>; +-- +2.32.0 + diff --git a/patch/kernel/archive/meson64-5.10/0009-Revert-of-fdt-Make-sure-no-map-does-not-remove-alrea.patch b/patch/kernel/archive/meson64-5.10/0009-Revert-of-fdt-Make-sure-no-map-does-not-remove-alrea.patch new file mode 100644 index 0000000000..3335e951d8 --- /dev/null +++ b/patch/kernel/archive/meson64-5.10/0009-Revert-of-fdt-Make-sure-no-map-does-not-remove-alrea.patch @@ -0,0 +1,52 @@ +From 19c34c0ceb6302b07e1017c426796c4cf7322d13 Mon Sep 17 00:00:00 2001 +Message-Id: <19c34c0ceb6302b07e1017c426796c4cf7322d13.1627311993.git.stefan@agner.ch> +In-Reply-To: +References: +From: Stefan Agner +Date: Mon, 26 Jul 2021 16:59:08 +0200 +Subject: [PATCH 9/9] Revert "of/fdt: Make sure no-map does not remove already + reserved regions" + +U-Boot on Hardkernel ODROID-N2 adds fdt "memreserve" entries alongside +the reserved-memory nodes present in upstream Linux. This causes +reserving memory with the no-map flag to fail: +[ 0.000000] OF: fdt: Reserved memory: failed to reserve memory for node 'secmon@5000000': base 0x0000000005000000, size 3 MiB + +This seems to cause kernel crashes such as: +[129988.642342] SError Interrupt on CPU4, code 0xbf000000 -- SError + +Restore the bahavior of Linux kernel 5.9 and older and don't fail +updating the mapping with no-map. + +This reverts commit 8a5a75e5e9e55de1cef5d83ca3589cb4899193ef. + +Signed-off-by: Stefan Agner +--- + drivers/of/fdt.c | 10 +--------- + 1 file changed, 1 insertion(+), 9 deletions(-) + +diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c +index 57ff31b6b1e4..7ef2246e0b1e 100644 +--- a/drivers/of/fdt.c ++++ b/drivers/of/fdt.c +@@ -1149,16 +1149,8 @@ int __init __weak early_init_dt_mark_hotplug_memory_arch(u64 base, u64 size) + int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base, + phys_addr_t size, bool nomap) + { +- if (nomap) { +- /* +- * If the memory is already reserved (by another region), we +- * should not allow it to be marked nomap. +- */ +- if (memblock_is_region_reserved(base, size)) +- return -EBUSY; +- ++ if (nomap) + return memblock_mark_nomap(base, size); +- } + return memblock_reserve(base, size); + } + +-- +2.32.0 + diff --git a/patch/kernel/archive/meson64-5.10/0073-ODROID-COMMON-power-reset-Add-odroid-support.patch b/patch/kernel/archive/meson64-5.10/0073-ODROID-COMMON-power-reset-Add-odroid-support.patch deleted file mode 100644 index f2be2616a5..0000000000 --- a/patch/kernel/archive/meson64-5.10/0073-ODROID-COMMON-power-reset-Add-odroid-support.patch +++ /dev/null @@ -1,232 +0,0 @@ -From 8ccd5a823674a1c8542ebd84b09a78a1f0d5ad98 Mon Sep 17 00:00:00 2001 -From: ckkim -Date: Tue, 6 Oct 2020 17:37:40 +0900 -Subject: [PATCH 73/75] ODROID-COMMON: power:reset: Add odroid support - -Signed-off-by: ckkim -Change-Id: I71955f76e5dbe0adb53a7cd62e747342c580209f ---- - drivers/power/reset/Kconfig | 7 ++ - drivers/power/reset/Makefile | 1 + - drivers/power/reset/odroid-reboot.c | 181 ++++++++++++++++++++++++++++ - 3 files changed, 189 insertions(+) - create mode 100644 drivers/power/reset/odroid-reboot.c - -diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig -index d55b3727e00e..e0807b456cb2 100644 ---- a/drivers/power/reset/Kconfig -+++ b/drivers/power/reset/Kconfig -@@ -9,6 +9,13 @@ menuconfig POWER_RESET - - if POWER_RESET - -+config POWER_RESET_ODROID -+ bool "odroid reboot/power-off driver" -+ depends on ARCH_MESON -+ help -+ This driver supports restart / power off board for amlogic -+ g12a/g12b/sm1 SoCs -+ - config POWER_RESET_AS3722 - bool "ams AS3722 power-off driver" - depends on MFD_AS3722 -diff --git a/drivers/power/reset/Makefile b/drivers/power/reset/Makefile -index c51eceba9ea3..c00146ac11d7 100644 ---- a/drivers/power/reset/Makefile -+++ b/drivers/power/reset/Makefile -@@ -1,4 +1,5 @@ - # SPDX-License-Identifier: GPL-2.0 -+obj-$(CONFIG_POWER_RESET_ODROID) += odroid-reboot.o - obj-$(CONFIG_POWER_RESET_AS3722) += as3722-poweroff.o - obj-$(CONFIG_POWER_RESET_AT91_POWEROFF) += at91-poweroff.o - obj-$(CONFIG_POWER_RESET_AT91_RESET) += at91-reset.o -diff --git a/drivers/power/reset/odroid-reboot.c b/drivers/power/reset/odroid-reboot.c -new file mode 100644 -index 000000000000..68092141fbbb ---- /dev/null -+++ b/drivers/power/reset/odroid-reboot.c -@@ -0,0 +1,181 @@ -+/* -+ * drivers/power/reset/odroid-reboot.c -+ * -+ * Copyright (C) 2017 Amlogic, Inc. All rights reserved. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -+ * more details. -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+#include -+#include -+#include -+ -+#include -+#include -+ -+int sd_vqsw; -+int sd_vmmc; -+int sd_vqen; -+ -+static u32 psci_function_id_restart; -+static u32 psci_function_id_poweroff; -+ -+#define CHECK_RET(ret) { \ -+ if (ret) \ -+ pr_err("[%s] gpio op failed(%d) at line %d\n",\ -+ __func__, ret, __LINE__); \ -+} -+ -+static noinline int __invoke_psci_fn_smc(u64 function_id, u64 arg0, u64 arg1, -+ u64 arg2) -+{ -+ struct arm_smccc_res res; -+ -+ arm_smccc_smc((unsigned long)function_id, -+ (unsigned long)arg0, -+ (unsigned long)arg1, -+ (unsigned long)arg2, -+ 0, 0, 0, 0, &res); -+ return res.a0; -+} -+ -+void odroid_card_reset(void) -+{ -+ int ret = 0; -+ -+ if ((sd_vqsw == 0) && (sd_vmmc == 0)) -+ return; -+ -+ if (sd_vqen == 0) { -+ gpio_free(sd_vqsw); -+ gpio_free(sd_vmmc); -+ ret = gpio_request_one(sd_vqsw, -+ GPIOF_OUT_INIT_LOW, "REBOOT"); -+ CHECK_RET(ret); -+ mdelay(10); -+ ret = gpio_direction_output(sd_vqsw, 1); -+ CHECK_RET(ret); -+ ret = gpio_request_one(sd_vmmc, -+ GPIOF_OUT_INIT_LOW, "REBOOT"); -+ CHECK_RET(ret); -+ mdelay(10); -+ ret = gpio_direction_output(sd_vqsw, 0); -+ CHECK_RET(ret); -+ ret = gpio_direction_output(sd_vmmc, 1); -+ CHECK_RET(ret); -+ mdelay(5); -+ gpio_free(sd_vqsw); -+ gpio_free(sd_vmmc); -+ } else { -+ gpio_free(sd_vqsw); -+ gpio_free(sd_vqen); -+ gpio_free(sd_vmmc); -+ -+ ret = gpio_request_one(sd_vqsw, -+ GPIOF_OUT_INIT_LOW, "REBOOT"); -+ CHECK_RET(ret); -+ ret = gpio_request_one(sd_vqen, -+ GPIOF_OUT_INIT_LOW, "REBOOT"); -+ CHECK_RET(ret); -+ ret = gpio_request_one(sd_vmmc, -+ GPIOF_OUT_INIT_LOW, "REBOOT"); -+ CHECK_RET(ret); -+ mdelay(100); -+ ret = gpio_direction_input(sd_vqen); -+ CHECK_RET(ret); -+ ret = gpio_direction_input(sd_vmmc); -+ CHECK_RET(ret); -+ ret = gpio_direction_input(sd_vqsw); -+ CHECK_RET(ret); -+ mdelay(5); -+ gpio_free(sd_vqen); -+ gpio_free(sd_vmmc); -+ gpio_free(sd_vqsw); -+ } -+} -+ -+static void do_odroid_restart(enum reboot_mode reboot_mode, const char *cmd) -+{ -+ odroid_card_reset(); -+ __invoke_psci_fn_smc(psci_function_id_restart, -+ 0, 0, 0); -+} -+ -+static void do_odroid_poweroff(void) -+{ -+ odroid_card_reset(); -+ -+ __invoke_psci_fn_smc(0x82000042, 1, 0, 0); -+ __invoke_psci_fn_smc(psci_function_id_poweroff, -+ 0, 0, 0); -+} -+ -+static int odroid_restart_probe(struct platform_device *pdev) -+{ -+ struct device_node *of_node; -+ u32 id; -+ -+ if (!of_property_read_u32(pdev->dev.of_node, "sys_reset", &id)) { -+ psci_function_id_restart = id; -+ arm_pm_restart = do_odroid_restart; -+ } -+ -+ if (!of_property_read_u32(pdev->dev.of_node, "sys_poweroff", &id)) { -+ psci_function_id_poweroff = id; -+ pm_power_off = do_odroid_poweroff; -+ } -+ -+ of_node = pdev->dev.of_node; -+ -+ sd_vqsw = of_get_named_gpio(of_node, "sd-vqsw", 0); -+ if (!gpio_is_valid(sd_vqsw)) sd_vqsw = 0; -+ -+ sd_vmmc = of_get_named_gpio(of_node, "sd-vmmc", 0); -+ if (!gpio_is_valid(sd_vmmc)) sd_vmmc = 0; -+ -+ sd_vqen = of_get_named_gpio(of_node, "sd-vqen", 0); -+ if (!gpio_is_valid(sd_vqen)) sd_vqen = 0; -+ -+ return 0; -+} -+ -+static const struct of_device_id of_odroid_restart_match[] = { -+ { .compatible = "odroid,reboot", }, -+ {}, -+}; -+MODULE_DEVICE_TABLE(of, of_odroid_restart_match); -+ -+static struct platform_driver odroid_restart_driver = { -+ .probe = odroid_restart_probe, -+ .driver = { -+ .name = "odroid-restart", -+ .of_match_table = of_match_ptr(of_odroid_restart_match), -+ }, -+}; -+ -+static int __init odroid_restart_init(void) -+{ -+ return platform_driver_register(&odroid_restart_driver); -+} -+device_initcall(odroid_restart_init); --- -2.25.1 - diff --git a/patch/kernel/archive/meson64-5.10/0074-ODROID-C4-arm64-dts-reboot-power-off-support-for-ODR.patch b/patch/kernel/archive/meson64-5.10/0074-ODROID-C4-arm64-dts-reboot-power-off-support-for-ODR.patch deleted file mode 100644 index ada750c79a..0000000000 --- a/patch/kernel/archive/meson64-5.10/0074-ODROID-C4-arm64-dts-reboot-power-off-support-for-ODR.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 090381e6bb3063bf9d9c7a4d103d03505c655559 Mon Sep 17 00:00:00 2001 -From: ckkim -Date: Tue, 6 Oct 2020 17:49:18 +0900 -Subject: [PATCH 74/75] ODROID-C4: arm64:dts: reboot / power off support for - ODROID-C4 - -Signed-off-by: ckkim -Change-Id: I22316a4ab896a0d8511d2cb2c34ac00360bb44d1 ---- - arch/arm64/boot/dts/amlogic/meson64_odroidc4.dts | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/arch/arm64/boot/dts/amlogic/meson64_odroidc4.dts b/arch/arm64/boot/dts/amlogic/meson64_odroidc4.dts -index 761702fc2170..ff1296a94be2 100644 ---- a/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts -+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts -@@ -9,6 +9,16 @@ - / { - compatible = "hardkernel,odroid-c4", "amlogic,sm1"; - model = "Hardkernel ODROID-C4"; -+ -+ odroid-reboot { -+ compatible = "odroid,reboot"; -+ sys_reset = <0x84000009>; -+ sys_poweroff = <0x84000008>; -+ -+ sd-vqen = <&gpio_ao GPIOE_2 GPIO_ACTIVE_HIGH>; -+ sd-vqsw = <&gpio_ao GPIOAO_6 GPIO_ACTIVE_HIGH>; -+ sd-vmmc = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>; -+ }; - - aliases { - ethernet0 = ðmac; --- -2.25.1 - diff --git a/patch/kernel/archive/meson64-5.10/9999-HACK-Add_SPI_Flash_enabled_versions_of_N2_and_N2Plus_DTBs.patch b/patch/kernel/archive/meson64-5.10/9999-HACK-Add_SPI_Flash_enabled_versions_of_N2_and_N2Plus_DTBs.patch new file mode 100644 index 0000000000..5f5be25f53 --- /dev/null +++ b/patch/kernel/archive/meson64-5.10/9999-HACK-Add_SPI_Flash_enabled_versions_of_N2_and_N2Plus_DTBs.patch @@ -0,0 +1,83 @@ +Index: arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-spi.dts +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-spi.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-spi.dts +new file mode 100644 +--- /dev/null (date 1630421486471) ++++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-spi.dts (date 1630421486471) +@@ -0,0 +1,11 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include "meson-g12b-odroid-n2.dts" ++ ++/ { ++ model = "Hardkernel ODROID-N2 with SPI"; ++}; ++ ++#include "meson-g12b-odroid-n2-enable-spi.dtsi" +Index: arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus-spi.dts +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus-spi.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus-spi.dts +new file mode 100644 +--- /dev/null (date 1630421477913) ++++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus-spi.dts (date 1630421477913) +@@ -0,0 +1,11 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include "meson-g12b-odroid-n2-plus.dts" ++ ++/ { ++ model = "Hardkernel ODROID-N2Plus with SPI"; ++}; ++ ++#include "meson-g12b-odroid-n2-enable-spi.dtsi" +Index: arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-enable-spi.dtsi +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-enable-spi.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-enable-spi.dtsi +new file mode 100644 +--- /dev/null (date 1630421525557) ++++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-enable-spi.dtsi (date 1630421525557) +@@ -0,0 +1,13 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/* ++ * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0, and change bus-width to 4 then spifc can be enabled. ++ */ ++&sd_emmc_c { ++ pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_4b_pins>, <&emmc_ds_pins>; ++ bus-width = <4>; ++}; ++ ++&spifc { ++ status = "okay"; ++}; +Index: arch/arm64/boot/dts/amlogic/Makefile +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile +--- a/arch/arm64/boot/dts/amlogic/Makefile (revision b91db6a0b52e019b6bdabea3f1dbe36d85c7e52c) ++++ b/arch/arm64/boot/dts/amlogic/Makefile (date 1630421076946) +@@ -9,7 +9,9 @@ + dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb + dtb-$(CONFIG_ARCH_MESON) += meson-g12b-s922x-khadas-vim3.dtb + dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb ++dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2-spi.dtb + dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2-plus.dtb ++dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2-plus-spi.dtb + dtb-$(CONFIG_ARCH_MESON) += meson-g12b-ugoos-am6.dtb + dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-kii-pro.dtb + dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb diff --git a/patch/kernel/archive/meson64-5.10/9999-revert-meson_drv_shutdown.patch b/patch/kernel/archive/meson64-5.10/9999-revert-meson_drv_shutdown.patch deleted file mode 100644 index 94ae819376..0000000000 --- a/patch/kernel/archive/meson64-5.10/9999-revert-meson_drv_shutdown.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 22ce3ced8b11ceb313dea2aab1bb8ac028320dbb Mon Sep 17 00:00:00 2001 -From: Igor Pecovnik -Date: Tue, 15 Jun 2021 19:53:41 +0200 -Subject: [PATCH] Remove shutdown - -Signed-off-by: Igor Pecovnik ---- - drivers/gpu/drm/meson/meson_drv.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c -index 2753067c0..b591aee04 100644 ---- a/drivers/gpu/drm/meson/meson_drv.c -+++ b/drivers/gpu/drm/meson/meson_drv.c -@@ -564,7 +564,6 @@ static const struct dev_pm_ops meson_drv_pm_ops = { - - static struct platform_driver meson_drm_platform_driver = { - .probe = meson_drv_probe, -- .shutdown = meson_drv_shutdown, - .driver = { - .name = "meson-drm", - .of_match_table = dt_match, --- -Created with Armbian build tools https://github.com/armbian/build - diff --git a/patch/kernel/archive/meson64-5.10/board-odroid-c2-add-uartA-uartC.patch b/patch/kernel/archive/meson64-5.10/board-odroidc2-add-uartA-uartC.patch similarity index 77% rename from patch/kernel/archive/meson64-5.10/board-odroid-c2-add-uartA-uartC.patch rename to patch/kernel/archive/meson64-5.10/board-odroidc2-add-uartA-uartC.patch index f692460830..9ed2e6f4eb 100644 --- a/patch/kernel/archive/meson64-5.10/board-odroid-c2-add-uartA-uartC.patch +++ b/patch/kernel/archive/meson64-5.10/board-odroidc2-add-uartA-uartC.patch @@ -1,20 +1,25 @@ +From d5d2d8b9eb93eab85af12f1844975903a7c5a879 Mon Sep 17 00:00:00 2001 +From: Stefan Agner +Date: Thu, 29 Apr 2021 21:32:43 +0200 +Subject: [PATCH XXX] board-odroidc2-add-uartA-uartC + diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts index 1cc9dc6..9f48dff 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts @@ -16,6 +16,8 @@ - + aliases { serial0 = &uart_AO; + serial1 = &uart_A; + serial2 = &uart_C; ethernet0 = ðmac; }; - + @@ -290,6 +355,18 @@ pinctrl-names = "default"; }; - + +&uart_A { + status = "disabled"; + pinctrl-0 = <&uart_a_pins>; diff --git a/patch/kernel/archive/meson64-5.10/docs-FROMLIST-dt-bindings-display-bridge-lvds-codec-Add-n.patch b/patch/kernel/archive/meson64-5.10/docs-FROMLIST-dt-bindings-display-bridge-lvds-codec-Add-n.patch deleted file mode 100644 index 52889fc7f7..0000000000 --- a/patch/kernel/archive/meson64-5.10/docs-FROMLIST-dt-bindings-display-bridge-lvds-codec-Add-n.patch +++ /dev/null @@ -1,53 +0,0 @@ -From a248c9db1deae60a1d77d094599a81a1639976d1 Mon Sep 17 00:00:00 2001 -From: Boris Brezillon -Date: Tue, 22 Oct 2019 16:15:50 +0200 -Subject: [PATCH 065/101] FROMLIST: dt-bindings: display: bridge: lvds-codec: - Add new bus-width prop - -Add the bus-width property to describe the input bus format. - -v10: -* Add changelog to the commit message -* Add Rob's R-b - -v8 -> v9: -* No changes - -v7: -* Rebase on top of lvds-codec changes -* Drop the data-mapping property - -v4 -> v6: -* Not part of the series - -v3: -* New patch - -Signed-off-by: Boris Brezillon -Reviewed-by: Rob Herring ---- - .../devicetree/bindings/display/bridge/lvds-codec.yaml | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/Documentation/devicetree/bindings/display/bridge/lvds-codec.yaml b/Documentation/devicetree/bindings/display/bridge/lvds-codec.yaml -index 8f373029f5d2..7c4e42f4de61 100644 ---- a/Documentation/devicetree/bindings/display/bridge/lvds-codec.yaml -+++ b/Documentation/devicetree/bindings/display/bridge/lvds-codec.yaml -@@ -55,6 +55,14 @@ properties: - description: | - For LVDS encoders, port 0 is the parallel input - For LVDS decoders, port 0 is the LVDS input -+ properties: -+ bus-width: -+ allOf: -+ - $ref: /schemas/types.yaml#/definitions/uint32 -+ - enum: [18, 24] -+ - default: 24 -+ description: -+ Number of data lines used to transmit the RGB data. - - port@1: - type: object --- -2.17.1 - diff --git a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-fifo-to-schema.patch b/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-fifo-to-schema.patch deleted file mode 100644 index 7741b23a20..0000000000 --- a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-fifo-to-schema.patch +++ /dev/null @@ -1,173 +0,0 @@ -From a97f73e2f405892e47e27b7382b18a055c9cfec5 Mon Sep 17 00:00:00 2001 -From: Jerome Brunet -Date: Fri, 24 Jan 2020 15:40:25 +0100 -Subject: [PATCH 037/101] WIP: ASoC: meson: convert axg fifo to schema - -Signed-off-by: Jerome Brunet ---- - .../bindings/sound/amlogic,axg-fifo.txt | 34 ------ - .../bindings/sound/amlogic,axg-fifo.yaml | 111 ++++++++++++++++++ - 2 files changed, 111 insertions(+), 34 deletions(-) - delete mode 100644 Documentation/devicetree/bindings/sound/amlogic,axg-fifo.txt - create mode 100644 Documentation/devicetree/bindings/sound/amlogic,axg-fifo.yaml - -diff --git a/Documentation/devicetree/bindings/sound/amlogic,axg-fifo.txt b/Documentation/devicetree/bindings/sound/amlogic,axg-fifo.txt -deleted file mode 100644 -index fa4545ed81ca..000000000000 ---- a/Documentation/devicetree/bindings/sound/amlogic,axg-fifo.txt -+++ /dev/null -@@ -1,34 +0,0 @@ --* Amlogic Audio FIFO controllers -- --Required properties: --- compatible: 'amlogic,axg-toddr' or -- 'amlogic,axg-toddr' or -- 'amlogic,g12a-frddr' or -- 'amlogic,g12a-toddr' or -- 'amlogic,sm1-frddr' or -- 'amlogic,sm1-toddr' --- reg: physical base address of the controller and length of memory -- mapped region. --- interrupts: interrupt specifier for the fifo. --- clocks: phandle to the fifo peripheral clock provided by the audio -- clock controller. --- resets: list of reset phandle, one for each entry reset-names. --- reset-names: should contain the following: -- * "arb" : memory ARB line (required) -- * "rst" : dedicated device reset line (optional) --- #sound-dai-cells: must be 0. --- amlogic,fifo-depth: The size of the controller's fifo in bytes. This -- is useful for determining certain configuration such -- as the flush threshold of the fifo -- --Example of FRDDR A on the A113 SoC: -- --frddr_a: audio-controller@1c0 { -- compatible = "amlogic,axg-frddr"; -- reg = <0x0 0x1c0 0x0 0x1c>; -- #sound-dai-cells = <0>; -- interrupts = ; -- clocks = <&clkc_audio AUD_CLKID_FRDDR_A>; -- resets = <&arb AXG_ARB_FRDDR_A>; -- fifo-depth = <512>; --}; -diff --git a/Documentation/devicetree/bindings/sound/amlogic,axg-fifo.yaml b/Documentation/devicetree/bindings/sound/amlogic,axg-fifo.yaml -new file mode 100644 -index 000000000000..d9fe4f624784 ---- /dev/null -+++ b/Documentation/devicetree/bindings/sound/amlogic,axg-fifo.yaml -@@ -0,0 +1,111 @@ -+# SPDX-License-Identifier: GPL-2.0 -+%YAML 1.2 -+--- -+$id: http://devicetree.org/schemas/sound/amlogic,axg-fifo.yaml# -+$schema: http://devicetree.org/meta-schemas/core.yaml# -+ -+title: Amlogic AXG Audio FIFO controllers -+ -+maintainers: -+ - Jerome Brunet -+ -+properties: -+ $nodename: -+ pattern: "^audio-controller@.*" -+ -+ "#sound-dai-cells": -+ const: 0 -+ -+ compatible: -+ oneOf: -+ - items: -+ - const: -+ amlogic,axg-toddr -+ - items: -+ - const: -+ amlogic,axg-frddr -+ - items: -+ - enum: -+ - amlogic,g12a-toddr -+ - amlogic,sm1-toddr -+ - const: -+ amlogic,axg-toddr -+ - items: -+ - enum: -+ - amlogic,g12a-frddr -+ - amlogic,sm1-frddr -+ - const: -+ amlogic,axg-frddr -+ -+ clocks: -+ items: -+ - description: Peripheral clock -+ -+ interrupts: -+ maxItems: 1 -+ -+ reg: -+ maxItems: 1 -+ -+ resets: -+ minItems: 1 -+ items: -+ - description: Memory ARB line -+ - description: Dedicated device reset line -+ -+ reset-names: -+ minItems: 1 -+ items: -+ - const: arb -+ - const: rst -+ -+ amlogic,fifo-depth: -+ $ref: /schemas/types.yaml#/definitions/uint32 -+ description: Size of the controller's fifo in bytes -+ -+required: -+ - "#sound-dai-cells" -+ - compatible -+ - interrupts -+ - reg -+ - clocks -+ - resets -+ - amlogic,fifo-depth -+ -+if: -+ properties: -+ compatible: -+ contains: -+ enum: -+ - amlogic,g12a-toddr -+ - amlogic,sm1-toddr -+ - amlogic,g12a-frddr -+ - amlogic,sm1-frddr -+then: -+ properties: -+ resets: -+ minItems: 2 -+ reset-names: -+ minItems: 2 -+ required: -+ - reset-names -+ -+examples: -+ - | -+ #include -+ #include -+ #include -+ #include -+ #include -+ -+ frddr_a: audio-controller@1c0 { -+ compatible = "amlogic,g12a-frddr", "amlogic,axg-frddr"; -+ reg = <0x0 0x1c0 0x0 0x1c>; -+ #sound-dai-cells = <0>; -+ interrupts = ; -+ clocks = <&clkc_audio AUD_CLKID_FRDDR_A>; -+ resets = <&arb AXG_ARB_FRDDR_A>, <&clkc_audio AUD_RESET_FRDDR_A>; -+ reset-names = "arb", "rst"; -+ amlogic,fifo-depth = <512>; -+ }; -+ --- -2.17.1 - diff --git a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-pdm-to-schema.patch b/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-pdm-to-schema.patch deleted file mode 100644 index 5b894ab810..0000000000 --- a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-pdm-to-schema.patch +++ /dev/null @@ -1,136 +0,0 @@ -From 74524d2255deea105d57a441b266655a304b27f5 Mon Sep 17 00:00:00 2001 -From: Jerome Brunet -Date: Fri, 24 Jan 2020 12:13:40 +0100 -Subject: [PATCH 036/101] WIP: ASoC: meson: convert axg pdm to schema - -Signed-off-by: Jerome Brunet ---- - .../bindings/sound/amlogic,axg-pdm.txt | 29 ------- - .../bindings/sound/amlogic,axg-pdm.yaml | 79 +++++++++++++++++++ - 2 files changed, 79 insertions(+), 29 deletions(-) - delete mode 100644 Documentation/devicetree/bindings/sound/amlogic,axg-pdm.txt - create mode 100644 Documentation/devicetree/bindings/sound/amlogic,axg-pdm.yaml - -diff --git a/Documentation/devicetree/bindings/sound/amlogic,axg-pdm.txt b/Documentation/devicetree/bindings/sound/amlogic,axg-pdm.txt -deleted file mode 100644 -index 716878107a24..000000000000 ---- a/Documentation/devicetree/bindings/sound/amlogic,axg-pdm.txt -+++ /dev/null -@@ -1,29 +0,0 @@ --* Amlogic Audio PDM input -- --Required properties: --- compatible: 'amlogic,axg-pdm' or -- 'amlogic,g12a-pdm' or -- 'amlogic,sm1-pdm' --- reg: physical base address of the controller and length of memory -- mapped region. --- clocks: list of clock phandle, one for each entry clock-names. --- clock-names: should contain the following: -- * "pclk" : peripheral clock. -- * "dclk" : pdm digital clock -- * "sysclk" : dsp system clock --- #sound-dai-cells: must be 0. -- --Optional property: --- resets: phandle to the dedicated reset line of the pdm input. -- --Example of PDM on the A113 SoC: -- --pdm: audio-controller@ff632000 { -- compatible = "amlogic,axg-pdm"; -- reg = <0x0 0xff632000 0x0 0x34>; -- #sound-dai-cells = <0>; -- clocks = <&clkc_audio AUD_CLKID_PDM>, -- <&clkc_audio AUD_CLKID_PDM_DCLK>, -- <&clkc_audio AUD_CLKID_PDM_SYSCLK>; -- clock-names = "pclk", "dclk", "sysclk"; --}; -diff --git a/Documentation/devicetree/bindings/sound/amlogic,axg-pdm.yaml b/Documentation/devicetree/bindings/sound/amlogic,axg-pdm.yaml -new file mode 100644 -index 000000000000..aa90b77e593d ---- /dev/null -+++ b/Documentation/devicetree/bindings/sound/amlogic,axg-pdm.yaml -@@ -0,0 +1,79 @@ -+# SPDX-License-Identifier: GPL-2.0 -+%YAML 1.2 -+--- -+$id: http://devicetree.org/schemas/sound/amlogic,axg-pdm.yaml# -+$schema: http://devicetree.org/meta-schemas/core.yaml# -+ -+title: Amlogic Audio AXG PDM input -+ -+maintainers: -+ - Jerome Brunet -+ -+properties: -+ $nodename: -+ pattern: "^audio-controller@.*" -+ -+ "#sound-dai-cells": -+ const: 0 -+ -+ compatible: -+ oneOf: -+ - items: -+ - enum: -+ - amlogic,g12a-pdm -+ - amlogic,sm1-pdm -+ - const: -+ amlogic,axg-pdm -+ - items: -+ - const: -+ amlogic,axg-pdm -+ -+ clocks: -+ items: -+ - description: Peripheral clock -+ - description: PDM digital clock -+ - description: DSP system clock -+ -+ clock-names: -+ items: -+ - const: pclk -+ - const: dclk -+ - const: sysclk -+ -+ reg: -+ maxItems: 1 -+ -+ resets: -+ maxItems: 1 -+ -+required: -+ - "#sound-dai-cells" -+ - compatible -+ - reg -+ - clocks -+ - clock-names -+ -+if: -+ properties: -+ compatible: -+ contains: -+ enum: -+ - amlogic,g12a-pdm -+ - amlogic,sm1-pdm -+then: -+ required: -+ - resets -+ -+examples: -+ - | -+ #include -+ -+ pdm: audio-controller@ff632000 { -+ compatible = "amlogic,axg-pdm"; -+ reg = <0x0 0xff632000 0x0 0x34>; -+ #sound-dai-cells = <0>; -+ clocks = <&clkc_audio AUD_CLKID_PDM>, -+ <&clkc_audio AUD_CLKID_PDM_DCLK>, -+ <&clkc_audio AUD_CLKID_PDM_SYSCLK>; -+ clock-names = "pclk", "dclk", "sysclk"; -+ }; --- -2.17.1 - diff --git a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-sound-card-control-to-sch.patch b/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-sound-card-control-to-sch.patch deleted file mode 100644 index 07e4a0e96d..0000000000 --- a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-sound-card-control-to-sch.patch +++ /dev/null @@ -1,334 +0,0 @@ -From 3b0d0fb9fb7faf1b00703693500a666be85209a0 Mon Sep 17 00:00:00 2001 -From: Jerome Brunet -Date: Fri, 24 Jan 2020 18:23:36 +0100 -Subject: [PATCH 041/101] WIP: ASoC: meson: convert axg sound card control to - schema - -Signed-off-by: Jerome Brunet ---- - .../bindings/sound/amlogic,axg-sound-card.txt | 124 ------------ - .../sound/amlogic,axg-sound-card.yaml | 181 ++++++++++++++++++ - 2 files changed, 181 insertions(+), 124 deletions(-) - delete mode 100644 Documentation/devicetree/bindings/sound/amlogic,axg-sound-card.txt - create mode 100644 Documentation/devicetree/bindings/sound/amlogic,axg-sound-card.yaml - -diff --git a/Documentation/devicetree/bindings/sound/amlogic,axg-sound-card.txt b/Documentation/devicetree/bindings/sound/amlogic,axg-sound-card.txt -deleted file mode 100644 -index 80b411296480..000000000000 ---- a/Documentation/devicetree/bindings/sound/amlogic,axg-sound-card.txt -+++ /dev/null -@@ -1,124 +0,0 @@ --Amlogic AXG sound card: -- --Required properties: -- --- compatible: "amlogic,axg-sound-card" --- model : User specified audio sound card name, one string -- --Optional properties: -- --- audio-aux-devs : List of phandles pointing to auxiliary devices --- audio-widgets : Please refer to widgets.txt. --- audio-routing : A list of the connections between audio components. -- --Subnodes: -- --- dai-link: Container for dai-link level properties and the CODEC -- sub-nodes. There should be at least one (and probably more) -- subnode of this type. -- --Required dai-link properties: -- --- sound-dai: phandle and port of the CPU DAI. -- --Required TDM Backend dai-link properties: --- dai-format : CPU/CODEC common audio format -- --Optional TDM Backend dai-link properties: --- dai-tdm-slot-rx-mask-{0,1,2,3}: Receive direction slot masks --- dai-tdm-slot-tx-mask-{0,1,2,3}: Transmit direction slot masks -- When omitted, mask is assumed to have to no -- slots. A valid must have at one slot, so at -- least one these mask should be provided with -- an enabled slot. --- dai-tdm-slot-num : Please refer to tdm-slot.txt. -- If omitted, slot number is set to accommodate the largest -- mask provided. --- dai-tdm-slot-width : Please refer to tdm-slot.txt. default to 32 if omitted. --- mclk-fs : Multiplication factor between stream rate and mclk -- --Backend dai-link subnodes: -- --- codec: dai-link representing backend links should have at least one subnode. -- One subnode for each codec of the dai-link. -- dai-link representing frontend links have no codec, therefore have no -- subnodes -- --Required codec subnodes properties: -- --- sound-dai: phandle and port of the CODEC DAI. -- --Optional codec subnodes properties: -- --- dai-tdm-slot-tx-mask : Please refer to tdm-slot.txt. --- dai-tdm-slot-rx-mask : Please refer to tdm-slot.txt. -- --Example: -- --sound { -- compatible = "amlogic,axg-sound-card"; -- model = "AXG-S420"; -- audio-aux-devs = <&tdmin_a>, <&tdmout_c>; -- audio-widgets = "Line", "Lineout", -- "Line", "Linein", -- "Speaker", "Speaker1 Left", -- "Speaker", "Speaker1 Right"; -- "Speaker", "Speaker2 Left", -- "Speaker", "Speaker2 Right"; -- audio-routing = "TDMOUT_C IN 0", "FRDDR_A OUT 2", -- "SPDIFOUT IN 0", "FRDDR_A OUT 3", -- "TDM_C Playback", "TDMOUT_C OUT", -- "TDMIN_A IN 2", "TDM_C Capture", -- "TDMIN_A IN 5", "TDM_C Loopback", -- "TODDR_A IN 0", "TDMIN_A OUT", -- "Lineout", "Lineout AOUTL", -- "Lineout", "Lineout AOUTR", -- "Speaker1 Left", "SPK1 OUT_A", -- "Speaker2 Left", "SPK2 OUT_A", -- "Speaker1 Right", "SPK1 OUT_B", -- "Speaker2 Right", "SPK2 OUT_B", -- "Linein AINL", "Linein", -- "Linein AINR", "Linein"; -- -- dai-link@0 { -- sound-dai = <&frddr_a>; -- }; -- -- dai-link@1 { -- sound-dai = <&toddr_a>; -- }; -- -- dai-link@2 { -- sound-dai = <&tdmif_c>; -- dai-format = "i2s"; -- dai-tdm-slot-tx-mask-2 = <1 1>; -- dai-tdm-slot-tx-mask-3 = <1 1>; -- dai-tdm-slot-rx-mask-1 = <1 1>; -- mclk-fs = <256>; -- -- codec@0 { -- sound-dai = <&lineout>; -- }; -- -- codec@1 { -- sound-dai = <&speaker_amp1>; -- }; -- -- codec@2 { -- sound-dai = <&speaker_amp2>; -- }; -- -- codec@3 { -- sound-dai = <&linein>; -- }; -- -- }; -- -- dai-link@3 { -- sound-dai = <&spdifout>; -- -- codec { -- sound-dai = <&spdif_dit>; -- }; -- }; --}; -diff --git a/Documentation/devicetree/bindings/sound/amlogic,axg-sound-card.yaml b/Documentation/devicetree/bindings/sound/amlogic,axg-sound-card.yaml -new file mode 100644 -index 000000000000..168d84b2dcb7 ---- /dev/null -+++ b/Documentation/devicetree/bindings/sound/amlogic,axg-sound-card.yaml -@@ -0,0 +1,181 @@ -+# SPDX-License-Identifier: GPL-2.0 -+%YAML 1.2 -+--- -+$id: http://devicetree.org/schemas/sound/amlogic,axg-sound-card.yaml# -+$schema: http://devicetree.org/meta-schemas/core.yaml# -+ -+title: Amlogic AXG sound card -+ -+maintainers: -+ - Jerome Brunet -+ -+properties: -+ compatible: -+ items: -+ - const: amlogic,axg-sound-card -+ -+ audio-aux-devs: -+ $ref: /schemas/types.yaml#/definitions/phandle-array -+ description: list of auxiliary devices -+ -+ audio-routing: -+ $ref: /schemas/types.yaml#/definitions/non-unique-string-array -+ minItems: 2 -+ description: |- -+ A list of the connections between audio components. Each entry is a -+ pair of strings, the first being the connection's sink, the second -+ being the connection's source. -+ -+ audio-widgets: -+ $ref: /schemas/types.yaml#/definitions/non-unique-string-array -+ minItems: 2 -+ description: |- -+ A list off component DAPM widget. Each entry is a pair of strings, -+ the first being the widget type, the second being the widget name -+ -+ model: -+ $ref: /schemas/types.yaml#/definitions/string -+ description: User specified audio sound card name -+ -+patternProperties: -+ "^dai-link-[0-9]+$": -+ type: object -+ description: |- -+ dai-link child nodes: -+ Container for dai-link level properties and the CODEC sub-nodes. -+ There should be at least one (and probably more) subnode of this type -+ -+ properties: -+ dai-format: -+ $ref: /schemas/types.yaml#/definitions/string -+ enum: [ i2s, left-j, dsp_a ] -+ -+ dai-tdm-slot-num: -+ $ref: /schemas/types.yaml#/definitions/uint32 -+ description: | -+ Number of slots in use. If omitted, slot number is set to -+ accommodate the largest mask provided. -+ maximum: 32 -+ -+ dai-tdm-slot-width: -+ $ref: /schemas/types.yaml#/definitions/uint32 -+ description: Width in bits for each slot -+ enum: [ 8, 16, 20, 24, 32 ] -+ default: 32 -+ -+ mclk-fs: -+ $ref: /schemas/types.yaml#/definitions/uint32 -+ description: |- -+ Multiplication factor between the frame rate and master clock -+ rate -+ -+ sound-dai: -+ $ref: /schemas/types.yaml#/definitions/phandle -+ description: phandle of the CPU DAI -+ -+ patternProperties: -+ "^dai-tdm-slot-(t|r)x-mask-[0-3]$": -+ $ref: /schemas/types.yaml#/definitions/uint32-array -+ description: |- -+ Transmit and receive cpu slot masks of each TDM lane -+ When omitted, mask is assumed to have to no slots. A valid must have -+ at one slot, so at least one these mask should be provided with -+ an enabled slot. -+ -+ "^codec-[0-9]+$": -+ type: object -+ description: |- -+ Codecs: -+ dai-link representing backend links should have at least one subnode. -+ One subnode for each codec of the dai-link. dai-link representing -+ frontend links have no codec, therefore have no subnodes -+ -+ properties: -+ sound-dai: -+ $ref: /schemas/types.yaml#/definitions/phandle -+ description: phandle of the codec DAI -+ -+ patternProperties: -+ "^dai-tdm-slot-(t|r)x-mask$": -+ $ref: /schemas/types.yaml#/definitions/uint32-array -+ description: Transmit and receive codec slot masks -+ -+ required: -+ - sound-dai -+ -+ required: -+ - sound-dai -+ -+required: -+ - model -+ - dai-link-0 -+ -+examples: -+ - | -+ sound { -+ compatible = "amlogic,axg-sound-card"; -+ model = "AXG-S420"; -+ audio-aux-devs = <&tdmin_a>, <&tdmout_c>; -+ audio-widgets = "Line", "Lineout", -+ "Line", "Linein", -+ "Speaker", "Speaker1 Left", -+ "Speaker", "Speaker1 Right", -+ "Speaker", "Speaker2 Left", -+ "Speaker", "Speaker2 Right"; -+ audio-routing = "TDMOUT_C IN 0", "FRDDR_A OUT 2", -+ "SPDIFOUT IN 0", "FRDDR_A OUT 3", -+ "TDM_C Playback", "TDMOUT_C OUT", -+ "TDMIN_A IN 2", "TDM_C Capture", -+ "TDMIN_A IN 5", "TDM_C Loopback", -+ "TODDR_A IN 0", "TDMIN_A OUT", -+ "Lineout", "Lineout AOUTL", -+ "Lineout", "Lineout AOUTR", -+ "Speaker1 Left", "SPK1 OUT_A", -+ "Speaker2 Left", "SPK2 OUT_A", -+ "Speaker1 Right", "SPK1 OUT_B", -+ "Speaker2 Right", "SPK2 OUT_B", -+ "Linein AINL", "Linein", -+ "Linein AINR", "Linein"; -+ -+ dai-link-0 { -+ sound-dai = <&frddr_a>; -+ }; -+ -+ dai-link-1 { -+ sound-dai = <&toddr_a>; -+ }; -+ -+ dai-link-2 { -+ sound-dai = <&tdmif_c>; -+ dai-format = "i2s"; -+ dai-tdm-slot-tx-mask-2 = <1 1>; -+ dai-tdm-slot-tx-mask-3 = <1 1>; -+ dai-tdm-slot-rx-mask-1 = <1 1>; -+ mclk-fs = <256>; -+ -+ codec-0 { -+ sound-dai = <&lineout>; -+ }; -+ -+ codec-1 { -+ sound-dai = <&speaker_amp1>; -+ }; -+ -+ codec-2 { -+ sound-dai = <&speaker_amp2>; -+ }; -+ -+ codec-3 { -+ sound-dai = <&linein>; -+ }; -+ }; -+ -+ dai-link@3 { -+ sound-dai = <&spdifout>; -+ -+ codec { -+ sound-dai = <&spdif_dit>; -+ }; -+ }; -+ }; -+ --- -2.17.1 - diff --git a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-spdif-input-to-schema.patch b/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-spdif-input-to-schema.patch deleted file mode 100644 index 4263ada918..0000000000 --- a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-spdif-input-to-schema.patch +++ /dev/null @@ -1,139 +0,0 @@ -From d44d6ce650b53d6a05279113e77634405e87e589 Mon Sep 17 00:00:00 2001 -From: Jerome Brunet -Date: Fri, 24 Jan 2020 15:52:03 +0100 -Subject: [PATCH 038/101] WIP: ASoC: meson: convert axg spdif input to schema - -Signed-off-by: Jerome Brunet ---- - .../bindings/sound/amlogic,axg-spdifin.txt | 27 ------ - .../bindings/sound/amlogic,axg-spdifin.yaml | 84 +++++++++++++++++++ - 2 files changed, 84 insertions(+), 27 deletions(-) - delete mode 100644 Documentation/devicetree/bindings/sound/amlogic,axg-spdifin.txt - create mode 100644 Documentation/devicetree/bindings/sound/amlogic,axg-spdifin.yaml - -diff --git a/Documentation/devicetree/bindings/sound/amlogic,axg-spdifin.txt b/Documentation/devicetree/bindings/sound/amlogic,axg-spdifin.txt -deleted file mode 100644 -index df92a4ecf288..000000000000 ---- a/Documentation/devicetree/bindings/sound/amlogic,axg-spdifin.txt -+++ /dev/null -@@ -1,27 +0,0 @@ --* Amlogic Audio SPDIF Input -- --Required properties: --- compatible: 'amlogic,axg-spdifin' or -- 'amlogic,g12a-spdifin' or -- 'amlogic,sm1-spdifin' --- interrupts: interrupt specifier for the spdif input. --- clocks: list of clock phandle, one for each entry clock-names. --- clock-names: should contain the following: -- * "pclk" : peripheral clock. -- * "refclk" : spdif input reference clock --- #sound-dai-cells: must be 0. -- --Optional property: --- resets: phandle to the dedicated reset line of the spdif input. -- --Example on the A113 SoC: -- --spdifin: audio-controller@400 { -- compatible = "amlogic,axg-spdifin"; -- reg = <0x0 0x400 0x0 0x30>; -- #sound-dai-cells = <0>; -- interrupts = ; -- clocks = <&clkc_audio AUD_CLKID_SPDIFIN>, -- <&clkc_audio AUD_CLKID_SPDIFIN_CLK>; -- clock-names = "pclk", "refclk"; --}; -diff --git a/Documentation/devicetree/bindings/sound/amlogic,axg-spdifin.yaml b/Documentation/devicetree/bindings/sound/amlogic,axg-spdifin.yaml -new file mode 100644 -index 000000000000..b9b0863c5723 ---- /dev/null -+++ b/Documentation/devicetree/bindings/sound/amlogic,axg-spdifin.yaml -@@ -0,0 +1,84 @@ -+# SPDX-License-Identifier: GPL-2.0 -+%YAML 1.2 -+--- -+$id: http://devicetree.org/schemas/sound/amlogic,axg-spdifin.yaml# -+$schema: http://devicetree.org/meta-schemas/core.yaml# -+ -+title: Amlogic Audio AXG SPDIF Input -+ -+maintainers: -+ - Jerome Brunet -+ -+properties: -+ $nodename: -+ pattern: "^audio-controller@.*" -+ -+ "#sound-dai-cells": -+ const: 0 -+ -+ compatible: -+ oneOf: -+ - items: -+ - const: -+ amlogic,axg-spdifin -+ - items: -+ - enum: -+ - amlogic,g12a-spdifin -+ - amlogic,sm1-spdifin -+ - const: -+ amlogic,axg-spdifin -+ -+ clocks: -+ items: -+ - description: Peripheral clock -+ - description: SPDIF input reference clock -+ -+ clock-names: -+ items: -+ - const: pclk -+ - const: refclk -+ -+ interrupts: -+ maxItems: 1 -+ -+ reg: -+ maxItems: 1 -+ -+ resets: -+ maxItems: 1 -+ -+required: -+ - "#sound-dai-cells" -+ - compatible -+ - reg -+ - interrupts -+ - clocks -+ - clock-names -+ -+if: -+ properties: -+ compatible: -+ contains: -+ enum: -+ - amlogic,g12a-spdifin -+ - amlogic,sm1-spdifin -+then: -+ required: -+ - resets -+ -+examples: -+ - | -+ #include -+ #include -+ #include -+ -+ spdifin: audio-controller@400 { -+ compatible = "amlogic,axg-spdifin"; -+ reg = <0x0 0x400 0x0 0x30>; -+ #sound-dai-cells = <0>; -+ interrupts = ; -+ clocks = <&clkc_audio AUD_CLKID_SPDIFIN>, -+ <&clkc_audio AUD_CLKID_SPDIFIN_CLK>; -+ clock-names = "pclk", "refclk"; -+ }; -+ --- -2.17.1 - diff --git a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-spdif-output-to-schema.patch b/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-spdif-output-to-schema.patch deleted file mode 100644 index 80840bc5b3..0000000000 --- a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-spdif-output-to-schema.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 4c8c6dedc0943fcc7a58ea7a41cdd46eda3a69f7 Mon Sep 17 00:00:00 2001 -From: Jerome Brunet -Date: Fri, 24 Jan 2020 15:58:18 +0100 -Subject: [PATCH 039/101] WIP: ASoC: meson: convert axg spdif output to schema - -Signed-off-by: Jerome Brunet ---- - .../bindings/sound/amlogic,axg-spdifout.txt | 25 ------ - .../bindings/sound/amlogic,axg-spdifout.yaml | 77 +++++++++++++++++++ - 2 files changed, 77 insertions(+), 25 deletions(-) - delete mode 100644 Documentation/devicetree/bindings/sound/amlogic,axg-spdifout.txt - create mode 100644 Documentation/devicetree/bindings/sound/amlogic,axg-spdifout.yaml - -diff --git a/Documentation/devicetree/bindings/sound/amlogic,axg-spdifout.txt b/Documentation/devicetree/bindings/sound/amlogic,axg-spdifout.txt -deleted file mode 100644 -index 28381dd1f633..000000000000 ---- a/Documentation/devicetree/bindings/sound/amlogic,axg-spdifout.txt -+++ /dev/null -@@ -1,25 +0,0 @@ --* Amlogic Audio SPDIF Output -- --Required properties: --- compatible: 'amlogic,axg-spdifout' or -- 'amlogic,g12a-spdifout' or -- 'amlogic,sm1-spdifout' --- clocks: list of clock phandle, one for each entry clock-names. --- clock-names: should contain the following: -- * "pclk" : peripheral clock. -- * "mclk" : master clock --- #sound-dai-cells: must be 0. -- --Optional property: --- resets: phandle to the dedicated reset line of the spdif output. -- --Example on the A113 SoC: -- --spdifout: audio-controller@480 { -- compatible = "amlogic,axg-spdifout"; -- reg = <0x0 0x480 0x0 0x50>; -- #sound-dai-cells = <0>; -- clocks = <&clkc_audio AUD_CLKID_SPDIFOUT>, -- <&clkc_audio AUD_CLKID_SPDIFOUT_CLK>; -- clock-names = "pclk", "mclk"; --}; -diff --git a/Documentation/devicetree/bindings/sound/amlogic,axg-spdifout.yaml b/Documentation/devicetree/bindings/sound/amlogic,axg-spdifout.yaml -new file mode 100644 -index 000000000000..9ac52916f88b ---- /dev/null -+++ b/Documentation/devicetree/bindings/sound/amlogic,axg-spdifout.yaml -@@ -0,0 +1,77 @@ -+# SPDX-License-Identifier: GPL-2.0 -+%YAML 1.2 -+--- -+$id: http://devicetree.org/schemas/sound/amlogic,axg-spdifout.yaml# -+$schema: http://devicetree.org/meta-schemas/core.yaml# -+ -+title: Amlogic Audio AXG SPDIF Output -+ -+maintainers: -+ - Jerome Brunet -+ -+properties: -+ $nodename: -+ pattern: "^audio-controller@.*" -+ -+ "#sound-dai-cells": -+ const: 0 -+ -+ compatible: -+ oneOf: -+ - items: -+ - const: -+ amlogic,axg-spdifout -+ - items: -+ - enum: -+ - amlogic,g12a-spdifout -+ - amlogic,sm1-spdifout -+ - const: -+ amlogic,axg-spdifout -+ -+ clocks: -+ items: -+ - description: Peripheral clock -+ - description: SPDIF output master clock -+ -+ clock-names: -+ items: -+ - const: pclk -+ - const: mclk -+ -+ reg: -+ maxItems: 1 -+ -+ resets: -+ items: -+ - description: dedicated device reset line -+ -+required: -+ - "#sound-dai-cells" -+ - compatible -+ - reg -+ - clocks -+ - clock-names -+ -+if: -+ properties: -+ compatible: -+ contains: -+ enum: -+ - amlogic,g12a-spdifout -+ - amlogic,sm1-spdifout -+then: -+ required: -+ - resets -+ -+examples: -+ - | -+ #include -+ -+ spdifout: audio-controller@480 { -+ compatible = "amlogic,axg-spdifout"; -+ reg = <0x0 0x480 0x0 0x50>; -+ #sound-dai-cells = <0>; -+ clocks = <&clkc_audio AUD_CLKID_SPDIFOUT>, -+ <&clkc_audio AUD_CLKID_SPDIFOUT_CLK>; -+ clock-names = "pclk", "mclk"; -+ }; --- -2.17.1 - diff --git a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-tdm-formatters-to-schema.patch b/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-tdm-formatters-to-schema.patch deleted file mode 100644 index 8c3ea4076c..0000000000 --- a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-tdm-formatters-to-schema.patch +++ /dev/null @@ -1,166 +0,0 @@ -From 222de230f3cb9c1452441001807c4ab876e0c959 Mon Sep 17 00:00:00 2001 -From: Jerome Brunet -Date: Fri, 24 Jan 2020 12:00:01 +0100 -Subject: [PATCH 035/101] WIP: ASoC: meson: convert axg tdm formatters to - schema - -Signed-off-by: Jerome Brunet ---- - .../sound/amlogic,axg-tdm-formatters.txt | 36 ------- - .../sound/amlogic,axg-tdm-formatters.yaml | 101 ++++++++++++++++++ - 2 files changed, 101 insertions(+), 36 deletions(-) - delete mode 100644 Documentation/devicetree/bindings/sound/amlogic,axg-tdm-formatters.txt - create mode 100644 Documentation/devicetree/bindings/sound/amlogic,axg-tdm-formatters.yaml - -diff --git a/Documentation/devicetree/bindings/sound/amlogic,axg-tdm-formatters.txt b/Documentation/devicetree/bindings/sound/amlogic,axg-tdm-formatters.txt -deleted file mode 100644 -index 5996c0cd89c2..000000000000 ---- a/Documentation/devicetree/bindings/sound/amlogic,axg-tdm-formatters.txt -+++ /dev/null -@@ -1,36 +0,0 @@ --* Amlogic Audio TDM formatters -- --Required properties: --- compatible: 'amlogic,axg-tdmin' or -- 'amlogic,axg-tdmout' or -- 'amlogic,g12a-tdmin' or -- 'amlogic,g12a-tdmout' or -- 'amlogic,sm1-tdmin' or -- 'amlogic,sm1-tdmout --- reg: physical base address of the controller and length of memory -- mapped region. --- clocks: list of clock phandle, one for each entry clock-names. --- clock-names: should contain the following: -- * "pclk" : peripheral clock. -- * "sclk" : bit clock. -- * "sclk_sel" : bit clock input multiplexer. -- * "lrclk" : sample clock -- * "lrclk_sel": sample clock input multiplexer -- --Optional property: --- resets: phandle to the dedicated reset line of the tdm formatter. -- --Example of TDMOUT_A on the S905X2 SoC: -- --tdmout_a: audio-controller@500 { -- compatible = "amlogic,axg-tdmout"; -- reg = <0x0 0x500 0x0 0x40>; -- resets = <&clkc_audio AUD_RESET_TDMOUT_A>; -- clocks = <&clkc_audio AUD_CLKID_TDMOUT_A>, -- <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK>, -- <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK_SEL>, -- <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>, -- <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>; -- clock-names = "pclk", "sclk", "sclk_sel", -- "lrclk", "lrclk_sel"; --}; -diff --git a/Documentation/devicetree/bindings/sound/amlogic,axg-tdm-formatters.yaml b/Documentation/devicetree/bindings/sound/amlogic,axg-tdm-formatters.yaml -new file mode 100644 -index 000000000000..77b994df0c84 ---- /dev/null -+++ b/Documentation/devicetree/bindings/sound/amlogic,axg-tdm-formatters.yaml -@@ -0,0 +1,101 @@ -+# SPDX-License-Identifier: GPL-2.0 -+%YAML 1.2 -+--- -+$id: http://devicetree.org/schemas/sound/amlogic,axg-tdm-formatters.yaml# -+$schema: http://devicetree.org/meta-schemas/core.yaml# -+ -+title: Amlogic Audio AXG TDM formatters -+ -+maintainers: -+ - Jerome Brunet -+ -+properties: -+ $nodename: -+ pattern: "^audio-controller@.*" -+ -+ "#sound-dai-cells": -+ const: 0 -+ -+ compatible: -+ oneOf: -+ - items: -+ - enum: -+ - amlogic,g12a-tdmout -+ - amlogic,sm1-tdmout -+ - const: -+ amlogic,axg-tdmout -+ - items: -+ - const: -+ amlogic,axg-tdmout -+ - items: -+ - enum: -+ - amlogic,g12a-tdmin -+ - amlogic,sm1-tdmin -+ - const: -+ amlogic,axg-tdmin -+ - items: -+ - const: -+ amlogic,axg-tdmin -+ -+ clocks: -+ items: -+ - description: Peripheral clock -+ - description: Bit clock -+ - description: Bit clock input multiplexer -+ - description: Sample clock -+ - description: Sample clock input multiplexer -+ -+ clock-names: -+ items: -+ - const: pclk -+ - const: sclk -+ - const: sclk_sel -+ - const: lrclk -+ - const: lrclk_sel -+ -+ reg: -+ maxItems: 1 -+ -+ resets: -+ maxItems: 1 -+ -+required: -+ - "#sound-dai-cells" -+ - compatible -+ - reg -+ - clocks -+ - clock-names -+ -+if: -+ properties: -+ compatible: -+ contains: -+ enum: -+ - amlogic,g12a-tdmin -+ - amlogic,sm1-tdmin -+ - amlogic,g12a-tdmout -+ - amlogic,sm1-tdmout -+then: -+ required: -+ - resets -+ -+examples: -+ - | -+ #include -+ #include -+ -+ tdmout_a: audio-controller@500 { -+ compatible = "amlogic,g12a-tdmout", -+ "amlogic,axg-tdmout"; -+ #sound-dai-cells = <0>; -+ reg = <0x0 0x500 0x0 0x40>; -+ resets = <&clkc_audio AUD_RESET_TDMOUT_A>; -+ clocks = <&clkc_audio AUD_CLKID_TDMOUT_A>, -+ <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK>, -+ <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK_SEL>, -+ <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>, -+ <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>; -+ clock-names = "pclk", "sclk", "sclk_sel", -+ "lrclk", "lrclk_sel"; -+ }; -+ --- -2.17.1 - diff --git a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-tdm-interface-to-schema.patch b/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-tdm-interface-to-schema.patch deleted file mode 100644 index 7787dbc674..0000000000 --- a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-axg-tdm-interface-to-schema.patch +++ /dev/null @@ -1,107 +0,0 @@ -From ea2bee83aa1bb6a88d6862756b9e1602324ca78b Mon Sep 17 00:00:00 2001 -From: Jerome Brunet -Date: Fri, 24 Jan 2020 11:08:09 +0100 -Subject: [PATCH 034/101] WIP: ASoC: meson: convert axg tdm interface to schema - -Signed-off-by: Jerome Brunet ---- - .../bindings/sound/amlogic,axg-tdm-iface.txt | 22 ------- - .../bindings/sound/amlogic,axg-tdm-iface.yaml | 57 +++++++++++++++++++ - 2 files changed, 57 insertions(+), 22 deletions(-) - delete mode 100644 Documentation/devicetree/bindings/sound/amlogic,axg-tdm-iface.txt - create mode 100644 Documentation/devicetree/bindings/sound/amlogic,axg-tdm-iface.yaml - -diff --git a/Documentation/devicetree/bindings/sound/amlogic,axg-tdm-iface.txt b/Documentation/devicetree/bindings/sound/amlogic,axg-tdm-iface.txt -deleted file mode 100644 -index cabfb26a5f22..000000000000 ---- a/Documentation/devicetree/bindings/sound/amlogic,axg-tdm-iface.txt -+++ /dev/null -@@ -1,22 +0,0 @@ --* Amlogic Audio TDM Interfaces -- --Required properties: --- compatible: 'amlogic,axg-tdm-iface' --- clocks: list of clock phandle, one for each entry clock-names. --- clock-names: should contain the following: -- * "sclk" : bit clock. -- * "lrclk": sample clock -- * "mclk" : master clock -- -> optional if the interface is in clock slave mode. --- #sound-dai-cells: must be 0. -- --Example of TDM_A on the A113 SoC: -- --tdmif_a: audio-controller@0 { -- compatible = "amlogic,axg-tdm-iface"; -- #sound-dai-cells = <0>; -- clocks = <&clkc_audio AUD_CLKID_MST_A_MCLK>, -- <&clkc_audio AUD_CLKID_MST_A_SCLK>, -- <&clkc_audio AUD_CLKID_MST_A_LRCLK>; -- clock-names = "mclk", "sclk", "lrclk"; --}; -diff --git a/Documentation/devicetree/bindings/sound/amlogic,axg-tdm-iface.yaml b/Documentation/devicetree/bindings/sound/amlogic,axg-tdm-iface.yaml -new file mode 100644 -index 000000000000..5f04f9cf30a0 ---- /dev/null -+++ b/Documentation/devicetree/bindings/sound/amlogic,axg-tdm-iface.yaml -@@ -0,0 +1,57 @@ -+# SPDX-License-Identifier: GPL-2.0 -+%YAML 1.2 -+--- -+$id: http://devicetree.org/schemas/sound/amlogic,axg-tdm-iface.yaml# -+$schema: http://devicetree.org/meta-schemas/core.yaml# -+ -+title: Amlogic Audio TDM Interfaces -+ -+maintainers: -+ - Jerome Brunet -+ -+properties: -+ $nodename: -+ pattern: "^audio-controller-.*" -+ -+ "#sound-dai-cells": -+ const: 0 -+ -+ compatible: -+ items: -+ - const: 'amlogic,axg-tdm-iface' -+ -+ clocks: -+ minItems: 2 -+ maxItems: 3 -+ items: -+ - description: Bit clock -+ - description: Sample clock -+ - description: Master clock #optional -+ -+ clock-names: -+ minItems: 2 -+ maxItems: 3 -+ items: -+ - const: sclk -+ - const: lrclk -+ - const: mclk -+ -+required: -+ - "#sound-dai-cells" -+ - compatible -+ - clocks -+ - clock-names -+ -+examples: -+ - | -+ #include -+ -+ tdmif_a: audio-controller-0 { -+ compatible = "amlogic,axg-tdm-iface"; -+ #sound-dai-cells = <0>; -+ clocks = <&clkc_audio AUD_CLKID_MST_A_SCLK>, -+ <&clkc_audio AUD_CLKID_MST_A_LRCLK>, -+ <&clkc_audio AUD_CLKID_MST_A_MCLK>; -+ clock-names = "sclk", "lrclk", "mclk"; -+ }; -+ --- -2.17.1 - diff --git a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-g12a-tohdmitx-control-to-sche.patch b/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-g12a-tohdmitx-control-to-sche.patch deleted file mode 100644 index 877242cc26..0000000000 --- a/patch/kernel/archive/meson64-5.10/docs-WIP-ASoC-meson-convert-g12a-tohdmitx-control-to-sche.patch +++ /dev/null @@ -1,140 +0,0 @@ -From 2c10c55e9061c3ebfb059a54e531c512a9d19aa3 Mon Sep 17 00:00:00 2001 -From: Jerome Brunet -Date: Fri, 24 Jan 2020 16:02:43 +0100 -Subject: [PATCH 040/101] WIP: ASoC: meson: convert g12a tohdmitx control to - schema - -Signed-off-by: Jerome Brunet ---- - .../bindings/sound/amlogic,g12a-tohdmitx.txt | 58 ------------------- - .../bindings/sound/amlogic,g12a-tohdmitx.yaml | 53 +++++++++++++++++ - 2 files changed, 53 insertions(+), 58 deletions(-) - delete mode 100644 Documentation/devicetree/bindings/sound/amlogic,g12a-tohdmitx.txt - create mode 100644 Documentation/devicetree/bindings/sound/amlogic,g12a-tohdmitx.yaml - -diff --git a/Documentation/devicetree/bindings/sound/amlogic,g12a-tohdmitx.txt b/Documentation/devicetree/bindings/sound/amlogic,g12a-tohdmitx.txt -deleted file mode 100644 -index 4e8cd7eb7cec..000000000000 ---- a/Documentation/devicetree/bindings/sound/amlogic,g12a-tohdmitx.txt -+++ /dev/null -@@ -1,58 +0,0 @@ --* Amlogic HDMI Tx control glue -- --Required properties: --- compatible: "amlogic,g12a-tohdmitx" or -- "amlogic,sm1-tohdmitx" --- reg: physical base address of the controller and length of memory -- mapped region. --- #sound-dai-cells: should be 1. --- resets: phandle to the dedicated reset line of the hdmitx glue. -- --Example on the S905X2 SoC: -- --tohdmitx: audio-controller@744 { -- compatible = "amlogic,g12a-tohdmitx"; -- reg = <0x0 0x744 0x0 0x4>; -- #sound-dai-cells = <1>; -- resets = <&clkc_audio AUD_RESET_TOHDMITX>; --}; -- --Example of an 'amlogic,axg-sound-card': -- --sound { -- compatible = "amlogic,axg-sound-card"; -- --[...] -- -- dai-link-x { -- sound-dai = <&tdmif_a>; -- dai-format = "i2s"; -- dai-tdm-slot-tx-mask-0 = <1 1>; -- -- codec-0 { -- sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>; -- }; -- -- codec-1 { -- sound-dai = <&external_dac>; -- }; -- }; -- -- dai-link-y { -- sound-dai = <&tdmif_c>; -- dai-format = "i2s"; -- dai-tdm-slot-tx-mask-0 = <1 1>; -- -- codec { -- sound-dai = <&tohdmitx TOHDMITX_I2S_IN_C>; -- }; -- }; -- -- dai-link-z { -- sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; -- -- codec { -- sound-dai = <&hdmi_tx>; -- }; -- }; --}; -diff --git a/Documentation/devicetree/bindings/sound/amlogic,g12a-tohdmitx.yaml b/Documentation/devicetree/bindings/sound/amlogic,g12a-tohdmitx.yaml -new file mode 100644 -index 000000000000..fdd64d103f33 ---- /dev/null -+++ b/Documentation/devicetree/bindings/sound/amlogic,g12a-tohdmitx.yaml -@@ -0,0 +1,53 @@ -+# SPDX-License-Identifier: GPL-2.0 -+%YAML 1.2 -+--- -+$id: http://devicetree.org/schemas/sound/amlogic,g12a-tohdmitx.yaml# -+$schema: http://devicetree.org/meta-schemas/core.yaml# -+ -+title: Amlogic G12a HDMI Tx Control Glue -+ -+maintainers: -+ - Jerome Brunet -+ -+properties: -+ $nodename: -+ pattern: "^audio-controller@.*" -+ -+ "#sound-dai-cells": -+ const: 1 -+ -+ compatible: -+ oneOf: -+ - items: -+ - const: -+ amlogic,g12a-tohdmitx -+ - items: -+ - enum: -+ - amlogic,sm1-tohdmitx -+ - const: -+ amlogic,g12a-tohdmitx -+ -+ reg: -+ maxItems: 1 -+ -+ resets: -+ maxItems: 1 -+ -+required: -+ - "#sound-dai-cells" -+ - compatible -+ - reg -+ - resets -+ -+examples: -+ - | -+ #include -+ -+ tohdmitx: audio-controller@744 { -+ compatible = "amlogic,g12a-tohdmitx"; -+ reg = <0x0 0x744 0x0 0x4>; -+ #sound-dai-cells = <1>; -+ resets = <&clkc_audio AUD_RESET_TOHDMITX>; -+ }; -+ -+ --- -2.17.1 - diff --git a/patch/kernel/archive/meson64-5.10/general-meson64-i2cX-missing-pins.patch b/patch/kernel/archive/meson64-5.10/general-meson64-i2cX-missing-pins.patch index 078587ed63..0325e477da 100644 --- a/patch/kernel/archive/meson64-5.10/general-meson64-i2cX-missing-pins.patch +++ b/patch/kernel/archive/meson64-5.10/general-meson64-i2cX-missing-pins.patch @@ -1,22 +1,27 @@ +From d5d2d8b9eb93eab85af12f1844975903a7c5a879 Mon Sep 17 00:00:00 2001 +From: Stefan Agner +Date: Thu, 29 Apr 2021 21:32:43 +0200 +Subject: [PATCH XXX] general-meson64-i2cX-missing-pins + diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi index 98cbba6..48ca119 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi @@ -321,6 +322,8 @@ - + &i2c_A { clocks = <&clkc CLKID_I2C>; + pinctrl-names = "default"; + pinctrl-0 = <&i2c_a_pins>; }; - + &i2c_AO { @@ -329,6 +332,8 @@ - + &i2c_B { clocks = <&clkc CLKID_I2C>; + pinctrl-names = "default"; + pinctrl-0 = <&i2c_b_pins>; }; - + &i2c_C { diff --git a/patch/kernel/archive/meson64-5.10/hardkernel-0003-N2-arm64-dts-support-Ulta-High-Speed-MMC-card.patch b/patch/kernel/archive/meson64-5.10/hardkernel-0003-N2-arm64-dts-support-Ulta-High-Speed-MMC-card.patch deleted file mode 100644 index c9bb17709b..0000000000 --- a/patch/kernel/archive/meson64-5.10/hardkernel-0003-N2-arm64-dts-support-Ulta-High-Speed-MMC-card.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 2a7c14cbaec2d8307fb97a0036b155ee2857f7e2 Mon Sep 17 00:00:00 2001 -From: ckkim -Date: Tue, 3 Mar 2020 14:20:59 +0900 -Subject: [PATCH 03/74] ODROID-N2: arm64/dts: support Ulta High Speed MMC card - -Signed-off-by: ckkim -Change-Id: I52bbf26aaf807e96bff7665bb65a1ee5594f6449 ---- - arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -index 169ea283d4ee..84236c578075 100644 ---- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -@@ -423,7 +423,11 @@ &sd_emmc_b { - - bus-width = <4>; - cap-sd-highspeed; -- max-frequency = <50000000>; -+ max-frequency = <200000000>; -+ sd-uhs-sdr12; -+ sd-uhs-sdr25; -+ sd-uhs-sdr50; -+ sd-uhs-sdr104; - disable-wp; - - cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; --- -2.25.1 - diff --git a/patch/kernel/archive/meson64-5.10/hardkernel-0006-N2-ARM64-dts-add-uart_A-node.patch b/patch/kernel/archive/meson64-5.10/hardkernel-0006-N2-ARM64-dts-add-uart_A-node.patch deleted file mode 100644 index 838b116d43..0000000000 --- a/patch/kernel/archive/meson64-5.10/hardkernel-0006-N2-ARM64-dts-add-uart_A-node.patch +++ /dev/null @@ -1,41 +0,0 @@ -From bd699b3618b708c7a184e174336dce1c451f9a16 Mon Sep 17 00:00:00 2001 -From: Hyeonki Hong -Date: Fri, 27 Mar 2020 17:05:22 +0900 -Subject: [PATCH 06/74] ODROID-N2: ARM64/dts: add uart_A node - -Change-Id: I129c3d059231a7941285deffc293ee72784adcce ---- - arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -index 0bbd97997a42..9e29fdbf149d 100644 ---- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -@@ -16,8 +16,9 @@ / { - model = "Hardkernel ODROID-N2"; - - aliases { -- serial0 = &uart_AO; - ethernet0 = ðmac; -+ serial0 = &uart_AO; -+ serial1 = &uart_A; - }; - - chosen { -@@ -581,6 +582,12 @@ &tohdmitx { - status = "okay"; - }; - -+&uart_A { -+ status = "okay"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart_a_pins>; -+}; -+ - &uart_AO { - status = "okay"; - pinctrl-0 = <&uart_ao_a_pins>; --- -2.25.1 - diff --git a/patch/kernel/archive/meson64-5.10/hardkernel-0007-N2-ARM64-dts-add-i2c2-i2c3-node.patch b/patch/kernel/archive/meson64-5.10/hardkernel-0007-N2-ARM64-dts-add-i2c2-i2c3-node.patch deleted file mode 100644 index e7edcdfea1..0000000000 --- a/patch/kernel/archive/meson64-5.10/hardkernel-0007-N2-ARM64-dts-add-i2c2-i2c3-node.patch +++ /dev/null @@ -1,91 +0,0 @@ -From a0bdfa3b38982cff581f8db8573064526a210434 Mon Sep 17 00:00:00 2001 -From: Hyeonki Hong -Date: Fri, 27 Mar 2020 16:54:02 +0900 -Subject: [PATCH 07/74] ODROID-N2: ARM64/dts: add i2c2, i2c3 node - -Change-Id: I00e3748a6f8474a99d05200afc60b8d794f75c96 ---- - .../boot/dts/amlogic/meson-g12b-odroid-n2.dts | 53 +++++++++++++++++++ - 1 file changed, 53 insertions(+) - -diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -index 9e29fdbf149d..758528f988dd 100644 ---- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -@@ -17,6 +17,8 @@ / { - aliases { - ethernet0 = ðmac; - serial0 = &uart_AO; - serial1 = &uart_A; -+ i2c0 = &i2c2; -+ i2c1 = &i2c3; - }; - -@@ -485,6 +487,35 @@ hdmi_tx_tmds_out: endpoint { - }; - }; - -+&i2c2 { -+ status = "okay"; -+ -+ /* -+ * 40 Pin Header : SDA(GPIOX.17->3 Pin) -+ * SCL(GPIOX.18->5 Pin) -+ */ -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_master_pins1>; -+ -+ /* default 400k */ -+ clock-frequency = <400000>; -+}; -+ -+&i2c3 { -+ /* default i2c clock-frequency is 100Khz */ -+ status = "okay"; -+ -+ /* -+ * 40 Pin Header : SDA(GPIOA.14->27 Pin) -+ * SCL(GPIOA.15->28 Pin) -+ */ -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c3_master_pins2>; -+ -+ /* default 100k */ -+ clock-frequency = <100000>; -+}; -+ - &ir { - status = "okay"; - pinctrl-0 = <&remote_input_ao_pins>; -@@ -492,6 +523,28 @@ &ir { - linux,rc-map-name = "rc-odroid"; - }; - -+&periphs_pinctrl { -+ i2c2_master_pins1:i2c2-master-pins1 { -+ mux { -+ groups = "i2c2_sda_x", -+ "i2c2_sck_x"; -+ function = "i2c2"; -+ bias-pull-up; -+ drive-strength-microamp = <3000>; -+ }; -+ }; -+ -+ i2c3_master_pins2:i2c2-master-pins2 { -+ mux { -+ groups = "i2c3_sda_a", -+ "i2c3_sck_a"; -+ function = "i2c3"; -+ bias-pull-up; -+ drive-strength-microamp = <3000>; -+ }; -+ }; -+}; -+ - &pwm_ab { - pinctrl-0 = <&pwm_a_e_pins>; - pinctrl-names = "default"; --- -2.25.1 - diff --git a/patch/kernel/archive/meson64-5.10/hardkernel-0008-N2-ARM64-dts-add-saradc-node.patch b/patch/kernel/archive/meson64-5.10/hardkernel-0008-N2-ARM64-dts-add-saradc-node.patch deleted file mode 100644 index 93901c647f..0000000000 --- a/patch/kernel/archive/meson64-5.10/hardkernel-0008-N2-ARM64-dts-add-saradc-node.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 3b201de7e491b9686a019a936a1d04eb59c6c3c7 Mon Sep 17 00:00:00 2001 -From: Hyeonki Hong -Date: Fri, 27 Mar 2020 17:36:37 +0900 -Subject: [PATCH 08/74] ODROID-N2: ARM64/dts: add saradc node - -Change-Id: Ieced434cbde791edee600832f51bd5021b4604aa ---- - arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -index 758528f988dd..63b23c84e022 100644 ---- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -@@ -561,6 +561,10 @@ &pwm_AO_cd { - status = "okay"; - }; - -+&saradc { -+ status = "okay"; -+}; -+ - /* SD card */ - &sd_emmc_b { - status = "okay"; --- -2.25.1 - diff --git a/patch/kernel/archive/meson64-5.10/hardkernel-0029-COMMON-pwm-gpio-Add-a-generic-gpio-based-PWM-.patch b/patch/kernel/archive/meson64-5.10/hardkernel-0029-COMMON-pwm-gpio-Add-a-generic-gpio-based-PWM-.patch deleted file mode 100644 index 3081010bdd..0000000000 --- a/patch/kernel/archive/meson64-5.10/hardkernel-0029-COMMON-pwm-gpio-Add-a-generic-gpio-based-PWM-.patch +++ /dev/null @@ -1,367 +0,0 @@ -From 1167e0322f28f603ca30fba62e6cfbee56e512ce Mon Sep 17 00:00:00 2001 -From: Kevin Kim -Date: Wed, 16 Jan 2019 14:45:10 +0900 -Subject: [PATCH 29/74] ODROID-COMMON: pwm: gpio: Add a generic gpio based PWM - driver - -From: Olliver Schinagl - -This patch adds a bit-banging gpio PWM driver. It makes use of hrtimers, -to allow nano-second resolution, though it obviously strongly depends on -the switching speed of the gpio pins, hrtimer and system load. - -Each pwm node can have 1 or more "pwm-gpio" entries, which will be -treated as pwm's as part of a pwm chip. - -Change-Id: Idd42bf6d79f8ce52275a15965b02af470f28da7c -Signed-off-by: Olliver Schinagl ---- - .../devicetree/bindings/pwm/pwm-gpio.txt | 18 ++ - MAINTAINERS | 5 + - drivers/pwm/Kconfig | 15 ++ - drivers/pwm/Makefile | 1 + - drivers/pwm/pwm-gpio.c | 253 ++++++++++++++++++ - 5 files changed, 292 insertions(+) - create mode 100644 Documentation/devicetree/bindings/pwm/pwm-gpio.txt - create mode 100644 drivers/pwm/pwm-gpio.c - -diff --git a/Documentation/devicetree/bindings/pwm/pwm-gpio.txt b/Documentation/devicetree/bindings/pwm/pwm-gpio.txt -new file mode 100644 -index 000000000000..336f61faa446 ---- /dev/null -+++ b/Documentation/devicetree/bindings/pwm/pwm-gpio.txt -@@ -0,0 +1,18 @@ -+Generic GPIO bit-banged PWM driver -+ -+Required properties: -+ - compatible: should be "pwm-gpio" -+ - #pwm-cells: should be 3, see pwm.txt in this directory for a general -+ description of the cells format. -+ - pwm-gpios: one or more gpios describing the used gpio, see the gpio -+ bindings for the used gpio driver. -+ -+Example: -+#include -+ -+ pwm: pwm@0 { -+ compatible = "pwm-gpio"; -+ #pwm-cells = 3; -+ pwm-gpios = <&pio 7 1 GPIO_ACTIVE_LOW>; -+ pwm-gpios = <&pio 7 2 GPIO_ACTIVE_LOW>; -+ }; -diff --git a/MAINTAINERS b/MAINTAINERS -index 4e2698cc7e23..63e59da28c58 100644 ---- a/MAINTAINERS -+++ b/MAINTAINERS -@@ -7186,6 +7186,11 @@ F: Documentation/i2c/muxes/i2c-mux-gpio.rst - F: drivers/i2c/muxes/i2c-mux-gpio.c - F: include/linux/platform_data/i2c-mux-gpio.h - -+GENERIC GPIO PWM DRIVER -+M: Olliver Schinagl -+S: Maintained -+F: drivers/pwm/pwm-gpio.c -+ - GENERIC HDLC (WAN) DRIVERS - M: Krzysztof Halasa - S: Maintained -diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig -index cb8d739067d2..609011be5aaf 100644 ---- a/drivers/pwm/Kconfig -+++ b/drivers/pwm/Kconfig -@@ -181,6 +181,21 @@ config PWM_FSL_FTM - To compile this driver as a module, choose M here: the module - will be called pwm-fsl-ftm. - -+config PWM_GPIO -+ tristate "Generic GPIO bit-banged PWM driver" -+ depends on OF -+ depends on GPIOLIB -+ help -+ Some platforms do not offer any hardware PWM capabilities but do have -+ General Purpose Input Output (GPIO) pins available. Using the kernels -+ High-Resolution Timer API this driver tries to toggle GPIO using the -+ generic kernel PWM framework. The maximum frequency and/or accuracy -+ is dependent on several factors such as system load and the maximum -+ speed a pin can be toggled at the hardware. -+ -+ To compile this driver as a module, choose M here: the module -+ will be called pwm-gpio. -+ - config PWM_HIBVT - tristate "HiSilicon BVT PWM support" - depends on ARCH_HISI || COMPILE_TEST -diff --git a/drivers/pwm/Makefile b/drivers/pwm/Makefile -index a59c710e98c7..0d0bcce797fb 100644 ---- a/drivers/pwm/Makefile -+++ b/drivers/pwm/Makefile -@@ -15,6 +15,7 @@ obj-$(CONFIG_PWM_CRC) += pwm-crc.o - obj-$(CONFIG_PWM_CROS_EC) += pwm-cros-ec.o - obj-$(CONFIG_PWM_EP93XX) += pwm-ep93xx.o - obj-$(CONFIG_PWM_FSL_FTM) += pwm-fsl-ftm.o -+obj-$(CONFIG_PWM_GPIO) += pwm-gpio.o - obj-$(CONFIG_PWM_HIBVT) += pwm-hibvt.o - obj-$(CONFIG_PWM_IMG) += pwm-img.o - obj-$(CONFIG_PWM_IMX1) += pwm-imx1.o -diff --git a/drivers/pwm/pwm-gpio.c b/drivers/pwm/pwm-gpio.c -new file mode 100644 -index 000000000000..ab421fb4b8ba ---- /dev/null -+++ b/drivers/pwm/pwm-gpio.c -@@ -0,0 +1,253 @@ -+/* -+ * Copyright (c) 2015 Olliver Schinagl -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * This driver adds a high-resolution timer based PWM driver. Since this is a -+ * bit-banged driver, accuracy will always depend on a lot of factors, such as -+ * GPIO toggle speed and system load. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define DRV_NAME "pwm-gpio" -+ -+struct gpio_pwm_data { -+ struct hrtimer timer; -+ struct gpio_desc *gpiod; -+ bool polarity; -+ bool pin_on; -+ int on_time; -+ int off_time; -+ bool run; -+}; -+ -+struct gpio_pwm_chip { -+ struct pwm_chip chip; -+}; -+ -+static void gpio_pwm_off(struct gpio_pwm_data *gpio_data) -+{ -+ gpiod_set_value_cansleep(gpio_data->gpiod, gpio_data->polarity ? 0 : 1); -+} -+ -+static void gpio_pwm_on(struct gpio_pwm_data *gpio_data) -+{ -+ gpiod_set_value_cansleep(gpio_data->gpiod, gpio_data->polarity ? 1 : 0); -+} -+ -+enum hrtimer_restart gpio_pwm_timer(struct hrtimer *timer) -+{ -+ struct gpio_pwm_data *gpio_data = container_of(timer, -+ struct gpio_pwm_data, -+ timer); -+ if (!gpio_data->run) { -+ gpio_pwm_off(gpio_data); -+ gpio_data->pin_on = false; -+ return HRTIMER_NORESTART; -+ } -+ -+ if (!gpio_data->pin_on) { -+ hrtimer_forward_now(&gpio_data->timer, -+ ns_to_ktime(gpio_data->on_time)); -+ gpio_pwm_on(gpio_data); -+ gpio_data->pin_on = true; -+ } else { -+ hrtimer_forward_now(&gpio_data->timer, -+ ns_to_ktime(gpio_data->off_time)); -+ gpio_pwm_off(gpio_data); -+ gpio_data->pin_on = false; -+ } -+ -+ return HRTIMER_RESTART; -+} -+ -+static int gpio_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, -+ int duty_ns, int period_ns) -+{ -+ struct gpio_pwm_data *gpio_data = pwm_get_chip_data(pwm); -+ -+ gpio_data->on_time = duty_ns; -+ gpio_data->off_time = period_ns - duty_ns; -+ -+ return 0; -+} -+ -+static int gpio_pwm_set_polarity(struct pwm_chip *chip, struct pwm_device *pwm, -+ enum pwm_polarity polarity) -+{ -+ struct gpio_pwm_data *gpio_data = pwm_get_chip_data(pwm); -+ -+ gpio_data->polarity = (polarity != PWM_POLARITY_NORMAL) ? true : false; -+ -+ return 0; -+} -+ -+static int gpio_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm) -+{ -+ struct gpio_pwm_data *gpio_data = pwm_get_chip_data(pwm); -+ -+ if (gpio_data->run) -+ return -EBUSY; -+ -+ gpio_data->run = true; -+ if (gpio_data->off_time) { -+ hrtimer_start(&gpio_data->timer, ktime_set(0, 0), -+ HRTIMER_MODE_REL); -+ } else { -+ if (gpio_data->on_time) -+ gpio_pwm_on(gpio_data); -+ else -+ gpio_pwm_off(gpio_data); -+ } -+ -+ return 0; -+} -+ -+static void gpio_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm) -+{ -+ struct gpio_pwm_data *gpio_data = pwm_get_chip_data(pwm); -+ -+ gpio_data->run = false; -+ if (!gpio_data->off_time) -+ gpio_pwm_off(gpio_data); -+} -+ -+static const struct pwm_ops gpio_pwm_ops = { -+ .config = gpio_pwm_config, -+ .set_polarity = gpio_pwm_set_polarity, -+ .enable = gpio_pwm_enable, -+ .disable = gpio_pwm_disable, -+ .owner = THIS_MODULE, -+}; -+ -+static int gpio_pwm_probe(struct platform_device *pdev) -+{ -+ int ret; -+ struct gpio_pwm_chip *gpio_chip; -+ int npwm, i; -+ int hrtimer = 0; -+ -+ npwm = of_gpio_named_count(pdev->dev.of_node, "pwm-gpios"); -+ if (npwm < 1) -+ return -ENODEV; -+ -+ gpio_chip = devm_kzalloc(&pdev->dev, sizeof(*gpio_chip), GFP_KERNEL); -+ if (!gpio_chip) -+ return -ENOMEM; -+ -+ gpio_chip->chip.dev = &pdev->dev; -+ gpio_chip->chip.ops = &gpio_pwm_ops; -+ gpio_chip->chip.base = -1; -+ gpio_chip->chip.npwm = npwm; -+ gpio_chip->chip.of_xlate = of_pwm_xlate_with_flags; -+ gpio_chip->chip.of_pwm_n_cells = 3; -+ -+ ret = pwmchip_add(&gpio_chip->chip); -+ if (ret < 0) { -+ dev_err(&pdev->dev, "failed to add PWM chip: %d\n", ret); -+ return ret; -+ } -+ -+ for (i = 0; i < npwm; i++) { -+ struct gpio_desc *gpiod; -+ struct gpio_pwm_data *gpio_data; -+ -+ gpiod = devm_gpiod_get_index(&pdev->dev, "pwm", i, -+ GPIOD_OUT_LOW); -+ if (IS_ERR(gpiod)) { -+ int error; -+ -+ error = PTR_ERR(gpiod); -+ if (error != -EPROBE_DEFER) -+ dev_err(&pdev->dev, -+ "failed to get gpio flags, error: %d\n", -+ error); -+ return error; -+ } -+ -+ gpio_data = devm_kzalloc(&pdev->dev, sizeof(*gpio_data), -+ GFP_KERNEL); -+ -+ hrtimer_init(&gpio_data->timer, -+ CLOCK_MONOTONIC, HRTIMER_MODE_REL); -+ gpio_data->timer.function = &gpio_pwm_timer; -+ gpio_data->gpiod = gpiod; -+ gpio_data->pin_on = false; -+ gpio_data->run = false; -+ -+ if (hrtimer_is_hres_active(&gpio_data->timer)) -+ hrtimer++; -+ -+ pwm_set_chip_data(&gpio_chip->chip.pwms[i], gpio_data); -+ } -+ if (!hrtimer) { -+ dev_warn(&pdev->dev, "unable to use High-Resolution timer,"); -+ dev_warn(&pdev->dev, "%s is restricted to low resolution.", -+ DRV_NAME); -+ } -+ -+ platform_set_drvdata(pdev, gpio_chip); -+ -+ dev_info(&pdev->dev, "%d gpio pwms loaded\n", npwm); -+ -+ return 0; -+} -+ -+static int gpio_pwm_remove(struct platform_device *pdev) -+{ -+ struct gpio_pwm_chip *gpio_chip; -+ int i; -+ -+ gpio_chip = platform_get_drvdata(pdev); -+ for (i = 0; i < gpio_chip->chip.npwm; i++) { -+ struct gpio_pwm_data *gpio_data; -+ -+ gpio_data = pwm_get_chip_data(&gpio_chip->chip.pwms[i]); -+ -+ hrtimer_cancel(&gpio_data->timer); -+ } -+ -+ return pwmchip_remove(&gpio_chip->chip); -+} -+ -+static const struct of_device_id gpio_pwm_of_match[] = { -+ { .compatible = DRV_NAME, }, -+ {/* sentinel */}, -+}; -+MODULE_DEVICE_TABLE(of, gpio_pwm_of_match); -+ -+static struct platform_driver gpio_pwm_driver = { -+ .probe = gpio_pwm_probe, -+ .remove = gpio_pwm_remove, -+ .driver = { -+ .name = DRV_NAME, -+ .of_match_table = of_match_ptr(gpio_pwm_of_match), -+ }, -+}; -+module_platform_driver(gpio_pwm_driver); -+ -+MODULE_AUTHOR("Olliver Schinagl "); -+MODULE_DESCRIPTION("Generic GPIO bit-banged PWM driver"); -+MODULE_LICENSE("GPL"); --- -2.25.1 - diff --git a/patch/kernel/archive/meson64-5.10/hardkernel-igor-0091-Add-fan-support-to-Odroid-N2-plus.patch b/patch/kernel/archive/meson64-5.10/hardkernel-igor-0091-Add-fan-support-to-Odroid-N2-plus.patch deleted file mode 100644 index 7cf6c32212..0000000000 --- a/patch/kernel/archive/meson64-5.10/hardkernel-igor-0091-Add-fan-support-to-Odroid-N2-plus.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 2cf6db15ecd5d1d96158c5bba5543ba38f8387f7 Mon Sep 17 00:00:00 2001 -From: Igor Pecovnik -Date: Tue, 4 Aug 2020 23:20:03 +0200 -Subject: [PATCH] Add fan support to Odroid N2/plus - -Signed-off-by: Igor Pecovnik ---- - .../boot/dts/amlogic/meson-g12b-odroid-n2.dts | 36 +++++++++++++++++++ - 1 file changed, 36 insertions(+) - -diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -index 65df5fb49..50bfb0dce 100644 ---- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -@@ -2,6 +2,7 @@ - /* - * Copyright (c) 2019 BayLibre, SAS - * Author: Neil Armstrong -+ * Changed: Igor Pecovnik - */ - - /dts-v1/; -@@ -10,6 +11,7 @@ - #include - #include - #include -+#include - - / { - compatible = "hardkernel,odroid-n2", "amlogic,s922x", "amlogic,g12b"; -@@ -27,6 +29,22 @@ chosen { - stdout-path = "serial0:115200n8"; - }; - -+ pwmgpio:pwmgpio { -+ compatible = "pwm-gpio"; -+ #pwm-cells = <3>; -+ pwm-gpios = <&gpio_ao GPIOAO_10 GPIO_ACTIVE_HIGH>; -+ status = "okay"; -+ }; -+ -+ pwmfan:pwm-fan { -+ compatible = "pwm-fan"; -+ pwms = <&pwmgpio 0 40000 PWM_POLARITY_INVERTED>; -+ cooling-min-state = <0>; -+ cooling-max-state = <3>; -+ #cooling-cells = <2>; -+ cooling-levels = <0 120 170 220>; -+ }; -+ - memory@0 { - device_type = "memory"; - reg = <0x0 0x0 0x0 0x40000000>; -@@ -342,6 +360,16 @@ cpu_passive: cpu-passive { - hysteresis = <2000>; /* millicelsius */ - type = "passive"; - }; -+ fan_0: trip-point@0 { -+ temperature = <65000>; -+ hysteresis = <5000>; -+ type = "active"; -+ }; -+ fan_1: trip-point@1 { -+ temperature = <75000>; -+ hysteresis = <5000>; -+ type = "active"; -+ }; - }; - cooling-maps { - cpufreq_map0 { -@@ -356,6 +384,14 @@ cpufreq_map1 { - <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, - <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; - }; -+ fan_cooling_map0 { -+ trip = <&fan_0>; -+ cooling-device = <&pwmfan THERMAL_NO_LIMIT 2>; -+ }; -+ fan_cooling_map1 { -+ trip = <&fan_1>; -+ cooling-device = <&pwmfan 2 THERMAL_NO_LIMIT>; -+ }; - }; - }; - --- -Created with Armbian build tools https://github.com/armbian/build - diff --git a/patch/kernel/archive/meson64-5.10/need_check/0075-ODROID-N2-arm64-dts-reboot-power-off-support-for-ODR.patch b/patch/kernel/archive/meson64-5.10/need_check/0075-ODROID-N2-arm64-dts-reboot-power-off-support-for-ODR.patch deleted file mode 100644 index 4f3068990c..0000000000 --- a/patch/kernel/archive/meson64-5.10/need_check/0075-ODROID-N2-arm64-dts-reboot-power-off-support-for-ODR.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 7ab821b3289f781553982e2cdc97d031e457bea0 Mon Sep 17 00:00:00 2001 -From: ckkim -Date: Tue, 6 Oct 2020 18:37:25 +0900 -Subject: [PATCH 75/75] ODROID-N2: arm64:dts: reboot / power off support for - ODROID-N2/N2Plus - -Signed-off-by: ckkim -Change-Id: I27adc0b9836823219d70a05375fa1327f830130d ---- - arch/arm64/boot/dts/amlogic/meson64_odroidn2.dts | 9 +++++++++ - arch/arm64/boot/dts/amlogic/meson64_odroidn2_plus.dts | 4 ++++ - 2 files changed, 13 insertions(+) - -diff --git a/arch/arm64/boot/dts/amlogic/meson64_odroidn2.dts b/arch/arm64/boot/dts/amlogic/meson64_odroidn2.dts -index d7bbe52d92af..3f1a090be84c 100644 ---- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts -+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts -@@ -18,6 +18,15 @@ - compatible = "hardkernel,odroid-n2", "amlogic,s922x", "amlogic,g12b"; - model = "Hardkernel ODROID-N2"; - -+ reboot: odroid-reboot { -+ compatible = "odroid,reboot"; -+ sys_reset = <0x84000009>; -+ sys_poweroff = <0x84000008>; -+ -+ sd-vqsw = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>; -+ sd-vmmc = <&gpio_ao GPIOAO_8 GPIO_ACTIVE_HIGH>; -+ }; -+ - aliases { - ethernet0 = ðmac; - i2c0 = &i2c2; -diff --git a/arch/arm64/boot/dts/amlogic/meson64_odroidn2_plus.dts b/arch/arm64/boot/dts/amlogic/meson64_odroidn2_plus.dts -index 8dc68eee628d..1f3ed5f03c68 100644 ---- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts -+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts -@@ -12,6 +12,10 @@ / { - model = "Hardkernel ODROID-N2Plus"; - }; - -+&reboot { -+ sd-vqen = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>; -+}; -+ - &vddcpu_a { - regulator-min-microvolt = <680000>; - regulator-max-microvolt = <1040000>; --- -2.25.1 - diff --git a/patch/kernel/archive/meson64-5.10/odroid-n2-rtc0.patch b/patch/kernel/archive/meson64-5.10/odroid-n2-rtc0.patch deleted file mode 100644 index eb632b5ef6..0000000000 --- a/patch/kernel/archive/meson64-5.10/odroid-n2-rtc0.patch +++ /dev/null @@ -1,24 +0,0 @@ -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 93ba39044eb3..e2f727ffb731 100644 ---- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi -@@ -24,6 +24,7 @@ aliases { - serial1 = &uart_A; - i2c0 = &i2c2; - i2c1 = &i2c3; -+ rtc1 = &vrtc; - }; - - dioo2133: audio-amplifier-0 { -@@ -632,6 +633,11 @@ &i2c3 { - - /* default 100k */ - clock-frequency = <100000>; -+ -+ rtc@51 { -+ compatible = "nxp,pcf8563"; -+ reg = <0x51>; -+ }; - }; - - &ir {