mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
usb: typec: maxim_contaminant: disable low power mode when reading comparator values
Low power mode is enabled when reading CC resistance as part of
`max_contaminant_read_resistance_kohm()` and left in that state.
However, it's supposed to work with 1uA current source. To read CC
comparator values current source is changed to 80uA. This causes a storm
of CC interrupts as it (falsely) detects a potential contaminant. To
prevent this, disable low power mode current sourcing before reading
comparator values.
Fixes: 02b332a063
("usb: typec: maxim_contaminant: Implement check_contaminant callback")
Cc: stable <stable@kernel.org>
Signed-off-by: Amit Sunil Dhamne <amitsd@google.com>
Reviewed-by: Badhri Jagan Sridharan <badhri@google.com>
Rule: add
Link: https://lore.kernel.org/stable/20250814-fix-upstream-contaminant-v1-1-801ce8089031%40google.com
Link: https://lore.kernel.org/r/20250815-fix-upstream-contaminant-v2-1-6c8d6c3adafb@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
45eae113dc
commit
cabb6c5f4d
@ -188,6 +188,11 @@ static int max_contaminant_read_comparators(struct max_tcpci_chip *chip, u8 *ven
|
|||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
/* Disable low power mode */
|
||||||
|
ret = regmap_update_bits(regmap, TCPC_VENDOR_CC_CTRL2, CCLPMODESEL,
|
||||||
|
FIELD_PREP(CCLPMODESEL,
|
||||||
|
LOW_POWER_MODE_DISABLE));
|
||||||
|
|
||||||
/* Sleep to allow comparators settle */
|
/* Sleep to allow comparators settle */
|
||||||
usleep_range(5000, 6000);
|
usleep_range(5000, 6000);
|
||||||
ret = regmap_update_bits(regmap, TCPC_TCPC_CTRL, TCPC_TCPC_CTRL_ORIENTATION, PLUG_ORNT_CC1);
|
ret = regmap_update_bits(regmap, TCPC_TCPC_CTRL, TCPC_TCPC_CTRL_ORIENTATION, PLUG_ORNT_CC1);
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#define CCOVPDIS BIT(6)
|
#define CCOVPDIS BIT(6)
|
||||||
#define SBURPCTRL BIT(5)
|
#define SBURPCTRL BIT(5)
|
||||||
#define CCLPMODESEL GENMASK(4, 3)
|
#define CCLPMODESEL GENMASK(4, 3)
|
||||||
|
#define LOW_POWER_MODE_DISABLE 0
|
||||||
#define ULTRA_LOW_POWER_MODE 1
|
#define ULTRA_LOW_POWER_MODE 1
|
||||||
#define CCRPCTRL GENMASK(2, 0)
|
#define CCRPCTRL GENMASK(2, 0)
|
||||||
#define UA_1_SRC 1
|
#define UA_1_SRC 1
|
||||||
|
Loading…
Reference in New Issue
Block a user