Merge tag 'asoc-fix-v5.14-rc2' of https://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / drivers / extcon / extcon-intel-mrfld.c
index f47016f..cd1a5f2 100644 (file)
@@ -197,6 +197,7 @@ static int mrfld_extcon_probe(struct platform_device *pdev)
        struct intel_soc_pmic *pmic = dev_get_drvdata(dev->parent);
        struct regmap *regmap = pmic->regmap;
        struct mrfld_extcon_data *data;
+       unsigned int status;
        unsigned int id;
        int irq, ret;
 
@@ -244,6 +245,14 @@ static int mrfld_extcon_probe(struct platform_device *pdev)
        /* Get initial state */
        mrfld_extcon_role_detect(data);
 
+       /*
+        * Cached status value is used for cable detection, see comments
+        * in mrfld_extcon_cable_detect(), we need to sync cached value
+        * with a real state of the hardware.
+        */
+       regmap_read(regmap, BCOVE_SCHGRIRQ1, &status);
+       data->status = status;
+
        mrfld_extcon_clear(data, BCOVE_MIRQLVL1, BCOVE_LVL1_CHGR);
        mrfld_extcon_clear(data, BCOVE_MCHGRIRQ1, BCOVE_CHGRIRQ_ALL);