2022-09-19 11:27:59

by Astrid Rost

[permalink] [raw]
Subject: [PATCH v3 0/3] ASoC: ts3a227e control debounce times

From: Astrid Rost <[email protected]>

PATCH 1 - convert ts3a227e bindings to yaml.
PATCH 2 - add ts3a227e bindings to support debounce times.
PATCH 3 - add ts3a227e driver to support debounce times.

v2 -> v3
Changes in the yaml file:
- Renamed ts3a227e.yaml to ti,ts3a227e.yaml.
- Changed "ti,micbias" default value to the reset register value.
- Skipped some obvious descriptions.
- Removed unused include.
- Node name is "audio-controller".
- Removed register value from the description.

Signed-off-by: Astrid Rost <[email protected]>


Astrid Rost (3):
dt-bindings: sound: ti,ts3a227e: convert to yaml
dt-bindings: sound: ti,s3a227e: add control of debounce
ASoC: ts3a227e: add parameters to control debounce times

.../bindings/sound/ti,ts3a227e.yaml | 94 +++++++++++++++++++
.../devicetree/bindings/sound/ts3a227e.txt | 30 ------
sound/soc/codecs/ts3a227e.c | 58 ++++++++++--
3 files changed, 146 insertions(+), 36 deletions(-)
create mode 100644 Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
delete mode 100644 Documentation/devicetree/bindings/sound/ts3a227e.txt

--
2.20.1


2022-09-19 11:31:46

by Astrid Rost

[permalink] [raw]
Subject: [PATCH v3 3/3] ASoC: ts3a227e: add parameters to control debounce times

Add devicetree parameters to control the insert, release and press
debounce times.

Signed-off-by: Astrid Rost <[email protected]>
---
sound/soc/codecs/ts3a227e.c | 58 +++++++++++++++++++++++++++++++++----
1 file changed, 52 insertions(+), 6 deletions(-)

diff --git a/sound/soc/codecs/ts3a227e.c b/sound/soc/codecs/ts3a227e.c
index d8ab0810fceb..f2d1367c46ca 100644
--- a/sound/soc/codecs/ts3a227e.c
+++ b/sound/soc/codecs/ts3a227e.c
@@ -78,12 +78,20 @@ static const int ts3a227e_buttons[] = {
#define ADC_COMPLETE_INT_DISABLE 0x04
#define INTB_DISABLE 0x08

+/* TS3A227E_REG_SETTING_1 0x4 */
+#define DEBOUNCE_INSERTION_SETTING_SFT (0)
+#define DEBOUNCE_INSERTION_SETTING_MASK (0x7 << DEBOUNCE_PRESS_SETTING_SFT)
+
/* TS3A227E_REG_SETTING_2 0x05 */
#define KP_ENABLE 0x04

/* TS3A227E_REG_SETTING_3 0x06 */
-#define MICBIAS_SETTING_SFT (3)
+#define MICBIAS_SETTING_SFT 3
#define MICBIAS_SETTING_MASK (0x7 << MICBIAS_SETTING_SFT)
+#define DEBOUNCE_RELEASE_SETTING_SFT 2
+#define DEBOUNCE_RELEASE_SETTING_MASK (0x1 << DEBOUNCE_RELEASE_SETTING_SFT)
+#define DEBOUNCE_PRESS_SETTING_SFT 0
+#define DEBOUNCE_PRESS_SETTING_MASK (0x3 << DEBOUNCE_PRESS_SETTING_SFT)

/* TS3A227E_REG_ACCESSORY_STATUS 0x0b */
#define TYPE_3_POLE 0x01
@@ -136,7 +144,7 @@ static bool ts3a227e_volatile_reg(struct device *dev, unsigned int reg)
{
switch (reg) {
case TS3A227E_REG_INTERRUPT ... TS3A227E_REG_INTERRUPT_DISABLE:
- case TS3A227E_REG_SETTING_2:
+ case TS3A227E_REG_SETTING_1 ... TS3A227E_REG_SETTING_2:
case TS3A227E_REG_SWITCH_STATUS_1 ... TS3A227E_REG_ADC_OUTPUT:
return true;
default:
@@ -269,14 +277,52 @@ static const struct regmap_config ts3a227e_regmap_config = {
static int ts3a227e_parse_device_property(struct ts3a227e *ts3a227e,
struct device *dev)
{
- u32 micbias;
+ u32 value;
+ u32 value_ms;
+ u32 setting3_value = 0;
+ u32 setting3_mask = 0;
int err;

- err = device_property_read_u32(dev, "ti,micbias", &micbias);
+ err = device_property_read_u32(dev, "ti,micbias", &value);
+ if (!err) {
+ setting3_mask = MICBIAS_SETTING_MASK;
+ setting3_value =
+ (value << MICBIAS_SETTING_SFT) & MICBIAS_SETTING_MASK;
+ }
+
+ err = device_property_read_u32(dev, "ti,debounce-release-ms", &value_ms);
if (!err) {
+ value = (value_ms > 10);
+ setting3_mask |= DEBOUNCE_RELEASE_SETTING_MASK;
+ setting3_value |= (value << DEBOUNCE_RELEASE_SETTING_SFT) &
+ DEBOUNCE_RELEASE_SETTING_MASK;
+ }
+
+ err = device_property_read_u32(dev, "ti,debounce-press-ms", &value_ms);
+ if (!err) {
+ value = (value_ms + 20) / 40;
+ if (value > 3)
+ value = 3;
+ setting3_mask |= DEBOUNCE_PRESS_SETTING_MASK;
+ setting3_value |= (value << DEBOUNCE_PRESS_SETTING_SFT) &
+ DEBOUNCE_PRESS_SETTING_MASK;
+ }
+
+ if (setting3_mask)
regmap_update_bits(ts3a227e->regmap, TS3A227E_REG_SETTING_3,
- MICBIAS_SETTING_MASK,
- (micbias & 0x07) << MICBIAS_SETTING_SFT);
+ setting3_mask, setting3_value);
+
+ err = device_property_read_u32(dev, "ti,debounce-insertion-ms", &value_ms);
+ if (!err) {
+ if (value_ms < 165)
+ value = (value_ms + 15) / 30;
+ else if (value_ms < 1500)
+ value = 6;
+ else
+ value = 7;
+ regmap_update_bits(ts3a227e->regmap, TS3A227E_REG_SETTING_1,
+ DEBOUNCE_INSERTION_SETTING_MASK, (value << DEBOUNCE_INSERTION_SETTING_SFT)
+ & DEBOUNCE_INSERTION_SETTING_MASK);
}

return 0;
--
2.20.1

2022-09-19 11:38:10

by Astrid Rost

[permalink] [raw]
Subject: [PATCH v3 1/3] dt-bindings: sound: ti,ts3a227e: convert to yaml

Convert from ts3a227e.txt to yaml.

Signed-off-by: Astrid Rost <[email protected]>
---
.../bindings/sound/ti,ts3a227e.yaml | 65 +++++++++++++++++++
.../devicetree/bindings/sound/ts3a227e.txt | 30 ---------
2 files changed, 65 insertions(+), 30 deletions(-)
create mode 100644 Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
delete mode 100644 Documentation/devicetree/bindings/sound/ts3a227e.txt

diff --git a/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml b/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
new file mode 100644
index 000000000000..327d204cf957
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
@@ -0,0 +1,65 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/ti,ts3a227e.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments TS3A227E
+ Autonomous Audio Accessory Detection and Configuration Switch
+
+maintainers:
+ - Dylan Reid <[email protected]>
+
+description: |
+ The TS3A227E detect headsets of 3-ring and 4-ring standards and
+ switches automatically to route the microphone correctly. It also
+ handles key press detection in accordance with the Android audio
+ headset specification v1.0.
+
+properties:
+ compatible:
+ enum:
+ - ti,ts3a227e
+
+ reg:
+ const: 0x3b
+
+ interrupts:
+ maxItems: 1
+
+ ti,micbias:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: Intended MICBIAS voltage (datasheet section 9.6.7).
+ enum:
+ - 0 # 2.1 V
+ - 1 # 2.2 V
+ - 2 # 2.3 V
+ - 3 # 2.4 V
+ - 4 # 2.5 V
+ - 5 # 2.6 V
+ - 6 # 2.7 V
+ - 7 # 2.8 V
+ default: 1
+
+required:
+ - compatible
+ - reg
+ - interrupts
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ codec: audio-controller@3b {
+ compatible = "ti,ts3a227e";
+ reg = <0x3b>;
+ interrupt-parent = <&gpio1>;
+ interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+ };
+ };
+
+...
diff --git a/Documentation/devicetree/bindings/sound/ts3a227e.txt b/Documentation/devicetree/bindings/sound/ts3a227e.txt
deleted file mode 100644
index 21ab45bc7e8f..000000000000
--- a/Documentation/devicetree/bindings/sound/ts3a227e.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-Texas Instruments TS3A227E
-Autonomous Audio Accessory Detection and Configuration Switch
-
-The TS3A227E detect headsets of 3-ring and 4-ring standards and
-switches automatically to route the microphone correctly. It also
-handles key press detection in accordance with the Android audio
-headset specification v1.0.
-
-Required properties:
-
- - compatible: Should contain "ti,ts3a227e".
- - reg: The i2c address. Should contain <0x3b>.
- - interrupts: Interrupt number for /INT pin from the 227e
-
-Optional properies:
- - ti,micbias: Intended MICBIAS voltage (datasheet section 9.6.7).
- Select 0/1/2/3/4/5/6/7 to specify MICBIAS voltage
- 2.1V/2.2V/2.3V/2.4V/2.5V/2.6V/2.7V/2.8V
- Default value is "1" (2.2V).
-
-Examples:
-
- i2c {
- ts3a227e@3b {
- compatible = "ti,ts3a227e";
- reg = <0x3b>;
- interrupt-parent = <&gpio>;
- interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
- };
- };
--
2.20.1

2022-09-20 16:25:23

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v3 1/3] dt-bindings: sound: ti,ts3a227e: convert to yaml

On 19/09/2022 13:12, Astrid Rost wrote:
> Convert from ts3a227e.txt to yaml.
>
> Signed-off-by: Astrid Rost <[email protected]>
> ---


Reviewed-by: Krzysztof Kozlowski <[email protected]>


Best regards,
Krzysztof