diff --git a/arch/arm/mach-meson6/pm.c b/arch/arm/mach-meson6/pm.c
index 2c08ec1..9b865e7 100755
--- a/arch/arm/mach-meson6/pm.c
+++ b/arch/arm/mach-meson6/pm.c
@@ -1056,7 +1056,22 @@ static void power_off_unused_pll(void)
 }
 static void m6ref_set_vccx2(int power_on)
 {
-
+    if (power_on) {
+        printk(KERN_INFO "%s() Power ON\n", __FUNCTION__);
+        aml_clr_reg32_mask(P_PREG_PAD_GPIO0_EN_N,(1<<26));
+        aml_clr_reg32_mask(P_PREG_PAD_GPIO0_O,(1<<26));
+        
+        aml_set_reg32_bits(SECBUS2_REG_ADDR(0), 1, 0, 1);	// set TEST_n output mode
+        aml_set_reg32_bits(AOBUS_REG_ADDR(0x24), 1, 31, 1);  // set TEST_n pin H
+    }
+    else {
+        printk(KERN_INFO "%s() Power OFF\n", __FUNCTION__);
+        aml_clr_reg32_mask(P_PREG_PAD_GPIO0_EN_N,(1<<26));
+        aml_set_reg32_mask(P_PREG_PAD_GPIO0_O,(1<<26));
+        
+        aml_set_reg32_bits(SECBUS2_REG_ADDR(0), 1, 0, 1);	// set TEST_n output mode
+        aml_set_reg32_bits(AOBUS_REG_ADDR(0x24), 0, 31, 1);  // set TEST_n pin H
+    }
 }
 
 static struct meson_pm_config aml_pm_pdata = {
