Merge series "ASoC: cs42l42: Fix definition and handling of jack switch invert" from Richard Fitzgerald <rf@opensource.cirrus.com>:
Summary: The driver applied the opposite of the DT setting to the wrong register bit. The jack plug detect hardware in cs42l42 is somewhat confusing, compounded by an unclear description in the datasheet. This is most likely the reason that the driver implemented a DT property for the wrong register bit, that had the opposite effect of what was described in the binding. Changing the meaning of the property values isn't feasible; the driver dates from 2016 and the risk of breaking out-of-tree configs is too high (the property is also available to ACPI systems). So the fix is to make the binding doc match the actual behaviour and then fix the driver to apply it to the correct register bit. As a bonus, patch #3 converts the binding to yaml. Richard Fitzgerald (3): ASoC: dt-bindings: cs42l42: Correct description of ts-inv ASoC: cs42l42: Correct configuring of switch inversion from ts-inv ASoC: dt-bindings: cs42l42: Convert binding to yaml .../devicetree/bindings/sound/cirrus,cs42l42.yaml | 225 +++++++++++++++++++++ .../devicetree/bindings/sound/cs42l42.txt | 114 ----------- MAINTAINERS | 1 + sound/soc/codecs/cs42l42.c | 9 +- 4 files changed, 230 insertions(+), 119 deletions(-) create mode 100644 Documentation/devicetree/bindings/sound/cirrus,cs42l42.yaml delete mode 100644 Documentation/devicetree/bindings/sound/cs42l42.txt -- 2.11.0
This commit is contained in:
commit
1560081f4c
|
@ -19,13 +19,14 @@ Optional properties:
|
|||
(See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
|
||||
for further information relating to interrupt properties)
|
||||
|
||||
- cirrus,ts-inv : Boolean property. For jacks that invert the tip sense
|
||||
polarity. Normal jacks will short tip sense pin to HS1 when headphones are
|
||||
plugged in and leave tip sense floating when not plugged in. Inverting jacks
|
||||
short tip sense when unplugged and float when plugged in.
|
||||
- cirrus,ts-inv : Boolean property. Sets the behaviour of the jack plug
|
||||
detect switch.
|
||||
|
||||
0 = (Default) Non-inverted
|
||||
1 = Inverted
|
||||
0 = (Default) Shorted to tip when unplugged, open when plugged.
|
||||
This is "inverted tip sense (ITS)" in the datasheet.
|
||||
|
||||
1 = Open when unplugged, shorted to tip when plugged.
|
||||
This is "normal tip sense (TS)" in the datasheet.
|
||||
|
||||
- cirrus,ts-dbnc-rise : Debounce the rising edge of TIP_SENSE_PLUG. With no
|
||||
debounce, the tip sense pin might be noisy on a plug event.
|
||||
|
|
|
@ -1818,12 +1818,15 @@ static void cs42l42_setup_hs_type_detect(struct cs42l42_private *cs42l42)
|
|||
(1 << CS42L42_HS_CLAMP_DISABLE_SHIFT));
|
||||
|
||||
/* Enable the tip sense circuit */
|
||||
regmap_update_bits(cs42l42->regmap, CS42L42_TSENSE_CTL,
|
||||
CS42L42_TS_INV_MASK, CS42L42_TS_INV_MASK);
|
||||
|
||||
regmap_update_bits(cs42l42->regmap, CS42L42_TIPSENSE_CTL,
|
||||
CS42L42_TIP_SENSE_CTRL_MASK |
|
||||
CS42L42_TIP_SENSE_INV_MASK |
|
||||
CS42L42_TIP_SENSE_DEBOUNCE_MASK,
|
||||
(3 << CS42L42_TIP_SENSE_CTRL_SHIFT) |
|
||||
(0 << CS42L42_TIP_SENSE_INV_SHIFT) |
|
||||
(!cs42l42->ts_inv << CS42L42_TIP_SENSE_INV_SHIFT) |
|
||||
(2 << CS42L42_TIP_SENSE_DEBOUNCE_SHIFT));
|
||||
|
||||
/* Save the initial status of the tip sense */
|
||||
|
@ -1867,10 +1870,6 @@ static int cs42l42_handle_device_data(struct device *dev,
|
|||
cs42l42->ts_inv = CS42L42_TS_INV_DIS;
|
||||
}
|
||||
|
||||
regmap_update_bits(cs42l42->regmap, CS42L42_TSENSE_CTL,
|
||||
CS42L42_TS_INV_MASK,
|
||||
(cs42l42->ts_inv << CS42L42_TS_INV_SHIFT));
|
||||
|
||||
ret = device_property_read_u32(dev, "cirrus,ts-dbnc-rise", &val);
|
||||
if (!ret) {
|
||||
switch (val) {
|
||||
|
|
Loading…
Reference in New Issue