Schedule link reset if failed to perform runtime suspend or resume.
Set active runtime pm stte on link reset
to clean runtimr pm error, if present.
Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
 #include <linux/kthread.h>
 #include <linux/interrupt.h>
+#include <linux/pm_runtime.h>
 
 #include "mei_dev.h"
 #include "hbm.h"
                }
        }
 
+       pm_runtime_set_active(dev->dev);
+
        hcsr = mei_hcsr_read(dev);
        /* H_RST may be found lit before reset is started,
         * for example if preceding reset flow hasn't completed.
 
 #include <linux/delay.h>
 #include <linux/kthread.h>
 #include <linux/irqreturn.h>
+#include <linux/pm_runtime.h>
 
 #include <linux/mei.h>
 
                return ret;
        }
 
+       pm_runtime_set_active(dev->dev);
+
        /* enable input ready interrupts:
         * SEC_IPC_HOST_INT_MASK.IPC_INPUT_READY_INT_MASK
         */
 
 
        dev_dbg(&pdev->dev, "rpm: me: runtime suspend ret=%d\n", ret);
 
+       if (ret && ret != -EAGAIN)
+               schedule_work(&dev->reset_work);
+
        return ret;
 }
 
 
        dev_dbg(&pdev->dev, "rpm: me: runtime resume ret = %d\n", ret);
 
+       if (ret)
+               schedule_work(&dev->reset_work);
+
        return ret;
 }
 
 
        dev_dbg(&pdev->dev, "rpm: txe: runtime suspend ret=%d\n", ret);
 
        mutex_unlock(&dev->device_lock);
+
+       if (ret && ret != -EAGAIN)
+               schedule_work(&dev->reset_work);
+
        return ret;
 }
 
 
        dev_dbg(&pdev->dev, "rpm: txe: runtime resume ret = %d\n", ret);
 
+       if (ret)
+               schedule_work(&dev->reset_work);
+
        return ret;
 }