mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-19 00:54:41 +08:00
extcon: intel-cht-wc: Use new cht_wc_model intel_soc_pmic field
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>
This commit is contained in:
parent
4b32649140
commit
b910a9cea8
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user