extcon: intel-cht-wc: Use new cht_wc_model intel_soc_pmic field
authorHans de Goede <hdegoede@redhat.com>
Tue, 1 Feb 2022 13:07:02 +0000 (14:07 +0100)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Tue, 1 Feb 2022 13:55:12 +0000 (14:55 +0100)
The CHT_WC_VBUS_GPIO_CTLO GPIO actually driving an external 5V Vboost
converter for Vbus depends on the board on which the Cherry Trail -
Whiskey Cove PMIC is actually used.

Since the information about the exact PMIC setup is necessary in other
places too, struct intel_soc_pmic now has a new cht_wc_model field
indicating the board model.

Only poke the CHT_WC_VBUS_GPIO_CTLO GPIO if this new field is set to
INTEL_CHT_WC_GPD_WIN_POCKET, which indicates the Type-C (with PD and
DP-altmode) setup used on the GPD pocket and GPD win; and on which
this GPIO actually controls an external 5V Vboost converter.

Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/extcon/extcon-intel-cht-wc.c

index 771f6f4..81cae8c 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
 #include <linux/platform_device.h>
+#include <linux/property.h>
 #include <linux/regmap.h>
 #include <linux/slab.h>
 
@@ -358,20 +359,26 @@ static int cht_wc_extcon_probe(struct platform_device *pdev)
        if (IS_ERR(ext->edev))
                return PTR_ERR(ext->edev);
 
-       /*
-        * When a host-cable is detected the BIOS enables an external 5v boost
-        * converter to power connected devices there are 2 problems with this:
-        * 1) This gets seen by the external battery charger as a valid Vbus
-        *    supply and it then tries to feed Vsys from this creating a
-        *    feedback loop which causes aprox. 300 mA extra battery drain
-        *    (and unless we drive the external-charger-disable pin high it
-        *    also tries to charge the battery causing even more feedback).
-        * 2) This gets seen by the pwrsrc block as a SDP USB Vbus supply
-        * Since the external battery charger has its own 5v boost converter
-        * which does not have these issues, we simply turn the separate
-        * external 5v boost converter off and leave it off entirely.
-        */
-       cht_wc_extcon_set_5v_boost(ext, false);
+       switch (pmic->cht_wc_model) {
+       case INTEL_CHT_WC_GPD_WIN_POCKET:
+               /*
+                * When a host-cable is detected the BIOS enables an external 5v boost
+                * converter to power connected devices there are 2 problems with this:
+                * 1) This gets seen by the external battery charger as a valid Vbus
+                *    supply and it then tries to feed Vsys from this creating a
+                *    feedback loop which causes aprox. 300 mA extra battery drain
+                *    (and unless we drive the external-charger-disable pin high it
+                *    also tries to charge the battery causing even more feedback).
+                * 2) This gets seen by the pwrsrc block as a SDP USB Vbus supply
+                * Since the external battery charger has its own 5v boost converter
+                * which does not have these issues, we simply turn the separate
+                * external 5v boost converter off and leave it off entirely.
+                */
+               cht_wc_extcon_set_5v_boost(ext, false);
+               break;
+       default:
+               break;
+       }
 
        /* Enable sw control */
        ret = cht_wc_extcon_sw_control(ext, true);