static void mhi_ep_reset_worker(struct work_struct *work)
 {
        struct mhi_ep_cntrl *mhi_cntrl = container_of(work, struct mhi_ep_cntrl, reset_work);
-       struct device *dev = &mhi_cntrl->mhi_dev->dev;
        enum mhi_state cur_state;
-       int ret;
 
-       mhi_ep_abort_transfer(mhi_cntrl);
+       mhi_ep_power_down(mhi_cntrl);
 
        spin_lock_bh(&mhi_cntrl->state_lock);
        /* Reset MMIO to signal host that the MHI_RESET is completed in endpoint */
         * issue reset during shutdown also and we don't need to do re-init in
         * that case.
         */
-       if (cur_state == MHI_STATE_SYS_ERR) {
-               mhi_ep_mmio_init(mhi_cntrl);
-
-               /* Set AMSS EE before signaling ready state */
-               mhi_ep_mmio_set_env(mhi_cntrl, MHI_EE_AMSS);
-
-               /* All set, notify the host that we are ready */
-               ret = mhi_ep_set_ready_state(mhi_cntrl);
-               if (ret)
-                       return;
-
-               dev_dbg(dev, "READY state notification sent to the host\n");
-
-               ret = mhi_ep_enable(mhi_cntrl);
-               if (ret) {
-                       dev_err(dev, "Failed to enable MHI endpoint: %d\n", ret);
-                       return;
-               }
-
-               enable_irq(mhi_cntrl->irq);
-       }
+       if (cur_state == MHI_STATE_SYS_ERR)
+               mhi_ep_power_up(mhi_cntrl);
 }
 
 /*
 
 void mhi_ep_power_down(struct mhi_ep_cntrl *mhi_cntrl)
 {
-       if (mhi_cntrl->enabled)
+       if (mhi_cntrl->enabled) {
                mhi_ep_abort_transfer(mhi_cntrl);
-
-       kfree(mhi_cntrl->mhi_event);
-       disable_irq(mhi_cntrl->irq);
+               kfree(mhi_cntrl->mhi_event);
+               disable_irq(mhi_cntrl->irq);
+       }
 }
 EXPORT_SYMBOL_GPL(mhi_ep_power_down);