diff --git a/include/hsl/phy/hsl_phy.h b/include/hsl/phy/hsl_phy.h
index 1cf083a..797099f 100755
--- a/include/hsl/phy/hsl_phy.h
+++ b/include/hsl/phy/hsl_phy.h
@@ -565,6 +565,7 @@
 
 #define INVALID_PHY_ADDR        0xff
 #define MAX_PHY_ADDR            0x1f
+#define QCA8072_PHY_NUM         0x2
 
 sw_error_t
 hsl_phy_api_ops_register(phy_type_t phy_type, hsl_phy_ops_t * phy_api_ops);
diff --git a/src/hsl/phy/malibu_phy.c b/src/hsl/phy/malibu_phy.c
index b604ecf..498c32d 100755
--- a/src/hsl/phy/malibu_phy.c
+++ b/src/hsl/phy/malibu_phy.c
@@ -2698,14 +2698,15 @@
 sw_error_t
 malibu_phy_hw_init(a_uint32_t dev_id, a_uint32_t port_bmp)
 {
-	a_uint32_t port_id = 0, phy_addr = 0;
+	a_uint32_t port_id = 0, phy_addr = 0, phy_cnt = 0;
 	a_uint16_t dac_value,led_status, phy_data;
-	a_uint32_t phy_id = 0, mode;
+	a_uint32_t mode;
 
 	for (port_id = 0; port_id < SW_MAX_NR_PORT; port_id ++)
 	{
 		if (port_bmp & (0x1 << port_id))
 		{
+			phy_cnt ++;
 			phy_addr = qca_ssdk_port_to_phy_addr(dev_id, port_id);
 			if (phy_addr < first_phy_addr)
 			{
@@ -2732,11 +2733,10 @@
 				MALIBU_PHY_MMD7_LED_1000_CTRL1, led_status);
 		}
 	}
-
-	malibu_phy_get_phy_id(dev_id, first_phy_addr, &phy_id);
-	/* software get 8072 phy chip's firstly address to init phy chip */
-	if ((phy_id == MALIBU_1_1_2PORT) && (first_phy_addr >= 0x3))
+	/* qca 8072 two ports phy chip's firstly address to init phy chip */
+	if ((phy_cnt == QCA8072_PHY_NUM) && (first_phy_addr >= 0x3)) {
 		first_phy_addr = first_phy_addr - 0x3;
+	}
 
 	/*workaround to enable AZ transmitting ability*/
 	malibu_phy_mmd_write(dev_id, first_phy_addr + 5, MALIBU_PHY_MMD1_NUM,
diff --git a/src/init/ssdk_init.c b/src/init/ssdk_init.c
index 0a713d0..05c355e 100755
--- a/src/init/ssdk_init.c
+++ b/src/init/ssdk_init.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014-2018, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2014-2019, The Linux Foundation. All rights reserved.
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
  * above copyright notice and this permission notice appear in all copies.
@@ -2156,13 +2156,12 @@
 		SSDK_INFO("PHY final test result: 0x%x \r\n",phy_t_status);
 
 }
-void ssdk_psgmii_self_test(a_uint32_t dev_id, a_bool_t enable, a_uint32_t times,
-				a_uint32_t *result)
+
+void ssdk_psgmii_get_first_phy_address(a_uint32_t dev_id,
+	a_uint32_t *first_phy_addr)
 {
-	int i = 0;
-	u32 value = 0;
+	a_uint32_t port_id = 0, phy_addr = 0, phy_cnt = 0;
 	a_uint32_t port_bmp[SW_MAX_NR_DEV] = {0};
-	a_uint32_t port_id = 0, first_phy_addr = 0, phy = 0;
 
 	port_bmp[dev_id] = qca_ssdk_phy_type_port_bmp_get(dev_id, MALIBU_PHY_CHIP);
 
@@ -2170,10 +2169,29 @@
 	{
 		if (port_bmp[dev_id] & (0x1 << port_id))
 		{
-			first_phy_addr = qca_ssdk_port_to_phy_addr(dev_id, port_id);
-				break;
+			phy_cnt ++;
+			phy_addr = qca_ssdk_port_to_phy_addr(dev_id, port_id);
+			if (phy_addr < *first_phy_addr) {
+				*first_phy_addr = phy_addr;
+			}
 		}
 	}
+	if ((phy_cnt == QCA8072_PHY_NUM) && (*first_phy_addr >= 0x3)) {
+		*first_phy_addr = *first_phy_addr - 3;
+	}
+}
+
+void ssdk_psgmii_self_test(a_uint32_t dev_id, a_bool_t enable, a_uint32_t times,
+				a_uint32_t *result)
+{
+	int i = 0;
+	u32 value = 0;
+	a_uint32_t first_phy_addr = MAX_PHY_ADDR + 1, phy = 0;
+
+	ssdk_psgmii_get_first_phy_address(dev_id, &first_phy_addr);
+	if ((first_phy_addr < 0) || (first_phy_addr > MAX_PHY_ADDR)) {
+		return;
+	}
 
 	if (enable == A_FALSE) {
 		ssdk_malibu_psgmii_and_dakota_dess_reset(dev_id, first_phy_addr);
@@ -2239,19 +2257,11 @@
 void clear_self_test_config(a_uint32_t dev_id)
 {
 	u32 value = 0;
-	a_uint32_t port_bmp[SW_MAX_NR_DEV] = {0};
-	a_uint32_t port_id = 0, first_phy_addr = 0, phy = 0;
+	a_uint32_t first_phy_addr = MAX_PHY_ADDR + 1, phy = 0;
 
-
-	port_bmp[dev_id] = qca_ssdk_phy_type_port_bmp_get(dev_id, MALIBU_PHY_CHIP);
-
-	for (port_id = 0; port_id < SW_MAX_NR_PORT; port_id ++)
-	{
-		if (port_bmp[dev_id] & (0x1 << port_id))
-		{
-			first_phy_addr = qca_ssdk_port_to_phy_addr(dev_id, port_id);
-				break;
-		}
+	ssdk_psgmii_get_first_phy_address(dev_id, &first_phy_addr);
+	if ((first_phy_addr < 0) || (first_phy_addr > MAX_PHY_ADDR)) {
+		return;
 	}
 
 	/* disable EEE */
