* @edev: external connector used to detect vbus and iddig changes
 * @vbus_nb: notifier for vbus detection
 * @vbus_nb: notifier for iddig(idpin) detection
-* @extcon_reg_dwork: delay work for extcon notifier register, waiting for
-*              xHCI driver initialization, it's necessary for system bootup
-*              as device.
 * @is_u3_drd: whether port0 supports usb3.0 dual-role device or not
 * @manual_drd_enabled: it's true when supports dual-role device by debugfs
 *              to switch host/device modes depending on user input.
        struct extcon_dev *edev;
        struct notifier_block vbus_nb;
        struct notifier_block id_nb;
-       struct delayed_work extcon_reg_dwork;
        bool is_u3_drd;
        bool manual_drd_enabled;
 };
 
        return 0;
 }
 
-static void extcon_register_dwork(struct work_struct *work)
-{
-       struct delayed_work *dwork = to_delayed_work(work);
-       struct otg_switch_mtk *otg_sx =
-           container_of(dwork, struct otg_switch_mtk, extcon_reg_dwork);
-
-       ssusb_extcon_register(otg_sx);
-}
-
 /*
  * We provide an interface via debugfs to switch between host and device modes
  * depending on user input.
 {
        struct otg_switch_mtk *otg_sx = &ssusb->otg_switch;
 
-       if (otg_sx->manual_drd_enabled) {
+       if (otg_sx->manual_drd_enabled)
                ssusb_debugfs_init(ssusb);
-       } else {
-               INIT_DELAYED_WORK(&otg_sx->extcon_reg_dwork,
-                                 extcon_register_dwork);
-
-               /*
-                * It is enough to delay 1s for waiting for
-                * host initialization
-                */
-               schedule_delayed_work(&otg_sx->extcon_reg_dwork, HZ);
-       }
+       else
+               ssusb_extcon_register(otg_sx);
 
        return 0;
 }
 
        if (otg_sx->manual_drd_enabled)
                ssusb_debugfs_exit(ssusb);
-       else
-               cancel_delayed_work(&otg_sx->extcon_reg_dwork);
 }