From 54bb95de0f4cfa07e63d3a668e1a2a4fcaf8c99f Mon Sep 17 00:00:00 2001 From: aiamadeus <2789289348@qq.com> Date: Thu, 18 Apr 2024 23:10:48 +0800 Subject: [PATCH] target: add some missing patches --- .../901-usb-add-more-modem-support.patch | 17 +- .../901-usb-add-more-modem-support.patch | 17 +- .../901-usb-add-more-modem-support.patch | 28 ++ ...16-Add-cpu-frequency-scaling-support.patch | 2 +- ...16-Add-cpu-frequency-scaling-support.patch | 270 ++++++++++++++++++ ...arm64-dts-allwinner-h616-Add-cpufreq.patch | 53 ++++ 6 files changed, 370 insertions(+), 17 deletions(-) create mode 100644 target/linux/generic/pending-6.6/901-usb-add-more-modem-support.patch create mode 100644 target/linux/sunxi/patches-6.6/501-h616-Add-cpu-frequency-scaling-support.patch create mode 100644 target/linux/sunxi/patches-6.6/502-arm64-dts-allwinner-h616-Add-cpufreq.patch diff --git a/target/linux/generic/pending-5.15/901-usb-add-more-modem-support.patch b/target/linux/generic/pending-5.15/901-usb-add-more-modem-support.patch index 53d3feeaf..706a22c34 100644 --- a/target/linux/generic/pending-5.15/901-usb-add-more-modem-support.patch +++ b/target/linux/generic/pending-5.15/901-usb-add-more-modem-support.patch @@ -12,16 +12,17 @@ {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */ --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c -@@ -2277,6 +2277,12 @@ static const struct usb_device_id option - { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a3, 0xff) }, /* Fibocom FM101-GL (laptop MBIM) */ +@@ -2278,9 +2278,13 @@ static const struct usb_device_id option { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a4, 0xff), /* Fibocom FM101-GL (laptop MBIM) */ .driver_info = RSVD(4) }, -+ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0a04, 0xff), /* Fibocom FM650 ECM */ -+ .driver_info = RSVD(5) }, -+ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0a05, 0xff), /* Fibocom FM650 NCM */ -+ .driver_info = RSVD(6) }, -+ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0a06, 0xff), /* Fibocom FM650 RNDIS */ -+ .driver_info = RSVD(6) }, { USB_DEVICE_INTERFACE_CLASS(0x2df3, 0x9d03, 0xff) }, /* LongSung M5710 */ ++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1402, 0xff) }, /* GosunCn GM800 (Download mode) */ ++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1403, 0xff) }, /* GosunCn GM800 (rmnet, old) */ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */ + { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1406, 0xff) }, /* GosunCn GM500 ECM/NCM */ ++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1421, 0xff) }, /* GosunCn GM800 (rmnet) */ ++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1422, 0xff) }, /* GosunCn GM800 (EAP) */ + { USB_DEVICE_AND_INTERFACE_INFO(OPPO_VENDOR_ID, OPPO_PRODUCT_R11, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0xff, 0x40) }, diff --git a/target/linux/generic/pending-6.1/901-usb-add-more-modem-support.patch b/target/linux/generic/pending-6.1/901-usb-add-more-modem-support.patch index 30d19e511..7d8ccc2c3 100644 --- a/target/linux/generic/pending-6.1/901-usb-add-more-modem-support.patch +++ b/target/linux/generic/pending-6.1/901-usb-add-more-modem-support.patch @@ -12,16 +12,17 @@ {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */ --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c -@@ -2277,6 +2277,12 @@ static const struct usb_device_id option - { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a3, 0xff) }, /* Fibocom FM101-GL (laptop MBIM) */ +@@ -2278,9 +2278,13 @@ static const struct usb_device_id option { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a4, 0xff), /* Fibocom FM101-GL (laptop MBIM) */ .driver_info = RSVD(4) }, -+ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0a04, 0xff), /* Fibocom FM650 ECM */ -+ .driver_info = RSVD(5) }, -+ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0a05, 0xff), /* Fibocom FM650 NCM */ -+ .driver_info = RSVD(6) }, -+ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0a06, 0xff), /* Fibocom FM650 RNDIS */ -+ .driver_info = RSVD(6) }, { USB_DEVICE_INTERFACE_CLASS(0x2df3, 0x9d03, 0xff) }, /* LongSung M5710 */ ++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1402, 0xff) }, /* GosunCn GM800 (Download mode) */ ++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1403, 0xff) }, /* GosunCn GM800 (rmnet, old) */ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */ + { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1406, 0xff) }, /* GosunCn GM500 ECM/NCM */ ++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1421, 0xff) }, /* GosunCn GM800 (rmnet) */ ++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1422, 0xff) }, /* GosunCn GM800 (EAP) */ + { USB_DEVICE_AND_INTERFACE_INFO(OPPO_VENDOR_ID, OPPO_PRODUCT_R11, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0xff, 0x40) }, diff --git a/target/linux/generic/pending-6.6/901-usb-add-more-modem-support.patch b/target/linux/generic/pending-6.6/901-usb-add-more-modem-support.patch new file mode 100644 index 000000000..fe983eab2 --- /dev/null +++ b/target/linux/generic/pending-6.6/901-usb-add-more-modem-support.patch @@ -0,0 +1,28 @@ +--- a/drivers/net/usb/qmi_wwan.c ++++ b/drivers/net/usb/qmi_wwan.c +@@ -1431,6 +1431,9 @@ static const struct usb_device_id produc + {QMI_FIXED_INTF(0x2692, 0x9025, 4)}, /* Cellient MPL200 (rebranded Qualcomm 05c6:9025) */ + {QMI_QUIRK_SET_DTR(0x1546, 0x1312, 4)}, /* u-blox LARA-R6 01B */ + {QMI_QUIRK_SET_DTR(0x1546, 0x1342, 4)}, /* u-blox LARA-L6 */ ++ {QMI_FIXED_INTF(0x2077, 0x2002, 4)}, /* T&W TW04C */ ++ {QMI_FIXED_INTF(0x2077, 0x2003, 4)}, /* T&W TW12G */ ++ {QMI_FIXED_INTF(0x2077, 0x2004, 4)}, /* T&W TW510M */ + + /* 4. Gobi 1000 devices */ + {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */ +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -2278,9 +2278,13 @@ static const struct usb_device_id option + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a4, 0xff), /* Fibocom FM101-GL (laptop MBIM) */ + .driver_info = RSVD(4) }, + { USB_DEVICE_INTERFACE_CLASS(0x2df3, 0x9d03, 0xff) }, /* LongSung M5710 */ ++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1402, 0xff) }, /* GosunCn GM800 (Download mode) */ ++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1403, 0xff) }, /* GosunCn GM800 (rmnet, old) */ + { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */ + { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */ + { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1406, 0xff) }, /* GosunCn GM500 ECM/NCM */ ++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1421, 0xff) }, /* GosunCn GM800 (rmnet) */ ++ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1422, 0xff) }, /* GosunCn GM800 (EAP) */ + { USB_DEVICE_AND_INTERFACE_INFO(OPPO_VENDOR_ID, OPPO_PRODUCT_R11, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0xff, 0x40) }, diff --git a/target/linux/sunxi/patches-6.1/501-h616-Add-cpu-frequency-scaling-support.patch b/target/linux/sunxi/patches-6.1/501-h616-Add-cpu-frequency-scaling-support.patch index d6f9eb805..71e8b7eae 100644 --- a/target/linux/sunxi/patches-6.1/501-h616-Add-cpu-frequency-scaling-support.patch +++ b/target/linux/sunxi/patches-6.1/501-h616-Add-cpu-frequency-scaling-support.patch @@ -30,7 +30,7 @@ Signed-off-by: AGM1968 + opp-microvolt-speed1 = <880000 880000 1100000>; + opp-microvolt-speed2 = <880000 880000 1100000>; + }; -+ ++ + opp-600000000 { + clock-latency-ns = <244144>; /* 8 32k periods */ + opp-hz = /bits/ 64 <600000000>; diff --git a/target/linux/sunxi/patches-6.6/501-h616-Add-cpu-frequency-scaling-support.patch b/target/linux/sunxi/patches-6.6/501-h616-Add-cpu-frequency-scaling-support.patch new file mode 100644 index 000000000..62e88a091 --- /dev/null +++ b/target/linux/sunxi/patches-6.6/501-h616-Add-cpu-frequency-scaling-support.patch @@ -0,0 +1,270 @@ +From 0000000000000000000000000000000000000000 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 + +Signed-off-by: AGM1968 +--- + arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi | 75 ++++++++ + drivers/cpufreq/cpufreq-dt-platdev.c | 1 + + drivers/cpufreq/sun50i-cpufreq-nvmem.c | 91 +++++++--- + 3 files changed, 143 insertions(+), 24 deletions(-) + +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-cpu-opp.dtsi +@@ -0,0 +1,75 @@ ++//SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++//Testing Version 1 from: AGM1968 ++//Noted: PLL_CPUX = 24 MHz*N/P (WIP) ++ ++/ { ++ cpu_opp_table: opp-table-cpu { ++ compatible = "allwinner,sun50i-h616-operating-points"; ++ nvmem-cells = <&cpu_speed_grade>; ++ opp-shared; ++ ++ opp-480000000 { ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ opp-hz = /bits/ 64 <480000000>; ++ opp-microvolt-speed0 = <820000 820000 1100000>; ++ opp-microvolt-speed1 = <880000 880000 1100000>; ++ opp-microvolt-speed2 = <880000 880000 1100000>; ++ }; ++ ++ opp-600000000 { ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ opp-hz = /bits/ 64 <600000000>; ++ opp-microvolt-speed0 = <820000 820000 1100000>; ++ opp-microvolt-speed1 = <880000 880000 1100000>; ++ opp-microvolt-speed2 = <880000 880000 1100000>; ++ }; ++ ++ opp-792000000 { ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ opp-hz = /bits/ 64 <792000000>; ++ opp-microvolt-speed0 = <860000 860000 1100000>; ++ opp-microvolt-speed1 = <940000 940000 1100000>; ++ opp-microvolt-speed2 = <940000 940000 1100000>; ++ }; ++ ++ opp-1008000000 { ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ opp-hz = /bits/ 64 <1008000000>; ++ opp-microvolt-speed0 = <900000 900000 1100000>; ++ opp-microvolt-speed1 = <1020000 1020000 1100000>; ++ opp-microvolt-speed2 = <1020000 1020000 1100000>; ++ }; ++ ++ opp-1200000000 { ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ opp-hz = /bits/ 64 <1200000000>; ++ opp-microvolt-speed0 = <960000 960000 1100000>; ++ opp-microvolt-speed1 = <1100000 1100000 1100000>; ++ opp-microvolt-speed2 = <1100000 1100000 1100000>; ++ }; ++ ++ opp-1512000000 { ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ opp-hz = /bits/ 64 <1512000000>; ++ opp-microvolt-speed0 = <1100000 1100000 1100000>; ++ opp-microvolt-speed1 = <1100000 1100000 1100000>; ++ opp-microvolt-speed2 = <1100000 1100000 1100000>; ++ }; ++ }; ++}; ++ ++&cpu0 { ++ operating-points-v2 = <&cpu_opp_table>; ++}; ++ ++&cpu1 { ++ operating-points-v2 = <&cpu_opp_table>; ++}; ++ ++&cpu2 { ++ operating-points-v2 = <&cpu_opp_table>; ++}; ++ ++&cpu3 { ++ operating-points-v2 = <&cpu_opp_table>; ++}; +--- a/drivers/cpufreq/cpufreq-dt-platdev.c ++++ b/drivers/cpufreq/cpufreq-dt-platdev.c +@@ -104,6 +104,8 @@ static const struct of_device_id allowli + */ + static const struct of_device_id blocklist[] __initconst = { + { .compatible = "allwinner,sun50i-h6", }, ++ { .compatible = "allwinner,sun50i-h616", }, ++ { .compatible = "allwinner,sun50i-h618", }, + + { .compatible = "apple,arm-platform", }, + +--- a/drivers/cpufreq/sun50i-cpufreq-nvmem.c ++++ b/drivers/cpufreq/sun50i-cpufreq-nvmem.c +@@ -6,6 +6,9 @@ + * provide the OPP framework with required information. + * + * Copyright (C) 2019 Yangtao Li ++ * ++ * ADD efuse_xlate to extract SoC version so that h6 and h616 can coexist. ++ * Version 1 AGM1968 + */ + + #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +@@ -20,25 +23,62 @@ + + #define MAX_NAME_LEN 7 + +-#define NVMEM_MASK 0x7 +-#define NVMEM_SHIFT 5 ++#define SUN50I_H616_NVMEM_MASK 0x22 ++#define SUN50I_H616_NVMEM_SHIFT 5 ++#define SUN50I_H6_NVMEM_MASK 0x7 ++#define SUN50I_H6_NVMEM_SHIFT 5 ++ ++struct sunxi_cpufreq_soc_data { ++ u32 (*efuse_xlate) (void *efuse); ++}; + + static struct platform_device *cpufreq_dt_pdev, *sun50i_cpufreq_pdev; + ++static u32 sun50i_h616_efuse_xlate(void *efuse) ++{ ++ u32 efuse_value = (*(u32 *)efuse >> SUN50I_H616_NVMEM_SHIFT) & ++ SUN50I_H616_NVMEM_MASK; ++ ++ /* Tested as V1 h616 soc. Expected efuse values are 1 - 3, ++ slowest to fastest */ ++ if (efuse_value >=1 && efuse_value <= 3) ++ return efuse_value - 1; ++ else ++ return 0; ++}; ++ ++static u32 sun50i_h6_efuse_xlate(void *efuse) ++{ ++ u32 efuse_value = (*(u32 *)efuse >> SUN50I_H6_NVMEM_SHIFT) & ++ SUN50I_H6_NVMEM_MASK; ++ ++ /* ++ * We treat unexpected efuse values as if the SoC was from ++ * the slowest bin. Expected efuse values are 1 - 3, slowest ++ * to fastest. ++ */ ++ if (efuse_value >= 1 && efuse_value <= 3) ++ return efuse_value - 1; ++ else ++ return 0; ++}; ++ ++ + /** + * sun50i_cpufreq_get_efuse() - Determine speed grade from efuse value ++ * @soc_data: pointer to sunxi_cpufreq_soc_data context + * @versions: Set to the value parsed from efuse + * + * Returns 0 if success. + */ +-static int sun50i_cpufreq_get_efuse(u32 *versions) ++static int sun50i_cpufreq_get_efuse(const struct sunxi_cpufreq_soc_data *soc_data, ++ u32 *versions) + { + struct nvmem_cell *speedbin_nvmem; + struct device_node *np; + struct device *cpu_dev; +- u32 *speedbin, efuse_value; ++ u32 *speedbin; + size_t len; +- int ret; + + cpu_dev = get_cpu_device(0); + if (!cpu_dev) +@@ -47,10 +87,9 @@ static int sun50i_cpufreq_get_efuse(u32 + np = dev_pm_opp_of_get_opp_desc_node(cpu_dev); + if (!np) + return -ENOENT; +- +- ret = of_device_is_compatible(np, +- "allwinner,sun50i-h6-operating-points"); +- if (!ret) { ++ if (of_device_is_compatible(np, "allwinner,sun50i-h6-operating-points")) {} ++ else if (of_device_is_compatible(np, "allwinner,sun50i-h616-operating-points")) {} ++ else { + of_node_put(np); + return -ENOENT; + } +@@ -66,17 +105,7 @@ static int sun50i_cpufreq_get_efuse(u32 + if (IS_ERR(speedbin)) + return PTR_ERR(speedbin); + +- efuse_value = (*speedbin >> NVMEM_SHIFT) & NVMEM_MASK; +- +- /* +- * We treat unexpected efuse values as if the SoC was from +- * the slowest bin. Expected efuse values are 1-3, slowest +- * to fastest. +- */ +- if (efuse_value >= 1 && efuse_value <= 3) +- *versions = efuse_value - 1; +- else +- *versions = 0; ++ *versions = soc_data->efuse_xlate(speedbin); + + kfree(speedbin); + return 0; +@@ -84,18 +113,23 @@ static int sun50i_cpufreq_get_efuse(u32 + + static int sun50i_cpufreq_nvmem_probe(struct platform_device *pdev) + { ++ const struct of_device_id *match; + int *opp_tokens; + char name[MAX_NAME_LEN]; + unsigned int cpu; + u32 speed = 0; + int ret; + ++ match = dev_get_platdata(&pdev->dev); ++ if (!match) ++ return -EINVAL; ++ + opp_tokens = kcalloc(num_possible_cpus(), sizeof(*opp_tokens), + GFP_KERNEL); + if (!opp_tokens) + return -ENOMEM; + +- ret = sun50i_cpufreq_get_efuse(&speed); ++ ret = sun50i_cpufreq_get_efuse(match-> data, &speed); + if (ret) { + kfree(opp_tokens); + return ret; +@@ -158,8 +192,18 @@ static struct platform_driver sun50i_cpu + }, + }; + ++static const struct sunxi_cpufreq_soc_data sun50i_h616_data = { ++ .efuse_xlate = sun50i_h616_efuse_xlate, ++}; ++ ++static const struct sunxi_cpufreq_soc_data sun50i_h6_data = { ++ .efuse_xlate = sun50i_h6_efuse_xlate, ++}; ++ + static const struct of_device_id sun50i_cpufreq_match_list[] = { +- { .compatible = "allwinner,sun50i-h6" }, ++ { .compatible = "allwinner,sun50i-h6", .data = &sun50i_h6_data }, ++ { .compatible = "allwinner,sun50i-h616", .data = &sun50i_h616_data }, ++ { .compatible = "allwinner,sun50i-h618", .data = &sun50i_h616_data }, + {} + }; + MODULE_DEVICE_TABLE(of, sun50i_cpufreq_match_list); +@@ -195,8 +239,8 @@ static int __init sun50i_cpufreq_init(vo + return ret; + + sun50i_cpufreq_pdev = +- platform_device_register_simple("sun50i-cpufreq-nvmem", +- -1, NULL, 0); ++ platform_device_register_data(NULL, ++ "sun50i-cpufreq-nvmem", -1, match, sizeof(*match)); + ret = PTR_ERR_OR_ZERO(sun50i_cpufreq_pdev); + if (ret == 0) + return 0; diff --git a/target/linux/sunxi/patches-6.6/502-arm64-dts-allwinner-h616-Add-cpufreq.patch b/target/linux/sunxi/patches-6.6/502-arm64-dts-allwinner-h616-Add-cpufreq.patch new file mode 100644 index 000000000..d7554e106 --- /dev/null +++ b/target/linux/sunxi/patches-6.6/502-arm64-dts-allwinner-h616-Add-cpufreq.patch @@ -0,0 +1,53 @@ +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +@@ -143,6 +143,10 @@ + ths_calibration: thermal-sensor-calibration@14 { + reg = <0x14 0x8>; + }; ++ ++ cpu_speed_grade: cpu_speed_grade@0 { ++ reg = <0x0 0x2>; ++ }; + }; + + watchdog: watchdog@30090a0 { +--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts +@@ -6,12 +6,17 @@ + /dts-v1/; + + #include "sun50i-h616-orangepi-zero.dtsi" ++#include "sun50i-h616-cpu-opp.dtsi" + + / { + model = "OrangePi Zero2"; + compatible = "xunlong,orangepi-zero2", "allwinner,sun50i-h616"; + }; + ++&cpu0 { ++ cpu-supply = <®_dcdca>; ++}; ++ + &emac0 { + allwinner,rx-delay-ps = <3100>; + allwinner,tx-delay-ps = <700>; +--- 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,17 @@ + /dts-v1/; + + #include "sun50i-h616-orangepi-zero.dtsi" ++#include "sun50i-h616-cpu-opp.dtsi" + + / { + model = "OrangePi Zero3"; + compatible = "xunlong,orangepi-zero3", "allwinner,sun50i-h618"; + }; + ++&cpu0 { ++ cpu-supply = <®_dcdc2>; ++}; ++ + &emac0 { + allwinner,tx-delay-ps = <700>; + phy-mode = "rgmii-rxid";