diff --git a/userspace/wrsw_hal/hal_port_fsm.c b/userspace/wrsw_hal/hal_port_fsm.c
index 26c809d10bd198c416c88167d9bc61e1a7ab4615..71083871ef0294e675969d269bb1df9ed899e1a8 100644
--- a/userspace/wrsw_hal/hal_port_fsm.c
+++ b/userspace/wrsw_hal/hal_port_fsm.c
@@ -211,16 +211,18 @@ static int port_fsm_state_link_down(fsm_t *fsm, int eventMsk, int isNewState) {
 		led_set_wrmode(ps->hw_index, SFP_LED_WRMODE_OFF);
 		led_set_synched(ps->hw_index, 0);
 
-		lpdc_writel(ps,
-			    LPDC_MDIO_CTRL_RX_SW_RESET
-			    | LPDC_MDIO_CTRL_TX_ENABLE
-			    | LPDC_MDIO_CTRL_DMTD_SOURCE_RXRECCLK,
-			    LPDC_MDIO_CTRL);
-		shw_udelay(1);
-		lpdc_writel(ps,
-			    LPDC_MDIO_CTRL_TX_ENABLE
-			    | LPDC_MDIO_CTRL_DMTD_SOURCE_RXRECCLK,
-			    LPDC_MDIO_CTRL);
+		if (ps->lpdc.isSupported) {
+			lpdc_writel(ps,
+				    LPDC_MDIO_CTRL_RX_SW_RESET
+				    | LPDC_MDIO_CTRL_TX_ENABLE
+				    | LPDC_MDIO_CTRL_DMTD_SOURCE_RXRECCLK,
+				    LPDC_MDIO_CTRL);
+			shw_udelay(1);
+			lpdc_writel(ps,
+				    LPDC_MDIO_CTRL_TX_ENABLE
+				    | LPDC_MDIO_CTRL_DMTD_SOURCE_RXRECCLK,
+				    LPDC_MDIO_CTRL);
+		}
 	}
 
 	/* if final state reached for tx setup state machine then