{
        enum gpio_result gpio_result;
        uint32_t clock_pin = 0;
-
+       uint8_t retry = 0;
        struct ddc *ddc;
 
        enum connector_id connector_id =
                return present;
        }
 
-       /* Read GPIO: DP sink is present if both clock and data pins are zero */
-       /* [anaumov] in DAL2, there was no check for GPIO failure */
-
-       gpio_result = dal_gpio_get_value(ddc->pin_clock, &clock_pin);
-       ASSERT(gpio_result == GPIO_RESULT_OK);
+       /*
+        * Read GPIO: DP sink is present if both clock and data pins are zero
+        *
+        * [W/A] plug-unplug DP cable, sometimes customer board has
+        * one short pulse on clk_pin(1V, < 1ms). DP will be config to HDMI/DVI
+        * then monitor can't br light up. Add retry 3 times
+        * But in real passive dongle, it need additional 3ms to detect
+        */
+       do {
+               gpio_result = dal_gpio_get_value(ddc->pin_clock, &clock_pin);
+               ASSERT(gpio_result == GPIO_RESULT_OK);
+               if (clock_pin)
+                       udelay(1000);
+               else
+                       break;
+       } while (retry++ < 3);
 
        present = (gpio_result == GPIO_RESULT_OK) && !clock_pin;