From d3acb07ae52cd1e07661d853cb07895d324a847f Mon Sep 17 00:00:00 2001
From: huangcm <1263938474@qq.com>
Date: Sat, 12 Oct 2024 02:36:04 +0000
Subject: [PATCH] feat(board): fix poweroff & eth & hp pro

---
 longan/kernel/linux-4.9/sound/soc/sunxi/sun50iw10-sndcodec.c                                 |    7 +++++--
 android/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java |    5 +++++
 android/device/softwinner/ceres-c3/ceres_c3.mk                                               |    4 ++++
 android/frameworks/base/packages/SettingsProvider/res/values/defaults.xml                    |    2 +-
 longan/kernel/linux-4.9/drivers/net/ethernet/allwinner/sunxi-gmac.c                          |    7 ++++---
 5 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/android/device/softwinner/ceres-c3/ceres_c3.mk b/android/device/softwinner/ceres-c3/ceres_c3.mk
index b5c04a4..8db2d09 100755
--- a/android/device/softwinner/ceres-c3/ceres_c3.mk
+++ b/android/device/softwinner/ceres-c3/ceres_c3.mk
@@ -305,6 +305,10 @@
     persist.sys.country=US \
     persist.sys.language=en
 
+# holding wake lock
+PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
+    persist.sys.kickpi_holding_wakelock=true
+
 # stoarge
 PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
     persist.fw.force_adoptable=true
diff --git a/android/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/android/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
index cedcb52..6aa21d1 100644
--- a/android/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+++ b/android/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -127,7 +127,7 @@
     <integer name="def_multi_press_timeout_millis">300</integer>
 
     <!-- Default for Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD -->
-    <bool name="def_show_ime_with_hard_keyboard">false</bool>
+    <bool name="def_show_ime_with_hard_keyboard">true</bool>
 
     <!-- Default for Settings.System.POINTER_SPEED -->
     <integer name="def_pointer_speed">0</integer>
diff --git a/android/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java b/android/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
index d8ee9f8..bd6e73e 100644
--- a/android/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/android/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
@@ -2701,6 +2701,11 @@
             }
         }
 
+        if (SystemProperties.getBoolean("persist.sys.kickpi_holding_wakelock", false)){
+            Slog.d(TAG, "Holding wake lock suspend blocker");
+            return;
+        }
+
         // Then release suspend blockers if needed.
         if (!needWakeLockSuspendBlocker && mHoldingWakeLockSuspendBlocker) {
             mWakeLockSuspendBlocker.release();
diff --git a/longan/kernel/linux-4.9/drivers/net/ethernet/allwinner/sunxi-gmac.c b/longan/kernel/linux-4.9/drivers/net/ethernet/allwinner/sunxi-gmac.c
index e1f365c..68efc64 100644
--- a/longan/kernel/linux-4.9/drivers/net/ethernet/allwinner/sunxi-gmac.c
+++ b/longan/kernel/linux-4.9/drivers/net/ethernet/allwinner/sunxi-gmac.c
@@ -904,12 +904,13 @@
 		for (i = 0; i < ETH_ALEN; i++, p++)
 			ndev->dev_addr[i] = simple_strtoul(p, &p, 16);
 
-		if (!is_valid_ether_addr(ndev->dev_addr))
-			geth_chip_hwaddr(ndev->dev_addr);
+		// if (!is_valid_ether_addr(ndev->dev_addr)) {
+		// 	geth_chip_hwaddr(ndev->dev_addr);
+		// }
 
 		if (!is_valid_ether_addr(ndev->dev_addr)) {
 			random_ether_addr(ndev->dev_addr);
-			pr_warn("%s: Use random mac address\n", ndev->name);
+			pr_err("%s: Use random mac address\n", ndev->name);
 		}
 	}
 }
diff --git a/longan/kernel/linux-4.9/sound/soc/sunxi/sun50iw10-sndcodec.c b/longan/kernel/linux-4.9/sound/soc/sunxi/sun50iw10-sndcodec.c
index 6f621e8..f13f240 100644
--- a/longan/kernel/linux-4.9/sound/soc/sunxi/sun50iw10-sndcodec.c
+++ b/longan/kernel/linux-4.9/sound/soc/sunxi/sun50iw10-sndcodec.c
@@ -364,7 +364,8 @@
 		regval &= ~(0x1 << JACK_DET_IIN_ST);
 		regval |= 0x1 << JACK_DET_OUT_ST;
 		snd_soc_write(priv->codec, SUNXI_HMIC_STS, regval);
-		priv->detect_state = PLUG_OUT;
+		// priv->detect_state = PLUG_OUT;
+		priv->detect_state = PLUG_IN; // always plugin
 		schedule_delayed_work(&priv->hs_detect_work,
 				msecs_to_jiffies(10));
 	}
@@ -815,7 +816,7 @@
 	 * initial the parameters for judge switch state
 	 */
 	priv->HEADSET_DATA = 0x10;
-	priv->detect_state = PLUG_OUT;
+	priv->detect_state = PLUG_IN;
 	INIT_DELAYED_WORK(&priv->hs_detect_work, sunxi_check_hs_detect_status);
 	INIT_DELAYED_WORK(&priv->hs_button_work, sunxi_check_hs_button_status);
 	INIT_DELAYED_WORK(&priv->hs_init_work, sunxi_hs_init_work);
@@ -838,6 +839,8 @@
 
 	dev_warn(&pdev->dev, "[%s] register card finished.\n", __func__);
 
+	schedule_delayed_work(&priv->hs_detect_work, msecs_to_jiffies(10));
+
 	return 0;
 
 err_devm_kfree:

--
Gitblit v1.6.2