From 12a367fff4d58b51cd71a9659e3bac702454e3a7 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Wed, 3 Jul 2024 12:43:00 +0300 Subject: [PATCH 1/8] mk_format_patch: Copy only those patches that have changes in chunks --- tools/mk_format_patch | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/mk_format_patch b/tools/mk_format_patch index b8b2991d0afa..d34ecbf9e2fe 100755 --- a/tools/mk_format_patch +++ b/tools/mk_format_patch @@ -25,10 +25,17 @@ ii_cp() local new_p=$1 local old_p=$2 + # Patches can be extracted in several ways. + # Copy only those patches that have changes in chunks, + # line numbers, or source text. + # Ignore lines that may be changed by another method + # of extracting (creating) the patch. if [ "$(diff -N \ --ignore-matching-lines="^From [0-9a-f]\{40\}" \ --ignore-matching-lines="^index [0-9a-f]\{7\}" \ --ignore-matching-lines="^Subject:" \ + --ignore-matching-lines='/.*/* |[ ][ 1-9]' \ + --ignore-matching-lines='^Armbian$' \ --ignore-matching-lines="^[2-3].[1-9][0-9]" \ $old_p $new_p 2>/dev/null)" != "" ] then @@ -170,7 +177,7 @@ then prefix="" $(git -C $url_t \ - format-patch --filename-max-length=75 $range \ + format-patch --filename-max-length=75 --abbrev=12 $range \ -o $tmp_dir/$target_name ) 2>/dev/null From 37f37952921ca3e95bebdb5d71255869dcbc9b2c Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Wed, 3 Jul 2024 12:46:58 +0300 Subject: [PATCH 2/8] sunxi-6.6: megous: Delete unused ones. Update the changed ones. --- ...9i-hdmi-audio-Initial-implementation.patch | 9 +- ...-New-codec-driver-for-the-EC25-modem.patch | 9 +- .../Move-a-node-to-avoid-merge-conflict.patch | 115 -- ...-t-disable-regulators-during-suspend.patch | 46 - ...dts-allwinner-h6-Add-hdmi-sound-card.patch | 10 +- ...-dts-allwinner-h6-Protect-SCP-clocks.patch | 8 +- ...a64-pinephone-Add-support-for-Pineph.patch | 11 +- ...56x-Fix-PCIe-register-map-and-ranges.patch | 48 - ...ed-clocks-for-all-OF-clock-providers.patch | 14 +- ...64-Increase-PLL_AUDIO-base-frequency.patch | 12 +- ...-clock-rate-when-pll-video0-s-rate-c.patch | 12 +- ...-support-for-rate-resetting-notifier.patch | 16 +- ...tch-parent-of-MIPI-DSI-to-periph0-1x.patch | 10 +- ...e-power-up-down-sequence-of-the-pane.patch | 10 +- ...reboot-when-DRM-device-fails-to-bind.patch | 37 - ...wrong-location-of-clk_prepare_enable.patch | 27 - ...one-of-the-UI-planes-as-a-cursor-one.patch | 73 - ...er-display-pipeline-state-from-p-boo.patch | 46 +- ...r-add-DT-binding-for-Voltafield-AF81.patch | 7 +- ...Add-a-binding-for-AXP813-charger-led.patch | 7 +- ...dings-for-Himax-HM5065-camera-sensor.patch | 7 +- .../hm5065-yaml-bindings-wip.patch | 7 +- ...er-for-Voltafield-AF8133J-magnetomet.patch | 7 +- ...power-off-the-controller-during-susp.patch | 16 +- ...-t-disable-regulators-during-suspend.patch | 53 - ...eep-regulator-enable-disable-balance.patch | 8 +- ...creen-goodix-Add-config-debugfs-file.patch | 14 +- ...ort-charger-LED-on-AXP20x-like-PMICs.patch | 15 +- ...2145-Galaxycore-camera-module-driver.patch | 11 +- ...river-for-Himax-HM5065-camera-sensor.patch | 11 +- ...40-Add-read-only-property-for-vblank.patch | 8 +- ...werup-the-sensor-during-driver-probe.patch | 10 +- ...cus-commands-blocking-until-complete.patch | 12 +- .../media-ov5640-Implement-autofocus.patch | 22 +- ...media-ov5640-Improve-error-reporting.patch | 10 +- ...ia-ov5640-Improve-firmware-load-time.patch | 10 +- ...a-ov5640-set-default-ae-target-lower.patch | 8 +- ..._force_suspend-resume-for-system-sus.patch | 8 +- ...modem-power-Power-manager-for-modems.patch | 7 +- ...ger-Pinephone-Keyboard-power-manager.patch | 7 +- ...dd-delay-after-power-class-selection.patch | 10 +- ...t-for-enabling-a-regulator-for-PHY-I.patch | 16 +- ...-regulator-variable-to-regulator_phy.patch | 16 +- ...devm_regulator_get-for-PHY-regulator.patch | 16 +- ...-for-enabling-a-regulator-from-users.patch | 9 +- ...tp65185x-eInk-panel-regulator-driver.patch | 7 +- ...rt-analog-part-of-X-Powers-AC100-cod.patch | 7 +- ...gling-pointer-in-netdev-private-data.patch | 24 +- ...ng-host-side-code-on-SoCs-where-it-s.patch | 107 -- ..._QUIRK_RESET-for-Quectel-EG25G-Modem.patch | 8 +- ...driver-for-ANX7688-USB-C-HDMI-bridge.patch | 7 +- ...lay-driver-for-A13-based-PocketBooks.patch | 1277 ----------------- patch/kernel/archive/sunxi-6.6/series.megous | 10 - 53 files changed, 258 insertions(+), 2034 deletions(-) delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.megous/Move-a-node-to-avoid-merge-conflict.patch delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.megous/Revert-input-goodix-Don-t-disable-regulators-during-suspend.patch delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-rockchip-rk356x-Fix-PCIe-register-map-and-ranges.patch delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.megous/drm-rockchip-Fix-panic-on-reboot-when-DRM-device-fails-to-bind.patch delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.megous/drm-sun4i-Fix-wrong-location-of-clk_prepare_enable.patch delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.megous/drm-sun4i-Mark-one-of-the-UI-planes-as-a-cursor-one.patch delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.megous/input-goodix-Don-t-disable-regulators-during-suspend.patch delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.megous/usb-musb-sunxi-Avoid-enabling-host-side-code-on-SoCs-where-it-s.patch delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.megous/video-fbdev-eInk-display-driver-for-A13-based-PocketBooks.patch diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/ASOC-sun9i-hdmi-audio-Initial-implementation.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/ASOC-sun9i-hdmi-audio-Initial-implementation.patch index 71c9b9f59294..59198d879716 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/ASOC-sun9i-hdmi-audio-Initial-implementation.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/ASOC-sun9i-hdmi-audio-Initial-implementation.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From fa5238d95dc77b9cc48f635fdc93e1f191beb744 Mon Sep 17 00:00:00 2001 From: Jernej Skrabec Date: Tue, 10 Nov 2020 20:42:44 +0100 Subject: ASOC: sun9i-hdmi-audio: Initial implementation @@ -10,10 +10,11 @@ V40. Signed-off-by: Jernej Skrabec --- - sound/soc/sunxi/Kconfig | 8 + + sound/soc/sunxi/Kconfig | 8 ++ sound/soc/sunxi/Makefile | 1 + - sound/soc/sunxi/sun9i-hdmi-audio.c | 180 ++++++++++ + sound/soc/sunxi/sun9i-hdmi-audio.c | 180 +++++++++++++++++++++++++++++ 3 files changed, 189 insertions(+) + create mode 100644 sound/soc/sunxi/sun9i-hdmi-audio.c diff --git a/sound/soc/sunxi/Kconfig b/sound/soc/sunxi/Kconfig index 1f18f016acbb..6a17e49535bd 100644 @@ -230,5 +231,5 @@ index 000000000000..fc8f03d398c0 +MODULE_AUTHOR("Jernej Skrabec "); +MODULE_LICENSE("GPL v2"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/ASoC-ec25-New-codec-driver-for-the-EC25-modem.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/ASoC-ec25-New-codec-driver-for-the-EC25-modem.patch index 5d7189cac2e7..5d34863fe500 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/ASoC-ec25-New-codec-driver-for-the-EC25-modem.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/ASoC-ec25-New-codec-driver-for-the-EC25-modem.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 67c5f5dbcd93b3ec95e50e008b705186fced7eb5 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Fri, 25 Sep 2020 21:42:52 -0500 Subject: ASoC: ec25: New codec driver for the EC25 modem @@ -9,10 +9,11 @@ an 8 kHz or 16 kHz sameple rate. Suggested-by: Luca Weiss Signed-off-by: Samuel Holland --- - sound/soc/codecs/Kconfig | 3 + + sound/soc/codecs/Kconfig | 3 ++ sound/soc/codecs/Makefile | 2 + - sound/soc/codecs/ec25.c | 94 ++++++++++ + sound/soc/codecs/ec25.c | 94 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+) + create mode 100644 sound/soc/codecs/ec25.c diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig index f1e1dbc509f6..68e051ddecd6 100644 @@ -149,5 +150,5 @@ index 000000000000..4f9b6b06cce7 +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:ec25"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/Move-a-node-to-avoid-merge-conflict.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/Move-a-node-to-avoid-merge-conflict.patch deleted file mode 100644 index 36782dd15910..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/Move-a-node-to-avoid-merge-conflict.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 95ae6eabc966110f4d1799d07d420bca3ab93662 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= -Date: Sun, 9 May 2021 23:43:21 +0200 -Subject: [PATCH 26/27] Move a node to avoid merge conflict - ---- - arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi | 12 ++++----- - .../dts/allwinner/sun50i-h6-orangepi-3.dts | 8 +++--- - arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 27 +++++++++---------- - 3 files changed, 23 insertions(+), 24 deletions(-) - -diff --git a/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi -index 3c0da94661c9..699ab2f7a1ac 100644 ---- a/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi -+++ b/arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi -@@ -100,12 +100,6 @@ osc32k: osc32k_clk { - }; - }; - -- de: display-engine { -- compatible = "allwinner,sun8i-h3-display-engine"; -- allwinner,pipelines = <&mixer0>; -- status = "disabled"; -- }; -- - sound_hdmi: sound_hdmi { - compatible = "allwinner,sun9i-a80-hdmi-audio", - "allwinner,sun8i-h3-hdmi-audio"; -@@ -120,6 +114,12 @@ cpu { - }; - }; - -+ de: display-engine { -+ compatible = "allwinner,sun8i-h3-display-engine"; -+ allwinner,pipelines = <&mixer0>; -+ status = "disabled"; -+ }; -+ - soc { - compatible = "simple-bus"; - #address-cells = <1>; -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts -index 3d264de784de..fca1d8cd6d86 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts -@@ -118,6 +118,10 @@ &gpu { - status = "okay"; - }; - -+&i2s1 { -+ status = "okay"; -+}; -+ - &hdmi { - status = "okay"; - }; -@@ -128,10 +132,6 @@ hdmi_out_con: endpoint { - }; - }; - --&i2s1 { -- status = "okay"; --}; -- - &mmc0 { - vmmc-supply = <®_cldo1>; - cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -index ff58dc32218f..fcbb1d79578e 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -@@ -89,20 +89,6 @@ psci { - method = "smc"; - }; - -- sound_hdmi: sound_hdmi { -- compatible = "allwinner,sun9i-a80-hdmi-audio", -- "allwinner,sun50i-h6-hdmi-audio"; -- status = "disabled"; -- -- codec { -- sound-dai = <&hdmi>; -- }; -- -- cpu { -- sound-dai = <&i2s1>; -- }; -- }; -- - timer { - compatible = "arm,armv8-timer"; - arm,no-tick-in-suspend; -@@ -116,6 +102,19 @@ timer { - (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; - }; - -+ sound_hdmi: sound_hdmi { -+ compatible = "allwinner,sun9i-a80-hdmi-audio", -+ "allwinner,sun50i-h6-hdmi-audio"; -+ status = "disabled"; -+ -+ codec { -+ sound-dai = <&hdmi>; -+ }; -+ -+ cpu { -+ sound-dai = <&i2s1>; -+ }; -+ }; - - soc { - compatible = "simple-bus"; --- -2.34.1 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/Revert-input-goodix-Don-t-disable-regulators-during-suspend.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/Revert-input-goodix-Don-t-disable-regulators-during-suspend.patch deleted file mode 100644 index 478a8f8c0004..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/Revert-input-goodix-Don-t-disable-regulators-during-suspend.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 31f08bb2b6dad06c14de910c9a9ee7523b200f99 Mon Sep 17 00:00:00 2001 -From: Ondrej Jirman -Date: Sat, 20 May 2023 16:58:49 +0200 -Subject: [PATCH 31/35] Revert "input: goodix: Don't disable regulators during - suspend" - -This reverts commit d93d2611a98ccbb75066bd9d508dccc9cf8ad352. ---- - drivers/input/touchscreen/goodix.c | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c -index d5d8cf7d95b1..d4b619ebe6ad 100644 ---- a/drivers/input/touchscreen/goodix.c -+++ b/drivers/input/touchscreen/goodix.c -@@ -1423,6 +1423,8 @@ static int goodix_suspend(struct device *dev) - goodix_free_irq(ts); - goodix_irq_direction_output(ts, 0); - gpiod_direction_output(ts->gpiod_rst, 0); -+ regulator_disable(ts->avdd28); -+ regulator_disable(ts->vddio); - return 0; - } - -@@ -1472,6 +1474,18 @@ static int goodix_resume(struct device *dev) - int error; - - if (ts->poweroff_in_suspend) { -+ error = regulator_enable(ts->avdd28); -+ if (error) { -+ dev_err(dev, "Regulator avdd28 enable failed.\n"); -+ return error; -+ } -+ -+ error = regulator_enable(ts->vddio); -+ if (error) { -+ dev_err(dev, "Regulator vddio enable failed.\n"); -+ return error; -+ } -+ - error = goodix_reset(ts); - if (error) { - dev_err(dev, "Controller reset failed.\n"); --- -2.34.1 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-allwinner-h6-Add-hdmi-sound-card.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-allwinner-h6-Add-hdmi-sound-card.patch index f7908a0dbd4a..407a40451a0f 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-allwinner-h6-Add-hdmi-sound-card.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-allwinner-h6-Add-hdmi-sound-card.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From be4223f616c165039680d7712e97e07fff31803f Mon Sep 17 00:00:00 2001 From: Jernej Skrabec Date: Tue, 10 Nov 2020 20:43:28 +0100 Subject: arm64: dts: allwinner: h6: Add hdmi sound card @@ -7,11 +7,11 @@ H6 supports HDMI audio. Add a sound card node for it. Signed-off-by: Jernej Skrabec --- - arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 16 ++++++++++ + arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -index ca1d287a0a01..ff58dc32218f 100644 +index d11e5041bae9..8b2e96838f9d 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi @@ -89,6 +89,20 @@ psci { @@ -43,7 +43,7 @@ index ca1d287a0a01..ff58dc32218f 100644 soc { compatible = "simple-bus"; #address-cells = <1>; -@@ -781,6 +796,7 @@ ohci3: usb@5311400 { +@@ -780,6 +795,7 @@ ohci3: usb@5311400 { }; hdmi: hdmi@6000000 { @@ -52,5 +52,5 @@ index ca1d287a0a01..ff58dc32218f 100644 reg = <0x06000000 0x10000>; reg-io-width = <1>; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-allwinner-h6-Protect-SCP-clocks.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-allwinner-h6-Protect-SCP-clocks.patch index ecbec279ade6..86a70356c434 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-allwinner-h6-Protect-SCP-clocks.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-allwinner-h6-Protect-SCP-clocks.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From fb4458b59a18b893d18eece37cd180e80695fe90 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Wed, 1 Jan 2020 16:04:01 -0600 Subject: arm64: dts: allwinner: h6: Protect SCP clocks @@ -9,7 +9,7 @@ Signed-off-by: Samuel Holland 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -index efb141c4dff8..c9fc4514fcd1 100644 +index e675957442b4..6f94fccc10d9 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi @@ -263,6 +263,7 @@ ccu: clock@3001000 { @@ -20,7 +20,7 @@ index efb141c4dff8..c9fc4514fcd1 100644 #clock-cells = <1>; #reset-cells = <1>; }; -@@ -959,6 +960,7 @@ r_ccu: clock@7010000 { +@@ -958,6 +959,7 @@ r_ccu: clock@7010000 { clocks = <&osc24M>, <&rtc CLK_OSC32K>, <&rtc CLK_IOSC>, <&ccu CLK_PLL_PERIPH0>; clock-names = "hosc", "losc", "iosc", "pll-periph"; @@ -29,5 +29,5 @@ index efb141c4dff8..c9fc4514fcd1 100644 #reset-cells = <1>; }; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-allwinner-sun50i-a64-pinephone-Add-support-for-Pineph.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-allwinner-sun50i-a64-pinephone-Add-support-for-Pineph.patch index fedb46d9bcd9..968a88d7df55 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-allwinner-sun50i-a64-pinephone-Add-support-for-Pineph.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-allwinner-sun50i-a64-pinephone-Add-support-for-Pineph.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From ec64834fabfa097c14f812128a9d44b9b9fdc5ac Mon Sep 17 00:00:00 2001 From: Ondrej Jirman Date: Thu, 10 Nov 2022 20:11:10 +0100 Subject: arm64: dts: allwinner: sun50i-a64-pinephone: Add support for @@ -8,10 +8,11 @@ Beta versions uses a different magnetometer chip. Signed-off-by: Ondrej Jirman --- - arch/arm64/boot/dts/allwinner/Makefile | 1 + - arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.2b.dts | 29 ++++++++++ - arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi | 12 ---- + arch/arm64/boot/dts/allwinner/Makefile | 1 + + .../allwinner/sun50i-a64-pinephone-1.2b.dts | 29 +++++++++++++++++++ + .../dts/allwinner/sun50i-a64-pinephone.dtsi | 12 -------- 3 files changed, 30 insertions(+), 12 deletions(-) + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.2b.dts diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile index 3b0ad5406238..358efa5d6abc 100644 @@ -84,5 +85,5 @@ index daf981fd102f..53f4c1f6648a 100644 lis3mdl: magnetometer@1e { compatible = "st,lis3mdl-magn"; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-rockchip-rk356x-Fix-PCIe-register-map-and-ranges.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-rockchip-rk356x-Fix-PCIe-register-map-and-ranges.patch deleted file mode 100644 index 8b1780c4a783..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/arm64-dts-rockchip-rk356x-Fix-PCIe-register-map-and-ranges.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 5347d2927eb4646ec955feefdcdca35b61268b8d Mon Sep 17 00:00:00 2001 -From: Ondrej Jirman -Date: Sat, 24 Sep 2022 21:59:07 +0200 -Subject: [PATCH 07/11] arm64: dts: rockchip: rk356x: Fix PCIe register map and - ranges - -I have two Realtek PCIe wifi cards connected over the 4 port PCIe bridge -to Quartz64-A. The cards fail to work, when nvme SSD is connected at the -same time to the bridge. Without nvme connected, cards work fine. The -issue seems to be related to mixed use of devices which make use of I/O -ranges and memory ranges. - -This patch changes I/O, MEM and config mappings so that config and I/O -mappings use the 0xf4000000 outbound address space, and MEM range uses -the whole 0x300000000 outbound space. - -These values were suggested by pgwipeout: - - https://lore.kernel.org/lkml/875ygbsrf3.fsf@bloch.sibelius.xs4all.nl/T/#m84b5f6992cc26dffe0d3783c0d8c9c86e5e10c10 - -This is identical to how BSP does the mappings. - -This change to the regs/ranges makes the issue go away and both nvme and -wifi cards work when connected at the same time to the bridge. I tested -the nvme with large amount of reads/writes, both behind the PCIe bridge -and when directly connected to Quartz64-A board. - -Signed-off-by: Ondrej Jirman ---- - arch/arm64/boot/dts/rockchip/rk356x.dtsi | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/arm64/boot/dts/rockchip/rk356x.dtsi b/arch/arm64/boot/dts/rockchip/rk356x.dtsi -index abee88911982..8d735f8bffb2 100644 ---- a/arch/arm64/boot/dts/rockchip/rk356x.dtsi -+++ b/arch/arm64/boot/dts/rockchip/rk356x.dtsi -@@ -986,7 +986,7 @@ pcie2x1: pcie@fe260000 { - <0 0 0 4 &pcie_intc 3>; - linux,pci-domain = <0>; - num-ib-windows = <6>; -- num-ob-windows = <2>; -+ num-ob-windows = <8>; - max-link-speed = <2>; - msi-map = <0x0 &gic 0x0 0x1000>; - num-lanes = <1>; --- -2.34.1 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/clk-Implement-protected-clocks-for-all-OF-clock-providers.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/clk-Implement-protected-clocks-for-all-OF-clock-providers.patch index 5f011d537f19..6c081627aa1e 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/clk-Implement-protected-clocks-for-all-OF-clock-providers.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/clk-Implement-protected-clocks-for-all-OF-clock-providers.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 05b0719a7db0481c6af701c23d46cb4b5de9bc52 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Sun, 29 Dec 2019 20:23:28 -0600 Subject: clk: Implement protected-clocks for all OF clock providers @@ -62,9 +62,9 @@ again for each clock, which is part of why I didn't do it that way. Signed-off-by: Samuel Holland --- - drivers/clk/clk-conf.c | 54 ++++++++++ - drivers/clk/clk.c | 31 ++++++ - drivers/clk/clk.h | 2 + + drivers/clk/clk-conf.c | 54 ++++++++++++++++++++++++++++++++++++++++++ + drivers/clk/clk.c | 31 ++++++++++++++++++++++++ + drivers/clk/clk.h | 2 ++ 3 files changed, 87 insertions(+) diff --git a/drivers/clk/clk-conf.c b/drivers/clk/clk-conf.c @@ -140,10 +140,10 @@ index 1a4e6340f95c..3b8e22d453cc 100644 if (rc < 0) return rc; diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c -index 473563bc7496..fdad6bf00158 100644 +index f8776065ad1f..78aee01486fa 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c -@@ -4573,6 +4573,37 @@ struct clk *devm_clk_hw_get_clk(struct device *dev, struct clk_hw *hw, +@@ -4689,6 +4689,37 @@ struct clk *devm_clk_hw_get_clk(struct device *dev, struct clk_hw *hw, } EXPORT_SYMBOL_GPL(devm_clk_hw_get_clk); @@ -202,5 +202,5 @@ index 2d801900cad5..367a0f036b13 100644 #endif -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-a64-Increase-PLL_AUDIO-base-frequency.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-a64-Increase-PLL_AUDIO-base-frequency.patch index cfdcddd76a7e..37a7190b9514 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-a64-Increase-PLL_AUDIO-base-frequency.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-a64-Increase-PLL_AUDIO-base-frequency.patch @@ -1,15 +1,15 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 4871491bb37e885722d9fc8c14b6ac55c71d46c8 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Sun, 19 Jul 2020 17:10:15 -0500 Subject: clk: sunxi-ng: a64: Increase PLL_AUDIO base frequency Signed-off-by: Samuel Holland --- - drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 41 ++++++++-- + drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 41 +++++++++++++++++++++------ 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c -index 8951ffc14ff5..0686b9da9438 100644 +index 6a4b2b9ef30a..ec9d8126a173 100644 --- a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c +++ b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c @@ -47,15 +47,35 @@ static struct ccu_nkmp pll_cpux_clk = { @@ -53,7 +53,7 @@ index 8951ffc14ff5..0686b9da9438 100644 }; static SUNXI_CCU_NM_WITH_SDM_GATE_LOCK(pll_audio_base_clk, "pll-audio-base", -@@ -606,10 +626,10 @@ static const struct clk_hw *clk_parent_pll_audio[] = { +@@ -608,10 +628,10 @@ static const struct clk_hw *clk_parent_pll_audio[] = { &pll_audio_base_clk.common.hw }; @@ -66,7 +66,7 @@ index 8951ffc14ff5..0686b9da9438 100644 static CLK_FIXED_FACTOR_HWS(pll_audio_2x_clk, "pll-audio-2x", clk_parent_pll_audio, 2, 1, CLK_SET_RATE_PARENT); -@@ -948,10 +968,13 @@ static int sun50i_a64_ccu_probe(struct platform_device *pdev) +@@ -950,10 +970,13 @@ static int sun50i_a64_ccu_probe(struct platform_device *pdev) if (IS_ERR(reg)) return PTR_ERR(reg); @@ -83,5 +83,5 @@ index 8951ffc14ff5..0686b9da9438 100644 writel(0x515, reg + SUN50I_A64_PLL_MIPI_REG); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-a64-keep-tcon0-clock-rate-when-pll-video0-s-rate-c.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-a64-keep-tcon0-clock-rate-when-pll-video0-s-rate-c.patch index a653487030ef..d19b7e415880 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-a64-keep-tcon0-clock-rate-when-pll-video0-s-rate-c.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-a64-keep-tcon0-clock-rate-when-pll-video0-s-rate-c.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From ccb9fe04f24d54fe9b83b3fcde4ce35e728b26df Mon Sep 17 00:00:00 2001 From: Icenowy Zheng Date: Mon, 14 Aug 2023 07:28:09 +0200 Subject: clk: sunxi-ng: a64: keep tcon0 clock rate when pll-video0's rate @@ -12,14 +12,14 @@ get clock tree to satisfy both pipelines. Signed-off-by: Icenowy Zheng Signed-off-by: Frank Oltmanns --- - drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 15 ++++++++++ + drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c -index 1a940ef48671..60d9da5d7f7b 100644 +index e354cfaa0aef..e79890fecbb3 100644 --- a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c +++ b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c -@@ -958,6 +958,17 @@ static struct ccu_mux_nb sun50i_a64_cpu_nb = { +@@ -960,6 +960,17 @@ static struct ccu_mux_nb sun50i_a64_cpu_nb = { .bypass_index = 1, /* index of 24 MHz oscillator */ }; @@ -37,7 +37,7 @@ index 1a940ef48671..60d9da5d7f7b 100644 static int sun50i_a64_ccu_probe(struct platform_device *pdev) { void __iomem *reg; -@@ -996,6 +1007,10 @@ static int sun50i_a64_ccu_probe(struct platform_device *pdev) +@@ -998,6 +1009,10 @@ static int sun50i_a64_ccu_probe(struct platform_device *pdev) ccu_mux_notifier_register(pll_cpux_clk.common.hw.clk, &sun50i_a64_cpu_nb); @@ -49,5 +49,5 @@ index 1a940ef48671..60d9da5d7f7b 100644 } -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-add-support-for-rate-resetting-notifier.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-add-support-for-rate-resetting-notifier.patch index 5ce9875519ed..7901253c2ed8 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-add-support-for-rate-resetting-notifier.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-add-support-for-rate-resetting-notifier.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 46b6d200d03649c331e213ea758dce607d75a730 Mon Sep 17 00:00:00 2001 From: Icenowy Zheng Date: Mon, 14 Aug 2023 07:28:08 +0200 Subject: clk: sunxi-ng: add support for rate resetting notifier @@ -14,15 +14,15 @@ reset the rate after the parent changed. Signed-off-by: Icenowy Zheng --- - drivers/clk/sunxi-ng/ccu_common.c | 22 ++++++++++ - drivers/clk/sunxi-ng/ccu_common.h | 12 +++++ + drivers/clk/sunxi-ng/ccu_common.c | 22 ++++++++++++++++++++++ + drivers/clk/sunxi-ng/ccu_common.h | 12 ++++++++++++ 2 files changed, 34 insertions(+) diff --git a/drivers/clk/sunxi-ng/ccu_common.c b/drivers/clk/sunxi-ng/ccu_common.c -index 8babce55302f..dc5803f3dc43 100644 +index ac0091b4ce24..ec3255ba34b4 100644 --- a/drivers/clk/sunxi-ng/ccu_common.c +++ b/drivers/clk/sunxi-ng/ccu_common.c -@@ -99,6 +99,28 @@ int ccu_pll_notifier_register(struct ccu_pll_nb *pll_nb) +@@ -109,6 +109,28 @@ int ccu_pll_notifier_register(struct ccu_pll_nb *pll_nb) } EXPORT_SYMBOL_NS_GPL(ccu_pll_notifier_register, SUNXI_CCU); @@ -52,10 +52,10 @@ index 8babce55302f..dc5803f3dc43 100644 struct device_node *node, void __iomem *reg, const struct sunxi_ccu_desc *desc) diff --git a/drivers/clk/sunxi-ng/ccu_common.h b/drivers/clk/sunxi-ng/ccu_common.h -index 942a72c09437..b95cc6b498e3 100644 +index 329734f8cf42..54ff32f045ec 100644 --- a/drivers/clk/sunxi-ng/ccu_common.h +++ b/drivers/clk/sunxi-ng/ccu_common.h -@@ -75,4 +75,16 @@ int devm_sunxi_ccu_probe(struct device *dev, void __iomem *reg, +@@ -78,4 +78,16 @@ int devm_sunxi_ccu_probe(struct device *dev, void __iomem *reg, void of_sunxi_ccu_probe(struct device_node *node, void __iomem *reg, const struct sunxi_ccu_desc *desc); @@ -73,5 +73,5 @@ index 942a72c09437..b95cc6b498e3 100644 + #endif /* _COMMON_H_ */ -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-sun50i-a64-Switch-parent-of-MIPI-DSI-to-periph0-1x.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-sun50i-a64-Switch-parent-of-MIPI-DSI-to-periph0-1x.patch index d7627c18f298..4f5e48a08546 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-sun50i-a64-Switch-parent-of-MIPI-DSI-to-periph0-1x.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/clk-sunxi-ng-sun50i-a64-Switch-parent-of-MIPI-DSI-to-periph0-1x.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 773934e31ddc1c326d4d6949f219442afbb11f85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Mon, 14 Aug 2023 07:28:11 +0200 Subject: clk: sunxi-ng: sun50i-a64: Switch parent of MIPI-DSI to periph0(1x) @@ -13,10 +13,10 @@ Signed-off-by: Ondrej Jirman 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c -index 60d9da5d7f7b..ea701bc51ade 100644 +index e79890fecbb3..bb411989e898 100644 --- a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c +++ b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c -@@ -969,6 +969,8 @@ static struct ccu_rate_reset_nb sun50i_a64_pll_video0_reset_tcon0_nb = { +@@ -971,6 +971,8 @@ static struct ccu_rate_reset_nb sun50i_a64_pll_video0_reset_tcon0_nb = { .common = &pll_video0_clk.common, }; @@ -25,7 +25,7 @@ index 60d9da5d7f7b..ea701bc51ade 100644 static int sun50i_a64_ccu_probe(struct platform_device *pdev) { void __iomem *reg; -@@ -988,9 +990,15 @@ static int sun50i_a64_ccu_probe(struct platform_device *pdev) +@@ -990,9 +992,15 @@ static int sun50i_a64_ccu_probe(struct platform_device *pdev) writel(0x10040000, reg + SUN50I_A64_PLL_AUDIO_BIAS_REG); ret = of_property_read_u32_index(of_chosen, "p-boot,framebuffer-start", 0, &val); @@ -43,5 +43,5 @@ index 60d9da5d7f7b..ea701bc51ade 100644 val = readl(reg + SUN50I_A64_TCON0_CLK_REG); val &= ~GENMASK(26, 24); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/drm-panel-st7703-Improve-the-power-up-down-sequence-of-the-pane.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/drm-panel-st7703-Improve-the-power-up-down-sequence-of-the-pane.patch index 4399bfd7b95d..2d02d390a509 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/drm-panel-st7703-Improve-the-power-up-down-sequence-of-the-pane.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/drm-panel-st7703-Improve-the-power-up-down-sequence-of-the-pane.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 15bd2600992649bb01fbe556b3f9b0cff7596096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Sun, 5 Jul 2020 15:55:46 +0200 Subject: drm/panel: st7703: Improve the power up/down sequence of the panel @@ -26,11 +26,11 @@ on PinePhone. Signed-off-by: Ondrej Jirman --- - drivers/gpu/drm/panel/panel-sitronix-st7703.c | 35 +++++----- - 1 file changed, 18 insertions(+), 17 deletions(-) + drivers/gpu/drm/panel/panel-sitronix-st7703.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7703.c b/drivers/gpu/drm/panel/panel-sitronix-st7703.c -index 6a3945639535..6360d73750d8 100644 +index 7bb723d445ad..6360d73750d8 100644 --- a/drivers/gpu/drm/panel/panel-sitronix-st7703.c +++ b/drivers/gpu/drm/panel/panel-sitronix-st7703.c @@ -276,7 +276,6 @@ static int xbd599_init_sequence(struct st7703 *ctx) @@ -71,5 +71,5 @@ index 6a3945639535..6360d73750d8 100644 } -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/drm-rockchip-Fix-panic-on-reboot-when-DRM-device-fails-to-bind.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/drm-rockchip-Fix-panic-on-reboot-when-DRM-device-fails-to-bind.patch deleted file mode 100644 index 8c0fb2330361..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/drm-rockchip-Fix-panic-on-reboot-when-DRM-device-fails-to-bind.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 2eea51a34ec73f5f19230014b32b477791cea7a7 Mon Sep 17 00:00:00 2001 -From: Ondrej Jirman -Date: Sat, 24 Sep 2022 21:54:23 +0200 -Subject: [PATCH 06/11] drm: rockchip: Fix panic on reboot when DRM device - fails to bind - -When DRM device is freed, we need to clear the drvdata pointer, because -it now points to invalid memory. - -Signed-off-by: Ondrej Jirman ---- - drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c -index ab55d7132550..5e2a4c967f83 100644 ---- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c -+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c -@@ -202,6 +202,7 @@ static int rockchip_drm_bind(struct device *dev) - component_unbind_all(dev, drm_dev); - err_free: - drm_dev_put(drm_dev); -+ dev_set_drvdata(dev, NULL); - return ret; - } - -@@ -218,6 +219,7 @@ static void rockchip_drm_unbind(struct device *dev) - rockchip_iommu_cleanup(drm_dev); - - drm_dev_put(drm_dev); -+ dev_set_drvdata(dev, NULL); - } - - DEFINE_DRM_GEM_FOPS(rockchip_drm_driver_fops); --- -2.34.1 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/drm-sun4i-Fix-wrong-location-of-clk_prepare_enable.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/drm-sun4i-Fix-wrong-location-of-clk_prepare_enable.patch deleted file mode 100644 index 23771eb38527..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/drm-sun4i-Fix-wrong-location-of-clk_prepare_enable.patch +++ /dev/null @@ -1,27 +0,0 @@ -From e663645fe1bc14cd91094de7418020b8cd3c4a1b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= -Date: Sat, 30 May 2020 03:15:04 +0200 -Subject: [PATCH 04/14] drm/sun4i: Fix wrong location of clk_prepare_enable - -It should be placed inside the has_channel_0 block. - -Signed-off-by: Ondrej Jirman ---- - drivers/gpu/drm/sun4i/sun4i_tcon.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/sun4i_tcon.c -index a1a2c845ade0..d140649d7055 100644 ---- a/drivers/gpu/drm/sun4i/sun4i_tcon.c -+++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c -@@ -796,6 +796,7 @@ static int sun4i_tcon_init_clocks(struct device *dev, - dev_err(dev, "Couldn't get the TCON channel 0 clock\n"); - return PTR_ERR(tcon->sclk0); - } -+ clk_prepare_enable(tcon->sclk0); - } - - if (tcon->quirks->has_channel_1) { --- -2.34.1 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/drm-sun4i-Mark-one-of-the-UI-planes-as-a-cursor-one.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/drm-sun4i-Mark-one-of-the-UI-planes-as-a-cursor-one.patch deleted file mode 100644 index 98eb1b65aa11..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/drm-sun4i-Mark-one-of-the-UI-planes-as-a-cursor-one.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Ondrej Jirman -Date: Mon, 31 Oct 2022 03:23:11 +0100 -Subject: drm/sun4i: Mark one of the UI planes as a cursor one - -Signed-off-by: Ondrej Jirman ---- - drivers/gpu/drm/sun4i/sun8i_mixer.c | 7 ++++++- - drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 7 ++----- - drivers/gpu/drm/sun4i/sun8i_ui_layer.h | 4 +++- - 3 files changed, 11 insertions(+), 7 deletions(-) - -diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c -index 86a38a2f00a7..3f14b146419b 100644 ---- a/drivers/gpu/drm/sun4i/sun8i_mixer.c -+++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c -@@ -359,8 +359,13 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, - - for (i = 0; i < mixer->cfg->ui_num; i++) { - struct sun8i_layer *layer; -+ enum drm_plane_type type = DRM_PLANE_TYPE_OVERLAY; -+ if (i == 0) -+ type = DRM_PLANE_TYPE_PRIMARY; -+ else if (i == (mixer->cfg->ui_num - 1)) -+ type = DRM_PLANE_TYPE_CURSOR; - -- layer = sun8i_ui_layer_init_one(drm, mixer, i); -+ layer = sun8i_ui_layer_init_one(drm, mixer, i, type); - if (IS_ERR(layer)) { - dev_err(drm->dev, "Couldn't initialize %s plane\n", - i ? "overlay" : "primary"); -diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c -index b90e5edef4e8..0349e8bdffd6 100644 ---- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c -+++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c -@@ -277,9 +277,9 @@ static const uint64_t sun8i_layer_modifiers[] = { - - struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, - struct sun8i_mixer *mixer, -- int index) -+ int index, -+ enum drm_plane_type type) - { -- enum drm_plane_type type = DRM_PLANE_TYPE_OVERLAY; - int channel = mixer->cfg->vi_num + index; - struct sun8i_layer *layer; - unsigned int plane_cnt; -@@ -289,9 +289,6 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, - if (!layer) - return ERR_PTR(-ENOMEM); - -- if (index == 0) -- type = DRM_PLANE_TYPE_PRIMARY; -- - /* possible crtcs are set later */ - ret = drm_universal_plane_init(drm, &layer->plane, 0, - &sun8i_ui_layer_funcs, -diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h -index 83892f6ff211..d4530e9f64e0 100644 ---- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h -+++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h -@@ -51,5 +51,7 @@ struct sun8i_layer; - - struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, - struct sun8i_mixer *mixer, -- int index); -+ int index, -+ enum drm_plane_type type); -+ - #endif /* _SUN8I_UI_LAYER_H_ */ --- -Armbian - diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/drm-sun4i-Support-taking-over-display-pipeline-state-from-p-boo.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/drm-sun4i-Support-taking-over-display-pipeline-state-from-p-boo.patch index 19460293364b..831d3c003537 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/drm-sun4i-Support-taking-over-display-pipeline-state-from-p-boo.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/drm-sun4i-Support-taking-over-display-pipeline-state-from-p-boo.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 5c8fb02e4e3aece301d6e6e0cdac37b7417ef800 Mon Sep 17 00:00:00 2001 From: Ondrej Jirman Date: Sun, 30 Apr 2023 18:19:16 +0200 Subject: drm/sun4i: Support taking over display pipeline state from p-boot @@ -8,23 +8,23 @@ For perfect, flickerless and fast boot. Signed-off-by: Ondrej Jirman --- drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 4 +- - drivers/gpu/drm/drm_fbdev_generic.c | 14 +++ - drivers/gpu/drm/panel/panel-sitronix-st7703.c | 17 +++ - drivers/gpu/drm/sun4i/sun4i_tcon.c | 23 ++++ + drivers/gpu/drm/drm_fbdev_generic.c | 14 +++++ + drivers/gpu/drm/panel/panel-sitronix-st7703.c | 17 ++++++ + drivers/gpu/drm/sun4i/sun4i_tcon.c | 23 ++++++++ drivers/gpu/drm/sun4i/sun4i_tcon.h | 2 + - drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 13 +++ + drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 13 +++++ drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h | 2 + - drivers/gpu/drm/sun4i/sun8i_mixer.c | 52 ++++++++++ - drivers/gpu/drm/sun4i/sun8i_mixer.h | 3 + - drivers/phy/allwinner/phy-sun6i-mipi-dphy.c | 14 +++ - drivers/video/backlight/pwm_bl.c | 25 ++++- + drivers/gpu/drm/sun4i/sun8i_mixer.c | 52 +++++++++++++++++++ + drivers/gpu/drm/sun4i/sun8i_mixer.h | 3 ++ + drivers/phy/allwinner/phy-sun6i-mipi-dphy.c | 14 +++++ + drivers/video/backlight/pwm_bl.c | 25 ++++++++- 11 files changed, 167 insertions(+), 2 deletions(-) diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c -index 0686b9da9438..1a940ef48671 100644 +index ec9d8126a173..e354cfaa0aef 100644 --- a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c +++ b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c -@@ -976,7 +976,9 @@ static int sun50i_a64_ccu_probe(struct platform_device *pdev) +@@ -978,7 +978,9 @@ static int sun50i_a64_ccu_probe(struct platform_device *pdev) /* Decrease the PLL AUDIO bias current to reduce noise. */ writel(0x10040000, reg + SUN50I_A64_PLL_AUDIO_BIAS_REG); @@ -36,7 +36,7 @@ index 0686b9da9438..1a940ef48671 100644 /* Set PLL MIPI as parent for TCON0 */ val = readl(reg + SUN50I_A64_TCON0_CLK_REG); diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c -index d647d89764cb..f88f3e39bd5b 100644 +index b4659cd6285a..8baca744bae0 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -78,6 +78,7 @@ static int drm_fbdev_generic_helper_fb_probe(struct drm_fb_helper *fb_helper, @@ -47,7 +47,7 @@ index d647d89764cb..f88f3e39bd5b 100644 int ret; drm_dbg_kms(dev, "surface width(%d), height(%d) and bpp(%d)\n", -@@ -125,6 +126,19 @@ static int drm_fbdev_generic_helper_fb_probe(struct drm_fb_helper *fb_helper, +@@ -124,6 +125,19 @@ static int drm_fbdev_generic_helper_fb_probe(struct drm_fb_helper *fb_helper, if (ret) goto err_drm_fb_helper_release_info; @@ -303,7 +303,7 @@ index f1ddefe0f554..958c2997ab43 100644 static inline struct sun6i_dsi *host_to_sun6i_dsi(struct mipi_dsi_host *host) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c -index 3f14b146419b..c7f2e08f429d 100644 +index 86a38a2f00a7..68865bea236a 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -24,6 +24,7 @@ @@ -357,7 +357,7 @@ index 3f14b146419b..c7f2e08f429d 100644 DRM_DEBUG_DRIVER("Committing changes\n"); drm_for_each_plane(plane, state->dev) { -@@ -471,6 +501,7 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, +@@ -466,6 +496,7 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, dev_set_drvdata(dev, mixer); mixer->engine.ops = &sun8i_engine_ops; mixer->engine.node = dev->of_node; @@ -365,7 +365,7 @@ index 3f14b146419b..c7f2e08f429d 100644 if (of_property_present(dev->of_node, "iommus")) { /* -@@ -495,6 +526,11 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, +@@ -490,6 +521,11 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, */ mixer->engine.id = sun8i_mixer_of_get_id(dev->of_node); @@ -377,7 +377,7 @@ index 3f14b146419b..c7f2e08f429d 100644 mixer->cfg = of_device_get_match_data(dev); if (!mixer->cfg) return -EINVAL; -@@ -542,8 +578,11 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, +@@ -537,8 +573,11 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, * reason for the mixer to be functional. Make sure it's the * case. */ @@ -389,7 +389,7 @@ index 3f14b146419b..c7f2e08f429d 100644 clk_prepare_enable(mixer->mod_clk); -@@ -551,6 +590,7 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, +@@ -546,6 +585,7 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, base = sun8i_blender_base(mixer); @@ -397,7 +397,7 @@ index 3f14b146419b..c7f2e08f429d 100644 /* Reset registers and disable unused sub-engines */ if (mixer->cfg->is_de3) { for (i = 0; i < DE3_MIXER_UNIT_SIZE; i += 4) -@@ -582,6 +622,7 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, +@@ -577,6 +617,7 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, /* Enable the mixer */ regmap_write(mixer->engine.regs, SUN8I_MIXER_GLOBAL_CTL, SUN8I_MIXER_GLOBAL_CTL_RT_EN); @@ -405,7 +405,7 @@ index 3f14b146419b..c7f2e08f429d 100644 /* Set background color to black */ regmap_write(mixer->engine.regs, SUN8I_MIXER_BLEND_BKCOLOR(base), -@@ -602,8 +643,10 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, +@@ -597,8 +638,10 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, SUN8I_MIXER_BLEND_MODE(base, i), SUN8I_MIXER_BLEND_MODE_DEF); @@ -416,7 +416,7 @@ index 3f14b146419b..c7f2e08f429d 100644 return 0; -@@ -633,6 +676,15 @@ static const struct component_ops sun8i_mixer_ops = { +@@ -628,6 +671,15 @@ static const struct component_ops sun8i_mixer_ops = { static int sun8i_mixer_probe(struct platform_device *pdev) { @@ -493,7 +493,7 @@ index 36eab95271b2..a19a27cea860 100644 if (IS_ERR(regs)) { dev_err(&pdev->dev, "Couldn't map the DPHY encoder registers\n"); diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c -index a51fbab96368..4ee25b3ce944 100644 +index 35c716e9043c..6a6859541532 100644 --- a/drivers/video/backlight/pwm_bl.c +++ b/drivers/video/backlight/pwm_bl.c @@ -455,7 +455,7 @@ static int pwm_backlight_probe(struct platform_device *pdev) @@ -543,5 +543,5 @@ index a51fbab96368..4ee25b3ce944 100644 platform_set_drvdata(pdev, bl); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/dt-bindings-iio-magnetometer-add-DT-binding-for-Voltafield-AF81.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/dt-bindings-iio-magnetometer-add-DT-binding-for-Voltafield-AF81.patch index e7b74a16143c..50c2f0e984dc 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/dt-bindings-iio-magnetometer-add-DT-binding-for-Voltafield-AF81.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/dt-bindings-iio-magnetometer-add-DT-binding-for-Voltafield-AF81.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From d42a012154543761ac328927ee4479af557ff731 Mon Sep 17 00:00:00 2001 From: Icenowy Zheng Date: Thu, 18 Mar 2021 20:16:52 +0800 Subject: dt-bindings: iio: magnetometer: add DT binding for Voltafield AF8133J @@ -11,8 +11,9 @@ Add a device tree binding for it. Signed-off-by: Icenowy Zheng --- - Documentation/devicetree/bindings/iio/magnetometer/voltafield,af8133j.yaml | 59 ++++++++++ + .../iio/magnetometer/voltafield,af8133j.yaml | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) + create mode 100644 Documentation/devicetree/bindings/iio/magnetometer/voltafield,af8133j.yaml diff --git a/Documentation/devicetree/bindings/iio/magnetometer/voltafield,af8133j.yaml b/Documentation/devicetree/bindings/iio/magnetometer/voltafield,af8133j.yaml new file mode 100644 @@ -80,5 +81,5 @@ index 000000000000..51e1be85c68b + }; + }; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/dt-bindings-leds-Add-a-binding-for-AXP813-charger-led.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/dt-bindings-leds-Add-a-binding-for-AXP813-charger-led.patch index 63ae679ec8cf..4fa8e643f15f 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/dt-bindings-leds-Add-a-binding-for-AXP813-charger-led.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/dt-bindings-leds-Add-a-binding-for-AXP813-charger-led.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 8293db0f17c8a81d2e6e2fdb3d9d48d5357227c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Sun, 23 Feb 2020 13:40:15 +0100 Subject: dt-bindings: leds: Add a binding for AXP813 charger led @@ -7,8 +7,9 @@ The AXP813 PMIC can control one LED. Add binding to represent the LED. Signed-off-by: Ondrej Jirman --- - Documentation/devicetree/bindings/leds/leds-axp20x.yaml | 24 ++++++++++ + .../devicetree/bindings/leds/leds-axp20x.yaml | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) + create mode 100644 Documentation/devicetree/bindings/leds/leds-axp20x.yaml diff --git a/Documentation/devicetree/bindings/leds/leds-axp20x.yaml b/Documentation/devicetree/bindings/leds/leds-axp20x.yaml new file mode 100644 @@ -41,5 +42,5 @@ index 000000000000..110edae82204 +required: + - compatible -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/dt-bindings-media-Add-bindings-for-Himax-HM5065-camera-sensor.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/dt-bindings-media-Add-bindings-for-Himax-HM5065-camera-sensor.patch index 6465df5c9ed5..ecb161238a04 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/dt-bindings-media-Add-bindings-for-Himax-HM5065-camera-sensor.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/dt-bindings-media-Add-bindings-for-Himax-HM5065-camera-sensor.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 593fcc75e9f84f97c7d659531b9b6dd3e2d6692c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Sat, 30 Sep 2017 02:30:39 +0200 Subject: dt-bindings: media: Add bindings for Himax HM5065 camera sensor @@ -7,8 +7,9 @@ HM5065 is 5MP CMOS sensor... Signed-off-by: Ondrej Jirman --- - Documentation/devicetree/bindings/media/i2c/hm5065.txt | 49 ++++++++++ + .../devicetree/bindings/media/i2c/hm5065.txt | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) + create mode 100644 Documentation/devicetree/bindings/media/i2c/hm5065.txt diff --git a/Documentation/devicetree/bindings/media/i2c/hm5065.txt b/Documentation/devicetree/bindings/media/i2c/hm5065.txt new file mode 100644 @@ -66,5 +67,5 @@ index 000000000000..92ba6cac0d2f + }; +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/hm5065-yaml-bindings-wip.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/hm5065-yaml-bindings-wip.patch index 85f5b420f42b..9d0e90d80d81 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/hm5065-yaml-bindings-wip.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/hm5065-yaml-bindings-wip.patch @@ -1,11 +1,12 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 4715abbcdd863cd1c300e51dfe4d50e7009f6e4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Mon, 20 May 2019 17:58:05 +0200 Subject: hm5065: yaml bindings (wip) --- - Documentation/devicetree/bindings/media/i2c/hm5065.yaml | 90 ++++++++++ + .../devicetree/bindings/media/i2c/hm5065.yaml | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) + create mode 100644 Documentation/devicetree/bindings/media/i2c/hm5065.yaml diff --git a/Documentation/devicetree/bindings/media/i2c/hm5065.yaml b/Documentation/devicetree/bindings/media/i2c/hm5065.yaml new file mode 100644 @@ -104,5 +105,5 @@ index 000000000000..df7a4f514b3f + }; +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/iio-magnetometer-add-a-driver-for-Voltafield-AF8133J-magnetomet.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/iio-magnetometer-add-a-driver-for-Voltafield-AF8133J-magnetomet.patch index b2de628e6707..cf3eeca7d435 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/iio-magnetometer-add-a-driver-for-Voltafield-AF8133J-magnetomet.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/iio-magnetometer-add-a-driver-for-Voltafield-AF8133J-magnetomet.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 8759aa2c91fd23727c88fce7e31cbb31e524032d Mon Sep 17 00:00:00 2001 From: Icenowy Zheng Date: Thu, 18 Mar 2021 20:19:25 +0800 Subject: iio: magnetometer: add a driver for Voltafield AF8133J magnetometer @@ -13,8 +13,9 @@ Signed-off-by: Shoji Keita --- drivers/iio/magnetometer/Kconfig | 12 + drivers/iio/magnetometer/Makefile | 1 + - drivers/iio/magnetometer/af8133j.c | 351 ++++++++++ + drivers/iio/magnetometer/af8133j.c | 351 +++++++++++++++++++++++++++++ 3 files changed, 364 insertions(+) + create mode 100644 drivers/iio/magnetometer/af8133j.c diff --git a/drivers/iio/magnetometer/Kconfig b/drivers/iio/magnetometer/Kconfig index 38532d840f2a..cd2917d71904 100644 @@ -409,5 +410,5 @@ index 000000000000..f71b413ca3c9 +MODULE_DESCRIPTION("Voltafield AF8133J magnetic sensor driver"); +MODULE_LICENSE("GPL v2"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/input-goodix-Add-option-to-power-off-the-controller-during-susp.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/input-goodix-Add-option-to-power-off-the-controller-during-susp.patch index 6b72063054ee..cb7aa4ca11ee 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/input-goodix-Add-option-to-power-off-the-controller-during-susp.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/input-goodix-Add-option-to-power-off-the-controller-during-susp.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 97ced9009b21e6989dbe7acf33846435e190048c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Sun, 25 Apr 2021 03:16:42 +0200 Subject: input: goodix: Add option to power off the controller during suspend @@ -11,15 +11,15 @@ Let's power off the controller during system sleep instead. Signed-off-by: Ondrej Jirman --- - drivers/input/touchscreen/goodix.c | 37 ++++++++++ + drivers/input/touchscreen/goodix.c | 37 ++++++++++++++++++++++++++++++ drivers/input/touchscreen/goodix.h | 1 + 2 files changed, 38 insertions(+) diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c -index 1b5542fe7709..e0221a5449f3 100644 +index a62ed54a1977..3934f6422b3e 100644 --- a/drivers/input/touchscreen/goodix.c +++ b/drivers/input/touchscreen/goodix.c -@@ -1308,6 +1308,7 @@ static void goodix_disable_regulators(void *arg) +@@ -1309,6 +1309,7 @@ static void goodix_disable_regulators(void *arg) static int goodix_ts_probe(struct i2c_client *client) { @@ -27,7 +27,7 @@ index 1b5542fe7709..e0221a5449f3 100644 struct goodix_ts_data *ts; const char *cfg_name; int error; -@@ -1327,6 +1328,7 @@ static int goodix_ts_probe(struct i2c_client *client) +@@ -1328,6 +1329,7 @@ static int goodix_ts_probe(struct i2c_client *client) i2c_set_clientdata(client, ts); init_completion(&ts->firmware_loading_complete); ts->contact_size = GOODIX_CONTACT_SIZE; @@ -35,7 +35,7 @@ index 1b5542fe7709..e0221a5449f3 100644 error = goodix_get_gpio_config(ts); if (error) -@@ -1436,6 +1438,15 @@ static int goodix_suspend(struct device *dev) +@@ -1437,6 +1439,15 @@ static int goodix_suspend(struct device *dev) if (ts->load_cfg_from_disk) wait_for_completion(&ts->firmware_loading_complete); @@ -51,7 +51,7 @@ index 1b5542fe7709..e0221a5449f3 100644 /* We need gpio pins to suspend/resume */ if (ts->irq_pin_access_method == IRQ_PIN_ACCESS_NONE) { disable_irq(client->irq); -@@ -1481,6 +1492,32 @@ static int goodix_resume(struct device *dev) +@@ -1482,6 +1493,32 @@ static int goodix_resume(struct device *dev) u8 config_ver; int error; @@ -97,5 +97,5 @@ index 7c44aa110ee6..db9f03149b11 100644 int goodix_i2c_read(struct i2c_client *client, u16 reg, u8 *buf, int len); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/input-goodix-Don-t-disable-regulators-during-suspend.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/input-goodix-Don-t-disable-regulators-during-suspend.patch deleted file mode 100644 index c4f5ce7b90af..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/input-goodix-Don-t-disable-regulators-during-suspend.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 22e1a416bcc65611a35763efc166d881fd5389c7 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= -Date: Sat, 1 May 2021 01:28:07 +0200 -Subject: [PATCH 04/35] input: goodix: Don't disable regulators during suspend - -It does no harm to disable them, but on Pinephone we have other -peripherals attached to the same power supplies, whose drivers -will not reference the regulator, so powering down the regulators -from Goodix driver will break those other devices. - -Until those drivers gain the regulator support, don't disable -the regulators in Goodix driver. - -Signed-off-by: Ondrej Jirman ---- - drivers/input/touchscreen/goodix.c | 14 -------------- - 1 file changed, 14 deletions(-) - -diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c -index d4b619ebe6ad..d5d8cf7d95b1 100644 ---- a/drivers/input/touchscreen/goodix.c -+++ b/drivers/input/touchscreen/goodix.c -@@ -1423,8 +1423,6 @@ static int goodix_suspend(struct device *dev) - goodix_free_irq(ts); - goodix_irq_direction_output(ts, 0); - gpiod_direction_output(ts->gpiod_rst, 0); -- regulator_disable(ts->avdd28); -- regulator_disable(ts->vddio); - return 0; - } - -@@ -1474,18 +1472,6 @@ static int goodix_resume(struct device *dev) - int error; - - if (ts->poweroff_in_suspend) { -- error = regulator_enable(ts->avdd28); -- if (error) { -- dev_err(dev, "Regulator avdd28 enable failed.\n"); -- return error; -- } -- -- error = regulator_enable(ts->vddio); -- if (error) { -- dev_err(dev, "Regulator vddio enable failed.\n"); -- return error; -- } -- - error = goodix_reset(ts); - if (error) { - dev_err(dev, "Controller reset failed.\n"); --- -2.34.1 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/input-touch-goodix-Try-to-keep-regulator-enable-disable-balance.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/input-touch-goodix-Try-to-keep-regulator-enable-disable-balance.patch index 95c7fb0d8c0c..f7e467a270f6 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/input-touch-goodix-Try-to-keep-regulator-enable-disable-balance.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/input-touch-goodix-Try-to-keep-regulator-enable-disable-balance.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From c9ff28982c46270c969e78d0d8a337f624b2ea9a Mon Sep 17 00:00:00 2001 From: Ondrej Jirman Date: Sun, 21 May 2023 01:26:59 +0200 Subject: input: touch: goodix: Try to keep regulator enable/disable balanced @@ -12,10 +12,10 @@ Signed-off-by: Ondrej Jirman 1 file changed, 1 insertion(+) diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c -index e0221a5449f3..3c7d45ee96da 100644 +index 3934f6422b3e..600b841a0a39 100644 --- a/drivers/input/touchscreen/goodix.c +++ b/drivers/input/touchscreen/goodix.c -@@ -1501,6 +1501,7 @@ static int goodix_resume(struct device *dev) +@@ -1502,6 +1502,7 @@ static int goodix_resume(struct device *dev) error = regulator_enable(ts->vddio); if (error) { @@ -24,5 +24,5 @@ index e0221a5449f3..3c7d45ee96da 100644 return error; } -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/input-touchscreen-goodix-Add-config-debugfs-file.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/input-touchscreen-goodix-Add-config-debugfs-file.patch index 859db18b1d19..f0149a068e3e 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/input-touchscreen-goodix-Add-config-debugfs-file.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/input-touchscreen-goodix-Add-config-debugfs-file.patch @@ -1,16 +1,16 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 63ce932b5b7c822e14f02262823211b39695289f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Mon, 22 Jun 2020 17:17:09 +0200 Subject: input: touchscreen: goodix: Add config debugfs file Signed-off-by: Ondrej Jirman --- - drivers/input/touchscreen/goodix.c | 17 ++++++++++ + drivers/input/touchscreen/goodix.c | 17 +++++++++++++++++ drivers/input/touchscreen/goodix.h | 1 + 2 files changed, 18 insertions(+) diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c -index af32fbe57b63..1b5542fe7709 100644 +index b068ff8afbc9..a62ed54a1977 100644 --- a/drivers/input/touchscreen/goodix.c +++ b/drivers/input/touchscreen/goodix.c @@ -22,6 +22,7 @@ @@ -21,7 +21,7 @@ index af32fbe57b63..1b5542fe7709 100644 #include #include "goodix.h" -@@ -1027,6 +1028,16 @@ static int goodix_get_gpio_config(struct goodix_ts_data *ts) +@@ -1028,6 +1029,16 @@ static int goodix_get_gpio_config(struct goodix_ts_data *ts) return 0; } @@ -38,7 +38,7 @@ index af32fbe57b63..1b5542fe7709 100644 /** * goodix_read_config - Read the embedded configuration of the panel * -@@ -1065,6 +1076,10 @@ static void goodix_read_config(struct goodix_ts_data *ts) +@@ -1066,6 +1077,10 @@ static void goodix_read_config(struct goodix_ts_data *ts) } ts->chip->calc_config_checksum(ts); @@ -49,7 +49,7 @@ index af32fbe57b63..1b5542fe7709 100644 } /** -@@ -1408,6 +1423,8 @@ static void goodix_ts_remove(struct i2c_client *client) +@@ -1409,6 +1424,8 @@ static void goodix_ts_remove(struct i2c_client *client) if (ts->load_cfg_from_disk) wait_for_completion(&ts->firmware_loading_complete); @@ -71,5 +71,5 @@ index 87797cc88b32..7c44aa110ee6 100644 int goodix_i2c_read(struct i2c_client *client, u16 reg, u8 *buf, int len); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/leds-axp20x-Support-charger-LED-on-AXP20x-like-PMICs.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/leds-axp20x-Support-charger-LED-on-AXP20x-like-PMICs.patch index ea6c60c34160..0af0bcc486a3 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/leds-axp20x-Support-charger-LED-on-AXP20x-like-PMICs.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/leds-axp20x-Support-charger-LED-on-AXP20x-like-PMICs.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 745f2f399073b25636afe94187904406931c279b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Thu, 4 Feb 2021 00:55:20 +0100 Subject: leds: axp20x: Support charger LED on AXP20x like PMICs @@ -15,17 +15,18 @@ that without changes. Signed-off-by: Ondrej Jirman --- - drivers/leds/Kconfig | 15 + + drivers/leds/Kconfig | 15 +++ drivers/leds/Makefile | 1 + - drivers/leds/leds-axp20x.c | 255 ++++++++++ + drivers/leds/leds-axp20x.c | 255 +++++++++++++++++++++++++++++++++++++ drivers/mfd/axp20x.c | 3 + 4 files changed, 274 insertions(+) + create mode 100644 drivers/leds/leds-axp20x.c diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig -index b92208eccdea..4a7a883195d8 100644 +index 3132439f99e0..ac64da6991c9 100644 --- a/drivers/leds/Kconfig +++ b/drivers/leds/Kconfig -@@ -884,6 +884,14 @@ config LEDS_IP30 +@@ -885,6 +885,14 @@ config LEDS_IP30 To compile this driver as a module, choose M here: the module will be called leds-ip30. @@ -40,7 +41,7 @@ index b92208eccdea..4a7a883195d8 100644 config LEDS_ACER_A500 tristate "Power button LED support for Acer Iconia Tab A500" depends on LEDS_CLASS && MFD_ACER_A500_EC -@@ -891,6 +899,13 @@ config LEDS_ACER_A500 +@@ -892,6 +900,13 @@ config LEDS_ACER_A500 This option enables support for the Power Button LED of Acer Iconia Tab A500. @@ -342,5 +343,5 @@ index 6ac8aec24788..e1f3489c1292 100644 }; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/media-gc2145-Galaxycore-camera-module-driver.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/media-gc2145-Galaxycore-camera-module-driver.patch index e55f025c28ac..ad97d942131e 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/media-gc2145-Galaxycore-camera-module-driver.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/media-gc2145-Galaxycore-camera-module-driver.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 5d33ce20965585d65c3fff56dcccb6f11b8c8b54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Tue, 23 Jun 2020 19:51:18 +0200 Subject: media: gc2145: Galaxycore camera module driver @@ -9,14 +9,15 @@ Signed-off-by: Ondrej Jirman --- drivers/media/i2c/Kconfig | 10 + drivers/media/i2c/Makefile | 1 + - drivers/media/i2c/gc2145.c | 2244 ++++++++++ + drivers/media/i2c/gc2145.c | 2244 ++++++++++++++++++++++++++++++++++++ 3 files changed, 2255 insertions(+) + create mode 100644 drivers/media/i2c/gc2145.c diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig -index 26c688e630cb..6aa01d78e335 100644 +index da0b84a29080..79ca5b45a496 100644 --- a/drivers/media/i2c/Kconfig +++ b/drivers/media/i2c/Kconfig -@@ -625,6 +625,16 @@ config VIDEO_HM5065 +@@ -626,6 +626,16 @@ config VIDEO_HM5065 This is a V4L2 sensor-level driver for Himax HM5065 5 Mpixel camera. @@ -2293,5 +2294,5 @@ index 000000000000..3269a88cfd1b +MODULE_DESCRIPTION("GC2145 Camera Subdev Driver"); +MODULE_LICENSE("GPL"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/media-hm5065-Add-subdev-driver-for-Himax-HM5065-camera-sensor.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/media-hm5065-Add-subdev-driver-for-Himax-HM5065-camera-sensor.patch index 90c7a1dbdf46..acd1b06b5854 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/media-hm5065-Add-subdev-driver-for-Himax-HM5065-camera-sensor.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/media-hm5065-Add-subdev-driver-for-Himax-HM5065-camera-sensor.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From f98cb240a443710d5722ad551c4a0936eae2736a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Sat, 30 Sep 2017 02:39:48 +0200 Subject: media: hm5065: Add subdev driver for Himax HM5065 camera sensor @@ -16,14 +16,15 @@ Signed-off-by: Ondrej Jirman --- drivers/media/i2c/Kconfig | 10 + drivers/media/i2c/Makefile | 1 + - drivers/media/i2c/hm5065.c | 2205 ++++++++++ + drivers/media/i2c/hm5065.c | 2205 ++++++++++++++++++++++++++++++++++++ 3 files changed, 2216 insertions(+) + create mode 100644 drivers/media/i2c/hm5065.c diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig -index 74ff833ff48c..26c688e630cb 100644 +index 53b443be5a59..da0b84a29080 100644 --- a/drivers/media/i2c/Kconfig +++ b/drivers/media/i2c/Kconfig -@@ -615,6 +615,16 @@ config VIDEO_ST_VGXY61 +@@ -616,6 +616,16 @@ config VIDEO_ST_VGXY61 source "drivers/media/i2c/ccs/Kconfig" source "drivers/media/i2c/et8ek8/Kconfig" @@ -2261,5 +2262,5 @@ index 000000000000..a2ed05b12411 +MODULE_DESCRIPTION("HM5065 Camera Subdev Driver"); +MODULE_LICENSE("GPL"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Add-read-only-property-for-vblank.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Add-read-only-property-for-vblank.patch index 062abcc94ce9..eee0c0ff7465 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Add-read-only-property-for-vblank.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Add-read-only-property-for-vblank.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 0093885ca62a63485702f585cba7ad5af9fc1dd2 Mon Sep 17 00:00:00 2001 From: Adam Pigg Date: Thu, 29 Dec 2022 11:10:41 +0000 Subject: media: ov5640: Add read-only property for vblank @@ -8,10 +8,10 @@ Subject: media: ov5640: Add read-only property for vblank 1 file changed, 1 insertion(+) diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c -index e9421590efd6..6b0d5acff0d1 100644 +index 1f790f26d637..2cfc44e8b18d 100644 --- a/drivers/media/i2c/ov5640.c +++ b/drivers/media/i2c/ov5640.c -@@ -3837,6 +3837,7 @@ static int ov5640_init_controls(struct ov5640_dev *sensor) +@@ -3846,6 +3846,7 @@ static int ov5640_init_controls(struct ov5640_dev *sensor) ctrls->pixel_rate->flags |= V4L2_CTRL_FLAG_READ_ONLY; ctrls->link_freq->flags |= V4L2_CTRL_FLAG_READ_ONLY; ctrls->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY; @@ -20,5 +20,5 @@ index e9421590efd6..6b0d5acff0d1 100644 ctrls->exposure->flags |= V4L2_CTRL_FLAG_VOLATILE; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Don-t-powerup-the-sensor-during-driver-probe.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Don-t-powerup-the-sensor-during-driver-probe.patch index 4d896c2ee2e2..87810cd81240 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Don-t-powerup-the-sensor-during-driver-probe.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Don-t-powerup-the-sensor-during-driver-probe.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 40e2bb34734f1ba9e5fbec3867e2aef7f6844e01 Mon Sep 17 00:00:00 2001 From: Ondrej Jirman Date: Mon, 6 Mar 2023 01:12:27 +0100 Subject: media: ov5640: Don't powerup the sensor during driver probe @@ -9,11 +9,11 @@ pipeline via s_power callback, later on. Signed-off-by: Ondrej Jirman --- - drivers/media/i2c/ov5640.c | 56 +++------- - 1 file changed, 13 insertions(+), 43 deletions(-) + drivers/media/i2c/ov5640.c | 55 +++++++++----------------------------- + 1 file changed, 12 insertions(+), 43 deletions(-) diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c -index 44643687f467..2b0878468394 100644 +index efe4267d56ba..c655b3f07212 100644 --- a/drivers/media/i2c/ov5640.c +++ b/drivers/media/i2c/ov5640.c @@ -2496,6 +2496,7 @@ static void ov5640_powerup_sequence(struct ov5640_dev *sensor) @@ -115,5 +115,5 @@ index 44643687f467..2b0878468394 100644 if (!pm_runtime_status_suspended(dev)) ov5640_sensor_suspend(dev); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Fix-focus-commands-blocking-until-complete.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Fix-focus-commands-blocking-until-complete.patch index c45b61004e76..ac68ee82e237 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Fix-focus-commands-blocking-until-complete.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Fix-focus-commands-blocking-until-complete.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From b98e106e465ef48572c1ece5b558c737605e317c Mon Sep 17 00:00:00 2001 From: Benjamin Schaaf Date: Mon, 22 Nov 2021 23:38:26 +1100 Subject: media: ov5640: Fix focus commands blocking until complete @@ -6,11 +6,11 @@ Subject: media: ov5640: Fix focus commands blocking until complete Previously setting the focus controls would block until the sensor completed the focus routine. --- - drivers/media/i2c/ov5640.c | 67 +++------- + drivers/media/i2c/ov5640.c | 67 ++++++++++---------------------------- 1 file changed, 18 insertions(+), 49 deletions(-) diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c -index 46132af43802..e9421590efd6 100644 +index 15eb59d6eab6..1f790f26d637 100644 --- a/drivers/media/i2c/ov5640.c +++ b/drivers/media/i2c/ov5640.c @@ -2642,6 +2642,19 @@ static int ov5640_copy_fw_to_device(struct ov5640_dev *sensor, @@ -45,7 +45,7 @@ index 46132af43802..e9421590efd6 100644 if (ret) return ret; return ret; -@@ -3295,35 +3313,6 @@ static int ov5640_set_framefmt(struct ov5640_dev *sensor, +@@ -3304,35 +3322,6 @@ static int ov5640_set_framefmt(struct ov5640_dev *sensor, is_jpeg ? (BIT(5) | BIT(3)) : 0); } @@ -81,7 +81,7 @@ index 46132af43802..e9421590efd6 100644 /* * Sensor Controls. */ -@@ -3459,26 +3448,6 @@ static int ov5640_set_ctrl_focus(struct ov5640_dev *sensor, int command) +@@ -3468,26 +3457,6 @@ static int ov5640_set_ctrl_focus(struct ov5640_dev *sensor, int command) return 0; } @@ -109,5 +109,5 @@ index 46132af43802..e9421590efd6 100644 } -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Implement-autofocus.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Implement-autofocus.patch index d369ffe508d9..b993dde3db43 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Implement-autofocus.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Implement-autofocus.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 5b3b9f22388f5334e8dac03a76fa0d4a5a67e426 Mon Sep 17 00:00:00 2001 From: Ondrej Jirman Date: Sun, 7 Aug 2022 15:17:09 +0200 Subject: media: ov5640: Implement autofocus @@ -11,11 +11,11 @@ this at least makes it possible to focus on the center of the sensor. Signed-off-by: Martijn Braam --- - drivers/media/i2c/ov5640.c | 279 ++++++++++ + drivers/media/i2c/ov5640.c | 279 +++++++++++++++++++++++++++++++++++++ 1 file changed, 279 insertions(+) diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c -index 4ccd92b728d8..8ebf0e8cb552 100644 +index c9075f52661b..30018f02ba7b 100644 --- a/drivers/media/i2c/ov5640.c +++ b/drivers/media/i2c/ov5640.c @@ -9,6 +9,7 @@ @@ -218,7 +218,7 @@ index 4ccd92b728d8..8ebf0e8cb552 100644 ret = ov5640_init_slave_id(sensor); if (ret) goto power_off; -@@ -3101,6 +3257,35 @@ static int ov5640_set_framefmt(struct ov5640_dev *sensor, +@@ -3110,6 +3266,35 @@ static int ov5640_set_framefmt(struct ov5640_dev *sensor, is_jpeg ? (BIT(5) | BIT(3)) : 0); } @@ -254,7 +254,7 @@ index 4ccd92b728d8..8ebf0e8cb552 100644 /* * Sensor Controls. */ -@@ -3217,6 +3402,41 @@ static int ov5640_set_ctrl_exposure(struct ov5640_dev *sensor, +@@ -3226,6 +3411,41 @@ static int ov5640_set_ctrl_exposure(struct ov5640_dev *sensor, return ret; } @@ -296,7 +296,7 @@ index 4ccd92b728d8..8ebf0e8cb552 100644 static int ov5640_set_ctrl_gain(struct ov5640_dev *sensor, bool auto_gain) { struct ov5640_ctrls *ctrls = &sensor->ctrls; -@@ -3332,6 +3552,32 @@ static int ov5640_set_ctrl_vblank(struct ov5640_dev *sensor, int value) +@@ -3341,6 +3561,32 @@ static int ov5640_set_ctrl_vblank(struct ov5640_dev *sensor, int value) mode->height + value); } @@ -329,7 +329,7 @@ index 4ccd92b728d8..8ebf0e8cb552 100644 static int ov5640_g_volatile_ctrl(struct v4l2_ctrl *ctrl) { struct v4l2_subdev *sd = ctrl_to_sd(ctrl); -@@ -3356,6 +3602,12 @@ static int ov5640_g_volatile_ctrl(struct v4l2_ctrl *ctrl) +@@ -3365,6 +3611,12 @@ static int ov5640_g_volatile_ctrl(struct v4l2_ctrl *ctrl) return val; sensor->ctrls.exposure->val = val; break; @@ -342,7 +342,7 @@ index 4ccd92b728d8..8ebf0e8cb552 100644 } pm_runtime_mark_last_busy(&sensor->i2c_client->dev); -@@ -3405,6 +3657,18 @@ static int ov5640_s_ctrl(struct v4l2_ctrl *ctrl) +@@ -3414,6 +3666,18 @@ static int ov5640_s_ctrl(struct v4l2_ctrl *ctrl) case V4L2_CID_AUTO_WHITE_BALANCE: ret = ov5640_set_ctrl_white_balance(sensor, ctrl->val); break; @@ -361,7 +361,7 @@ index 4ccd92b728d8..8ebf0e8cb552 100644 case V4L2_CID_HUE: ret = ov5640_set_ctrl_hue(sensor, ctrl->val); break; -@@ -3505,6 +3769,20 @@ static int ov5640_init_controls(struct ov5640_dev *sensor) +@@ -3514,6 +3778,20 @@ static int ov5640_init_controls(struct ov5640_dev *sensor) ctrls->gain = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_ANALOGUE_GAIN, 0, 1023, 1, 0); @@ -382,7 +382,7 @@ index 4ccd92b728d8..8ebf0e8cb552 100644 ctrls->saturation = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_SATURATION, 0, 255, 1, 64); ctrls->hue = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_HUE, -@@ -3551,6 +3829,7 @@ static int ov5640_init_controls(struct ov5640_dev *sensor) +@@ -3560,6 +3838,7 @@ static int ov5640_init_controls(struct ov5640_dev *sensor) v4l2_ctrl_auto_cluster(3, &ctrls->auto_wb, 0, false); v4l2_ctrl_auto_cluster(2, &ctrls->auto_gain, 0, true); v4l2_ctrl_auto_cluster(2, &ctrls->auto_exp, 1, true); @@ -391,5 +391,5 @@ index 4ccd92b728d8..8ebf0e8cb552 100644 sensor->sd.ctrl_handler = hdl; return 0; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Improve-error-reporting.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Improve-error-reporting.patch index 9615515ced28..92c2b12f9039 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Improve-error-reporting.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Improve-error-reporting.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From e142aebc5710f65cb14d284f82ce7e92c44e8b31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Fri, 22 Oct 2021 19:52:49 +0200 Subject: media: ov5640: Improve error reporting @@ -11,10 +11,10 @@ Signed-off-by: Ondrej Jirman 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c -index b624153dc057..4ccd92b728d8 100644 +index 4fa904708e19..c9075f52661b 100644 --- a/drivers/media/i2c/ov5640.c +++ b/drivers/media/i2c/ov5640.c -@@ -3911,8 +3911,10 @@ static int ov5640_probe(struct i2c_client *client) +@@ -3920,8 +3920,10 @@ static int ov5640_probe(struct i2c_client *client) return ret; ret = ov5640_get_regulators(sensor); @@ -26,7 +26,7 @@ index b624153dc057..4ccd92b728d8 100644 mutex_init(&sensor->lock); -@@ -3921,8 +3923,10 @@ static int ov5640_probe(struct i2c_client *client) +@@ -3930,8 +3932,10 @@ static int ov5640_probe(struct i2c_client *client) goto entity_cleanup; ret = v4l2_async_register_subdev_sensor(&sensor->sd); @@ -39,5 +39,5 @@ index b624153dc057..4ccd92b728d8 100644 pm_runtime_enable(dev); pm_runtime_set_autosuspend_delay(dev, 1000); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Improve-firmware-load-time.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Improve-firmware-load-time.patch index c5a7703e9727..ceb6cfdb5875 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Improve-firmware-load-time.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-Improve-firmware-load-time.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From c41026d7c55935921faedb6f409747a4b55fccca Mon Sep 17 00:00:00 2001 From: Benjamin Schaaf Date: Mon, 22 Nov 2021 23:38:26 +1100 Subject: media: ov5640: Improve firmware load time @@ -9,11 +9,11 @@ loading it, so there's no need for a long timeout or retry. The firmware can also not be loaded when the sensor isn't powered on, so don't bother trying. --- - drivers/media/i2c/ov5640.c | 97 +++++++--- + drivers/media/i2c/ov5640.c | 97 ++++++++++++++++++++++++++++---------- 1 file changed, 71 insertions(+), 26 deletions(-) diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c -index 8ebf0e8cb552..46132af43802 100644 +index 30018f02ba7b..15eb59d6eab6 100644 --- a/drivers/media/i2c/ov5640.c +++ b/drivers/media/i2c/ov5640.c @@ -1232,6 +1232,8 @@ static int ov5640_write_reg(struct ov5640_dev *sensor, u16 reg, u8 val) @@ -154,7 +154,7 @@ index 8ebf0e8cb552..46132af43802 100644 return ret; } -@@ -3407,9 +3445,16 @@ static int ov5640_set_ctrl_focus(struct ov5640_dev *sensor, int command) +@@ -3416,9 +3454,16 @@ static int ov5640_set_ctrl_focus(struct ov5640_dev *sensor, int command) struct i2c_client *client = sensor->i2c_client; int ret; @@ -173,5 +173,5 @@ index 8ebf0e8cb552..46132af43802 100644 return 0; } -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-set-default-ae-target-lower.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-set-default-ae-target-lower.patch index a31d88136670..350a684ec1d4 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-set-default-ae-target-lower.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-set-default-ae-target-lower.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 3e1636c264a81b889b7b4139adee7b4832b4b412 Mon Sep 17 00:00:00 2001 From: Martijn Braam Date: Wed, 7 Oct 2020 17:33:43 +0200 Subject: media: ov5640: set default ae target lower @@ -10,10 +10,10 @@ the exposure target one stop lower. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c -index 2b0878468394..b624153dc057 100644 +index c655b3f07212..4fa904708e19 100644 --- a/drivers/media/i2c/ov5640.c +++ b/drivers/media/i2c/ov5640.c -@@ -3847,7 +3847,7 @@ static int ov5640_probe(struct i2c_client *client) +@@ -3856,7 +3856,7 @@ static int ov5640_probe(struct i2c_client *client) sensor->current_link_freq = ov5640_csi2_link_freqs[OV5640_DEFAULT_LINK_FREQ]; @@ -23,5 +23,5 @@ index 2b0878468394..b624153dc057 100644 endpoint = fwnode_graph_get_next_endpoint(dev_fwnode(&client->dev), NULL); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-use-pm_runtime_force_suspend-resume-for-system-sus.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-use-pm_runtime_force_suspend-resume-for-system-sus.patch index 8421c0c67e3c..2bd0d9ceeb3b 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-use-pm_runtime_force_suspend-resume-for-system-sus.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/media-ov5640-use-pm_runtime_force_suspend-resume-for-system-sus.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From fcc65a490a3b0552ee70f3b67e401af6ab308edb Mon Sep 17 00:00:00 2001 From: Andrey Skvortsov Date: Mon, 14 Aug 2023 13:25:07 +0300 Subject: media: ov5640: use pm_runtime_force_suspend/resume for system suspend @@ -14,10 +14,10 @@ Signed-off-by: Andrey Skvortsov 1 file changed, 2 insertions(+) diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c -index 6b0d5acff0d1..7d3adac92071 100644 +index 2cfc44e8b18d..a26e2167626b 100644 --- a/drivers/media/i2c/ov5640.c +++ b/drivers/media/i2c/ov5640.c -@@ -4256,6 +4256,8 @@ static void ov5640_remove(struct i2c_client *client) +@@ -4265,6 +4265,8 @@ static void ov5640_remove(struct i2c_client *client) } static const struct dev_pm_ops ov5640_pm_ops = { @@ -27,5 +27,5 @@ index 6b0d5acff0d1..7d3adac92071 100644 }; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/misc-modem-power-Power-manager-for-modems.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/misc-modem-power-Power-manager-for-modems.patch index 557beb158ec9..d1eb1d7f1f20 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/misc-modem-power-Power-manager-for-modems.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/misc-modem-power-Power-manager-for-modems.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 7f50d07f3b55b8b4761cb32ab7970fb4de045676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Sun, 12 Nov 2017 02:10:15 +0100 Subject: misc: modem-power: Power manager for modems @@ -16,8 +16,9 @@ Signed-off-by: Ondrej Jirman --- drivers/misc/Kconfig | 7 + drivers/misc/Makefile | 1 + - drivers/misc/modem-power.c | 1992 ++++++++++ + drivers/misc/modem-power.c | 1992 ++++++++++++++++++++++++++++++++++++ 3 files changed, 2000 insertions(+) + create mode 100644 drivers/misc/modem-power.c diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig index cadd4a820c03..b9d019f69b90 100644 @@ -2045,5 +2046,5 @@ index 000000000000..5aa1c20f9424 + +// }}} -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/misc-ppkb-manager-Pinephone-Keyboard-power-manager.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/misc-ppkb-manager-Pinephone-Keyboard-power-manager.patch index 194c81dead2f..5dd1b5d2b9dd 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/misc-ppkb-manager-Pinephone-Keyboard-power-manager.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/misc-ppkb-manager-Pinephone-Keyboard-power-manager.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From f6833b3f85611f05f0e664b9526f9ddb8d7679ec Mon Sep 17 00:00:00 2001 From: Ondrej Jirman Date: Fri, 1 Apr 2022 22:00:11 +0200 Subject: misc: ppkb-manager: Pinephone Keyboard power manager @@ -10,8 +10,9 @@ Signed-off-by: Ondrej Jirman --- drivers/misc/Kconfig | 7 + drivers/misc/Makefile | 1 + - drivers/misc/ppkb-manager.c | 945 ++++++++++ + drivers/misc/ppkb-manager.c | 945 ++++++++++++++++++++++++++++++++++++ 3 files changed, 953 insertions(+) + create mode 100644 drivers/misc/ppkb-manager.c diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig index b9d019f69b90..57201f491f8d 100644 @@ -995,5 +996,5 @@ index 000000000000..528b3472675e +MODULE_AUTHOR("Ondrej Jirman "); +MODULE_LICENSE("GPL v2"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/mmc-add-delay-after-power-class-selection.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/mmc-add-delay-after-power-class-selection.patch index ef8738d370e9..65f539da4f56 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/mmc-add-delay-after-power-class-selection.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/mmc-add-delay-after-power-class-selection.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From efe739bcd4a818dc010446f78ce691960919ee50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Fri, 16 Mar 2018 20:31:55 +0100 Subject: mmc: add delay after power class selection @@ -12,10 +12,10 @@ Signed-off-by: Ondrej Jirman 1 file changed, 4 insertions(+) diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c -index 4a4bab9aa726..2e678af9f907 100644 +index 7e39017e440f..30dd2e08eaa2 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c -@@ -1833,6 +1833,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, +@@ -1840,6 +1840,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, */ mmc_select_powerclass(card); @@ -24,7 +24,7 @@ index 4a4bab9aa726..2e678af9f907 100644 /* * Enable HPI feature (if supported) */ -@@ -1851,6 +1853,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, +@@ -1858,6 +1860,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, } } @@ -34,5 +34,5 @@ index 4a4bab9aa726..2e678af9f907 100644 * If cache size is higher than 0, this indicates the existence of cache * and it can be turned on. Note that some eMMCs from Micron has been -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/net-stmmac-sun8i-Add-support-for-enabling-a-regulator-for-PHY-I.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/net-stmmac-sun8i-Add-support-for-enabling-a-regulator-for-PHY-I.patch index 0ea9d7c9abb0..ad5c91fc6330 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/net-stmmac-sun8i-Add-support-for-enabling-a-regulator-for-PHY-I.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/net-stmmac-sun8i-Add-support-for-enabling-a-regulator-for-PHY-I.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 4217410c93a6029081adacc541c971ea20c60cea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Tue, 20 Aug 2019 14:31:38 +0200 Subject: net: stmmac: sun8i: Add support for enabling a regulator for PHY I/O @@ -12,11 +12,11 @@ driver. Signed-off-by: Ondrej Jirman --- - drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 20 +++++++++- + .../net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -index 421252289f66..04a025dfd2de 100644 +index a56afb965e3f..b67fe7c62bb5 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c @@ -61,6 +61,8 @@ struct emac_variant { @@ -36,7 +36,7 @@ index 421252289f66..04a025dfd2de 100644 struct reset_control *rst_ephy; const struct emac_variant *variant; struct regmap_field *regmap_field; -@@ -589,10 +592,16 @@ static int sun8i_dwmac_init(struct platform_device *pdev, void *priv) +@@ -588,10 +591,16 @@ static int sun8i_dwmac_init(struct platform_device *pdev, void *priv) struct sunxi_priv_data *gmac = priv; int ret; @@ -54,7 +54,7 @@ index 421252289f66..04a025dfd2de 100644 } if (gmac->use_internal_phy) { -@@ -605,6 +614,8 @@ static int sun8i_dwmac_init(struct platform_device *pdev, void *priv) +@@ -604,6 +613,8 @@ static int sun8i_dwmac_init(struct platform_device *pdev, void *priv) err_disable_regulator: regulator_disable(gmac->regulator_phy); @@ -63,7 +63,7 @@ index 421252289f66..04a025dfd2de 100644 return ret; } -@@ -1052,6 +1063,7 @@ static void sun8i_dwmac_exit(struct platform_device *pdev, void *priv) +@@ -1051,6 +1062,7 @@ static void sun8i_dwmac_exit(struct platform_device *pdev, void *priv) sun8i_dwmac_unpower_internal_phy(gmac); regulator_disable(gmac->regulator_phy); @@ -71,7 +71,7 @@ index 421252289f66..04a025dfd2de 100644 } static void sun8i_dwmac_set_mac_loopback(void __iomem *ioaddr, bool enable) -@@ -1178,6 +1190,12 @@ static int sun8i_dwmac_probe(struct platform_device *pdev) +@@ -1179,6 +1191,12 @@ static int sun8i_dwmac_probe(struct platform_device *pdev) return dev_err_probe(dev, PTR_ERR(gmac->regulator_phy), "Failed to get PHY regulator\n"); @@ -85,5 +85,5 @@ index 421252289f66..04a025dfd2de 100644 * CCU address range (on the R40), or the system control address * range (on most other sun8i and later SoCs). -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/net-stmmac-sun8i-Rename-PHY-regulator-variable-to-regulator_phy.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/net-stmmac-sun8i-Rename-PHY-regulator-variable-to-regulator_phy.patch index ff114b7b5656..9f1dfa0ed78b 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/net-stmmac-sun8i-Rename-PHY-regulator-variable-to-regulator_phy.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/net-stmmac-sun8i-Rename-PHY-regulator-variable-to-regulator_phy.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From f74950218b80d365352f767ced132bcc3ef9e3f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Tue, 20 Aug 2019 14:29:29 +0200 Subject: net: stmmac: sun8i: Rename PHY regulator variable to regulator_phy @@ -8,11 +8,11 @@ what the regulator is for. Signed-off-by: Ondrej Jirman --- - drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 18 +++++----- + .../net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -index a52041bf2daa..421252289f66 100644 +index 1ba4bf5eb07d..a56afb965e3f 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c @@ -60,7 +60,7 @@ struct emac_variant { @@ -33,7 +33,7 @@ index a52041bf2daa..421252289f66 100644 struct reset_control *rst_ephy; const struct emac_variant *variant; struct regmap_field *regmap_field; -@@ -589,9 +589,9 @@ static int sun8i_dwmac_init(struct platform_device *pdev, void *priv) +@@ -588,9 +588,9 @@ static int sun8i_dwmac_init(struct platform_device *pdev, void *priv) struct sunxi_priv_data *gmac = priv; int ret; @@ -45,7 +45,7 @@ index a52041bf2daa..421252289f66 100644 return ret; } -@@ -604,7 +604,7 @@ static int sun8i_dwmac_init(struct platform_device *pdev, void *priv) +@@ -603,7 +603,7 @@ static int sun8i_dwmac_init(struct platform_device *pdev, void *priv) return 0; err_disable_regulator: @@ -54,7 +54,7 @@ index a52041bf2daa..421252289f66 100644 return ret; } -@@ -1051,7 +1051,7 @@ static void sun8i_dwmac_exit(struct platform_device *pdev, void *priv) +@@ -1050,7 +1050,7 @@ static void sun8i_dwmac_exit(struct platform_device *pdev, void *priv) if (gmac->variant->soc_has_internal_phy) sun8i_dwmac_unpower_internal_phy(gmac); @@ -63,7 +63,7 @@ index a52041bf2daa..421252289f66 100644 } static void sun8i_dwmac_set_mac_loopback(void __iomem *ioaddr, bool enable) -@@ -1173,9 +1173,9 @@ static int sun8i_dwmac_probe(struct platform_device *pdev) +@@ -1174,9 +1174,9 @@ static int sun8i_dwmac_probe(struct platform_device *pdev) } /* Optional regulator for PHY */ @@ -77,5 +77,5 @@ index a52041bf2daa..421252289f66 100644 /* The "GMAC clock control" register might be located in the -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/net-stmmac-sun8i-Use-devm_regulator_get-for-PHY-regulator.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/net-stmmac-sun8i-Use-devm_regulator_get-for-PHY-regulator.patch index 27998313f35d..08ba101c4bae 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/net-stmmac-sun8i-Use-devm_regulator_get-for-PHY-regulator.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/net-stmmac-sun8i-Use-devm_regulator_get-for-PHY-regulator.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From f91fbb08157e349d0da8693364ab652e6d13c5d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Wed, 27 Mar 2019 13:21:06 +0100 Subject: net: stmmac: sun8i: Use devm_regulator_get for PHY regulator @@ -17,14 +17,14 @@ code will be simpler. Signed-off-by: Ondrej Jirman --- - drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 27 ++++------ + .../net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -index 465ff1fd4785..a52041bf2daa 100644 +index 63998d65fef8..1ba4bf5eb07d 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -@@ -589,12 +589,10 @@ static int sun8i_dwmac_init(struct platform_device *pdev, void *priv) +@@ -588,12 +588,10 @@ static int sun8i_dwmac_init(struct platform_device *pdev, void *priv) struct sunxi_priv_data *gmac = priv; int ret; @@ -41,7 +41,7 @@ index 465ff1fd4785..a52041bf2daa 100644 } if (gmac->use_internal_phy) { -@@ -606,8 +604,7 @@ static int sun8i_dwmac_init(struct platform_device *pdev, void *priv) +@@ -605,8 +603,7 @@ static int sun8i_dwmac_init(struct platform_device *pdev, void *priv) return 0; err_disable_regulator: @@ -51,7 +51,7 @@ index 465ff1fd4785..a52041bf2daa 100644 return ret; } -@@ -1054,8 +1051,7 @@ static void sun8i_dwmac_exit(struct platform_device *pdev, void *priv) +@@ -1053,8 +1050,7 @@ static void sun8i_dwmac_exit(struct platform_device *pdev, void *priv) if (gmac->variant->soc_has_internal_phy) sun8i_dwmac_unpower_internal_phy(gmac); @@ -61,7 +61,7 @@ index 465ff1fd4785..a52041bf2daa 100644 } static void sun8i_dwmac_set_mac_loopback(void __iomem *ioaddr, bool enable) -@@ -1177,13 +1173,10 @@ static int sun8i_dwmac_probe(struct platform_device *pdev) +@@ -1178,13 +1174,10 @@ static int sun8i_dwmac_probe(struct platform_device *pdev) } /* Optional regulator for PHY */ @@ -80,5 +80,5 @@ index 465ff1fd4785..a52041bf2daa 100644 /* The "GMAC clock control" register might be located in the * CCU address range (on the R40), or the system control address -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/regulator-Add-simple-driver-for-enabling-a-regulator-from-users.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/regulator-Add-simple-driver-for-enabling-a-regulator-from-users.patch index 0c125ead698c..678a00fcd685 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/regulator-Add-simple-driver-for-enabling-a-regulator-from-users.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/regulator-Add-simple-driver-for-enabling-a-regulator-from-users.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From d6dd78486a79c46e0a2ca2bc3335ef0ae7d530b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Sat, 5 Oct 2019 15:10:11 +0200 Subject: regulator: Add simple driver for enabling a regulator from userspace @@ -8,10 +8,11 @@ tree. Signed-off-by: Ondrej Jirman --- - drivers/regulator/Kconfig | 9 + + drivers/regulator/Kconfig | 9 ++ drivers/regulator/Makefile | 1 + - drivers/regulator/userspace-consumer-of.c | 137 ++++++++++ + drivers/regulator/userspace-consumer-of.c | 137 ++++++++++++++++++++++ 3 files changed, 147 insertions(+) + create mode 100644 drivers/regulator/userspace-consumer-of.c diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig index 965d4f0c18a6..6b94442986f6 100644 @@ -189,5 +190,5 @@ index 000000000000..5b835af17bea +MODULE_DESCRIPTION("Userspace consumer for voltage and current regulators"); +MODULE_LICENSE("GPL"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/regulator-tp65185x-Add-tp65185x-eInk-panel-regulator-driver.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/regulator-tp65185x-Add-tp65185x-eInk-panel-regulator-driver.patch index a2cae7065312..49c8a39d31bb 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/regulator-tp65185x-Add-tp65185x-eInk-panel-regulator-driver.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/regulator-tp65185x-Add-tp65185x-eInk-panel-regulator-driver.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From af619303284612c196072e0340251dbfca7cb95f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Sat, 5 Oct 2019 15:12:51 +0200 Subject: regulator: tp65185x: Add tp65185x eInk panel regulator driver @@ -16,8 +16,9 @@ Signed-off-by: Ondrej Jirman --- drivers/regulator/Kconfig | 8 + drivers/regulator/Makefile | 1 + - drivers/regulator/tp65185x.c | 428 ++++++++++ + drivers/regulator/tp65185x.c | 428 +++++++++++++++++++++++++++++++++++ 3 files changed, 437 insertions(+) + create mode 100644 drivers/regulator/tp65185x.c diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig index 6b94442986f6..fbb3d70989c2 100644 @@ -482,5 +483,5 @@ index 000000000000..8b57a11ff2f9 +MODULE_DESCRIPTION("Regulator device driver for tp65185x"); +MODULE_LICENSE("GPL"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/sound-soc-ac100-codec-Support-analog-part-of-X-Powers-AC100-cod.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/sound-soc-ac100-codec-Support-analog-part-of-X-Powers-AC100-cod.patch index 84469ac19a3b..11492dcc45da 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/sound-soc-ac100-codec-Support-analog-part-of-X-Powers-AC100-cod.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/sound-soc-ac100-codec-Support-analog-part-of-X-Powers-AC100-cod.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From eb2c8d026768827ee0adc7dcf87c72936d0f2bb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Sun, 12 Nov 2017 23:09:14 +0100 Subject: sound: soc: ac100-codec: Support analog part of X-Powers AC100 codec @@ -11,8 +11,9 @@ Signed-off-by: Ondrej Jirman include/linux/mfd/ac100.h | 1 + sound/soc/sunxi/Kconfig | 11 + sound/soc/sunxi/Makefile | 1 + - sound/soc/sunxi/ac100-codec.c | 991 ++++++++++ + sound/soc/sunxi/ac100-codec.c | 991 ++++++++++++++++++++++++++++++++++ 5 files changed, 1007 insertions(+) + create mode 100644 sound/soc/sunxi/ac100-codec.c diff --git a/drivers/mfd/ac100.c b/drivers/mfd/ac100.c index 6d49d7fb5f14..b02f2c015d58 100644 @@ -1069,5 +1070,5 @@ index 000000000000..c3fec8d8da52 +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:ac100-codec"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/usb-gadget-Fix-dangling-pointer-in-netdev-private-data.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/usb-gadget-Fix-dangling-pointer-in-netdev-private-data.patch index aa82ba701509..dbca76d600c6 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/usb-gadget-Fix-dangling-pointer-in-netdev-private-data.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/usb-gadget-Fix-dangling-pointer-in-netdev-private-data.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 0c4b8c71dde65876b296474b37e1e03a4a9a1705 Mon Sep 17 00:00:00 2001 From: Ondrej Jirman Date: Thu, 7 Sep 2023 14:07:26 +0200 Subject: usb: gadget: Fix dangling pointer in netdev private data @@ -13,13 +13,13 @@ issues. Signed-off-by: Ondrej Jirman --- - drivers/usb/gadget/function/f_ecm.c | 6 ++++- - drivers/usb/gadget/function/f_eem.c | 10 ++++++- - drivers/usb/gadget/function/f_ncm.c | 9 ++++++- - drivers/usb/gadget/function/f_rndis.c | 13 ++++++++-- - drivers/usb/gadget/function/f_subset.c | 10 ++++++- - drivers/usb/gadget/function/u_ether.c | 4 --- - 6 files changed, 42 insertions(+), 10 deletions(-) + drivers/usb/gadget/function/f_ecm.c | 6 +++++- + drivers/usb/gadget/function/f_eem.c | 10 +++++++++- + drivers/usb/gadget/function/f_ncm.c | 4 ++++ + drivers/usb/gadget/function/f_rndis.c | 13 +++++++++++-- + drivers/usb/gadget/function/f_subset.c | 10 +++++++++- + drivers/usb/gadget/function/u_ether.c | 4 ---- + 6 files changed, 38 insertions(+), 9 deletions(-) diff --git a/drivers/usb/gadget/function/f_ecm.c b/drivers/usb/gadget/function/f_ecm.c index f55f60639e42..e331cc64390b 100644 @@ -79,10 +79,10 @@ index 3b445bd88498..6382cd138d20 100644 static struct usb_function *eem_alloc(struct usb_function_instance *fi) diff --git a/drivers/usb/gadget/function/f_ncm.c b/drivers/usb/gadget/function/f_ncm.c -index e6ab8cc225ff..6ddd5918c28f 100644 +index f5731d465cd7..b009ab87f275 100644 --- a/drivers/usb/gadget/function/f_ncm.c +++ b/drivers/usb/gadget/function/f_ncm.c -@@ -1662,6 +1665,8 @@ static void ncm_free(struct usb_function *f) +@@ -1665,6 +1665,8 @@ static void ncm_free(struct usb_function *f) static void ncm_unbind(struct usb_configuration *c, struct usb_function *f) { struct f_ncm *ncm = func_to_ncm(f); @@ -91,7 +91,7 @@ index e6ab8cc225ff..6ddd5918c28f 100644 DBG(c->cdev, "ncm unbind\n"); -@@ -1680,6 +1685,8 @@ static void ncm_unbind(struct usb_configuration *c, struct usb_function *f) +@@ -1683,6 +1685,8 @@ static void ncm_unbind(struct usb_configuration *c, struct usb_function *f) kfree(ncm->notify_req->buf); usb_ep_free_request(ncm->notify, ncm->notify_req); @@ -202,5 +202,5 @@ index 4bb0553da658..e098eb58be51 100644 EXPORT_SYMBOL_GPL(gether_set_gadget); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/usb-musb-sunxi-Avoid-enabling-host-side-code-on-SoCs-where-it-s.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/usb-musb-sunxi-Avoid-enabling-host-side-code-on-SoCs-where-it-s.patch deleted file mode 100644 index 2483cb3c66d7..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/usb-musb-sunxi-Avoid-enabling-host-side-code-on-SoCs-where-it-s.patch +++ /dev/null @@ -1,107 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Ondrej Jirman -Date: Mon, 6 Mar 2023 01:19:52 +0100 -Subject: usb: musb: sunxi: Avoid enabling host side code on SoCs where it's - not used - -For some sunxi SoCs host side code is active but unused, because -phy re-routes USB handling to a regular EHCI/OHCI driver. - -When host side code of musb is left initialized it sometimes -interferes with suspend to RAM. Disabling the host side code -on SoCs that re-route host mode to a regular *HCI hardware -block fixes the issue. - -Issue: https://gitlab.com/postmarketOS/pmaports/-/issues/1478 - -Signed-off-by: Ondrej Jirman ---- - drivers/usb/musb/musb_core.c | 10 ++++ - drivers/usb/musb/sunxi.c | 30 +++++++--- - 2 files changed, 33 insertions(+), 7 deletions(-) - -diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c -index b24adb5b399f..8b3ad9101180 100644 ---- a/drivers/usb/musb/musb_core.c -+++ b/drivers/usb/musb/musb_core.c -@@ -975,6 +975,16 @@ static void musb_handle_intr_disconnect(struct musb *musb, u8 devctl) - case OTG_STATE_B_IDLE: - musb_g_disconnect(musb); - break; -+ case OTG_STATE_A_WAIT_VRISE: -+ /* -+ * For sunxi use case, where host side of the musb driver -+ * is not used for host mode, we want to ignore -+ * OTG_STATE_A_WAIT_VRISE state set in sunxi glue code -+ * when transitioning to host mode on disconnect, in -+ * order to not confuse the dmesg reader about possible -+ * issues. -+ */ -+ break; - default: - WARNING("unhandled DISCONNECT transition (%s)\n", - musb_otg_state_string(musb)); -diff --git a/drivers/usb/musb/sunxi.c b/drivers/usb/musb/sunxi.c -index d54283fd026b..7e7703de28a3 100644 ---- a/drivers/usb/musb/sunxi.c -+++ b/drivers/usb/musb/sunxi.c -@@ -352,12 +352,6 @@ static int sunxi_musb_set_mode(struct musb *musb, u8 mode) - if (glue->phy_mode == new_mode) - return 0; - -- if (musb->port_mode != MUSB_OTG) { -- dev_err(musb->controller->parent, -- "Error changing modes is only supported in dual role mode\n"); -- return -EINVAL; -- } -- - if (musb->port1_status & USB_PORT_STAT_ENABLE) - musb_root_disconnect(musb); - -@@ -676,13 +670,22 @@ static const struct musb_hdrc_config sunxi_musb_hdrc_config_4eps = { - .ram_bits = SUNXI_MUSB_RAM_BITS, - }; - -+static const char * const sunxi_musb_host_rerouted_phys[] = { -+ "allwinner,sun8i-h3-usb-phy", -+ "allwinner,sun8i-r40-usb-phy", -+ "allwinner,sun8i-v3s-usb-phy", -+ "allwinner,sun50i-a64-usb-phy", -+ "allwinner,sun50i-h6-usb-phy", -+ NULL, -+}; -+ - static int sunxi_musb_probe(struct platform_device *pdev) - { - struct musb_hdrc_platform_data pdata; - struct platform_device_info pinfo; - struct sunxi_glue *glue; -- struct device_node *np = pdev->dev.of_node; - const struct sunxi_musb_cfg *cfg; -+ struct device_node *np = pdev->dev.of_node, *phy_np; - int ret; - - if (!np) { -@@ -763,6 +766,19 @@ static int sunxi_musb_probe(struct platform_device *pdev) - return dev_err_probe(&pdev->dev, PTR_ERR(glue->phy), - "Error getting phy\n"); - -+ /* -+ * Host mode is handled outside of the musb driver on some allwinner -+ * SoCs. We don't need musb host side code to be enabled at all. -+ * In fact it causes occasional issues with suspend to ram, when -+ * the host side code is enabled and unused (due to phy being re-routed -+ * to a different *HCI controller). -+ */ -+ phy_np = glue->phy->dev.of_node; -+ if (of_device_compatible_match(phy_np, sunxi_musb_host_rerouted_phys)) { -+ dev_info(&pdev->dev, "Disabling musb host side code due to re-routed phy\n"); -+ pdata.mode = MUSB_PERIPHERAL; -+ } -+ - glue->usb_phy = usb_phy_generic_register(); - if (IS_ERR(glue->usb_phy)) { - dev_err(&pdev->dev, "Error registering usb-phy %ld\n", --- -Armbian - diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/usb-quirks-Add-USB_QUIRK_RESET-for-Quectel-EG25G-Modem.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/usb-quirks-Add-USB_QUIRK_RESET-for-Quectel-EG25G-Modem.patch index d8d33cfb256d..14642272c89c 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/usb-quirks-Add-USB_QUIRK_RESET-for-Quectel-EG25G-Modem.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/usb-quirks-Add-USB_QUIRK_RESET-for-Quectel-EG25G-Modem.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From d73ef934b16a409b6e9ea83f270981f4c20526fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Thu, 18 Feb 2021 07:48:07 +0100 Subject: usb: quirks: Add USB_QUIRK_RESET for Quectel EG25G Modem @@ -11,10 +11,10 @@ Signed-off-by: Ondrej Jirman 1 file changed, 3 insertions(+) diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c -index 15e9bd180a1d..7e42d7322e7f 100644 +index b4783574b8e6..ecfd4b6ab602 100644 --- a/drivers/usb/core/quirks.c +++ b/drivers/usb/core/quirks.c -@@ -542,6 +542,9 @@ static const struct usb_device_id usb_quirk_list[] = { +@@ -549,6 +549,9 @@ static const struct usb_device_id usb_quirk_list[] = { /* INTEL VALUE SSD */ { USB_DEVICE(0x8086, 0xf1a5), .driver_info = USB_QUIRK_RESET_RESUME }, @@ -25,5 +25,5 @@ index 15e9bd180a1d..7e42d7322e7f 100644 }; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/usb-typec-anx7688-Add-driver-for-ANX7688-USB-C-HDMI-bridge.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/usb-typec-anx7688-Add-driver-for-ANX7688-USB-C-HDMI-bridge.patch index 18b90c64169a..3a3b288270c0 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/usb-typec-anx7688-Add-driver-for-ANX7688-USB-C-HDMI-bridge.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.megous/usb-typec-anx7688-Add-driver-for-ANX7688-USB-C-HDMI-bridge.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 6df300080b7c31bb8b5eec952adc53b66a5e33b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= Date: Thu, 13 Feb 2020 15:37:25 +0100 Subject: usb: typec: anx7688: Add driver for ANX7688 USB-C HDMI bridge @@ -39,8 +39,9 @@ Signed-off-by: Ondrej Jirman --- drivers/usb/typec/Kconfig | 12 + drivers/usb/typec/Makefile | 1 + - drivers/usb/typec/anx7688.c | 2240 ++++++++++ + drivers/usb/typec/anx7688.c | 2240 +++++++++++++++++++++++++++++++++++ 3 files changed, 2253 insertions(+) + create mode 100644 drivers/usb/typec/anx7688.c diff --git a/drivers/usb/typec/Kconfig b/drivers/usb/typec/Kconfig index 2f80c2792dbd..982b7c444a1f 100644 @@ -2331,5 +2332,5 @@ index 000000000000..3fa1eb7edd7b +MODULE_AUTHOR("Ondrej Jirman "); +MODULE_DESCRIPTION("Analogix ANX7688 USB-C DisplayPort bridge"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.megous/video-fbdev-eInk-display-driver-for-A13-based-PocketBooks.patch b/patch/kernel/archive/sunxi-6.6/patches.megous/video-fbdev-eInk-display-driver-for-A13-based-PocketBooks.patch deleted file mode 100644 index 75dd12e37c76..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.megous/video-fbdev-eInk-display-driver-for-A13-based-PocketBooks.patch +++ /dev/null @@ -1,1277 +0,0 @@ -From 4f7a4374ed5ce3cf47cf611ed5dd41b7fe9a1589 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= -Date: Tue, 24 Sep 2019 17:53:02 +0200 -Subject: [PATCH 15/23] video: fbdev: eInk display driver for A13 based - PocketBooks - -This driver uses DEBE and TCON0 to bitbang the ED060XD4 eInk panel -protocol on LCD data pins. There's no other sane way to do it, -as PocketBook e-book reader was designed this way. - -Signed-off-by: Ondrej Jirman ---- - drivers/video/fbdev/Kconfig | 12 + - drivers/video/fbdev/Makefile | 4 + - drivers/video/fbdev/sun5i-eink-neon.c | 49 ++ - drivers/video/fbdev/sun5i-eink.c | 1158 +++++++++++++++++++++++++ - 4 files changed, 1223 insertions(+) - create mode 100644 drivers/video/fbdev/sun5i-eink-neon.c - create mode 100644 drivers/video/fbdev/sun5i-eink.c - -diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig -index c29754b65c0e..6aceb24e572d 100644 ---- a/drivers/video/fbdev/Kconfig -+++ b/drivers/video/fbdev/Kconfig -@@ -689,6 +689,18 @@ config FB_ATMEL - help - This enables support for the AT91 LCD Controller. - -+config FB_SUN5I_EINK -+ tristate "eInk display Framebuffer Support (A13 based eBook readers)" -+ depends on FB -+ select FB_MODE_HELPERS -+ select FB_CFB_FILLRECT -+ select FB_CFB_COPYAREA -+ select FB_CFB_IMAGEBLIT -+ select BITREVERSE -+ help -+ This driver supports PocketBook Touch Lux 3 e-paper display. -+ -+ - config FB_NVIDIA - tristate "nVidia Framebuffer Support" - depends on FB && PCI -diff --git a/drivers/video/fbdev/Makefile b/drivers/video/fbdev/Makefile -index 70569f7027ed..a3b4528195c7 100644 ---- a/drivers/video/fbdev/Makefile -+++ b/drivers/video/fbdev/Makefile -@@ -128,3 +128,7 @@ obj-$(CONFIG_FB_SIMPLE) += simplefb.o - - # the test framebuffer is last - obj-$(CONFIG_FB_VIRTUAL) += vfb.o -+ -+obj-$(CONFIG_FB_SUN5I_EINK) += sun5ieink.o -+sun5ieink-objs = sun5i-eink.o sun5i-eink-neon.o -+CFLAGS_sun5i-eink-neon.o += -march=armv7-a -mfloat-abi=softfp -mfpu=neon -ffreestanding -isystem $(shell $(CC) -print-file-name=include) -diff --git a/drivers/video/fbdev/sun5i-eink-neon.c b/drivers/video/fbdev/sun5i-eink-neon.c -new file mode 100644 -index 000000000000..9e2386fd91ea ---- /dev/null -+++ b/drivers/video/fbdev/sun5i-eink-neon.c -@@ -0,0 +1,49 @@ -+#include -+#include -+#include -+#include -+ -+void eink_ctlstream_fill_data_neon(u32* cmd, u8* fb, int stride, -+ int sources, int gates, u32 masks[4]) -+{ -+ uint32x4_t mask; -+ int g, s; -+ int cutoff = sources / 4 / 8 / 3 * 2; -+ -+ mask = vdupq_n_u32(0); -+ -+ for (g = 0; g < gates; g++) { -+ if (unlikely(g == 0)) -+ mask = vdupq_n_u32(masks[0]); -+ else -+ mask = vdupq_n_u32(masks[2]); -+ -+ for (s = 0; s < sources / 4 / 8; s++) { -+ uint8x8_t src; -+ uint16x8_t dst; -+ uint32x4_t out; -+ -+ if (unlikely(s == cutoff)) -+ mask = vdupq_n_u32(g == 0 ? masks[1] : masks[3]); -+ -+ src = vld1_u8(fb); -+ fb += 8; -+ -+ dst = vshll_n_u8(src, 3); -+ dst = vsliq_n_u16(dst, vmovl_u8(vshr_n_u8(src, 3)), 8); -+ -+ out = vmovl_u16(vget_low_u16(dst)); -+ out = vorrq_u32(out, mask); -+ vst1q_u32(cmd, out); -+ cmd += 4; -+ -+ out = vmovl_u16(vget_high_u16(dst)); -+ out = vorrq_u32(out, mask); -+ vst1q_u32(cmd, out); -+ cmd += 4; -+ } -+ -+ cmd += stride - sources / 4; -+ } -+} -+EXPORT_SYMBOL_GPL(eink_ctlstream_fill_data_neon); -diff --git a/drivers/video/fbdev/sun5i-eink.c b/drivers/video/fbdev/sun5i-eink.c -new file mode 100644 -index 000000000000..daceb0613922 ---- /dev/null -+++ b/drivers/video/fbdev/sun5i-eink.c -@@ -0,0 +1,1158 @@ -+/* -+ * Copyright Ondrej Jirman -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+// {{{ Registry defines -+ -+#define SUN4I_TCON_GCTL_REG 0x0 -+#define SUN4I_TCON_GCTL_TCON_ENABLE BIT(31) -+#define SUN4I_TCON_GCTL_IOMAP_MASK BIT(0) -+#define SUN4I_TCON_GCTL_IOMAP_TCON1 (1 << 0) -+#define SUN4I_TCON_GCTL_IOMAP_TCON0 (0 << 0) -+ -+#define SUN4I_TCON_GINT0_REG 0x4 -+#define SUN4I_TCON_GINT0_VBLANK_ENABLE(pipe) BIT(31 - (pipe)) -+#define SUN4I_TCON_GINT0_VBLANK_INT(pipe) BIT(15 - (pipe)) -+#define SUN4I_TCON_GINT0_LINE_ENABLE(pipe) BIT(29 - (pipe)) -+#define SUN4I_TCON_GINT0_LINE_INT(pipe) BIT(13 - (pipe)) -+ -+#define SUN4I_TCON_GINT1_REG 0x8 -+ -+#define SUN4I_TCON0_CTL_REG 0x40 -+#define SUN4I_TCON0_CTL_TCON_ENABLE BIT(31) -+#define SUN4I_TCON0_CTL_IF_MASK GENMASK(25, 24) -+#define SUN4I_TCON0_CTL_IF_8080 (1 << 24) -+#define SUN4I_TCON0_CTL_CLK_DELAY_MASK GENMASK(8, 4) -+#define SUN4I_TCON0_CTL_CLK_DELAY(delay) ((delay << 4) & SUN4I_TCON0_CTL_CLK_DELAY_MASK) -+#define SUN4I_TCON0_CTL_SRC_SEL_MASK GENMASK(2, 0) -+ -+#define SUN4I_TCON0_DCLK_REG 0x44 -+#define SUN4I_TCON0_DCLK_GATE_BIT (31) -+#define SUN4I_TCON0_DCLK_DIV_SHIFT (0) -+#define SUN4I_TCON0_DCLK_DIV_WIDTH (7) -+ -+#define SUN4I_TCON0_BASIC0_REG 0x48 -+#define SUN4I_TCON0_BASIC0_X(width) ((((width) - 1) & 0xfff) << 16) -+#define SUN4I_TCON0_BASIC0_Y(height) (((height) - 1) & 0xfff) -+ -+#define SUN4I_TCON0_BASIC1_REG 0x4c -+#define SUN4I_TCON0_BASIC1_H_TOTAL(total) ((((total) - 1) & 0x1fff) << 16) -+#define SUN4I_TCON0_BASIC1_H_BACKPORCH(bp) (((bp) - 1) & 0xfff) -+ -+#define SUN4I_TCON0_BASIC2_REG 0x50 -+#define SUN4I_TCON0_BASIC2_V_TOTAL(total) (((total) & 0x1fff) << 16) -+#define SUN4I_TCON0_BASIC2_V_BACKPORCH(bp) (((bp) - 1) & 0xfff) -+ -+#define SUN4I_TCON0_BASIC3_REG 0x54 -+#define SUN4I_TCON0_BASIC3_H_SYNC(width) ((((width) - 1) & 0x7ff) << 16) -+#define SUN4I_TCON0_BASIC3_V_SYNC(height) (((height) - 1) & 0x7ff) -+ -+#define SUN4I_TCON0_HV_IF_REG 0x58 -+ -+#define SUN4I_TCON0_IO_POL_REG 0x88 -+#define SUN4I_TCON0_IO_POL_DCLK_PHASE(phase) ((phase & 3) << 28) -+#define SUN4I_TCON0_IO_POL_DE_NEGATIVE BIT(27) -+#define SUN4I_TCON0_IO_POL_DCLK_NEGATIVE BIT(26) -+#define SUN4I_TCON0_IO_POL_HSYNC_POSITIVE BIT(25) -+#define SUN4I_TCON0_IO_POL_VSYNC_POSITIVE BIT(24) -+ -+#define SUN4I_TCON0_IO_TRI_REG 0x8c -+#define SUN4I_TCON0_IO_TRI_HSYNC_DISABLE BIT(25) -+#define SUN4I_TCON0_IO_TRI_VSYNC_DISABLE BIT(24) -+#define SUN4I_TCON0_IO_TRI_DATA_PINS_DISABLE(pins) GENMASK(pins, 0) -+ -+#define SUN4I_BACKEND_MODCTL_REG 0x800 -+#define SUN4I_BACKEND_MODCTL_LINE_SEL BIT(29) -+#define SUN4I_BACKEND_MODCTL_ITLMOD_EN BIT(28) -+#define SUN4I_BACKEND_MODCTL_OUT_SEL GENMASK(22, 20) -+#define SUN4I_BACKEND_MODCTL_OUT_LCD0 (0 << 20) -+#define SUN4I_BACKEND_MODCTL_OUT_LCD1 (1 << 20) -+#define SUN4I_BACKEND_MODCTL_OUT_FE0 (6 << 20) -+#define SUN4I_BACKEND_MODCTL_OUT_FE1 (7 << 20) -+#define SUN4I_BACKEND_MODCTL_HWC_EN BIT(16) -+#define SUN4I_BACKEND_MODCTL_LAY_EN(l) BIT(8 + l) -+#define SUN4I_BACKEND_MODCTL_OCSC_EN BIT(5) -+#define SUN4I_BACKEND_MODCTL_DFLK_EN BIT(4) -+#define SUN4I_BACKEND_MODCTL_DLP_START_CTL BIT(2) -+#define SUN4I_BACKEND_MODCTL_START_CTL BIT(1) -+#define SUN4I_BACKEND_MODCTL_DEBE_EN BIT(0) -+ -+#define SUN4I_BACKEND_BACKCOLOR_REG 0x804 -+#define SUN4I_BACKEND_BACKCOLOR(r, g, b) (((r) << 16) | ((g) << 8) | (b)) -+ -+#define SUN4I_BACKEND_DISSIZE_REG 0x808 -+#define SUN4I_BACKEND_DISSIZE(w, h) (((((h) - 1) & 0xffff) << 16) | \ -+ (((w) - 1) & 0xffff)) -+ -+#define SUN4I_BACKEND_LAYSIZE_REG(l) (0x810 + (0x4 * (l))) -+#define SUN4I_BACKEND_LAYSIZE(w, h) (((((h) - 1) & 0x1fff) << 16) | \ -+ (((w) - 1) & 0x1fff)) -+ -+#define SUN4I_BACKEND_LAYCOOR_REG(l) (0x820 + (0x4 * (l))) -+#define SUN4I_BACKEND_LAYCOOR(x, y) ((((u32)(y) & 0xffff) << 16) | \ -+ ((u32)(x) & 0xffff)) -+ -+#define SUN4I_BACKEND_LAYLINEWIDTH_REG(l) (0x840 + (0x4 * (l))) -+ -+#define SUN4I_BACKEND_LAYFB_L32ADD_REG(l) (0x850 + (0x4 * (l))) -+ -+#define SUN4I_BACKEND_LAYFB_H4ADD_REG 0x860 -+#define SUN4I_BACKEND_LAYFB_H4ADD_MSK(l) GENMASK(3 + ((l) * 8), (l) * 8) -+#define SUN4I_BACKEND_LAYFB_H4ADD(l, val) ((val) << ((l) * 8)) -+ -+#define SUN4I_BACKEND_REGBUFFCTL_REG 0x870 -+#define SUN4I_BACKEND_REGBUFFCTL_AUTOLOAD_DIS BIT(1) -+#define SUN4I_BACKEND_REGBUFFCTL_LOADCTL BIT(0) -+ -+#define SUN4I_BACKEND_CKMAX_REG 0x880 -+#define SUN4I_BACKEND_CKMIN_REG 0x884 -+#define SUN4I_BACKEND_CKCFG_REG 0x888 -+#define SUN4I_BACKEND_ATTCTL_REG0(l) (0x890 + (0x4 * (l))) -+#define SUN4I_BACKEND_ATTCTL_REG0_LAY_GLBALPHA_MASK GENMASK(31, 24) -+#define SUN4I_BACKEND_ATTCTL_REG0_LAY_GLBALPHA(x) ((x) << 24) -+#define SUN4I_BACKEND_ATTCTL_REG0_LAY_PIPESEL_MASK BIT(15) -+#define SUN4I_BACKEND_ATTCTL_REG0_LAY_PIPESEL(x) ((x) << 15) -+#define SUN4I_BACKEND_ATTCTL_REG0_LAY_PRISEL_MASK GENMASK(11, 10) -+#define SUN4I_BACKEND_ATTCTL_REG0_LAY_PRISEL(x) ((x) << 10) -+#define SUN4I_BACKEND_ATTCTL_REG0_LAY_WORKMOD_MASK GENMASK(23, 22) -+#define SUN4I_BACKEND_ATTCTL_REG0_LAY_WORKMOD(x) ((x) << 22) -+#define SUN4I_BACKEND_ATTCTL_REG0_LAY_YUVEN BIT(2) -+#define SUN4I_BACKEND_ATTCTL_REG0_LAY_VDOEN BIT(1) -+#define SUN4I_BACKEND_ATTCTL_REG0_LAY_GLBALPHA_EN BIT(0) -+ -+#define SUN4I_BACKEND_ATTCTL_REG1(l) (0x8a0 + (0x4 * (l))) -+#define SUN4I_BACKEND_ATTCTL_REG1_LAY_HSCAFCT GENMASK(15, 14) -+#define SUN4I_BACKEND_ATTCTL_REG1_LAY_WSCAFCT GENMASK(13, 12) -+#define SUN4I_BACKEND_ATTCTL_REG1_LAY_FBFMT GENMASK(11, 8) -+#define SUN4I_BACKEND_LAY_FBFMT_1BPP (0 << 8) -+#define SUN4I_BACKEND_LAY_FBFMT_2BPP (1 << 8) -+#define SUN4I_BACKEND_LAY_FBFMT_4BPP (2 << 8) -+#define SUN4I_BACKEND_LAY_FBFMT_8BPP (3 << 8) -+#define SUN4I_BACKEND_LAY_FBFMT_RGB655 (4 << 8) -+#define SUN4I_BACKEND_LAY_FBFMT_RGB565 (5 << 8) -+#define SUN4I_BACKEND_LAY_FBFMT_RGB556 (6 << 8) -+#define SUN4I_BACKEND_LAY_FBFMT_ARGB1555 (7 << 8) -+#define SUN4I_BACKEND_LAY_FBFMT_RGBA5551 (8 << 8) -+#define SUN4I_BACKEND_LAY_FBFMT_XRGB8888 (9 << 8) -+#define SUN4I_BACKEND_LAY_FBFMT_ARGB8888 (10 << 8) -+#define SUN4I_BACKEND_LAY_FBFMT_RGB888 (11 << 8) -+#define SUN4I_BACKEND_LAY_FBFMT_ARGB4444 (12 << 8) -+#define SUN4I_BACKEND_LAY_FBFMT_RGBA4444 (13 << 8) -+ -+// }}} -+ -+#define EINK_IOCTL_UPDATE _IO('A', 0) -+//#define EINK_IOCTL_STATUS _IOR('A', 2, int) -+ -+enum { -+ EINK_REQ_NONE = 0, -+ EINK_REQ_UPDATE, -+ EINK_REQ_POWERDOWN, -+}; -+ -+enum { -+ EINK_WORKING, -+ EINK_OPEN, -+ EINK_WAITING_INT, -+ EINK_BE_SETUP, -+}; -+ -+struct eink_dev { -+ struct device *dev; -+ -+ // io -+ struct pinctrl* pinctrl; -+ struct pinctrl_state *pinctrl_active; -+ struct pinctrl_state *pinctrl_idle; -+ struct gpio_descs* gpios; -+ -+ // power -+ struct regulator *panel_supply; -+ struct timer_list powerdown_timer; -+ bool powered; -+ -+ // tcon0 -+ struct clk_bulk_data *clks; -+ int num_clks; -+ -+ struct reset_control *rstc; -+ struct regmap *tcon_regs; -+ struct regmap *be_regs; -+ int irq; -+ -+ // framebuffers -+ u8* framebuffers[2]; -+ u32* ctlstream; -+ dma_addr_t ctlstream_paddr; -+ size_t ctlstream_size; // byte size -+ -+ // control device -+ struct cdev cdev; -+ dev_t major; -+ bool is_open; // device can be used by only one user -+ -+ // rendering work -+ spinlock_t lock; -+ wait_queue_head_t waitqueue; -+ struct workqueue_struct *wq; -+ struct work_struct work; -+ unsigned long flags[1]; -+ int last_request; -+ -+ const struct eink_panel_config* panel; -+}; -+ -+struct eink_panel_config { -+ int sources; -+ int gates; -+ int h_lead; -+ int h_trail; -+ int v_extra; -+}; -+ -+static const struct eink_panel_config eink_ed060xd4_panel = { -+ .sources = 1024, -+ .gates = 758, -+ .h_lead = 40, // 1000ns (should be multiple of 8 for 256-bit alignment) -+ .h_trail = 8, // should be multiple of 8 for 256-bit alignment -+ .v_extra = 9, -+}; -+ -+// buf format is 1 byte per pixel, len needs to be multiple of 4 bytes -+ -+/* PocketBook 626(2) (Touch Lux 3) port D <-> Panel pin map */ -+ -+#define D0 BIT(3) -+#define D1 BIT(4) -+#define D2 BIT(5) -+#define D3 BIT(6) -+#define D4 BIT(7) -+ -+#define D5 BIT(10) -+#define D6 BIT(11) -+#define D7 BIT(12) -+#define S_LE BIT(13) -+#define G_MODE1 BIT(15) -+ -+#define S_OE BIT(20) -+#define S_SP BIT(21) -+#define G_CLK BIT(22) -+#define G_SP BIT(23) -+ -+/* -+ * we need to encode stream of control signals for various operations -+ * into separate rows: -+ * -+ * - sequence for starting a frame -+ * - three leading G_CLK pulses -+ * - sequence for all data rows -+ * - wait time with OE for previous row -+ * - wait time for the last row without shifting in more data -+ * - trailing row with a sequence for ending a frame -+ * -+ * So we have to have: -+ * - 6 special rows with no data + all the data rows -+ * - all of these have to have the same width -+ * - we want to use TCON to manage timing of the OE via HT/HBP settings -+ * -+ * Timings: -+ * - we use 20MHz clock (50ns period) -+ * - we have to spend 256 clocks per row, pushing data -+ * - we want to have 85Hz frame refresh rate -+ * - 11765us budget per frame -+ * - minimum G_CLK low time is 500ns, minimum G_CLK cycle time is 5us -+ * - G_SP 100ns setup (to G_CLK H->L)/hold time(after G_CLK H->L) -+ * - LE pulse width >150ns -+ * - LE delay before more data 200ns -+ * - 12us time the output reacts to LE (this should be hsync time/hbp) -+ * - at 20MHz, time to load data is 13us (about 100 FPS) -+ */ -+static void eink_ctlstream_prepare(struct eink_dev* eink) -+{ -+ const struct eink_panel_config* pc = eink->panel; -+ u32* p = eink->ctlstream; -+ int row_width = pc->sources / 4 + pc->h_lead + pc->h_trail; // ~262 -+ int i, j, t, r; -+ u32 base; -+ -+#define SET_PINS(t, v) { \ -+ for (i = 0; i < t; i++) \ -+ *p++ = v; \ -+ r -= t; \ -+ } -+ -+ // prepare a startup row -+ t = row_width / 3; -+ -+ r = row_width; -+ SET_PINS(20, G_MODE1 | G_SP | S_SP ); -+ SET_PINS(2*t,G_MODE1 | G_SP | S_SP | G_CLK ); -+ SET_PINS(r, G_MODE1 | G_SP | S_SP ); -+ -+ r = row_width; -+ SET_PINS(t, G_MODE1 | G_SP | S_SP | G_CLK ); -+ SET_PINS(t, G_MODE1 | S_SP | G_CLK ); -+ SET_PINS(r, G_MODE1 | S_SP ); -+ -+ r = row_width; -+ SET_PINS(t, G_MODE1 | S_SP | G_CLK ); -+ SET_PINS(t, G_MODE1 | G_SP | S_SP | G_CLK ); -+ SET_PINS(r, G_MODE1 | G_SP | S_SP ); -+ -+ // three empty rows -+ for (j = 0; j < 3; j++) { -+ r = row_width; -+ -+ SET_PINS(2*t, G_MODE1 | G_SP | S_SP | G_CLK ); -+ SET_PINS(r, G_MODE1 | G_SP | S_SP ); -+ } -+ -+ // extra row is there to keep S_OE high for the previous last data -+ // row that was shifted in -+ for (j = 0; j < pc->gates + 1; j++) { -+ base = G_MODE1 | G_SP; -+ -+ // We have 40 periods here to work with here (h_lead). -+ r = pc->h_lead; -+ -+ // S_SP goes high after the last data and there's 2us -+ // delay (it may even go high during the last data period?) -+ SET_PINS(20, base | S_SP); // 1000ns for tLEdly -+ base &= ~S_OE; -+ SET_PINS(2, base | S_SP); -+ SET_PINS(6, base | S_SP | (j > 0 ? S_LE : 0)); // 300ns for tLEw -+ if (j > 0) -+ base |= S_OE; -+ SET_PINS(2, base | S_SP | (j > 0 ? S_LE : 0)); // S_OE goes high -+ SET_PINS(r-2,base | S_SP); // 400ns for tLEoff -+ SET_PINS(r, base | S_SP | G_CLK); // 400ns for tLEoff -+ -+ if (j >= pc->gates) -+ base |= S_SP; -+ -+ // start loading data immediately at S_SP going low -+ r = pc->sources / 4; -+ t = r / 3; -+ SET_PINS(t, base | G_CLK); -+ SET_PINS(r, base); -+ -+ r = pc->h_trail; -+ SET_PINS(r, base | S_SP); -+ } -+ -+ r = row_width; -+ SET_PINS(r, G_SP | S_SP ); -+ -+ // this last row will be stopped by an interrupt before finishing -+ // completely, so it's a dummy one -+ r = row_width; -+ SET_PINS(r, G_SP | S_SP ); -+} -+ -+void eink_ctlstream_fill_data_neon(u32* cmd, u8* fb, int stride, -+ int sources, int gates, u32 masks[4]); -+ -+static void eink_ctlstream_fill_data(struct eink_dev* eink, u8* fb) -+{ -+ const struct eink_panel_config* pc = eink->panel; -+ int row_width = pc->sources / 4 + pc->h_lead + pc->h_trail; -+ u32 masks[4] = { -+ G_MODE1 | G_SP | G_CLK, -+ G_MODE1 | G_SP, -+ G_MODE1 | G_SP | S_OE | G_CLK, -+ G_MODE1 | G_SP | S_OE, -+ }; -+ -+ kernel_neon_begin(); -+ eink_ctlstream_fill_data_neon(eink->ctlstream + 6 * row_width + pc->h_lead, -+ fb, row_width, pc->sources, -+ pc->gates, masks); -+ kernel_neon_end(); -+} -+ -+static int eink_set_power(struct eink_dev* eink, bool en) -+{ -+ int ret; -+ -+ if (!en != !eink->powered) { -+ dev_warn(eink->dev, "%sable power supply", en ? "en" : "dis"); -+ -+ if (en) -+ ret = regulator_enable(eink->panel_supply); -+ else -+ ret = regulator_disable(eink->panel_supply); -+ if (ret) { -+ dev_err(eink->dev, "can't %sable power supply (%d)", -+ en ? "en" : "dis", ret); -+ return ret; -+ } -+ } -+ -+ if (en) -+ mod_timer(&eink->powerdown_timer, -+ jiffies + msecs_to_jiffies(5000)); -+ else -+ del_timer_sync(&eink->powerdown_timer); -+ -+ eink->powered = en; -+ return 0; -+} -+ -+__maybe_unused -+static void print_time(struct device* dev, u64 ts, char *buf) -+{ -+ do_div(ts, 1000); -+ dev_info(dev, "[%s] %6lu us", buf, (unsigned long)ts); -+} -+ -+// DCLK = 20MHz -+static int eink_update(struct eink_dev* eink) -+{ -+ struct regmap *tcon = eink->tcon_regs; -+ struct regmap *be = eink->be_regs; -+ unsigned long sclk_rate; -+ u32 ddiv = 6, w, h; -+ u32 lo_paddr, hi_paddr; -+ u32 vbp = 1, hbp = 40; -+ int ret; -+ -+ ret = eink_set_power(eink, 1); -+ if (ret) -+ return ret; -+ -+ sclk_rate = clk_get_rate(eink->clks[1].clk); -+ if (sclk_rate == 0) -+ return -EINVAL; -+ -+ spin_lock(&eink->lock); -+ eink_ctlstream_fill_data(eink, eink->framebuffers[0]); -+ spin_unlock(&eink->lock); -+ -+ w = eink->panel->sources / 4 + eink->panel->h_lead + eink->panel->h_trail; -+ h = eink->panel->gates + eink->panel->v_extra; -+ -+ // Setup DEBE -+ -+ if (!test_bit(EINK_BE_SETUP, eink->flags)) { -+ regmap_write(be, SUN4I_BACKEND_DISSIZE_REG, -+ SUN4I_BACKEND_DISSIZE(w, h)); -+ regmap_write(be, SUN4I_BACKEND_LAYSIZE_REG(0), -+ SUN4I_BACKEND_LAYSIZE(w, h)); -+ regmap_write(be, SUN4I_BACKEND_LAYCOOR_REG(0), -+ SUN4I_BACKEND_LAYCOOR(0, 0)); -+ regmap_write(be, SUN4I_BACKEND_LAYLINEWIDTH_REG(0), -+ w * 4 * 8); /* input format has 4 bytes per pixel */ -+ -+ lo_paddr = eink->ctlstream_paddr << 3; -+ hi_paddr = eink->ctlstream_paddr >> 29; -+ regmap_write(be, SUN4I_BACKEND_LAYFB_L32ADD_REG(0), lo_paddr); -+ regmap_update_bits(be, SUN4I_BACKEND_LAYFB_H4ADD_REG, -+ SUN4I_BACKEND_LAYFB_H4ADD_MSK(0), -+ SUN4I_BACKEND_LAYFB_H4ADD(0, hi_paddr)); -+ -+ regmap_write(be, SUN4I_BACKEND_ATTCTL_REG0(0), -+ SUN4I_BACKEND_ATTCTL_REG0_LAY_WORKMOD(0) | -+ SUN4I_BACKEND_ATTCTL_REG0_LAY_PIPESEL(0) | -+ SUN4I_BACKEND_ATTCTL_REG0_LAY_PRISEL(3)); -+ -+ regmap_write(be, SUN4I_BACKEND_ATTCTL_REG1(0), -+ SUN4I_BACKEND_LAY_FBFMT_XRGB8888); -+ -+ /* load BE buffers */ -+ regmap_write(be, SUN4I_BACKEND_REGBUFFCTL_REG, -+ SUN4I_BACKEND_REGBUFFCTL_AUTOLOAD_DIS | -+ SUN4I_BACKEND_REGBUFFCTL_LOADCTL); -+ set_bit(EINK_BE_SETUP, eink->flags); -+ } -+ -+ // Setup TCON/TCON0 -+ // -+ // TCON0 timings, allwinner style: -+ // -+ // ht - horizontal total time -+ // - total number of clock cycles in a row -+ // hbp - horizontal back porch -+ // - number of dclk cycles between start of hsync and data -+ // vt - vertical total time -+ // - number of rows in two frames -+ // vbp - vertical back porch -+ // - number of rows between vsync start and a valid data line -+ // hspw -+ // - width of hsync signal (in # of dclk cycles) -+ // vspw -+ // - width of vsync signal (in # of rows) -+ // -+ // Notes: -+ // hbp(aw)=hbp(panel)+hspw(panel) (same for vbp) -+ -+ /* Enable tcon module */ -+ regmap_write(tcon, SUN4I_TCON_GCTL_REG, -+ SUN4I_TCON_GCTL_TCON_ENABLE | -+ SUN4I_TCON_GCTL_IOMAP_TCON0); -+ -+ /* Set the resolution */ -+ regmap_write(tcon, SUN4I_TCON0_BASIC0_REG, -+ SUN4I_TCON0_BASIC0_X(w) | -+ SUN4I_TCON0_BASIC0_Y(h)); -+ -+ /* Set horizontal display timings */ -+ regmap_write(tcon, SUN4I_TCON0_BASIC1_REG, -+ SUN4I_TCON0_BASIC1_H_TOTAL(w + hbp + 2) | -+ SUN4I_TCON0_BASIC1_H_BACKPORCH(hbp)); -+ -+ /* Set vertical display timings */ -+ regmap_write(tcon, SUN4I_TCON0_BASIC2_REG, -+ SUN4I_TCON0_BASIC2_V_TOTAL((h + vbp + 2) * 2) | -+ SUN4I_TCON0_BASIC2_V_BACKPORCH(vbp)); -+ -+ /* Set Hsync and Vsync length */ -+ regmap_write(tcon, SUN4I_TCON0_BASIC3_REG, -+ SUN4I_TCON0_BASIC3_V_SYNC(1) | -+ SUN4I_TCON0_BASIC3_H_SYNC(1)); -+ -+ /* Setup output mode/pins */ -+ regmap_write(tcon, SUN4I_TCON0_HV_IF_REG, 0); // 24bit parallel mode -+ regmap_write(tcon, SUN4I_TCON0_IO_POL_REG, SUN4I_TCON0_IO_POL_DCLK_NEGATIVE); -+ regmap_write(tcon, SUN4I_TCON0_IO_TRI_REG, 0); -+ -+ ret = pinctrl_select_state(eink->pinctrl, eink->pinctrl_active); -+ if (ret) { -+ dev_err(eink->dev, "can't switch to active pinctrl state (%d)", -+ ret); -+ } -+ -+ set_bit(EINK_WAITING_INT, eink->flags); -+ -+ /* Interrupt after h lines */ -+ regmap_write(tcon, SUN4I_TCON_GINT0_REG, 0); -+ regmap_write(tcon, SUN4I_TCON_GINT1_REG, (h + vbp + 2) << 16); -+ //regmap_write(tcon, SUN4I_TCON_GINT0_REG, -+ //SUN4I_TCON_GINT0_VBLANK_ENABLE(0)); -+ regmap_write(tcon, SUN4I_TCON_GINT0_REG, -+ SUN4I_TCON_GINT0_LINE_ENABLE(0)); -+ -+ /* Configure and enable the dot clock */ -+ regmap_write(tcon, SUN4I_TCON0_DCLK_REG, -+ BIT(SUN4I_TCON0_DCLK_GATE_BIT) | -+ (ddiv << SUN4I_TCON0_DCLK_DIV_SHIFT)); -+ -+ /* Enable tcon 0, set clk delay */ -+ regmap_write(tcon, SUN4I_TCON0_CTL_REG, -+ SUN4I_TCON0_CTL_CLK_DELAY(3)); // up to 30 -+ -+ regmap_update_bits(tcon, SUN4I_TCON0_CTL_REG, -+ SUN4I_TCON0_CTL_TCON_ENABLE, -+ SUN4I_TCON0_CTL_TCON_ENABLE); -+ -+ ret = wait_event_timeout(eink->waitqueue, -+ !test_bit(EINK_WAITING_INT, eink->flags), -+ msecs_to_jiffies(100)); -+ if (ret == 0) -+ dev_warn(eink->dev, "Timeout waiting for TCON transfer\n"); -+ -+ // stop everything, cleanup -+ //regmap_write(tcon, SUN4I_TCON0_DCLK_REG, 0); -+ regmap_update_bits(tcon, SUN4I_TCON0_CTL_REG, -+ SUN4I_TCON0_CTL_TCON_ENABLE, -+ 0); -+ //regmap_write(tcon, SUN4I_TCON_GCTL_REG, 0); -+ regmap_write(tcon, SUN4I_TCON_GINT0_REG, 0); -+ regmap_write(tcon, SUN4I_TCON_GINT1_REG, 0); -+ -+ ret = pinctrl_select_state(eink->pinctrl, eink->pinctrl_idle); -+ if (ret) { -+ dev_err(eink->dev, "can't switch to idle pinctrl state (%d)", -+ ret); -+ } -+ -+ regmap_write(tcon, SUN4I_TCON0_IO_TRI_REG, ~0); -+ -+ return ret; -+} -+ -+static void eink_supply_powerdown_timer(struct timer_list *t) -+{ -+ struct eink_dev *eink = from_timer(eink, t, powerdown_timer); -+ -+ //dev_info(eink->dev, "powering down"); -+ -+ spin_lock(&eink->lock); -+ eink->last_request = EINK_REQ_POWERDOWN; -+ spin_unlock(&eink->lock); -+ -+ queue_work(eink->wq, &eink->work); -+} -+ -+static void eink_work_handler(struct work_struct *work) -+{ -+ struct eink_dev *eink = container_of(work, struct eink_dev, work); -+ int last_request; -+ -+ spin_lock(&eink->lock); -+ last_request = eink->last_request; -+ eink->last_request = 0; -+ spin_unlock(&eink->lock); -+ -+ if (last_request == EINK_REQ_UPDATE) { -+ eink_update(eink); -+ } else if (last_request == EINK_REQ_POWERDOWN) { -+ eink_set_power(eink, 0); -+ } -+ -+ clear_bit(EINK_WORKING, eink->flags); -+ wake_up(&eink->waitqueue); -+} -+ -+static ssize_t eink_read(struct file *fp, char __user *buf, size_t len, -+ loff_t *off) -+{ -+ struct eink_dev* eink = fp->private_data; -+ int ret, fb_size; -+ -+ fb_size = eink->panel->sources / 4 * eink->panel->gates; -+ if (len != fb_size) -+ return -EINVAL; -+ -+ spin_lock(&eink->lock); -+ if (copy_to_user(buf, eink->framebuffers[0], fb_size)) -+ ret = -EFAULT; -+ else -+ ret = fb_size; -+ spin_unlock(&eink->lock); -+ -+ return ret; -+} -+ -+static ssize_t eink_write(struct file *fp, const char __user *buf, -+ size_t len, loff_t *off) -+{ -+ struct eink_dev* eink = fp->private_data; -+ int non_blocking = fp->f_flags & O_NONBLOCK; -+ int ret, fb_size; -+ -+ fb_size = eink->panel->sources / 4 * eink->panel->gates; -+ if (len != fb_size) -+ return -EINVAL; -+ -+ if (test_and_set_bit(EINK_WORKING, eink->flags)) -+ return -EBUSY; -+ -+ spin_lock(&eink->lock); -+ ret = copy_from_user(eink->framebuffers[0], buf, len); -+ if (ret) { -+ clear_bit(EINK_WORKING, eink->flags); -+ spin_unlock(&eink->lock); -+ return -EFAULT; -+ } -+ -+ eink->last_request = EINK_REQ_UPDATE; -+ spin_unlock(&eink->lock); -+ -+ queue_work(eink->wq, &eink->work); -+ -+ // first handle non-blocking path -+ if (non_blocking && test_bit(EINK_WORKING, eink->flags)) -+ return -EWOULDBLOCK; -+ -+ // wait for availability of wakeup -+ wait_event(eink->waitqueue, -+ !test_bit(EINK_WORKING, eink->flags)); -+ -+ //u64 ts = ktime_get_boottime_ns(); -+ //print_time(eink->dev, ktime_get_boottime() - ts, "one frame"); -+ -+ return len; -+} -+ -+static unsigned int eink_poll(struct file *fp, poll_table *wait) -+{ -+ struct eink_dev* eink = fp->private_data; -+ int ret = 0; -+ -+ poll_wait(fp, &eink->waitqueue, wait); -+ -+ if (!test_bit(EINK_WORKING, eink->flags)) -+ ret |= POLLIN | POLLRDNORM; -+ -+ return ret; -+} -+ -+static long eink_ioctl(struct file *fp, unsigned int cmd, unsigned long arg) -+{ -+ struct eink_dev* eink = fp->private_data; -+ unsigned long flags; -+ int ret = -ENOSYS; -+ //void __user *parg = (void __user *)arg; -+ -+ if (!capable(CAP_SYS_ADMIN)) -+ return -EACCES; -+ -+ if (test_and_set_bit(EINK_WORKING, eink->flags)) -+ return -EBUSY; -+ -+ spin_lock_irqsave(&eink->lock, flags); -+ -+ switch (cmd) { -+ case EINK_IOCTL_UPDATE: -+ eink->last_request = EINK_REQ_UPDATE; -+ ret = 0; -+ break; -+ /* -+ case EINK_IOCTL_BLANK: -+ eink->last_request = EINK_REQ_BLANK; -+ ret = 0; -+ break; -+ case EINK_IOCTL_STATUS: -+ if (copy_to_user(parg, &powered, sizeof powered)) -+ return -EFAULT; -+ -+ return 0; -+ */ -+ } -+ -+ spin_unlock_irqrestore(&eink->lock, flags); -+ -+ if (ret == 0) -+ queue_work(eink->wq, &eink->work); -+ else -+ clear_bit(EINK_WORKING, eink->flags); -+ -+ return ret; -+} -+ -+static int eink_release(struct inode *ip, struct file *fp) -+{ -+ struct eink_dev* eink = fp->private_data; -+ -+ clear_bit(EINK_OPEN, eink->flags); -+ return 0; -+} -+ -+static int eink_open(struct inode *ip, struct file *fp) -+{ -+ struct eink_dev* eink = container_of(ip->i_cdev, struct eink_dev, cdev); -+ -+ if (test_and_set_bit(EINK_OPEN, eink->flags)) -+ return -EBUSY; -+ -+ fp->private_data = eink; -+ -+ nonseekable_open(ip, fp); -+ return 0; -+} -+ -+static const struct file_operations eink_fops = { -+ .owner = THIS_MODULE, -+ .read = eink_read, -+ .write = eink_write, -+ .poll = eink_poll, -+ .unlocked_ioctl = eink_ioctl, -+ .open = eink_open, -+ .release = eink_release, -+ .llseek = noop_llseek, -+}; -+ -+static struct regmap_config eink_tcon_regmap_config = { -+ .name = "tcon", -+ .reg_bits = 32, -+ .val_bits = 32, -+ .reg_stride = 4, -+ .max_register = 0x7ff, -+ .cache_type = REGCACHE_NONE, -+}; -+ -+static struct regmap_config eink_be_regmap_config = { -+ .name = "be", -+ .reg_bits = 32, -+ .val_bits = 32, -+ .reg_stride = 4, -+ .max_register = 0x57ff, -+ .cache_type = REGCACHE_NONE, -+}; -+ -+static struct class* eink_class; -+ -+static irqreturn_t eink_tcon0_irq_handler(int irq, void *private) -+{ -+ struct eink_dev *eink = private; -+ struct regmap *tcon = eink->tcon_regs; -+ unsigned int status; -+ -+ regmap_read(eink->tcon_regs, SUN4I_TCON_GINT0_REG, &status); -+ -+ if (!(status & (SUN4I_TCON_GINT0_VBLANK_INT(0) | -+ SUN4I_TCON_GINT0_LINE_INT(0)))) -+ return IRQ_NONE; -+ -+ // stop everything -+ //regmap_write(tcon, SUN4I_TCON_GCTL_REG, 0); -+ -+ regmap_update_bits(tcon, SUN4I_TCON0_CTL_REG, -+ SUN4I_TCON0_CTL_TCON_ENABLE, -+ 0); -+ -+ regmap_write(tcon, SUN4I_TCON_GINT0_REG, 0); -+ regmap_write(tcon, SUN4I_TCON_GINT1_REG, 0); -+ //regmap_write(tcon, SUN4I_TCON0_DCLK_REG, 0); -+ //regmap_write(tcon, SUN4I_TCON0_IO_TRI_REG, ~0); -+ -+ clear_bit(EINK_WAITING_INT, eink->flags); -+ wake_up(&eink->waitqueue); -+ -+ /* -+ regmap_update_bits(eink->tcon_regs, SUN4I_TCON_GINT0_REG, -+ SUN4I_TCON_GINT0_VBLANK_INT(0) | -+ SUN4I_TCON_GINT0_LINE_INT(0), -+ 0); -+ */ -+ -+ return IRQ_HANDLED; -+} -+ -+static const struct clk_bulk_data eink_clocks[] = { -+ { .id = "tcon_bus" }, -+ { .id = "tcon_mod" }, -+ { .id = "be_bus" }, -+ { .id = "be_mod" }, -+ { .id = "be_ram" }, -+}; -+ -+static int eink_probe(struct platform_device *pdev) -+{ -+ struct eink_dev *eink; -+ struct device *dev = &pdev->dev; -+ struct device_node *np = dev->of_node; -+ struct device *sdev; -+ const char* cdev_name = NULL; -+ void __iomem *tcon_regs, *be_regs; -+ int ret, i, fb_size, cs_size; -+ -+ eink = devm_kzalloc(dev, sizeof(*eink), GFP_KERNEL); -+ if (!eink) -+ return -ENOMEM; -+ -+ eink->panel = &eink_ed060xd4_panel; -+ fb_size = eink->panel->sources / 4 * eink->panel->gates; -+ -+ // we shift four 2-bit source values per clock cycle -+ cs_size = ((eink->panel->sources / 4 + eink->panel->h_lead + eink->panel->h_trail) * -+ (eink->panel->gates + eink->panel->v_extra)) * 4; -+ -+ eink->framebuffers[0] = devm_kzalloc(dev, fb_size, GFP_KERNEL); -+ if (!eink->framebuffers[0]) -+ return -ENOMEM; -+ -+ eink->framebuffers[1] = devm_kzalloc(dev, fb_size, GFP_KERNEL); -+ if (!eink->framebuffers[1]) -+ return -ENOMEM; -+ -+ eink->dev = dev; -+ platform_set_drvdata(pdev, eink); -+ init_waitqueue_head(&eink->waitqueue); -+ spin_lock_init(&eink->lock); -+ INIT_WORK(&eink->work, &eink_work_handler); -+ timer_setup(&eink->powerdown_timer, eink_supply_powerdown_timer, 0); -+ -+ ret = of_dma_configure(dev, dev->of_node, true); -+ if (ret) { -+ dev_err(dev, "failed to configure dma (%d)\n", ret); -+ return ret; -+ } -+ -+ tcon_regs = devm_platform_ioremap_resource(pdev, 0); -+ if (IS_ERR(tcon_regs)) -+ return PTR_ERR(tcon_regs); -+ -+ be_regs = devm_platform_ioremap_resource(pdev, 1); -+ if (IS_ERR(be_regs)) -+ return PTR_ERR(be_regs); -+ -+ eink->pinctrl = devm_pinctrl_get(dev); -+ if (IS_ERR(eink->pinctrl)) { -+ ret = PTR_ERR(eink->pinctrl); -+ dev_err(dev, "can't get pinctrl (%d)\n", ret); -+ return ret; -+ } -+ -+ eink->pinctrl_active = pinctrl_lookup_state(eink->pinctrl, "active"); -+ if (!eink->pinctrl_active) { -+ dev_err(dev, "missing active pinctrl state"); -+ return -EINVAL; -+ } -+ -+ eink->pinctrl_idle = pinctrl_lookup_state(eink->pinctrl, "idle"); -+ if (!eink->pinctrl_idle) { -+ dev_err(dev, "missing idle pinctrl state"); -+ return -EINVAL; -+ } -+ -+ ret = pinctrl_select_state(eink->pinctrl, eink->pinctrl_idle); -+ if (ret) { -+ dev_err(eink->dev, "can't switch to idle pinctrl state (%d)", -+ ret); -+ return ret; -+ } -+ -+ eink->gpios = devm_gpiod_get_array(dev, "all", GPIOD_OUT_LOW); -+ if (IS_ERR(eink->gpios)) { -+ ret = PTR_ERR(eink->gpios); -+ dev_err(dev, "can't get all gpios (%d)\n", ret); -+ return ret; -+ } -+ -+ eink->irq = platform_get_irq(pdev, 0); -+ if (eink->irq < 0) { -+ dev_err(dev, "Couldn't retrieve the TCON interrupt\n"); -+ return eink->irq; -+ } -+ -+ ret = of_property_read_string(np, "control-device-name", &cdev_name); -+ if (ret) { -+ dev_err(dev, "char-device-name is not configured (%d)\n", ret); -+ return ret; -+ } -+ -+ eink->panel_supply = devm_regulator_get(dev, "panel"); -+ if (IS_ERR(eink->panel_supply)) { -+ ret = PTR_ERR(eink->panel_supply); -+ dev_err(dev, "can't get panel supply (%d)\n", ret); -+ return ret; -+ } -+ -+ eink->clks = devm_kmemdup(dev, eink_clocks, sizeof(eink_clocks), -+ GFP_KERNEL); -+ if (!eink->clks) -+ return -ENOMEM; -+ -+ eink->num_clks = ARRAY_SIZE(eink_clocks); -+ ret = devm_clk_bulk_get(dev, eink->num_clks, eink->clks); -+ if (ret) -+ return ret; -+ -+ eink->rstc = devm_reset_control_array_get(dev, false, false); -+ if (IS_ERR(eink->rstc)) { -+ ret = PTR_ERR(eink->rstc); -+ dev_err(dev, "Couldn't get our reset line (%d)\n", ret); -+ return ret; -+ } -+ -+ eink->tcon_regs = devm_regmap_init_mmio(dev, tcon_regs, &eink_tcon_regmap_config); -+ if (IS_ERR(eink->tcon_regs)) { -+ ret = PTR_ERR(eink->tcon_regs); -+ dev_err(dev, "Couldn't create the TCON regmap (%d)\n", ret); -+ return ret; -+ } -+ -+ eink->be_regs = devm_regmap_init_mmio(dev, be_regs, &eink_be_regmap_config); -+ if (IS_ERR(eink->be_regs)) { -+ ret = PTR_ERR(eink->be_regs); -+ dev_err(dev, "Couldn't create the BE regmap (%d)\n", ret); -+ return ret; -+ } -+ -+ // init the actual hardware -+ ret = reset_control_deassert(eink->rstc); -+ if (ret) { -+ dev_err(dev, "Couldn't deassert our reset line (%d)\n", ret); -+ return ret; -+ } -+ -+ // possible to set 27-381MHz in 3MHz steps -+ ret = clk_set_rate(eink->clks[1].clk, 120000000); -+ if (ret) { -+ dev_err(dev, "Couldn't set tcon0 rate to (%d)\n", ret); -+ goto err_reset; -+ } -+ -+ ret = clk_bulk_prepare_enable(eink->num_clks, eink->clks); -+ if (ret) { -+ dev_err(dev, "Couldn't enable clocks (%d)\n", ret); -+ goto err_reset; -+ } -+ -+ /* Clear DEBE registers */ -+ for (i = 0x800; i < 0x1000; i += 4) -+ regmap_write(eink->be_regs, i, 0); -+ -+ /* Disable registers autoloading */ -+ regmap_write(eink->be_regs, -+ SUN4I_BACKEND_REGBUFFCTL_REG, -+ SUN4I_BACKEND_REGBUFFCTL_AUTOLOAD_DIS); -+ -+ regmap_write(eink->be_regs, -+ SUN4I_BACKEND_MODCTL_REG, -+ SUN4I_BACKEND_MODCTL_START_CTL); -+ -+ /* Enable the backend */ -+ regmap_write(eink->be_regs, -+ SUN4I_BACKEND_MODCTL_REG, -+ SUN4I_BACKEND_MODCTL_DEBE_EN | -+ SUN4I_BACKEND_MODCTL_START_CTL | -+ SUN4I_BACKEND_MODCTL_OUT_LCD0 | -+ SUN4I_BACKEND_MODCTL_LAY_EN(0)); -+ -+ /* Make sure the TCON is disabled and all IRQs are off */ -+ regmap_write(eink->tcon_regs, SUN4I_TCON_GCTL_REG, 0); -+ regmap_write(eink->tcon_regs, SUN4I_TCON_GINT0_REG, 0); -+ regmap_write(eink->tcon_regs, SUN4I_TCON_GINT1_REG, 0); -+ -+ /* Disable IO lines and set them to tristate */ -+ regmap_write(eink->tcon_regs, SUN4I_TCON0_IO_TRI_REG, ~0); -+ -+ ret = devm_request_irq(dev, eink->irq, eink_tcon0_irq_handler, 0, -+ dev_name(dev), eink); -+ if (ret) { -+ dev_err(dev, "Couldn't request the IRQ\n"); -+ goto err_disable_hw; -+ } -+ -+ // create char device -+ ret = alloc_chrdev_region(&eink->major, 0, 1, "eink"); -+ if (ret) { -+ dev_err(dev, "can't allocate chrdev region"); -+ goto err_disable_hw; -+ } -+ -+ cdev_init(&eink->cdev, &eink_fops); -+ eink->cdev.owner = THIS_MODULE; -+ ret = cdev_add(&eink->cdev, eink->major, 1); -+ if (ret) { -+ dev_err(dev, "can't add cdev"); -+ goto err_unreg_chrev_region; -+ } -+ -+ sdev = device_create(eink_class, dev, eink->major, eink, cdev_name); -+ if (IS_ERR(sdev)) { -+ ret = PTR_ERR(sdev); -+ goto err_del_cdev; -+ } -+ -+ eink->ctlstream_size = round_up(cs_size, PAGE_SIZE); -+ eink->ctlstream = dma_alloc_wc(dev, eink->ctlstream_size, -+ &eink->ctlstream_paddr, -+ GFP_KERNEL | __GFP_NOWARN); -+ if (!eink->ctlstream) { -+ ret = -ENOMEM; -+ dev_err(dev, "failed to allocate buffer with size %zu\n", -+ eink->ctlstream_size); -+ goto err_destroy_device; -+ } -+ -+ eink_ctlstream_prepare(eink); -+ -+ eink->wq = alloc_workqueue("eink", WQ_SYSFS | WQ_HIGHPRI, 0); -+ if (!eink->wq) { -+ ret = -ENOMEM; -+ dev_err(dev, "failed to allocate workqueue\n"); -+ goto err_free_dma; -+ } -+ -+ dev_info(dev, "eink-panel driver ready!\n"); -+ return 0; -+ -+err_free_dma: -+ dma_free_wc(eink->dev, eink->ctlstream_size, eink->ctlstream, -+ eink->ctlstream_paddr); -+err_destroy_device: -+ device_destroy(eink_class, eink->major); -+err_del_cdev: -+ cdev_del(&eink->cdev); -+err_unreg_chrev_region: -+ unregister_chrdev(eink->major, "eink"); -+err_disable_hw: -+ clk_bulk_disable_unprepare(eink->num_clks, eink->clks); -+err_reset: -+ reset_control_assert(eink->rstc); -+ cancel_work_sync(&eink->work); -+ -+ return ret; -+} -+ -+static int eink_remove(struct platform_device *pdev) -+{ -+ struct eink_dev *eink = platform_get_drvdata(pdev); -+ -+ eink_set_power(eink, 0); -+ -+ del_timer_sync(&eink->powerdown_timer); -+ cancel_work_sync(&eink->work); -+ destroy_workqueue(eink->wq); -+ -+ dma_free_wc(eink->dev, eink->ctlstream_size, eink->ctlstream, -+ eink->ctlstream_paddr); -+ -+ clk_bulk_disable_unprepare(eink->num_clks, eink->clks); -+ reset_control_assert(eink->rstc); -+ -+ device_destroy(eink_class, eink->major); -+ cdev_del(&eink->cdev); -+ unregister_chrdev(eink->major, "eink"); -+ -+ return 0; -+} -+ -+static const struct of_device_id eink_of_match[] = { -+ { .compatible = "custom,pocketbook-touch-lux-3-tcon0-ed060xd4-display" }, -+ {}, -+}; -+MODULE_DEVICE_TABLE(of, eink_of_match); -+ -+static struct platform_driver eink_platform_driver = { -+ .probe = eink_probe, -+ .remove = eink_remove, -+ .driver = { -+ .name = "eink_tcon0", -+ .of_match_table = eink_of_match, -+ }, -+}; -+ -+static int __init eink_driver_init(void) -+{ -+ int ret; -+ -+ eink_class = class_create("eink-panel"); -+ -+ ret = platform_driver_register(&eink_platform_driver); -+ if (ret) -+ class_destroy(eink_class); -+ -+ return ret; -+} -+ -+static void __exit eink_driver_exit(void) -+{ -+ platform_driver_unregister(&eink_platform_driver); -+ class_destroy(eink_class); -+} -+ -+module_init(eink_driver_init); -+module_exit(eink_driver_exit); -+ -+MODULE_VERSION("1.0.0"); -+MODULE_DESCRIPTION("eInk display Allwinner TCON0 based bit-banging driver"); -+MODULE_AUTHOR("Ondrej Jirman "); -+MODULE_LICENSE("GPL v2"); --- -2.34.1 - diff --git a/patch/kernel/archive/sunxi-6.6/series.megous b/patch/kernel/archive/sunxi-6.6/series.megous index 2e5aa2abebb4..1baec24d900a 100644 --- a/patch/kernel/archive/sunxi-6.6/series.megous +++ b/patch/kernel/archive/sunxi-6.6/series.megous @@ -50,7 +50,6 @@ patches.megous/sound-soc-sun8i-codec-Drop-debug-statements.patch patches.megous/sound-soc-ac100-codec-Support-analog-part-of-X-Powers-AC100-cod.patch patches.megous/sound-soc-ac100-Make-sure-we-shutdown-the-audio-outputs-on-rebo.patch -- patches.megous/Move-a-node-to-avoid-merge-conflict.patch patches.megous/ASoC-sunxi-sun8i-codec-Improve-jack-button-handling-and-mic-det.patch patches.megous/dt-bindings-axp20x-adc-allow-to-use-TS-pin-as-GPADC.patch patches.megous/iio-adc-axp20x_adc-allow-to-set-TS-pin-to-GPADC-mode.patch @@ -98,8 +97,6 @@ patches.megous/drm-sun4i-Unify-sun8i_-_layer-structs.patch patches.megous/drm-sun4i-Add-more-parameters-to-sunxi_engine-commit-callback.patch patches.megous/drm-sun4i-Fix-layer-zpos-change-atomic-modesetting.patch -- patches.megous/drm-sun4i-Fix-wrong-location-of-clk_prepare_enable.patch -- patches.megous/drm-sun4i-Mark-one-of-the-UI-planes-as-a-cursor-one.patch patches.megous/drm-sun4i-Implement-gamma-correction.patch patches.megous/drm-panel-st7703-Improve-the-power-up-down-sequence-of-the-pane.patch patches.megous/drm-panel-st7703-Fix-xbd599-timings-to-make-refresh-rate-exactl.patch @@ -119,8 +116,6 @@ patches.megous/arm64-dts-allwinner-Enforce-consistent-MMC-numbering.patch patches.megous/ARM-dts-sunxi-Add-aliases-for-MMC.patch patches.megous/of-property-fw_devlink-Support-allwinner-sram-links.patch -- patches.megous/drm-rockchip-Fix-panic-on-reboot-when-DRM-device-fails-to-bind.patch -- patches.megous/arm64-dts-rockchip-rk356x-Fix-PCIe-register-map-and-ranges.patch patches.megous/ARM-dts-sun8i-a83t-Add-missing-GPU-trip-point.patch patches.megous/arm64-dts-sun50i-h5-Add-missing-GPU-trip-point.patch patches.megous/Fix-intptr_t-typedef.patch @@ -147,7 +142,6 @@ patches.megous/input-cyttsp4-Restart-on-wakeup-wakeup-by-I2C-read-doesn-t-work.patch patches.megous/input-cyttsp4-Fix-warnings.patch patches.megous/input-cyttsp4-Make-the-driver-not-hog-the-system-s-workqueue.patch -- patches.megous/video-fbdev-eInk-display-driver-for-A13-based-PocketBooks.patch patches.megous/regulator-Add-simple-driver-for-enabling-a-regulator-from-users.patch patches.megous/regulator-tp65185x-Add-tp65185x-eInk-panel-regulator-driver.patch patches.megous/regulator-tp65185-Add-hwmon-device-for-reading-temperature.patch @@ -161,7 +155,6 @@ patches.megous/iio-core-Add-option-to-force-identity-mount-matrix.patch patches.megous/input-touchscreen-goodix-Add-config-debugfs-file.patch patches.megous/input-goodix-Add-option-to-power-off-the-controller-during-susp.patch -- patches.megous/input-goodix-Don-t-disable-regulators-during-suspend.patch patches.megous/arm64-dts-allwinner-a64-Fix-LRADC-compatible.patch patches.megous/arm64-dts-sun50i-a64-pinephone-Add-front-back-cameras.patch patches.megous/arm64-dts-sun50i-a64-pinephone-Add-Type-C-support-for-all-PP-va.patch @@ -185,10 +178,8 @@ patches.megous/arm64-dts-sun50i-a64-pinephone-Add-mount-matrix-for-PinePhone-m.patch patches.megous/arm64-dts-sun50i-a64-pinephone-Add-support-for-Pinephone-keyboa.patch patches.megous/arm64-dts-sun50i-a64-pinephone-Enable-Pinephone-Keyboard-power-.patch -- patches.megous/usb-musb-sunxi-Avoid-enabling-host-side-code-on-SoCs-where-it-s.patch patches.megous/arm64-dts-sun50i-a64-Add-missing-trip-points-for-GPU.patch patches.megous/arm64-dts-allwinner-sun50i-a64-pinephone-Add-support-for-Pineph.patch -- patches.megous/Revert-input-goodix-Don-t-disable-regulators-during-suspend.patch patches.megous/iio-stk3310-Implement-vdd-supply-and-power-it-off-during-suspen.patch patches.megous/iio-light-stk3310-Add-support-for-I2C-regulator.patch patches.megous/input-touch-goodix-Try-to-keep-regulator-enable-disable-balance.patch @@ -224,7 +215,6 @@ patches.megous/rtc-sun6i-Allow-RTC-wakeup-after-shutdown.patch patches.megous/mmc-sunxi-mmc-Remove-runtime-PM.patch patches.megous/arm64-dts-pinephone-Add-reboot-mode-driver.patch - patches.megous/tty-serial-8250-dw-Use-fifo-size-from-DTS.patch patches.megous/arm64-dts-sun50i-a64-Set-fifo-size-for-uarts.patch patches.megous/ARM-dts-sun8i-a83t-Set-fifo-size-for-uarts.patch patches.megous/Mark-some-slow-drivers-for-async-probe-with-PROBE_PREFER_ASYNCH.patch From 0cd71f383f53fa3f594a7843100e922fb61d38b7 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Thu, 4 Jul 2024 13:28:36 +0300 Subject: [PATCH 3/8] sunxi-6.6: armbian: delete unused ones, replace changed ones. Now the names of the patch files correspond to the entry in the commit message. Patches that have been transferred (copied) since time immemorial and require revision have been removed. No one wants to deal with them. --- ...-size-if-no-ZONE_DMA-bouncing-needed.patch | 56 - ...nanopiduo2-Use-key-0-as-power-button.patch | 31 + ...dts-sun8i-nanopiduo2-enable-ethernet.patch | 31 + .../ASoC-AC200-Initial-driver.patch | 7 +- ....patch => Add-FB_TFT-ST7796S-driver.patch} | 9 +- ...d-dump_reg-and-sunxi-sysinfo-drivers.patch | 20 +- ...to-fix-uwe5622-bluetooth-MAC-address.patch | 12 +- ...> Add-wifi-nodes-for-Inovato-Quadra.patch} | 11 +- ...s2812-RGB-driver-for-allwinner-H616.patch} | 7 +- ...ding-for-DWC3-controller-on-Allwinne.patch | 7 +- ...media-uapi-hevc-tiles-and-num_slices.patch | 37 - ...20x-pek-allow-wakeup-after-shutdown.patch} | 4 +- ...s_heartbeat-arch-arm64-boot-dts-all.patch} | 10 +- ...i-h6-pwm-settings-to-its-own-overlay.patch | 9 +- ...2007-touchscreen-add-polling-method.patch} | 8 +- ...r-SOCs-arch-arm64-boot-dts-allwinne.patch} | 196 +- ...boot-dts-allwinner-sun50i-a64-pinep.patch} | 4 +- ...pi-hevc-add-fields-needed-for-rkvdec.patch | 66 - ...b1.patch => add-bigtreetech-cb1-dts.patch} | 17 +- ...patch => add-dtb-overlay-for-zero2w.patch} | 21 +- ...dd-initial-support-for-orangepi3-lts.patch | 11 +- ...-info-sunxi-addr-and-sunxi-dump-reg.patch} | 17 +- ...inctr-arch-arm-boot-dts-allwinner-s.patch} | 10 +- ...s-allwinner-sun50i-h616-PG-12c-pins.patch} | 8 +- ...-allwinner-sun50i-h616-spi1-cs1-pin.patch} | 10 +- ...winner-sun50i-h618-bananapi-m4-zero.patch} | 12 +- ...-Add-sun8i-h2-plus-nanopi-duo-device.patch | 9 +- ...Add-sun8i-h2-plus-sunvell-r69-device.patch | 9 +- ...m-dts-overlay-Add-Overlays-for-sunxi.patch | 294 ++- ...lay-sun8i-h3-cpu-clock-add-overclock.patch | 15 +- ...duo2-enable-powerbutton-and-ethernet.patch | 62 - ...microvolt-to-prevent-not-supported-.patch} | 4 +- ...-Add-sun50i-h5-nanopi-k1-plus-device.patch | 9 +- ...Add-sun50i-h5-nanopi-m1-plus2-device.patch | 9 +- ...dd-sun50i-h5-nanopi-neo-core2-device.patch | 9 +- ...dd-sun50i-h5-nanopi-neo2-v1.1-device.patch | 9 +- ...that-are-also-compatible-with-orang.patch} | 18 +- ...-sun50i-h616.dtsi-add-usb-ehci-ohci.patch} | 6 +- ...ts-allwinner-h6-Add-AC200-EPHY-nodes.patch | 10 +- ...s-allwinner-h6-add-AC200-codec-nodes.patch | 12 +- ...-efuse_xlate-cpu-frequency-scaling-.patch} | 35 +- ...Fix-thermal-zones-add-missing-trips.patch} | 8 +- ...ngepi-zero2-Enable-expansion-board-.patch} | 10 +- ...ner-overlay-Add-Overlays-for-sunxi64.patch | 150 +- ...-dts-allwinner-sun50i-h6-Fix-H6-emmc.patch | 8 +- ...add-hdmi-support-for-zero2-and-zero3.patch | 14 +- ...port-for-orange-pi-zero-2-and-zero3.patch} | 13 +- ...-overlay-sun50i-a64-pine64-7inch-lcd.patch | 11 +- ...n50i-h5-add-gpio-regulator-overclock.patch | 18 +- ...n50i-a64-add-dts-for-recore-a5-to-a8.patch | 821 ------ ...-dts-sun50i-a64-olinuxino-add-boards.patch | 21 +- ...5-nanopi-r1s-h5-add-rtl8153-support.patch} | 6 +- ...sun50i-h5-orangepi-pc2-add-spi-flash.patch | 10 +- ...ts-sun50i-h6-Add-r_uart-uart2-3-pins.patch | 14 +- ...50i-h6.dtsi-add-pinctrl-pins-for-spi.patch | 10 +- ...-dts-sun50i-h6.dtsi-improve-thermals.patch | 10 +- ...-h616-orangepi-zero2-Enable-GPU-mali.patch | 8 +- ...-h618-orangepi-zero3-Enable-GPU-mali.patch | 8 +- ...igtreetech-cb1.patch => cb1-overlay.patch} | 39 +- ...patch => driver-allwinner-h618-emac.patch} | 7 +- ...vers-hack-for-h616-hdmi-video-output.patch | 28 +- ...d-pwm-sunxi-enhance-driver-for-h616.patch} | 7 +- ...u-sun50i-a64-revert-ccu-Pinebook-A64.patch | 64 - ...simple-Add-compability-olinuxino-lcd.patch | 16 +- .../drv-gpu-drm-sun4i-Add-GEM-allocator.patch | 9 +- ...4i-Add-HDMI-audio-sun4i-hdmi-encoder.patch | 19 +- ...rm-sun4i-sun8i_mixer.c-add-h3-mixer1.patch | 12 +- ...drv-media-cedrus-10-bit-HEVC-support.patch | 170 -- ...drus-Add-callback-for-buffer-cleanup.patch | 57 - ...edrus-h264-Improve-buffer-management.patch | 207 -- ...edrus-hevc-Improve-buffer-management.patch | 245 -- .../drv-media-cedrus-hevc-tiles-hack.patch | 180 -- ...mac-sun8i-second-EMAC-clock-register.patch | 14 +- ...-nvmem-sunxi_sid-Support-SID-on-H616.patch | 10 +- ...vice-Tree-Overlay-ConfigFS-interface.patch | 7 +- ...able-TV-Output-on-OrangePi-Zero-LTE.patch} | 44 +- ...pport-for-X-Powers-AC200-EPHY-syscon.patch | 7 +- .../mfd-Add-support-for-X-Powers-AC200.patch | 11 +- .../net-phy-Add-support-for-AC200-EPHY.patch | 9 +- .../net-phy-Support-yt8531c.patch | 2348 ----------------- ...-r8152-add-LED-configuration-from-OF.patch | 16 +- ...unxi_get_soc_chipid-sunxi_get_serial.patch | 10 +- ...tb.patch => orangepi-zero2w-add-dtb.patch} | 11 +- patch/kernel/archive/sunxi-6.6/series.armbian | 82 +- 84 files changed, 906 insertions(+), 5004 deletions(-) delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.armbian/0010-arm64-swiotlb-Reduce-the-default-size-if-no-ZONE_DMA-bouncing-needed.patch create mode 100644 patch/kernel/archive/sunxi-6.6/patches.armbian/ARM-dts-sun8i-nanopiduo2-Use-key-0-as-power-button.patch create mode 100644 patch/kernel/archive/sunxi-6.6/patches.armbian/ARM-dts-sun8i-nanopiduo2-enable-ethernet.patch rename patch/kernel/archive/sunxi-6.6/patches.armbian/{drv-staging-fbtft-add-st7796s.patch => Add-FB_TFT-ST7796S-driver.patch} (94%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-add-wifi-nodes-for-Inovato-Quadra.patch => Add-wifi-nodes-for-Inovato-Quadra.patch} (86%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{drv-rgb-add-ws2812.patch => Add-ws2812-RGB-driver-for-allwinner-H616.patch} (97%) delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.armbian/HACK-media-uapi-hevc-tiles-and-num_slices.patch rename patch/kernel/archive/sunxi-6.6/patches.armbian/{drivers-input-axp20x-pek-allow-wakeup-after-shutdown.patch => Input-axp20x-pek-allow-wakeup-after-shutdown.patch} (95%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-allwinner-h616-LED-green_power_on-red_status_heartbeat.patch => LED-green_power_on-red_status_heartbeat-arch-arm64-boot-dts-all.patch} (83%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{drv-touchscreen-tsc2007-polling.patch => Optimize-TSC2007-touchscreen-add-polling-method.patch} (96%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{sound-soc-sunxi-h616-h618.patch => Sound-for-H616-H618-Allwinner-SOCs-arch-arm64-boot-dts-allwinne.patch} (97%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-sun50i-a64-pinephone-wowlan.patch => Temp_fix-mailbox-arch-arm64-boot-dts-allwinner-sun50i-a64-pinep.patch} (95%) delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.armbian/WIP-media-uapi-hevc-add-fields-needed-for-rkvdec.patch rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-sun50i-h616-bigtreetech-cb1.patch => add-bigtreetech-cb1-dts.patch} (94%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-sun50i-h618-add-overlay.patch => add-dtb-overlay-for-zero2w.patch} (94%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{add-nodes-for-sunxi-info-addr-dump-reg.patch => add-nodes-for-sunxi-info-sunxi-addr-and-sunxi-dump-reg.patch} (79%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm-dts-orangepi-one-pinctr-dummy-regulators.patch => adding-dummy-regulators-in-pinctr-arch-arm-boot-dts-allwinner-s.patch} (73%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch => arch-arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch} (83%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch => arch-arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch} (74%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-allwinner-sun50i-h618-bananapi-m4-zero.patch => arch-arm64-dts-allwinner-sun50i-h618-bananapi-m4-zero.patch} (95%) delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-sun8i-h3-nanopi-duo2-enable-powerbutton-and-ethernet.patch rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm-dts-sun8i-h3-reduce-opp-microvolt-to-prevent-not.patch => arm-dts-sun8i-h3-reduce-opp-microvolt-to-prevent-not-supported-.patch} (95%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-H616-Add-overlays-that-are-also-compatible-with.patch => arm64-dts-H616-Add-overlays-that-are-also-compatible-with-orang.patch} (91%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-allwiner-sun50i-h616.dtsi-add-usb-ehci-ohc.patch => arm64-dts-allwiner-sun50i-h616.dtsi-add-usb-ehci-ohci.patch} (93%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-v1_6_2.patch => arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-.patch} (93%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-allwinner-h616-Fix-thermal-zones-missing-trips.patch => arm64-dts-allwinner-h616-Fix-thermal-zones-add-missing-trips.patch} (89%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-allwinner-h616-orangepi-zero2-Enable-expansion-board-USB-ports.patch => arm64-dts-allwinner-h616-orangepi-zero2-Enable-expansion-board-.patch} (81%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2.patch => arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2-and-zero3.patch} (85%) delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-a64-add-dts-for-recore-a5-to-a8.patch rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-sun50i-h5-nanopi-r1s-h5-add-rtl8153-suppor.patch => arm64-dts-sun50i-h5-nanopi-r1s-h5-add-rtl8153-support.patch} (86%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-overlay-sun50i-h616-bigtreetech-cb1.patch => cb1-overlay.patch} (88%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{drv-net-gmac-sun50i-h616-gmac.patch => driver-allwinner-h618-emac.patch} (99%) rename patch/kernel/archive/sunxi-6.6/patches.armbian/{drv-pwm-sun50i-h616-enhance-pwm.patch => drivers-pwm-Add-pwm-sunxi-enhance-driver-for-h616.patch} (99%) delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.armbian/drv-clk-sunxi-ng-ccu-sun50i-a64-revert-ccu-Pinebook-A64.patch delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-10-bit-HEVC-support.patch delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-Add-callback-for-buffer-cleanup.patch delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-h264-Improve-buffer-management.patch delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-hevc-Improve-buffer-management.patch delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-hevc-tiles-hack.patch rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm-dts-sunxi-h3-h5-add_tve.patch => enable-TV-Output-on-OrangePi-Zero-LTE.patch} (92%) delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.armbian/net-phy-Support-yt8531c.patch rename patch/kernel/archive/sunxi-6.6/patches.armbian/{arm64-dts-sun50i-h618-orangepi-zero2w-add-dtb.patch => orangepi-zero2w-add-dtb.patch} (98%) diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/0010-arm64-swiotlb-Reduce-the-default-size-if-no-ZONE_DMA-bouncing-needed.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/0010-arm64-swiotlb-Reduce-the-default-size-if-no-ZONE_DMA-bouncing-needed.patch deleted file mode 100644 index c31c4414fbaa..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/0010-arm64-swiotlb-Reduce-the-default-size-if-no-ZONE_DMA-bouncing-needed.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 7648741002eeb851ceb394864253445b77ea3d25 Mon Sep 17 00:00:00 2001 -From: Catalin Marinas -Date: Wed, 10 Apr 2024 08:25:37 -0400 -Subject: [PATCH] arm64: swiotlb: Reduce the default size if no ZONE_DMA - bouncing needed - -With CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC enabled, the arm64 kernel still -allocates the default SWIOTLB buffer (64MB) even if ZONE_DMA is disabled -or all the RAM fits into this zone. However, this potentially wastes a -non-negligible amount of memory on platforms with little RAM. - -Reduce the SWIOTLB size to 1MB per 1GB of RAM if only needed for -kmalloc() buffer bouncing. - -Signed-off-by: Catalin Marinas -Suggested-by: Ross Burton -Cc: Ross Burton -Cc: Will Deacon -Reviewed-by: Robin Murphy ---- - arch/arm64/mm/init.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c -index 8a0f8604348b..8deec68028ac 100644 ---- a/arch/arm64/mm/init.c -+++ b/arch/arm64/mm/init.c -@@ -16,6 +16,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -493,8 +494,16 @@ void __init mem_init(void) - { - bool swiotlb = max_pfn > PFN_DOWN(arm64_dma_phys_limit); - -- if (IS_ENABLED(CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC)) -+ if (IS_ENABLED(CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC) && !swiotlb) { -+ /* -+ * If no bouncing needed for ZONE_DMA, reduce the swiotlb -+ * buffer for kmalloc() bouncing to 1MB per 1GB of RAM. -+ */ -+ unsigned long size = -+ DIV_ROUND_UP(memblock_phys_mem_size(), 1024); -+ swiotlb_adjust_size(min(swiotlb_size_or_default(), size)); - swiotlb = true; -+ } - - swiotlb_init(swiotlb, SWIOTLB_VERBOSE); - --- -2.39.2 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/ARM-dts-sun8i-nanopiduo2-Use-key-0-as-power-button.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/ARM-dts-sun8i-nanopiduo2-Use-key-0-as-power-button.patch new file mode 100644 index 000000000000..055398963704 --- /dev/null +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/ARM-dts-sun8i-nanopiduo2-Use-key-0-as-power-button.patch @@ -0,0 +1,31 @@ +From 7a6264fac2099b181564b09baa283157f19cc069 Mon Sep 17 00:00:00 2001 +From: Gunjan Gupta +Date: Mon, 26 Jun 2023 13:29:46 +0000 +Subject: ARM: dts: sun8i: nanopiduo2: Use key-0 as power button + +The onboard button key-0 was not marked as power button. This meant +that once the board was suspended, there was no way to bring it back +to life. Mark key-0 as power button so that it can be used to bring +the board back to life +--- + arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts +index 343b02b97155..4878d27bab3e 100644 +--- a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts ++++ b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts +@@ -42,8 +42,9 @@ gpio-keys { + + key-0 { + label = "k1"; +- linux,code = ; ++ linux,code = ; + gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; /* PL3 */ ++ wakeup-source; + }; + }; + +-- +2.35.3 + diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/ARM-dts-sun8i-nanopiduo2-enable-ethernet.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/ARM-dts-sun8i-nanopiduo2-enable-ethernet.patch new file mode 100644 index 000000000000..8b6b02ca1082 --- /dev/null +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/ARM-dts-sun8i-nanopiduo2-enable-ethernet.patch @@ -0,0 +1,31 @@ +From c6de1fe93692bf97c0057346eeadbab3b71d05d3 Mon Sep 17 00:00:00 2001 +From: Gunjan Gupta +Date: Mon, 26 Jun 2023 13:53:14 +0000 +Subject: ARM: dts: sun8i: nanopiduo2: enable ethernet + +NanoPi Duo2 has pinout for ethernet. Lets enable the same in dts +--- + arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts +index 4878d27bab3e..8669fd0879e7 100644 +--- a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts ++++ b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts +@@ -105,6 +105,13 @@ &ehci0 { + status = "okay"; + }; + ++&emac { ++ phy-handle = <&int_mii_phy>; ++ phy-mode = "mii"; ++ allwinner,leds-active-low; ++ status = "okay"; ++}; ++ + &mmc0 { + bus-width = <4>; + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ +-- +2.35.3 + diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/ASoC-AC200-Initial-driver.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/ASoC-AC200-Initial-driver.patch index bfb5b4b0ab95..d114c33cc1b0 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/ASoC-AC200-Initial-driver.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/ASoC-AC200-Initial-driver.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From e18f494dcd6db8d9a7074939cd96f2c042acc169 Mon Sep 17 00:00:00 2001 From: Jernej Skrabec Date: Thu, 1 Sep 2022 17:36:53 +0200 Subject: ASoC: AC200: Initial driver @@ -7,8 +7,9 @@ Signed-off-by: Jernej Skrabec --- sound/soc/codecs/Kconfig | 10 + sound/soc/codecs/Makefile | 2 + - sound/soc/codecs/ac200.c | 774 ++++++++++ + sound/soc/codecs/ac200.c | 774 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 786 insertions(+) + create mode 100644 sound/soc/codecs/ac200.c diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig index 68e051ddecd6..aed686afff16 100644 @@ -839,5 +840,5 @@ index 000000000000..113a45408116 +MODULE_AUTHOR("Jernej Skrabec "); +MODULE_LICENSE("GPL"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-staging-fbtft-add-st7796s.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/Add-FB_TFT-ST7796S-driver.patch similarity index 94% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/drv-staging-fbtft-add-st7796s.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/Add-FB_TFT-ST7796S-driver.patch index 8676fe6cda0e..0d69f51cf3c4 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-staging-fbtft-add-st7796s.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/Add-FB_TFT-ST7796S-driver.patch @@ -1,13 +1,14 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From c8afe85b198d4dc383fe541cb2fb166b7d1132fb Mon Sep 17 00:00:00 2001 From: Alan Date: Sat, 20 May 2023 14:33:52 +0800 Subject: Add: FB_TFT ST7796S driver --- - drivers/staging/fbtft/Kconfig | 10 + + drivers/staging/fbtft/Kconfig | 10 +++ drivers/staging/fbtft/Makefile | 1 + - drivers/staging/fbtft/fb_st7796s.c | 100 ++++++++++ + drivers/staging/fbtft/fb_st7796s.c | 100 +++++++++++++++++++++++++++++ 3 files changed, 111 insertions(+) + create mode 100644 drivers/staging/fbtft/fb_st7796s.c diff --git a/drivers/staging/fbtft/Kconfig b/drivers/staging/fbtft/Kconfig index 5dda3c65a38e..8e491c9f6c0e 100644 @@ -149,5 +150,5 @@ index 000000000000..cad489cef595 +MODULE_AUTHOR("Alan Ma"); +MODULE_LICENSE("GPL"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/Add-dump_reg-and-sunxi-sysinfo-drivers.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/Add-dump_reg-and-sunxi-sysinfo-drivers.patch index 9e6c3c121489..cd740138e9a8 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/Add-dump_reg-and-sunxi-sysinfo-drivers.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/Add-dump_reg-and-sunxi-sysinfo-drivers.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 9d110a13e2fe9c4a020985b3534f2a5be67dacbd Mon Sep 17 00:00:00 2001 From: afaulkner420 Date: Fri, 25 Mar 2022 19:28:00 +0000 Subject: Add dump_reg and sunxi-sysinfo drivers @@ -8,13 +8,21 @@ Subject: Add dump_reg and sunxi-sysinfo drivers drivers/char/Makefile | 2 + drivers/char/dump_reg/Kconfig | 21 + drivers/char/dump_reg/Makefile | 2 + - drivers/char/dump_reg/dump_reg.c | 888 ++++++++++ - drivers/char/dump_reg/dump_reg.h | 132 ++ - drivers/char/dump_reg/dump_reg_misc.c | 209 +++ + drivers/char/dump_reg/dump_reg.c | 888 +++++++++++++++++++++ + drivers/char/dump_reg/dump_reg.h | 132 +++ + drivers/char/dump_reg/dump_reg_misc.c | 209 +++++ drivers/char/sunxi-sysinfo/Kconfig | 10 + drivers/char/sunxi-sysinfo/Makefile | 5 + - drivers/char/sunxi-sysinfo/sunxi-sysinfo.c | 177 ++ + drivers/char/sunxi-sysinfo/sunxi-sysinfo.c | 177 ++++ 10 files changed, 1448 insertions(+) + create mode 100644 drivers/char/dump_reg/Kconfig + create mode 100644 drivers/char/dump_reg/Makefile + create mode 100644 drivers/char/dump_reg/dump_reg.c + create mode 100644 drivers/char/dump_reg/dump_reg.h + create mode 100644 drivers/char/dump_reg/dump_reg_misc.c + create mode 100644 drivers/char/sunxi-sysinfo/Kconfig + create mode 100644 drivers/char/sunxi-sysinfo/Makefile + create mode 100644 drivers/char/sunxi-sysinfo/sunxi-sysinfo.c diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig index 625af75833fc..b26c72ad100c 100644 @@ -1539,5 +1547,5 @@ index 000000000000..a5b4e6c0b578 +MODULE_AUTHOR("xiafeng"); +MODULE_DESCRIPTION("sunxi sys info."); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/Add-sunxi-addr-driver-Used-to-fix-uwe5622-bluetooth-MAC-address.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/Add-sunxi-addr-driver-Used-to-fix-uwe5622-bluetooth-MAC-address.patch index ab9a3f0ce1f8..d2af12f5548f 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/Add-sunxi-addr-driver-Used-to-fix-uwe5622-bluetooth-MAC-address.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/Add-sunxi-addr-driver-Used-to-fix-uwe5622-bluetooth-MAC-address.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 6f085079d8a204f54785bbac5225ef5c43572670 Mon Sep 17 00:00:00 2001 From: afaulkner420 Date: Fri, 25 Mar 2022 20:18:18 +0000 Subject: Add sunxi-addr driver - Used to fix uwe5622 bluetooth MAC addresses @@ -8,9 +8,13 @@ Subject: Add sunxi-addr driver - Used to fix uwe5622 bluetooth MAC addresses drivers/misc/Makefile | 1 + drivers/misc/sunxi-addr/Kconfig | 6 + drivers/misc/sunxi-addr/Makefile | 5 + - drivers/misc/sunxi-addr/sha256.c | 178 +++++ - drivers/misc/sunxi-addr/sunxi-addr.c | 357 ++++++++++ + drivers/misc/sunxi-addr/sha256.c | 178 +++++++++++++ + drivers/misc/sunxi-addr/sunxi-addr.c | 357 +++++++++++++++++++++++++++ 6 files changed, 548 insertions(+) + create mode 100644 drivers/misc/sunxi-addr/Kconfig + create mode 100644 drivers/misc/sunxi-addr/Makefile + create mode 100644 drivers/misc/sunxi-addr/sha256.c + create mode 100644 drivers/misc/sunxi-addr/sunxi-addr.c diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig index 57201f491f8d..26f2df508f70 100644 @@ -602,5 +606,5 @@ index 000000000000..f4f2dcecbb48 +MODULE_DESCRIPTION("Network MAC Addess Manager"); +MODULE_LICENSE("GPL"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-add-wifi-nodes-for-Inovato-Quadra.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/Add-wifi-nodes-for-Inovato-Quadra.patch similarity index 86% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-add-wifi-nodes-for-Inovato-Quadra.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/Add-wifi-nodes-for-Inovato-Quadra.patch index b704f9395b98..8f6674e7ab6f 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-add-wifi-nodes-for-Inovato-Quadra.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/Add-wifi-nodes-for-Inovato-Quadra.patch @@ -1,15 +1,16 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 68e3c93f16478ac7a1fe2d64b79c76b96e5782f6 Mon Sep 17 00:00:00 2001 From: Gunjan Gupta Date: Tue, 19 Sep 2023 11:06:01 +0000 Subject: Add wifi nodes for Inovato Quadra --- - arch/arm64/boot/dts/allwinner/Makefile | 1 + - arch/arm64/boot/dts/allwinner/sun50i-h6-inovato-quadra.dts | 56 ++++++++++ + arch/arm64/boot/dts/allwinner/Makefile | 1 + + .../allwinner/sun50i-h6-inovato-quadra.dts | 56 +++++++++++++++++++ 2 files changed, 57 insertions(+) + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h6-inovato-quadra.dts diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile -index 62d716418e60..83ab07b7f18a 100644 +index ad82da8e2aad..8b504ee408e7 100644 --- a/arch/arm64/boot/dts/allwinner/Makefile +++ b/arch/arm64/boot/dts/allwinner/Makefile @@ -48,6 +48,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-one-plus.dtb @@ -83,5 +84,5 @@ index 000000000000..551ad69f18a6 + post-power-on-delay-ms = <0xc8>; +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-rgb-add-ws2812.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/Add-ws2812-RGB-driver-for-allwinner-H616.patch similarity index 97% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/drv-rgb-add-ws2812.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/Add-ws2812-RGB-driver-for-allwinner-H616.patch index 29bc270fd72e..0500677ac77d 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-rgb-add-ws2812.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/Add-ws2812-RGB-driver-for-allwinner-H616.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 190990bcecd1c3e1fddb09f77c31cfc653c9421f Mon Sep 17 00:00:00 2001 From: Alan Date: Sat, 20 May 2023 17:26:21 +0800 Subject: Add: ws2812 RGB driver for allwinner H616 @@ -6,8 +6,9 @@ Subject: Add: ws2812 RGB driver for allwinner H616 --- drivers/leds/rgb/Kconfig | 7 + drivers/leds/rgb/Makefile | 1 + - drivers/leds/rgb/leds-ws2812.c | 229 ++++++++++ + drivers/leds/rgb/leds-ws2812.c | 229 +++++++++++++++++++++++++++++++++ 3 files changed, 237 insertions(+) + create mode 100644 drivers/leds/rgb/leds-ws2812.c diff --git a/drivers/leds/rgb/Kconfig b/drivers/leds/rgb/Kconfig index 183bccc06cf3..855cf847ff93 100644 @@ -270,5 +271,5 @@ index 000000000000..1af735ce8e4d +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:ws2812_ctl"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/Doc-dt-bindings-usb-add-binding-for-DWC3-controller-on-Allwinne.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/Doc-dt-bindings-usb-add-binding-for-DWC3-controller-on-Allwinne.patch index eb69353f5a43..f93db4608e8f 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/Doc-dt-bindings-usb-add-binding-for-DWC3-controller-on-Allwinne.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/Doc-dt-bindings-usb-add-binding-for-DWC3-controller-on-Allwinne.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 073fe82934a9ca83fa80f9415d48f6d69dd6c69f Mon Sep 17 00:00:00 2001 From: Icenowy Zheng Date: Mon, 25 Dec 2017 12:08:01 +0800 Subject: Doc:dt-bindings:usb: add binding for DWC3 controller on Allwinner SoC @@ -9,8 +9,9 @@ Add its device tree binding document. Signed-off-by: Icenowy Zheng --- - Documentation/devicetree/bindings/usb/allwinner,dwc3.txt | 39 ++++++++++ + .../bindings/usb/allwinner,dwc3.txt | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) + create mode 100644 Documentation/devicetree/bindings/usb/allwinner,dwc3.txt diff --git a/Documentation/devicetree/bindings/usb/allwinner,dwc3.txt b/Documentation/devicetree/bindings/usb/allwinner,dwc3.txt new file mode 100644 @@ -58,5 +59,5 @@ index 000000000000..3f7714636785 + }; + }; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/HACK-media-uapi-hevc-tiles-and-num_slices.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/HACK-media-uapi-hevc-tiles-and-num_slices.patch deleted file mode 100644 index 85eb4715272b..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/HACK-media-uapi-hevc-tiles-and-num_slices.patch +++ /dev/null @@ -1,37 +0,0 @@ -From a0336ec2aa6ea38d4b2c9a2100b67fd6d09005cd Mon Sep 17 00:00:00 2001 -From: Jonas Karlman -Date: Sat, 23 May 2020 15:07:15 +0000 -Subject: [PATCH 038/170] HACK: media: uapi: hevc: tiles and num_slices - ---- - include/media/hevc-ctrls.h | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/include/media/hevc-ctrls.h b/include/media/hevc-ctrls.h -index a536dab3f..c8618dc68 100644 ---- a/include/media/hevc-ctrls.h -+++ b/include/media/hevc-ctrls.h -@@ -83,7 +83,8 @@ struct v4l2_ctrl_hevc_sps { - __u8 chroma_format_idc; - __u8 sps_max_sub_layers_minus1; - -- __u8 padding[6]; -+ __u8 num_slices; -+ __u8 padding[5]; - - __u64 flags; - }; -@@ -208,7 +209,9 @@ struct v4l2_ctrl_hevc_slice_params { - __u16 short_term_ref_pic_set_size; - __u16 long_term_ref_pic_set_size; - -- __u8 padding[4]; -+ __u32 num_entry_point_offsets; -+ __u32 entry_point_offset_minus1[256]; -+ __u8 padding[8]; - - /* ISO/IEC 23008-2, ITU-T Rec. H.265: Weighted prediction parameter */ - struct v4l2_hevc_pred_weight_table pred_weight_table; --- -2.35.3 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drivers-input-axp20x-pek-allow-wakeup-after-shutdown.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/Input-axp20x-pek-allow-wakeup-after-shutdown.patch similarity index 95% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/drivers-input-axp20x-pek-allow-wakeup-after-shutdown.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/Input-axp20x-pek-allow-wakeup-after-shutdown.patch index b8d37081ab77..9a6c1668cc5d 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drivers-input-axp20x-pek-allow-wakeup-after-shutdown.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/Input-axp20x-pek-allow-wakeup-after-shutdown.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From b6b946580b8e87d715f6449c8023bb70ac649783 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Sat, 2 Jan 2021 15:52:27 -0600 Subject: Input: axp20x-pek - allow wakeup after shutdown @@ -44,5 +44,5 @@ index 4581606a28d6..7217dc6ed26a 100644 .driver = { .name = "axp20x-pek", -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-LED-green_power_on-red_status_heartbeat.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/LED-green_power_on-red_status_heartbeat-arch-arm64-boot-dts-all.patch similarity index 83% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-LED-green_power_on-red_status_heartbeat.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/LED-green_power_on-red_status_heartbeat-arch-arm64-boot-dts-all.patch index 926bb7d7823c..9e33b65fb139 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-LED-green_power_on-red_status_heartbeat.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/LED-green_power_on-red_status_heartbeat-arch-arm64-boot-dts-all.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 633be858e3fa418f2e1ecab9cbfb6dd78232efd3 Mon Sep 17 00:00:00 2001 From: AGM1968 Date: Wed, 31 May 2023 08:12:00 +0000 Subject: LED-green_power_on-red_status_heartbeat @@ -6,14 +6,14 @@ Subject: LED-green_power_on-red_status_heartbeat Signed-off-by: AGM1968 --- - arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi | 7 ++++--- + .../boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi -index 0666d16ba7d0..19451a0c85ae 100644 +index 54dfaf24e75d..3d996494d37c 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi -@@ -26,16 +26,17 @@ leds { +@@ -27,16 +27,17 @@ leds { compatible = "gpio-leds"; led-0 { @@ -35,5 +35,5 @@ index 0666d16ba7d0..19451a0c85ae 100644 }; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/Move-sun50i-h6-pwm-settings-to-its-own-overlay.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/Move-sun50i-h6-pwm-settings-to-its-own-overlay.patch index 3b89ae707707..4a42774dbd81 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/Move-sun50i-h6-pwm-settings-to-its-own-overlay.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/Move-sun50i-h6-pwm-settings-to-its-own-overlay.patch @@ -1,12 +1,13 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 7daf13449df04fd21561c3244163204bc767d9d7 Mon Sep 17 00:00:00 2001 From: afaulkner420 Date: Fri, 25 Mar 2022 19:23:56 +0000 Subject: Move sun50i-h6-pwm settings to its own overlay --- - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd | 14 ------ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-pwm.dtso | 25 ++++++++++ + .../allwinner/overlay/sun50i-h6-fixup.scr-cmd | 14 ----------- + .../dts/allwinner/overlay/sun50i-h6-pwm.dtso | 25 +++++++++++++++++++ 2 files changed, 25 insertions(+), 14 deletions(-) + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-pwm.dtso diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd index d8e79ba4531b..f757db7aa4ad 100644 @@ -65,5 +66,5 @@ index 000000000000..a8aa74ed1988 + }; +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-touchscreen-tsc2007-polling.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/Optimize-TSC2007-touchscreen-add-polling-method.patch similarity index 96% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/drv-touchscreen-tsc2007-polling.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/Optimize-TSC2007-touchscreen-add-polling-method.patch index 3041d3321381..591e1ac5f13a 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-touchscreen-tsc2007-polling.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/Optimize-TSC2007-touchscreen-add-polling-method.patch @@ -1,11 +1,11 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From b8f2e5aba953293fc13a6ea819924cf415baa30a Mon Sep 17 00:00:00 2001 From: Alan Date: Sat, 20 May 2023 14:44:07 +0800 Subject: Optimize: TSC2007 touchscreen add polling method --- - drivers/input/touchscreen/tsc2007.h | 6 + - drivers/input/touchscreen/tsc2007_core.c | 110 +++++++++- + drivers/input/touchscreen/tsc2007.h | 6 ++ + drivers/input/touchscreen/tsc2007_core.c | 110 +++++++++++++++++++++-- 2 files changed, 108 insertions(+), 8 deletions(-) diff --git a/drivers/input/touchscreen/tsc2007.h b/drivers/input/touchscreen/tsc2007.h @@ -191,5 +191,5 @@ index b3655250d4a7..5267b0d0ad8c 100644 tsc2007_stop(ts); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/sound-soc-sunxi-h616-h618.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/Sound-for-H616-H618-Allwinner-SOCs-arch-arm64-boot-dts-allwinne.patch similarity index 97% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/sound-soc-sunxi-h616-h618.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/Sound-for-H616-H618-Allwinner-SOCs-arch-arm64-boot-dts-allwinne.patch index 16dcbdf3d6fa..d643b4c80741 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/sound-soc-sunxi-h616-h618.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/Sound-for-H616-H618-Allwinner-SOCs-arch-arm64-boot-dts-allwinne.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 1a8ee4f49169293e1144c2297db537a1e7de63ed Mon Sep 17 00:00:00 2001 From: Stephen Graf Date: Thu, 9 May 2024 20:59:34 -0700 Subject: Sound for H616, H618 Allwinner SOCs @@ -19,39 +19,52 @@ Subject: Sound for H616, H618 Allwinner SOCs Signed-off-by: Stephen Graf --- - arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi | 18 + - arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 83 + - drivers/clk/sunxi-ng/ccu-sun50i-h616.c | 33 +- - include/sound/soc-dai.h | 13 + - sound/soc/Kconfig | 1 + - sound/soc/Makefile | 1 + - sound/soc/soc-core.c | 25 + - sound/soc/sunxi/Kconfig | 8 + - sound/soc/sunxi/Makefile | 1 + - sound/soc/sunxi/sun50iw9-codec.c | 1093 +++++++ - sound/soc/sunxi_v2/Kconfig | 48 + - sound/soc/sunxi_v2/Makefile | 11 + - sound/soc/sunxi_v2/drv_hdmi.h | 63 + - sound/soc/sunxi_v2/snd_sunxi_ahub.c | 1477 ++++++++++ - sound/soc/sunxi_v2/snd_sunxi_ahub.h | 67 + - sound/soc/sunxi_v2/snd_sunxi_ahub_dam.c | 534 ++++ - sound/soc/sunxi_v2/snd_sunxi_ahub_dam.h | 291 ++ - sound/soc/sunxi_v2/snd_sunxi_common.c | 267 ++ - sound/soc/sunxi_v2/snd_sunxi_common.h | 67 + - sound/soc/sunxi_v2/snd_sunxi_log.h | 29 + - sound/soc/sunxi_v2/snd_sunxi_mach.c | 479 +++ - sound/soc/sunxi_v2/snd_sunxi_mach.h | 17 + - sound/soc/sunxi_v2/snd_sunxi_mach_utils.c | 422 +++ - sound/soc/sunxi_v2/snd_sunxi_mach_utils.h | 116 + + .../allwinner/sun50i-h616-orangepi-zero.dtsi | 18 + + .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 83 + + drivers/clk/sunxi-ng/ccu-sun50i-h616.c | 33 +- + include/sound/soc-dai.h | 13 + + sound/soc/Kconfig | 1 + + sound/soc/Makefile | 1 + + sound/soc/soc-core.c | 25 + + sound/soc/sunxi/Kconfig | 8 + + sound/soc/sunxi/Makefile | 1 + + sound/soc/sunxi/sun50iw9-codec.c | 1093 ++++++++++++ + sound/soc/sunxi_v2/Kconfig | 48 + + sound/soc/sunxi_v2/Makefile | 11 + + sound/soc/sunxi_v2/drv_hdmi.h | 63 + + sound/soc/sunxi_v2/snd_sunxi_ahub.c | 1477 +++++++++++++++++ + sound/soc/sunxi_v2/snd_sunxi_ahub.h | 67 + + sound/soc/sunxi_v2/snd_sunxi_ahub_dam.c | 534 ++++++ + sound/soc/sunxi_v2/snd_sunxi_ahub_dam.h | 291 ++++ + sound/soc/sunxi_v2/snd_sunxi_common.c | 267 +++ + sound/soc/sunxi_v2/snd_sunxi_common.h | 67 + + sound/soc/sunxi_v2/snd_sunxi_log.h | 29 + + sound/soc/sunxi_v2/snd_sunxi_mach.c | 479 ++++++ + sound/soc/sunxi_v2/snd_sunxi_mach.h | 17 + + sound/soc/sunxi_v2/snd_sunxi_mach_utils.c | 422 +++++ + sound/soc/sunxi_v2/snd_sunxi_mach_utils.h | 116 ++ 24 files changed, 5147 insertions(+), 17 deletions(-) + create mode 100644 sound/soc/sunxi/sun50iw9-codec.c + create mode 100644 sound/soc/sunxi_v2/Kconfig + create mode 100644 sound/soc/sunxi_v2/Makefile + create mode 100644 sound/soc/sunxi_v2/drv_hdmi.h + create mode 100644 sound/soc/sunxi_v2/snd_sunxi_ahub.c + create mode 100644 sound/soc/sunxi_v2/snd_sunxi_ahub.h + create mode 100644 sound/soc/sunxi_v2/snd_sunxi_ahub_dam.c + create mode 100644 sound/soc/sunxi_v2/snd_sunxi_ahub_dam.h + create mode 100644 sound/soc/sunxi_v2/snd_sunxi_common.c + create mode 100644 sound/soc/sunxi_v2/snd_sunxi_common.h + create mode 100644 sound/soc/sunxi_v2/snd_sunxi_log.h + create mode 100644 sound/soc/sunxi_v2/snd_sunxi_mach.c + create mode 100644 sound/soc/sunxi_v2/snd_sunxi_mach.h + create mode 100644 sound/soc/sunxi_v2/snd_sunxi_mach_utils.c + create mode 100644 sound/soc/sunxi_v2/snd_sunxi_mach_utils.h diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi -index ce3dc6d9c..23553f224 100644 +index ce3dc6d9cd66..23553f2249c2 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi -@@ -103,10 +103,28 @@ wifi_pwrseq: wifi-pwrseq { - - &de { +@@ -105,6 +105,24 @@ &de { status = "okay"; }; @@ -76,15 +89,11 @@ index ce3dc6d9c..23553f224 100644 &ehci1 { status = "okay"; }; - - /* USB 2 & 3 are on headers only. */ diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -index 36c75d783..1b004503b 100644 +index 90e55a6aef1d..3df5b74bf306 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -@@ -180,10 +180,82 @@ dma: dma-controller@3002000 { - dma-requests = <49>; - resets = <&ccu RST_BUS_DMA>; +@@ -182,6 +182,78 @@ dma: dma-controller@3002000 { #dma-cells = <1>; }; @@ -163,11 +172,7 @@ index 36c75d783..1b004503b 100644 gpu: gpu@1800000 { compatible = "allwinner,sun50i-h616-mali", "arm,mali-bifrost"; - reg = <0x1800000 0x40000>; - interrupts = , -@@ -455,10 +527,21 @@ gic: interrupt-controller@3021000 { - interrupts = ; - interrupt-controller; +@@ -457,6 +529,17 @@ gic: interrupt-controller@3021000 { #interrupt-cells = <3>; }; @@ -185,15 +190,11 @@ index 36c75d783..1b004503b 100644 mmc0: mmc@4020000 { compatible = "allwinner,sun50i-h616-mmc", "allwinner,sun50i-a100-mmc"; - reg = <0x04020000 0x1000>; - clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>; diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-h616.c b/drivers/clk/sunxi-ng/ccu-sun50i-h616.c -index 21e918582..ab2628596 100644 +index 21e918582aa5..ab2628596b36 100644 --- a/drivers/clk/sunxi-ng/ccu-sun50i-h616.c +++ b/drivers/clk/sunxi-ng/ccu-sun50i-h616.c -@@ -213,24 +213,26 @@ static struct ccu_nkmp pll_de_clk = { - &ccu_nkmp_ops, - CLK_SET_RATE_UNGATE), +@@ -215,20 +215,22 @@ static struct ccu_nkmp pll_de_clk = { }, }; @@ -224,11 +225,7 @@ index 21e918582..ab2628596 100644 .reg = 0x078, .hw.init = CLK_HW_INIT("pll-audio-hs", "osc24M", &ccu_nm_ops, - CLK_SET_RATE_UNGATE), - }, -@@ -686,17 +688,17 @@ static const struct clk_hw *clk_parent_pll_audio[] = { - * The divider of pll-audio is fixed to 24 for now, so 24576000 and 22579200 - * rates can be set exactly in conjunction with sigma-delta modulation. +@@ -688,13 +690,13 @@ static const struct clk_hw *clk_parent_pll_audio[] = { */ static CLK_FIXED_FACTOR_HWS(pll_audio_1x_clk, "pll-audio-1x", clk_parent_pll_audio, @@ -245,11 +242,7 @@ index 21e918582..ab2628596 100644 static const struct clk_hw *pll_periph0_parents[] = { &pll_periph0_clk.common.hw - }; - -@@ -1128,17 +1130,14 @@ static int sun50i_h616_ccu_probe(struct platform_device *pdev) - val = readl(reg + usb2_clk_regs[i]); - val &= ~GENMASK(25, 24); +@@ -1130,13 +1132,10 @@ static int sun50i_h616_ccu_probe(struct platform_device *pdev) writel(val, reg + usb2_clk_regs[i]); } @@ -266,15 +259,11 @@ index 21e918582..ab2628596 100644 /* * First clock parent (osc32K) is unusable for CEC. But since there - * is no good way to force parent switch (both run with same frequency), - * just set second clock parent here. diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h -index adcd8719d..778751096 100644 +index adcd8719d343..778751096c23 100644 --- a/include/sound/soc-dai.h +++ b/include/sound/soc-dai.h -@@ -413,20 +413,33 @@ struct snd_soc_dai_driver { - unsigned int id; - unsigned int base; +@@ -415,6 +415,15 @@ struct snd_soc_dai_driver { struct snd_soc_dobj dobj; struct of_phandle_args *dai_args; @@ -290,10 +279,7 @@ index adcd8719d..778751096 100644 /* ops */ const struct snd_soc_dai_ops *ops; const struct snd_soc_cdai_ops *cops; - - /* DAI capabilities */ - struct snd_soc_pcm_stream capture; - struct snd_soc_pcm_stream playback; +@@ -425,6 +434,10 @@ struct snd_soc_dai_driver { unsigned int symmetric_rate:1; unsigned int symmetric_channels:1; unsigned int symmetric_sample_bits:1; @@ -304,15 +290,11 @@ index adcd8719d..778751096 100644 }; /* for Playback/Capture */ - struct snd_soc_dai_stream { - struct snd_soc_dapm_widget *widget; diff --git a/sound/soc/Kconfig b/sound/soc/Kconfig -index 439fa631c..7dc3967cc 100644 +index 439fa631c342..7dc3967ccb27 100644 --- a/sound/soc/Kconfig +++ b/sound/soc/Kconfig -@@ -106,10 +106,11 @@ source "sound/soc/spear/Kconfig" - source "sound/soc/sprd/Kconfig" - source "sound/soc/starfive/Kconfig" +@@ -108,6 +108,7 @@ source "sound/soc/starfive/Kconfig" source "sound/soc/sti/Kconfig" source "sound/soc/stm/Kconfig" source "sound/soc/sunxi/Kconfig" @@ -320,15 +302,11 @@ index 439fa631c..7dc3967cc 100644 source "sound/soc/tegra/Kconfig" source "sound/soc/ti/Kconfig" source "sound/soc/uniphier/Kconfig" - source "sound/soc/ux500/Kconfig" - source "sound/soc/xilinx/Kconfig" diff --git a/sound/soc/Makefile b/sound/soc/Makefile -index 8376fdb21..79b48e8b3 100644 +index 8376fdb217ed..79b48e8b3657 100644 --- a/sound/soc/Makefile +++ b/sound/soc/Makefile -@@ -63,10 +63,11 @@ obj-$(CONFIG_SND_SOC) += spear/ - obj-$(CONFIG_SND_SOC) += sprd/ - obj-$(CONFIG_SND_SOC) += starfive/ +@@ -65,6 +65,7 @@ obj-$(CONFIG_SND_SOC) += starfive/ obj-$(CONFIG_SND_SOC) += sti/ obj-$(CONFIG_SND_SOC) += stm/ obj-$(CONFIG_SND_SOC) += sunxi/ @@ -336,15 +314,11 @@ index 8376fdb21..79b48e8b3 100644 obj-$(CONFIG_SND_SOC) += tegra/ obj-$(CONFIG_SND_SOC) += ti/ obj-$(CONFIG_SND_SOC) += uniphier/ - obj-$(CONFIG_SND_SOC) += ux500/ - obj-$(CONFIG_SND_SOC) += xilinx/ diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c -index b2bd45e87..723c19fb4 100644 +index e65fe3a7c3e4..f43402e66020 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c -@@ -2518,10 +2518,11 @@ struct snd_soc_dai *snd_soc_register_dai(struct snd_soc_component *component, - struct snd_soc_dai_driver *dai_drv, - bool legacy_dai_naming) +@@ -2523,6 +2523,7 @@ struct snd_soc_dai *snd_soc_register_dai(struct snd_soc_component *component, { struct device *dev = component->dev; struct snd_soc_dai *dai; @@ -352,11 +326,7 @@ index b2bd45e87..723c19fb4 100644 lockdep_assert_held(&client_mutex); - dai = devm_kzalloc(dev, sizeof(*dai), GFP_KERNEL); - if (dai == NULL) -@@ -2546,10 +2547,34 @@ struct snd_soc_dai *snd_soc_register_dai(struct snd_soc_component *component, - dai->id = component->num_dai; - } +@@ -2551,6 +2552,30 @@ struct snd_soc_dai *snd_soc_register_dai(struct snd_soc_component *component, if (!dai->name) return NULL; @@ -387,15 +357,11 @@ index b2bd45e87..723c19fb4 100644 dai->component = component; dai->dev = dev; dai->driver = dai_drv; - - /* see for_each_component_dais */ diff --git a/sound/soc/sunxi/Kconfig b/sound/soc/sunxi/Kconfig -index 753c38c5d..0f6579ea7 100644 +index 753c38c5d554..0f6579ea7143 100644 --- a/sound/soc/sunxi/Kconfig +++ b/sound/soc/sunxi/Kconfig -@@ -8,10 +8,18 @@ config SND_SUN4I_CODEC - select REGMAP_MMIO - help +@@ -10,6 +10,14 @@ config SND_SUN4I_CODEC Select Y or M to add support for the Codec embedded in the Allwinner A10 and affiliated SoCs. @@ -410,13 +376,11 @@ index 753c38c5d..0f6579ea7 100644 config SND_SUN8I_CODEC tristate "Allwinner SUN8I audio codec" depends on OF - depends on MACH_SUN8I || (ARM64 && ARCH_SUNXI) || COMPILE_TEST - depends on COMMON_CLK diff --git a/sound/soc/sunxi/Makefile b/sound/soc/sunxi/Makefile -index b0b976a3d..f72d94f30 100644 +index b0b976a3d069..f72d94f3004c 100644 --- a/sound/soc/sunxi/Makefile +++ b/sound/soc/sunxi/Makefile -@@ -1,8 +1,9 @@ +@@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_SND_SUN8I_CODEC_ANALOG) += sun8i-codec-analog.o obj-$(CONFIG_SND_SUN4I_CODEC) += sun4i-codec.o @@ -424,11 +388,9 @@ index b0b976a3d..f72d94f30 100644 obj-$(CONFIG_SND_SUN4I_I2S) += sun4i-i2s.o obj-$(CONFIG_SND_SUN4I_SPDIF) += sun4i-spdif.o obj-$(CONFIG_SND_SUN50I_CODEC_ANALOG) += sun50i-codec-analog.o - obj-$(CONFIG_SND_SUN8I_CODEC) += sun8i-codec.o - obj-$(CONFIG_SND_SUN8I_ADDA_PR_REGMAP) += sun8i-adda-pr-regmap.o diff --git a/sound/soc/sunxi/sun50iw9-codec.c b/sound/soc/sunxi/sun50iw9-codec.c new file mode 100644 -index 000000000..38b1d3824 +index 000000000000..38b1d3824c20 --- /dev/null +++ b/sound/soc/sunxi/sun50iw9-codec.c @@ -0,0 +1,1093 @@ @@ -1527,7 +1489,7 @@ index 000000000..38b1d3824 +MODULE_LICENSE("GPL"); diff --git a/sound/soc/sunxi_v2/Kconfig b/sound/soc/sunxi_v2/Kconfig new file mode 100644 -index 000000000..37fc579ba +index 000000000000..37fc579ba9db --- /dev/null +++ b/sound/soc/sunxi_v2/Kconfig @@ -0,0 +1,48 @@ @@ -1581,7 +1543,7 @@ index 000000000..37fc579ba +endmenu diff --git a/sound/soc/sunxi_v2/Makefile b/sound/soc/sunxi_v2/Makefile new file mode 100644 -index 000000000..c7c2ef8f9 +index 000000000000..c7c2ef8f9fe9 --- /dev/null +++ b/sound/soc/sunxi_v2/Makefile @@ -0,0 +1,11 @@ @@ -1598,7 +1560,7 @@ index 000000000..c7c2ef8f9 +obj-$(CONFIG_SND_SOC_SUNXI_MACH) += snd_soc_sunxi_machine.o diff --git a/sound/soc/sunxi_v2/drv_hdmi.h b/sound/soc/sunxi_v2/drv_hdmi.h new file mode 100644 -index 000000000..2e05489b0 +index 000000000000..2e05489b01e1 --- /dev/null +++ b/sound/soc/sunxi_v2/drv_hdmi.h @@ -0,0 +1,63 @@ @@ -1667,7 +1629,7 @@ index 000000000..2e05489b0 +#endif diff --git a/sound/soc/sunxi_v2/snd_sunxi_ahub.c b/sound/soc/sunxi_v2/snd_sunxi_ahub.c new file mode 100644 -index 000000000..8a1065e91 +index 000000000000..8a1065e9183e --- /dev/null +++ b/sound/soc/sunxi_v2/snd_sunxi_ahub.c @@ -0,0 +1,1477 @@ @@ -3150,7 +3112,7 @@ index 000000000..8a1065e91 +MODULE_DESCRIPTION("sunxi soundcard platform of ahub"); diff --git a/sound/soc/sunxi_v2/snd_sunxi_ahub.h b/sound/soc/sunxi_v2/snd_sunxi_ahub.h new file mode 100644 -index 000000000..b3c1cc592 +index 000000000000..b3c1cc592844 --- /dev/null +++ b/sound/soc/sunxi_v2/snd_sunxi_ahub.h @@ -0,0 +1,67 @@ @@ -3223,7 +3185,7 @@ index 000000000..b3c1cc592 +#endif /* __SND_SUNXI_AHUB_H */ diff --git a/sound/soc/sunxi_v2/snd_sunxi_ahub_dam.c b/sound/soc/sunxi_v2/snd_sunxi_ahub_dam.c new file mode 100644 -index 000000000..1fcc8aefd +index 000000000000..1fcc8aefd50c --- /dev/null +++ b/sound/soc/sunxi_v2/snd_sunxi_ahub_dam.c @@ -0,0 +1,534 @@ @@ -3763,7 +3725,7 @@ index 000000000..1fcc8aefd +MODULE_DESCRIPTION("sunxi soundcard platform of ahub_dam"); diff --git a/sound/soc/sunxi_v2/snd_sunxi_ahub_dam.h b/sound/soc/sunxi_v2/snd_sunxi_ahub_dam.h new file mode 100644 -index 000000000..b7679bf54 +index 000000000000..b7679bf545e9 --- /dev/null +++ b/sound/soc/sunxi_v2/snd_sunxi_ahub_dam.h @@ -0,0 +1,291 @@ @@ -4061,7 +4023,7 @@ index 000000000..b7679bf54 \ No newline at end of file diff --git a/sound/soc/sunxi_v2/snd_sunxi_common.c b/sound/soc/sunxi_v2/snd_sunxi_common.c new file mode 100644 -index 000000000..410ab75ae +index 000000000000..410ab75aea5a --- /dev/null +++ b/sound/soc/sunxi_v2/snd_sunxi_common.c @@ -0,0 +1,267 @@ @@ -4334,7 +4296,7 @@ index 000000000..410ab75ae +} diff --git a/sound/soc/sunxi_v2/snd_sunxi_common.h b/sound/soc/sunxi_v2/snd_sunxi_common.h new file mode 100644 -index 000000000..7b88d20c2 +index 000000000000..7b88d20c25e0 --- /dev/null +++ b/sound/soc/sunxi_v2/snd_sunxi_common.h @@ -0,0 +1,67 @@ @@ -4408,7 +4370,7 @@ index 000000000..7b88d20c2 \ No newline at end of file diff --git a/sound/soc/sunxi_v2/snd_sunxi_log.h b/sound/soc/sunxi_v2/snd_sunxi_log.h new file mode 100644 -index 000000000..89ad9fe71 +index 000000000000..89ad9fe71936 --- /dev/null +++ b/sound/soc/sunxi_v2/snd_sunxi_log.h @@ -0,0 +1,29 @@ @@ -4443,7 +4405,7 @@ index 000000000..89ad9fe71 +#endif /* __SND_SUNXI_LOG_H */ diff --git a/sound/soc/sunxi_v2/snd_sunxi_mach.c b/sound/soc/sunxi_v2/snd_sunxi_mach.c new file mode 100644 -index 000000000..27449ad6b +index 000000000000..27449ad6b843 --- /dev/null +++ b/sound/soc/sunxi_v2/snd_sunxi_mach.c @@ -0,0 +1,479 @@ @@ -4928,7 +4890,7 @@ index 000000000..27449ad6b +MODULE_DESCRIPTION("sunxi soundcard machine"); diff --git a/sound/soc/sunxi_v2/snd_sunxi_mach.h b/sound/soc/sunxi_v2/snd_sunxi_mach.h new file mode 100644 -index 000000000..ab429c884 +index 000000000000..ab429c8841ab --- /dev/null +++ b/sound/soc/sunxi_v2/snd_sunxi_mach.h @@ -0,0 +1,17 @@ @@ -4951,7 +4913,7 @@ index 000000000..ab429c884 +#endif /* __SND_SUNXI_MACH_H */ diff --git a/sound/soc/sunxi_v2/snd_sunxi_mach_utils.c b/sound/soc/sunxi_v2/snd_sunxi_mach_utils.c new file mode 100644 -index 000000000..15f474e5c +index 000000000000..15f474e5cbeb --- /dev/null +++ b/sound/soc/sunxi_v2/snd_sunxi_mach_utils.c @@ -0,0 +1,422 @@ @@ -5379,7 +5341,7 @@ index 000000000..15f474e5c +MODULE_DESCRIPTION("sunxi soundcard machine utils"); diff --git a/sound/soc/sunxi_v2/snd_sunxi_mach_utils.h b/sound/soc/sunxi_v2/snd_sunxi_mach_utils.h new file mode 100644 -index 000000000..a9cffa0d8 +index 000000000000..a9cffa0d859b --- /dev/null +++ b/sound/soc/sunxi_v2/snd_sunxi_mach_utils.h @@ -0,0 +1,116 @@ @@ -5500,5 +5462,5 @@ index 000000000..a9cffa0d8 + +#endif /* __SND_SUNXI_MACH_UTILS_H */ -- -Created with Armbian build tools https://github.com/armbian/build +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-a64-pinephone-wowlan.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/Temp_fix-mailbox-arch-arm64-boot-dts-allwinner-sun50i-a64-pinep.patch similarity index 95% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-a64-pinephone-wowlan.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/Temp_fix-mailbox-arch-arm64-boot-dts-allwinner-sun50i-a64-pinep.patch index 561d7d678289..6a325ccca38f 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-a64-pinephone-wowlan.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/Temp_fix-mailbox-arch-arm64-boot-dts-allwinner-sun50i-a64-pinep.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 760f10718c0d69ebfccd155e5353ac5bf730d1e6 Mon Sep 17 00:00:00 2001 From: AGM1968 Date: Mon, 26 Jun 2023 14:29:56 +0000 Subject: Temp_fix mailbox @@ -49,5 +49,5 @@ index 67c4ecff7150..33d83ec887b1 100644 rtl8723cs: wifi@1 { reg = <1>; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/WIP-media-uapi-hevc-add-fields-needed-for-rkvdec.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/WIP-media-uapi-hevc-add-fields-needed-for-rkvdec.patch deleted file mode 100644 index 41ed3b0db517..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/WIP-media-uapi-hevc-add-fields-needed-for-rkvdec.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 4ca80443bbab08aede430ab4f13e2818836f19b5 Mon Sep 17 00:00:00 2001 -From: Jonas Karlman -Date: Sat, 23 May 2020 15:03:46 +0000 -Subject: [PATCH 037/170] WIP: media: uapi: hevc: add fields needed for rkvdec - -NOTE: these fields are used by rkvdec hevc backend - -Signed-off-by: Jonas Karlman ---- - include/media/hevc-ctrls.h | 12 ++++++++++-- - 1 file changed, 10 insertions(+), 2 deletions(-) - -diff --git a/include/media/hevc-ctrls.h b/include/media/hevc-ctrls.h -index 01ccda48d..a536dab3f 100644 ---- a/include/media/hevc-ctrls.h -+++ b/include/media/hevc-ctrls.h -@@ -58,6 +58,8 @@ enum v4l2_mpeg_video_hevc_start_code { - /* The controls are not stable at the moment and will likely be reworked. */ - struct v4l2_ctrl_hevc_sps { - /* ISO/IEC 23008-2, ITU-T Rec. H.265: Sequence parameter set */ -+ __u8 video_parameter_set_id; -+ __u8 seq_parameter_set_id; - __u16 pic_width_in_luma_samples; - __u16 pic_height_in_luma_samples; - __u8 bit_depth_luma_minus8; -@@ -81,6 +83,8 @@ struct v4l2_ctrl_hevc_sps { - __u8 chroma_format_idc; - __u8 sps_max_sub_layers_minus1; - -+ __u8 padding[6]; -+ - __u64 flags; - }; - -@@ -108,6 +112,7 @@ struct v4l2_ctrl_hevc_sps { - - struct v4l2_ctrl_hevc_pps { - /* ISO/IEC 23008-2, ITU-T Rec. H.265: Picture parameter set */ -+ __u8 pic_parameter_set_id; - __u8 num_extra_slice_header_bits; - __u8 num_ref_idx_l0_default_active_minus1; - __u8 num_ref_idx_l1_default_active_minus1; -@@ -123,7 +128,7 @@ struct v4l2_ctrl_hevc_pps { - __s8 pps_tc_offset_div2; - __u8 log2_parallel_merge_level_minus2; - -- __u8 padding[4]; -+ __u8 padding; - __u64 flags; - }; - -@@ -200,7 +205,10 @@ struct v4l2_ctrl_hevc_slice_params { - __u8 ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; - __u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; - -- __u8 padding; -+ __u16 short_term_ref_pic_set_size; -+ __u16 long_term_ref_pic_set_size; -+ -+ __u8 padding[4]; - - /* ISO/IEC 23008-2, ITU-T Rec. H.265: Weighted prediction parameter */ - struct v4l2_hevc_pred_weight_table pred_weight_table; --- -2.35.3 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/add-bigtreetech-cb1-dts.patch similarity index 94% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/add-bigtreetech-cb1-dts.patch index 77a359375ee4..a9a7840807fa 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/add-bigtreetech-cb1-dts.patch @@ -1,14 +1,17 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From bbd85618d5e4ba7921e3ac2b648a137d48004022 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 30 May 2023 10:18:55 +0800 Subject: add bigtreetech-cb1 dts --- - arch/arm64/boot/dts/allwinner/Makefile | 2 + - arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1-emmc.dts | 44 ++ - arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1-sd.dts | 35 + - arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi | 327 ++++++++++ + arch/arm64/boot/dts/allwinner/Makefile | 2 + + .../sun50i-h616-bigtreetech-cb1-emmc.dts | 44 +++ + .../sun50i-h616-bigtreetech-cb1-sd.dts | 35 ++ + .../sun50i-h616-bigtreetech-cb1.dtsi | 327 ++++++++++++++++++ 4 files changed, 408 insertions(+) + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1-emmc.dts + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1-sd.dts + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile index 4d4d2e5c01f2..74a6e5e0d7b3 100644 @@ -116,7 +119,7 @@ index 000000000000..e18dd854d74b +}; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi new file mode 100644 -index 000000000000..8a18476307ff +index 000000000000..e82da4b6e340 --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi @@ -0,0 +1,327 @@ @@ -448,5 +451,5 @@ index 000000000000..8a18476307ff + status = "okay"; +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h618-add-overlay.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/add-dtb-overlay-for-zero2w.patch similarity index 94% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h618-add-overlay.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/add-dtb-overlay-for-zero2w.patch index 8ef263e4ab8c..29a9d3c35d43 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h618-add-overlay.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/add-dtb-overlay-for-zero2w.patch @@ -1,4 +1,4 @@ -From cb5d17d4fcca040e7af10457008e5199dc35cc03 Mon Sep 17 00:00:00 2001 +From ee00f965c88e0a4a5f158b6eafb5fe2e5ce12c71 Mon Sep 17 00:00:00 2001 From: chraac Date: Fri, 5 Apr 2024 10:57:18 +0800 Subject: add dtb overlay for zero2w @@ -27,7 +27,7 @@ Subject: add dtb overlay for zero2w rename arch/arm64/boot/dts/allwinner/overlay/{sun50i-h616-uart5.dtso => sun50i-h616-uart5-ph.dtso} (100%) diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile -index 369b2976b1bba..24383cb63770e 100644 +index 369b2976b1bb..24383cb63770 100644 --- a/arch/arm64/boot/dts/allwinner/overlay/Makefile +++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile @@ -49,11 +49,11 @@ dtb-$(CONFIG_ARCH_SUNXI) += \ @@ -62,7 +62,7 @@ index 369b2976b1bba..24383cb63770e 100644 sun50i-a64-fixup.scr \ diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-gpu.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-gpu.dtso new file mode 100644 -index 0000000000000..ac8846ac7d274 +index 000000000000..ac8846ac7d27 --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-gpu.dtso @@ -0,0 +1,14 @@ @@ -82,7 +82,7 @@ index 0000000000000..ac8846ac7d274 +}; diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c0-pi.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c0-pi.dtso new file mode 100644 -index 0000000000000..b5003934c895c +index 000000000000..b5003934c895 --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c0-pi.dtso @@ -0,0 +1,23 @@ @@ -111,7 +111,7 @@ index 0000000000000..b5003934c895c +}; diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c1-pi.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c1-pi.dtso new file mode 100644 -index 0000000000000..05f3100967ff1 +index 000000000000..05f3100967ff --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c1-pi.dtso @@ -0,0 +1,16 @@ @@ -137,7 +137,7 @@ rename from arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c2.dtso rename to arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c2-ph.dtso diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c2-pi.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c2-pi.dtso new file mode 100644 -index 0000000000000..0f7d7e9968d6c +index 000000000000..0f7d7e9968d6 --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c2-pi.dtso @@ -0,0 +1,23 @@ @@ -181,10 +181,10 @@ similarity index 100% rename from arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart5.dtso rename to arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart5-ph.dtso diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts -index c09cc24a8b279..436896936fb3b 100644 +index b224902f5684..2a4c152b9294 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts -@@ -280,12 +280,6 @@ &uart4 { +@@ -312,12 +312,6 @@ &uart4 { status = "disabled"; }; @@ -197,7 +197,7 @@ index c09cc24a8b279..436896936fb3b 100644 &i2c3 { status = "okay"; pinctrl-names = "default"; -@@ -415,12 +409,6 @@ uart4_pi_pins: uart4-pi-pins { +@@ -447,12 +441,6 @@ uart4_pi_pins: uart4-pi-pins { function = "uart4"; }; @@ -211,4 +211,5 @@ index c09cc24a8b279..436896936fb3b 100644 spi1_cs1_pin: spi1-cs1-pin { pins = "PH9"; -- -GitLab +2.35.3 + diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/add-initial-support-for-orangepi3-lts.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/add-initial-support-for-orangepi3-lts.patch index 1576b432ff76..36888b0bd677 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/add-initial-support-for-orangepi3-lts.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/add-initial-support-for-orangepi3-lts.patch @@ -1,15 +1,16 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From d476463d4e4271266bfdc2fbec353810fbaa5165 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Sat, 16 Apr 2022 11:51:35 +0300 Subject: add initial support for orangepi3-lts --- - arch/arm64/boot/dts/allwinner/Makefile | 1 + - arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3-lts.dts | 399 ++++++++++ + arch/arm64/boot/dts/allwinner/Makefile | 1 + + .../allwinner/sun50i-h6-orangepi-3-lts.dts | 399 ++++++++++++++++++ 2 files changed, 400 insertions(+) + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3-lts.dts diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile -index 74a6e5e0d7b3..62d716418e60 100644 +index fd2f4f11e1fb..ad82da8e2aad 100644 --- a/arch/arm64/boot/dts/allwinner/Makefile +++ b/arch/arm64/boot/dts/allwinner/Makefile @@ -42,6 +42,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus.dtb @@ -426,5 +427,5 @@ index 000000000000..dd6b4e15263e + status = "okay"; +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/add-nodes-for-sunxi-info-addr-dump-reg.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/add-nodes-for-sunxi-info-sunxi-addr-and-sunxi-dump-reg.patch similarity index 79% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/add-nodes-for-sunxi-info-addr-dump-reg.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/add-nodes-for-sunxi-info-sunxi-addr-and-sunxi-dump-reg.patch index 9e518943c3b8..8beb4a58c909 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/add-nodes-for-sunxi-info-addr-dump-reg.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/add-nodes-for-sunxi-info-sunxi-addr-and-sunxi-dump-reg.patch @@ -1,17 +1,18 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From be6241b48636a739722e573d1dbb6f5c7856afc7 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Sat, 16 Apr 2022 11:51:35 +0300 Subject: add nodes for sunxi-info, sunxi-addr and sunxi-dump-reg --- - arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 19 ++++++++++ - 1 file changed, 19 insertions(+) + arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 19 +++++++++++++++++++ + .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 19 +++++++++++++++++++ + 2 files changed, 38 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -index 538c90663602..6365cce07304 100644 +index 926b3f568c0d..d01c5c72ff86 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -@@ -1243,6 +1243,25 @@ ths: thermal-sensor@5070400 { +@@ -1242,6 +1242,25 @@ ths: thermal-sensor@5070400 { nvmem-cell-names = "calibration"; #thermal-sensor-cells = <1>; }; @@ -38,10 +39,10 @@ index 538c90663602..6365cce07304 100644 thermal-zones { diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -index 98735d39e6e8..5ff1b357a25b 100644 +index 6ba83df33652..de2a736f0e33 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -@@ -1053,6 +1053,25 @@ ths: thermal-sensor@5070400 { +@@ -854,6 +854,25 @@ ths: thermal-sensor@5070400 { nvmem-cell-names = "calibration"; #thermal-sensor-cells = <1>; }; @@ -68,5 +69,5 @@ index 98735d39e6e8..5ff1b357a25b 100644 thermal-zones { -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-orangepi-one-pinctr-dummy-regulators.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/adding-dummy-regulators-in-pinctr-arch-arm-boot-dts-allwinner-s.patch similarity index 73% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-orangepi-one-pinctr-dummy-regulators.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/adding-dummy-regulators-in-pinctr-arch-arm-boot-dts-allwinner-s.patch index 63833c284360..64c7a871193d 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-orangepi-one-pinctr-dummy-regulators.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/adding-dummy-regulators-in-pinctr-arch-arm-boot-dts-allwinner-s.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 63dbe7a62208a8721dcf82efad59f7996a156890 Mon Sep 17 00:00:00 2001 From: Stephen Graf Date: Thu, 30 May 2024 18:19:07 -0700 Subject: adding dummy regulators in pinctr @@ -10,12 +10,10 @@ Signed-off-by: Stephen Graf 1 file changed, 7 insertions(+) diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-one.dts b/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-one.dts -index 927fd1bab..1aee01494 100644 +index 927fd1bab07d..1aee01494ada 100644 --- a/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-one.dts +++ b/arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-one.dts -@@ -207,5 +207,12 @@ &usbphy { - /* USB Type-A port's VBUS is always on */ - usb0_id_det-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */ +@@ -209,3 +209,10 @@ &usbphy { usb0_vbus-supply = <®_usb0_vbus>; status = "okay"; }; @@ -27,5 +25,5 @@ index 927fd1bab..1aee01494 100644 + vcc-pg-supply = <®_vcc3v3>; +}; -- -Created with Armbian build tools https://github.com/armbian/build +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arch-arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch similarity index 83% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/arch-arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch index fe1bd5cf35cf..46c976c3742d 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arch-arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch @@ -1,7 +1,7 @@ -From a3e54a502cf754b148a8ad06580a3c256bc42b09 Mon Sep 17 00:00:00 2001 +From b05628be187259b61b73f3f20a117e1fdd0c6221 Mon Sep 17 00:00:00 2001 From: Patrick Yavitz Date: Thu, 22 Feb 2024 19:31:11 -0500 -Subject: [PATCH] arch: arm64: dts: allwinner: sun50i-h616: PG 12c pins +Subject: arch: arm64: dts: allwinner: sun50i-h616: PG 12c pins pins = "PG17", "PG18"; pins = "PG15", "PG16"; @@ -12,7 +12,7 @@ Signed-off-by: Patrick Yavitz 1 file changed, 12 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -index 17df57e2db0a..e5ce4214a43b 100644 +index ccaca20eb10b..345d941f3e76 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi @@ -334,6 +334,18 @@ i2c4_ph_pins: i2c4-ph-pins { @@ -35,5 +35,5 @@ index 17df57e2db0a..e5ce4214a43b 100644 pins = "PH10"; function = "ir_rx"; -- -2.39.2 +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arch-arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch similarity index 74% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/arch-arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch index ddac57ec983a..5d4af3adc429 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arch-arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch @@ -1,7 +1,7 @@ -From 64b0221e526f6359a39ab3beb9a693dc964b1112 Mon Sep 17 00:00:00 2001 +From 6b4b39bd1f85161ff9a8e932871e33555eca6e3d Mon Sep 17 00:00:00 2001 From: Patrick Yavitz Date: Wed, 6 Mar 2024 06:51:01 -0500 -Subject: [PATCH] arch: arm64: dts: allwinner: sun50i-h616: spi1 cs1 pin +Subject: arch: arm64: dts: allwinner: sun50i-h616: spi1 cs1 pin Signed-off-by: Patrick Yavitz --- @@ -9,10 +9,10 @@ Signed-off-by: Patrick Yavitz 1 file changed, 6 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -index 33f8c758b9e6..1354dca01e78 100644 +index 345d941f3e76..90e55a6aef1d 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -@@ -397,6 +397,12 @@ spi1_cs0_pin: spi1-cs0-pin { +@@ -407,6 +407,12 @@ spi1_cs0_pin: spi1-cs0-pin { function = "spi1"; }; @@ -26,5 +26,5 @@ index 33f8c758b9e6..1354dca01e78 100644 pins = "PH0", "PH1"; function = "uart0"; -- -2.39.2 +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-sun50i-h618-bananapi-m4-zero.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arch-arm64-dts-allwinner-sun50i-h618-bananapi-m4-zero.patch similarity index 95% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-sun50i-h618-bananapi-m4-zero.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/arch-arm64-dts-allwinner-sun50i-h618-bananapi-m4-zero.patch index a4b256d0771a..3871da1ab416 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-sun50i-h618-bananapi-m4-zero.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arch-arm64-dts-allwinner-sun50i-h618-bananapi-m4-zero.patch @@ -1,7 +1,7 @@ -From 4da52c3e9298df267644b7244703f7c3132c26d8 Mon Sep 17 00:00:00 2001 +From e13a5648e7b0cadac49af05ac7452771253b0f73 Mon Sep 17 00:00:00 2001 From: Patrick Yavitz Date: Sun, 17 Mar 2024 18:54:24 -0400 -Subject: [PATCH] arch: arm64: dts: allwinner: sun50i-h618-bananapi-m4-zero +Subject: arch: arm64: dts: allwinner: sun50i-h618-bananapi-m4-zero Signed-off-by: Patrick Yavitz --- @@ -11,10 +11,10 @@ Signed-off-by: Patrick Yavitz create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h618-bananapi-m4-zero.dts diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile -index d2266f5e5795..4374ed5d9c86 100644 +index 74a6e5e0d7b3..fd2f4f11e1fb 100644 --- a/arch/arm64/boot/dts/allwinner/Makefile +++ b/arch/arm64/boot/dts/allwinner/Makefile -@@ -53,6 +53,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-orangepi-zero2.dtb +@@ -52,6 +52,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-orangepi-zero2.dtb dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-x96-mate.dtb dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-bigtreetech-cb1-sd.dtb dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-bigtreetech-cb1-emmc.dtb @@ -24,7 +24,7 @@ index d2266f5e5795..4374ed5d9c86 100644 subdir-y := $(dts-dirs) overlay diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-bananapi-m4-zero.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-bananapi-m4-zero.dts new file mode 100644 -index 000000000000..94b940f993d9 +index 000000000000..fba5b39cc319 --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-bananapi-m4-zero.dts @@ -0,0 +1,276 @@ @@ -305,5 +305,5 @@ index 000000000000..94b940f993d9 + status = "okay"; +}; -- -2.39.2 +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-Add-sun8i-h2-plus-nanopi-duo-device.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-Add-sun8i-h2-plus-nanopi-duo-device.patch index 5453efb75c88..2731f758df41 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-Add-sun8i-h2-plus-nanopi-duo-device.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-Add-sun8i-h2-plus-nanopi-duo-device.patch @@ -1,12 +1,13 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From d1c82c30050a9447f25890a4099701f039794f4b Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Mon, 24 Jan 2022 15:00:36 +0300 Subject: arm:dts: Add sun8i-h2-plus-nanopi-duo device --- - arch/arm/boot/dts/allwinner/Makefile | 1 + - arch/arm/boot/dts/allwinner/sun8i-h2-plus-nanopi-duo.dts | 164 ++++++++++ + arch/arm/boot/dts/allwinner/Makefile | 1 + + .../allwinner/sun8i-h2-plus-nanopi-duo.dts | 164 ++++++++++++++++++ 2 files changed, 165 insertions(+) + create mode 100644 arch/arm/boot/dts/allwinner/sun8i-h2-plus-nanopi-duo.dts diff --git a/arch/arm/boot/dts/allwinner/Makefile b/arch/arm/boot/dts/allwinner/Makefile index eebb5a0c873a..5833777340fd 100644 @@ -191,5 +192,5 @@ index 000000000000..2b31b8fddbf3 + usb0_id_det-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */ +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-Add-sun8i-h2-plus-sunvell-r69-device.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-Add-sun8i-h2-plus-sunvell-r69-device.patch index 5234491b66e4..778e74974281 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-Add-sun8i-h2-plus-sunvell-r69-device.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-Add-sun8i-h2-plus-sunvell-r69-device.patch @@ -1,12 +1,13 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From ec9bef87e3b1cbcd2d32f012ce1ed264beb36c09 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Mon, 24 Jan 2022 15:23:33 +0300 Subject: arm:dts: Add sun8i-h2-plus-sunvell-r69 device --- - arch/arm/boot/dts/allwinner/Makefile | 1 + - arch/arm/boot/dts/allwinner/sun8i-h2-plus-sunvell-r69.dts | 225 ++++++++++ + arch/arm/boot/dts/allwinner/Makefile | 1 + + .../allwinner/sun8i-h2-plus-sunvell-r69.dts | 225 ++++++++++++++++++ 2 files changed, 226 insertions(+) + create mode 100644 arch/arm/boot/dts/allwinner/sun8i-h2-plus-sunvell-r69.dts diff --git a/arch/arm/boot/dts/allwinner/Makefile b/arch/arm/boot/dts/allwinner/Makefile index 5833777340fd..cf12179accb7 100644 @@ -252,5 +253,5 @@ index 000000000000..bb0c2f72b723 + status = "okay"; +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-overlay-Add-Overlays-for-sunxi.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-overlay-Add-Overlays-for-sunxi.patch index 89d0f7a1eee1..98397d526733 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-overlay-Add-Overlays-for-sunxi.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-overlay-Add-Overlays-for-sunxi.patch @@ -1,107 +1,203 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 3cf9b6e35340b89f11cb0911e03bbfd963ca5f4b Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Wed, 2 Feb 2022 12:54:05 +0300 Subject: arm:dts:overlay Add Overlays for sunxi --- - arch/arm/boot/dts/allwinner/Makefile | 2 + - arch/arm/boot/dts/allwinner/overlay/Makefile | 97 +++ - arch/arm/boot/dts/allwinner/overlay/README.sun4i-a10-overlays | 278 ++++++++ - arch/arm/boot/dts/allwinner/overlay/README.sun5i-a13-overlays | 172 +++++ - arch/arm/boot/dts/allwinner/overlay/README.sun7i-a20-overlays | 348 ++++++++++ - arch/arm/boot/dts/allwinner/overlay/README.sun8i-h3-overlays | 250 +++++++ - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-analog-codec.dtso | 13 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-can.dtso | 15 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-fixup.scr-cmd | 124 ++++ - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-i2c1.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-i2c2.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-nand.dtso | 103 +++ - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-pps-gpio.dtso | 29 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-pwm.dtso | 15 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spdif-out.dtso | 38 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi-jedec-nor.dtso | 57 ++ - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi-spidev.dtso | 57 ++ - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi0.dtso | 23 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi1.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi2.dtso | 23 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart2.dtso | 37 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart3.dtso | 47 ++ - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart4.dtso | 37 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart5.dtso | 32 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart6.dtso | 32 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart7.dtso | 32 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-w1-gpio.dtso | 29 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-analog-codec.dtso | 13 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-fixup.scr-cmd | 48 ++ - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-i2c1.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-i2c2.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-nand.dtso | 60 ++ - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-pwm.dtso | 15 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi-jedec-nor.dtso | 57 ++ - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi-spidev.dtso | 57 ++ - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi0.dtso | 38 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi1.dtso | 39 ++ - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi2.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart0.dtso | 32 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart1.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart2.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart3.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-analog-codec.dtso | 13 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-can.dtso | 15 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-fixup.scr-cmd | 143 ++++ - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c1.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c2.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c3.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c4.dtso | 32 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2s0.dtso | 25 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2s1.dtso | 25 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-mmc2.dtso | 18 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-nand.dtso | 103 +++ - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-pps-gpio.dtso | 29 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-pwm.dtso | 15 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spdif-out.dtso | 38 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-add-cs1.dtso | 16 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-jedec-nor.dtso | 57 ++ - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-spidev.dtso | 57 ++ - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi0.dtso | 23 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi1.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi2.dtso | 23 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart2.dtso | 32 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart3.dtso | 42 ++ - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart4.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart5.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart6.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart7.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-w1-gpio.dtso | 29 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-analog-codec.dtso | 17 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cir.dtso | 15 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-fixup.scr-cmd | 110 +++ - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c0.dtso | 20 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c1.dtso | 20 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c2.dtso | 20 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-pps-gpio.dtso | 29 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-pwm.dtso | 39 ++ - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spdif-out.dtso | 38 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-add-cs1.dtso | 41 ++ - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-jedec-nor.dtso | 42 ++ - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-spidev.dtso | 42 ++ - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart1.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart2.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart3.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost0.dtso | 27 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost1.dtso | 27 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost2.dtso | 27 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost3.dtso | 27 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-w1-gpio.dtso | 29 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-i2c2.dtso | 20 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-i2c3.dtso | 20 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-spi-spidev0.dtso | 27 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-spi-spidev1.dtso | 27 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart2.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart4.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart5.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart7.dtso | 22 + + arch/arm/boot/dts/allwinner/Makefile | 2 + + arch/arm/boot/dts/allwinner/overlay/Makefile | 97 +++++ + .../overlay/README.sun4i-a10-overlays | 278 ++++++++++++++ + .../overlay/README.sun5i-a13-overlays | 172 +++++++++ + .../overlay/README.sun7i-a20-overlays | 348 ++++++++++++++++++ + .../overlay/README.sun8i-h3-overlays | 250 +++++++++++++ + .../overlay/sun4i-a10-analog-codec.dtso | 13 + + .../dts/allwinner/overlay/sun4i-a10-can.dtso | 15 + + .../allwinner/overlay/sun4i-a10-fixup.scr-cmd | 124 +++++++ + .../dts/allwinner/overlay/sun4i-a10-i2c1.dtso | 22 ++ + .../dts/allwinner/overlay/sun4i-a10-i2c2.dtso | 22 ++ + .../dts/allwinner/overlay/sun4i-a10-nand.dtso | 103 ++++++ + .../allwinner/overlay/sun4i-a10-pps-gpio.dtso | 29 ++ + .../dts/allwinner/overlay/sun4i-a10-pwm.dtso | 15 + + .../overlay/sun4i-a10-spdif-out.dtso | 38 ++ + .../overlay/sun4i-a10-spi-jedec-nor.dtso | 57 +++ + .../overlay/sun4i-a10-spi-spidev.dtso | 57 +++ + .../dts/allwinner/overlay/sun4i-a10-spi0.dtso | 23 ++ + .../dts/allwinner/overlay/sun4i-a10-spi1.dtso | 22 ++ + .../dts/allwinner/overlay/sun4i-a10-spi2.dtso | 23 ++ + .../allwinner/overlay/sun4i-a10-uart2.dtso | 37 ++ + .../allwinner/overlay/sun4i-a10-uart3.dtso | 47 +++ + .../allwinner/overlay/sun4i-a10-uart4.dtso | 37 ++ + .../allwinner/overlay/sun4i-a10-uart5.dtso | 32 ++ + .../allwinner/overlay/sun4i-a10-uart6.dtso | 32 ++ + .../allwinner/overlay/sun4i-a10-uart7.dtso | 32 ++ + .../allwinner/overlay/sun4i-a10-w1-gpio.dtso | 29 ++ + .../overlay/sun5i-a13-analog-codec.dtso | 13 + + .../allwinner/overlay/sun5i-a13-fixup.scr-cmd | 48 +++ + .../dts/allwinner/overlay/sun5i-a13-i2c1.dtso | 22 ++ + .../dts/allwinner/overlay/sun5i-a13-i2c2.dtso | 22 ++ + .../dts/allwinner/overlay/sun5i-a13-nand.dtso | 60 +++ + .../dts/allwinner/overlay/sun5i-a13-pwm.dtso | 15 + + .../overlay/sun5i-a13-spi-jedec-nor.dtso | 57 +++ + .../overlay/sun5i-a13-spi-spidev.dtso | 57 +++ + .../dts/allwinner/overlay/sun5i-a13-spi0.dtso | 38 ++ + .../dts/allwinner/overlay/sun5i-a13-spi1.dtso | 39 ++ + .../dts/allwinner/overlay/sun5i-a13-spi2.dtso | 22 ++ + .../allwinner/overlay/sun5i-a13-uart0.dtso | 32 ++ + .../allwinner/overlay/sun5i-a13-uart1.dtso | 22 ++ + .../allwinner/overlay/sun5i-a13-uart2.dtso | 22 ++ + .../allwinner/overlay/sun5i-a13-uart3.dtso | 22 ++ + .../overlay/sun7i-a20-analog-codec.dtso | 13 + + .../dts/allwinner/overlay/sun7i-a20-can.dtso | 15 + + .../allwinner/overlay/sun7i-a20-fixup.scr-cmd | 143 +++++++ + .../dts/allwinner/overlay/sun7i-a20-i2c1.dtso | 22 ++ + .../dts/allwinner/overlay/sun7i-a20-i2c2.dtso | 22 ++ + .../dts/allwinner/overlay/sun7i-a20-i2c3.dtso | 22 ++ + .../dts/allwinner/overlay/sun7i-a20-i2c4.dtso | 32 ++ + .../dts/allwinner/overlay/sun7i-a20-i2s0.dtso | 25 ++ + .../dts/allwinner/overlay/sun7i-a20-i2s1.dtso | 25 ++ + .../dts/allwinner/overlay/sun7i-a20-mmc2.dtso | 18 + + .../dts/allwinner/overlay/sun7i-a20-nand.dtso | 103 ++++++ + .../allwinner/overlay/sun7i-a20-pps-gpio.dtso | 29 ++ + .../dts/allwinner/overlay/sun7i-a20-pwm.dtso | 15 + + .../overlay/sun7i-a20-spdif-out.dtso | 38 ++ + .../overlay/sun7i-a20-spi-add-cs1.dtso | 16 + + .../overlay/sun7i-a20-spi-jedec-nor.dtso | 57 +++ + .../overlay/sun7i-a20-spi-spidev.dtso | 57 +++ + .../dts/allwinner/overlay/sun7i-a20-spi0.dtso | 23 ++ + .../dts/allwinner/overlay/sun7i-a20-spi1.dtso | 22 ++ + .../dts/allwinner/overlay/sun7i-a20-spi2.dtso | 23 ++ + .../allwinner/overlay/sun7i-a20-uart2.dtso | 32 ++ + .../allwinner/overlay/sun7i-a20-uart3.dtso | 42 +++ + .../allwinner/overlay/sun7i-a20-uart4.dtso | 22 ++ + .../allwinner/overlay/sun7i-a20-uart5.dtso | 22 ++ + .../allwinner/overlay/sun7i-a20-uart6.dtso | 22 ++ + .../allwinner/overlay/sun7i-a20-uart7.dtso | 22 ++ + .../allwinner/overlay/sun7i-a20-w1-gpio.dtso | 29 ++ + .../overlay/sun8i-h3-analog-codec.dtso | 17 + + .../dts/allwinner/overlay/sun8i-h3-cir.dtso | 15 + + .../allwinner/overlay/sun8i-h3-fixup.scr-cmd | 110 ++++++ + .../dts/allwinner/overlay/sun8i-h3-i2c0.dtso | 20 + + .../dts/allwinner/overlay/sun8i-h3-i2c1.dtso | 20 + + .../dts/allwinner/overlay/sun8i-h3-i2c2.dtso | 20 + + .../allwinner/overlay/sun8i-h3-pps-gpio.dtso | 29 ++ + .../dts/allwinner/overlay/sun8i-h3-pwm.dtso | 39 ++ + .../allwinner/overlay/sun8i-h3-spdif-out.dtso | 38 ++ + .../overlay/sun8i-h3-spi-add-cs1.dtso | 41 +++ + .../overlay/sun8i-h3-spi-jedec-nor.dtso | 42 +++ + .../overlay/sun8i-h3-spi-spidev.dtso | 42 +++ + .../dts/allwinner/overlay/sun8i-h3-uart1.dtso | 22 ++ + .../dts/allwinner/overlay/sun8i-h3-uart2.dtso | 22 ++ + .../dts/allwinner/overlay/sun8i-h3-uart3.dtso | 22 ++ + .../allwinner/overlay/sun8i-h3-usbhost0.dtso | 27 ++ + .../allwinner/overlay/sun8i-h3-usbhost1.dtso | 27 ++ + .../allwinner/overlay/sun8i-h3-usbhost2.dtso | 27 ++ + .../allwinner/overlay/sun8i-h3-usbhost3.dtso | 27 ++ + .../allwinner/overlay/sun8i-h3-w1-gpio.dtso | 29 ++ + .../dts/allwinner/overlay/sun8i-r40-i2c2.dtso | 20 + + .../dts/allwinner/overlay/sun8i-r40-i2c3.dtso | 20 + + .../overlay/sun8i-r40-spi-spidev0.dtso | 27 ++ + .../overlay/sun8i-r40-spi-spidev1.dtso | 27 ++ + .../allwinner/overlay/sun8i-r40-uart2.dtso | 22 ++ + .../allwinner/overlay/sun8i-r40-uart4.dtso | 22 ++ + .../allwinner/overlay/sun8i-r40-uart5.dtso | 22 ++ + .../allwinner/overlay/sun8i-r40-uart7.dtso | 22 ++ 97 files changed, 4176 insertions(+) + create mode 100644 arch/arm/boot/dts/allwinner/overlay/Makefile + create mode 100644 arch/arm/boot/dts/allwinner/overlay/README.sun4i-a10-overlays + create mode 100644 arch/arm/boot/dts/allwinner/overlay/README.sun5i-a13-overlays + create mode 100644 arch/arm/boot/dts/allwinner/overlay/README.sun7i-a20-overlays + create mode 100644 arch/arm/boot/dts/allwinner/overlay/README.sun8i-h3-overlays + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-analog-codec.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-can.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-fixup.scr-cmd + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-i2c1.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-i2c2.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-nand.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-pps-gpio.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-pwm.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spdif-out.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi-jedec-nor.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi-spidev.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi0.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi1.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi2.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart2.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart3.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart4.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart5.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart6.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart7.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun4i-a10-w1-gpio.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun5i-a13-analog-codec.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun5i-a13-fixup.scr-cmd + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun5i-a13-i2c1.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun5i-a13-i2c2.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun5i-a13-nand.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun5i-a13-pwm.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi-jedec-nor.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi-spidev.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi0.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi1.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi2.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart0.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart1.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart2.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart3.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-analog-codec.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-can.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-fixup.scr-cmd + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c1.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c2.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c3.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c4.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2s0.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2s1.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-mmc2.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-nand.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-pps-gpio.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-pwm.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spdif-out.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-add-cs1.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-jedec-nor.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-spidev.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi0.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi1.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi2.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart2.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart3.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart4.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart5.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart6.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart7.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun7i-a20-w1-gpio.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-analog-codec.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cir.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-fixup.scr-cmd + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c0.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c1.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c2.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-pps-gpio.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-pwm.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spdif-out.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-add-cs1.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-jedec-nor.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-spidev.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart1.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart2.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart3.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost0.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost1.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost2.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost3.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-w1-gpio.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-r40-i2c2.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-r40-i2c3.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-r40-spi-spidev0.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-r40-spi-spidev1.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart2.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart4.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart5.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart7.dtso diff --git a/arch/arm/boot/dts/allwinner/Makefile b/arch/arm/boot/dts/allwinner/Makefile index cf12179accb7..bd7f5c844e21 100644 @@ -4864,5 +4960,5 @@ index 000000000000..e572598339a6 + }; +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-overlay-sun8i-h3-cpu-clock-add-overclock.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-overlay-sun8i-h3-cpu-clock-add-overclock.patch index 94bfc0a671be..04330899f433 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-overlay-sun8i-h3-cpu-clock-add-overclock.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-overlay-sun8i-h3-cpu-clock-add-overclock.patch @@ -1,14 +1,17 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 10c3d372d0fcb4e4f403dc8863022120b6c710bd Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Wed, 2 Feb 2022 21:29:16 +0300 Subject: arm:dts:overlay: sun8i-h3-cpu-clock add overclock --- - arch/arm/boot/dts/allwinner/overlay/Makefile | 3 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.2GHz-1.3v.dtso | 31 +++++ - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.368GHz-1.3v.dtso | 67 ++++++++++ - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.3GHz-1.3v.dtso | 61 +++++++++ + arch/arm/boot/dts/allwinner/overlay/Makefile | 3 + + .../sun8i-h3-cpu-clock-1.2GHz-1.3v.dtso | 31 +++++++++ + .../sun8i-h3-cpu-clock-1.368GHz-1.3v.dtso | 67 +++++++++++++++++++ + .../sun8i-h3-cpu-clock-1.3GHz-1.3v.dtso | 61 +++++++++++++++++ 4 files changed, 162 insertions(+) + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.2GHz-1.3v.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.368GHz-1.3v.dtso + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.3GHz-1.3v.dtso diff --git a/arch/arm/boot/dts/allwinner/overlay/Makefile b/arch/arm/boot/dts/allwinner/overlay/Makefile index 0c47e8fda8fc..560f926b7018 100644 @@ -202,5 +205,5 @@ index 000000000000..413222831eab +}; + -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-sun8i-h3-nanopi-duo2-enable-powerbutton-and-ethernet.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-sun8i-h3-nanopi-duo2-enable-powerbutton-and-ethernet.patch deleted file mode 100644 index 2c0f3a0ee416..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-sun8i-h3-nanopi-duo2-enable-powerbutton-and-ethernet.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Gunjan Gupta -Date: Mon, 26 Jun 2023 13:29:46 +0000 -Subject: ARM: dts: sun8i: nanopiduo2: Use key-0 as power button - -The onboard button key-0 was not marked as power button. This meant -that once the board was suspended, there was no way to bring it back -to life. Mark key-0 as power button so that it can be used to bring -the board back to life ---- - arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts -index 343b02b97155..4878d27bab3e 100644 ---- a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts -+++ b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts -@@ -42,8 +42,9 @@ gpio-keys { - - key-0 { - label = "k1"; -- linux,code = ; -+ linux,code = ; - gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; /* PL3 */ -+ wakeup-source; - }; - }; - --- -Armbian - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Gunjan Gupta -Date: Mon, 26 Jun 2023 13:53:14 +0000 -Subject: ARM: dts: sun8i: nanopiduo2: enable ethernet - -NanoPi Duo2 has pinout for ethernet. Lets enable the same in dts ---- - arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts -index 4878d27bab3e..8669fd0879e7 100644 ---- a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts -+++ b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts -@@ -105,6 +105,13 @@ &ehci0 { - status = "okay"; - }; - -+&emac { -+ phy-handle = <&int_mii_phy>; -+ phy-mode = "mii"; -+ allwinner,leds-active-low; -+ status = "okay"; -+}; -+ - &mmc0 { - bus-width = <4>; - cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ --- -Armbian - diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-sun8i-h3-reduce-opp-microvolt-to-prevent-not.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-sun8i-h3-reduce-opp-microvolt-to-prevent-not-supported-.patch similarity index 95% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-sun8i-h3-reduce-opp-microvolt-to-prevent-not.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-sun8i-h3-reduce-opp-microvolt-to-prevent-not-supported-.patch index 396f0c20c415..53e938cccdf9 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-sun8i-h3-reduce-opp-microvolt-to-prevent-not.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-sun8i-h3-reduce-opp-microvolt-to-prevent-not-supported-.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 944b81371656107101029f67759713abf4f30a51 Mon Sep 17 00:00:00 2001 From: Gunjan Gupta Date: Mon, 10 Jul 2023 19:24:21 +0000 Subject: arm: dts: sun8i: h3: reduce opp-microvolt to prevent not supported by @@ -44,5 +44,5 @@ index 1b02a4c3f05d..8c2f597772fe 100644 }; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-k1-plus-device.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-k1-plus-device.patch index 0601f1c9b643..3e2bfe508c34 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-k1-plus-device.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-k1-plus-device.patch @@ -1,12 +1,13 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From c58846e90da14ec10cf697032867990cb63d5a07 Mon Sep 17 00:00:00 2001 From: wuweidong <625769020@qq.com> Date: Mon, 27 Nov 2017 10:23:51 +0800 Subject: arm64:dts: Add sun50i-h5-nanopi-k1-plus device --- - arch/arm64/boot/dts/allwinner/Makefile | 1 + - arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-k1-plus.dts | 396 ++++++++++ + arch/arm64/boot/dts/allwinner/Makefile | 1 + + .../allwinner/sun50i-h5-nanopi-k1-plus.dts | 396 ++++++++++++++++++ 2 files changed, 397 insertions(+) + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-k1-plus.dts diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile index 358efa5d6abc..29c44ac36599 100644 @@ -424,5 +425,5 @@ index 000000000000..b7045a9efab5 +}; \ No newline at end of file -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-m1-plus2-device.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-m1-plus2-device.patch index 1bece760d028..89fd9a9e8506 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-m1-plus2-device.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-m1-plus2-device.patch @@ -1,12 +1,13 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From dda53c73e018e9599dc9d0e637ca01308e1340a8 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Mon, 24 Jan 2022 18:54:36 +0300 Subject: arm64:dts: Add sun50i-h5-nanopi-m1-plus2 device --- - arch/arm64/boot/dts/allwinner/Makefile | 1 + - arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-m1-plus2.dts | 240 ++++++++++ + arch/arm64/boot/dts/allwinner/Makefile | 1 + + .../allwinner/sun50i-h5-nanopi-m1-plus2.dts | 240 ++++++++++++++++++ 2 files changed, 241 insertions(+) + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-m1-plus2.dts diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile index 0250c273de9c..9d813575ca26 100644 @@ -267,5 +268,5 @@ index 000000000000..d051382cc800 + status = "okay"; +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-neo-core2-device.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-neo-core2-device.patch index 83a5f88a2a4e..0737bc690fc6 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-neo-core2-device.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-neo-core2-device.patch @@ -1,12 +1,13 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 5b2ce3f3ca2aa45dfd3a77a9a5e810f46056fa69 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Mon, 24 Jan 2022 18:43:42 +0300 Subject: arm64:dts: Add sun50i-h5-nanopi-neo-core2 device --- - arch/arm64/boot/dts/allwinner/Makefile | 1 + - arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-core2.dts | 210 ++++++++++ + arch/arm64/boot/dts/allwinner/Makefile | 1 + + .../allwinner/sun50i-h5-nanopi-neo-core2.dts | 210 ++++++++++++++++++ 2 files changed, 211 insertions(+) + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-core2.dts diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile index 29c44ac36599..1764856f6c2d 100644 @@ -237,5 +238,5 @@ index 000000000000..57283cc16ad9 + status = "okay"; +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-neo2-v1.1-device.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-neo2-v1.1-device.patch index 75afb1ef5f7a..cebc5ff513f8 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-neo2-v1.1-device.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-Add-sun50i-h5-nanopi-neo2-v1.1-device.patch @@ -1,12 +1,13 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 5cd23fb9d4492ddbed0bfebcc838c9115e5419cf Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Mon, 24 Jan 2022 18:49:55 +0300 Subject: arm64:dts: Add sun50i-h5-nanopi-neo2-v1.1 device --- - arch/arm64/boot/dts/allwinner/Makefile | 1 + - arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2-v1.1.dts | 180 ++++++++++ + arch/arm64/boot/dts/allwinner/Makefile | 1 + + .../allwinner/sun50i-h5-nanopi-neo2-v1.1.dts | 180 ++++++++++++++++++ 2 files changed, 181 insertions(+) + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2-v1.1.dts diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile index 1764856f6c2d..0250c273de9c 100644 @@ -207,5 +208,5 @@ index 000000000000..06ffbbd29a93 + status = "okay"; +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-H616-Add-overlays-that-are-also-compatible-with.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-H616-Add-overlays-that-are-also-compatible-with-orang.patch similarity index 91% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-H616-Add-overlays-that-are-also-compatible-with.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-H616-Add-overlays-that-are-also-compatible-with-orang.patch index e6c1c68062fb..5edd35b87c64 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-H616-Add-overlays-that-are-also-compatible-with.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-H616-Add-overlays-that-are-also-compatible-with-orang.patch @@ -1,8 +1,8 @@ -From bcbe9ca5716942afb2a11ba1b9cbbb435d1ffa51 Mon Sep 17 00:00:00 2001 +From 3a4da37c64b078259531ef7476d80c1b9afab444 Mon Sep 17 00:00:00 2001 From: Gunjan Gupta Date: Thu, 1 Feb 2024 22:38:21 +0000 -Subject: [PATCH] arm64: dts: H616: Add overlays that are also compatible with - orange pi zero2 and zero3 +Subject: arm64: dts: H616: Add overlays that are also compatible with orange + pi zero2 and zero3 --- .../arm64/boot/dts/allwinner/overlay/Makefile | 5 ++++ @@ -11,8 +11,8 @@ Subject: [PATCH] arm64: dts: H616: Add overlays that are also compatible with .../allwinner/overlay/sun50i-h616-i2c4.dtso | 8 ++++++ .../allwinner/overlay/sun50i-h616-uart2.dtso | 8 ++++++ .../allwinner/overlay/sun50i-h616-uart5.dtso | 8 ++++++ - .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 27 +++++++++++++++++-- - 7 files changed, 70 insertions(+), 2 deletions(-) + .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 26 ++++++++++++++++++- + 7 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c2.dtso create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c3.dtso create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c4.dtso @@ -93,7 +93,7 @@ index 000000000000..6a6806906972 +}; diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart5.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart5.dtso new file mode 100644 -index 000000000000..6a6806906972 +index 000000000000..4f172489276b --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart5.dtso @@ -0,0 +1,8 @@ @@ -106,7 +106,7 @@ index 000000000000..6a6806906972 + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -index 52bd986abcdb..157b6736770e 100644 +index e71b79ebced8..362c43d5eb9f 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi @@ -319,11 +319,21 @@ i2c0_pins: i2c0-pins { @@ -139,7 +139,7 @@ index 52bd986abcdb..157b6736770e 100644 spi1_pins: spi1-pins { pins = "PH6", "PH7", "PH8"; function = "spi1"; -@@ -402,6 +410,21 @@ uart1_rts_cts_pins: uart1-rts-cts-pins { +@@ -402,6 +411,21 @@ uart1_rts_cts_pins: uart1-rts-cts-pins { pins = "PG8", "PG9"; function = "uart1"; }; @@ -162,5 +162,5 @@ index 52bd986abcdb..157b6736770e 100644 gic: interrupt-controller@3021000 { -- -2.34.1 +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwiner-sun50i-h616.dtsi-add-usb-ehci-ohc.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwiner-sun50i-h616.dtsi-add-usb-ehci-ohci.patch similarity index 93% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwiner-sun50i-h616.dtsi-add-usb-ehci-ohc.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwiner-sun50i-h616.dtsi-add-usb-ehci-ohci.patch index 4b7ef12ae0ee..fc6739fe21d9 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwiner-sun50i-h616.dtsi-add-usb-ehci-ohc.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwiner-sun50i-h616.dtsi-add-usb-ehci-ohci.patch @@ -1,10 +1,10 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From e01bc0a8b41090dabdab780763d35479e653c401 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Sun, 13 Nov 2022 23:15:38 +0300 Subject: arm64: dts: allwiner: sun50i-h616.dtsi: add usb,ehci,ohci --- - arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 11 ++++++++-- + arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi @@ -60,5 +60,5 @@ index 74aed0d232a9..44f8ae11ca16 100644 /omit-if-no-ref/ r_i2c_pins: r-i2c-pins { -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h6-Add-AC200-EPHY-nodes.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h6-Add-AC200-EPHY-nodes.patch index 6a5c2d1a0239..76ae2debd2a0 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h6-Add-AC200-EPHY-nodes.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h6-Add-AC200-EPHY-nodes.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From e2abda1b390f9749fa4908bb7039771bbc3c8166 Mon Sep 17 00:00:00 2001 From: Jernej Skrabec Date: Fri, 16 Aug 2019 16:40:20 +0200 Subject: arm64: dts: allwinner: h6: Add AC200 EPHY nodes @@ -17,11 +17,11 @@ connect the MAC and PHY accordingly. Signed-off-by: Jernej Skrabec Signed-off-by: Andre Przywara --- - arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 73 ++++++++++ + arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 73 ++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -index a6b32f7b786e..f50f17bd87f6 100644 +index 9feb68a332fe..ff367881643e 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi @@ -24,6 +24,16 @@ aliases { @@ -95,7 +95,7 @@ index a6b32f7b786e..f50f17bd87f6 100644 /omit-if-no-ref/ spi0_pins: spi0-pins { pins = "PC0", "PC2", "PC3"; -@@ -648,6 +684,43 @@ i2c2: i2c@5002800 { +@@ -649,6 +685,43 @@ i2c2: i2c@5002800 { #size-cells = <0>; }; @@ -140,5 +140,5 @@ index a6b32f7b786e..f50f17bd87f6 100644 compatible = "allwinner,sun50i-h6-spi", "allwinner,sun8i-h3-spi"; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h6-add-AC200-codec-nodes.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h6-add-AC200-codec-nodes.patch index 9d05e0b2ace2..62ce216f1a2f 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h6-add-AC200-codec-nodes.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h6-add-AC200-codec-nodes.patch @@ -1,15 +1,15 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 142a4882933673fb71a4834684b5e9f432b682ca Mon Sep 17 00:00:00 2001 From: Jernej Skrabec Date: Thu, 1 Sep 2022 17:45:03 +0200 Subject: arm64: dts: allwinner: h6: add AC200 codec nodes Signed-off-by: Jernej Skrabec --- - arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 42 ++++++++++ + arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 42 ++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -index f50f17bd87f6..538c90663602 100644 +index ff367881643e..926b3f568c0d 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi @@ -24,6 +24,22 @@ aliases { @@ -47,7 +47,7 @@ index f50f17bd87f6..538c90663602 100644 mmc0_pins: mmc0-pins { pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5"; -@@ -718,6 +739,12 @@ ac200_ephy_ctl: syscon { +@@ -719,6 +740,12 @@ ac200_ephy_ctl: syscon { phy-mode = "rmii"; status = "disabled"; }; @@ -60,7 +60,7 @@ index f50f17bd87f6..538c90663602 100644 }; }; -@@ -775,6 +802,21 @@ mdio: mdio { +@@ -776,6 +803,21 @@ mdio: mdio { }; }; @@ -83,5 +83,5 @@ index f50f17bd87f6..538c90663602 100644 #sound-dai-cells = <0>; compatible = "allwinner,sun50i-h6-i2s"; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-v1_6_2.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-.patch similarity index 93% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-v1_6_2.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-.patch index 7620a87e5648..8d1bc86d5f2d 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-v1_6_2.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From c15cdd5568126541113d6970018f449ed44f2288 Mon Sep 17 00:00:00 2001 From: AGM1968 Date: Tue, 23 May 2023 16:43:00 +0000 Subject: arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-v1_6_2 @@ -9,16 +9,17 @@ Subject: arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-v1_6_2 Signed-off-by: AGM1968 --- - arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi | 75 ++++++++ - arch/arm64/boot/dts/allwinner/sun50i-h618-cpu-dvfs.dtsi | 64 +++++++++++++ - arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi | 1 + - arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts | 5 + - arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts | 62 ++----------- - drivers/cpufreq/cpufreq-dt-platdev.c | 2 + - drivers/cpufreq/sun50i-cpufreq-nvmem.c | 92 +++++++--- + .../dts/allwinner/sun50i-h616-cpu-opp.dtsi | 75 +++++++++++++++ + .../allwinner/sun50i-h616-orangepi-zero.dtsi | 1 + + .../allwinner/sun50i-h616-orangepi-zero2.dts | 5 + + .../dts/allwinner/sun50i-h618-cpu-dvfs.dtsi | 64 +++++++++++++ + .../allwinner/sun50i-h618-orangepi-zero3.dts | 62 ++----------- + drivers/cpufreq/cpufreq-dt-platdev.c | 2 + + drivers/cpufreq/sun50i-cpufreq-nvmem.c | 92 ++++++++++++++----- 7 files changed, 221 insertions(+), 80 deletions(-) + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h618-cpu-dvfs.dtsi - + diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi new file mode 100644 index 000000000000..36f2950367c6 @@ -101,7 +102,7 @@ index 000000000000..36f2950367c6 + operating-points-v2 = <&cpu_opp_table>; +}; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi -index 0666d16ba7d0..54d706286554 100644 +index a795087c681f..54dfaf24e75d 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi @@ -7,6 +7,7 @@ @@ -113,7 +114,7 @@ index 0666d16ba7d0..54d706286554 100644 #include #include diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts -index 8d8009c7f9a3..41a5a4013091 100644 +index 649274d77827..47ab2acedae6 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts @@ -12,6 +12,11 @@ / { @@ -130,7 +131,7 @@ index 8d8009c7f9a3..41a5a4013091 100644 allwinner,tx-delay-ps = <700>; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-cpu-dvfs.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h618-cpu-dvfs.dtsi new file mode 100644 -index 0000000000000..0509e3fb22e26 +index 000000000000..0509e3fb22e2 --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-cpu-dvfs.dtsi @@ -0,0 +1,64 @@ @@ -199,7 +200,7 @@ index 0000000000000..0509e3fb22e26 + }; +}; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts -index 00fe28caac93..edbfc83f390a 100644 +index b3b1b8692125..eba89a87785b 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts @@ -6,12 +6,18 @@ @@ -285,7 +286,7 @@ index 00fe28caac93..edbfc83f390a 100644 vcc-pc-supply = <®_dldo1>; vcc-pf-supply = <®_dldo1>; diff --git a/drivers/cpufreq/cpufreq-dt-platdev.c b/drivers/cpufreq/cpufreq-dt-platdev.c -index fb2875ce1fdd..e63d36839769 100644 +index fb2875ce1fdd..0b5cbe13ccb1 100644 --- a/drivers/cpufreq/cpufreq-dt-platdev.c +++ b/drivers/cpufreq/cpufreq-dt-platdev.c @@ -104,6 +104,8 @@ static const struct of_device_id allowlist[] __initconst = { @@ -298,7 +299,7 @@ index fb2875ce1fdd..e63d36839769 100644 { .compatible = "apple,arm-platform", }, diff --git a/drivers/cpufreq/sun50i-cpufreq-nvmem.c b/drivers/cpufreq/sun50i-cpufreq-nvmem.c -index 6845ab5034ec..5d85bfe475de 100644 +index 6845ab5034ec..51d7010c49a7 100644 --- a/drivers/cpufreq/sun50i-cpufreq-nvmem.c +++ b/drivers/cpufreq/sun50i-cpufreq-nvmem.c @@ -6,6 +6,9 @@ @@ -457,7 +458,7 @@ index 6845ab5034ec..5d85bfe475de 100644 {} }; MODULE_DEVICE_TABLE(of, sun50i_cpufreq_match_list); -@@ -196,8 +239,8 @@ static int __init sun50i_cpufreq_init(void) +@@ -196,8 +240,8 @@ static int __init sun50i_cpufreq_init(void) return ret; sun50i_cpufreq_pdev = @@ -469,5 +470,5 @@ index 6845ab5034ec..5d85bfe475de 100644 if (ret == 0) return 0; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-Fix-thermal-zones-missing-trips.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-Fix-thermal-zones-add-missing-trips.patch similarity index 89% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-Fix-thermal-zones-missing-trips.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-Fix-thermal-zones-add-missing-trips.patch index 053809e28402..5a3567f63724 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-Fix-thermal-zones-missing-trips.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-Fix-thermal-zones-add-missing-trips.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From b7ff2326aa729907a527503fe7da50317c3fbd86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dzieko=C5=84ski?= Date: Wed, 3 May 2023 12:17:28 +0000 @@ -6,11 +6,11 @@ Subject: arm64: dts: allwinner: h616: Fix thermal zones (add missing trips) Signed-off-by: Michal Dziekonski --- - arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 29 ++++++++++ + .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -index 8628a9e3dfca..17b13d3193cc 100644 +index e3848b22359b..6ba83df33652 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi @@ -877,6 +877,11 @@ cpu_target: trip-point@1 { @@ -69,5 +69,5 @@ index 8628a9e3dfca..17b13d3193cc 100644 }; }; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-orangepi-zero2-Enable-expansion-board-USB-ports.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-orangepi-zero2-Enable-expansion-board-.patch similarity index 81% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-orangepi-zero2-Enable-expansion-board-USB-ports.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-orangepi-zero2-Enable-expansion-board-.patch index bde26a316810..c43bdd7667ba 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-orangepi-zero2-Enable-expansion-board-USB-ports.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-h616-orangepi-zero2-Enable-expansion-board-.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 0bc7e696227939df69c5bccdb4d19693a3db43f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dzieko=C5=84ski?= Date: Sun, 28 May 2023 00:26:43 +0000 @@ -7,11 +7,11 @@ Subject: arm64: dts: allwinner: h616 orangepi zero2: Enable expansion board Signed-off-by: Michal Dziekonski --- - arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi | 15 ++++++++++ + .../dts/allwinner/sun50i-h616-orangepi-zero.dtsi | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi -index 9dbf5ce0c338..e4281a47e290 100644 +index 3d996494d37c..558852702e55 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi @@ -67,6 +67,13 @@ &ehci1 { @@ -28,7 +28,7 @@ index 9dbf5ce0c338..e4281a47e290 100644 &emac0 { pinctrl-names = "default"; -@@ -95,6 +102,14 @@ &ohci1 { +@@ -92,6 +99,14 @@ &ohci1 { status = "okay"; }; @@ -44,5 +44,5 @@ index 9dbf5ce0c338..e4281a47e290 100644 status = "okay"; pinctrl-names = "default"; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-overlay-Add-Overlays-for-sunxi64.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-overlay-Add-Overlays-for-sunxi64.patch index 842e9afd9cb4..4f809f114890 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-overlay-Add-Overlays-for-sunxi64.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-overlay-Add-Overlays-for-sunxi64.patch @@ -1,59 +1,107 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 44a30e3d24d0930e8eade41e0ece23559a47a013 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Wed, 2 Feb 2022 13:02:10 +0300 Subject: arm64:dts:allwinner:overlay: Add Overlays for sunxi64 --- - arch/arm64/boot/dts/allwinner/Makefile | 2 + - arch/arm64/boot/dts/allwinner/overlay/Makefile | 58 +++ - arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays | 196 ++++++++ - arch/arm64/boot/dts/allwinner/overlay/README.sun50i-h5-overlays | 250 ++++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-fixup.scr-cmd | 95 ++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-i2c0.dtso | 32 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-i2c1.dtso | 22 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pps-gpio.dtso | 29 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-add-cs1.dtso | 41 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-jedec-nor.dtso | 34 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-spidev.dtso | 42 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart1.dtso | 22 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart2.dtso | 37 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart3.dtso | 32 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart4.dtso | 37 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-w1-gpio.dtso | 29 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-analog-codec.dtso | 17 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cir.dtso | 15 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-fixup.scr-cmd | 110 ++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c0.dtso | 20 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c1.dtso | 20 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c2.dtso | 20 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-pps-gpio.dtso | 29 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-pwm.dtso | 39 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spdif-out.dtso | 38 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-add-cs1.dtso | 41 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-jedec-nor.dtso | 42 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-spidev.dtso | 42 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart1.dtso | 22 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart2.dtso | 32 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart3.dtso | 32 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost0.dtso | 27 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost1.dtso | 27 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost2.dtso | 27 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost3.dtso | 27 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-w1-gpio.dtso | 29 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd | 110 ++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c0.dtso | 20 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c1.dtso | 20 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c2.dtso | 20 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-ruart.dtso | 13 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-add-cs1.dtso | 41 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-jedec-nor.dtso | 42 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-spidev.dtso | 42 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-spidev1.dtso | 30 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart1.dtso | 22 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart2.dtso | 32 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart3.dtso | 32 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-w1-gpio.dtso | 29 ++ + arch/arm64/boot/dts/allwinner/Makefile | 2 + + .../arm64/boot/dts/allwinner/overlay/Makefile | 58 ++++ + .../overlay/README.sun50i-a64-overlays | 196 ++++++++++++++ + .../overlay/README.sun50i-h5-overlays | 250 ++++++++++++++++++ + .../overlay/sun50i-a64-fixup.scr-cmd | 95 +++++++ + .../allwinner/overlay/sun50i-a64-i2c0.dtso | 32 +++ + .../allwinner/overlay/sun50i-a64-i2c1.dtso | 22 ++ + .../overlay/sun50i-a64-pps-gpio.dtso | 29 ++ + .../overlay/sun50i-a64-spi-add-cs1.dtso | 41 +++ + .../overlay/sun50i-a64-spi-jedec-nor.dtso | 34 +++ + .../overlay/sun50i-a64-spi-spidev.dtso | 42 +++ + .../allwinner/overlay/sun50i-a64-uart1.dtso | 22 ++ + .../allwinner/overlay/sun50i-a64-uart2.dtso | 37 +++ + .../allwinner/overlay/sun50i-a64-uart3.dtso | 32 +++ + .../allwinner/overlay/sun50i-a64-uart4.dtso | 37 +++ + .../allwinner/overlay/sun50i-a64-w1-gpio.dtso | 29 ++ + .../overlay/sun50i-h5-analog-codec.dtso | 17 ++ + .../dts/allwinner/overlay/sun50i-h5-cir.dtso | 15 ++ + .../allwinner/overlay/sun50i-h5-fixup.scr-cmd | 110 ++++++++ + .../dts/allwinner/overlay/sun50i-h5-i2c0.dtso | 20 ++ + .../dts/allwinner/overlay/sun50i-h5-i2c1.dtso | 20 ++ + .../dts/allwinner/overlay/sun50i-h5-i2c2.dtso | 20 ++ + .../allwinner/overlay/sun50i-h5-pps-gpio.dtso | 29 ++ + .../dts/allwinner/overlay/sun50i-h5-pwm.dtso | 39 +++ + .../overlay/sun50i-h5-spdif-out.dtso | 38 +++ + .../overlay/sun50i-h5-spi-add-cs1.dtso | 41 +++ + .../overlay/sun50i-h5-spi-jedec-nor.dtso | 42 +++ + .../overlay/sun50i-h5-spi-spidev.dtso | 42 +++ + .../allwinner/overlay/sun50i-h5-uart1.dtso | 22 ++ + .../allwinner/overlay/sun50i-h5-uart2.dtso | 32 +++ + .../allwinner/overlay/sun50i-h5-uart3.dtso | 32 +++ + .../allwinner/overlay/sun50i-h5-usbhost0.dtso | 27 ++ + .../allwinner/overlay/sun50i-h5-usbhost1.dtso | 27 ++ + .../allwinner/overlay/sun50i-h5-usbhost2.dtso | 27 ++ + .../allwinner/overlay/sun50i-h5-usbhost3.dtso | 27 ++ + .../allwinner/overlay/sun50i-h5-w1-gpio.dtso | 29 ++ + .../allwinner/overlay/sun50i-h6-fixup.scr-cmd | 110 ++++++++ + .../dts/allwinner/overlay/sun50i-h6-i2c0.dtso | 20 ++ + .../dts/allwinner/overlay/sun50i-h6-i2c1.dtso | 20 ++ + .../dts/allwinner/overlay/sun50i-h6-i2c2.dtso | 20 ++ + .../allwinner/overlay/sun50i-h6-ruart.dtso | 13 + + .../overlay/sun50i-h6-spi-add-cs1.dtso | 41 +++ + .../overlay/sun50i-h6-spi-jedec-nor.dtso | 42 +++ + .../overlay/sun50i-h6-spi-spidev.dtso | 42 +++ + .../overlay/sun50i-h6-spi-spidev1.dtso | 30 +++ + .../allwinner/overlay/sun50i-h6-uart1.dtso | 22 ++ + .../allwinner/overlay/sun50i-h6-uart2.dtso | 32 +++ + .../allwinner/overlay/sun50i-h6-uart3.dtso | 32 +++ + .../allwinner/overlay/sun50i-h6-w1-gpio.dtso | 29 ++ 49 files changed, 2067 insertions(+) + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/Makefile + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/README.sun50i-h5-overlays + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-fixup.scr-cmd + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-i2c0.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-i2c1.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pps-gpio.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-add-cs1.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-jedec-nor.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-spidev.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart1.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart2.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart3.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart4.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-w1-gpio.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-analog-codec.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cir.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-fixup.scr-cmd + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c0.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c1.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c2.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-pps-gpio.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-pwm.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spdif-out.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-add-cs1.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-jedec-nor.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-spidev.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart1.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart2.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart3.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost0.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost1.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost2.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost3.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-w1-gpio.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c0.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c1.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c2.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-ruart.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-add-cs1.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-jedec-nor.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-spidev.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-spidev1.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart1.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart2.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart3.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-w1-gpio.dtso diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile index 9d813575ca26..54424ab784a5 100644 @@ -2419,5 +2467,5 @@ index 000000000000..3043c87780e4 + }; +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-sun50i-h6-Fix-H6-emmc.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-sun50i-h6-Fix-H6-emmc.patch index 68b5f873c3d5..bd9ff66a9afd 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-sun50i-h6-Fix-H6-emmc.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-allwinner-sun50i-h6-Fix-H6-emmc.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 99d87ae3a8bbe469bda97e80d056e0a8aa33c384 Mon Sep 17 00:00:00 2001 From: Ukhellfire Date: Fri, 25 Mar 2022 07:10:57 +0000 Subject: arm64: dts/allwinner/sun50i-h6: Fix H6 emmc @@ -8,10 +8,10 @@ Subject: arm64: dts/allwinner/sun50i-h6: Fix H6 emmc 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -index 60fef6a46d34..a6b32f7b786e 100644 +index 70650e47bdb5..9feb68a332fe 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -@@ -547,8 +547,7 @@ mmc1: mmc@4021000 { +@@ -548,8 +548,7 @@ mmc1: mmc@4021000 { }; mmc2: mmc@4022000 { @@ -22,5 +22,5 @@ index 60fef6a46d34..a6b32f7b786e 100644 clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>; clock-names = "ahb", "mmc"; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-h616-add-hdmi-support-for-zero2-and-zero3.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-h616-add-hdmi-support-for-zero2-and-zero3.patch index d327ea5c942e..1c21b56039eb 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-h616-add-hdmi-support-for-zero2-and-zero3.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-h616-add-hdmi-support-for-zero2-and-zero3.patch @@ -1,7 +1,7 @@ -From 05144060f918bef146b36b916ab0edc321fdd2f4 Mon Sep 17 00:00:00 2001 +From 66313e3a09a2b9b052b881b5b4a4eb4ec536044d Mon Sep 17 00:00:00 2001 From: Gunjan Gupta Date: Fri, 29 Dec 2023 11:18:33 +0000 -Subject: [PATCH] arm64: dts: h616: add hdmi support for zero2 and zero3 +Subject: arm64: dts: h616: add hdmi support for zero2 and zero3 --- .../allwinner/sun50i-h616-orangepi-zero.dtsi | 25 ++ @@ -10,7 +10,7 @@ Subject: [PATCH] arm64: dts: h616: add hdmi support for zero2 and zero3 3 files changed, 242 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi -index 7a152fadff4f..3cb35b838f71 100644 +index 6aca609464c0..ce3dc6d9cd66 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi @@ -23,6 +23,17 @@ chosen { @@ -42,7 +42,7 @@ index 7a152fadff4f..3cb35b838f71 100644 &ehci1 { status = "okay"; }; -@@ -113,6 +128,16 @@ &emac0 { +@@ -110,6 +125,16 @@ &emac0 { status = "okay"; }; @@ -60,10 +60,10 @@ index 7a152fadff4f..3cb35b838f71 100644 ext_rgmii_phy: ethernet-phy@1 { compatible = "ethernet-phy-ieee802.3-c22"; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts -index 41a5a4013091..68bef82c9dca 100644 +index 47ab2acedae6..d8a019fd4f7c 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts -@@ -26,6 +26,10 @@ &gpu { +@@ -29,6 +29,10 @@ &gpu { status = "okay"; }; @@ -335,5 +335,5 @@ index de2a736f0e33..2424a2827455 100644 compatible = "allwinner,sun50i-h616-rtc"; reg = <0x07000000 0x400>; -- -2.34.1 +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2-and-zero3.patch similarity index 85% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2-and-zero3.patch index 9b3c7004393e..2b40cf4986b0 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2-and-zero3.patch @@ -1,18 +1,17 @@ -From 8e36084386d07a07f755bda978875b1354162019 Mon Sep 17 00:00:00 2001 +From 4113bf1a9d66fe7c958bdf6ff1ad198310b3659f Mon Sep 17 00:00:00 2001 From: Gunjan Gupta Date: Wed, 13 Dec 2023 19:15:45 +0000 -Subject: [PATCH] arm64: dts: h616: add wifi support for orange pi zero 2 and - zero3 +Subject: arm64: dts: h616: add wifi support for orange pi zero 2 and zero3 --- .../allwinner/sun50i-h616-orangepi-zero.dtsi | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi -index 19451a0c85ae..400966667d1e 100644 +index 558852702e55..6aca609464c0 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi -@@ -59,6 +59,34 @@ reg_usb1_vbus: regulator-usb1-vbus { +@@ -60,6 +60,34 @@ reg_usb1_vbus: regulator-usb1-vbus { gpio = <&pio 2 16 GPIO_ACTIVE_HIGH>; /* PC16 */ status = "okay"; }; @@ -47,7 +46,7 @@ index 19451a0c85ae..400966667d1e 100644 }; &ehci1 { -@@ -90,6 +118,16 @@ &mmc0 { +@@ -95,6 +123,16 @@ &mmc0 { status = "okay"; }; @@ -65,5 +64,5 @@ index 19451a0c85ae..400966667d1e 100644 status = "okay"; }; -- -2.34.1 +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-overlay-sun50i-a64-pine64-7inch-lcd.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-overlay-sun50i-a64-pine64-7inch-lcd.patch index 59834b4f41f2..c1bb826cbd99 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-overlay-sun50i-a64-pine64-7inch-lcd.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-overlay-sun50i-a64-pine64-7inch-lcd.patch @@ -1,14 +1,15 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 42b62c9d7c5958bcf12363ae866bc2ca6035a187 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Wed, 2 Feb 2022 20:27:02 +0300 Subject: arm64:dts:overlay: sun50i-a64-pine64-7inch-lcd Added to orange-pi-5.9 2020-11-30 --- - arch/arm64/boot/dts/allwinner/overlay/Makefile | 1 + - arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays | 5 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pine64-7inch-lcd.dtso | 87 ++++++++++ + .../arm64/boot/dts/allwinner/overlay/Makefile | 1 + + .../overlay/README.sun50i-a64-overlays | 5 ++ + .../overlay/sun50i-a64-pine64-7inch-lcd.dtso | 87 +++++++++++++++++++ 3 files changed, 93 insertions(+) + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pine64-7inch-lcd.dtso diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile index ae404a5258a9..8d5ae3e3beb8 100644 @@ -139,5 +140,5 @@ index 000000000000..34708103fe15 + }; +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-overlay-sun50i-h5-add-gpio-regulator-overclock.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-overlay-sun50i-h5-add-gpio-regulator-overclock.patch index 88933f8273c0..e0b90b6293bc 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-overlay-sun50i-h5-add-gpio-regulator-overclock.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-overlay-sun50i-h5-add-gpio-regulator-overclock.patch @@ -1,15 +1,19 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From d2fedf157df2dcd57fa46c1c08a680e236f82dc8 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Wed, 2 Feb 2022 21:01:10 +0300 Subject: arm64:dts:overlay sun50i-h5 add gpio regulator overclock --- - arch/arm64/boot/dts/allwinner/overlay/Makefile | 4 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.0GHz-1.1v.dtso | 31 +++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.2GHz-1.3v.dtso | 31 +++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.3GHz-1.3v.dtso | 61 ++++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-gpio-regulator-1.3v.dtso | 38 ++++++ + .../arm64/boot/dts/allwinner/overlay/Makefile | 4 ++ + .../sun50i-h5-cpu-clock-1.0GHz-1.1v.dtso | 31 ++++++++++ + .../sun50i-h5-cpu-clock-1.2GHz-1.3v.dtso | 31 ++++++++++ + .../sun50i-h5-cpu-clock-1.3GHz-1.3v.dtso | 61 +++++++++++++++++++ + .../sun50i-h5-gpio-regulator-1.3v.dtso | 38 ++++++++++++ 5 files changed, 165 insertions(+) + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.0GHz-1.1v.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.2GHz-1.3v.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.3GHz-1.3v.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-gpio-regulator-1.3v.dtso diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile index 8d5ae3e3beb8..9e3def41669e 100644 @@ -212,5 +216,5 @@ index 000000000000..8d2755c3d76f +}; + -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-a64-add-dts-for-recore-a5-to-a8.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-a64-add-dts-for-recore-a5-to-a8.patch deleted file mode 100644 index 4d6e812ec36d..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-a64-add-dts-for-recore-a5-to-a8.patch +++ /dev/null @@ -1,821 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Elias Bakken -Date: Thu, 27 Jun 2024 12:39:45 +0000 -Subject: Add device trees for Recore A5 to A8 - -Signed-off-by: Elias Bakken ---- - arch/arm64/boot/dts/allwinner/Makefile | 5 + - arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a5.dts | 76 ++ - arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a6.dts | 33 + - arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a7.dts | 54 ++ - arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a8.dts | 149 ++++ - arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dts | 37 + - arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dtsi | 396 ++++++++++ - 7 files changed, 750 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile -index a957365edc1a..5f705361c468 100644 ---- a/arch/arm64/boot/dts/allwinner/Makefile -+++ b/arch/arm64/boot/dts/allwinner/Makefile -@@ -18,10 +18,15 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.0.dtb - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.1.dtb - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.2.dtb - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.2b.dtb - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinetab.dtb - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinetab-early-adopter.dtb -+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-recore.dtb -+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-recore-a5.dtb -+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-recore-a6.dtb -+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-recore-a7.dtb -+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-recore-a8.dtb - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-teres-i.dtb - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a100-allwinner-perf1.dtb - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-bananapi-m2-plus.dtb - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-bananapi-m2-plus-v1.2.dtb -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a5.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a5.dts -new file mode 100644 -index 000000000000..22c369c9dea3 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a5.dts -@@ -0,0 +1,76 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+ -+/dts-v1/; -+ -+#include "sun50i-a64-recore.dtsi" -+ -+/ { -+ model = "Recore-A5"; -+ compatible = "iagent,recore-a5", "allwinner,sun50i-a64"; -+ -+ e0-consumer { -+ compatible = "custom,reg-userspace-consumer"; -+ regulator-name = "e0-consumer"; -+ controlled-supply = <®_aldo1>; -+ }; -+ -+ e1-consumer { -+ compatible = "custom,reg-userspace-consumer"; -+ regulator-name = "e1-consumer"; -+ controlled-supply = <®_aldo2>; -+ }; -+ -+ e2-consumer { -+ compatible = "custom,reg-userspace-consumer"; -+ regulator-name = "e2-consumer"; -+ controlled-supply = <®_dldo3>; -+ }; -+ -+ e3-consumer { -+ compatible = "custom,reg-userspace-consumer"; -+ regulator-name = "e3-consumer"; -+ controlled-supply = <®_dldo4>; -+ }; -+}; -+ -+®_aldo1 { -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <700000>; -+ regulator-name = "vcc-vref-e0"; -+}; -+ -+®_aldo2 { -+ regulator-min-microvolt = <3200000>; -+ regulator-max-microvolt = <3200000>; -+ regulator-name = "vcc-vref-e1"; -+}; -+ -+®_dldo3 { -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <700000>; -+ regulator-name = "vcc-vref-e2"; -+}; -+ -+®_dldo4 { -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <700000>; -+ regulator-name = "vcc-vref-e3"; -+}; -+ -+®_dcdc5 { -+ regulator-min-microvolt = <1500000>; -+ regulator-max-microvolt = <1500000>; -+}; -+ -+/* STM32 */ -+&uart4 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart4_pins>; -+ status = "okay"; -+}; -+ -+&mali { -+ /delete-property/ operating-points-v2; -+ assigned-clock-rates = <120000000>; -+}; -+ -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a6.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a6.dts -new file mode 100644 -index 000000000000..4a790dcf9d9f ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a6.dts -@@ -0,0 +1,33 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+ -+/dts-v1/; -+ -+#include "sun50i-a64-recore.dtsi" -+ -+/ { -+ model = "Recore-A6"; -+ compatible = "iagent,recore-a6", "allwinner,sun50i-a64"; -+}; -+ -+®_aldo1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-ext"; -+}; -+&uart4 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart4_pins>; -+ status = "okay"; -+}; -+ -+®_dcdc5 { -+ regulator-min-microvolt = <1500000>; -+ regulator-max-microvolt = <1500000>; -+}; -+ -+&mali { -+ /delete-property/ operating-points-v2; -+ assigned-clock-rates = <120000000>; -+}; -+ -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a7.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a7.dts -new file mode 100644 -index 000000000000..52ea801b8910 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a7.dts -@@ -0,0 +1,54 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+ -+/dts-v1/; -+ -+#include "sun50i-a64-recore.dtsi" -+#include -+ -+/ { -+ model = "Recore-A7"; -+ compatible = "iagent,recore-a7", "allwinner,sun50i-a64"; -+ -+ reg_usb0_vbus: usb0-vbus { -+ compatible = "regulator-fixed"; -+ vin-supply = <®_5v>; -+ regulator-name = "usb0-vbus0"; -+ regulator-type = "voltage"; -+ gpio = <&pio 3 7 GPIO_ACTIVE_HIGH>; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ enable-active-high; -+ status = "okay"; -+ }; -+}; -+ -+®_usb1_vbus3 { -+ gpio = <&pio 3 5 GPIO_ACTIVE_HIGH> ; /* PD5 */ -+}; -+ -+®_usb1_vbus4 { -+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH> ; /* PD6 */ -+}; -+ -+®_aldo1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-ext"; -+}; -+ -+/* Set over current to lowest value: 35 A = 700 mV */ -+®_dldo2 { -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <700000>; -+}; -+ -+&usbphy { -+ usb1_vbus-supply = <®_5v>; -+}; -+ -+&uart2 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_pins>; -+ status = "okay"; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a8.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a8.dts -new file mode 100644 -index 000000000000..44d559bdcfe2 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a8.dts -@@ -0,0 +1,149 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+ -+/dts-v1/; -+ -+#include "sun50i-a64-recore.dtsi" -+#include -+ -+/ { -+ model = "Recore-A8"; -+ compatible = "iagent,recore-a8", "allwinner,sun50i-a64"; -+ -+ reg_usb0_vbus: usb0-vbus { -+ compatible = "regulator-fixed"; -+ regulator-name = "usb0-vbus0"; -+ regulator-type = "voltage"; -+ gpio = <&pio 3 7 GPIO_ACTIVE_HIGH>; // PD7: EN-USB-OTG -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ enable-active-high; -+ status = "okay"; -+ }; -+}; -+ -+&pio{ -+ reg_usb1_vbus4_pins: reg-usb1-vbus4-pins { -+ pins = "PD5"; -+ function = "reg_usb1_vbus4"; -+ }; -+ reg_usb1_vbus3_pins: reg-usb1-vbus3-pins { -+ pins = "PD6"; -+ function = "reg_usb1_vbus3"; -+ }; -+ reg_usb0_vbus_pins: reg-usb0-vbus-pins { -+ pins = "PD7"; -+ function = "reg_usb0_vbus"; -+ }; -+ fusb0_int_pin: fusb0-int-pin { -+ pins = "PH10"; -+ function = "gpio_in"; -+ }; -+}; -+ -+®_usb1_vbus3 { -+ gpio = <&pio 3 5 GPIO_ACTIVE_HIGH>; -+}; -+ -+®_usb1_vbus4 { -+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; -+}; -+ -+®_aldo1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-ext"; -+}; -+ -+/* Set over current to: 30 A = 1200 mV */ -+®_dldo2 { -+ regulator-min-microvolt = <1200000>; -+ regulator-max-microvolt = <1200000>; -+}; -+ -+/* stm32 mcu */ -+&uart2 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_pins>; -+ status = "okay"; -+}; -+ -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ -+&usb_power_supply { -+ regulator-name = "usb-power-supply"; -+ status = "okay"; -+}; -+ -+&usbphy { -+ status = "okay"; -+ usb0_id_det-gpios = <&pio 4 7 GPIO_ACTIVE_HIGH>; -+ usb0_vbus_det-gpios = <&pio 4 6 GPIO_ACTIVE_HIGH>; -+ ports { -+ port@0 { -+ usb0_role_switch: endpoint { -+ remote-endpoint = <&fusb302_ep>; -+ }; -+ }; -+ }; -+}; -+ -+&i2c1 { -+ status = "okay"; -+ -+ fusb0: fusb30x@22 { -+ compatible = "fcs,fusb302"; -+ reg = <0x22>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&fusb0_int_pin>; -+ vbus-supply = <®_usb0_vbus>; -+ interrupt-parent = <&pio>; -+ interrupts = <7 10 IRQ_TYPE_EDGE_FALLING>; // PH10 -+ -+ port { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ usb_hs: endpoint@0 { -+ reg = <0>; -+ remote-endpoint = <&usb0_hs>; -+ }; -+ }; -+ -+ usb_con: connector { -+ compatible = "usb-c-connector"; -+ data-role = "dual"; -+ label = "USB-C"; -+ op-sink-microwatt = <1000000>; -+ power-role = "dual"; -+ sink-pdos = ; -+ source-pdos = ; -+ try-power-role = "sink"; -+ -+ ports { -+ port@0 { -+ fusb302_ep: endpoint { -+ remote-endpoint = <&usb0_role_switch>; -+ }; -+ }; -+ }; -+ }; -+ }; -+}; -+ -+ -+&ohci0 { -+ status = "okay"; -+}; -+ -+&ehci0 { -+ status = "okay"; -+ port { -+ usb0_hs: endpoint { -+ remote-endpoint = <&usb_hs>; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dts -new file mode 100644 -index 000000000000..0d6880ef9121 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dts -@@ -0,0 +1,37 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+ -+/dts-v1/; -+ -+#include "sun50i-a64-recore.dtsi" -+ -+/ { -+ model = "Recore-all"; -+ compatible = "iagent,recore-all", "allwinner,sun50i-a64"; -+ -+ reg_usb1_vbus5: usb1-vbus5 { -+ compatible = "regulator-fixed"; -+ regulator-name = "usb1-vbus5"; -+ gpio = <&pio 3 5 GPIO_ACTIVE_HIGH> ; /* PD5 */ -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ regulator-always-on; -+ enable-active-high; -+ vin-supply = <®_5v>; -+ }; -+ reg_usb1_vbus6: usb1-vbus6 { -+ compatible = "regulator-fixed"; -+ regulator-name = "usb1-vbus6"; -+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH> ; /* PD6 */ -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ regulator-always-on; -+ enable-active-high; -+ vin-supply = <®_5v>; -+ }; -+}; -+ -+&mali { -+ /delete-property/ operating-points-v2; -+ assigned-clock-rates = <120000000>; -+}; -+ -\ No newline at end of file -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dtsi -new file mode 100644 -index 000000000000..390af27157d6 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dtsi -@@ -0,0 +1,396 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+ -+/dts-v1/; -+ -+#include "sun50i-a64.dtsi" -+#include "sun50i-a64-cpu-opp.dtsi" -+ -+#include -+#include -+ -+/ { -+ aliases { -+ ethernet0 = &emac; -+ serial0 = &uart0; -+ }; -+ -+ chosen { -+ stdout-path = "serial0:115200n8"; -+ }; -+ -+ hdmi-connector { -+ compatible = "hdmi-connector"; -+ type = "a"; -+ -+ port { -+ hdmi_con_in: endpoint { -+ remote-endpoint = <&hdmi_out_con>; -+ }; -+ }; -+ }; -+ -+ leds { -+ compatible = "gpio-leds"; -+ -+ heartbeat-led { -+ label = "recore:white:heartbeat"; -+ gpios = <&pio 1 7 GPIO_ACTIVE_HIGH>; -+ linux,default-trigger = "heartbeat"; -+ function = LED_FUNCTION_STATUS; -+ color = ; -+ }; -+ -+ emmc-led { -+ label = "recore:white:emmc"; -+ gpios = <&pio 1 5 GPIO_ACTIVE_HIGH>; -+ linux,default-trigger = "mmc2"; -+ }; -+ -+ cpu-led { -+ label = "recore:white:cpu"; -+ gpios = <&pio 1 6 GPIO_ACTIVE_HIGH>; -+ linux,default-trigger = "activity"; -+ }; -+ -+ usb-led { -+ label = "recore:white:usb"; -+ function = LED_FUNCTION_USB; -+ gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; -+ trigger-sources = <&ohci1>, <&ehci1>; -+ linux,default-trigger = "usb-host"; -+ }; -+ }; -+ -+ reg_5v: 5v-buck { -+ compatible = "regulator-fixed"; -+ regulator-name = "5v-buck"; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ regulator-always-on; -+ }; -+ -+ reg_usb1_vbus1: usb1-vbus1 { -+ compatible = "regulator-fixed"; -+ regulator-name = "usb1-vbus1"; -+ gpio = <&pio 7 0 GPIO_ACTIVE_HIGH> ; /* PH0 */ -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ regulator-always-on; -+ regulator-boot-on; -+ enable-active-high; -+ }; -+ -+ reg_usb1_vbus2: usb1-vbus2 { -+ compatible = "regulator-fixed"; -+ regulator-name = "usb1-vbus2"; -+ gpio = <&pio 7 1 GPIO_ACTIVE_HIGH> ; /* PH1 */ -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ regulator-always-on; -+ regulator-boot-on; -+ enable-active-high; -+ }; -+ -+ reg_usb1_vbus3: usb1-vbus3 { -+ compatible = "regulator-fixed"; -+ regulator-name = "usb1-vbus3"; -+ gpio = <&pio 7 2 GPIO_ACTIVE_HIGH> ; /* PH2 */ -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ regulator-always-on; -+ enable-active-high; -+ vin-supply = <®_5v>; -+ }; -+ -+ reg_usb1_vbus4: usb1-vbus4 { -+ compatible = "regulator-fixed"; -+ regulator-name = "usb1-vbus4"; -+ gpio = <&pio 7 3 GPIO_ACTIVE_HIGH> ; /* PH3 */ -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ startup-delay-us = <100000>; -+ regulator-always-on; -+ enable-active-high; -+ vin-supply = <®_5v>; -+ }; -+ -+ reg_hdmi_vbus: hdmi-vbus { -+ compatible = "regulator-fixed"; -+ regulator-name = "hdmi-vbus"; -+ gpio = <&pio 6 9 GPIO_ACTIVE_HIGH> ; /* PG9 */ -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ regulator-always-on; -+ enable-active-high; -+ }; -+}; -+ -+&de { -+ status = "okay"; -+}; -+ -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&cpu1 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&cpu2 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&cpu3 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&emac { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&rgmii_pins>; -+ phy-mode = "rgmii-txid"; -+ phy-handle = <&ext_rgmii_phy>; -+ phy-supply = <®_dcdc1>; -+ phy-io-supply = <®_dcdc1>; -+ status = "okay"; -+}; -+ -+&hdmi { -+ hvcc-supply = <®_dldo1>; -+ status = "okay"; -+}; -+ -+&hdmi_out { -+ hdmi_out_con: endpoint { -+ remote-endpoint = <&hdmi_con_in>; -+ }; -+}; -+ -+&mdio { -+ ext_rgmii_phy: ethernet-phy@1 { -+ compatible = "ethernet-phy-ieee802.3-c22"; -+ reg = <7>; -+ }; -+}; -+ -+&mixer0 { -+ status = "disabled"; -+}; -+ -+&tcon0 { -+ status = "disabled"; -+}; -+ -+&mmc2 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc2_pins>/*, <&mmc2_ds_pin>*/; -+ vmmc-supply = <®_dcdc1>; -+ vqmmc-supply = <®_eldo1>; -+ non-removable; -+ bus-width = <8>; -+ cap-mmc-hw-reset; -+ mmc-hs200-1_8v; -+ post-power-on-delay-ms = <1>; /* power is already turned on by the bootloader */ -+ status = "okay"; -+}; -+ -+&ohci1 { -+ status = "okay"; -+}; -+ -+&ehci1 { -+ status = "okay"; -+}; -+ -+&pio { -+ vcc-pb-supply = <®_dcdc1>; -+ vcc-pc-supply = <®_eldo1>; -+ vcc-pd-supply = <®_dcdc1>; -+ vcc-pe-supply = <®_dcdc1>; -+ vcc-pf-supply = <®_dcdc1>; -+ vcc-pg-supply = <®_dcdc1>; -+ vcc-ph-supply = <®_dcdc1>; -+ vcc-pl-supply = <®_dcdc1>; -+}; -+ -+&r_rsb { -+ status = "okay"; -+ axp803: pmic@3a3 { -+ compatible = "x-powers,axp803"; -+ reg = <0x3a3>; -+ interrupt-parent = <&r_intc>; -+ interrupts = ; -+ }; -+}; -+ -+#include "axp803.dtsi" -+ -+&ac_power_supply { -+ status = "okay"; -+}; -+ -+&battery_power_supply { -+ status = "okay"; -+}; -+ -+®_dc1sw { -+ regulator-always-on; -+ regulator-name = "vcc-phy"; -+ regulator-enable-ramp-delay = <100000>; -+}; -+ -+®_dcdc1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-3v3"; -+}; -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1040000>; -+ regulator-max-microvolt = <1300000>; -+ regulator-name = "vdd-cpux"; -+}; -+ -+®_dcdc5 { -+ regulator-always-on; -+ regulator-min-microvolt = <1360000>; -+ regulator-max-microvolt = <1360000>; -+ regulator-name = "vcc-dram"; -+}; -+ -+®_dcdc6 { -+ regulator-always-on; -+ regulator-min-microvolt = <1100000>; -+ regulator-max-microvolt = <1100000>; -+ regulator-name = "vdd-sys"; -+}; -+ -+®_aldo3 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcc-pll-avcc"; -+}; -+ -+®_dldo1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-hdmi"; -+}; -+ -+/* Set over current to lowest value: 35 A = 700 mV, 50 A = 1000 mV */ -+®_dldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1000000>; -+ regulator-name = "current-control"; -+}; -+ -+®_eldo1 { -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "emmc-io"; -+}; -+ -+®_fldo1 { -+ regulator-name = "vdd-hsic"; -+ status = "disabled"; -+}; -+ -+®_fldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1100000>; -+ regulator-max-microvolt = <1100000>; -+ regulator-name = "vdd-cpus"; -+}; -+ -+®_ldo_io0 { -+ function = "ldo"; -+}; -+ -+®_ldo_io1 { -+ function = "ldo"; -+}; -+ -+®_ldo_io0 { -+ regulator-always-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-ref"; -+ status = "okay"; -+}; -+ -+®_ldo_io1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-iref"; -+ status = "okay"; -+}; -+ -+®_rtc_ldo { -+ regulator-name = "vcc-rtc"; -+}; -+ -+&simplefb_hdmi { -+ vcc-hdmi-supply = <®_hdmi_vbus>; -+}; -+ -+/* Debug port */ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pb_pins>; -+ status = "okay"; -+}; -+ -+/* AR100 null-modem */ -+&uart1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart1_pins>; -+ status = "okay"; -+}; -+ -+&usb_otg { -+ dr_mode = "peripheral"; -+ vcc-supply = <®_dcdc1>; -+ status = "okay"; -+}; -+ -+&usb_power_supply { -+ status = "okay"; -+}; -+ -+&usbphy { -+ status = "okay"; -+}; -+ -+&cpu0 { -+ /delete-property/ cpu-idle-states; -+}; -+ -+&cpu1 { -+ /delete-property/ cpu-idle-states; -+}; -+ -+&cpu2 { -+ /delete-property/ cpu-idle-states; -+}; -+ -+&cpu3 { -+ /delete-property/ cpu-idle-states; -+}; -+ -+/ { -+ cpus { -+ /delete-node/ idle-states; -+ }; -+ /delete-node/ scpi; -+}; -+ -+&mbus { -+ status = "disabled"; -+}; --- -Created with Armbian build tools https://github.com/armbian/build - diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-a64-olinuxino-add-boards.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-a64-olinuxino-add-boards.patch index fb2b0cc953dc..c0549d8252cf 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-a64-olinuxino-add-boards.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-a64-olinuxino-add-boards.patch @@ -1,16 +1,21 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From c983159a71a33f173d369fdeea0cfe08afd831d1 Mon Sep 17 00:00:00 2001 From: Mitko Gamishev Date: Wed, 5 Feb 2020 15:03:08 +0200 Subject: arm64:dts:sun50i-a64-olinuxino add boards --- - arch/arm64/boot/dts/allwinner/Makefile | 5 + - arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1G.dts | 362 ++++++++++ - arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts | 20 + - arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge4GW.dts | 97 +++ - arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Gs16M.dts | 31 + - arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-2Ge8G.dts | 25 + + arch/arm64/boot/dts/allwinner/Makefile | 5 + + .../dts/allwinner/sun50i-a64-olinuxino-1G.dts | 362 ++++++++++++++++++ + .../sun50i-a64-olinuxino-1Ge16GW.dts | 20 + + .../allwinner/sun50i-a64-olinuxino-1Ge4GW.dts | 97 +++++ + .../allwinner/sun50i-a64-olinuxino-1Gs16M.dts | 31 ++ + .../allwinner/sun50i-a64-olinuxino-2Ge8G.dts | 25 ++ 6 files changed, 540 insertions(+) + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1G.dts + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge16GW.dts + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Ge4GW.dts + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-1Gs16M.dts + create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino-2Ge8G.dts diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile index 54424ab784a5..4d4d2e5c01f2 100644 @@ -594,5 +599,5 @@ index 000000000000..3583c37d3930 + status = "okay"; +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h5-nanopi-r1s-h5-add-rtl8153-suppor.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h5-nanopi-r1s-h5-add-rtl8153-support.patch similarity index 86% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h5-nanopi-r1s-h5-add-rtl8153-suppor.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h5-nanopi-r1s-h5-add-rtl8153-support.patch index e105a45c69ef..3b67bb0c2998 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h5-nanopi-r1s-h5-add-rtl8153-suppor.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h5-nanopi-r1s-h5-add-rtl8153-support.patch @@ -1,10 +1,10 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 82bc11e604e91080964a0a83a2590268e6d3dae1 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Tue, 27 Sep 2022 15:28:08 +0300 Subject: arm64: dts: sun50i-h5-nanopi-r1s-h5: add rtl8153 support --- - arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts | 10 +++++++++- + .../boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts @@ -36,5 +36,5 @@ index a3e040da38a0..78c568cabcb2 100644 &ehci2 { -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h5-orangepi-pc2-add-spi-flash.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h5-orangepi-pc2-add-spi-flash.patch index f64be097be6c..00a857637712 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h5-orangepi-pc2-add-spi-flash.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h5-orangepi-pc2-add-spi-flash.patch @@ -1,17 +1,17 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 70183d84d9cccae5f50461ebde1a9776639319b1 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Mon, 24 Jan 2022 19:27:52 +0300 Subject: arm64:dts: sun50i-h5-orangepi-pc2 add spi flash --- - arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts | 25 +++++++--- + .../dts/allwinner/sun50i-h5-orangepi-pc2.dts | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts -index df4d1ceea75e..880f9de8d22f 100644 +index 460c0e3d2f97..c756b1a58c90 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts -@@ -178,15 +178,28 @@ &sound_hdmi { +@@ -198,15 +198,28 @@ &sound_hdmi { status = "okay"; }; @@ -47,5 +47,5 @@ index df4d1ceea75e..880f9de8d22f 100644 }; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h6-Add-r_uart-uart2-3-pins.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h6-Add-r_uart-uart2-3-pins.patch index 40f838277615..14c32cc58bf0 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h6-Add-r_uart-uart2-3-pins.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h6-Add-r_uart-uart2-3-pins.patch @@ -1,14 +1,14 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From a22f300af387d8afbf53e6005e7208d96cc4a252 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Sun, 23 Jan 2022 20:49:27 +0300 Subject: arm64:dts: sun50i-h6 Add r_uart uart2-3 pins --- - arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 60 ++++++++-- + arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 60 ++++++++++++++++---- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -index 48ae4a362502..a039a90302c5 100644 +index 60dbaa5df358..395e64bb1068 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi @@ -310,6 +310,17 @@ msgbox: mailbox@3003000 { @@ -45,7 +45,7 @@ index 48ae4a362502..a039a90302c5 100644 mmc2_pins: mmc2-pins { pins = "PC1", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", -@@ -467,17 +480,26 @@ uart1_rts_cts_pins: uart1-rts-cts-pins { +@@ -468,17 +481,26 @@ uart1_rts_cts_pins: uart1-rts-cts-pins { pins = "PG8", "PG9"; function = "uart1"; }; @@ -82,7 +82,7 @@ index 48ae4a362502..a039a90302c5 100644 }; iommu: iommu@30f0000 { -@@ -964,6 +986,19 @@ tcon_tv_out_tcon_top: endpoint@1 { +@@ -963,6 +985,19 @@ tcon_tv_out_tcon_top: endpoint@1 { }; }; @@ -102,7 +102,7 @@ index 48ae4a362502..a039a90302c5 100644 rtc: rtc@7000000 { compatible = "allwinner,sun50i-h6-rtc"; reg = <0x07000000 0x400>; -@@ -1029,6 +1064,11 @@ r_rsb_pins: r-rsb-pins { +@@ -1028,6 +1063,11 @@ r_rsb_pins: r-rsb-pins { pins = "PL0", "PL1"; function = "s_rsb"; }; @@ -115,5 +115,5 @@ index 48ae4a362502..a039a90302c5 100644 r_ir: ir@7040000 { -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h6.dtsi-add-pinctrl-pins-for-spi.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h6.dtsi-add-pinctrl-pins-for-spi.patch index 9bbe3fe7dfee..6dab425692fb 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h6.dtsi-add-pinctrl-pins-for-spi.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h6.dtsi-add-pinctrl-pins-for-spi.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 676a89956d6fc9d2432d724a26f3b987536f26fa Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Fri, 28 Jan 2022 15:19:32 +0300 Subject: arm64:dts: sun50i-h6.dtsi add pinctrl pins for spi @@ -8,10 +8,10 @@ Subject: arm64:dts: sun50i-h6.dtsi add pinctrl pins for spi 1 file changed, 4 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -index cd48ffdad7ee..60fef6a46d34 100644 +index a66073a0c289..70650e47bdb5 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -@@ -658,6 +658,8 @@ spi0: spi@5010000 { +@@ -659,6 +659,8 @@ spi0: spi@5010000 { clock-names = "ahb", "mod"; dmas = <&dma 22>, <&dma 22>; dma-names = "rx", "tx"; @@ -20,7 +20,7 @@ index cd48ffdad7ee..60fef6a46d34 100644 resets = <&ccu RST_BUS_SPI0>; status = "disabled"; #address-cells = <1>; -@@ -673,6 +675,8 @@ spi1: spi@5011000 { +@@ -674,6 +676,8 @@ spi1: spi@5011000 { clock-names = "ahb", "mod"; dmas = <&dma 23>, <&dma 23>; dma-names = "rx", "tx"; @@ -30,5 +30,5 @@ index cd48ffdad7ee..60fef6a46d34 100644 status = "disabled"; #address-cells = <1>; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h6.dtsi-improve-thermals.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h6.dtsi-improve-thermals.patch index be37155afb60..34b786d8635e 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h6.dtsi-improve-thermals.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h6.dtsi-improve-thermals.patch @@ -1,14 +1,14 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 3dc20de67a40b2aeede927924f28d3ea1abe910c Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Tue, 25 Jan 2022 17:02:30 +0300 Subject: arm64:dts: sun50i-h6.dtsi improve thermals --- - arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 68 ++++++++-- + arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 68 ++++++++++++++++---- 1 file changed, 55 insertions(+), 13 deletions(-) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -index a039a90302c5..cd48ffdad7ee 100644 +index 395e64bb1068..a66073a0c289 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi @@ -1,5 +1,6 @@ @@ -18,7 +18,7 @@ index a039a90302c5..cd48ffdad7ee 100644 #include #include -@@ -1128,33 +1129,74 @@ ths: thermal-sensor@5070400 { +@@ -1127,33 +1128,74 @@ ths: thermal-sensor@5070400 { thermal-zones { cpu-thermal { @@ -107,5 +107,5 @@ index a039a90302c5..cd48ffdad7ee 100644 gpu-thermal { -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h616-orangepi-zero2-Enable-GPU-mali.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h616-orangepi-zero2-Enable-GPU-mali.patch index edd02718a1f9..e20f0a3c56e2 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h616-orangepi-zero2-Enable-GPU-mali.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h616-orangepi-zero2-Enable-GPU-mali.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 5f4c8eb028518f90f37f13630dedac2c8d9f7b9a Mon Sep 17 00:00:00 2001 From: Jernej Skrabec Date: Fri, 15 Oct 2021 21:09:42 +0200 Subject: arm64:dts: sun50i-h616-orangepi-zero2 Enable GPU mali @@ -9,10 +9,10 @@ Signed-off-by: Jernej Skrabec 1 file changed, 5 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts -index d83852e72f06..8d8009c7f9a3 100644 +index b5d713926a34..649274d77827 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts -@@ -16,6 +16,11 @@ &emac0 { +@@ -19,6 +19,11 @@ &emac0 { phy-supply = <®_dcdce>; }; @@ -25,5 +25,5 @@ index d83852e72f06..8d8009c7f9a3 100644 vmmc-supply = <®_dcdce>; }; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero3-Enable-GPU-mali.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero3-Enable-GPU-mali.patch index c7992b0ca71e..f6848d996bcd 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero3-Enable-GPU-mali.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero3-Enable-GPU-mali.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 293226da1c08fad4617ad5292f9724cf5868b2ef Mon Sep 17 00:00:00 2001 From: Gunjan Gupta Date: Thu, 28 Dec 2023 15:01:03 +0000 Subject: arm64:dts: sun50i-h618-orangepi-zero3 Enable GPU mali @@ -8,10 +8,10 @@ Subject: arm64:dts: sun50i-h618-orangepi-zero3 Enable GPU mali 1 file changed, 5 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts -index edbfc83f390a..d8cb4deafde7 100644 +index eba89a87785b..cb038a23fbc2 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts -@@ -25,6 +25,11 @@ &ext_rgmii_phy { +@@ -28,6 +28,11 @@ &ext_rgmii_phy { motorcomm,clk-out-frequency-hz = <125000000>; }; @@ -24,5 +24,5 @@ index edbfc83f390a..d8cb4deafde7 100644 /* * The schematic shows the card detect pin wired up to PF6, via an -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-overlay-sun50i-h616-bigtreetech-cb1.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/cb1-overlay.patch similarity index 88% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-overlay-sun50i-h616-bigtreetech-cb1.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/cb1-overlay.patch index 5bd49f1309ea..bca094646565 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-overlay-sun50i-h616-bigtreetech-cb1.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/cb1-overlay.patch @@ -1,22 +1,33 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From c8966edf0256fbb7635f338441f51ef3471bcd59 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 30 May 2023 12:04:55 +0800 Subject: cb1-overlay --- - arch/arm64/boot/dts/allwinner/overlay/Makefile | 15 +- - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-fixup.scr-cmd | 110 ++++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ir.dtso | 13 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-light.dtso | 27 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-mcp2515.dtso | 18 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spi-spidev.dtso | 42 ++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev0_0.dtso | 28 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_0.dtso | 28 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_1.dtso | 28 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_2.dtso | 28 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-tft35_spi.dtso | 33 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ws2812.dtso | 13 ++ + .../arm64/boot/dts/allwinner/overlay/Makefile | 15 ++- + .../overlay/sun50i-h616-fixup.scr-cmd | 110 ++++++++++++++++++ + .../dts/allwinner/overlay/sun50i-h616-ir.dtso | 13 +++ + .../allwinner/overlay/sun50i-h616-light.dtso | 27 +++++ + .../overlay/sun50i-h616-mcp2515.dtso | 18 +++ + .../overlay/sun50i-h616-spi-spidev.dtso | 42 +++++++ + .../overlay/sun50i-h616-spidev0_0.dtso | 28 +++++ + .../overlay/sun50i-h616-spidev1_0.dtso | 28 +++++ + .../overlay/sun50i-h616-spidev1_1.dtso | 28 +++++ + .../overlay/sun50i-h616-spidev1_2.dtso | 28 +++++ + .../overlay/sun50i-h616-tft35_spi.dtso | 33 ++++++ + .../allwinner/overlay/sun50i-h616-ws2812.dtso | 13 +++ 12 files changed, 381 insertions(+), 2 deletions(-) + create mode 100755 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-fixup.scr-cmd + create mode 100755 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ir.dtso + create mode 100755 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-light.dtso + create mode 100755 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-mcp2515.dtso + create mode 100755 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spi-spidev.dtso + create mode 100755 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev0_0.dtso + create mode 100755 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_0.dtso + create mode 100755 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_1.dtso + create mode 100755 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_2.dtso + create mode 100755 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-tft35_spi.dtso + create mode 100755 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ws2812.dtso diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile index 40d67ebb5932..fb6b30d5753e 100644 @@ -483,5 +494,5 @@ index 000000000000..4e43907cb0ce + }; +}; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-net-gmac-sun50i-h616-gmac.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/driver-allwinner-h618-emac.patch similarity index 99% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/drv-net-gmac-sun50i-h616-gmac.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/driver-allwinner-h618-emac.patch index 83e04fe125b7..89d9e16df695 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-net-gmac-sun50i-h616-gmac.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/driver-allwinner-h618-emac.patch @@ -1,7 +1,7 @@ -From cc5c06ad122ceb42eb1587347503fb0fff9f275f Mon Sep 17 00:00:00 2001 +From 9eb9f2e36907405e3644fb1434652a7a13116ad8 Mon Sep 17 00:00:00 2001 From: chraac Date: Wed, 1 May 2024 14:32:00 +0800 -Subject: [PATCH] driver: allwinner h618 emac +Subject: driver: allwinner h618 emac commit: 97b476246bc79756423cf6c1d4907606c9633d4b @@ -4515,4 +4515,5 @@ index d0f66a5e1b2a..71349cac1a67 100644 #include -- -GitLab +2.35.3 + diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drivers-hack-for-h616-hdmi-video-output.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/drivers-hack-for-h616-hdmi-video-output.patch index acba05451902..1cb01222aff2 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drivers-hack-for-h616-hdmi-video-output.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/drivers-hack-for-h616-hdmi-video-output.patch @@ -1,7 +1,7 @@ -From 897ce7f9ba84e76d169511b34acace2d8c5707d7 Mon Sep 17 00:00:00 2001 +From 35fe095a767a286b6f33757e8606d1d79cd8d2cc Mon Sep 17 00:00:00 2001 From: orangepi-xunlong <258384131@qq.com> Date: Mon, 5 Jun 2023 14:16:04 +0800 -Subject: [PATCH] drivers: hack for h616 hdmi video output +Subject: drivers: hack for h616 hdmi video output --- drivers/clk/sunxi-ng/Kconfig | 4 + @@ -485,7 +485,7 @@ index 4fa69c463dc4..5915326b2699 100644 }; diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c -index 8316ef1547b6..85147617124c 100644 +index 790c7e0d6761..b0c9519c016b 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -286,6 +286,9 @@ static void sun8i_mixer_commit(struct sunxi_engine *engine, @@ -531,7 +531,7 @@ index 8316ef1547b6..85147617124c 100644 } static struct drm_plane **sun8i_layers_init(struct drm_device *drm, -@@ -418,25 +425,31 @@ static void sun8i_mixer_mode_set(struct sunxi_engine *engine, +@@ -413,25 +420,31 @@ static void sun8i_mixer_mode_set(struct sunxi_engine *engine, const struct drm_display_mode *mode) { struct sun8i_mixer *mixer = engine_to_sun8i_mixer(engine); @@ -566,7 +566,7 @@ index 8316ef1547b6..85147617124c 100644 SUN8I_MIXER_BLEND_OUTCTL_INTERLACED, val); DRM_DEBUG_DRIVER("Switching display mixer interlaced mode %s\n", -@@ -475,6 +488,20 @@ static const struct regmap_config sun8i_mixer_regmap_config = { +@@ -470,6 +483,20 @@ static const struct regmap_config sun8i_mixer_regmap_config = { .max_register = 0xffffc, /* guessed */ }; @@ -587,7 +587,7 @@ index 8316ef1547b6..85147617124c 100644 static int sun8i_mixer_of_get_id(struct device_node *node) { struct device_node *ep, *remote; -@@ -495,6 +522,84 @@ static int sun8i_mixer_of_get_id(struct device_node *node) +@@ -490,6 +517,84 @@ static int sun8i_mixer_of_get_id(struct device_node *node) return of_ep.id; } @@ -672,7 +672,7 @@ index 8316ef1547b6..85147617124c 100644 static int sun8i_mixer_bind(struct device *dev, struct device *master, void *data) { -@@ -571,6 +676,30 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, +@@ -566,6 +671,30 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, return PTR_ERR(mixer->engine.regs); } @@ -703,7 +703,7 @@ index 8316ef1547b6..85147617124c 100644 mixer->reset = devm_reset_control_get(dev, NULL); if (IS_ERR(mixer->reset)) { dev_err(dev, "Couldn't get our reset line\n"); -@@ -613,11 +742,11 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, +@@ -608,11 +737,11 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, list_add_tail(&mixer->engine.list, &drv->engine_list); @@ -719,7 +719,7 @@ index 8316ef1547b6..85147617124c 100644 for (i = 0; i < DE3_MIXER_UNIT_SIZE; i += 4) regmap_write(mixer->engine.regs, i, 0); -@@ -631,7 +760,10 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, +@@ -626,7 +755,10 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, regmap_write(mixer->engine.regs, SUN50I_MIXER_FMT_EN, 0); regmap_write(mixer->engine.regs, SUN50I_MIXER_CDC0_EN, 0); regmap_write(mixer->engine.regs, SUN50I_MIXER_CDC1_EN, 0); @@ -730,7 +730,7 @@ index 8316ef1547b6..85147617124c 100644 for (i = 0; i < DE2_MIXER_UNIT_SIZE; i += 4) regmap_write(mixer->engine.regs, i, 0); -@@ -642,35 +774,8 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, +@@ -637,35 +769,8 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, regmap_write(mixer->engine.regs, SUN8I_MIXER_ASE_EN, 0); regmap_write(mixer->engine.regs, SUN8I_MIXER_FCC_EN, 0); regmap_write(mixer->engine.regs, SUN8I_MIXER_DCSC_EN, 0); @@ -768,7 +768,7 @@ index 8316ef1547b6..85147617124c 100644 } return 0; -@@ -825,6 +930,17 @@ static const struct sun8i_mixer_cfg sun50i_h6_mixer0_cfg = { +@@ -820,6 +925,17 @@ static const struct sun8i_mixer_cfg sun50i_h6_mixer0_cfg = { .vi_num = 1, }; @@ -786,7 +786,7 @@ index 8316ef1547b6..85147617124c 100644 static const struct of_device_id sun8i_mixer_of_table[] = { { .compatible = "allwinner,sun8i-a83t-de2-mixer-0", -@@ -874,6 +990,10 @@ static const struct of_device_id sun8i_mixer_of_table[] = { +@@ -869,6 +985,10 @@ static const struct of_device_id sun8i_mixer_of_table[] = { .compatible = "allwinner,sun50i-h6-de3-mixer-0", .data = &sun50i_h6_mixer0_cfg, }, @@ -863,7 +863,7 @@ index 7bc8efca6980..e28e65572a9f 100644 else return DE2_CH_BASE + channel * DE2_CH_SIZE; diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c -index 0349e8bdffd6..bab560f2edf9 100644 +index b90e5edef4e8..92ab1ac97d25 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -23,6 +23,7 @@ @@ -974,5 +974,5 @@ index 7ba75011adf9..3f7afa8d37c5 100644 DE3_VI_SCALER_UNIT_SIZE * channel; else -- -2.34.1 +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-pwm-sun50i-h616-enhance-pwm.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/drivers-pwm-Add-pwm-sunxi-enhance-driver-for-h616.patch similarity index 99% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/drv-pwm-sun50i-h616-enhance-pwm.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/drivers-pwm-Add-pwm-sunxi-enhance-driver-for-h616.patch index 8972e8bdafbd..f892f9a16be8 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-pwm-sun50i-h616-enhance-pwm.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/drivers-pwm-Add-pwm-sunxi-enhance-driver-for-h616.patch @@ -1,7 +1,7 @@ -From ab016e92e2ae5d20d82e9aa3e68c6191249f6425 Mon Sep 17 00:00:00 2001 +From d33be8d15727f4b9f9741744c11df3b22a6e9273 Mon Sep 17 00:00:00 2001 From: chraac Date: Wed, 1 May 2024 14:24:51 +0800 -Subject: [PATCH] drivers: pwm: Add pwm-sunxi-enhance driver for h616 +Subject: drivers: pwm: Add pwm-sunxi-enhance driver for h616 linux-orangepi commit: c68ef342eba3673c7f1f5aa1ab819b06da1f60c6 @@ -1313,4 +1313,5 @@ index 000000000000..e25e10bf5a3d +#endif + -- -GitLab +2.35.3 + diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-clk-sunxi-ng-ccu-sun50i-a64-revert-ccu-Pinebook-A64.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-clk-sunxi-ng-ccu-sun50i-a64-revert-ccu-Pinebook-A64.patch deleted file mode 100644 index f0ec8761a4f0..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-clk-sunxi-ng-ccu-sun50i-a64-revert-ccu-Pinebook-A64.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 5a11d6ca74867d866a14bd6f6e987f47df1d2630 Mon Sep 17 00:00:00 2001 -From: The-going <48602507+The-going@users.noreply.github.com> -Date: Fri, 28 Jan 2022 14:10:52 +0300 -Subject: [PATCH 030/153] drv:clk:sunxi-ng:ccu-sun50i-a64: revert ccu - Pinebook-A64 - ---- - drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) - -diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c -index 9833ab1a1..9e5de9521 100644 ---- a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c -+++ b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c -@@ -560,8 +560,8 @@ static SUNXI_CCU_M_WITH_MUX_GATE(de_clk, "de", de_parents, - * is required to restore the rate of TCON0 when the rate of PLL-Video0 - * changed. - */ --static const char * const tcon0_parents[] = { "pll-mipi", /* "pll-video0-2x" */ }; --static const u8 tcon0_table[] = { 0, /* 2, */ }; -+static const char * const tcon0_parents[] = { "pll-mipi", "pll-video0-2x" }; -+static const u8 tcon0_table[] = { 0, 2, }; - static SUNXI_CCU_MUX_TABLE_WITH_GATE(tcon0_clk, "tcon0", tcon0_parents, - tcon0_table, 0x118, 24, 3, BIT(31), - CLK_SET_RATE_PARENT); -@@ -968,9 +968,9 @@ static struct ccu_mux_nb sun50i_a64_cpu_nb = { - .bypass_index = 1, /* index of 24 MHz oscillator */ - }; - --static struct ccu_rate_reset_nb sun50i_a64_pll_video0_reset_tcon0_nb = { -+/*static struct ccu_rate_reset_nb sun50i_a64_pll_video0_reset_tcon0_nb = { - .common = &pll_video0_clk.common, --}; -+};*/ - - #define CCU_MIPI_DSI_CLK 0x168 - -@@ -1004,9 +1004,9 @@ static int sun50i_a64_ccu_probe(struct platform_device *pdev) - } - - /* Force the parent of TCON0 to PLL-MIPI */ -- val = readl(reg + SUN50I_A64_TCON0_REG); -- val &= ~GENMASK(26, 24); -- writel(val | (0 << 24), reg + SUN50I_A64_TCON0_REG); -+// val = readl(reg + SUN50I_A64_TCON0_REG); -+// val &= ~GENMASK(26, 24); -+// writel(val | (0 << 24), reg + SUN50I_A64_TCON0_REG); - - ret = devm_sunxi_ccu_probe(&pdev->dev, reg, &sun50i_a64_ccu_desc); - if (ret) -@@ -1020,8 +1020,8 @@ static int sun50i_a64_ccu_probe(struct platform_device *pdev) - &sun50i_a64_cpu_nb); - - /* Reset the rate of TCON0 clock when PLL-VIDEO0 is changed */ -- sun50i_a64_pll_video0_reset_tcon0_nb.target_clk = tcon0_clk.common.hw.clk; -- ccu_rate_reset_notifier_register(&sun50i_a64_pll_video0_reset_tcon0_nb); -+// sun50i_a64_pll_video0_reset_tcon0_nb.target_clk = tcon0_clk.common.hw.clk; -+// ccu_rate_reset_notifier_register(&sun50i_a64_pll_video0_reset_tcon0_nb); - - return 0; - } --- -2.35.3 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-panel-simple-Add-compability-olinuxino-lcd.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-panel-simple-Add-compability-olinuxino-lcd.patch index abb439ae1f7b..b1d6a29151b7 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-panel-simple-Add-compability-olinuxino-lcd.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-panel-simple-Add-compability-olinuxino-lcd.patch @@ -1,17 +1,17 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 3f4dde3f169acdc6f2421a121541836c5ae62f63 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Wed, 2 Feb 2022 19:34:55 +0300 Subject: drv:gpu:drm: panel-simple Add compability olinuxino lcd --- - drivers/gpu/drm/panel/panel-simple.c | 126 +++++++++- + drivers/gpu/drm/panel/panel-simple.c | 126 ++++++++++++++++++++++++++- 1 file changed, 122 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c -index dd7928d9570f..bc6b065ba889 100644 +index e8d12ec8dbec..cad1bcd383b7 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c -@@ -3099,6 +3099,44 @@ static const struct panel_desc okaya_rs800480t_7x0gp = { +@@ -3103,6 +3103,44 @@ static const struct panel_desc okaya_rs800480t_7x0gp = { .bus_format = MEDIA_BUS_FMT_RGB666_1X18, }; @@ -56,7 +56,7 @@ index dd7928d9570f..bc6b065ba889 100644 static const struct drm_display_mode olimex_lcd_olinuxino_43ts_mode = { .clock = 9000, .hdisplay = 480, -@@ -3111,8 +3149,8 @@ static const struct drm_display_mode olimex_lcd_olinuxino_43ts_mode = { +@@ -3115,8 +3153,8 @@ static const struct drm_display_mode olimex_lcd_olinuxino_43ts_mode = { .vtotal = 272 + 8 + 5 + 3, }; @@ -67,7 +67,7 @@ index dd7928d9570f..bc6b065ba889 100644 .num_modes = 1, .size = { .width = 95, -@@ -3121,6 +3159,71 @@ static const struct panel_desc olimex_lcd_olinuxino_43ts = { +@@ -3125,6 +3163,71 @@ static const struct panel_desc olimex_lcd_olinuxino_43ts = { .bus_format = MEDIA_BUS_FMT_RGB888_1X24, }; @@ -139,7 +139,7 @@ index dd7928d9570f..bc6b065ba889 100644 /* * 800x480 CVT. The panel appears to be quite accepting, at least as far as * pixel clocks, but this is the timing that was being used in the Adafruit -@@ -4387,8 +4490,23 @@ static const struct of_device_id platform_of_match[] = { +@@ -4393,8 +4496,23 @@ static const struct of_device_id platform_of_match[] = { .compatible = "okaya,rs800480t-7x0gp", .data = &okaya_rs800480t_7x0gp, }, { @@ -166,5 +166,5 @@ index dd7928d9570f..bc6b065ba889 100644 .compatible = "ontat,yx700wv03", .data = &ontat_yx700wv03, -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-sun4i-Add-GEM-allocator.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-sun4i-Add-GEM-allocator.patch index 05c37674661b..c9fe1df8a124 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-sun4i-Add-GEM-allocator.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-sun4i-Add-GEM-allocator.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From d67590fdea164deffb54df238928e2eb1e3e390a Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 7 Dec 2015 09:47:34 +0100 Subject: drv:gpu:drm:sun4i: Add GEM allocator @@ -6,9 +6,10 @@ Subject: drv:gpu:drm:sun4i: Add GEM allocator Signed-off-by: Maxime Ripard Signed-off-by: The-going <48602507+The-going@users.noreply.github.com> --- - drivers/gpu/drm/sun4i/sun4i_drv.c | 27 +++++++++ - include/uapi/drm/sun4i_drm.h | 29 ++++++++++ + drivers/gpu/drm/sun4i/sun4i_drv.c | 27 +++++++++++++++++++++++++++ + include/uapi/drm/sun4i_drm.h | 29 +++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) + create mode 100644 include/uapi/drm/sun4i_drm.h diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c index 6a8dfc022d3c..4f7d8818d3f6 100644 @@ -98,5 +99,5 @@ index 000000000000..67b9dd4ee594 + +#endif -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-sun4i-Add-HDMI-audio-sun4i-hdmi-encoder.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-sun4i-Add-HDMI-audio-sun4i-hdmi-encoder.patch index 49f37ac5378d..4f34e22c39cb 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-sun4i-Add-HDMI-audio-sun4i-hdmi-encoder.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-sun4i-Add-HDMI-audio-sun4i-hdmi-encoder.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 23eafa9ce094c20abcd97137378a581dd76517ce Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Mon, 24 Jan 2022 13:07:16 +0300 Subject: drv:gpu:drm:sun4i: Add HDMI audio sun4i-hdmi encoder @@ -14,10 +14,11 @@ Signed-off-by: Stefan Mavrodiev --- drivers/gpu/drm/sun4i/Kconfig | 11 + drivers/gpu/drm/sun4i/Makefile | 3 + - drivers/gpu/drm/sun4i/sun4i_hdmi.h | 36 + - drivers/gpu/drm/sun4i/sun4i_hdmi_audio.c | 450 ++++++++++ + drivers/gpu/drm/sun4i/sun4i_hdmi.h | 36 ++ + drivers/gpu/drm/sun4i/sun4i_hdmi_audio.c | 450 +++++++++++++++++++++++ drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 16 + 5 files changed, 516 insertions(+) + create mode 100644 drivers/gpu/drm/sun4i/sun4i_hdmi_audio.c diff --git a/drivers/gpu/drm/sun4i/Kconfig b/drivers/gpu/drm/sun4i/Kconfig index 4741d9f6544c..733381869998 100644 @@ -580,7 +581,7 @@ index 000000000000..a66b6c51947a + dev_set_drvdata(hdmi->dev, data); +} diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c -index 152375f3de2e..6ba30c515385 100644 +index bae69d696765..45a13164b99d 100644 --- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c +++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c @@ -25,6 +25,8 @@ @@ -592,7 +593,7 @@ index 152375f3de2e..6ba30c515385 100644 #include "sun4i_backend.h" #include "sun4i_crtc.h" #include "sun4i_drv.h" -@@ -89,6 +91,11 @@ static void sun4i_hdmi_disable(struct drm_encoder *encoder) +@@ -90,6 +92,11 @@ static void sun4i_hdmi_disable(struct drm_encoder *encoder, DRM_DEBUG_DRIVER("Disabling the HDMI Output\n"); @@ -604,7 +605,7 @@ index 152375f3de2e..6ba30c515385 100644 val = readl(hdmi->base + SUN4I_HDMI_VID_CTRL_REG); val &= ~SUN4I_HDMI_VID_CTRL_ENABLE; writel(val, hdmi->base + SUN4I_HDMI_VID_CTRL_REG); -@@ -117,6 +124,11 @@ static void sun4i_hdmi_enable(struct drm_encoder *encoder) +@@ -172,6 +179,11 @@ static void sun4i_hdmi_enable(struct drm_encoder *encoder, val |= SUN4I_HDMI_VID_CTRL_HDMI_MODE; writel(val, hdmi->base + SUN4I_HDMI_VID_CTRL_REG); @@ -615,8 +616,8 @@ index 152375f3de2e..6ba30c515385 100644 +#endif } - static void sun4i_hdmi_mode_set(struct drm_encoder *encoder, -@@ -217,6 +229,10 @@ static int sun4i_hdmi_get_modes(struct drm_connector *connector) + static enum drm_mode_status sun4i_hdmi_mode_valid(struct drm_encoder *encoder, +@@ -210,6 +222,10 @@ static int sun4i_hdmi_get_modes(struct drm_connector *connector) if (!edid) return 0; @@ -628,5 +629,5 @@ index 152375f3de2e..6ba30c515385 100644 connector->display_info.is_hdmi ? "an HDMI" : "a DVI"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-sun4i-sun8i_mixer.c-add-h3-mixer1.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-sun4i-sun8i_mixer.c-add-h3-mixer1.patch index 4fbce52df41d..031fe9edc239 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-sun4i-sun8i_mixer.c-add-h3-mixer1.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-gpu-drm-sun4i-sun8i_mixer.c-add-h3-mixer1.patch @@ -1,17 +1,17 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 6822c8561d1091c8c26b011a68fdc075f2f2447a Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Tue, 1 Feb 2022 19:37:03 +0300 Subject: drv:gpu:drm:sun4i:sun8i_mixer.c add h3 mixer1 --- - drivers/gpu/drm/sun4i/sun8i_mixer.c | 12 ++++++++++ + drivers/gpu/drm/sun4i/sun8i_mixer.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c -index c7f2e08f429d..fe1d92f18f18 100644 +index 68865bea236a..a0b9d9e25e63 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c -@@ -718,6 +718,14 @@ static const struct sun8i_mixer_cfg sun8i_h3_mixer0_cfg = { +@@ -713,6 +713,14 @@ static const struct sun8i_mixer_cfg sun8i_h3_mixer0_cfg = { .vi_num = 1, }; @@ -26,7 +26,7 @@ index c7f2e08f429d..fe1d92f18f18 100644 static const struct sun8i_mixer_cfg sun8i_r40_mixer0_cfg = { .ccsc = CCSC_MIXER0_LAYOUT, .mod_rate = 297000000, -@@ -804,6 +812,10 @@ static const struct of_device_id sun8i_mixer_of_table[] = { +@@ -799,6 +807,10 @@ static const struct of_device_id sun8i_mixer_of_table[] = { .compatible = "allwinner,sun8i-h3-de2-mixer-0", .data = &sun8i_h3_mixer0_cfg, }, @@ -38,5 +38,5 @@ index c7f2e08f429d..fe1d92f18f18 100644 .compatible = "allwinner,sun8i-r40-de2-mixer-0", .data = &sun8i_r40_mixer0_cfg, -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-10-bit-HEVC-support.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-10-bit-HEVC-support.patch deleted file mode 100644 index c6163cfe04f2..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-10-bit-HEVC-support.patch +++ /dev/null @@ -1,170 +0,0 @@ -From ab73d1a2cb44c65cc5547dcef7a286c108c05ec1 Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Sun, 15 Mar 2020 21:35:39 +0100 -Subject: [PATCH 039/170] drv:media:cedrus: 10-bit HEVC support - -WIp: 10-bit HEVC support - -Signed-off-by: Jernej Skrabec ---- - drivers/staging/media/sunxi/cedrus/cedrus.c | 4 +-- - .../staging/media/sunxi/cedrus/cedrus_h265.c | 12 ++++++++ - .../staging/media/sunxi/cedrus/cedrus_regs.h | 4 +++ - .../staging/media/sunxi/cedrus/cedrus_video.c | 30 +++++++++++++++---- - .../staging/media/sunxi/cedrus/cedrus_video.h | 2 +- - 5 files changed, 44 insertions(+), 8 deletions(-) - -diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c b/drivers/staging/media/sunxi/cedrus/cedrus.c -index 0c67e1ee3..98487d8fe 100644 ---- a/drivers/staging/media/sunxi/cedrus/cedrus.c -+++ b/drivers/staging/media/sunxi/cedrus/cedrus.c -@@ -336,7 +336,7 @@ static int cedrus_open(struct file *file) - goto err_ctrls; - } - ctx->dst_fmt.pixelformat = V4L2_PIX_FMT_NV12_32L32; -- cedrus_prepare_format(&ctx->dst_fmt); -+ cedrus_prepare_format(&ctx->dst_fmt, 0); - ctx->src_fmt.pixelformat = V4L2_PIX_FMT_MPEG2_SLICE; - /* - * TILED_NV12 has more strict requirements, so copy the width and -@@ -344,7 +344,7 @@ static int cedrus_open(struct file *file) - */ - ctx->src_fmt.width = ctx->dst_fmt.width; - ctx->src_fmt.height = ctx->dst_fmt.height; -- cedrus_prepare_format(&ctx->src_fmt); -+ cedrus_prepare_format(&ctx->src_fmt, 0); - - v4l2_fh_add(&ctx->fh); - -diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c -index 908bccde2..422046a6a 100644 ---- a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c -+++ b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c -@@ -562,6 +562,18 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx, - - cedrus_write(dev, VE_DEC_H265_DEC_PCM_CTRL, reg); - -+ if (sps->bit_depth_luma_minus8 == 2) { -+ unsigned int size; -+ -+ size = ALIGN(ctx->src_fmt.width, 16) * ALIGN(ctx->src_fmt.height, 16); -+ -+ reg = (size * 3) / 2; -+ cedrus_write(dev, VE_DEC_H265_OFFSET_ADDR_FIRST_OUT, reg); -+ -+ reg = DIV_ROUND_UP(ctx->src_fmt.width, 4); -+ cedrus_write(dev, VE_DEC_H265_10BIT_CONFIGURE, ALIGN(reg, 32)); -+ } -+ - /* PPS. */ - - reg = VE_DEC_H265_DEC_PPS_CTRL0_PPS_CR_QP_OFFSET(pps->pps_cr_qp_offset) | -diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_regs.h b/drivers/staging/media/sunxi/cedrus/cedrus_regs.h -index bdb062ad8..7ab3a2b0a 100644 ---- a/drivers/staging/media/sunxi/cedrus/cedrus_regs.h -+++ b/drivers/staging/media/sunxi/cedrus/cedrus_regs.h -@@ -498,6 +498,10 @@ - - #define VE_DEC_H265_LOW_ADDR (VE_ENGINE_DEC_H265 + 0x80) - -+#define VE_DEC_H265_OFFSET_ADDR_FIRST_OUT (VE_ENGINE_DEC_H265 + 0x84) -+#define VE_DEC_H265_OFFSET_ADDR_SECOND_OUT (VE_ENGINE_DEC_H265 + 0x88) -+#define VE_DEC_H265_10BIT_CONFIGURE (VE_ENGINE_DEC_H265 + 0x8c) -+ - #define VE_DEC_H265_LOW_ADDR_PRIMARY_CHROMA(a) \ - SHIFT_AND_MASK_BITS(a, 31, 24) - #define VE_DEC_H265_LOW_ADDR_SECONDARY_CHROMA(a) \ -diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_video.c b/drivers/staging/media/sunxi/cedrus/cedrus_video.c -index 9bb82c8e0..2a4fcc9c9 100644 ---- a/drivers/staging/media/sunxi/cedrus/cedrus_video.c -+++ b/drivers/staging/media/sunxi/cedrus/cedrus_video.c -@@ -100,7 +100,7 @@ static struct cedrus_format *cedrus_find_format(u32 pixelformat, u32 directions, - return &cedrus_formats[i]; - } - --void cedrus_prepare_format(struct v4l2_pix_format *pix_fmt) -+void cedrus_prepare_format(struct v4l2_pix_format *pix_fmt, int extended) - { - unsigned int width = pix_fmt->width; - unsigned int height = pix_fmt->height; -@@ -155,6 +155,17 @@ void cedrus_prepare_format(struct v4l2_pix_format *pix_fmt) - break; - } - -+ if (extended) { -+ unsigned int extra_size; -+ -+ extra_size = DIV_ROUND_UP(pix_fmt->width, 4); -+ extra_size = ALIGN(extra_size, 32); -+ extra_size *= ALIGN(pix_fmt->height, 16) * 3; -+ extra_size /= 2; -+ -+ sizeimage += extra_size; -+ } -+ - pix_fmt->width = width; - pix_fmt->height = height; - -@@ -247,17 +258,27 @@ static int cedrus_try_fmt_vid_cap(struct file *file, void *priv, - struct cedrus_ctx *ctx = cedrus_file2ctx(file); - struct cedrus_dev *dev = ctx->dev; - struct v4l2_pix_format *pix_fmt = &f->fmt.pix; -+ const struct v4l2_ctrl_hevc_sps *sps; - struct cedrus_format *fmt = - cedrus_find_format(pix_fmt->pixelformat, CEDRUS_DECODE_DST, - dev->capabilities); -+ int extended; - - if (!fmt) - return -EINVAL; - -+ sps = cedrus_find_control_data(ctx, V4L2_CID_MPEG_VIDEO_HEVC_SPS); -+ -+ /* The 10-bitHEVC decoder needs extra size on the output buffer. */ -+ extended = ctx->src_fmt.pixelformat == V4L2_PIX_FMT_HEVC_SLICE && -+ sps->bit_depth_luma_minus8 == 2; -+ - pix_fmt->pixelformat = fmt->pixelformat; - pix_fmt->width = ctx->src_fmt.width; - pix_fmt->height = ctx->src_fmt.height; -- cedrus_prepare_format(pix_fmt); -+ -+ pix_fmt->pixelformat = fmt->pixelformat; -+ cedrus_prepare_format(pix_fmt, extended); - - return 0; - } -@@ -275,8 +296,7 @@ static int cedrus_try_fmt_vid_out(struct file *file, void *priv, - if (!fmt) - return -EINVAL; - -- pix_fmt->pixelformat = fmt->pixelformat; -- cedrus_prepare_format(pix_fmt); -+ cedrus_prepare_format(pix_fmt, 0); - - return 0; - } -@@ -357,7 +377,7 @@ static int cedrus_s_fmt_vid_out(struct file *file, void *priv, - ctx->dst_fmt.quantization = f->fmt.pix.quantization; - ctx->dst_fmt.width = ctx->src_fmt.width; - ctx->dst_fmt.height = ctx->src_fmt.height; -- cedrus_prepare_format(&ctx->dst_fmt); -+ cedrus_prepare_format(&ctx->dst_fmt, 0); - - return 0; - } -diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_video.h b/drivers/staging/media/sunxi/cedrus/cedrus_video.h -index 05050c0a0..d42e4ebf6 100644 ---- a/drivers/staging/media/sunxi/cedrus/cedrus_video.h -+++ b/drivers/staging/media/sunxi/cedrus/cedrus_video.h -@@ -26,6 +26,6 @@ extern const struct v4l2_ioctl_ops cedrus_ioctl_ops; - - int cedrus_queue_init(void *priv, struct vb2_queue *src_vq, - struct vb2_queue *dst_vq); --void cedrus_prepare_format(struct v4l2_pix_format *pix_fmt); -+void cedrus_prepare_format(struct v4l2_pix_format *pix_fmt, int extended); - - #endif --- -2.35.3 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-Add-callback-for-buffer-cleanup.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-Add-callback-for-buffer-cleanup.patch deleted file mode 100644 index 1d57306816e8..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-Add-callback-for-buffer-cleanup.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 5ea9d06c14e2c254e90a36cc97e6e8cdd86a9b66 Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Sat, 9 Nov 2019 13:06:15 +0100 -Subject: [PATCH 034/170] drv:media: cedrus: Add callback for buffer cleanup - -Signed-off-by: Jernej Skrabec ---- - drivers/staging/media/sunxi/cedrus/cedrus.h | 1 + - drivers/staging/media/sunxi/cedrus/cedrus_video.c | 13 +++++++++++++ - 2 files changed, 14 insertions(+) - -diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.h b/drivers/staging/media/sunxi/cedrus/cedrus.h -index 9d34e5785..0a17ed0dc 100644 ---- a/drivers/staging/media/sunxi/cedrus/cedrus.h -+++ b/drivers/staging/media/sunxi/cedrus/cedrus.h -@@ -168,6 +168,7 @@ struct cedrus_dec_ops { - int (*start)(struct cedrus_ctx *ctx); - void (*stop)(struct cedrus_ctx *ctx); - void (*trigger)(struct cedrus_ctx *ctx); -+ void (*buf_cleanup)(struct cedrus_ctx *ctx, struct cedrus_buffer *buf); - }; - - struct cedrus_variant { -diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_video.c b/drivers/staging/media/sunxi/cedrus/cedrus_video.c -index 33726175d..9bb82c8e0 100644 ---- a/drivers/staging/media/sunxi/cedrus/cedrus_video.c -+++ b/drivers/staging/media/sunxi/cedrus/cedrus_video.c -@@ -469,6 +469,18 @@ static int cedrus_buf_prepare(struct vb2_buffer *vb) - return 0; - } - -+static void cedrus_buf_cleanup(struct vb2_buffer *vb) -+{ -+ struct vb2_queue *vq = vb->vb2_queue; -+ struct cedrus_ctx *ctx = vb2_get_drv_priv(vq); -+ struct cedrus_dev *dev = ctx->dev; -+ struct cedrus_dec_ops *ops = dev->dec_ops[ctx->current_codec]; -+ -+ if (!V4L2_TYPE_IS_OUTPUT(vq->type) && ops->buf_cleanup) -+ ops->buf_cleanup(ctx, -+ vb2_to_cedrus_buffer(vq->bufs[vb->index])); -+} -+ - static int cedrus_start_streaming(struct vb2_queue *vq, unsigned int count) - { - struct cedrus_ctx *ctx = vb2_get_drv_priv(vq); -@@ -551,6 +563,7 @@ static void cedrus_buf_request_complete(struct vb2_buffer *vb) - static struct vb2_ops cedrus_qops = { - .queue_setup = cedrus_queue_setup, - .buf_prepare = cedrus_buf_prepare, -+ .buf_cleanup = cedrus_buf_cleanup, - .buf_queue = cedrus_buf_queue, - .buf_out_validate = cedrus_buf_out_validate, - .buf_request_complete = cedrus_buf_request_complete, --- -2.35.3 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-h264-Improve-buffer-management.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-h264-Improve-buffer-management.patch deleted file mode 100644 index d9c5046c9bb9..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-h264-Improve-buffer-management.patch +++ /dev/null @@ -1,207 +0,0 @@ -From b867585f3054ab77f6dc2205ae322ed2ccb99832 Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Sat, 9 Nov 2019 14:12:42 +0100 -Subject: [PATCH 036/170] drv:media: cedrus: h264: Improve buffer management - -Signed-off-by: Jernej Skrabec ---- - drivers/staging/media/sunxi/cedrus/cedrus.h | 3 + - .../staging/media/sunxi/cedrus/cedrus_h264.c | 95 ++++++++----------- - 2 files changed, 44 insertions(+), 54 deletions(-) - -diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.h b/drivers/staging/media/sunxi/cedrus/cedrus.h -index 1b20e23ee..ef9f1d9c8 100644 ---- a/drivers/staging/media/sunxi/cedrus/cedrus.h -+++ b/drivers/staging/media/sunxi/cedrus/cedrus.h -@@ -106,6 +106,9 @@ struct cedrus_buffer { - struct { - unsigned int position; - enum cedrus_h264_pic_type pic_type; -+ void *mv_col_buf; -+ dma_addr_t mv_col_buf_dma; -+ ssize_t mv_col_buf_size; - } h264; - struct { - void *mv_col_buf; -diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_h264.c b/drivers/staging/media/sunxi/cedrus/cedrus_h264.c -index d8fb93035..281909c57 100644 ---- a/drivers/staging/media/sunxi/cedrus/cedrus_h264.c -+++ b/drivers/staging/media/sunxi/cedrus/cedrus_h264.c -@@ -55,16 +55,14 @@ static void cedrus_h264_write_sram(struct cedrus_dev *dev, - } - - static dma_addr_t cedrus_h264_mv_col_buf_addr(struct cedrus_ctx *ctx, -- unsigned int position, -+ struct cedrus_buffer *buf, - unsigned int field) - { -- dma_addr_t addr = ctx->codec.h264.mv_col_buf_dma; -- -- /* Adjust for the position */ -- addr += position * ctx->codec.h264.mv_col_buf_field_size * 2; -+ dma_addr_t addr = buf->codec.h264.mv_col_buf_dma; - - /* Adjust for the field */ -- addr += field * ctx->codec.h264.mv_col_buf_field_size; -+ if (field) -+ addr += buf->codec.h264.mv_col_buf_size / 2; - - return addr; - } -@@ -76,7 +74,6 @@ static void cedrus_fill_ref_pic(struct cedrus_ctx *ctx, - struct cedrus_h264_sram_ref_pic *pic) - { - struct vb2_buffer *vbuf = &buf->m2m_buf.vb.vb2_buf; -- unsigned int position = buf->codec.h264.position; - - pic->top_field_order_cnt = cpu_to_le32(top_field_order_cnt); - pic->bottom_field_order_cnt = cpu_to_le32(bottom_field_order_cnt); -@@ -85,9 +82,9 @@ static void cedrus_fill_ref_pic(struct cedrus_ctx *ctx, - pic->luma_ptr = cpu_to_le32(cedrus_buf_addr(vbuf, &ctx->dst_fmt, 0)); - pic->chroma_ptr = cpu_to_le32(cedrus_buf_addr(vbuf, &ctx->dst_fmt, 1)); - pic->mv_col_top_ptr = -- cpu_to_le32(cedrus_h264_mv_col_buf_addr(ctx, position, 0)); -+ cpu_to_le32(cedrus_h264_mv_col_buf_addr(ctx, buf, 0)); - pic->mv_col_bot_ptr = -- cpu_to_le32(cedrus_h264_mv_col_buf_addr(ctx, position, 1)); -+ cpu_to_le32(cedrus_h264_mv_col_buf_addr(ctx, buf, 1)); - } - - static void cedrus_write_frame_list(struct cedrus_ctx *ctx, -@@ -146,6 +143,28 @@ static void cedrus_write_frame_list(struct cedrus_ctx *ctx, - output_buf = vb2_to_cedrus_buffer(&run->dst->vb2_buf); - output_buf->codec.h264.position = position; - -+ if (!output_buf->codec.h264.mv_col_buf_size) { -+ const struct v4l2_ctrl_h264_sps *sps = run->h264.sps; -+ unsigned int field_size; -+ -+ field_size = DIV_ROUND_UP(ctx->src_fmt.width, 16) * -+ DIV_ROUND_UP(ctx->src_fmt.height, 16) * 16; -+ if (!(sps->flags & V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE)) -+ field_size = field_size * 2; -+ if (!(sps->flags & V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY)) -+ field_size = field_size * 2; -+ -+ output_buf->codec.h264.mv_col_buf_size = field_size * 2; -+ output_buf->codec.h264.mv_col_buf = -+ dma_alloc_attrs(dev->dev, -+ output_buf->codec.h264.mv_col_buf_size, -+ &output_buf->codec.h264.mv_col_buf_dma, -+ GFP_KERNEL, DMA_ATTR_NO_KERNEL_MAPPING); -+ -+ if (!output_buf->codec.h264.mv_col_buf) -+ output_buf->codec.h264.mv_col_buf_size = 0; -+ } -+ - if (decode->flags & V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC) - output_buf->codec.h264.pic_type = CEDRUS_H264_PIC_TYPE_FIELD; - else if (sps->flags & V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD) -@@ -516,8 +535,6 @@ static int cedrus_h264_start(struct cedrus_ctx *ctx) - { - struct cedrus_dev *dev = ctx->dev; - unsigned int pic_info_size; -- unsigned int field_size; -- unsigned int mv_col_size; - int ret; - - /* -@@ -565,38 +582,6 @@ static int cedrus_h264_start(struct cedrus_ctx *ctx) - goto err_pic_buf; - } - -- field_size = DIV_ROUND_UP(ctx->src_fmt.width, 16) * -- DIV_ROUND_UP(ctx->src_fmt.height, 16) * 16; -- -- /* -- * FIXME: This is actually conditional to -- * V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE not being set, we -- * might have to rework this if memory efficiency ever is -- * something we need to work on. -- */ -- field_size = field_size * 2; -- -- /* -- * FIXME: This is actually conditional to -- * V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY not being set, we might -- * have to rework this if memory efficiency ever is something -- * we need to work on. -- */ -- field_size = field_size * 2; -- ctx->codec.h264.mv_col_buf_field_size = field_size; -- -- mv_col_size = field_size * 2 * CEDRUS_H264_FRAME_NUM; -- ctx->codec.h264.mv_col_buf_size = mv_col_size; -- ctx->codec.h264.mv_col_buf = -- dma_alloc_attrs(dev->dev, -- ctx->codec.h264.mv_col_buf_size, -- &ctx->codec.h264.mv_col_buf_dma, -- GFP_KERNEL, DMA_ATTR_NO_KERNEL_MAPPING); -- if (!ctx->codec.h264.mv_col_buf) { -- ret = -ENOMEM; -- goto err_neighbor_buf; -- } -- - if (ctx->src_fmt.width > 2048) { - /* - * Formulas for deblock and intra prediction buffer sizes -@@ -612,7 +597,7 @@ static int cedrus_h264_start(struct cedrus_ctx *ctx) - GFP_KERNEL, DMA_ATTR_NO_KERNEL_MAPPING); - if (!ctx->codec.h264.deblk_buf) { - ret = -ENOMEM; -- goto err_mv_col_buf; -+ goto err_neighbor_buf; - } - - /* -@@ -640,12 +625,6 @@ static int cedrus_h264_start(struct cedrus_ctx *ctx) - ctx->codec.h264.deblk_buf_dma, - DMA_ATTR_NO_KERNEL_MAPPING); - --err_mv_col_buf: -- dma_free_attrs(dev->dev, ctx->codec.h264.mv_col_buf_size, -- ctx->codec.h264.mv_col_buf, -- ctx->codec.h264.mv_col_buf_dma, -- DMA_ATTR_NO_KERNEL_MAPPING); -- - err_neighbor_buf: - dma_free_attrs(dev->dev, CEDRUS_NEIGHBOR_INFO_BUF_SIZE, - ctx->codec.h264.neighbor_info_buf, -@@ -664,10 +643,6 @@ static void cedrus_h264_stop(struct cedrus_ctx *ctx) - { - struct cedrus_dev *dev = ctx->dev; - -- dma_free_attrs(dev->dev, ctx->codec.h264.mv_col_buf_size, -- ctx->codec.h264.mv_col_buf, -- ctx->codec.h264.mv_col_buf_dma, -- DMA_ATTR_NO_KERNEL_MAPPING); - dma_free_attrs(dev->dev, CEDRUS_NEIGHBOR_INFO_BUF_SIZE, - ctx->codec.h264.neighbor_info_buf, - ctx->codec.h264.neighbor_info_buf_dma, -@@ -696,6 +671,17 @@ static void cedrus_h264_trigger(struct cedrus_ctx *ctx) - VE_H264_TRIGGER_TYPE_AVC_SLICE_DECODE); - } - -+static void cedrus_h264_buf_cleanup(struct cedrus_ctx *ctx, -+ struct cedrus_buffer *buf) -+{ -+ if (buf->codec.h264.mv_col_buf_size) -+ dma_free_attrs(ctx->dev->dev, -+ buf->codec.h264.mv_col_buf_size, -+ buf->codec.h264.mv_col_buf, -+ buf->codec.h264.mv_col_buf_dma, -+ DMA_ATTR_NO_KERNEL_MAPPING); -+} -+ - struct cedrus_dec_ops cedrus_dec_ops_h264 = { - .irq_clear = cedrus_h264_irq_clear, - .irq_disable = cedrus_h264_irq_disable, -@@ -704,4 +690,5 @@ struct cedrus_dec_ops cedrus_dec_ops_h264 = { - .start = cedrus_h264_start, - .stop = cedrus_h264_stop, - .trigger = cedrus_h264_trigger, -+ .buf_cleanup = cedrus_h264_buf_cleanup, - }; --- -2.35.3 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-hevc-Improve-buffer-management.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-hevc-Improve-buffer-management.patch deleted file mode 100644 index c43c0f5eabf0..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-hevc-Improve-buffer-management.patch +++ /dev/null @@ -1,245 +0,0 @@ -From 432246948309396204697a010342ba6a5a94f387 Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Sat, 9 Nov 2019 13:22:05 +0100 -Subject: [PATCH 035/170] drv:media:cedrus: hevc: Improve buffer management - -Signed-off-by: Jernej Skrabec ---- - drivers/staging/media/sunxi/cedrus/cedrus.h | 9 +- - .../staging/media/sunxi/cedrus/cedrus_h265.c | 120 ++++++++++-------- - 2 files changed, 70 insertions(+), 59 deletions(-) - -diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.h b/drivers/staging/media/sunxi/cedrus/cedrus.h -index 0a17ed0dc..1b20e23ee 100644 ---- a/drivers/staging/media/sunxi/cedrus/cedrus.h -+++ b/drivers/staging/media/sunxi/cedrus/cedrus.h -@@ -107,6 +107,11 @@ struct cedrus_buffer { - unsigned int position; - enum cedrus_h264_pic_type pic_type; - } h264; -+ struct { -+ void *mv_col_buf; -+ dma_addr_t mv_col_buf_dma; -+ ssize_t mv_col_buf_size; -+ } h265; - } codec; - }; - -@@ -140,10 +145,6 @@ struct cedrus_ctx { - ssize_t intra_pred_buf_size; - } h264; - struct { -- void *mv_col_buf; -- dma_addr_t mv_col_buf_addr; -- ssize_t mv_col_buf_size; -- ssize_t mv_col_buf_unit_size; - void *neighbor_info_buf; - dma_addr_t neighbor_info_buf_addr; - void *entry_points_buf; -diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c -index 685cb00de..55a1874c8 100644 ---- a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c -+++ b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c -@@ -91,26 +91,66 @@ static void cedrus_h265_sram_write_data(struct cedrus_dev *dev, void *data, - - static inline dma_addr_t - cedrus_h265_frame_info_mv_col_buf_addr(struct cedrus_ctx *ctx, -- unsigned int index, unsigned int field) -+ unsigned int index, -+ const struct v4l2_ctrl_hevc_sps *sps) - { -- return ctx->codec.h265.mv_col_buf_addr + index * -- ctx->codec.h265.mv_col_buf_unit_size + -- field * ctx->codec.h265.mv_col_buf_unit_size / 2; -+ struct cedrus_buffer *cedrus_buf = NULL; -+ struct vb2_buffer *buf = NULL; -+ struct vb2_queue *vq; -+ -+ vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE); -+ if (vq) -+ buf = vb2_get_buffer(vq, index); -+ -+ if (buf) -+ cedrus_buf = vb2_to_cedrus_buffer(buf); -+ -+ if (!cedrus_buf) -+ return 0; -+ -+ if (!cedrus_buf->codec.h265.mv_col_buf_size) { -+ unsigned int ctb_size_luma, width_in_ctb_luma; -+ unsigned int log2_max_luma_coding_block_size; -+ -+ log2_max_luma_coding_block_size = -+ sps->log2_min_luma_coding_block_size_minus3 + 3 + -+ sps->log2_diff_max_min_luma_coding_block_size; -+ ctb_size_luma = 1 << log2_max_luma_coding_block_size; -+ width_in_ctb_luma = DIV_ROUND_UP(sps->pic_width_in_luma_samples, -+ ctb_size_luma); -+ -+ cedrus_buf->codec.h265.mv_col_buf_size = ALIGN(width_in_ctb_luma * -+ DIV_ROUND_UP(sps->pic_height_in_luma_samples, ctb_size_luma) * -+ CEDRUS_H265_MV_COL_BUF_UNIT_CTB_SIZE, 1024); -+ -+ cedrus_buf->codec.h265.mv_col_buf = -+ dma_alloc_attrs(ctx->dev->dev, -+ cedrus_buf->codec.h265.mv_col_buf_size, -+ &cedrus_buf->codec.h265.mv_col_buf_dma, -+ GFP_KERNEL, DMA_ATTR_NO_KERNEL_MAPPING); -+ -+ if (!cedrus_buf->codec.h265.mv_col_buf) { -+ cedrus_buf->codec.h265.mv_col_buf_size = 0; -+ cedrus_buf->codec.h265.mv_col_buf_dma = 0; -+ } -+ } -+ -+ return cedrus_buf->codec.h265.mv_col_buf_dma; - } - - static void cedrus_h265_frame_info_write_single(struct cedrus_ctx *ctx, - unsigned int index, - bool field_pic, - u32 pic_order_cnt[], -- int buffer_index) -+ int buffer_index, -+ const struct v4l2_ctrl_hevc_sps *sps) - { - struct cedrus_dev *dev = ctx->dev; - dma_addr_t dst_luma_addr = cedrus_dst_buf_addr(ctx, buffer_index, 0); - dma_addr_t dst_chroma_addr = cedrus_dst_buf_addr(ctx, buffer_index, 1); - dma_addr_t mv_col_buf_addr[2] = { -- cedrus_h265_frame_info_mv_col_buf_addr(ctx, buffer_index, 0), -- cedrus_h265_frame_info_mv_col_buf_addr(ctx, buffer_index, -- field_pic ? 1 : 0) -+ cedrus_h265_frame_info_mv_col_buf_addr(ctx, buffer_index, sps), -+ cedrus_h265_frame_info_mv_col_buf_addr(ctx, buffer_index, sps) - }; - u32 offset = VE_DEC_H265_SRAM_OFFSET_FRAME_INFO + - VE_DEC_H265_SRAM_OFFSET_FRAME_INFO_UNIT * index; -@@ -134,7 +174,8 @@ static void cedrus_h265_frame_info_write_single(struct cedrus_ctx *ctx, - - static void cedrus_h265_frame_info_write_dpb(struct cedrus_ctx *ctx, - const struct v4l2_hevc_dpb_entry *dpb, -- u8 num_active_dpb_entries) -+ u8 num_active_dpb_entries, -+ const struct v4l2_ctrl_hevc_sps *sps) - { - struct vb2_queue *vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, - V4L2_BUF_TYPE_VIDEO_CAPTURE); -@@ -152,7 +193,7 @@ static void cedrus_h265_frame_info_write_dpb(struct cedrus_ctx *ctx, - - cedrus_h265_frame_info_write_single(ctx, i, dpb[i].field_pic, - pic_order_cnt, -- buffer_index); -+ buffer_index, sps); - } - } - -@@ -416,37 +457,6 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx, - width_in_ctb_luma = - DIV_ROUND_UP(sps->pic_width_in_luma_samples, ctb_size_luma); - -- /* MV column buffer size and allocation. */ -- if (!ctx->codec.h265.mv_col_buf_size) { -- unsigned int num_buffers = -- run->dst->vb2_buf.vb2_queue->num_buffers; -- -- /* -- * Each CTB requires a MV col buffer with a specific unit size. -- * Since the address is given with missing lsb bits, 1 KiB is -- * added to each buffer to ensure proper alignment. -- */ -- ctx->codec.h265.mv_col_buf_unit_size = -- DIV_ROUND_UP(ctx->src_fmt.width, ctb_size_luma) * -- DIV_ROUND_UP(ctx->src_fmt.height, ctb_size_luma) * -- CEDRUS_H265_MV_COL_BUF_UNIT_CTB_SIZE + SZ_1K; -- -- ctx->codec.h265.mv_col_buf_size = num_buffers * -- ctx->codec.h265.mv_col_buf_unit_size; -- -- /* Buffer is never accessed by CPU, so we can skip kernel mapping. */ -- ctx->codec.h265.mv_col_buf = -- dma_alloc_attrs(dev->dev, -- ctx->codec.h265.mv_col_buf_size, -- &ctx->codec.h265.mv_col_buf_addr, -- GFP_KERNEL, DMA_ATTR_NO_KERNEL_MAPPING); -- if (!ctx->codec.h265.mv_col_buf) { -- ctx->codec.h265.mv_col_buf_size = 0; -- // TODO: Abort the process here. -- return; -- } -- } -- - /* Activate H265 engine. */ - cedrus_engine_enable(ctx, CEDRUS_CODEC_H265); - -@@ -702,7 +712,7 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx, - - /* Write decoded picture buffer in pic list. */ - cedrus_h265_frame_info_write_dpb(ctx, decode_params->dpb, -- decode_params->num_active_dpb_entries); -+ decode_params->num_active_dpb_entries, sps); - - /* Output frame. */ - -@@ -713,7 +723,7 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx, - cedrus_h265_frame_info_write_single(ctx, output_pic_list_index, - slice_params->pic_struct != 0, - pic_order_cnt, -- run->dst->vb2_buf.index); -+ run->dst->vb2_buf.index, sps); - - cedrus_write(dev, VE_DEC_H265_OUTPUT_FRAME_IDX, output_pic_list_index); - -@@ -762,9 +772,6 @@ static int cedrus_h265_start(struct cedrus_ctx *ctx) - { - struct cedrus_dev *dev = ctx->dev; - -- /* The buffer size is calculated at setup time. */ -- ctx->codec.h265.mv_col_buf_size = 0; -- - /* Buffer is never accessed by CPU, so we can skip kernel mapping. */ - ctx->codec.h265.neighbor_info_buf = - dma_alloc_attrs(dev->dev, CEDRUS_H265_NEIGHBOR_INFO_BUF_SIZE, -@@ -791,15 +798,6 @@ static void cedrus_h265_stop(struct cedrus_ctx *ctx) - { - struct cedrus_dev *dev = ctx->dev; - -- if (ctx->codec.h265.mv_col_buf_size > 0) { -- dma_free_attrs(dev->dev, ctx->codec.h265.mv_col_buf_size, -- ctx->codec.h265.mv_col_buf, -- ctx->codec.h265.mv_col_buf_addr, -- DMA_ATTR_NO_KERNEL_MAPPING); -- -- ctx->codec.h265.mv_col_buf_size = 0; -- } -- - dma_free_attrs(dev->dev, CEDRUS_H265_NEIGHBOR_INFO_BUF_SIZE, - ctx->codec.h265.neighbor_info_buf, - ctx->codec.h265.neighbor_info_buf_addr, -@@ -816,6 +814,17 @@ static void cedrus_h265_trigger(struct cedrus_ctx *ctx) - cedrus_write(dev, VE_DEC_H265_TRIGGER, VE_DEC_H265_TRIGGER_DEC_SLICE); - } - -+static void cedrus_h265_buf_cleanup(struct cedrus_ctx *ctx, -+ struct cedrus_buffer *buf) -+{ -+ if (buf->codec.h265.mv_col_buf_size) -+ dma_free_attrs(ctx->dev->dev, -+ buf->codec.h265.mv_col_buf_size, -+ buf->codec.h265.mv_col_buf, -+ buf->codec.h265.mv_col_buf_dma, -+ DMA_ATTR_NO_KERNEL_MAPPING); -+} -+ - struct cedrus_dec_ops cedrus_dec_ops_h265 = { - .irq_clear = cedrus_h265_irq_clear, - .irq_disable = cedrus_h265_irq_disable, -@@ -824,4 +833,5 @@ struct cedrus_dec_ops cedrus_dec_ops_h265 = { - .start = cedrus_h265_start, - .stop = cedrus_h265_stop, - .trigger = cedrus_h265_trigger, -+ .buf_cleanup = cedrus_h265_buf_cleanup, - }; --- -2.35.3 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-hevc-tiles-hack.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-hevc-tiles-hack.patch deleted file mode 100644 index ff974aadb1a3..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-media-cedrus-hevc-tiles-hack.patch +++ /dev/null @@ -1,180 +0,0 @@ -From 62eb86473f2ccdd278983f4c6f1e41c895edc9b7 Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Sat, 26 Oct 2019 21:23:55 +0200 -Subject: [PATCH 033/170] drv:media: cedrus: hevc: tiles hack - -Signed-off-by: Jernej Skrabec ---- - drivers/staging/media/sunxi/cedrus/cedrus.h | 2 + - .../staging/media/sunxi/cedrus/cedrus_h265.c | 93 +++++++++++++++++-- - 2 files changed, 89 insertions(+), 6 deletions(-) - -diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.h b/drivers/staging/media/sunxi/cedrus/cedrus.h -index 3bc094eb4..9d34e5785 100644 ---- a/drivers/staging/media/sunxi/cedrus/cedrus.h -+++ b/drivers/staging/media/sunxi/cedrus/cedrus.h -@@ -146,6 +146,8 @@ struct cedrus_ctx { - ssize_t mv_col_buf_unit_size; - void *neighbor_info_buf; - dma_addr_t neighbor_info_buf_addr; -+ void *entry_points_buf; -+ dma_addr_t entry_points_buf_addr; - } h265; - struct { - unsigned int last_frame_p_type; -diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c -index 44f385be9..f71ce6f87 100644 ---- a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c -+++ b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c -@@ -329,6 +329,61 @@ static int cedrus_h265_is_low_delay(struct cedrus_run *run) - return 0; - } - -+static void write_entry_point_list(struct cedrus_ctx *ctx, -+ struct cedrus_run *run, -+ unsigned int ctb_addr_x, -+ unsigned int ctb_addr_y) -+{ -+ const struct v4l2_ctrl_hevc_slice_params *slice_params; -+ const struct v4l2_ctrl_hevc_pps *pps; -+ struct cedrus_dev *dev = ctx->dev; -+ int i, x, tx, y, ty; -+ u32 *entry_points; -+ -+ pps = run->h265.pps; -+ slice_params = run->h265.slice_params; -+ -+ for (x = 0, tx = 0; tx < pps->num_tile_columns_minus1 + 1; tx++) { -+ if (x + pps->column_width_minus1[tx] + 1 > ctb_addr_x) -+ break; -+ -+ x += pps->column_width_minus1[tx] + 1; -+ } -+ -+ for (y = 0, ty = 0; ty < pps->num_tile_rows_minus1 + 1; ty++) { -+ if (y + pps->row_height_minus1[ty] + 1 > ctb_addr_y) -+ break; -+ -+ y += pps->row_height_minus1[ty] + 1; -+ } -+ -+ cedrus_write(dev, VE_DEC_H265_TILE_START_CTB, (y << 16) | (x << 0)); -+ cedrus_write(dev, VE_DEC_H265_TILE_END_CTB, -+ ((y + pps->row_height_minus1[ty]) << 16) | -+ ((x + pps->column_width_minus1[tx]) << 0)); -+ -+ entry_points = ctx->codec.h265.entry_points_buf; -+ if (pps->flags & V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED) { -+ for (i = 0; i < slice_params->num_entry_point_offsets; i++) -+ entry_points[i] = slice_params->entry_point_offset_minus1[i] + 1; -+ } else { -+ for (i = 0; i < slice_params->num_entry_point_offsets; i++) { -+ if (tx + 1 >= pps->num_tile_columns_minus1 + 1) { -+ x = 0; -+ tx = 0; -+ y += pps->row_height_minus1[ty++] + 1; -+ } else { -+ x += pps->column_width_minus1[tx++] + 1; -+ } -+ -+ entry_points[i * 4 + 0] = slice_params->entry_point_offset_minus1[i] + 1; -+ entry_points[i * 4 + 1] = 0x0; -+ entry_points[i * 4 + 2] = (y << 16) | (x << 0); -+ entry_points[i * 4 + 3] = ((y + pps->row_height_minus1[ty]) << 16) | ((x + pps->column_width_minus1[tx]) << 0); -+ } -+ } -+} -+ - static void cedrus_h265_setup(struct cedrus_ctx *ctx, - struct cedrus_run *run) - { -@@ -340,6 +395,7 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx, - const struct v4l2_hevc_pred_weight_table *pred_weight_table; - unsigned int width_in_ctb_luma, ctb_size_luma; - unsigned int log2_max_luma_coding_block_size; -+ unsigned int ctb_addr_x, ctb_addr_y; - dma_addr_t src_buf_addr; - dma_addr_t src_buf_end_addr; - u32 chroma_log2_weight_denom; -@@ -419,12 +475,19 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx, - cedrus_write(dev, VE_DEC_H265_BITS_END_ADDR, reg); - - /* Coding tree block address */ -- reg = VE_DEC_H265_DEC_CTB_ADDR_X(slice_params->slice_segment_addr % width_in_ctb_luma); -- reg |= VE_DEC_H265_DEC_CTB_ADDR_Y(slice_params->slice_segment_addr / width_in_ctb_luma); -+ ctb_addr_x = slice_params->slice_segment_addr % width_in_ctb_luma; -+ ctb_addr_y = slice_params->slice_segment_addr / width_in_ctb_luma; -+ reg = VE_DEC_H265_DEC_CTB_ADDR_X(ctb_addr_x); -+ reg |= VE_DEC_H265_DEC_CTB_ADDR_Y(ctb_addr_y); - cedrus_write(dev, VE_DEC_H265_DEC_CTB_ADDR, reg); - -- cedrus_write(dev, VE_DEC_H265_TILE_START_CTB, 0); -- cedrus_write(dev, VE_DEC_H265_TILE_END_CTB, 0); -+ if ((pps->flags & V4L2_HEVC_PPS_FLAG_TILES_ENABLED) || -+ (pps->flags & V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED)) { -+ write_entry_point_list(ctx, run, ctb_addr_x, ctb_addr_y); -+ } else { -+ cedrus_write(dev, VE_DEC_H265_TILE_START_CTB, 0); -+ cedrus_write(dev, VE_DEC_H265_TILE_END_CTB, 0); -+ } - - /* Clear the number of correctly-decoded coding tree blocks. */ - if (ctx->fh.m2m_ctx->new_frame) -@@ -528,7 +591,9 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx, - V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED, - pps->flags); - -- /* TODO: VE_DEC_H265_DEC_PPS_CTRL1_FLAG_TILES_ENABLED */ -+ reg |= VE_DEC_H265_FLAG(VE_DEC_H265_DEC_PPS_CTRL1_FLAG_TILES_ENABLED, -+ V4L2_HEVC_PPS_FLAG_TILES_ENABLED, -+ pps->flags); - - reg |= VE_DEC_H265_FLAG(VE_DEC_H265_DEC_PPS_CTRL1_FLAG_TRANSQUANT_BYPASS_ENABLED, - V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED, -@@ -606,12 +671,14 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx, - - chroma_log2_weight_denom = pred_weight_table->luma_log2_weight_denom + - pred_weight_table->delta_chroma_log2_weight_denom; -- reg = VE_DEC_H265_DEC_SLICE_HDR_INFO2_NUM_ENTRY_POINT_OFFSETS(0) | -+ reg = VE_DEC_H265_DEC_SLICE_HDR_INFO2_NUM_ENTRY_POINT_OFFSETS(slice_params->num_entry_point_offsets) | - VE_DEC_H265_DEC_SLICE_HDR_INFO2_CHROMA_LOG2_WEIGHT_DENOM(chroma_log2_weight_denom) | - VE_DEC_H265_DEC_SLICE_HDR_INFO2_LUMA_LOG2_WEIGHT_DENOM(pred_weight_table->luma_log2_weight_denom); - - cedrus_write(dev, VE_DEC_H265_DEC_SLICE_HDR_INFO2, reg); - -+ cedrus_write(dev, VE_DEC_H265_ENTRY_POINT_OFFSET_ADDR, ctx->codec.h265.entry_points_buf_addr >> 8); -+ - /* Decoded picture size. */ - - reg = VE_DEC_H265_DEC_PIC_SIZE_WIDTH(ctx->src_fmt.width) | -@@ -706,6 +773,17 @@ static int cedrus_h265_start(struct cedrus_ctx *ctx) - if (!ctx->codec.h265.neighbor_info_buf) - return -ENOMEM; - -+ ctx->codec.h265.entry_points_buf = -+ dma_alloc_coherent(dev->dev, CEDRUS_H265_ENTRY_POINTS_BUF_SIZE, -+ &ctx->codec.h265.entry_points_buf_addr, -+ GFP_KERNEL); -+ if (!ctx->codec.h265.entry_points_buf) { -+ dma_free_coherent(dev->dev, CEDRUS_H265_NEIGHBOR_INFO_BUF_SIZE, -+ ctx->codec.h265.neighbor_info_buf, -+ ctx->codec.h265.neighbor_info_buf_addr); -+ return -ENOMEM; -+ } -+ - return 0; - } - -@@ -726,6 +804,9 @@ static void cedrus_h265_stop(struct cedrus_ctx *ctx) - ctx->codec.h265.neighbor_info_buf, - ctx->codec.h265.neighbor_info_buf_addr, - DMA_ATTR_NO_KERNEL_MAPPING); -+ dma_free_coherent(dev->dev, CEDRUS_H265_ENTRY_POINTS_BUF_SIZE, -+ ctx->codec.h265.entry_points_buf, -+ ctx->codec.h265.entry_points_buf_addr); - } - - static void cedrus_h265_trigger(struct cedrus_ctx *ctx) --- -2.35.3 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-net-stmmac-dwmac-sun8i-second-EMAC-clock-register.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-net-stmmac-dwmac-sun8i-second-EMAC-clock-register.patch index 11d33955f2d1..66328a81e49f 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-net-stmmac-dwmac-sun8i-second-EMAC-clock-register.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-net-stmmac-dwmac-sun8i-second-EMAC-clock-register.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 01bced7ca69bea99b0ff5df91b96e109c578870f Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 10 Dec 2020 14:42:12 +0000 Subject: drv:net:stmmac:dwmac-sun8i: second EMAC clock register @@ -14,14 +14,14 @@ needed. Signed-off-by: Andre Przywara --- - drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 12 ++++++++-- + drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -index 04a025dfd2de..7cc949648ed1 100644 +index b67fe7c62bb5..9830092c9904 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -@@ -1164,11 +1164,13 @@ static int sun8i_dwmac_probe(struct platform_device *pdev) +@@ -1165,11 +1165,13 @@ static int sun8i_dwmac_probe(struct platform_device *pdev) struct stmmac_resources stmmac_res; struct sunxi_priv_data *gmac; struct device *dev = &pdev->dev; @@ -35,7 +35,7 @@ index 04a025dfd2de..7cc949648ed1 100644 ret = stmmac_get_platform_resources(pdev, &stmmac_res); if (ret) -@@ -1223,8 +1225,12 @@ static int sun8i_dwmac_probe(struct platform_device *pdev) +@@ -1224,8 +1226,12 @@ static int sun8i_dwmac_probe(struct platform_device *pdev) return ret; } @@ -50,7 +50,7 @@ index 04a025dfd2de..7cc949648ed1 100644 if (IS_ERR(gmac->regmap_field)) { ret = PTR_ERR(gmac->regmap_field); dev_err(dev, "Unable to map syscon register: %d\n", ret); -@@ -1351,6 +1357,8 @@ static const struct of_device_id sun8i_dwmac_match[] = { +@@ -1352,6 +1358,8 @@ static const struct of_device_id sun8i_dwmac_match[] = { .data = &emac_variant_a64 }, { .compatible = "allwinner,sun50i-h6-emac", .data = &emac_variant_h6 }, @@ -60,5 +60,5 @@ index 04a025dfd2de..7cc949648ed1 100644 }; MODULE_DEVICE_TABLE(of, sun8i_dwmac_match); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-nvmem-sunxi_sid-Support-SID-on-H616.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-nvmem-sunxi_sid-Support-SID-on-H616.patch index abfb475c773d..78f360723134 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-nvmem-sunxi_sid-Support-SID-on-H616.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-nvmem-sunxi_sid-Support-SID-on-H616.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 225fb86e947935ae0c30f26a4acc990b7698831b Mon Sep 17 00:00:00 2001 From: Kali Prasad Date: Sun, 19 Sep 2021 08:02:27 +0000 Subject: drv:nvmem:sunxi_sid: Support SID on H616 @@ -12,10 +12,10 @@ Signed-off-by: Kali Prasad 1 file changed, 7 insertions(+) diff --git a/drivers/nvmem/sunxi_sid.c b/drivers/nvmem/sunxi_sid.c -index 5d364d85347f..c526fe4abe22 100644 +index ba14a76208ab..c13112b9149b 100644 --- a/drivers/nvmem/sunxi_sid.c +++ b/drivers/nvmem/sunxi_sid.c -@@ -204,6 +204,12 @@ static const struct sunxi_sid_cfg sun50i_h6_cfg = { +@@ -205,6 +205,12 @@ static const struct sunxi_sid_cfg sun50i_h6_cfg = { .size = 0x200, }; @@ -28,7 +28,7 @@ index 5d364d85347f..c526fe4abe22 100644 static const struct of_device_id sunxi_sid_of_match[] = { { .compatible = "allwinner,sun4i-a10-sid", .data = &sun4i_a10_cfg }, { .compatible = "allwinner,sun7i-a20-sid", .data = &sun7i_a20_cfg }, -@@ -213,6 +219,7 @@ static const struct of_device_id sunxi_sid_of_match[] = { +@@ -214,6 +220,7 @@ static const struct of_device_id sunxi_sid_of_match[] = { { .compatible = "allwinner,sun50i-a64-sid", .data = &sun50i_a64_cfg }, { .compatible = "allwinner,sun50i-h5-sid", .data = &sun50i_a64_cfg }, { .compatible = "allwinner,sun50i-h6-sid", .data = &sun50i_h6_cfg }, @@ -37,5 +37,5 @@ index 5d364d85347f..c526fe4abe22 100644 }; MODULE_DEVICE_TABLE(of, sunxi_sid_of_match); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-of-Device-Tree-Overlay-ConfigFS-interface.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-of-Device-Tree-Overlay-ConfigFS-interface.patch index 429355f4ba15..fd3a3b2b9604 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-of-Device-Tree-Overlay-ConfigFS-interface.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/drv-of-Device-Tree-Overlay-ConfigFS-interface.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From c98acde50614cdd6f66b6d46b78cf8b9af1f1c4c Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Tue, 1 Feb 2022 19:22:21 +0300 Subject: drv:of: Device Tree Overlay ConfigFS interface @@ -6,9 +6,10 @@ Subject: drv:of: Device Tree Overlay ConfigFS interface --- drivers/of/Kconfig | 7 + drivers/of/Makefile | 1 + - drivers/of/configfs.c | 278 ++++++++++ + drivers/of/configfs.c | 278 +++++++++++++++++++++++++++++++++++++++ drivers/of/fdt_address.c | 2 +- 4 files changed, 287 insertions(+), 1 deletion(-) + create mode 100644 drivers/of/configfs.c diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig index da9826accb1b..f29e1b268e4a 100644 @@ -338,5 +339,5 @@ index 1dc15ab78b10..f697f2a52df4 100644 int parent, len; const struct of_bus *bus, *pbus; -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-sunxi-h3-h5-add_tve.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/enable-TV-Output-on-OrangePi-Zero-LTE.patch similarity index 92% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-sunxi-h3-h5-add_tve.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/enable-TV-Output-on-OrangePi-Zero-LTE.patch index 3643db4e3d26..7f23b5dc7fbf 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm-dts-sunxi-h3-h5-add_tve.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/enable-TV-Output-on-OrangePi-Zero-LTE.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 5d014e2618382e8e9e319d800c7641a22dc58130 Mon Sep 17 00:00:00 2001 From: Radoslav Date: Sat, 15 Apr 2023 22:47:26 +0200 Subject: enable TV Output on OrangePi Zero LTE @@ -17,23 +17,25 @@ Merged: > X-Git-Archeology: From: Radoslav > X-Git-Archeology: Subject: h3-tve (arm-dts-sun8i-h3-orangepizero-add_tve.patch) --- - arch/arm/boot/dts/allwinner/overlay/Makefile | 1 + - arch/arm/boot/dts/allwinner/overlay/README.sun8i-h3-overlays | 10 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-tve.dtso | 34 ++++ - arch/arm/boot/dts/allwinner/sun8i-h2-plus-orangepi-zero.dts | 4 + - arch/arm/boot/dts/allwinner/sun8i-h3-orangepi-pc.dts | 4 + - arch/arm/boot/dts/allwinner/sun8i-h3.dtsi | 22 +++ - arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi | 95 +++++++++- - arch/arm64/boot/dts/allwinner/overlay/Makefile | 1 + - arch/arm64/boot/dts/allwinner/overlay/README.sun50i-h5-overlays | 5 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-tve.dtso | 34 ++++ - arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi | 22 +++ - drivers/clk/sunxi-ng/ccu-sun8i-h3.c | 14 +- - drivers/gpu/drm/sun4i/Makefile | 2 +- - drivers/gpu/drm/sun4i/sun4i_tv.c | 35 +++- - drivers/gpu/drm/sun4i/sun8i_mixer.c | 36 +++- - drivers/gpu/drm/sun4i/sun8i_mixer.h | 5 +- + arch/arm/boot/dts/allwinner/overlay/Makefile | 1 + + .../overlay/README.sun8i-h3-overlays | 10 ++ + .../dts/allwinner/overlay/sun8i-h3-tve.dtso | 34 +++++++ + .../allwinner/sun8i-h2-plus-orangepi-zero.dts | 4 + + .../dts/allwinner/sun8i-h3-orangepi-pc.dts | 4 + + arch/arm/boot/dts/allwinner/sun8i-h3.dtsi | 22 +++++ + arch/arm/boot/dts/allwinner/sunxi-h3-h5.dtsi | 95 ++++++++++++++++++- + .../arm64/boot/dts/allwinner/overlay/Makefile | 1 + + .../overlay/README.sun50i-h5-overlays | 5 + + .../dts/allwinner/overlay/sun50i-h5-tve.dtso | 34 +++++++ + arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi | 22 +++++ + drivers/clk/sunxi-ng/ccu-sun8i-h3.c | 14 ++- + drivers/gpu/drm/sun4i/Makefile | 2 +- + drivers/gpu/drm/sun4i/sun4i_tv.c | 35 ++++++- + drivers/gpu/drm/sun4i/sun8i_mixer.c | 36 ++++++- + drivers/gpu/drm/sun4i/sun8i_mixer.h | 5 +- 16 files changed, 310 insertions(+), 14 deletions(-) + create mode 100644 arch/arm/boot/dts/allwinner/overlay/sun8i-h3-tve.dtso + create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-tve.dtso diff --git a/arch/arm/boot/dts/allwinner/overlay/Makefile b/arch/arm/boot/dts/allwinner/overlay/Makefile index 560f926b7018..23ecb62e2478 100644 @@ -568,7 +570,7 @@ index ec65d9d59de7..d2235d5a7416 100644 }; MODULE_DEVICE_TABLE(of, sun4i_tv_of_table); diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c -index fe1d92f18f18..8316ef1547b6 100644 +index a0b9d9e25e63..790c7e0d6761 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -37,6 +37,12 @@ struct de2_fmt_info { @@ -584,7 +586,7 @@ index fe1d92f18f18..8316ef1547b6 100644 static const struct de2_fmt_info de2_formats[] = { { .drm_fmt = DRM_FORMAT_ARGB8888, -@@ -437,10 +443,29 @@ static void sun8i_mixer_mode_set(struct sunxi_engine *engine, +@@ -432,10 +438,29 @@ static void sun8i_mixer_mode_set(struct sunxi_engine *engine, interlaced ? "on" : "off"); } @@ -617,7 +619,7 @@ index fe1d92f18f18..8316ef1547b6 100644 }; static const struct regmap_config sun8i_mixer_regmap_config = { -@@ -721,8 +746,9 @@ static const struct sun8i_mixer_cfg sun8i_h3_mixer0_cfg = { +@@ -716,8 +741,9 @@ static const struct sun8i_mixer_cfg sun8i_h3_mixer0_cfg = { static const struct sun8i_mixer_cfg sun8i_h3_mixer1_cfg = { .ccsc = CCSC_MIXER1_LAYOUT, .mod_rate = 432000000, @@ -653,5 +655,5 @@ index 68e2741b0962..7bc8efca6980 100644 #define SUN50I_MIXER_FCE_EN 0x70000 #define SUN50I_MIXER_PEAK_EN 0x70800 -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/mfd-Add-support-for-X-Powers-AC200-EPHY-syscon.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/mfd-Add-support-for-X-Powers-AC200-EPHY-syscon.patch index 9708dfc7e8c8..296d3da7079b 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/mfd-Add-support-for-X-Powers-AC200-EPHY-syscon.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/mfd-Add-support-for-X-Powers-AC200-EPHY-syscon.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From b5a9bed8ee8da49bb63437a5a2bfb1fc588decca Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Mon, 13 Jun 2022 17:37:19 +0100 Subject: mfd: Add support for X-Powers AC200 EPHY syscon @@ -33,8 +33,9 @@ Signed-off-by: Andre Przywara --- drivers/phy/allwinner/Kconfig | 9 + drivers/phy/allwinner/Makefile | 1 + - drivers/phy/allwinner/ac200-ephy-ctl.c | 301 ++++++++++ + drivers/phy/allwinner/ac200-ephy-ctl.c | 301 +++++++++++++++++++++++++ 3 files changed, 311 insertions(+) + create mode 100644 drivers/phy/allwinner/ac200-ephy-ctl.c diff --git a/drivers/phy/allwinner/Kconfig b/drivers/phy/allwinner/Kconfig index e93a53139460..d3614169de5c 100644 @@ -370,5 +371,5 @@ index 000000000000..8efeaf18e42c +MODULE_DESCRIPTION("AC200 Ethernet PHY control driver"); +MODULE_LICENSE("GPL"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/mfd-Add-support-for-X-Powers-AC200.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/mfd-Add-support-for-X-Powers-AC200.patch index a89c4c8ed5db..60aa0a7ebc28 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/mfd-Add-support-for-X-Powers-AC200.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/mfd-Add-support-for-X-Powers-AC200.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 8ed81a9342dbbc1f474b479ac2e71a3b93a75c1c Mon Sep 17 00:00:00 2001 From: Jernej Skrabec Date: Fri, 16 Aug 2019 16:38:21 +0200 Subject: mfd: Add support for X-Powers AC200 @@ -24,13 +24,14 @@ which the respective child drivers will use. Signed-off-by: Jernej Skrabec Signed-off-by: Andre Przywara --- - drivers/mfd/Kconfig | 12 + + drivers/mfd/Kconfig | 12 +++ drivers/mfd/Makefile | 1 + - drivers/mfd/ac200.c | 190 ++++++++++ + drivers/mfd/ac200.c | 190 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 203 insertions(+) + create mode 100644 drivers/mfd/ac200.c diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig -index 90ce58fd629e..d437bafb452b 100644 +index 68d71b4b55bd..caed5e75d11f 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -191,6 +191,18 @@ config MFD_AC100 @@ -261,5 +262,5 @@ index 000000000000..ad28c380c880 +MODULE_AUTHOR("Jernej Skrabec "); +MODULE_LICENSE("GPL v2"); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/net-phy-Add-support-for-AC200-EPHY.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/net-phy-Add-support-for-AC200-EPHY.patch index f7a30bb3bd39..1f8d3bb46954 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/net-phy-Add-support-for-AC200-EPHY.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/net-phy-Add-support-for-AC200-EPHY.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From f6ae01c5de09c0051590465c37d62ab625a1db28 Mon Sep 17 00:00:00 2001 From: Jernej Skrabec Date: Fri, 16 Aug 2019 16:38:57 +0200 Subject: net: phy: Add support for AC200 EPHY @@ -14,10 +14,11 @@ programs some PHY registers according to the BSP code. Signed-off-by: Jernej Skrabec Signed-off-by: Andre Przywara --- - drivers/net/phy/Kconfig | 7 + + drivers/net/phy/Kconfig | 7 ++++ drivers/net/phy/Makefile | 1 + - drivers/net/phy/ac200-phy.c | 82 ++++++++++ + drivers/net/phy/ac200-phy.c | 82 +++++++++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+) + create mode 100644 drivers/net/phy/ac200-phy.c diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig index 107880d13d21..43edfd9d61dc 100644 @@ -138,5 +139,5 @@ index 000000000000..8499914f49b8 +}; +MODULE_DEVICE_TABLE(mdio, ac200_ephy_phy_tbl); -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/net-phy-Support-yt8531c.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/net-phy-Support-yt8531c.patch deleted file mode 100644 index 4f1165dc870e..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/net-phy-Support-yt8531c.patch +++ /dev/null @@ -1,2348 +0,0 @@ -From fe406b3525eeba3bff82be7a8157254c13739206 Mon Sep 17 00:00:00 2001 -From: afaulkner420 -Date: Fri, 25 Mar 2022 20:20:34 +0000 -Subject: [PATCH 161/170] net: phy: Support yt8531c - ---- - .../net/ethernet/stmicro/stmmac/stmmac_main.c | 60 + - drivers/net/phy/motorcomm.c | 1561 ++++++++++++++++- - drivers/net/phy/yt8614-phy.h | 491 ++++++ - include/linux/motorcomm_phy.h | 119 ++ - 4 files changed, 2152 insertions(+), 79 deletions(-) - create mode 100644 drivers/net/phy/yt8614-phy.h - create mode 100644 include/linux/motorcomm_phy.h - -diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -index c5f33630e..9f0a33e21 100644 ---- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -@@ -143,6 +143,9 @@ static void stmmac_exit_fs(struct net_device *dev); - - #define STMMAC_COAL_TIMER(x) (ns_to_ktime((x) * NSEC_PER_USEC)) - -+#define RTL_8211E_PHY_ID 0x001cc915 -+#define RTL_8211F_PHY_ID 0x001cc916 -+ - int stmmac_bus_clks_config(struct stmmac_priv *priv, bool enabled) - { - int ret = 0; -@@ -6891,6 +6894,54 @@ void stmmac_fpe_handshake(struct stmmac_priv *priv, bool enable) - } - } - -+static int phy_rtl8211e_led_fixup(struct phy_device *phydev) -+{ -+ //int val; -+ -+ printk("%s in\n", __func__); -+ -+ /*switch to extension page44*/ -+ phy_write(phydev, 31, 0x07); -+ phy_write(phydev, 30, 0x2c); -+ -+ /*set led1(yellow) act -+ val = phy_read(phydev, 26); -+ val &= (~(1<<4));// bit4=0 -+ val |= (1<<5);// bit5=1 -+ val &= (~(1<<6));// bit6=0*/ -+ phy_write(phydev, 26, 0x20); -+ -+ /*set led0(green) link -+ val = phy_read(phydev, 28); -+ val |= (7<<0);// bit0,1,2=1 -+ val &= (~(7<<4));// bit4,5,6=0 -+ val &= (~(7<<8));// bit8,9,10=0*/ -+ phy_write(phydev, 28, 0x07); -+ -+ /*switch back to page0*/ -+ phy_write(phydev,31,0x00); -+ -+ return 0; -+} -+ -+static int phy_rtl8211f_led_fixup(struct phy_device *phydev) -+{ -+ printk("%s in\n", __func__); -+ -+ /*switch to extension page44*/ -+ phy_write(phydev, 31, 0xd04); -+ -+ /*set led1(yellow) act */ -+ /*set led2(green) link*/ -+ phy_write(phydev, 16, 0xae00); -+ -+ phy_write(phydev, 17, 0); -+ /*switch back to page0*/ -+ phy_write(phydev,31,0x00); -+ -+ return 0; -+} -+ - /** - * stmmac_dvr_probe - * @device: device pointer -@@ -7150,6 +7201,15 @@ int stmmac_dvr_probe(struct device *device, - goto error_phy_setup; - } - -+ /* register the PHY board fixup */ -+ ret = phy_register_fixup_for_uid(RTL_8211E_PHY_ID, 0xffffffff, phy_rtl8211e_led_fixup); -+ if (ret) -+ pr_warn("Cannot register PHY board fixup.\n"); -+ -+ ret = phy_register_fixup_for_uid(RTL_8211F_PHY_ID, 0xffffffff, phy_rtl8211f_led_fixup); -+ if (ret) -+ pr_warn("Cannot register PHY board fixup.\n"); -+ - ret = register_netdev(ndev); - if (ret) { - dev_err(priv->device, "%s: ERROR %i registering the device\n", -diff --git a/drivers/net/phy/motorcomm.c b/drivers/net/phy/motorcomm.c -index 7e6ac2c5e..c6876bd08 100644 ---- a/drivers/net/phy/motorcomm.c -+++ b/drivers/net/phy/motorcomm.c -@@ -1,137 +1,1540 @@ --// SPDX-License-Identifier: GPL-2.0+ - /* -+ * drivers/net/phy/motorcomm.c -+ * - * Driver for Motorcomm PHYs - * -- * Author: Peter Geis -+ * Author: Leilei Zhao -+ * -+ * Copyright (c) 2019 Motorcomm, Inc. -+ * -+ * 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. -+ * -+ * Support : Motorcomm Phys: -+ * Giga phys: yt8511, yt8521 -+ * 100/10 Phys : yt8512, yt8512b, yt8510 -+ * Automotive 100Mb Phys : yt8010 -+ * Automotive 100/10 hyper range Phys: yt8510 - */ - - #include - #include - #include -+#include -+#include -+#include -+#include -+#ifndef LINUX_VERSION_CODE -+#include -+#else -+#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) -+#endif -+/*for wol, 20210604*/ -+#include - --#define PHY_ID_YT8511 0x0000010a -+#include "yt8614-phy.h" - --#define YT8511_PAGE_SELECT 0x1e --#define YT8511_PAGE 0x1f --#define YT8511_EXT_CLK_GATE 0x0c --#define YT8511_EXT_DELAY_DRIVE 0x0d --#define YT8511_EXT_SLEEP_CTRL 0x27 -+/**** configuration section begin ***********/ - --/* 2b00 25m from pll -- * 2b01 25m from xtl *default* -- * 2b10 62.m from pll -- * 2b11 125m from pll -+/* if system depends on ethernet packet to restore from sleep, please define this macro to 1 -+ * otherwise, define it to 0. - */ --#define YT8511_CLK_125M (BIT(2) | BIT(1)) --#define YT8511_PLLON_SLP BIT(14) -+#define SYS_WAKEUP_BASED_ON_ETH_PKT 1 - --/* RX Delay enabled = 1.8ns 1000T, 8ns 10/100T */ --#define YT8511_DELAY_RX BIT(0) -+/* to enable system WOL of phy, please define this macro to 1 -+ * otherwise, define it to 0. -+ */ -+#define YTPHY_ENABLE_WOL 0 - --/* TX Gig-E Delay is bits 7:4, default 0x5 -- * TX Fast-E Delay is bits 15:12, default 0xf -- * Delay = 150ps * N - 250ps -- * On = 2000ps, off = 50ps -+/* some GMAC need clock input from PHY, for eg., 125M, please enable this macro -+ * by degault, it is set to 0 -+ * NOTE: this macro will need macro SYS_WAKEUP_BASED_ON_ETH_PKT to set to 1 - */ --#define YT8511_DELAY_GE_TX_EN (0xf << 4) --#define YT8511_DELAY_GE_TX_DIS (0x2 << 4) --#define YT8511_DELAY_FE_TX_EN (0xf << 12) --#define YT8511_DELAY_FE_TX_DIS (0x2 << 12) -+#define GMAC_CLOCK_INPUT_NEEDED 1 -+ -+ -+#define YT8521_PHY_MODE_FIBER 1 //fiber mode only -+#define YT8521_PHY_MODE_UTP 2 //utp mode only -+#define YT8521_PHY_MODE_POLL 3 //fiber and utp, poll mode -+ -+/* please make choice according to system design -+ * for Fiber only system, please define YT8521_PHY_MODE_CURR 1 -+ * for UTP only system, please define YT8521_PHY_MODE_CURR 2 -+ * for combo system, please define YT8521_PHY_MODE_CURR 3 -+ */ -+#define YT8521_PHY_MODE_CURR 3 -+ -+/**** configuration section end ***********/ -+ -+ -+/* no need to change below */ -+ -+#if (YTPHY_ENABLE_WOL) -+#undef SYS_WAKEUP_BASED_ON_ETH_PKT -+#define SYS_WAKEUP_BASED_ON_ETH_PKT 1 -+#endif - --static int yt8511_read_page(struct phy_device *phydev) -+/* workaround for 8521 fiber 100m mode */ -+static int link_mode_8521 = 0; //0: no link; 1: utp; 32: fiber. traced that 1000m fiber uses 32. -+static int link_mode_8614[4] = {0}; //0: no link; 1: utp; 32: fiber. traced that 1000m fiber uses 32. -+ -+/* for multiple port phy, base phy address */ -+static unsigned int yt_mport_base_phy_addr = 0xff; //0xff: invalid; for 8618 -+static unsigned int yt_mport_base_phy_addr_8614 = 0xff; //0xff: invalid; -+ -+int phy_yt8531_led_fixup(struct mii_bus *bus, int addr); -+int yt8511_config_out_125m(struct mii_bus *bus, int phy_id); -+ -+#if ( LINUX_VERSION_CODE > KERNEL_VERSION(5,0,0) ) -+int genphy_config_init(struct phy_device *phydev) - { -- return __phy_read(phydev, YT8511_PAGE_SELECT); --}; -+ int ret; -+ -+ //printk (KERN_INFO "yzhang..read phyaddr=%d, phyid=%08x\n",phydev->mdio.addr, phydev->phy_id); -+ -+ if(phydev->phy_id == 0x4f51e91b) -+ { -+ //printk (KERN_INFO "yzhang..get YT8511, abt to set 125m clk out, phyaddr=%d, phyid=%08x\n",phydev->mdio.addr, phydev->phy_id); -+ ret = yt8511_config_out_125m(phydev->mdio.bus, phydev->mdio.addr); -+ //printk (KERN_INFO "yzhang..8511 set 125m clk out, reg=%#04x\n",phydev->mdio.bus->read(phydev->mdio.bus,phydev->mdio.addr,0x1f)/*double check as delay*/); -+ if (ret<0) -+ printk (KERN_INFO "yzhang..failed to set 125m clk out, ret=%d\n",ret); - --static int yt8511_write_page(struct phy_device *phydev, int page) -+ phy_yt8531_led_fixup(phydev->mdio.bus, phydev->mdio.addr); -+ } -+ return genphy_read_abilities(phydev); -+} -+#endif -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+static int ytphy_config_init(struct phy_device *phydev) - { -- return __phy_write(phydev, YT8511_PAGE_SELECT, page); --}; -+ return 0; -+} -+#endif -+ -+static int ytphy_read_ext(struct phy_device *phydev, u32 regnum) -+{ -+ int ret; -+ int val; -+ -+ ret = phy_write(phydev, REG_DEBUG_ADDR_OFFSET, regnum); -+ if (ret < 0) -+ return ret; -+ -+ val = phy_read(phydev, REG_DEBUG_DATA); -+ -+ return val; -+} -+ -+static int ytphy_write_ext(struct phy_device *phydev, u32 regnum, u16 val) -+{ -+ int ret; -+ -+ ret = phy_write(phydev, REG_DEBUG_ADDR_OFFSET, regnum); -+ if (ret < 0) -+ return ret; -+ -+ ret = phy_write(phydev, REG_DEBUG_DATA, val); -+ -+ return ret; -+} -+ -+static int yt8010_config_aneg(struct phy_device *phydev) -+{ -+ phydev->speed = SPEED_100; -+ return 0; -+} -+ -+static int yt8512_clk_init(struct phy_device *phydev) -+{ -+ int ret; -+ int val; -+ -+ val = ytphy_read_ext(phydev, YT8512_EXTREG_AFE_PLL); -+ if (val < 0) -+ return val; -+ -+ val |= YT8512_CONFIG_PLL_REFCLK_SEL_EN; -+ -+ ret = ytphy_write_ext(phydev, YT8512_EXTREG_AFE_PLL, val); -+ if (ret < 0) -+ return ret; -+ -+ val = ytphy_read_ext(phydev, YT8512_EXTREG_EXTEND_COMBO); -+ if (val < 0) -+ return val; -+ -+ val |= YT8512_CONTROL1_RMII_EN; -+ -+ ret = ytphy_write_ext(phydev, YT8512_EXTREG_EXTEND_COMBO, val); -+ if (ret < 0) -+ return ret; -+ -+ val = phy_read(phydev, MII_BMCR); -+ if (val < 0) -+ return val; -+ -+ val |= YT_SOFTWARE_RESET; -+ ret = phy_write(phydev, MII_BMCR, val); -+ -+ return ret; -+} -+ -+static int yt8512_led_init(struct phy_device *phydev) -+{ -+ int ret; -+ int val; -+ int mask; -+ -+ val = ytphy_read_ext(phydev, YT8512_EXTREG_LED0); -+ if (val < 0) -+ return val; -+ -+ val |= YT8512_LED0_ACT_BLK_IND; -+ -+ mask = YT8512_LED0_DIS_LED_AN_TRY | YT8512_LED0_BT_BLK_EN | -+ YT8512_LED0_HT_BLK_EN | YT8512_LED0_COL_BLK_EN | -+ YT8512_LED0_BT_ON_EN; -+ val &= ~mask; -+ -+ ret = ytphy_write_ext(phydev, YT8512_EXTREG_LED0, val); -+ if (ret < 0) -+ return ret; -+ -+ val = ytphy_read_ext(phydev, YT8512_EXTREG_LED1); -+ if (val < 0) -+ return val; -+ -+ val |= YT8512_LED1_BT_ON_EN; -+ -+ mask = YT8512_LED1_TXACT_BLK_EN | YT8512_LED1_RXACT_BLK_EN; -+ val &= ~mask; -+ -+ ret = ytphy_write_ext(phydev, YT8512_LED1_BT_ON_EN, val); -+ -+ return ret; -+} -+ -+static int yt8512_config_init(struct phy_device *phydev) -+{ -+ int ret; -+ int val; -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ ret = ytphy_config_init(phydev); -+#else -+ ret = genphy_config_init(phydev); -+#endif -+ if (ret < 0) -+ return ret; -+ -+ ret = yt8512_clk_init(phydev); -+ if (ret < 0) -+ return ret; -+ -+ ret = yt8512_led_init(phydev); -+ -+ /* disable auto sleep */ -+ val = ytphy_read_ext(phydev, YT8512_EXTREG_SLEEP_CONTROL1); -+ if (val < 0) -+ return val; -+ -+ val &= (~BIT(YT8512_EN_SLEEP_SW_BIT)); -+ -+ ret = ytphy_write_ext(phydev, YT8512_EXTREG_SLEEP_CONTROL1, val); -+ if (ret < 0) -+ return ret; -+ -+ return ret; -+} -+ -+static int yt8512_read_status(struct phy_device *phydev) -+{ -+ int ret; -+ int val; -+ int speed, speed_mode, duplex; -+ -+ ret = genphy_update_link(phydev); -+ if (ret) -+ return ret; -+ -+ val = phy_read(phydev, REG_PHY_SPEC_STATUS); -+ if (val < 0) -+ return val; -+ -+ duplex = (val & YT8512_DUPLEX) >> YT8512_DUPLEX_BIT; -+ speed_mode = (val & YT8512_SPEED_MODE) >> YT8512_SPEED_MODE_BIT; -+ switch (speed_mode) { -+ case 0: -+ speed = SPEED_10; -+ break; -+ case 1: -+ speed = SPEED_100; -+ break; -+ case 2: -+ case 3: -+ default: -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ speed = -1; -+#else -+ speed = SPEED_UNKNOWN; -+#endif -+ break; -+ } -+ -+ phydev->speed = speed; -+ phydev->duplex = duplex; -+ -+ return 0; -+} -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+#else -+#if 0 -+int yt8521_soft_reset(struct phy_device *phydev) -+{ -+ int ret; -+ -+ ytphy_write_ext(phydev, 0xa000, 0); -+ ret = genphy_soft_reset(phydev); -+ if (ret < 0) -+ return ret; -+ -+ ytphy_write_ext(phydev, 0xa000, 2); -+ ret = genphy_soft_reset(phydev); -+ if (ret < 0) { -+ ytphy_write_ext(phydev, 0xa000, 0); -+ return ret; -+ } -+ -+ return 0; -+} -+#else -+/* qingsong feedback 2 genphy_soft_reset will cause problem. -+ * and this is the reduction version -+ */ -+int yt8521_soft_reset(struct phy_device *phydev) -+{ -+ int ret, val; -+ -+ val = ytphy_read_ext(phydev, 0xa001); -+ ytphy_write_ext(phydev, 0xa001, (val & ~0x8000)); -+ -+ ret = genphy_soft_reset(phydev); -+ if (ret < 0) -+ return ret; -+ -+ return 0; -+} -+#endif -+ -+#endif -+ -+#if GMAC_CLOCK_INPUT_NEEDED -+static int ytphy_mii_rd_ext(struct mii_bus *bus, int phy_id, u32 regnum) -+{ -+ int ret; -+ int val; -+ -+ ret = bus->write(bus, phy_id, REG_DEBUG_ADDR_OFFSET, regnum); -+ if (ret < 0) -+ return ret; -+ -+ val = bus->read(bus, phy_id, REG_DEBUG_DATA); -+ -+ return val; -+} -+ -+static int ytphy_mii_wr_ext(struct mii_bus *bus, int phy_id, u32 regnum, u16 val) -+{ -+ int ret; -+ -+ ret = bus->write(bus, phy_id, REG_DEBUG_ADDR_OFFSET, regnum); -+ if (ret < 0) -+ return ret; -+ -+ ret = bus->write(bus, phy_id, REG_DEBUG_DATA, val); -+ -+ return ret; -+} -+ -+int yt8511_config_dis_txdelay(struct mii_bus *bus, int phy_id) -+{ -+ int ret; -+ int val; -+ -+ /* disable auto sleep */ -+ val = ytphy_mii_rd_ext(bus, phy_id, 0x27); -+ if (val < 0) -+ return val; -+ -+ val &= (~BIT(15)); -+ -+ ret = ytphy_mii_wr_ext(bus, phy_id, 0x27, val); -+ if (ret < 0) -+ return ret; -+ -+ /* enable RXC clock when no wire plug */ -+ val = ytphy_mii_rd_ext(bus, phy_id, 0xc); -+ if (val < 0) -+ return val; -+ -+ /* ext reg 0xc b[7:4] -+ Tx Delay time = 150ps * N - 250ps -+ */ -+ val &= ~(0xf << 4); -+ ret = ytphy_mii_wr_ext(bus, phy_id, 0xc, val); -+ //printk("yt8511_config_dis_txdelay..phy txdelay, val=%#08x\n",val); -+ -+ return ret; -+} -+ -+int phy_yt8531_led_fixup(struct mii_bus *bus, int addr) -+{ -+ //printk("%s in\n", __func__); -+ -+ ytphy_mii_wr_ext(bus, addr, 0xa00d, 0x670); -+ ytphy_mii_wr_ext(bus, addr, 0xa00e, 0x2070); -+ ytphy_mii_wr_ext(bus, addr, 0xa00f, 0x7e); -+ -+ return 0; -+} -+ -+int yt8511_config_out_125m(struct mii_bus *bus, int addr) -+{ -+ int ret; -+ int val; -+ -+ mdelay(100); -+ ret = ytphy_mii_wr_ext(bus, addr, 0xa012, 0xd0); -+ -+ mdelay(100); -+ val = ytphy_mii_rd_ext(bus, addr, 0xa012); -+ -+ if(val != 0xd0) -+ { -+ printk("yt8511_config_out_125m error\n"); -+ return -1; -+ } -+ -+ /* disable auto sleep */ -+ val = ytphy_mii_rd_ext(bus, addr, 0x27); -+ if (val < 0) -+ return val; -+ -+ val &= (~BIT(15)); -+ -+ ret = ytphy_mii_wr_ext(bus, addr, 0x27, val); -+ if (ret < 0) -+ return ret; -+ -+ /* enable RXC clock when no wire plug */ -+ val = ytphy_mii_rd_ext(bus, addr, 0xc); -+ if (val < 0) -+ return val; -+ -+ /* ext reg 0xc.b[2:1] -+ 00-----25M from pll; -+ 01---- 25M from xtl;(default) -+ 10-----62.5M from pll; -+ 11----125M from pll(here set to this value) -+ */ -+ val |= (3 << 1); -+ ret = ytphy_mii_wr_ext(bus, addr, 0xc, val); -+ //printk("yt8511_config_out_125m, phy clk out, val=%#08x\n",val); -+ -+#if 0 -+ /* for customer, please enable it based on demand. -+ * configure to master -+ */ -+ val = bus->read(bus, phy_id, 0x9/*master/slave config reg*/); -+ val |= (0x3<<11); //to be manual config and force to be master -+ ret = bus->write(bus, phy_id, 0x9, val); //take effect until phy soft reset -+ if (ret < 0) -+ return ret; -+ -+ printk("yt8511_config_out_125m, phy to be master, val=%#08x\n",val); -+#endif -+ -+ return ret; -+} -+ -+EXPORT_SYMBOL(yt8511_config_out_125m); - - static int yt8511_config_init(struct phy_device *phydev) - { -- int oldpage, ret = 0; -- unsigned int ge, fe; -+ int ret; -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ ret = ytphy_config_init(phydev); -+#else -+ ret = genphy_config_init(phydev); -+#endif -+ -+ return ret; -+} -+#endif /*GMAC_CLOCK_INPUT_NEEDED*/ -+ -+#if (YTPHY_ENABLE_WOL) -+static int ytphy_switch_reg_space(struct phy_device *phydev, int space) -+{ -+ int ret; -+ -+ if (space == YTPHY_REG_SPACE_UTP){ -+ ret = ytphy_write_ext(phydev, 0xa000, 0); -+ }else{ -+ ret = ytphy_write_ext(phydev, 0xa000, 2); -+ } -+ -+ return ret; -+} -+ -+static int ytphy_wol_en_cfg(struct phy_device *phydev, ytphy_wol_cfg_t wol_cfg) -+{ -+ int ret=0; -+ int val=0; -+ -+ val = ytphy_read_ext(phydev, YTPHY_WOL_CFG_REG); -+ if (val < 0) -+ return val; -+ -+ if(wol_cfg.enable) { -+ val |= YTPHY_WOL_CFG_EN; -+ -+ if(wol_cfg.type == YTPHY_WOL_TYPE_LEVEL) { -+ val &= ~YTPHY_WOL_CFG_TYPE; -+ val &= ~YTPHY_WOL_CFG_INTR_SEL; -+ } else if(wol_cfg.type == YTPHY_WOL_TYPE_PULSE) { -+ val |= YTPHY_WOL_CFG_TYPE; -+ val |= YTPHY_WOL_CFG_INTR_SEL; -+ -+ if(wol_cfg.width == YTPHY_WOL_WIDTH_84MS) { -+ val &= ~YTPHY_WOL_CFG_WIDTH1; -+ val &= ~YTPHY_WOL_CFG_WIDTH2; -+ } else if(wol_cfg.width == YTPHY_WOL_WIDTH_168MS) { -+ val |= YTPHY_WOL_CFG_WIDTH1; -+ val &= ~YTPHY_WOL_CFG_WIDTH2; -+ } else if(wol_cfg.width == YTPHY_WOL_WIDTH_336MS) { -+ val &= ~YTPHY_WOL_CFG_WIDTH1; -+ val |= YTPHY_WOL_CFG_WIDTH2; -+ } else if(wol_cfg.width == YTPHY_WOL_WIDTH_672MS) { -+ val |= YTPHY_WOL_CFG_WIDTH1; -+ val |= YTPHY_WOL_CFG_WIDTH2; -+ } -+ } -+ } else { -+ val &= ~YTPHY_WOL_CFG_EN; -+ val &= ~YTPHY_WOL_CFG_INTR_SEL; -+ } -+ -+ ret = ytphy_write_ext(phydev, YTPHY_WOL_CFG_REG, val); -+ if (ret < 0) -+ return ret; -+ -+ return 0; -+} -+ -+static void ytphy_get_wol(struct phy_device *phydev, struct ethtool_wolinfo *wol) -+{ -+ int val = 0; -+ -+ wol->supported = WAKE_MAGIC; -+ wol->wolopts = 0; -+ -+ val = ytphy_read_ext(phydev, YTPHY_WOL_CFG_REG); -+ if (val < 0) -+ return; -+ -+ if (val & YTPHY_WOL_CFG_EN) -+ wol->wolopts |= WAKE_MAGIC; -+ -+ return; -+} -+ -+static int ytphy_set_wol(struct phy_device *phydev, struct ethtool_wolinfo *wol) -+{ -+ int ret, pre_page, val; -+ ytphy_wol_cfg_t wol_cfg; -+ struct net_device *p_attached_dev = phydev->attached_dev; -+ -+ memset(&wol_cfg,0,sizeof(ytphy_wol_cfg_t)); -+ pre_page = ytphy_read_ext(phydev, 0xa000); -+ if (pre_page < 0) -+ return pre_page; -+ -+ /* Switch to phy UTP page */ -+ ret = ytphy_switch_reg_space(phydev, YTPHY_REG_SPACE_UTP); -+ if (ret < 0) -+ return ret; -+ -+ if (wol->wolopts & WAKE_MAGIC) { -+ -+ /* Enable the WOL interrupt */ -+ val = phy_read(phydev, YTPHY_UTP_INTR_REG); -+ val |= YTPHY_WOL_INTR; -+ ret = phy_write(phydev, YTPHY_UTP_INTR_REG, val); -+ if (ret < 0) -+ return ret; -+ -+ /* Set the WOL config */ -+ wol_cfg.enable = 1; //enable -+ wol_cfg.type= YTPHY_WOL_TYPE_PULSE; -+ wol_cfg.width= YTPHY_WOL_WIDTH_672MS; -+ ret = ytphy_wol_en_cfg(phydev, wol_cfg); -+ if (ret < 0) -+ return ret; -+ -+ /* Store the device address for the magic packet */ -+ ret = ytphy_write_ext(phydev, YTPHY_MAGIC_PACKET_MAC_ADDR2, -+ ((p_attached_dev->dev_addr[0] << 8) | -+ p_attached_dev->dev_addr[1])); -+ if (ret < 0) -+ return ret; -+ ret = ytphy_write_ext(phydev, YTPHY_MAGIC_PACKET_MAC_ADDR1, -+ ((p_attached_dev->dev_addr[2] << 8) | -+ p_attached_dev->dev_addr[3])); -+ if (ret < 0) -+ return ret; -+ ret = ytphy_write_ext(phydev, YTPHY_MAGIC_PACKET_MAC_ADDR0, -+ ((p_attached_dev->dev_addr[4] << 8) | -+ p_attached_dev->dev_addr[5])); -+ if (ret < 0) -+ return ret; -+ } else { -+ wol_cfg.enable = 0; //disable -+ wol_cfg.type= YTPHY_WOL_TYPE_MAX; -+ wol_cfg.width= YTPHY_WOL_WIDTH_MAX; -+ ret = ytphy_wol_en_cfg(phydev, wol_cfg); -+ if (ret < 0) -+ return ret; -+ } -+ -+ /* Recover to previous register space page */ -+ ret = ytphy_switch_reg_space(phydev, pre_page); -+ if (ret < 0) -+ return ret; -+ -+ return 0; -+} -+ -+#endif /*(YTPHY_ENABLE_WOL)*/ -+ -+static int yt8521_config_init(struct phy_device *phydev) -+{ -+ int ret; -+ int val; -+ -+ phydev->irq = PHY_POLL; -+ -+ ytphy_write_ext(phydev, 0xa000, 0); -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ ret = ytphy_config_init(phydev); -+#else -+ ret = genphy_config_init(phydev); -+#endif -+ if (ret < 0) -+ return ret; -+ -+ /* disable auto sleep */ -+ val = ytphy_read_ext(phydev, YT8521_EXTREG_SLEEP_CONTROL1); -+ if (val < 0) -+ return val; -+ -+ val &= (~BIT(YT8521_EN_SLEEP_SW_BIT)); -+ -+ ret = ytphy_write_ext(phydev, YT8521_EXTREG_SLEEP_CONTROL1, val); -+ if (ret < 0) -+ return ret; - -- oldpage = phy_select_page(phydev, YT8511_EXT_CLK_GATE); -- if (oldpage < 0) -- goto err_restore_page; -+ /* enable RXC clock when no wire plug */ -+ ret = ytphy_write_ext(phydev, 0xa000, 0); -+ if (ret < 0) -+ return ret; -+ -+ val = ytphy_read_ext(phydev, 0xc); -+ if (val < 0) -+ return val; -+ val &= ~(1 << 12); -+ ret = ytphy_write_ext(phydev, 0xc, val); -+ if (ret < 0) -+ return ret; - -- /* set rgmii delay mode */ -- switch (phydev->interface) { -- case PHY_INTERFACE_MODE_RGMII: -- ge = YT8511_DELAY_GE_TX_DIS; -- fe = YT8511_DELAY_FE_TX_DIS; -+ printk (KERN_INFO "yt8521_config_init, 8521 init call out.\n"); -+ return ret; -+} -+ -+/* -+ * for fiber mode, there is no 10M speed mode and -+ * this function is for this purpose. -+ */ -+static int yt8521_adjust_status(struct phy_device *phydev, int val, int is_utp) -+{ -+ int speed_mode, duplex; -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ int speed = -1; -+#else -+ int speed = SPEED_UNKNOWN; -+#endif -+ -+ duplex = (val & YT8512_DUPLEX) >> YT8521_DUPLEX_BIT; -+ speed_mode = (val & YT8521_SPEED_MODE) >> YT8521_SPEED_MODE_BIT; -+ switch (speed_mode) { -+ case 0: -+ if (is_utp) -+ speed = SPEED_10; -+ break; -+ case 1: -+ speed = SPEED_100; - break; -- case PHY_INTERFACE_MODE_RGMII_RXID: -- ge = YT8511_DELAY_RX | YT8511_DELAY_GE_TX_DIS; -- fe = YT8511_DELAY_FE_TX_DIS; -+ case 2: -+ speed = SPEED_1000; - break; -- case PHY_INTERFACE_MODE_RGMII_TXID: -- ge = YT8511_DELAY_GE_TX_EN; -- fe = YT8511_DELAY_FE_TX_EN; -+ case 3: - break; -- case PHY_INTERFACE_MODE_RGMII_ID: -- ge = YT8511_DELAY_RX | YT8511_DELAY_GE_TX_EN; -- fe = YT8511_DELAY_FE_TX_EN; -+ default: -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ speed = -1; -+#else -+ speed = SPEED_UNKNOWN; -+#endif - break; -- default: /* do not support other modes */ -- ret = -EOPNOTSUPP; -- goto err_restore_page; - } - -- ret = __phy_modify(phydev, YT8511_PAGE, (YT8511_DELAY_RX | YT8511_DELAY_GE_TX_EN), ge); -+ phydev->speed = speed; -+ phydev->duplex = duplex; -+ //printk (KERN_INFO "yt8521_adjust_status call out,regval=0x%04x,mode=%s,speed=%dm...\n", val,is_utp?"utp":"fiber", phydev->speed); -+ -+ return 0; -+} -+ -+/* -+ * for fiber mode, when speed is 100M, there is no definition for autonegotiation, and -+ * this function handles this case and return 1 per linux kernel's polling. -+ */ -+int yt8521_aneg_done (struct phy_device *phydev) -+{ -+ -+ //printk("yt8521_aneg_done callin,speed=%dm,linkmoded=%d\n", phydev->speed,link_mode_8521); -+ -+ if((32 == link_mode_8521) && (SPEED_100 == phydev->speed)) -+ { -+ return 1/*link_mode_8521*/; -+ } -+ -+#if ( LINUX_VERSION_CODE > KERNEL_VERSION(3,11,0) ) -+ return genphy_aneg_done(phydev); -+#else -+ return 1; -+#endif -+} -+ -+static int yt8521_read_status(struct phy_device *phydev) -+{ -+ int ret; -+ volatile int val, yt8521_fiber_latch_val, yt8521_fiber_curr_val; -+ volatile int link; -+ int link_utp = 0, link_fiber = 0; -+ -+#if (YT8521_PHY_MODE_CURR != YT8521_PHY_MODE_FIBER) -+ /* reading UTP */ -+ ret = ytphy_write_ext(phydev, 0xa000, 0); -+ if (ret < 0) -+ return ret; -+ -+ val = phy_read(phydev, REG_PHY_SPEC_STATUS); -+ if (val < 0) -+ return val; -+ -+ link = val & (BIT(YT8521_LINK_STATUS_BIT)); -+ if (link) { -+ link_utp = 1; -+ link_mode_8521 = 1; -+ yt8521_adjust_status(phydev, val, 1); -+ } else { -+ link_utp = 0; -+ } -+#endif //(YT8521_PHY_MODE_CURR != YT8521_PHY_MODE_FIBER) -+ -+#if (YT8521_PHY_MODE_CURR != YT8521_PHY_MODE_UTP) -+ /* reading Fiber */ -+ ret = ytphy_write_ext(phydev, 0xa000, 2); -+ if (ret < 0) -+ return ret; -+ -+ val = phy_read(phydev, REG_PHY_SPEC_STATUS); -+ if (val < 0) -+ return val; -+ -+ //note: below debug information is used to check multiple PHy ports. -+ //printk (KERN_INFO "yt8521_read_status, fiber status=%04x,macbase=0x%08lx\n", val,(unsigned long)phydev->attached_dev); -+ -+ /* for fiber, from 1000m to 100m, there is not link down from 0x11, and check reg 1 to identify such case -+ * this is important for Linux kernel for that, missing linkdown event will cause problem. -+ */ -+ yt8521_fiber_latch_val = phy_read(phydev, MII_BMSR); -+ yt8521_fiber_curr_val = phy_read(phydev, MII_BMSR); -+ link = val & (BIT(YT8521_LINK_STATUS_BIT)); -+ if((link) && (yt8521_fiber_latch_val != yt8521_fiber_curr_val)) -+ { -+ link = 0; -+ printk (KERN_INFO "yt8521_read_status, fiber link down detect,latch=%04x,curr=%04x\n", yt8521_fiber_latch_val,yt8521_fiber_curr_val); -+ } -+ -+ if (link) { -+ link_fiber = 1; -+ yt8521_adjust_status(phydev, val, 0); -+ link_mode_8521 = 32; //fiber mode -+ -+ -+ } else { -+ link_fiber = 0; -+ } -+#endif //(YT8521_PHY_MODE_CURR != YT8521_PHY_MODE_UTP) -+ -+ if (link_utp || link_fiber) { -+ phydev->link = 1; -+ } else { -+ phydev->link = 0; -+ link_mode_8521 = 0; -+ } -+ -+#if (YT8521_PHY_MODE_CURR != YT8521_PHY_MODE_FIBER) -+ if (link_utp) { -+ ytphy_write_ext(phydev, 0xa000, 0); -+ } -+#endif -+ -+ //printk (KERN_INFO "yzhang..8521 read status call out,link=%d,linkmode=%d\n", phydev->link, link_mode_8521 ); -+ return 0; -+} -+ -+int yt8521_suspend(struct phy_device *phydev) -+{ -+#if !(SYS_WAKEUP_BASED_ON_ETH_PKT) -+ int value; -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ mutex_lock(&phydev->lock); -+#else -+ /* no need lock in 4.19 */ -+#endif -+ -+ ytphy_write_ext(phydev, 0xa000, 0); -+ value = phy_read(phydev, MII_BMCR); -+ phy_write(phydev, MII_BMCR, value | BMCR_PDOWN); -+ -+ ytphy_write_ext(phydev, 0xa000, 2); -+ value = phy_read(phydev, MII_BMCR); -+ phy_write(phydev, MII_BMCR, value | BMCR_PDOWN); -+ -+ ytphy_write_ext(phydev, 0xa000, 0); -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ mutex_unlock(&phydev->lock); -+#else -+ /* no need lock/unlock in 4.19 */ -+#endif -+#endif /*!(SYS_WAKEUP_BASED_ON_ETH_PKT)*/ -+ -+ return 0; -+} -+ -+int yt8521_resume(struct phy_device *phydev) -+{ -+#if !(SYS_WAKEUP_BASED_ON_ETH_PKT) -+ int value; -+ int ret; -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ mutex_lock(&phydev->lock); -+#else -+ /* no need lock/unlock in 4.19 */ -+#endif -+ -+ ytphy_write_ext(phydev, 0xa000, 0); -+ value = phy_read(phydev, MII_BMCR); -+ phy_write(phydev, MII_BMCR, value & ~BMCR_PDOWN); -+ -+ /* disable auto sleep */ -+ value = ytphy_read_ext(phydev, YT8521_EXTREG_SLEEP_CONTROL1); -+ if (value < 0) -+ return value; -+ -+ value &= (~BIT(YT8521_EN_SLEEP_SW_BIT)); -+ ret = ytphy_write_ext(phydev, YT8521_EXTREG_SLEEP_CONTROL1, value); - if (ret < 0) -- goto err_restore_page; -+ return ret; -+ -+ /* enable RXC clock when no wire plug */ -+ value = ytphy_read_ext(phydev, 0xc); -+ if (value < 0) -+ return value; -+ value &= ~(1 << 12); -+ ret = ytphy_write_ext(phydev, 0xc, value); -+ if (ret < 0) -+ return ret; -+ -+ ytphy_write_ext(phydev, 0xa000, 2); -+ value = phy_read(phydev, MII_BMCR); -+ phy_write(phydev, MII_BMCR, value & ~BMCR_PDOWN); -+ -+#if (YT8521_PHY_MODE_CURR != YT8521_PHY_MODE_FIBER) -+ ytphy_write_ext(phydev, 0xa000, 0); -+#endif -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ mutex_unlock(&phydev->lock); -+#else -+ /* no need lock/unlock in 4.19 */ -+#endif -+#endif /*!(SYS_WAKEUP_BASED_ON_ETH_PKT)*/ -+ -+ return 0; -+} -+ -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+#else -+int yt8618_soft_reset(struct phy_device *phydev) -+{ -+ int ret; - -- /* set clock mode to 125mhz */ -- ret = __phy_modify(phydev, YT8511_PAGE, 0, YT8511_CLK_125M); -+ ytphy_write_ext(phydev, 0xa000, 0); -+ ret = genphy_soft_reset(phydev); - if (ret < 0) -- goto err_restore_page; -+ return ret; - -- /* fast ethernet delay is in a separate page */ -- ret = __phy_write(phydev, YT8511_PAGE_SELECT, YT8511_EXT_DELAY_DRIVE); -+ return 0; -+} -+ -+int yt8614_soft_reset(struct phy_device *phydev) -+{ -+ int ret; -+ -+ /* utp */ -+ ytphy_write_ext(phydev, 0xa000, 0); -+ ret = genphy_soft_reset(phydev); - if (ret < 0) -- goto err_restore_page; -+ return ret; -+ -+ /* qsgmii */ -+ ytphy_write_ext(phydev, 0xa000, 2); -+ ret = genphy_soft_reset(phydev); -+ if (ret < 0) { -+ ytphy_write_ext(phydev, 0xa000, 0); //back to utp mode -+ return ret; -+ } -+ -+ /* sgmii */ -+ ytphy_write_ext(phydev, 0xa000, 3); -+ ret = genphy_soft_reset(phydev); -+ if (ret < 0) { -+ ytphy_write_ext(phydev, 0xa000, 0); //back to utp mode -+ return ret; -+ } -+ -+ return 0; -+} -+ -+#endif -+ -+static int yt8618_config_init(struct phy_device *phydev) -+{ -+ int ret; -+ int val; -+ -+ phydev->irq = PHY_POLL; -+ -+ if(0xff == yt_mport_base_phy_addr) -+ /* by default, we think the first phy should be the base phy addr. for mul */ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ { -+ yt_mport_base_phy_addr = phydev->addr; -+ }else if (yt_mport_base_phy_addr > phydev->addr) { -+ printk (KERN_INFO "yzhang..8618 init, phy address mismatch, base=%d, cur=%d\n", yt_mport_base_phy_addr, phydev->addr); -+ } -+#else -+ { -+ yt_mport_base_phy_addr = phydev->mdio.addr; -+ }else if (yt_mport_base_phy_addr > phydev->mdio.addr) { -+ printk (KERN_INFO "yzhang..8618 init, phy address mismatch, base=%d, cur=%d\n", yt_mport_base_phy_addr, phydev->mdio.addr); -+ } -+#endif -+ -+ ytphy_write_ext(phydev, 0xa000, 0); -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ ret = ytphy_config_init(phydev); -+#else -+ ret = genphy_config_init(phydev); -+#endif -+ if (ret < 0) -+ return ret; -+ -+ /* for utp to optimize signal */ -+ ret = ytphy_write_ext(phydev, 0x41, 0x33); -+ if (ret < 0) -+ return ret; -+ ret = ytphy_write_ext(phydev, 0x42, 0x66); -+ if (ret < 0) -+ return ret; -+ ret = ytphy_write_ext(phydev, 0x43, 0xaa); -+ if (ret < 0) -+ return ret; -+ ret = ytphy_write_ext(phydev, 0x44, 0xd0d); -+ if (ret < 0) -+ return ret; -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ if((phydev->addr > yt_mport_base_phy_addr) && ((2 == phydev->addr - yt_mport_base_phy_addr) || (5 == phydev->addr - yt_mport_base_phy_addr))) -+#else -+ if((phydev->mdio.addr > yt_mport_base_phy_addr) && ((2 == phydev->mdio.addr - yt_mport_base_phy_addr) || (5 == phydev->mdio.addr - yt_mport_base_phy_addr))) -+#endif -+ { -+ ret = ytphy_write_ext(phydev, 0x44, 0x2929); -+ if (ret < 0) -+ return ret; -+ } -+ -+ val = phy_read(phydev, MII_BMCR); -+ phy_write(phydev, MII_BMCR, val | BMCR_RESET); -+ -+ printk (KERN_INFO "yt8618_config_init call out.\n"); -+ return ret; -+} -+ -+static int yt8614_config_init(struct phy_device *phydev) -+{ -+ int ret = 0; -+ -+ phydev->irq = PHY_POLL; - -- ret = __phy_modify(phydev, YT8511_PAGE, YT8511_DELAY_FE_TX_EN, fe); -+ if(0xff == yt_mport_base_phy_addr_8614) -+ /* by default, we think the first phy should be the base phy addr. for mul */ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ { -+ yt_mport_base_phy_addr_8614 = (unsigned int)phydev->addr; -+ }else if (yt_mport_base_phy_addr_8614 > (unsigned int)phydev->addr) { -+ printk (KERN_INFO "yzhang..8618 init, phy address mismatch, base=%u, cur=%d\n", yt_mport_base_phy_addr_8614, phydev->addr); -+ } -+#else -+ { -+ yt_mport_base_phy_addr_8614 = (unsigned int)phydev->mdio.addr; -+ }else if (yt_mport_base_phy_addr_8614 > (unsigned int)phydev->mdio.addr) { -+ printk (KERN_INFO "yzhang..8618 init, phy address mismatch, base=%u, cur=%d\n", yt_mport_base_phy_addr_8614, phydev->mdio.addr); -+ } -+#endif -+ return ret; -+} -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+#define yt8614_get_port_from_phydev(phydev) ((0xff == yt_mport_base_phy_addr_8614) && (yt_mport_base_phy_addr_8614 <= (phydev)->addr) ? 0 : (unsigned int)((phydev)->addr) - yt_mport_base_phy_addr_8614) -+#else -+#define yt8614_get_port_from_phydev(phydev) ((0xff == yt_mport_base_phy_addr_8614) && (yt_mport_base_phy_addr_8614 <= (phydev)->mdio.addr) ? 0 : (unsigned int)((phydev)->mdio.addr) - yt_mport_base_phy_addr_8614) -+#endif -+ -+int yt8618_aneg_done (struct phy_device *phydev) -+{ -+ -+ return genphy_aneg_done(phydev); -+} -+ -+int yt8614_aneg_done (struct phy_device *phydev) -+{ -+ int port = yt8614_get_port_from_phydev(phydev); -+ -+ /*it should be used for 8614 fiber*/ -+ if((32 == link_mode_8614[port]) && (SPEED_100 == phydev->speed)) -+ { -+ return 1; -+ } -+ -+ return genphy_aneg_done(phydev); -+} -+ -+static int yt8614_read_status(struct phy_device *phydev) -+{ -+ //int i; -+ int ret; -+ volatile int val, yt8614_fiber_latch_val, yt8614_fiber_curr_val; -+ volatile int link; -+ int link_utp = 0, link_fiber = 0; -+ int port = yt8614_get_port_from_phydev(phydev); -+ -+#if (YT8614_PHY_MODE_CURR != YT8521_PHY_MODE_FIBER) -+ /* switch to utp and reading regs */ -+ ret = ytphy_write_ext(phydev, 0xa000, 0); - if (ret < 0) -- goto err_restore_page; -+ return ret; -+ -+ val = phy_read(phydev, REG_PHY_SPEC_STATUS); -+ if (val < 0) -+ return val; - -- /* leave pll enabled in sleep */ -- ret = __phy_write(phydev, YT8511_PAGE_SELECT, YT8511_EXT_SLEEP_CTRL); -+ link = val & (BIT(YT8521_LINK_STATUS_BIT)); -+ if (link) { -+ link_utp = 1; -+ // here is same as 8521 and re-use the function; -+ yt8521_adjust_status(phydev, val, 1); -+ } else { -+ link_utp = 0; -+ } -+#endif //(YT8614_PHY_MODE_CURR != YT8521_PHY_MODE_FIBER) -+ -+#if (YT8614_PHY_MODE_CURR != YT8521_PHY_MODE_UTP) -+ /* reading Fiber/sgmii */ -+ ret = ytphy_write_ext(phydev, 0xa000, 3); - if (ret < 0) -- goto err_restore_page; -+ return ret; -+ -+ val = phy_read(phydev, REG_PHY_SPEC_STATUS); -+ if (val < 0) -+ return val; -+ -+ //printk (KERN_INFO "yzhang..8614 read fiber status=%04x,macbase=0x%08lx\n", val,(unsigned long)phydev->attached_dev); -+ -+ /* for fiber, from 1000m to 100m, there is not link down from 0x11, and check reg 1 to identify such case */ -+ yt8614_fiber_latch_val = phy_read(phydev, MII_BMSR); -+ yt8614_fiber_curr_val = phy_read(phydev, MII_BMSR); -+ link = val & (BIT(YT8521_LINK_STATUS_BIT)); -+ if((link) && (yt8614_fiber_latch_val != yt8614_fiber_curr_val)) -+ { -+ link = 0; -+ printk (KERN_INFO "yt8614_read_status, fiber link down detect,latch=%04x,curr=%04x\n", yt8614_fiber_latch_val,yt8614_fiber_curr_val); -+ } -+ -+ if (link) { -+ link_fiber = 1; -+ yt8521_adjust_status(phydev, val, 0); -+ link_mode_8614[port] = 32; //fiber mode - -- ret = __phy_modify(phydev, YT8511_PAGE, 0, YT8511_PLLON_SLP); -+ -+ } else { -+ link_fiber = 0; -+ } -+#endif //(YT8521_PHY_MODE_CURR != YT8521_PHY_MODE_UTP) -+ -+ if (link_utp || link_fiber) { -+ phydev->link = 1; -+ } else { -+ phydev->link = 0; -+ link_mode_8614[port] = 0; -+ } -+ -+#if (YT8614_PHY_MODE_CURR != YT8521_PHY_MODE_FIBER) -+ if (link_utp) { -+ ytphy_write_ext(phydev, 0xa000, 0); -+ } -+#endif -+ //printk (KERN_INFO "yt8614_read_status call out,link=%d,linkmode=%d\n", phydev->link, link_mode_8614[port] ); -+ -+ return 0; -+} -+ -+static int yt8618_read_status(struct phy_device *phydev) -+{ -+ int ret; -+ volatile int val; //maybe for 8614 yt8521_fiber_latch_val, yt8521_fiber_curr_val; -+ volatile int link; -+ int link_utp = 0, link_fiber = 0; -+ -+ /* switch to utp and reading regs */ -+ ret = ytphy_write_ext(phydev, 0xa000, 0); - if (ret < 0) -- goto err_restore_page; -+ return ret; -+ -+ val = phy_read(phydev, REG_PHY_SPEC_STATUS); -+ if (val < 0) -+ return val; -+ -+ link = val & (BIT(YT8521_LINK_STATUS_BIT)); -+ if (link) { -+ link_utp = 1; -+ yt8521_adjust_status(phydev, val, 1); -+ } else { -+ link_utp = 0; -+ } -+ -+ if (link_utp || link_fiber) { -+ phydev->link = 1; -+ } else { -+ phydev->link = 0; -+ } -+ -+ return 0; -+} -+ -+int yt8618_suspend(struct phy_device *phydev) -+{ -+#if !(SYS_WAKEUP_BASED_ON_ETH_PKT) -+ int value; -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ mutex_lock(&phydev->lock); -+#else -+ /* no need lock in 4.19 */ -+#endif -+ -+ ytphy_write_ext(phydev, 0xa000, 0); -+ value = phy_read(phydev, MII_BMCR); -+ phy_write(phydev, MII_BMCR, value | BMCR_PDOWN); -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ mutex_unlock(&phydev->lock); -+#else -+ /* no need lock/unlock in 4.19 */ -+#endif -+#endif /*!(SYS_WAKEUP_BASED_ON_ETH_PKT)*/ -+ -+ return 0; -+} - --err_restore_page: -- return phy_restore_page(phydev, oldpage, ret); -+int yt8618_resume(struct phy_device *phydev) -+{ -+#if !(SYS_WAKEUP_BASED_ON_ETH_PKT) -+ int value; -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ mutex_lock(&phydev->lock); -+#else -+ /* no need lock/unlock in 4.19 */ -+#endif -+ -+ ytphy_write_ext(phydev, 0xa000, 0); -+ value = phy_read(phydev, MII_BMCR); -+ phy_write(phydev, MII_BMCR, value & ~BMCR_PDOWN); -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ mutex_unlock(&phydev->lock); -+#else -+ /* no need lock/unlock in 4.19 */ -+#endif -+#endif /*!(SYS_WAKEUP_BASED_ON_ETH_PKT)*/ -+ -+ return 0; -+} -+ -+int yt8614_suspend(struct phy_device *phydev) -+{ -+#if !(SYS_WAKEUP_BASED_ON_ETH_PKT) -+ int value; -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ mutex_lock(&phydev->lock); -+#else -+ /* no need lock in 4.19 */ -+#endif -+ -+ ytphy_write_ext(phydev, 0xa000, 0); -+ value = phy_read(phydev, MII_BMCR); -+ phy_write(phydev, MII_BMCR, value | BMCR_PDOWN); -+ -+ ytphy_write_ext(phydev, 0xa000, 3); -+ value = phy_read(phydev, MII_BMCR); -+ phy_write(phydev, MII_BMCR, value | BMCR_PDOWN); -+ -+ ytphy_write_ext(phydev, 0xa000, 0); -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ mutex_unlock(&phydev->lock); -+#else -+ /* no need lock/unlock in 4.19 */ -+#endif -+#endif /*!(SYS_WAKEUP_BASED_ON_ETH_PKT)*/ -+ -+ return 0; - } - --static struct phy_driver motorcomm_phy_drvs[] = { -+int yt8614_resume(struct phy_device *phydev) -+{ -+#if !(SYS_WAKEUP_BASED_ON_ETH_PKT) -+ int value; -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ mutex_lock(&phydev->lock); -+#else -+ /* no need lock/unlock in 4.19 */ -+#endif -+ -+ ytphy_write_ext(phydev, 0xa000, 0); -+ value = phy_read(phydev, MII_BMCR); -+ phy_write(phydev, MII_BMCR, value & ~BMCR_PDOWN); -+ -+ ytphy_write_ext(phydev, 0xa000, 3); -+ value = phy_read(phydev, MII_BMCR); -+ phy_write(phydev, MII_BMCR, value & ~BMCR_PDOWN); -+ -+ ytphy_write_ext(phydev, 0xa000, 0); -+ -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ mutex_unlock(&phydev->lock); -+#else -+ /* no need lock/unlock in 4.19 */ -+#endif -+#endif /*!(SYS_WAKEUP_BASED_ON_ETH_PKT)*/ -+ -+ return 0; -+} -+ -+ -+static struct phy_driver ytphy_drvs[] = { - { -- PHY_ID_MATCH_EXACT(PHY_ID_YT8511), -+ .phy_id = PHY_ID_YT8010, -+ .name = "YT8010 Automotive Ethernet", -+ .phy_id_mask = MOTORCOMM_PHY_ID_MASK, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0) ) -+ .features = PHY_BASIC_FEATURES, -+ .flags = PHY_HAS_INTERRUPT, -+#endif -+ .config_aneg = yt8010_config_aneg, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ .config_init = ytphy_config_init, -+#else -+ .config_init = genphy_config_init, -+#endif -+ .read_status = genphy_read_status, -+ }, { -+ .phy_id = PHY_ID_YT8510, -+ .name = "YT8510 100/10Mb Ethernet", -+ .phy_id_mask = MOTORCOMM_PHY_ID_MASK, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0) ) -+ .features = PHY_BASIC_FEATURES, -+ .flags = PHY_HAS_INTERRUPT, -+#endif -+ .config_aneg = genphy_config_aneg, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ .config_init = ytphy_config_init, -+#else -+ .config_init = genphy_config_init, -+#endif -+ .read_status = genphy_read_status, -+ }, { -+ .phy_id = PHY_ID_YT8511, - .name = "YT8511 Gigabit Ethernet", -+ .phy_id_mask = MOTORCOMM_PHY_ID_MASK, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0) ) -+ .features = PHY_GBIT_FEATURES, -+ .flags = PHY_HAS_INTERRUPT, -+#endif -+ .config_aneg = genphy_config_aneg, -+#if GMAC_CLOCK_INPUT_NEEDED - .config_init = yt8511_config_init, -+#else -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ .config_init = ytphy_config_init, -+#else -+ .config_init = genphy_config_init, -+#endif -+#endif -+ .read_status = genphy_read_status, -+ .suspend = genphy_suspend, -+ .resume = genphy_resume, -+ }, { -+ .phy_id = PHY_ID_YT8512, -+ .name = "YT8512 Ethernet", -+ .phy_id_mask = MOTORCOMM_PHY_ID_MASK, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0) ) -+ .features = PHY_BASIC_FEATURES, -+ .flags = PHY_HAS_INTERRUPT, -+#endif -+ .config_aneg = genphy_config_aneg, -+ .config_init = yt8512_config_init, -+ .read_status = yt8512_read_status, - .suspend = genphy_suspend, - .resume = genphy_resume, -- .read_page = yt8511_read_page, -- .write_page = yt8511_write_page, -- }, -+ }, { -+ .phy_id = PHY_ID_YT8512B, -+ .name = "YT8512B Ethernet", -+ .phy_id_mask = MOTORCOMM_PHY_ID_MASK, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0) ) -+ .features = PHY_BASIC_FEATURES, -+ .flags = PHY_HAS_INTERRUPT, -+#endif -+ .config_aneg = genphy_config_aneg, -+ .config_init = yt8512_config_init, -+ .read_status = yt8512_read_status, -+ .suspend = genphy_suspend, -+ .resume = genphy_resume, -+ }, { -+ .phy_id = PHY_ID_YT8521, -+ .name = "YT8521 Ethernet", -+ .phy_id_mask = MOTORCOMM_PHY_ID_MASK, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0) ) -+ .features = PHY_BASIC_FEATURES | PHY_GBIT_FEATURES, -+#endif -+ .flags = PHY_POLL, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+#else -+ .soft_reset = yt8521_soft_reset, -+#endif -+ .config_aneg = genphy_config_aneg, -+#if ( LINUX_VERSION_CODE > KERNEL_VERSION(3,11,0) ) -+ .aneg_done = yt8521_aneg_done, -+#endif -+ .config_init = yt8521_config_init, -+ .read_status = yt8521_read_status, -+ .suspend = yt8521_suspend, -+ .resume = yt8521_resume, -+#if (YTPHY_ENABLE_WOL) -+ .get_wol = &ytphy_get_wol, -+ .set_wol = &ytphy_set_wol, -+#endif -+ },{ -+ /* same as 8521 */ -+ .phy_id = PHY_ID_YT8531S, -+ .name = "YT8531S Ethernet", -+ .phy_id_mask = MOTORCOMM_PHY_ID_MASK, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0) ) -+ .features = PHY_BASIC_FEATURES | PHY_GBIT_FEATURES, -+#endif -+ .flags = PHY_POLL, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+#else -+ .soft_reset = yt8521_soft_reset, -+#endif -+ .config_aneg = genphy_config_aneg, -+#if ( LINUX_VERSION_CODE > KERNEL_VERSION(3,11,0) ) -+ .aneg_done = yt8521_aneg_done, -+#endif -+ .config_init = yt8521_config_init, -+ .read_status = yt8521_read_status, -+ .suspend = yt8521_suspend, -+ .resume = yt8521_resume, -+#if (YTPHY_ENABLE_WOL) -+ .get_wol = &ytphy_get_wol, -+ .set_wol = &ytphy_set_wol, -+#endif -+ }, { -+ /* same as 8511 */ -+ .phy_id = PHY_ID_YT8531, -+ .name = "YT8531 Gigabit Ethernet", -+ .phy_id_mask = MOTORCOMM_PHY_ID_MASK, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0) ) -+ .features = PHY_BASIC_FEATURES | PHY_GBIT_FEATURES, -+ .flags = PHY_HAS_INTERRUPT, -+#endif -+ .config_aneg = genphy_config_aneg, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+ .config_init = ytphy_config_init, -+#else -+ .config_init = genphy_config_init, -+#endif -+ .read_status = genphy_read_status, -+ .suspend = genphy_suspend, -+ .resume = genphy_resume, -+#if (YTPHY_ENABLE_WOL) -+ .get_wol = &ytphy_get_wol, -+ .set_wol = &ytphy_set_wol, -+#endif -+ }, { -+ .phy_id = PHY_ID_YT8618, -+ .name = "YT8618 Ethernet", -+ .phy_id_mask = MOTORCOMM_MPHY_ID_MASK, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0) ) -+ .features = PHY_BASIC_FEATURES | PHY_GBIT_FEATURES, -+#endif -+ .flags = PHY_POLL, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+#else -+ .soft_reset = yt8618_soft_reset, -+#endif -+ .config_aneg = genphy_config_aneg, -+#if ( LINUX_VERSION_CODE > KERNEL_VERSION(3,11,0) ) -+ .aneg_done = yt8618_aneg_done, -+#endif -+ .config_init = yt8618_config_init, -+ .read_status = yt8618_read_status, -+ .suspend = yt8618_suspend, -+ .resume = yt8618_resume, -+ }, { -+ .phy_id = PHY_ID_YT8614, -+ .name = "YT8614 Ethernet", -+ .phy_id_mask = MOTORCOMM_MPHY_ID_MASK_8614, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0) ) -+ .features = PHY_BASIC_FEATURES | PHY_GBIT_FEATURES, -+#endif -+ .flags = PHY_POLL, -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+#else -+ .soft_reset = yt8614_soft_reset, -+#endif -+ .config_aneg = genphy_config_aneg, -+#if ( LINUX_VERSION_CODE > KERNEL_VERSION(3,11,0) ) -+ .aneg_done = yt8614_aneg_done, -+#endif -+ .config_init = yt8614_config_init, -+ .read_status = yt8614_read_status, -+ .suspend = yt8614_suspend, -+ .resume = yt8614_resume, -+ }, - }; - --module_phy_driver(motorcomm_phy_drvs); -+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0) ) -+static int ytphy_drivers_register(struct phy_driver* phy_drvs, int size) -+{ -+ int i, j; -+ int ret; -+ -+ for (i = 0; i < size; i++) { -+ ret = phy_driver_register(&phy_drvs[i]); -+ if (ret) -+ goto err; -+ } -+ -+ return 0; -+ -+err: -+ for (j = 0; j < i; j++) -+ phy_driver_unregister(&phy_drvs[j]); -+ -+ return ret; -+} -+ -+static void ytphy_drivers_unregister(struct phy_driver* phy_drvs, int size) -+{ -+ int i; -+ -+ for (i = 0; i < size; i++) { -+ phy_driver_unregister(&phy_drvs[i]); -+ } -+} -+ -+static int __init ytphy_init(void) -+{ -+ printk("motorcomm phy register\n"); -+ return ytphy_drivers_register(ytphy_drvs, ARRAY_SIZE(ytphy_drvs)); -+} -+ -+static void __exit ytphy_exit(void) -+{ -+ printk("motorcomm phy unregister\n"); -+ ytphy_drivers_unregister(ytphy_drvs, ARRAY_SIZE(ytphy_drvs)); -+} -+ -+module_init(ytphy_init); -+module_exit(ytphy_exit); -+#else -+/* for linux 4.x */ -+module_phy_driver(ytphy_drvs); -+#endif - - MODULE_DESCRIPTION("Motorcomm PHY driver"); --MODULE_AUTHOR("Peter Geis"); -+MODULE_AUTHOR("Leilei Zhao"); - MODULE_LICENSE("GPL"); - --static const struct mdio_device_id __maybe_unused motorcomm_tbl[] = { -- { PHY_ID_MATCH_EXACT(PHY_ID_YT8511) }, -- { /* sentinal */ } -+static struct mdio_device_id __maybe_unused motorcomm_tbl[] = { -+ { PHY_ID_YT8010, MOTORCOMM_PHY_ID_MASK }, -+ { PHY_ID_YT8510, MOTORCOMM_PHY_ID_MASK }, -+ { PHY_ID_YT8511, MOTORCOMM_PHY_ID_MASK }, -+ { PHY_ID_YT8512, MOTORCOMM_PHY_ID_MASK }, -+ { PHY_ID_YT8512B, MOTORCOMM_PHY_ID_MASK }, -+ { PHY_ID_YT8521, MOTORCOMM_PHY_ID_MASK }, -+ { PHY_ID_YT8531S, MOTORCOMM_PHY_ID_8531_MASK }, -+ { PHY_ID_YT8531, MOTORCOMM_PHY_ID_8531_MASK }, -+ { PHY_ID_YT8618, MOTORCOMM_MPHY_ID_MASK }, -+ { PHY_ID_YT8614, MOTORCOMM_MPHY_ID_MASK_8614 }, -+ { } - }; - - MODULE_DEVICE_TABLE(mdio, motorcomm_tbl); -+ -+ -diff --git a/drivers/net/phy/yt8614-phy.h b/drivers/net/phy/yt8614-phy.h -new file mode 100644 -index 000000000..56a398338 ---- /dev/null -+++ b/drivers/net/phy/yt8614-phy.h -@@ -0,0 +1,491 @@ -+#ifndef _PHY_H_ -+#define _PHY_H_ -+ -+ -+/* configuration for driver */ -+ -+#define YT8614_MAX_LPORT_ID 3 -+ -+#define YT8614_PHY_MODE_FIBER 1 //fiber mode only -+#define YT8614_PHY_MODE_UTP 2 //utp mode only -+#define YT8614_PHY_MODE_POLL 3 //fiber and utp, poll mode -+ -+/* please make choice according to system design -+ * for Fiber only system, please define YT8614_PHY_MODE_CURR 1 -+ * for UTP only system, please define YT8614_PHY_MODE_CURR 2 -+ * for combo system, please define YT8614_PHY_MODE_CURR 3 -+ */ -+#define YT8614_PHY_MODE_CURR 3 -+ -+ -+ -+/* pls dont modify below lines */ -+ -+#define PHY_ID_YT8614 0x4F51E899 //serdes -+#define MOTORCOMM_MPHY_ID_MASK_8614 0xffffffff -+ -+#ifndef BOOL -+#define BOOL unsigned int -+#endif -+ -+#ifndef FALSE -+#define FALSE 0 -+#endif -+ -+#ifndef TRUE -+#define TRUE 1 -+#endif -+ -+#ifndef SPEED_1000M -+#define SPEED_1000M 2 -+#endif -+#ifndef SPEED_100M -+#define SPEED_100M 1 -+#endif -+#ifndef SPEED_10M -+#define SPEED_10M 0 -+#endif -+ -+#ifndef SPEED_UNKNOWN -+#define SPEED_UNKNOWN 0xffff -+#endif -+ -+#ifndef DUPLEX_FULL -+#define DUPLEX_FULL 1 -+#endif -+#ifndef DUPLEX_HALF -+#define DUPLEX_HALF 0 -+#endif -+ -+#ifndef BIT -+#define BIT(n) (0x1<<(n)) -+#endif -+#ifndef s32 -+typedef int s32; -+typedef unsigned int u32; -+typedef unsigned short u16; -+typedef unsigned char u8; -+#endif -+ -+#ifndef REG_PHY_SPEC_STATUS -+#define REG_PHY_SPEC_STATUS 0x11 -+#define REG_DEBUG_ADDR_OFFSET 0x1e -+#define REG_DEBUG_DATA 0x1f -+#endif -+ -+/**********YT8614************************************************/ -+ -+#define YT8614_SMI_SEL_PHY 0x0 -+#define YT8614_SMI_SEL_SDS_QSGMII 0x02 -+#define YT8614_SMI_SEL_SDS_SGMII 0x03 -+ -+/* yt8614 register type */ -+#define YT8614_TYPE_COMMON 0x01 -+#define YT8614_TYPE_UTP_MII 0x02 -+#define YT8614_TYPE_UTP_EXT 0x03 -+#define YT8614_TYPE_LDS_MII 0x04 -+#define YT8614_TYPE_UTP_MMD 0x05 -+#define YT8614_TYPE_SDS_QSGMII_MII 0x06 -+#define YT8614_TYPE_SDS_SGMII_MII 0x07 -+#define YT8614_TYPE_SDS_QSGMII_EXT 0x08 -+#define YT8614_TYPE_SDS_SGMII_EXT 0x09 -+ -+/* YT8614 extended common register */ -+#define YT8614_REG_COM_SMI_MUX 0xA000 -+#define YT8614_REG_COM_SLED_CFG0 0xA001 -+#define YT8614_REG_COM_PHY_ID 0xA002 -+#define YT8614_REG_COM_CHIP_VER 0xA003 -+#define YT8614_REG_COM_SLED_CFG 0xA004 -+#define YT8614_REG_COM_MODE_CHG_RESET 0xA005 -+#define YT8614_REG_COM_SYNCE0_CFG 0xA006 -+#define YT8614_REG_COM_CHIP_MODE 0xA007 -+ -+#define YT8614_REG_COM_HIDE_SPEED 0xA009 -+ -+#define YT8614_REG_COM_SYNCE1_CFG 0xA00E -+ -+#define YT8614_REG_COM_HIDE_FIBER_MODE 0xA019 -+ -+ -+#define YT8614_REG_COM_HIDE_SEL1 0xA054 -+#define YT8614_REG_COM_HIDE_LED_CFG2 0xB8 -+#define YT8614_REG_COM_HIDE_LED_CFG3 0xB9 -+#define YT8614_REG_COM_HIDE_LED_CFG5 0xBB -+ -+#define YT8614_REG_COM_HIDE_LED_CFG4 0xBA //not used currently -+ -+#if 0 -+#define YT8614_REG_COM_HIDE_LED12_CFG 0xA060 //not used currently -+#define YT8614_REG_COM_HIDE_LED13_CFG 0xA061 -+#define YT8614_REG_COM_HIDE_LED14_CFG 0xA062 -+#define YT8614_REG_COM_HIDE_LED15_CFG 0xA063 -+#define YT8614_REG_COM_HIDE_LED16_CFG 0xA064 -+#define YT8614_REG_COM_HIDE_LED17_CFG 0xA065 -+#define YT8614_REG_COM_HIDE_LED18_CFG 0xA066 -+#define YT8614_REG_COM_HIDE_LED19_CFG 0xA067 -+#define YT8614_REG_COM_HIDE_LED20_CFG 0xA068 -+#define YT8614_REG_COM_HIDE_LED21_CFG 0xA069 -+#define YT8614_REG_COM_HIDE_LED22_CFG 0xA06A -+#define YT8614_REG_COM_HIDE_LED23_CFG 0xA06B -+#define YT8614_REG_COM_HIDE_LED24_CFG 0xA06C -+#define YT8614_REG_COM_HIDE_LED25_CFG 0xA06D -+#define YT8614_REG_COM_HIDE_LED26_CFG 0xA06E -+#define YT8614_REG_COM_HIDE_LED27_CFG 0xA06F -+#endif -+ -+#define YT8614_REG_COM_HIDE_LED28_CFG 0xA070 -+#define YT8614_REG_COM_HIDE_LED29_CFG 0xA071 -+#define YT8614_REG_COM_HIDE_LED30_CFG 0xA072 -+#define YT8614_REG_COM_HIDE_LED31_CFG 0xA073 -+#define YT8614_REG_COM_HIDE_LED32_CFG 0xA074 -+#define YT8614_REG_COM_HIDE_LED33_CFG 0xA075 -+#define YT8614_REG_COM_HIDE_LED34_CFG 0xA076 -+#define YT8614_REG_COM_HIDE_LED35_CFG 0xA077 -+ -+#define YT8614_REG_COM_PKG_CFG0 0xA0A0 -+#define YT8614_REG_COM_PKG_CFG1 0xA0A1 -+#define YT8614_REG_COM_PKG_CFG2 0xA0A2 -+#define YT8614_REG_COM_PKG_RX_VALID0 0xA0A3 -+#define YT8614_REG_COM_PKG_RX_VALID1 0xA0A4 -+#define YT8614_REG_COM_PKG_RX_OS0 0xA0A5 -+#define YT8614_REG_COM_PKG_RX_OS1 0xA0A6 -+#define YT8614_REG_COM_PKG_RX_US0 0xA0A7 -+#define YT8614_REG_COM_PKG_RX_US1 0xA0A8 -+#define YT8614_REG_COM_PKG_RX_ERR 0xA0A9 -+#define YT8614_REG_COM_PKG_RX_OS_BAD 0xA0AA -+#define YT8614_REG_COM_PKG_RX_FRAG 0xA0AB -+#define YT8614_REG_COM_PKG_RX_NOSFD 0xA0AC -+#define YT8614_REG_COM_PKG_TX_VALID0 0xA0AD -+#define YT8614_REG_COM_PKG_TX_VALID1 0xA0AE -+#define YT8614_REG_COM_PKG_TX_OS0 0xA0AF -+ -+#define YT8614_REG_COM_PKG_TX_OS1 0xA0B0 -+#define YT8614_REG_COM_PKG_TX_US0 0xA0B1 -+#define YT8614_REG_COM_PKG_TX_US1 0xA0B2 -+#define YT8614_REG_COM_PKG_TX_ERR 0xA0B3 -+#define YT8614_REG_COM_PKG_TX_OS_BAD 0xA0B4 -+#define YT8614_REG_COM_PKG_TX_FRAG 0xA0B5 -+#define YT8614_REG_COM_PKG_TX_NOSFD 0xA0B6 -+#define YT8614_REG_COM_PKG_CFG3 0xA0B7 -+#define YT8614_REG_COM_PKG_AZ_CFG 0xA0B8 -+#define YT8614_REG_COM_PKG_DA_SA_CFG3 0xA0B9 -+ -+#define YT8614_REG_COM_MANU_HW_RESET 0xA0C0 -+ -+/* YT8614 UTP MII register: same as generic phy register definitions */ -+#define REG_MII_BMCR 0x00 /* Basic mode control register */ -+#define REG_MII_BMSR 0x01 /* Basic mode status register */ -+#define REG_MII_PHYSID1 0x02 /* PHYS ID 1 */ -+#define REG_MII_PHYSID2 0x03 /* PHYS ID 2 */ -+#define REG_MII_ADVERTISE 0x04 /* Advertisement control reg */ -+#define REG_MII_LPA 0x05 /* Link partner ability reg */ -+#define REG_MII_EXPANSION 0x06 /* Expansion register */ -+#define REG_MII_NEXT_PAGE 0x07 /* Next page register */ -+#define REG_MII_LPR_NEXT_PAGE 0x08 /* LPR next page register */ -+#define REG_MII_CTRL1000 0x09 /* 1000BASE-T control */ -+#define REG_MII_STAT1000 0x0A /* 1000BASE-T status */ -+ -+#define REG_MII_MMD_CTRL 0x0D /* MMD access control register */ -+#define REG_MII_MMD_DATA 0x0E /* MMD access data register */ -+ -+#define REG_MII_ESTATUS 0x0F /* Extended Status */ -+#define REG_MII_SPEC_CTRL 0x10 /* PHY specific func control */ -+#define REG_MII_SPEC_STATUS 0x11 /* PHY specific status */ -+#define REG_MII_INT_MASK 0x12 /* Interrupt mask register */ -+#define REG_MII_INT_STATUS 0x13 /* Interrupt status register */ -+#define REG_MII_DOWNG_CTRL 0x14 /* Speed auto downgrade control*/ -+#define REG_MII_RERRCOUNTER 0x15 /* Receive error counter */ -+ -+#define REG_MII_EXT_ADDR 0x1E /* Extended reg's address */ -+#define REG_MII_EXT_DATA 0x1F /* Extended reg's date */ -+ -+#ifndef MII_BMSR -+#define MII_BMSR REG_MII_BMSR -+#endif -+ -+#ifndef YT8614_SPEED_MODE_BIT -+#define YT8614_SPEED_MODE 0xc000 -+#define YT8614_DUPLEX 0x2000 -+#define YT8614_SPEED_MODE_BIT 14 -+#define YT8614_DUPLEX_BIT 13 -+#define YT8614_LINK_STATUS_BIT 10 -+ -+#endif -+ -+#define YT8614_REG_COM_HIDE_SPEED_CMB_PRI 0x2000 -+ -+/* YT8614 UTP MMD register */ -+#define YT8614_REG_UTP_MMD_CTRL1 0x00 /* PCS control 1 register */ -+#define YT8614_REG_UTP_MMD_STATUS1 0x01 /* PCS status 1 register */ -+#define YT8614_REG_UTP_MMD_EEE_CTRL 0x14 /* EEE control and capability */ -+#define YT8614_REG_UTP_MMD_EEE_WK_ERR_CNT 0x16 /* EEE wake error counter */ -+#define YT8614_REG_UTP_MMD_EEE_LOCAL_ABI 0x3C /* local device EEE ability */ -+#define YT8614_REG_UTP_MMD_EEE_LP_ABI 0x3D /* link partner EEE ability */ -+#define YT8614_REG_UTP_MMD_EEE_AUTONEG_RES 0x8000 /* autoneg result of EEE */ -+ -+/* YT8614 UTP EXT register */ -+#define YT8614_REG_UTP_EXT_LPBK 0x0A -+#define YT8614_REG_UTP_EXT_SLEEP_CTRL1 0x27 -+#define YT8614_REG_UTP_EXT_DEBUG_MON1 0x5A -+#define YT8614_REG_UTP_EXT_DEBUG_MON2 0x5B -+#define YT8614_REG_UTP_EXT_DEBUG_MON3 0x5C -+#define YT8614_REG_UTP_EXT_DEBUG_MON4 0x5D -+ -+/* YT8614 SDS(1.25G/5G) MII register: same as YT8521S */ -+#define REG_SDS_BMCR 0x00 /* Basic mode control register */ -+#define REG_SDS_BMSR 0x01 /* Basic mode status register */ -+#define REG_SDS_PHYSID1 0x02 /* PHYS ID 1 */ -+#define REG_SDS_PHYSID2 0x03 /* PHYS ID 2 */ -+#define REG_SDS_ADVERTISE 0x04 /* Advertisement control reg */ -+#define REG_SDS_LPA 0x05 /* Link partner ability reg */ -+#define REG_SDS_EXPANSION 0x06 /* Expansion register */ -+#define REG_SDS_NEXT_PAGE 0x07 /* Next page register */ -+#define REG_SDS_LPR_NEXT_PAGE 0x08 /* LPR next page register */ -+ -+#define REG_SDS_ESTATUS 0x0F /* Extended Status */ -+#define REG_SDS_SPEC_STATUS 0x11 /* SDS specific status */ -+ -+#define REG_SDS_100FX_CFG 0x14 /* 100fx cfg */ -+#define REG_SDS_RERRCOUNTER 0x15 /* Receive error counter */ -+#define REG_SDS_LINT_FAIL_CNT 0x16 /* Lint fail counter mon */ -+ -+/* YT8614 SDS(5G) EXT register */ -+#define YT8614_REG_QSGMII_EXT_ANA_DIG_CFG 0x02 /* sds analog digital interface cfg */ -+#define YT8614_REG_QSGMII_EXT_PRBS_CFG1 0x05 /* sds prbs cfg1 */ -+#define YT8614_REG_QSGMII_EXT_PRBS_CFG2_1 0x06 /* sds prbs cfg2 */ -+#define YT8614_REG_QSGMII_EXT_PRBS_CFG2_2 0x07 /* sds prbs cfg2 */ -+#define YT8614_REG_QSGMII_EXT_PRBS_MON1 0x08 /* sds prbs mon1 */ -+#define YT8614_REG_QSGMII_EXT_PRBS_MON2 0x09 /* sds prbs mon2 */ -+#define YT8614_REG_QSGMII_EXT_PRBS_MON3 0x0A /* sds prbs mon3 */ -+#define YT8614_REG_QSGMII_EXT_PRBS_MON4 0x0B /* sds prbs mon4 */ -+#define YT8614_REG_QSGMII_EXT_PRBS_MON5 0x0C /* sds prbs mon5 */ -+#define YT8614_REG_QSGMII_EXT_ANA_CFG2 0xA1 /* Analog cfg2 */ -+ -+/* YT8614 SDS(1.25G) EXT register */ -+#define YT8614_REG_SGMII_EXT_PRBS_CFG1 0x05 /* sds prbs cfg1 */ -+#define YT8614_REG_SGMII_EXT_PRBS_CFG2 0x06 /* sds prbs cfg2 */ -+#define YT8614_REG_SGMII_EXT_PRBS_MON1 0x08 /* sds prbs mon1 */ -+#define YT8614_REG_SGMII_EXT_PRBS_MON2 0x09 /* sds prbs mon2 */ -+#define YT8614_REG_SGMII_EXT_PRBS_MON3 0x0A /* sds prbs mon3 */ -+#define YT8614_REG_SGMII_EXT_PRBS_MON4 0x0B /* sds prbs mon4 */ -+#define YT8614_REG_SGMII_EXT_PRBS_MON5 0x0C /* sds prbs mon5 */ -+#define YT8614_REG_SGMII_EXT_ANA_CFG2 0xA1 /* Analog cfg2 */ -+#define YT8614_REG_SGMII_EXT_HIDE_AUTO_SEN 0xA5 /* Fiber auto sensing */ -+ -+//////////////////////////////////////////////////////////////////// -+#define YT8614_MMD_DEV_ADDR1 0x1 -+#define YT8614_MMD_DEV_ADDR3 0x3 -+#define YT8614_MMD_DEV_ADDR7 0x7 -+#define YT8614_MMD_DEV_ADDR_NONE 0xFF -+ -+/**********YT8521S************************************************/ -+/* Basic mode control register(0x00) */ -+#define BMCR_RESV 0x003f /* Unused... */ -+#define BMCR_SPEED1000 0x0040 /* MSB of Speed (1000) */ -+#define BMCR_CTST 0x0080 /* Collision test */ -+#define BMCR_FULLDPLX 0x0100 /* Full duplex */ -+#define BMCR_ANRESTART 0x0200 /* Auto negotiation restart */ -+#define BMCR_ISOLATE 0x0400 /* Disconnect DP83840 from MII */ -+#define BMCR_PDOWN 0x0800 /* Powerdown the DP83840 */ -+#define BMCR_ANENABLE 0x1000 /* Enable auto negotiation */ -+#define BMCR_SPEED100 0x2000 /* Select 100Mbps */ -+#define BMCR_LOOPBACK 0x4000 /* TXD loopback bits */ -+#define BMCR_RESET 0x8000 /* Reset the DP83840 */ -+ -+/* Basic mode status register(0x01) */ -+#define BMSR_ERCAP 0x0001 /* Ext-reg capability */ -+#define BMSR_JCD 0x0002 /* Jabber detected */ -+#define BMSR_LSTATUS 0x0004 /* Link status */ -+#define BMSR_ANEGCAPABLE 0x0008 /* Able to do auto-negotiation */ -+#define BMSR_RFAULT 0x0010 /* Remote fault detected */ -+#define BMSR_ANEGCOMPLETE 0x0020 /* Auto-negotiation complete */ -+#define BMSR_RESV 0x00c0 /* Unused... */ -+#define BMSR_ESTATEN 0x0100 /* Extended Status in R15 */ -+#define BMSR_100HALF2 0x0200 /* Can do 100BASE-T2 HDX */ -+#define BMSR_100FULL2 0x0400 /* Can do 100BASE-T2 FDX */ -+#define BMSR_10HALF 0x0800 /* Can do 10mbps, half-duplex */ -+#define BMSR_10FULL 0x1000 /* Can do 10mbps, full-duplex */ -+#define BMSR_100HALF 0x2000 /* Can do 100mbps, half-duplex */ -+#define BMSR_100FULL 0x4000 /* Can do 100mbps, full-duplex */ -+#define BMSR_100BASE4 0x8000 /* Can do 100mbps, 4k packets */ -+ -+/* Advertisement control register(0x04) */ -+#define ADVERTISE_SLCT 0x001f /* Selector bits */ -+#define ADVERTISE_CSMA 0x0001 /* Only selector supported */ -+#define ADVERTISE_10HALF 0x0020 /* Try for 10mbps half-duplex */ -+#define ADVERTISE_1000XFULL 0x0020 /* Try for 1000BASE-X full-duplex */ -+#define ADVERTISE_10FULL 0x0040 /* Try for 10mbps full-duplex */ -+#define ADVERTISE_1000XHALF 0x0040 /* Try for 1000BASE-X half-duplex */ -+#define ADVERTISE_100HALF 0x0080 /* Try for 100mbps half-duplex */ -+#define ADVERTISE_1000XPAUSE 0x0080 /* Try for 1000BASE-X pause */ -+#define ADVERTISE_100FULL 0x0100 /* Try for 100mbps full-duplex */ -+#define ADVERTISE_1000XPSE_ASYM 0x0100 /* Try for 1000BASE-X asym pause */ -+#define ADVERTISE_100BASE4 0x0200 /* Try for 100mbps 4k packets */ -+#define ADVERTISE_PAUSE_CAP 0x0400 /* Try for pause */ -+#define ADVERTISE_PAUSE_ASYM 0x0800 /* Try for asymetric pause */ -+#define ADVERTISE_RESV 0x1000 /* Unused... */ -+#define ADVERTISE_RFAULT 0x2000 /* Say we can detect faults */ -+#define ADVERTISE_LPACK 0x4000 /* Ack link partners response */ -+#define ADVERTISE_NPAGE 0x8000 /* Next page bit */ -+ -+#define ADVERTISE_FULL (ADVERTISE_100FULL | ADVERTISE_10FULL | ADVERTISE_CSMA) -+#define ADVERTISE_ALL (ADVERTISE_10HALF | ADVERTISE_10FULL | \ -+ ADVERTISE_100HALF | ADVERTISE_100FULL) -+ -+/* Link partner ability register(0x05) */ -+#define LPA_SLCT 0x001f /* Same as advertise selector */ -+#define LPA_10HALF 0x0020 /* Can do 10mbps half-duplex */ -+#define LPA_1000XFULL 0x0020 /* Can do 1000BASE-X full-duplex */ -+#define LPA_10FULL 0x0040 /* Can do 10mbps full-duplex */ -+#define LPA_1000XHALF 0x0040 /* Can do 1000BASE-X half-duplex */ -+#define LPA_100HALF 0x0080 /* Can do 100mbps half-duplex */ -+#define LPA_1000XPAUSE 0x0080 /* Can do 1000BASE-X pause */ -+#define LPA_100FULL 0x0100 /* Can do 100mbps full-duplex */ -+#define LPA_1000XPAUSE_ASYM 0x0100 /* Can do 1000BASE-X pause asym */ -+#define LPA_100BASE4 0x0200 /* Can do 100mbps 4k packets */ -+#define LPA_PAUSE_CAP 0x0400 /* Can pause */ -+#define LPA_PAUSE_ASYM 0x0800 /* Can pause asymetrically */ -+#define LPA_RESV 0x1000 /* Unused... */ -+#define LPA_RFAULT 0x2000 /* Link partner faulted */ -+#define LPA_LPACK 0x4000 /* Link partner acked us */ -+#define LPA_NPAGE 0x8000 /* Next page bit */ -+ -+/* 1000BASE-T Control register(0x09) */ -+#define ADVERTISE_1000FULL 0x0200 /* Advertise 1000BASE-T full duplex */ -+#define ADVERTISE_1000HALF 0x0100 /* Advertise 1000BASE-T half duplex */ -+#define CTL1000_AS_MASTER 0x0800 -+#define CTL1000_ENABLE_MASTER 0x1000 -+ -+/* 1000BASE-T Status register(0x0A) */ -+#define LPA_1000LOCALRXOK 0x2000 /* Link partner local receiver status */ -+#define LPA_1000REMRXOK 0x1000 /* Link partner remote receiver status */ -+#define LPA_1000FULL 0x0800 /* Link partner 1000BASE-T full duplex */ -+#define LPA_1000HALF 0x0400 /* Link partner 1000BASE-T half duplex */ -+ -+/**********YT8614************************************************/ -+/* Basic mode control register(0x00) */ -+#define FIBER_BMCR_RESV 0x001f /* b[4:0] Unused... */ -+#define FIBER_BMCR_EN_UNIDIR 0x0020 /* b[5] Valid when bit 0.12 is zero and bit 0.8 is one */ -+#define FIBER_BMCR_SPEED1000 0x0040 /* b[6] MSB of Speed (1000) */ -+#define FIBER_BMCR_CTST 0x0080 /* b[7] Collision test */ -+#define FIBER_BMCR_DUPLEX_MODE 0x0100 /* b[8] Duplex mode */ -+#define FIBER_BMCR_ANRESTART 0x0200 /* b[9] Auto negotiation restart */ -+#define FIBER_BMCR_ISOLATE 0x0400 /* b[10] Isolate phy from RGMII/SGMII/FIBER */ -+#define FIBER_BMCR_PDOWN 0x0800 /* b[11] 1: Power down */ -+#define FIBER_BMCR_ANENABLE 0x1000 /* b[12] Enable auto negotiation */ -+#define FIBER_BMCR_SPEED100 0x2000 /* b[13] LSB of Speed (100) */ -+#define FIBER_BMCR_LOOPBACK 0x4000 /* b[14] Internal loopback control */ -+#define FIBER_BMCR_RESET 0x8000 /* b[15] PHY Software Reset(self-clear) */ -+ -+/* Sds specific status register(0x11) */ -+#define FIBER_SSR_ERCAP 0x0001 /* b[0] realtime syncstatus */ -+#define FIBER_SSR_XMIT 0x000E /* b[3:1] realtime transmit statemachine. -+ 001: Xmit Idle; -+ 010: Xmit Config; -+ 100: Xmit Data. */ -+#define FIBER_SSR_SER_MODE_CFG 0x0030 /* b[5:4] realtime serdes working mode. -+ 00: SG_MAC; -+ 01: SG_PHY; -+ 10: FIB_1000; -+ 11: FIB_100. */ -+#define FIBER_SSR_EN_FLOWCTRL_TX 0x0040 /* b[6] realtime en_flowctrl_tx */ -+#define FIBER_SSR_EN_FLOWCTRL_RX 0x0080 /* b[7] realtime en_flowctrl_rx */ -+#define FIBER_SSR_DUPLEX_ERROR 0x0100 /* b[8] realtime deplex error */ -+#define FIBER_SSR_RX_LPI_ACTIVE 0x0200 /* b[9] rx lpi is active */ -+#define FIBER_SSR_LSTATUS 0x0400 /* b[10] Link status real-time */ -+#define FIBER_SSR_PAUSE 0x1800 /* b[12:11] Pause to mac */ -+#define FIBER_SSR_DUPLEX 0x2000 /* b[13] This status bit is valid only when bit10 is 1. -+ 1: full duplex -+ 0: half duplex */ -+#define FIBER_SSR_SPEED_MODE 0xC000 /* b[15:14] These status bits are valid only when bit10 is 1. -+ 10---1000M -+ 01---100M */ -+ -+/* SLED cfg0 (ext 0xA001) */ -+#define FIBER_SLED_CFG0_EN_CTRL 0x00FF /* b[7:0] Control to enable the eight ports' SLED */ -+#define FIBER_SLED_CFG0_BIT_MASK 0x0700 /* b[10:8] 1: enable the pin output */ -+#define FIBER_SLED_CFG0_ACT_LOW 0x0800 /* b[11] control SLED's polarity. 1: active low; 0: active high */ -+#define FIBER_SLED_CFG0_MANU_ST 0x7000 /* b[14:12] SLEDs' manul status, corresponding to each port's 3 SLEDs */ -+#define FIBER_SLED_CFG0_MANU_EN 0x8000 /* b[15] to control serial LEDs status manually */ -+ -+/**********YT8614************************************************/ -+/* Fiber auto sensing(sgmii ext 0xA5) */ -+#define FIBER_AUTO_SEN_ENABLE 0x8000 /* b[15] Enable fiber auto sensing */ -+ -+/* Fiber force speed(common ext 0xA009) */ -+#define FIBER_FORCE_1000M 0x0001 /* b[0] 1:1000BX 0:100FX */ -+ -+#ifndef NULL -+#define NULL 0 -+#endif -+ -+/* errno */ -+enum ytphy_8614_errno_e -+{ -+ SYS_E_NONE, -+ SYS_E_PARAM, -+ SYS_E_MAX -+}; -+ -+/* errno */ -+enum ytphy_8614_combo_speed_e -+{ -+ YT8614_COMBO_FIBER_1000M, -+ YT8614_COMBO_FIBER_100M, -+ YT8614_COMBO_UTP_ONLY, -+ YT8614_COMBO_SPEED_MAX -+}; -+ -+/* definition for porting */ -+/* phy registers access */ -+typedef struct -+{ -+ u16 reg; /* the offset of the phy internal address */ -+ u16 val; /* the value of the register */ -+ u8 regType; /* register type */ -+} phy_data_s; -+ -+/* for porting use. -+ * pls over-write member function read/write for mdio access -+ */ -+typedef struct phy_info_str -+{ -+#if 0 -+ struct phy_device *phydev; -+ int mdio_base; -+#endif -+ unsigned int lport; -+ unsigned int bus_id; -+ unsigned int phy_addr; -+ -+ s32 (*read)(struct phy_info_str *info, phy_data_s *param); -+ s32 (*write)(struct phy_info_str *info, phy_data_s *param); -+}phy_info_s; -+ -+/* get phy access method */ -+s32 yt8614_read_reg(struct phy_info_str *info, phy_data_s *param); -+s32 yt8614_write_reg(struct phy_info_str *info, phy_data_s *param); -+s32 yt8614_phy_soft_reset(u32 lport); -+s32 yt8614_phy_init(u32 lport); -+s32 yt8614_fiber_enable(u32 lport, BOOL enable); -+s32 yt8614_utp_enable(u32 lport, BOOL enable); -+s32 yt8614_fiber_unidirection_set(u32 lport, int speed, BOOL enable); -+s32 yt8614_fiber_autosensing_set(u32 lport, BOOL enable); -+s32 yt8614_fiber_speed_set(u32 lport, int fiber_speed); -+s32 yt8614_qsgmii_autoneg_set(u32 lport, BOOL enable); -+s32 yt8614_sgmii_autoneg_set(u32 lport, BOOL enable); -+s32 yt8614_qsgmii_sgmii_link_status_get(u32 lport, BOOL *enable, BOOL if_qsgmii); -+int yt8614_combo_media_priority_set (u32 lport, int fiber); -+int yt8614_combo_media_priority_get (u32 lport, int *fiber); -+s32 yt8614_utp_autoneg_set(u32 lport, BOOL enable); -+s32 yt8614_utp_autoneg_get(u32 lport, BOOL *enable); -+s32 yt8614_utp_autoneg_ability_set(u32 lport, unsigned int cap_mask); -+s32 yt8614_utp_autoneg_ability_get(u32 lport, unsigned int *cap_mask); -+s32 yt8614_utp_force_duplex_set(u32 lport, BOOL full); -+s32 yt8614_utp_force_duplex_get(u32 lport, BOOL *full); -+s32 yt8614_utp_force_speed_set(u32 lport, unsigned int speed); -+s32 yt8614_utp_force_speed_get(u32 lport, unsigned int *speed); -+int yt8614_autoneg_done_get (u32 lport, int speed, int *aneg); -+int yt8614_media_status_get(u32 lport, int* speed, int* duplex, int* ret_link, int *media); -+ -+#endif -diff --git a/include/linux/motorcomm_phy.h b/include/linux/motorcomm_phy.h -new file mode 100644 -index 000000000..9e01fc205 ---- /dev/null -+++ b/include/linux/motorcomm_phy.h -@@ -0,0 +1,119 @@ -+/* -+ * include/linux/motorcomm_phy.h -+ * -+ * Motorcomm PHY IDs -+ * -+ * 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. -+ * -+ */ -+ -+#ifndef _MOTORCOMM_PHY_H -+#define _MOTORCOMM_PHY_H -+ -+#define MOTORCOMM_PHY_ID_MASK 0x00000fff -+#define MOTORCOMM_PHY_ID_8531_MASK 0xffffffff -+#define MOTORCOMM_MPHY_ID_MASK 0x0000ffff -+ -+#define PHY_ID_YT8010 0x00000309 -+#define PHY_ID_YT8510 0x00000109 -+#define PHY_ID_YT8511 0x0000010a -+#define PHY_ID_YT8512 0x00000118 -+#define PHY_ID_YT8512B 0x00000128 -+#define PHY_ID_YT8521 0x0000011a -+#define PHY_ID_YT8531S 0x4f51e91a -+#define PHY_ID_YT8531 0x4f51e91b -+//#define PHY_ID_YT8614 0x0000e899 -+#define PHY_ID_YT8618 0x0000e889 -+ -+#define REG_PHY_SPEC_STATUS 0x11 -+#define REG_DEBUG_ADDR_OFFSET 0x1e -+#define REG_DEBUG_DATA 0x1f -+ -+#define YT8512_EXTREG_AFE_PLL 0x50 -+#define YT8512_EXTREG_EXTEND_COMBO 0x4000 -+#define YT8512_EXTREG_LED0 0x40c0 -+#define YT8512_EXTREG_LED1 0x40c3 -+ -+#define YT8512_EXTREG_SLEEP_CONTROL1 0x2027 -+ -+#define YT_SOFTWARE_RESET 0x8000 -+ -+#define YT8512_CONFIG_PLL_REFCLK_SEL_EN 0x0040 -+#define YT8512_CONTROL1_RMII_EN 0x0001 -+#define YT8512_LED0_ACT_BLK_IND 0x1000 -+#define YT8512_LED0_DIS_LED_AN_TRY 0x0001 -+#define YT8512_LED0_BT_BLK_EN 0x0002 -+#define YT8512_LED0_HT_BLK_EN 0x0004 -+#define YT8512_LED0_COL_BLK_EN 0x0008 -+#define YT8512_LED0_BT_ON_EN 0x0010 -+#define YT8512_LED1_BT_ON_EN 0x0010 -+#define YT8512_LED1_TXACT_BLK_EN 0x0100 -+#define YT8512_LED1_RXACT_BLK_EN 0x0200 -+#define YT8512_SPEED_MODE 0xc000 -+#define YT8512_DUPLEX 0x2000 -+ -+#define YT8512_SPEED_MODE_BIT 14 -+#define YT8512_DUPLEX_BIT 13 -+#define YT8512_EN_SLEEP_SW_BIT 15 -+ -+#define YT8521_EXTREG_SLEEP_CONTROL1 0x27 -+#define YT8521_EN_SLEEP_SW_BIT 15 -+ -+#define YT8521_SPEED_MODE 0xc000 -+#define YT8521_DUPLEX 0x2000 -+#define YT8521_SPEED_MODE_BIT 14 -+#define YT8521_DUPLEX_BIT 13 -+#define YT8521_LINK_STATUS_BIT 10 -+ -+/* based on yt8521 wol config register */ -+#define YTPHY_UTP_INTR_REG 0x12 -+/* WOL Event Interrupt Enable */ -+#define YTPHY_WOL_INTR BIT(6) -+ -+/* Magic Packet MAC address registers */ -+#define YTPHY_MAGIC_PACKET_MAC_ADDR2 0xa007 -+#define YTPHY_MAGIC_PACKET_MAC_ADDR1 0xa008 -+#define YTPHY_MAGIC_PACKET_MAC_ADDR0 0xa009 -+ -+#define YTPHY_WOL_CFG_REG 0xa00a -+#define YTPHY_WOL_CFG_TYPE BIT(0) /* WOL TYPE */ -+#define YTPHY_WOL_CFG_EN BIT(3) /* WOL Enable */ -+#define YTPHY_WOL_CFG_INTR_SEL BIT(6) /* WOL Event Interrupt Enable */ -+#define YTPHY_WOL_CFG_WIDTH1 BIT(1) /* WOL Pulse Width */ -+#define YTPHY_WOL_CFG_WIDTH2 BIT(2) -+ -+#define YTPHY_REG_SPACE_UTP 0 -+#define YTPHY_REG_SPACE_FIBER 2 -+ -+enum ytphy_wol_type_e -+{ -+ YTPHY_WOL_TYPE_LEVEL, -+ YTPHY_WOL_TYPE_PULSE, -+ YTPHY_WOL_TYPE_MAX -+}; -+typedef enum ytphy_wol_type_e ytphy_wol_type_t; -+ -+enum ytphy_wol_width_e -+{ -+ YTPHY_WOL_WIDTH_84MS, -+ YTPHY_WOL_WIDTH_168MS, -+ YTPHY_WOL_WIDTH_336MS, -+ YTPHY_WOL_WIDTH_672MS, -+ YTPHY_WOL_WIDTH_MAX -+}; -+typedef enum ytphy_wol_width_e ytphy_wol_width_t; -+ -+struct ytphy_wol_cfg_s -+{ -+ int enable; -+ int type; -+ int width; -+}; -+typedef struct ytphy_wol_cfg_s ytphy_wol_cfg_t; -+ -+#endif /* _MOTORCOMM_PHY_H */ -+ -+ --- -2.35.3 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/net-usb-r8152-add-LED-configuration-from-OF.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/net-usb-r8152-add-LED-configuration-from-OF.patch index 5e331b1e7477..e527c42cb951 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/net-usb-r8152-add-LED-configuration-from-OF.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/net-usb-r8152-add-LED-configuration-from-OF.patch @@ -1,4 +1,4 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 77997cebd91e706546a64e9a3a7856d9dce209d9 Mon Sep 17 00:00:00 2001 From: David Bauer Date: Sun, 26 Jul 2020 02:38:31 +0200 Subject: net: usb: r8152: add LED configuration from OF @@ -9,11 +9,11 @@ be determined. Signed-off-by: David Bauer --- - drivers/net/usb/r8152.c | 23 ++++++++++ + drivers/net/usb/r8152.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c -index afb20c0ed688..f2fa63b5ad05 100644 +index 127b34dcc5b3..8099556fef85 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -11,6 +11,7 @@ @@ -24,7 +24,7 @@ index afb20c0ed688..f2fa63b5ad05 100644 #include #include #include -@@ -6980,6 +6981,22 @@ static void rtl_tally_reset(struct r8152 *tp) +@@ -7002,6 +7003,22 @@ static void rtl_tally_reset(struct r8152 *tp) ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data); } @@ -47,7 +47,7 @@ index afb20c0ed688..f2fa63b5ad05 100644 static void r8152b_init(struct r8152 *tp) { u32 ocp_data; -@@ -7021,6 +7038,8 @@ static void r8152b_init(struct r8152 *tp) +@@ -7043,6 +7060,8 @@ static void r8152b_init(struct r8152 *tp) ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL); ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN); ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data); @@ -56,7 +56,7 @@ index afb20c0ed688..f2fa63b5ad05 100644 } static void r8153_init(struct r8152 *tp) -@@ -7161,6 +7180,8 @@ static void r8153_init(struct r8152 *tp) +@@ -7183,6 +7202,8 @@ static void r8153_init(struct r8152 *tp) tp->coalesce = COALESCE_SLOW; break; } @@ -65,7 +65,7 @@ index afb20c0ed688..f2fa63b5ad05 100644 } static void r8153b_init(struct r8152 *tp) -@@ -7243,6 +7264,8 @@ static void r8153b_init(struct r8152 *tp) +@@ -7265,6 +7286,8 @@ static void r8153b_init(struct r8152 *tp) rtl_tally_reset(tp); tp->coalesce = 15000; /* 15 us */ @@ -75,5 +75,5 @@ index afb20c0ed688..f2fa63b5ad05 100644 static void r8153c_init(struct r8152 *tp) -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/nvmem-sunxi_sid-add-sunxi_get_soc_chipid-sunxi_get_serial.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/nvmem-sunxi_sid-add-sunxi_get_soc_chipid-sunxi_get_serial.patch index 1eceb986f100..64d2f95be2a2 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/nvmem-sunxi_sid-add-sunxi_get_soc_chipid-sunxi_get_serial.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/nvmem-sunxi_sid-add-sunxi_get_soc_chipid-sunxi_get_serial.patch @@ -1,14 +1,14 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From e1af11511f4985906856ae422e7a01b251cb3b86 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Sat, 16 Apr 2022 11:19:05 +0300 Subject: nvmem: sunxi_sid: add sunxi_get_soc_chipid, sunxi_get_serial --- - drivers/nvmem/sunxi_sid.c | 28 ++++++++++ + drivers/nvmem/sunxi_sid.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/nvmem/sunxi_sid.c b/drivers/nvmem/sunxi_sid.c -index c526fe4abe22..e522bd1e5edd 100644 +index c13112b9149b..f29fac7edef9 100644 --- a/drivers/nvmem/sunxi_sid.c +++ b/drivers/nvmem/sunxi_sid.c @@ -36,6 +36,25 @@ struct sunxi_sid { @@ -37,7 +37,7 @@ index c526fe4abe22..e522bd1e5edd 100644 static int sunxi_sid_read(void *context, unsigned int offset, void *val, size_t bytes) { -@@ -177,6 +196,15 @@ static int sunxi_sid_probe(struct platform_device *pdev) +@@ -178,6 +197,15 @@ static int sunxi_sid_probe(struct platform_device *pdev) platform_set_drvdata(pdev, nvmem); @@ -54,5 +54,5 @@ index c526fe4abe22..e522bd1e5edd 100644 } -- -Armbian +2.35.3 diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero2w-add-dtb.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/orangepi-zero2w-add-dtb.patch similarity index 98% rename from patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero2w-add-dtb.patch rename to patch/kernel/archive/sunxi-6.6/patches.armbian/orangepi-zero2w-add-dtb.patch index 6e9b4db4562c..f2e9477ed86c 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero2w-add-dtb.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/orangepi-zero2w-add-dtb.patch @@ -1,7 +1,7 @@ -From a2fc735d168c47f137462b4167cdde76b96822c9 Mon Sep 17 00:00:00 2001 +From aeccb62b0f4c6891a09790f5f4546dff8cc60815 Mon Sep 17 00:00:00 2001 From: chraac Date: Fri, 15 Mar 2024 12:30:26 +0800 -Subject: [PATCH] orangepi-zero2w add dtb +Subject: orangepi-zero2w add dtb --- arch/arm64/boot/dts/allwinner/Makefile | 1 + @@ -22,7 +22,7 @@ index 8b504ee408e7..a957365edc1a 100644 subdir-y := $(dts-dirs) overlay diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi -index 3a2a1c4f327a..90e55a6aef1d 100644 +index 362c43d5eb9f..ccaca20eb10b 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi @@ -209,7 +209,7 @@ video-codec@1c0e000 { @@ -34,7 +34,7 @@ index 3a2a1c4f327a..90e55a6aef1d 100644 #address-cells = <1>; #size-cells = <1>; ranges; -@@ -708,19 +708,28 @@ mdio0: mdio { +@@ -690,19 +690,28 @@ mdio0: mdio { }; emac1: ethernet@5030000 { @@ -568,4 +568,5 @@ index 000000000000..b224902f5684 + }; +}; -- -GitLab +2.35.3 + diff --git a/patch/kernel/archive/sunxi-6.6/series.armbian b/patch/kernel/archive/sunxi-6.6/series.armbian index bc85e44bd162..4f73271fb3eb 100644 --- a/patch/kernel/archive/sunxi-6.6/series.armbian +++ b/patch/kernel/archive/sunxi-6.6/series.armbian @@ -1,8 +1,8 @@ -################################################################################ # -# Armbian patches +# Automatically generated by the script mk_format_patch +# +# https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git # -################################################################################ patches.armbian/Doc-dt-bindings-usb-add-binding-for-DWC3-controller-on-Allwinne.patch patches.armbian/drv-pinctrl-pinctrl-sun50i-a64-disable_strict_mode.patch patches.armbian/drv-rtc-sun6i-support-RTCs-without-external-LOSCs.patch @@ -25,19 +25,9 @@ patches.armbian/drv-iio-sun4i-gpadc-iio-don-t-force-poweroff.patch patches.armbian/drv-staging-media-sunxi-cedrus-add-H616-variant.patch patches.armbian/drv-soc-sunxi-sram-Add-SRAM-C1-H616-handling.patch -################### -- patches.armbian/drv-media-cedrus-hevc-tiles-hack.patch -- patches.armbian/drv-media-cedrus-Add-callback-for-buffer-cleanup.patch -- patches.armbian/drv-media-cedrus-hevc-Improve-buffer-management.patch -- patches.armbian/drv-media-cedrus-h264-Improve-buffer-management.patch -- patches.armbian/WIP-media-uapi-hevc-add-fields-needed-for-rkvdec.patch -- patches.armbian/HACK-media-uapi-hevc-tiles-and-num_slices.patch -- patches.armbian/drv-media-cedrus-10-bit-HEVC-support.patch -################### patches.armbian/drv-media-dvb-frontends-si2168-fix-cmd-timeout.patch patches.armbian/include-uapi-drm_fourcc-add-ARM-tiled-format-modifier.patch patches.armbian/drv-clk-sunxi-ng-ccu-add-min-max-rate-sun50i-a64.patch -- patches.armbian/drv-clk-sunxi-ng-ccu-sun50i-a64-revert-ccu-Pinebook-A64.patch patches.armbian/drv-clocksource-arm_arch_timer-fix-a64-timejump.patch patches.armbian/sound-soc-sunxi-sun4i-spdif-add-mclk_multiplier.patch patches.armbian/sound-soc-sunxi-sun8i-codec-analog-enable-sound.patch @@ -81,8 +71,7 @@ patches.armbian/arm64-dts-sun50i-a64-pine64-enable-wifi-mmc1.patch patches.armbian/arm64-dts-sun50i-a64-sopine-baseboard-Add-i2s2-mmc1.patch patches.armbian/arm64-dts-sun50i-h6-Add-r_uart-uart2-3-pins.patch -####### sun50i-h616 ####### - patches.armbian/arm64-dts-allwiner-sun50i-h616.dtsi-add-usb-ehci-ohc.patch + patches.armbian/arm64-dts-allwiner-sun50i-h616.dtsi-add-usb-ehci-ohci.patch patches.armbian/arm64-dts-sun50i-h616-orangepi-zero2-reg_usb1_vbus-status-ok.patch patches.armbian/arm64-dts-allwinner-sun50i-h616-Add-GPU-node.patch patches.armbian/arm64-dts-sun50i-h616-orangepi-zero2-Enable-GPU-mali.patch @@ -90,15 +79,14 @@ patches.armbian/arm64-dts-sun50i-h616-x96-mate-T95-eth-sd-card-hack.patch patches.armbian/arm64-dts-sun50i-h616-x96-mate-add-hdmi.patch patches.armbian/arm64-dts-allwinner-h616-Add-device-node-for-SID.patch - patches.armbian/arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-v1_6_2.patch + patches.armbian/arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-.patch patches.armbian/arm64-dts-allwinner-h616-Add-thermal-sensor-and-thermal-zones.patch - patches.armbian/arm64-dts-allwinner-h616-Fix-thermal-zones-missing-trips.patch - patches.armbian/drv-staging-fbtft-add-st7796s.patch - patches.armbian/drv-touchscreen-tsc2007-polling.patch - patches.armbian/drv-rgb-add-ws2812.patch - patches.armbian/arm64-dts-allwinner-h616-LED-green_power_on-red_status_heartbeat.patch - patches.armbian/arm64-dts-allwinner-h616-orangepi-zero2-Enable-expansion-board-USB-ports.patch -################### + patches.armbian/arm64-dts-allwinner-h616-Fix-thermal-zones-add-missing-trips.patch + patches.armbian/Add-FB_TFT-ST7796S-driver.patch + patches.armbian/Optimize-TSC2007-touchscreen-add-polling-method.patch + patches.armbian/Add-ws2812-RGB-driver-for-allwinner-H616.patch + patches.armbian/LED-green_power_on-red_status_heartbeat-arch-arm64-boot-dts-all.patch + patches.armbian/arm64-dts-allwinner-h616-orangepi-zero2-Enable-expansion-board-.patch patches.armbian/arm64-dts-sun50i-a64-pine64-enable-Bluetooth.patch patches.armbian/arm64-dts-sun50i-a64-sopine-baseboard-enable-Bluetooth.patch patches.armbian/arm64-dts-nanopi-a64-set-right-phy-mode-to-rgmii-id.patch @@ -121,7 +109,6 @@ patches.armbian/arm64-dts-sun50i-h6.dtsi-add-pinctrl-pins-for-spi.patch patches.armbian/arm64-dts-sun50i-a64-orangepi-win-add-aliase-ethernet1.patch patches.armbian/arm64-dts-sun50i-a64-force-mmc0-bus-width.patch -######### Overlay ########### patches.armbian/drv-of-Device-Tree-Overlay-ConfigFS-interface.patch patches.armbian/scripts-add-overlay-compilation-support.patch patches.armbian/scripts-enable-kernel-dtbs-symbol-generation.patch @@ -133,8 +120,7 @@ patches.armbian/arm64-dts-overlay-sun50i-h5-add-gpio-regulator-overclock.patch patches.armbian/Move-sun50i-h6-pwm-settings-to-its-own-overlay.patch patches.armbian/Compile-the-pwm-overlay.patch - patches.armbian/arm64-dts-overlay-sun50i-h616-bigtreetech-cb1.patch -################### + patches.armbian/cb1-overlay.patch patches.armbian/arm-dts-sunxi-h3-h5.dtsi-add-i2s0-i2s1-pins.patch patches.armbian/arm-dts-sun5i-a13-olinuxino-micro-add-panel-lcd-olinuxino-4.3.patch patches.armbian/arm-dts-sun5i-a13-olinuxino-Add-panel-lcd-olinuxino-4.3-needed-.patch @@ -148,7 +134,7 @@ patches.armbian/arm64-dts-sun50i-a64-olinuxino-1Ge16GW-enable-bluetooth.patch patches.armbian/arm64-dts-sun50i-a64.dtsi-adjust-thermal-trip-points.patch patches.armbian/arm64-dts-sun50i-a64-olinuxino-1Ge16GW-Disable-clock-phase-and-.patch - patches.armbian/arm64-dts-sun50i-a64-pinephone-wowlan.patch + patches.armbian/Temp_fix-mailbox-arch-arm64-boot-dts-allwinner-sun50i-a64-pinep.patch patches.armbian/arm64-dts-sun50i-h6-orangepi-3-add-r_uart-aliase.patch patches.armbian/arm64-dts-sun50i-h5-add-cpu-opp-refs.patch patches.armbian/arm64-dts-sun50i-h5-add-termal-zones.patch @@ -162,21 +148,19 @@ patches.armbian/fix-cpu-opp-table-sun8i-a83t.patch patches.armbian/Add-dump_reg-and-sunxi-sysinfo-drivers.patch patches.armbian/Add-sunxi-addr-driver-Used-to-fix-uwe5622-bluetooth-MAC-address.patch -#### Needs to be redone -- patches.armbian/net-phy-Support-yt8531c.patch -#### patches.armbian/nvmem-sunxi_sid-add-sunxi_get_soc_chipid-sunxi_get_serial.patch patches.armbian/mmc-host-sunxi-mmc-Fix-H6-emmc.patch patches.armbian/arm64-dts-allwinner-sun50i-h6-Fix-H6-emmc.patch - patches.armbian/arm64-dts-sun50i-h5-nanopi-r1s-h5-add-rtl8153-suppor.patch + patches.armbian/arm64-dts-sun50i-h5-nanopi-r1s-h5-add-rtl8153-support.patch patches.armbian/net-usb-r8152-add-LED-configuration-from-OF.patch patches.armbian/arm64-dts-sun50i-h6-orangepi.dtsi-Rollback-r_rsb-to-r_i2c.patch - patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1.patch - patches.armbian/arm64-dts-allwinner-sun50i-h618-bananapi-m4-zero.patch - patches.armbian/arm-dts-sun8i-h3-nanopi-duo2-enable-powerbutton-and-ethernet.patch - patches.armbian/arm-dts-sun8i-h3-reduce-opp-microvolt-to-prevent-not.patch + patches.armbian/add-bigtreetech-cb1-dts.patch + patches.armbian/arch-arm64-dts-allwinner-sun50i-h618-bananapi-m4-zero.patch + patches.armbian/ARM-dts-sun8i-nanopiduo2-Use-key-0-as-power-button.patch + patches.armbian/ARM-dts-sun8i-nanopiduo2-enable-ethernet.patch + patches.armbian/arm-dts-sun8i-h3-reduce-opp-microvolt-to-prevent-not-supported-.patch patches.armbian/arm64-dts-sun50i-h5-enable-power-button-for-orangepi-prime.patch - patches.armbian/arm-dts-sunxi-h3-h5-add_tve.patch + patches.armbian/enable-TV-Output-on-OrangePi-Zero-LTE.patch patches.armbian/drivers-devfreq-sun8i-a33-mbus-disable-autorefresh.patch patches.armbian/clk-gate-add-support-for-regmap-based-gates.patch patches.armbian/mfd-Add-support-for-X-Powers-AC200.patch @@ -187,21 +171,21 @@ patches.armbian/ASoC-AC200-Initial-driver.patch patches.armbian/arm64-dts-allwinner-h6-add-AC200-codec-nodes.patch patches.armbian/arm64-dts-allwinner-h6-enable-AC200-codec.patch - patches.armbian/add-nodes-for-sunxi-info-addr-dump-reg.patch + patches.armbian/add-nodes-for-sunxi-info-sunxi-addr-and-sunxi-dump-reg.patch patches.armbian/add-initial-support-for-orangepi3-lts.patch - patches.armbian/drivers-input-axp20x-pek-allow-wakeup-after-shutdown.patch - patches.armbian/arm64-dts-add-wifi-nodes-for-Inovato-Quadra.patch - patches.armbian/arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2.patch + patches.armbian/Input-axp20x-pek-allow-wakeup-after-shutdown.patch + patches.armbian/Add-wifi-nodes-for-Inovato-Quadra.patch + patches.armbian/arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2-and-zero3.patch patches.armbian/arm64-dts-sun50i-h618-orangepi-zero3-Enable-GPU-mali.patch patches.armbian/drivers-hack-for-h616-hdmi-video-output.patch patches.armbian/arm64-dts-h616-add-hdmi-support-for-zero2-and-zero3.patch patches.armbian/arm64-dts-sun50i-h616-Add-dma-node.patch - patches.armbian/arm64-dts-H616-Add-overlays-that-are-also-compatible-with.patch - patches.armbian/drv-pwm-sun50i-h616-enhance-pwm.patch - patches.armbian/drv-net-gmac-sun50i-h616-gmac.patch - patches.armbian/arm64-dts-sun50i-h618-orangepi-zero2w-add-dtb.patch - patches.armbian/arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch - patches.armbian/arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch - patches.armbian/arm64-dts-sun50i-h618-add-overlay.patch - patches.armbian/arm-dts-orangepi-one-pinctr-dummy-regulators.patch - patches.armbian/sound-soc-sunxi-h616-h618.patch + patches.armbian/arm64-dts-H616-Add-overlays-that-are-also-compatible-with-orang.patch + patches.armbian/drivers-pwm-Add-pwm-sunxi-enhance-driver-for-h616.patch + patches.armbian/driver-allwinner-h618-emac.patch + patches.armbian/orangepi-zero2w-add-dtb.patch + patches.armbian/arch-arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch + patches.armbian/arch-arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch + patches.armbian/add-dtb-overlay-for-zero2w.patch + patches.armbian/adding-dummy-regulators-in-pinctr-arch-arm-boot-dts-allwinner-s.patch + patches.armbian/Sound-for-H616-H618-Allwinner-SOCs-arch-arm64-boot-dts-allwinne.patch From aaeeb61eb8e7567183cd6ccb4b84ee45b0c10500 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Fri, 5 Jul 2024 10:34:56 +0300 Subject: [PATCH 4/8] sunxi-6.6: Edit the series.conf file, delete unused ones. --- ...x-ISO-C90-forbids-mixed-declarations.patch | 70 ------------ ...Fix-depends-only-ARM-eInk-display-FB.patch | 25 ----- ...Fix-warning-unused-variable-delay_us.patch | 29 ----- patch/kernel/archive/sunxi-6.6/series.conf | 101 ++++++------------ patch/kernel/archive/sunxi-6.6/series.fixes | 3 - 5 files changed, 34 insertions(+), 194 deletions(-) delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.fixes/Fix-ISO-C90-forbids-mixed-declarations.patch delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.fixes/Fix-depends-only-ARM-eInk-display-FB.patch delete mode 100644 patch/kernel/archive/sunxi-6.6/patches.fixes/Fix-warning-unused-variable-delay_us.patch diff --git a/patch/kernel/archive/sunxi-6.6/patches.fixes/Fix-ISO-C90-forbids-mixed-declarations.patch b/patch/kernel/archive/sunxi-6.6/patches.fixes/Fix-ISO-C90-forbids-mixed-declarations.patch deleted file mode 100644 index 3a6e99520904..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.fixes/Fix-ISO-C90-forbids-mixed-declarations.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: The-going <48602507+The-going@users.noreply.github.com> -Date: Fri, 16 Dec 2022 16:02:13 +0300 -Subject: Fix: ISO C90 forbids mixed declarations - ---- - drivers/usb/typec/tcpm/fusb302.c | 22 ++++++---- - 1 file changed, 13 insertions(+), 9 deletions(-) - -diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c -index b34e4dd6a4f1..6efc4e4fe333 100644 ---- a/drivers/usb/typec/tcpm/fusb302.c -+++ b/drivers/usb/typec/tcpm/fusb302.c -@@ -1620,6 +1620,10 @@ static irqreturn_t fusb302_irq_intn(int irq, void *dev_id) - static void fusb302_print_state(struct fusb302_chip *chip) - { - u8 ctl0, ctl2, measure, status0, status1a, sw0, mask; -+ unsigned vbusok, activity, comp, wake, mdac, togss; -+ const char* host_cur; -+ const char* bc_lvl; -+ const char* togss_s; - int ret; - - ret = fusb302_i2c_read(chip, FUSB_REG_CONTROL0, &ctl0); -@@ -1646,7 +1650,7 @@ static void fusb302_print_state(struct fusb302_chip *chip) - - //FUSB_REG(FUSB_REG_POWER) // power control - -- const char* host_cur = "?"; -+ host_cur = "?"; - switch ((ctl0 >> 2) & 3) { - case 0: host_cur = "none"; break; - case 1: host_cur = "80uA"; break; -@@ -1654,7 +1658,7 @@ static void fusb302_print_state(struct fusb302_chip *chip) - case 3: host_cur = "330uA"; break; - } - -- const char* bc_lvl = "?"; -+ bc_lvl = "?"; - switch (status0 & 3) { - case 0: bc_lvl = "0-200mV"; break; - case 1: bc_lvl = "200-660mV"; break; -@@ -1663,17 +1667,17 @@ static void fusb302_print_state(struct fusb302_chip *chip) - } - - // status0 -- unsigned vbusok = !!(status0 & BIT(7)); -- unsigned activity = !!(status0 & BIT(6)); -- unsigned comp = !!(status0 & BIT(5)); -- unsigned wake = !!(status0 & BIT(2)); -+ vbusok = !!(status0 & BIT(7)); -+ activity = !!(status0 & BIT(6)); -+ comp = !!(status0 & BIT(5)); -+ wake = !!(status0 & BIT(2)); - - // measure -- unsigned mdac = ((measure & 0x3f) + 1) * 42 * (measure & BIT(6) ? 10 : 1); -+ mdac = ((measure & 0x3f) + 1) * 42 * (measure & BIT(6) ? 10 : 1); - - // status1a -- unsigned togss = (status1a >> 3) & 7; -- const char* togss_s = "?"; -+ togss = (status1a >> 3) & 7; -+ togss_s = "?"; - switch (togss) { - case 0: togss_s = "running"; break; - case 1: togss_s = "src1"; break; --- -Armbian - diff --git a/patch/kernel/archive/sunxi-6.6/patches.fixes/Fix-depends-only-ARM-eInk-display-FB.patch b/patch/kernel/archive/sunxi-6.6/patches.fixes/Fix-depends-only-ARM-eInk-display-FB.patch deleted file mode 100644 index b9e465c799db..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.fixes/Fix-depends-only-ARM-eInk-display-FB.patch +++ /dev/null @@ -1,25 +0,0 @@ -From b3e8ca38536edd33ce1ed1e9aeeeb00871b85e03 Mon Sep 17 00:00:00 2001 -From: The-going <48602507+The-going@users.noreply.github.com> -Date: Sat, 17 Dec 2022 14:27:51 +0300 -Subject: [PATCH 4/5] Fix: depends only ARM: eInk display FB - ---- - drivers/video/fbdev/Kconfig | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig -index 93cff0b18..c5d9be028 100644 ---- a/drivers/video/fbdev/Kconfig -+++ b/drivers/video/fbdev/Kconfig -@@ -884,7 +884,7 @@ config FB_ATMEL - - config FB_SUN5I_EINK - tristate "eInk display Framebuffer Support (A13 based eBook readers)" -- depends on FB -+ depends on FB && ARM && !ARM64 - select FB_MODE_HELPERS - select FB_CFB_FILLRECT - select FB_CFB_COPYAREA --- -2.35.3 - diff --git a/patch/kernel/archive/sunxi-6.6/patches.fixes/Fix-warning-unused-variable-delay_us.patch b/patch/kernel/archive/sunxi-6.6/patches.fixes/Fix-warning-unused-variable-delay_us.patch deleted file mode 100644 index 7f10da978f03..000000000000 --- a/patch/kernel/archive/sunxi-6.6/patches.fixes/Fix-warning-unused-variable-delay_us.patch +++ /dev/null @@ -1,29 +0,0 @@ -From e0d7c1442a987f1c797f40d89975a04d8b220916 Mon Sep 17 00:00:00 2001 -From: The-going <48602507+The-going@users.noreply.github.com> -Date: Fri, 16 Dec 2022 21:34:39 +0300 -Subject: [PATCH 3/5] =?UTF-8?q?Fix:=20warning:=20unused=20variable=20?= - =?UTF-8?q?=E2=80=98delay=5Fus=E2=80=99?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - ---- - drivers/media/i2c/ov8858.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/media/i2c/ov8858.c b/drivers/media/i2c/ov8858.c -index 55d2daa82..090c8f74b 100644 ---- a/drivers/media/i2c/ov8858.c -+++ b/drivers/media/i2c/ov8858.c -@@ -2143,7 +2143,7 @@ static inline u32 ov8858_cal_delay(u32 cycles) - static int __ov8858_power_on(struct ov8858 *ov8858) - { - int ret; -- u32 delay_us; -+ //u32 delay_us; - struct device *dev = &ov8858->client->dev; - - if (!IS_ERR_OR_NULL(ov8858->pins_default)) { --- -2.35.3 - diff --git a/patch/kernel/archive/sunxi-6.6/series.conf b/patch/kernel/archive/sunxi-6.6/series.conf index abd7727e3ea2..9514cde050bd 100644 --- a/patch/kernel/archive/sunxi-6.6/series.conf +++ b/patch/kernel/archive/sunxi-6.6/series.conf @@ -1,7 +1,8 @@ # -# Automatically generated by the script mk_format_patch -# -# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git +# This file is made manually by simply copying text +# from the target series.* files. +# Add (-) at the beginning of the line if the patch should not be applied. +# At the same time, the patch does not need to be deleted. # patches.megous/mailbox-Allow-to-run-mailbox-while-timekeeping-is-suspended.patch patches.megous/ARM-sunxi-Add-experimental-suspend-to-memory-implementation-for.patch @@ -50,7 +51,6 @@ patches.megous/sound-soc-sun8i-codec-Drop-debug-statements.patch patches.megous/sound-soc-ac100-codec-Support-analog-part-of-X-Powers-AC100-cod.patch patches.megous/sound-soc-ac100-Make-sure-we-shutdown-the-audio-outputs-on-rebo.patch -- patches.megous/Move-a-node-to-avoid-merge-conflict.patch patches.megous/ASoC-sunxi-sun8i-codec-Improve-jack-button-handling-and-mic-det.patch patches.megous/dt-bindings-axp20x-adc-allow-to-use-TS-pin-as-GPADC.patch patches.megous/iio-adc-axp20x_adc-allow-to-set-TS-pin-to-GPADC-mode.patch @@ -98,8 +98,6 @@ patches.megous/drm-sun4i-Unify-sun8i_-_layer-structs.patch patches.megous/drm-sun4i-Add-more-parameters-to-sunxi_engine-commit-callback.patch patches.megous/drm-sun4i-Fix-layer-zpos-change-atomic-modesetting.patch -- patches.megous/drm-sun4i-Fix-wrong-location-of-clk_prepare_enable.patch -- patches.megous/drm-sun4i-Mark-one-of-the-UI-planes-as-a-cursor-one.patch patches.megous/drm-sun4i-Implement-gamma-correction.patch patches.megous/drm-panel-st7703-Improve-the-power-up-down-sequence-of-the-pane.patch patches.megous/drm-panel-st7703-Fix-xbd599-timings-to-make-refresh-rate-exactl.patch @@ -119,8 +117,6 @@ patches.megous/arm64-dts-allwinner-Enforce-consistent-MMC-numbering.patch patches.megous/ARM-dts-sunxi-Add-aliases-for-MMC.patch patches.megous/of-property-fw_devlink-Support-allwinner-sram-links.patch -- patches.megous/drm-rockchip-Fix-panic-on-reboot-when-DRM-device-fails-to-bind.patch -- patches.megous/arm64-dts-rockchip-rk356x-Fix-PCIe-register-map-and-ranges.patch patches.megous/ARM-dts-sun8i-a83t-Add-missing-GPU-trip-point.patch patches.megous/arm64-dts-sun50i-h5-Add-missing-GPU-trip-point.patch patches.megous/Fix-intptr_t-typedef.patch @@ -147,7 +143,6 @@ patches.megous/input-cyttsp4-Restart-on-wakeup-wakeup-by-I2C-read-doesn-t-work.patch patches.megous/input-cyttsp4-Fix-warnings.patch patches.megous/input-cyttsp4-Make-the-driver-not-hog-the-system-s-workqueue.patch -- patches.megous/video-fbdev-eInk-display-driver-for-A13-based-PocketBooks.patch patches.megous/regulator-Add-simple-driver-for-enabling-a-regulator-from-users.patch patches.megous/regulator-tp65185x-Add-tp65185x-eInk-panel-regulator-driver.patch patches.megous/regulator-tp65185-Add-hwmon-device-for-reading-temperature.patch @@ -161,7 +156,6 @@ patches.megous/iio-core-Add-option-to-force-identity-mount-matrix.patch patches.megous/input-touchscreen-goodix-Add-config-debugfs-file.patch patches.megous/input-goodix-Add-option-to-power-off-the-controller-during-susp.patch -- patches.megous/input-goodix-Don-t-disable-regulators-during-suspend.patch patches.megous/arm64-dts-allwinner-a64-Fix-LRADC-compatible.patch patches.megous/arm64-dts-sun50i-a64-pinephone-Add-front-back-cameras.patch patches.megous/arm64-dts-sun50i-a64-pinephone-Add-Type-C-support-for-all-PP-va.patch @@ -185,10 +179,8 @@ patches.megous/arm64-dts-sun50i-a64-pinephone-Add-mount-matrix-for-PinePhone-m.patch patches.megous/arm64-dts-sun50i-a64-pinephone-Add-support-for-Pinephone-keyboa.patch patches.megous/arm64-dts-sun50i-a64-pinephone-Enable-Pinephone-Keyboard-power-.patch -- patches.megous/usb-musb-sunxi-Avoid-enabling-host-side-code-on-SoCs-where-it-s.patch patches.megous/arm64-dts-sun50i-a64-Add-missing-trip-points-for-GPU.patch patches.megous/arm64-dts-allwinner-sun50i-a64-pinephone-Add-support-for-Pineph.patch -- patches.megous/Revert-input-goodix-Don-t-disable-regulators-during-suspend.patch patches.megous/iio-stk3310-Implement-vdd-supply-and-power-it-off-during-suspen.patch patches.megous/iio-light-stk3310-Add-support-for-I2C-regulator.patch patches.megous/input-touch-goodix-Try-to-keep-regulator-enable-disable-balance.patch @@ -255,15 +247,7 @@ patches.megous/ARM-dts-sun8i-a83t-Improve-CPU-OPP-tables-go-up-to-1.8GHz.patch patches.megous/cpufreq-sun50i-Show-detected-CPU-bin-for-easier-debugging.patch -# -# Automatically generated by the script mk_format_patch -# -# git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git -# -- patches.fixes/Fix-ISO-C90-forbids-mixed-declarations.patch patches.fixes/Fix-warning-multi-line-comment.patch -- patches.fixes/Fix-warning-unused-variable-delay_us.patch -- patches.fixes/Fix-depends-only-ARM-eInk-display-FB.patch patches.fixes/Fix-duplicate-nodes-for-sun50i-h5-orangepi-pc2.patch ################################################################################ @@ -293,19 +277,9 @@ patches.armbian/drv-iio-sun4i-gpadc-iio-don-t-force-poweroff.patch patches.armbian/drv-staging-media-sunxi-cedrus-add-H616-variant.patch patches.armbian/drv-soc-sunxi-sram-Add-SRAM-C1-H616-handling.patch -################### -- patches.armbian/drv-media-cedrus-hevc-tiles-hack.patch -- patches.armbian/drv-media-cedrus-Add-callback-for-buffer-cleanup.patch -- patches.armbian/drv-media-cedrus-hevc-Improve-buffer-management.patch -- patches.armbian/drv-media-cedrus-h264-Improve-buffer-management.patch -- patches.armbian/WIP-media-uapi-hevc-add-fields-needed-for-rkvdec.patch -- patches.armbian/HACK-media-uapi-hevc-tiles-and-num_slices.patch -- patches.armbian/drv-media-cedrus-10-bit-HEVC-support.patch -################### patches.armbian/drv-media-dvb-frontends-si2168-fix-cmd-timeout.patch patches.armbian/include-uapi-drm_fourcc-add-ARM-tiled-format-modifier.patch patches.armbian/drv-clk-sunxi-ng-ccu-add-min-max-rate-sun50i-a64.patch -- patches.armbian/drv-clk-sunxi-ng-ccu-sun50i-a64-revert-ccu-Pinebook-A64.patch patches.armbian/drv-clocksource-arm_arch_timer-fix-a64-timejump.patch patches.armbian/sound-soc-sunxi-sun4i-spdif-add-mclk_multiplier.patch patches.armbian/sound-soc-sunxi-sun8i-codec-analog-enable-sound.patch @@ -349,8 +323,7 @@ patches.armbian/arm64-dts-sun50i-a64-pine64-enable-wifi-mmc1.patch patches.armbian/arm64-dts-sun50i-a64-sopine-baseboard-Add-i2s2-mmc1.patch patches.armbian/arm64-dts-sun50i-h6-Add-r_uart-uart2-3-pins.patch -####### sun50i-h616 ####### - patches.armbian/arm64-dts-allwiner-sun50i-h616.dtsi-add-usb-ehci-ohc.patch + patches.armbian/arm64-dts-allwiner-sun50i-h616.dtsi-add-usb-ehci-ohci.patch patches.armbian/arm64-dts-sun50i-h616-orangepi-zero2-reg_usb1_vbus-status-ok.patch patches.armbian/arm64-dts-allwinner-sun50i-h616-Add-GPU-node.patch patches.armbian/arm64-dts-sun50i-h616-orangepi-zero2-Enable-GPU-mali.patch @@ -358,15 +331,14 @@ patches.armbian/arm64-dts-sun50i-h616-x96-mate-T95-eth-sd-card-hack.patch patches.armbian/arm64-dts-sun50i-h616-x96-mate-add-hdmi.patch patches.armbian/arm64-dts-allwinner-h616-Add-device-node-for-SID.patch - patches.armbian/arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-v1_6_2.patch + patches.armbian/arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-.patch patches.armbian/arm64-dts-allwinner-h616-Add-thermal-sensor-and-thermal-zones.patch - patches.armbian/arm64-dts-allwinner-h616-Fix-thermal-zones-missing-trips.patch - patches.armbian/drv-staging-fbtft-add-st7796s.patch - patches.armbian/drv-touchscreen-tsc2007-polling.patch - patches.armbian/drv-rgb-add-ws2812.patch - patches.armbian/arm64-dts-allwinner-h616-LED-green_power_on-red_status_heartbeat.patch - patches.armbian/arm64-dts-allwinner-h616-orangepi-zero2-Enable-expansion-board-USB-ports.patch -################### + patches.armbian/arm64-dts-allwinner-h616-Fix-thermal-zones-add-missing-trips.patch + patches.armbian/Add-FB_TFT-ST7796S-driver.patch + patches.armbian/Optimize-TSC2007-touchscreen-add-polling-method.patch + patches.armbian/Add-ws2812-RGB-driver-for-allwinner-H616.patch + patches.armbian/LED-green_power_on-red_status_heartbeat-arch-arm64-boot-dts-all.patch + patches.armbian/arm64-dts-allwinner-h616-orangepi-zero2-Enable-expansion-board-.patch patches.armbian/arm64-dts-sun50i-a64-pine64-enable-Bluetooth.patch patches.armbian/arm64-dts-sun50i-a64-sopine-baseboard-enable-Bluetooth.patch patches.armbian/arm64-dts-nanopi-a64-set-right-phy-mode-to-rgmii-id.patch @@ -389,7 +361,6 @@ patches.armbian/arm64-dts-sun50i-h6.dtsi-add-pinctrl-pins-for-spi.patch patches.armbian/arm64-dts-sun50i-a64-orangepi-win-add-aliase-ethernet1.patch patches.armbian/arm64-dts-sun50i-a64-force-mmc0-bus-width.patch -######### Overlay ########### patches.armbian/drv-of-Device-Tree-Overlay-ConfigFS-interface.patch patches.armbian/scripts-add-overlay-compilation-support.patch patches.armbian/scripts-enable-kernel-dtbs-symbol-generation.patch @@ -401,8 +372,7 @@ patches.armbian/arm64-dts-overlay-sun50i-h5-add-gpio-regulator-overclock.patch patches.armbian/Move-sun50i-h6-pwm-settings-to-its-own-overlay.patch patches.armbian/Compile-the-pwm-overlay.patch - patches.armbian/arm64-dts-overlay-sun50i-h616-bigtreetech-cb1.patch -################### + patches.armbian/cb1-overlay.patch patches.armbian/arm-dts-sunxi-h3-h5.dtsi-add-i2s0-i2s1-pins.patch patches.armbian/arm-dts-sun5i-a13-olinuxino-micro-add-panel-lcd-olinuxino-4.3.patch patches.armbian/arm-dts-sun5i-a13-olinuxino-Add-panel-lcd-olinuxino-4.3-needed-.patch @@ -416,7 +386,7 @@ patches.armbian/arm64-dts-sun50i-a64-olinuxino-1Ge16GW-enable-bluetooth.patch patches.armbian/arm64-dts-sun50i-a64.dtsi-adjust-thermal-trip-points.patch patches.armbian/arm64-dts-sun50i-a64-olinuxino-1Ge16GW-Disable-clock-phase-and-.patch - patches.armbian/arm64-dts-sun50i-a64-pinephone-wowlan.patch + patches.armbian/Temp_fix-mailbox-arch-arm64-boot-dts-allwinner-sun50i-a64-pinep.patch patches.armbian/arm64-dts-sun50i-h6-orangepi-3-add-r_uart-aliase.patch patches.armbian/arm64-dts-sun50i-h5-add-cpu-opp-refs.patch patches.armbian/arm64-dts-sun50i-h5-add-termal-zones.patch @@ -430,21 +400,19 @@ patches.armbian/fix-cpu-opp-table-sun8i-a83t.patch patches.armbian/Add-dump_reg-and-sunxi-sysinfo-drivers.patch patches.armbian/Add-sunxi-addr-driver-Used-to-fix-uwe5622-bluetooth-MAC-address.patch -#### Needs to be redone -- patches.armbian/net-phy-Support-yt8531c.patch -#### patches.armbian/nvmem-sunxi_sid-add-sunxi_get_soc_chipid-sunxi_get_serial.patch patches.armbian/mmc-host-sunxi-mmc-Fix-H6-emmc.patch patches.armbian/arm64-dts-allwinner-sun50i-h6-Fix-H6-emmc.patch - patches.armbian/arm64-dts-sun50i-h5-nanopi-r1s-h5-add-rtl8153-suppor.patch + patches.armbian/arm64-dts-sun50i-h5-nanopi-r1s-h5-add-rtl8153-support.patch patches.armbian/net-usb-r8152-add-LED-configuration-from-OF.patch patches.armbian/arm64-dts-sun50i-h6-orangepi.dtsi-Rollback-r_rsb-to-r_i2c.patch - patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1.patch - patches.armbian/arm64-dts-allwinner-sun50i-h618-bananapi-m4-zero.patch - patches.armbian/arm-dts-sun8i-h3-nanopi-duo2-enable-powerbutton-and-ethernet.patch - patches.armbian/arm-dts-sun8i-h3-reduce-opp-microvolt-to-prevent-not.patch + patches.armbian/add-bigtreetech-cb1-dts.patch + patches.armbian/arch-arm64-dts-allwinner-sun50i-h618-bananapi-m4-zero.patch + patches.armbian/ARM-dts-sun8i-nanopiduo2-Use-key-0-as-power-button.patch + patches.armbian/ARM-dts-sun8i-nanopiduo2-enable-ethernet.patch + patches.armbian/arm-dts-sun8i-h3-reduce-opp-microvolt-to-prevent-not-supported-.patch patches.armbian/arm64-dts-sun50i-h5-enable-power-button-for-orangepi-prime.patch - patches.armbian/arm-dts-sunxi-h3-h5-add_tve.patch + patches.armbian/enable-TV-Output-on-OrangePi-Zero-LTE.patch patches.armbian/drivers-devfreq-sun8i-a33-mbus-disable-autorefresh.patch patches.armbian/clk-gate-add-support-for-regmap-based-gates.patch patches.armbian/mfd-Add-support-for-X-Powers-AC200.patch @@ -455,22 +423,21 @@ patches.armbian/ASoC-AC200-Initial-driver.patch patches.armbian/arm64-dts-allwinner-h6-add-AC200-codec-nodes.patch patches.armbian/arm64-dts-allwinner-h6-enable-AC200-codec.patch - patches.armbian/add-nodes-for-sunxi-info-addr-dump-reg.patch + patches.armbian/add-nodes-for-sunxi-info-sunxi-addr-and-sunxi-dump-reg.patch patches.armbian/add-initial-support-for-orangepi3-lts.patch - patches.armbian/drivers-input-axp20x-pek-allow-wakeup-after-shutdown.patch - patches.armbian/arm64-dts-add-wifi-nodes-for-Inovato-Quadra.patch - patches.armbian/arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2.patch + patches.armbian/Input-axp20x-pek-allow-wakeup-after-shutdown.patch + patches.armbian/Add-wifi-nodes-for-Inovato-Quadra.patch + patches.armbian/arm64-dts-h616-add-wifi-support-for-orange-pi-zero-2-and-zero3.patch patches.armbian/arm64-dts-sun50i-h618-orangepi-zero3-Enable-GPU-mali.patch patches.armbian/drivers-hack-for-h616-hdmi-video-output.patch patches.armbian/arm64-dts-h616-add-hdmi-support-for-zero2-and-zero3.patch patches.armbian/arm64-dts-sun50i-h616-Add-dma-node.patch - patches.armbian/arm64-dts-H616-Add-overlays-that-are-also-compatible-with.patch - patches.armbian/drv-pwm-sun50i-h616-enhance-pwm.patch - patches.armbian/drv-net-gmac-sun50i-h616-gmac.patch - patches.armbian/arm64-dts-sun50i-h618-orangepi-zero2w-add-dtb.patch - patches.armbian/arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch - patches.armbian/arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch - patches.armbian/arm64-dts-sun50i-h618-add-overlay.patch - patches.armbian/arm-dts-orangepi-one-pinctr-dummy-regulators.patch - patches.armbian/sound-soc-sunxi-h616-h618.patch - patches.armbian/arm64-dts-sun50i-a64-add-dts-for-recore-a5-to-a8.patch + patches.armbian/arm64-dts-H616-Add-overlays-that-are-also-compatible-with-orang.patch + patches.armbian/drivers-pwm-Add-pwm-sunxi-enhance-driver-for-h616.patch + patches.armbian/driver-allwinner-h618-emac.patch + patches.armbian/orangepi-zero2w-add-dtb.patch + patches.armbian/arch-arm64-dts-allwinner-sun50i-h616-PG-12c-pins.patch + patches.armbian/arch-arm64-dts-allwinner-sun50i-h616-spi1-cs1-pin.patch + patches.armbian/add-dtb-overlay-for-zero2w.patch + patches.armbian/adding-dummy-regulators-in-pinctr-arch-arm-boot-dts-allwinner-s.patch + patches.armbian/Sound-for-H616-H618-Allwinner-SOCs-arch-arm64-boot-dts-allwinne.patch diff --git a/patch/kernel/archive/sunxi-6.6/series.fixes b/patch/kernel/archive/sunxi-6.6/series.fixes index aa7a4e06a72a..6b2177a08060 100644 --- a/patch/kernel/archive/sunxi-6.6/series.fixes +++ b/patch/kernel/archive/sunxi-6.6/series.fixes @@ -3,8 +3,5 @@ # # git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git # -- patches.fixes/Fix-ISO-C90-forbids-mixed-declarations.patch patches.fixes/Fix-warning-multi-line-comment.patch -- patches.fixes/Fix-warning-unused-variable-delay_us.patch -- patches.fixes/Fix-depends-only-ARM-eInk-display-FB.patch patches.fixes/Fix-duplicate-nodes-for-sun50i-h5-orangepi-pc2.patch From b180dc60fa9945984f89a8f60241997a24e7e394 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Fri, 5 Jul 2024 11:01:19 +0300 Subject: [PATCH 5/8] sunxi-6.6: Switch to v6.6.37, edit incorrect patch messages --- config/sources/families/include/sunxi64_common.inc | 2 +- config/sources/families/include/sunxi_common.inc | 2 +- ...lwinner-SOCs-arch-arm64-boot-dts-allwinne.patch | 14 -------------- 3 files changed, 2 insertions(+), 16 deletions(-) diff --git a/config/sources/families/include/sunxi64_common.inc b/config/sources/families/include/sunxi64_common.inc index a859894401a1..4900973dd5b3 100644 --- a/config/sources/families/include/sunxi64_common.inc +++ b/config/sources/families/include/sunxi64_common.inc @@ -30,7 +30,7 @@ case $BRANCH in current) declare -g KERNEL_MAJOR_MINOR="6.6" # Major and minor versions of this kernel. - declare -g KERNELBRANCH="tag:v6.6.36" + declare -g KERNELBRANCH="tag:v6.6.37" ;; edge) diff --git a/config/sources/families/include/sunxi_common.inc b/config/sources/families/include/sunxi_common.inc index c15e6c8442b6..e82d78cdcd7f 100644 --- a/config/sources/families/include/sunxi_common.inc +++ b/config/sources/families/include/sunxi_common.inc @@ -31,7 +31,7 @@ case $BRANCH in current) declare -g KERNEL_MAJOR_MINOR="6.6" # Major and minor versions of this kernel. - declare -g KERNELBRANCH="tag:v6.6.36" + declare -g KERNELBRANCH="tag:v6.6.37" ;; edge) diff --git a/patch/kernel/archive/sunxi-6.6/patches.armbian/Sound-for-H616-H618-Allwinner-SOCs-arch-arm64-boot-dts-allwinne.patch b/patch/kernel/archive/sunxi-6.6/patches.armbian/Sound-for-H616-H618-Allwinner-SOCs-arch-arm64-boot-dts-allwinne.patch index d643b4c80741..ce86532651d6 100644 --- a/patch/kernel/archive/sunxi-6.6/patches.armbian/Sound-for-H616-H618-Allwinner-SOCs-arch-arm64-boot-dts-allwinne.patch +++ b/patch/kernel/archive/sunxi-6.6/patches.armbian/Sound-for-H616-H618-Allwinner-SOCs-arch-arm64-boot-dts-allwinne.patch @@ -2,20 +2,6 @@ From 1a8ee4f49169293e1144c2297db537a1e7de63ed Mon Sep 17 00:00:00 2001 From: Stephen Graf Date: Thu, 9 May 2024 20:59:34 -0700 Subject: Sound for H616, H618 Allwinner SOCs - arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi - arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi - drivers/clk/sunxi-ng/ccu-sun50i-h616.c include/sound/soc-dai.h - sound/soc/Kconfig sound/soc/Makefile sound/soc/soc-core.c - sound/soc/sunxi/Kconfig sound/soc/sunxi/Makefile - sound/soc/sunxi/sun50iw9-codec.c sound/soc/sunxi_v2/Kconfig - sound/soc/sunxi_v2/Makefile sound/soc/sunxi_v2/drv_hdmi.h - sound/soc/sunxi_v2/snd_sunxi_ahub.c sound/soc/sunxi_v2/snd_sunxi_ahub.h - sound/soc/sunxi_v2/snd_sunxi_ahub_dam.c - sound/soc/sunxi_v2/snd_sunxi_ahub_dam.h sound/soc/sunxi_v2/snd_sunxi_common.c - sound/soc/sunxi_v2/snd_sunxi_common.h sound/soc/sunxi_v2/snd_sunxi_log.h - sound/soc/sunxi_v2/snd_sunxi_mach.c sound/soc/sunxi_v2/snd_sunxi_mach.h - sound/soc/sunxi_v2/snd_sunxi_mach_utils.c - sound/soc/sunxi_v2/snd_sunxi_mach_utils.h Signed-off-by: Stephen Graf --- From b6fede0775707e13ffb44540dcc6b965f47e752b Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:43:49 +0300 Subject: [PATCH 6/8] mk_format_patch: fix shellcheck SC2045 (error) --- tools/mk_format_patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/mk_format_patch b/tools/mk_format_patch index d34ecbf9e2fe..31ef26ca3b7e 100755 --- a/tools/mk_format_patch +++ b/tools/mk_format_patch @@ -214,7 +214,7 @@ then # Remove non-existent patches if they have been renamed or are no longer applied. $(cd $target - for pt in $(ls) + for pt in ./*.patch do if test ! -f $tmp_dir/$target_name/$pt;then rm $pt;fi done @@ -222,7 +222,7 @@ then # Intelligent copying $(cd $tmp_dir/$target_name - for pt in $(ls) + for pt in ./*.patch do ii_cp $pt $target/$pt done From 7ab57a132cd673587cca75733a6ec90881857a7f Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Wed, 31 Jul 2024 10:36:44 +0300 Subject: [PATCH 7/8] sunxi-current: switch to tag:v6.6.43 --- config/sources/families/include/sunxi64_common.inc | 2 +- config/sources/families/include/sunxi_common.inc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/sources/families/include/sunxi64_common.inc b/config/sources/families/include/sunxi64_common.inc index 4900973dd5b3..9d70a919b3ee 100644 --- a/config/sources/families/include/sunxi64_common.inc +++ b/config/sources/families/include/sunxi64_common.inc @@ -30,7 +30,7 @@ case $BRANCH in current) declare -g KERNEL_MAJOR_MINOR="6.6" # Major and minor versions of this kernel. - declare -g KERNELBRANCH="tag:v6.6.37" + declare -g KERNELBRANCH="tag:v6.6.43" ;; edge) diff --git a/config/sources/families/include/sunxi_common.inc b/config/sources/families/include/sunxi_common.inc index e82d78cdcd7f..3fb4249950d5 100644 --- a/config/sources/families/include/sunxi_common.inc +++ b/config/sources/families/include/sunxi_common.inc @@ -31,7 +31,7 @@ case $BRANCH in current) declare -g KERNEL_MAJOR_MINOR="6.6" # Major and minor versions of this kernel. - declare -g KERNELBRANCH="tag:v6.6.37" + declare -g KERNELBRANCH="tag:v6.6.43" ;; edge) From 22d631755cb7713139136f747f8b6ef9d47006a3 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Thu, 1 Aug 2024 15:37:47 +0300 Subject: [PATCH 8/8] sunxi-6.6: exclude iio thermal sensors patches These patches are not needed for the kernel version 6.6 and later. In addition, they cause minor harm when measuring temperature, as they additionally calibrate the sensors. Today, all the work is done by drivers/thermal/sun8i_thermal.c --- patch/kernel/archive/sunxi-6.6/series.conf | 24 +++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/patch/kernel/archive/sunxi-6.6/series.conf b/patch/kernel/archive/sunxi-6.6/series.conf index 9514cde050bd..c80922884a38 100644 --- a/patch/kernel/archive/sunxi-6.6/series.conf +++ b/patch/kernel/archive/sunxi-6.6/series.conf @@ -263,18 +263,18 @@ patches.armbian/drv-gpu-drm-sun4i-Add-HDMI-audio-sun4i-hdmi-encoder.patch patches.armbian/drv-net-stmmac-dwmac-sun8i-second-EMAC-clock-register.patch patches.armbian/drv-phy-sun4i-usb-Allow-reset-line-to-be-shared.patch - patches.armbian/drv-iio-adc-sun4i-gpadc-iio-rename-A33-specified-registers-to-c.patch - patches.armbian/drv-iio-adc-sun4i-gpadc-iio-sampling-start-end-code-readout-reg.patch - patches.armbian/drv-iio-adc-sun4i-gpadc-iio-support-clocks-and-reset.patch - patches.armbian/drv-iio-adc-sun4i-gpadc-iio-multible-sensors-support.patch - patches.armbian/drv-iio-adc-sun4i-gpadc-iio-support-nvmem-calibration-data.patch - patches.armbian/drv-iio-adc-sun4i-gpadc-iio-add-interrupt-support.patch - patches.armbian/drv-iio-adc-sun4i-gpadc-iio-add-H3-thermal-sensor.patch - patches.armbian/drv-iio-adc-sun4i-gpadc-iio-add-A83T-thermal-sensor.patch - patches.armbian/drv-iio-adc-Kconfig-enable-A80-A64-H5-for-THS.patch - patches.armbian/drv-iio-adc-sun4i-gpadc-iio-add-A80-thermal-sensor.patch - patches.armbian/drv-iio-adc-sun4i-gpadc-iio-add-A64-thermal-sensor.patch - patches.armbian/drv-iio-sun4i-gpadc-iio-don-t-force-poweroff.patch +- patches.armbian/drv-iio-adc-sun4i-gpadc-iio-rename-A33-specified-registers-to-c.patch +- patches.armbian/drv-iio-adc-sun4i-gpadc-iio-sampling-start-end-code-readout-reg.patch +- patches.armbian/drv-iio-adc-sun4i-gpadc-iio-support-clocks-and-reset.patch +- patches.armbian/drv-iio-adc-sun4i-gpadc-iio-multible-sensors-support.patch +- patches.armbian/drv-iio-adc-sun4i-gpadc-iio-support-nvmem-calibration-data.patch +- patches.armbian/drv-iio-adc-sun4i-gpadc-iio-add-interrupt-support.patch +- patches.armbian/drv-iio-adc-sun4i-gpadc-iio-add-H3-thermal-sensor.patch +- patches.armbian/drv-iio-adc-sun4i-gpadc-iio-add-A83T-thermal-sensor.patch +- patches.armbian/drv-iio-adc-Kconfig-enable-A80-A64-H5-for-THS.patch +- patches.armbian/drv-iio-adc-sun4i-gpadc-iio-add-A80-thermal-sensor.patch +- patches.armbian/drv-iio-adc-sun4i-gpadc-iio-add-A64-thermal-sensor.patch +- patches.armbian/drv-iio-sun4i-gpadc-iio-don-t-force-poweroff.patch patches.armbian/drv-staging-media-sunxi-cedrus-add-H616-variant.patch patches.armbian/drv-soc-sunxi-sram-Add-SRAM-C1-H616-handling.patch patches.armbian/drv-media-dvb-frontends-si2168-fix-cmd-timeout.patch