Merge tag 'lkdtm-next' of https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux...
[linux-2.6-microblaze.git] / drivers / soundwire / qcom.c
index da1ad7e..22b7063 100644 (file)
 
 #define SWRM_SPECIAL_CMD_ID    0xF
 #define MAX_FREQ_NUM           1
-#define TIMEOUT_MS             (2 * HZ)
+#define TIMEOUT_MS             100
 #define QCOM_SWRM_MAX_RD_LEN   0x1
 #define QCOM_SDW_MAX_PORTS     14
 #define DEFAULT_CLK_FREQ       9600000
@@ -510,12 +510,12 @@ static irqreturn_t qcom_swrm_wake_irq_handler(int irq, void *dev_id)
        struct qcom_swrm_ctrl *swrm = dev_id;
        int ret;
 
-       ret = pm_runtime_get_sync(swrm->dev);
+       ret = pm_runtime_resume_and_get(swrm->dev);
        if (ret < 0 && ret != -EACCES) {
                dev_err_ratelimited(swrm->dev,
-                                   "pm_runtime_get_sync failed in %s, ret %d\n",
+                                   "pm_runtime_resume_and_get failed in %s, ret %d\n",
                                    __func__, ret);
-               pm_runtime_put_noidle(swrm->dev);
+               return ret;
        }
 
        if (swrm->wake_irq > 0) {
@@ -1058,12 +1058,11 @@ static int qcom_swrm_startup(struct snd_pcm_substream *substream,
        struct snd_soc_dai *codec_dai;
        int ret, i;
 
-       ret = pm_runtime_get_sync(ctrl->dev);
+       ret = pm_runtime_resume_and_get(ctrl->dev);
        if (ret < 0 && ret != -EACCES) {
                dev_err_ratelimited(ctrl->dev,
-                                   "pm_runtime_get_sync failed in %s, ret %d\n",
+                                   "pm_runtime_resume_and_get failed in %s, ret %d\n",
                                    __func__, ret);
-               pm_runtime_put_noidle(ctrl->dev);
                return ret;
        }
 
@@ -1252,12 +1251,12 @@ static int swrm_reg_show(struct seq_file *s_file, void *data)
        struct qcom_swrm_ctrl *swrm = s_file->private;
        int reg, reg_val, ret;
 
-       ret = pm_runtime_get_sync(swrm->dev);
+       ret = pm_runtime_resume_and_get(swrm->dev);
        if (ret < 0 && ret != -EACCES) {
                dev_err_ratelimited(swrm->dev,
-                                   "pm_runtime_get_sync failed in %s, ret %d\n",
+                                   "pm_runtime_resume_and_get failed in %s, ret %d\n",
                                    __func__, ret);
-               pm_runtime_put_noidle(swrm->dev);
+               return ret;
        }
 
        for (reg = 0; reg <= SWR_MSTR_MAX_REG_ADDR; reg += 4) {
@@ -1452,7 +1451,7 @@ static bool swrm_wait_for_frame_gen_enabled(struct qcom_swrm_ctrl *swrm)
        } while (retry--);
 
        dev_err(swrm->dev, "%s: link status not %s\n", __func__,
-               comp_sts && SWRM_FRM_GEN_ENABLED ? "connected" : "disconnected");
+               comp_sts & SWRM_FRM_GEN_ENABLED ? "connected" : "disconnected");
 
        return false;
 }
@@ -1549,6 +1548,7 @@ static const struct dev_pm_ops swrm_dev_pm_ops = {
 static const struct of_device_id qcom_swrm_of_match[] = {
        { .compatible = "qcom,soundwire-v1.3.0", .data = &swrm_v1_3_data },
        { .compatible = "qcom,soundwire-v1.5.1", .data = &swrm_v1_5_data },
+       { .compatible = "qcom,soundwire-v1.6.0", .data = &swrm_v1_5_data },
        {/* sentinel */},
 };