linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/13] Get mt6359-accdet ready for usage in Devicetree
@ 2025-02-14 17:18 Nícolas F. R. A. Prado
  2025-02-14 17:18 ` [PATCH 01/13] ASoC: dt-bindings: Add document for mt6359-accdet Nícolas F. R. A. Prado
                   ` (12 more replies)
  0 siblings, 13 replies; 17+ messages in thread
From: Nícolas F. R. A. Prado @ 2025-02-14 17:18 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Nícolas F. R. A. Prado,
	Andrew Perepech

This series prepares the MT6359 ACCDET for actual usage in the
Devicetree. Patches 1 and 2 add the required DT bindings, patches 3 and
4 get the mt6359-accdet driver probing, patches 5-12 clean up code
related to DT property parsing, and patch 13 adds the node in the
Devicetree.

Together with the series "Allow retrieving accessory detection reference
on MT8188" [1], and one extra patch on top enabling it on the
genio-700-evk DT, this series was tested on the Genio 700 EVK to get
audio jack detection working on it.

[1] https://lore.kernel.org/all/20250214-mt8188-accdet-v1-0-6bbd5483855b@collabora.com

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
Andrew Perepech (3):
      mfd: mt6397-core: Add mfd_cell for mt6359-accdet
      ASoC: mediatek: mt6359-accdet: Implement EINT IRQ polarity configuration
      ASoC: mediatek: mt6359-accdet: Use IRQ_TYPE_LEVEL_LOW not raw value

Nícolas F. R. A. Prado (10):
      ASoC: dt-bindings: Add document for mt6359-accdet
      dt-bindings: mfd: mediatek: mt6397: Add accdet subnode
      ASoC: mediatek: mt6359-accdet: Add compatible property
      ASoC: mediatek: mt6359-accdet: Drop dead code for EINT/GPIO IRQ handling
      ASoC: mediatek: mt6359-accdet: Drop dead code for EINT trigger setting
      ASoC: mediatek: mt6359-accdet: Drop dead code for button detection
      ASoC: mediatek: mt6359-accdet: Drop dead code for plugout-debounce
      ASoC: mediatek: mt6359-accdet: Handle mediatek,eint-use-ext-res as bool
      ASoC: mediatek: mt6359-accdet: Split mediatek,pwm-deb-setting properties
      arm64: dts: mt6359: Add accessory detect node

 .../devicetree/bindings/mfd/mediatek,mt6397.yaml   |   7 +
 .../bindings/sound/mediatek,mt6359-accdet.yaml     | 293 +++++++++++++++++++++
 arch/arm64/boot/dts/mediatek/mt6359.dtsi           |  24 ++
 drivers/mfd/mt6397-core.c                          |  12 +
 sound/soc/codecs/mt6359-accdet.c                   | 208 +++++----------
 sound/soc/codecs/mt6359-accdet.h                   |  18 +-
 6 files changed, 404 insertions(+), 158 deletions(-)
---
base-commit: dab2734f8e9ecba609d66d1dd087a392a7774c04
change-id: 20250214-mt6359-accdet-dts-00b189847f3c

Best regards,
-- 
Nícolas F. R. A. Prado <nfraprado@collabora.com>



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 01/13] ASoC: dt-bindings: Add document for mt6359-accdet
  2025-02-14 17:18 [PATCH 00/13] Get mt6359-accdet ready for usage in Devicetree Nícolas F. R. A. Prado
@ 2025-02-14 17:18 ` Nícolas F. R. A. Prado
  2025-02-18 13:18   ` AngeloGioacchino Del Regno
  2025-02-14 17:18 ` [PATCH 02/13] dt-bindings: mfd: mediatek: mt6397: Add accdet subnode Nícolas F. R. A. Prado
                   ` (11 subsequent siblings)
  12 siblings, 1 reply; 17+ messages in thread
From: Nícolas F. R. A. Prado @ 2025-02-14 17:18 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Nícolas F. R. A. Prado

Add dt-binding for the MT6359 ACCDET hardware block.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
 .../bindings/sound/mediatek,mt6359-accdet.yaml     | 293 +++++++++++++++++++++
 1 file changed, 293 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/mediatek,mt6359-accdet.yaml b/Documentation/devicetree/bindings/sound/mediatek,mt6359-accdet.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..8922003d3b9d039d2a0355add7a90cf42b1a9da6
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/mediatek,mt6359-accdet.yaml
@@ -0,0 +1,293 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/mediatek,mt6359-accdet.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: MT6359 Accessory Detection
+
+maintainers:
+  - Nícolas F. R. A. Prado <nfraprado@collabora.com>
+
+description: |
+  The MT6359 Accessory Detection block is part of the MT6359 PMIC and allows
+  detecting audio jack insertion and removal, as well as identifying the type of
+  events connected to the jack.
+
+properties:
+  compatible:
+    const: mediatek,mt6359-accdet
+
+  mediatek,mic-vol:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: MIC bias1 output voltage setting
+    enum:
+      - 0 # 1.7V
+      - 1 # 1.8V
+      - 2 # 1.9V
+      - 3 # 2.0V
+      - 4 # 2.1V
+      - 5 # 2.5V
+      - 6 # 2.6V
+      - 7 # 2.7V
+      - 8 # 2.8V
+      - 9 # 2.85V
+
+  mediatek,mic-mode:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Mic mode setting
+    enum:
+      - 1 # ACC
+      - 2 # DCC mode. Low cost mode without internal bias
+      - 6 # DCC mode. Low cost mode with internal bias
+
+  mediatek,eint-cmpmen-pwm-width:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: EINT CMPMEN PWM width
+    enum:
+      - 0 # 50ms
+      - 1 # 80ms
+      - 2 # 100ms
+      - 3 # 200ms
+      - 4 # 400ms
+      - 5 # 500ms
+      - 6 # 800ms
+      - 7 # 1000ms
+
+  mediatek,eint-cmpmen-pwm-thresh:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: EINT CMPMEN PWM threshold
+    enum:
+      - 0 # 1ms
+      - 1 # 2ms
+      - 2 # 4ms
+      - 3 # 5ms
+      - 4 # 8ms
+      - 5 # 10ms
+      - 6 # 20ms
+      - 7 # 30ms
+
+  mediatek,pwm-width:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: PWM width
+    minimum: 0
+    maximum: 65535
+
+  mediatek,pwm-thresh:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: PWM threshold
+    minimum: 0
+    maximum: 65535
+
+  mediatek,pwm-rise-delay:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Rise delay for PWM
+    minimum: 0
+    maximum: 65535
+
+  mediatek,pwm-fall-delay:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Fall delay for PWM
+    minimum: 0
+    maximum: 65535
+
+  mediatek,debounce0:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Debounce time for state 0
+    minimum: 0
+    maximum: 65535
+
+  mediatek,debounce1:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Debounce time for state 1
+    minimum: 0
+    maximum: 65535
+
+  mediatek,debounce3:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Debounce time for state 3
+    minimum: 0
+    maximum: 65535
+
+  mediatek,debounce-auxadc:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Debounce time for AUXADC
+    minimum: 0
+    maximum: 65535
+
+  mediatek,eint-debounce0:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Debounce time for EINT state 0
+    enum:
+      - 0 # 0ms
+      - 1 # 0.12ms
+      - 2 # 0.25ms
+      - 3 # 0.5ms
+      - 4 # 0.75ms
+      - 5 # 1ms
+      - 6 # 2ms
+      - 7 # 4ms
+      - 8 # 8ms
+      - 9 # 16ms
+      - 10 # 32ms
+      - 11 # 48ms
+      - 12 # 64ms
+      - 13 # 128ms
+      - 14 # 256ms
+      - 15 # 512ms
+
+  mediatek,eint-debounce1:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Debounce time for EINT state 1
+    enum:
+      - 0 # 0ms
+      - 1 # 0.5ms
+      - 2 # 0.75ms
+      - 3 # 0.9ms
+      - 4 # 1.5ms
+      - 5 # 1.8ms
+      - 6 # 3ms
+      - 7 # 3.5ms
+      - 8 # 3.8ms
+      - 9 # 16ms
+      - 10 # 32ms
+      - 11 # 48ms
+      - 12 # 64ms
+      - 13 # 128ms
+      - 14 # 256ms
+      - 15 # 512ms
+
+  mediatek,eint-debounce2:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Debounce time for EINT state 2
+    enum:
+      - 0 # 0ms
+      - 1 # 0.5ms
+      - 2 # 0.75ms
+      - 3 # 0.9ms
+      - 4 # 1.5ms
+      - 5 # 1.8ms
+      - 6 # 3ms
+      - 7 # 3.5ms
+      - 8 # 3.8ms
+      - 9 # 4ms
+      - 10 # 4.5ms
+      - 11 # 5ms
+      - 12 # 7ms
+      - 13 # 9ms
+      - 14 # 19ms
+      - 15 # 25ms
+
+  mediatek,eint-debounce3:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Debounce time for EINT state 3
+    enum:
+      - 0 # 0ms
+      - 1 # 0.12ms
+      - 2 # 0.25ms
+      - 3 # 0.5ms
+      - 4 # 0.75ms
+      - 5 # 1ms
+      - 6 # 2ms
+      - 7 # 4ms
+      - 8 # 8ms
+      - 9 # 16ms
+      - 10 # 32ms
+      - 11 # 48ms
+      - 12 # 64ms
+      - 13 # 128ms
+      - 14 # 256ms
+      - 15 # 512ms
+
+  mediatek,eint-inverter-debounce:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Debounce time for EINT inverter
+    enum:
+      - 0 # 0ms
+      - 1 # 0.12ms
+      - 2 # 0.25ms
+      - 3 # 0.5ms
+      - 4 # 0.75ms
+      - 5 # 1ms
+      - 6 # 2ms
+      - 7 # 4ms
+      - 8 # 8ms
+      - 9 # 16ms
+      - 10 # 32ms
+      - 11 # 48ms
+      - 12 # 64ms
+      - 13 # 128ms
+      - 14 # 256ms
+      - 15 # 512ms
+
+  mediatek,eint-detect-mode:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: EINT detection mode
+    enum:
+      - 0 # Higher detection power
+      - 1 # Lower detection power
+      - 2 # SW moisture detection mode1
+      - 3 # HW moisture detection mode1
+      - 4 # HW moisture detection mode2
+
+  mediatek,eint-num:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: EINT interrupt that should be enabled
+    enum:
+      - 0 # EINT0
+      - 1 # EINT1
+      - 2 # EINT0 | EINT1
+
+  mediatek,eint-use-ext-res:
+    type: boolean
+    description:
+      Whether an external resistor should be used for the HP_EINT signal.
+      By default an internal pull-up resistor is used.
+
+  mediatek,eint-comp-vth:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: EINT comparator threshold
+    enum:
+      - 0 # 2.4V
+      - 1 # 2V
+      - 2 # 1.6V
+      - 3 # 1.2V
+      - 4 # 0.8V
+
+  mediatek,eint-level-pol:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: EINT interrupt polarity
+
+required:
+  - compatible
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    accdet: accdet {
+        compatible = "mediatek,mt6359-accdet";
+        mediatek,mic-vol = <8>;
+        mediatek,mic-mode = <2>;
+        mediatek,pwm-width = <0x500>;
+        mediatek,pwm-thresh = <0x500>;
+        mediatek,pwm-fall-delay = <1>;
+        mediatek,pwm-rise-delay = <0x1f0>;
+        mediatek,debounce0 = <0x800>;
+        mediatek,debounce1 = <0x800>;
+        mediatek,debounce3 = <0x20>;
+        mediatek,debounce-auxadc = <0x44>;
+        mediatek,eint-cmpmen-pwm-width = <4>;
+        mediatek,eint-cmpmen-pwm-thresh = <1>;
+        mediatek,eint-debounce0 = <5>;
+        mediatek,eint-debounce1 = <3>;
+        mediatek,eint-debounce2 = <3>;
+        mediatek,eint-debounce3 = <5>;
+        mediatek,eint-inverter-debounce = <0xe>;
+        mediatek,eint-detect-mode = <4>;
+        mediatek,eint-num = <0>;
+        mediatek,eint-comp-vth = <2>;
+        mediatek,eint-level-pol = <IRQ_TYPE_LEVEL_LOW>;
+    };

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 02/13] dt-bindings: mfd: mediatek: mt6397: Add accdet subnode
  2025-02-14 17:18 [PATCH 00/13] Get mt6359-accdet ready for usage in Devicetree Nícolas F. R. A. Prado
  2025-02-14 17:18 ` [PATCH 01/13] ASoC: dt-bindings: Add document for mt6359-accdet Nícolas F. R. A. Prado
@ 2025-02-14 17:18 ` Nícolas F. R. A. Prado
  2025-02-14 17:18 ` [PATCH 03/13] mfd: mt6397-core: Add mfd_cell for mt6359-accdet Nícolas F. R. A. Prado
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Nícolas F. R. A. Prado @ 2025-02-14 17:18 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Nícolas F. R. A. Prado

Describe the accdet as a possible subnode of the MT6359 PMIC.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
 Documentation/devicetree/bindings/mfd/mediatek,mt6397.yaml | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/Documentation/devicetree/bindings/mfd/mediatek,mt6397.yaml b/Documentation/devicetree/bindings/mfd/mediatek,mt6397.yaml
index 6a89b479d10fad3c8b61cab5a3af1453baca4d1a..1a8c5748a28da6ad8aa091f8c0a74bc1dc709644 100644
--- a/Documentation/devicetree/bindings/mfd/mediatek,mt6397.yaml
+++ b/Documentation/devicetree/bindings/mfd/mediatek,mt6397.yaml
@@ -224,6 +224,13 @@ properties:
     description:
       Pin controller
 
+  accdet:
+    type: object
+    $ref: /schemas/sound/mediatek,mt6359-accdet.yaml
+    unevaluatedProperties: false
+    description:
+      Accessory Detection
+
 required:
   - compatible
   - regulators

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 03/13] mfd: mt6397-core: Add mfd_cell for mt6359-accdet
  2025-02-14 17:18 [PATCH 00/13] Get mt6359-accdet ready for usage in Devicetree Nícolas F. R. A. Prado
  2025-02-14 17:18 ` [PATCH 01/13] ASoC: dt-bindings: Add document for mt6359-accdet Nícolas F. R. A. Prado
  2025-02-14 17:18 ` [PATCH 02/13] dt-bindings: mfd: mediatek: mt6397: Add accdet subnode Nícolas F. R. A. Prado
@ 2025-02-14 17:18 ` Nícolas F. R. A. Prado
  2025-02-27 16:16   ` Lee Jones
  2025-02-14 17:18 ` [PATCH 04/13] ASoC: mediatek: mt6359-accdet: Add compatible property Nícolas F. R. A. Prado
                   ` (9 subsequent siblings)
  12 siblings, 1 reply; 17+ messages in thread
From: Nícolas F. R. A. Prado @ 2025-02-14 17:18 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Nícolas F. R. A. Prado,
	Andrew Perepech

From: Andrew Perepech <andrew.perepech@mediatek.com>

Add an mfd_cell for mt6359-accdet and describe its IRQ resources to
allow the mt6359-accdet driver to probe.

Signed-off-by: Andrew Perepech <andrew.perepech@mediatek.com>
Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
 drivers/mfd/mt6397-core.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c
index 0e5d59ae064a696ae2111e2b558b316667c14773..5f8ed898890783c0ce4e34c7eae0d8f678e7d7bc 100644
--- a/drivers/mfd/mt6397-core.c
+++ b/drivers/mfd/mt6397-core.c
@@ -84,6 +84,12 @@ static const struct resource mt6359_keys_resources[] = {
 	DEFINE_RES_IRQ_NAMED(MT6359_IRQ_HOMEKEY_R, "homekey_r"),
 };
 
+static const struct resource mt6359_accdet_resources[] = {
+	DEFINE_RES_IRQ_NAMED(MT6359_IRQ_ACCDET, "accdet_irq"),
+	DEFINE_RES_IRQ_NAMED(MT6359_IRQ_ACCDET_EINT0, "accdet_eint0"),
+	DEFINE_RES_IRQ_NAMED(MT6359_IRQ_ACCDET_EINT1, "accdet_eint1"),
+};
+
 static const struct resource mt6323_keys_resources[] = {
 	DEFINE_RES_IRQ_NAMED(MT6323_IRQ_STATUS_PWRKEY, "powerkey"),
 	DEFINE_RES_IRQ_NAMED(MT6323_IRQ_STATUS_FCHRKEY, "homekey"),
@@ -239,6 +245,12 @@ static const struct mfd_cell mt6359_devs[] = {
 		.resources = mt6359_keys_resources,
 		.of_compatible = "mediatek,mt6359-keys"
 	},
+	{
+		.name = "mt6359-accdet",
+		.of_compatible = "mediatek,mt6359-accdet",
+		.num_resources = ARRAY_SIZE(mt6359_accdet_resources),
+		.resources = mt6359_accdet_resources,
+	},
 };
 
 static const struct mfd_cell mt6397_devs[] = {

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 04/13] ASoC: mediatek: mt6359-accdet: Add compatible property
  2025-02-14 17:18 [PATCH 00/13] Get mt6359-accdet ready for usage in Devicetree Nícolas F. R. A. Prado
                   ` (2 preceding siblings ...)
  2025-02-14 17:18 ` [PATCH 03/13] mfd: mt6397-core: Add mfd_cell for mt6359-accdet Nícolas F. R. A. Prado
@ 2025-02-14 17:18 ` Nícolas F. R. A. Prado
  2025-02-18 13:18   ` AngeloGioacchino Del Regno
  2025-02-14 17:18 ` [PATCH 05/13] ASoC: mediatek: mt6359-accdet: Implement EINT IRQ polarity configuration Nícolas F. R. A. Prado
                   ` (8 subsequent siblings)
  12 siblings, 1 reply; 17+ messages in thread
From: Nícolas F. R. A. Prado @ 2025-02-14 17:18 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Nícolas F. R. A. Prado,
	Andrew Perepech

Add a compatible property and add it to the module device table for the
mt6359-accdet platform driver to allow automatic module loading and
probing when the compatible is present in DT.

Co-developed-by: Andrew Perepech <andrew.perepech@mediatek.com>
Signed-off-by: Andrew Perepech <andrew.perepech@mediatek.com>
Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
 sound/soc/codecs/mt6359-accdet.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/sound/soc/codecs/mt6359-accdet.c b/sound/soc/codecs/mt6359-accdet.c
index ed34cc15b80e856356c07fd53af22207124e0d19..6f07db879c6a56ce4843954f51bb9602373e4aa5 100644
--- a/sound/soc/codecs/mt6359-accdet.c
+++ b/sound/soc/codecs/mt6359-accdet.c
@@ -1047,9 +1047,19 @@ static int mt6359_accdet_probe(struct platform_device *pdev)
 	return ret;
 }
 
+const struct of_device_id accdet_of_match[] = {
+	{
+		.compatible = "mediatek,mt6359-accdet",
+	}, {
+		/* sentinel */
+	},
+};
+MODULE_DEVICE_TABLE(of, accdet_of_match);
+
 static struct platform_driver mt6359_accdet_driver = {
 	.driver = {
 		.name = "pmic-codec-accdet",
+		.of_match_table = accdet_of_match,
 	},
 	.probe = mt6359_accdet_probe,
 };

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 05/13] ASoC: mediatek: mt6359-accdet: Implement EINT IRQ polarity configuration
  2025-02-14 17:18 [PATCH 00/13] Get mt6359-accdet ready for usage in Devicetree Nícolas F. R. A. Prado
                   ` (3 preceding siblings ...)
  2025-02-14 17:18 ` [PATCH 04/13] ASoC: mediatek: mt6359-accdet: Add compatible property Nícolas F. R. A. Prado
@ 2025-02-14 17:18 ` Nícolas F. R. A. Prado
  2025-02-14 17:18 ` [PATCH 06/13] ASoC: mediatek: mt6359-accdet: Use IRQ_TYPE_LEVEL_LOW not raw value Nícolas F. R. A. Prado
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Nícolas F. R. A. Prado @ 2025-02-14 17:18 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Nícolas F. R. A. Prado,
	Andrew Perepech

From: Andrew Perepech <andrew.perepech@mediatek.com>

The driver currently reads the EINT IRQ polarity from the
"mediatek,eint-level-pol" property but never actually configures the
hardware accordingly.

Implement the IRQ polarity configuration in hardware.

Signed-off-by: Andrew Perepech <andrew.perepech@mediatek.com>
Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
 sound/soc/codecs/mt6359-accdet.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/sound/soc/codecs/mt6359-accdet.c b/sound/soc/codecs/mt6359-accdet.c
index 6f07db879c6a56ce4843954f51bb9602373e4aa5..eee676d1faef2076bc837a12a2ee3615216752b7 100644
--- a/sound/soc/codecs/mt6359-accdet.c
+++ b/sound/soc/codecs/mt6359-accdet.c
@@ -733,6 +733,22 @@ static void config_digital_init_by_mode(struct mt6359_accdet *priv)
 					   BIT(ACCDET_EINT1_INVERTER_SW_EN_SFT));
 		}
 	}
+
+	if (priv->data->eint_pol == IRQ_TYPE_LEVEL_LOW) {
+		/* EINT polarity normal */
+		regmap_update_bits(priv->regmap,
+				ACCDET_EINT_IN_INVERSE_ADDR,
+				ACCDET_EINT_IN_INVERSE_MASK_SFT,
+				0);
+	} else if (priv->data->eint_pol == IRQ_TYPE_LEVEL_HIGH) {
+		/* EINT polarity inverse */
+		regmap_update_bits(priv->regmap,
+				ACCDET_EINT_IN_INVERSE_ADDR,
+				ACCDET_EINT_IN_INVERSE_MASK_SFT,
+				BIT(ACCDET_EINT_IN_INVERSE_SFT));
+	} else {
+		dev_warn(priv->dev, "Unacceptable EINT level type, using default\n");
+	}
 }
 
 static void config_eint_init_by_mode(struct mt6359_accdet *priv)

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 06/13] ASoC: mediatek: mt6359-accdet: Use IRQ_TYPE_LEVEL_LOW not raw value
  2025-02-14 17:18 [PATCH 00/13] Get mt6359-accdet ready for usage in Devicetree Nícolas F. R. A. Prado
                   ` (4 preceding siblings ...)
  2025-02-14 17:18 ` [PATCH 05/13] ASoC: mediatek: mt6359-accdet: Implement EINT IRQ polarity configuration Nícolas F. R. A. Prado
@ 2025-02-14 17:18 ` Nícolas F. R. A. Prado
  2025-02-14 17:18 ` [PATCH 07/13] ASoC: mediatek: mt6359-accdet: Drop dead code for EINT/GPIO IRQ handling Nícolas F. R. A. Prado
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Nícolas F. R. A. Prado @ 2025-02-14 17:18 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Nícolas F. R. A. Prado,
	Andrew Perepech

From: Andrew Perepech <andrew.perepech@mediatek.com>

The symbol IRQ_TYPE_LEVEL_LOW is equivalent to 8, but the former should
be used for legibility. Update the code accordingly.

Signed-off-by: Andrew Perepech <andrew.perepech@mediatek.com>
Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
 sound/soc/codecs/mt6359-accdet.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/codecs/mt6359-accdet.c b/sound/soc/codecs/mt6359-accdet.c
index eee676d1faef2076bc837a12a2ee3615216752b7..b71957f7a2edb352add23884fd9e231e36b08621 100644
--- a/sound/soc/codecs/mt6359-accdet.c
+++ b/sound/soc/codecs/mt6359-accdet.c
@@ -581,7 +581,7 @@ static int mt6359_accdet_parse_dt(struct mt6359_accdet *priv)
 	ret = of_property_read_u32(node, "mediatek,eint-level-pol",
 				   &priv->data->eint_pol);
 	if (ret)
-		priv->data->eint_pol = 8;
+		priv->data->eint_pol = IRQ_TYPE_LEVEL_LOW;
 
 	ret = of_property_read_u32(node, "mediatek,eint-use-ap", &tmp);
 	if (ret)

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 07/13] ASoC: mediatek: mt6359-accdet: Drop dead code for EINT/GPIO IRQ handling
  2025-02-14 17:18 [PATCH 00/13] Get mt6359-accdet ready for usage in Devicetree Nícolas F. R. A. Prado
                   ` (5 preceding siblings ...)
  2025-02-14 17:18 ` [PATCH 06/13] ASoC: mediatek: mt6359-accdet: Use IRQ_TYPE_LEVEL_LOW not raw value Nícolas F. R. A. Prado
@ 2025-02-14 17:18 ` Nícolas F. R. A. Prado
  2025-02-14 17:18 ` [PATCH 08/13] ASoC: mediatek: mt6359-accdet: Drop dead code for EINT trigger setting Nícolas F. R. A. Prado
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Nícolas F. R. A. Prado @ 2025-02-14 17:18 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Nícolas F. R. A. Prado

The ACCDET supports two modes for IRQ generation: PMIC EINT or AP GPIO,
which in principle could be configured through a DT property. However
this DT property has no user nor is documented in a binding, and the
driver only implements the PMIC EINT case, so drop the unused code
intended to handle both cases.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
 sound/soc/codecs/mt6359-accdet.c | 20 +++-----------------
 1 file changed, 3 insertions(+), 17 deletions(-)

diff --git a/sound/soc/codecs/mt6359-accdet.c b/sound/soc/codecs/mt6359-accdet.c
index b71957f7a2edb352add23884fd9e231e36b08621..57a70867b4b80fc904ae07ee05d0e554495ed6e7 100644
--- a/sound/soc/codecs/mt6359-accdet.c
+++ b/sound/soc/codecs/mt6359-accdet.c
@@ -31,9 +31,6 @@
 #define REGISTER_VAL(x)	((x) - 1)
 
 /* mt6359 accdet capability */
-#define ACCDET_PMIC_EINT_IRQ		BIT(0)
-#define ACCDET_AP_GPIO_EINT		BIT(1)
-
 #define ACCDET_PMIC_EINT0		BIT(2)
 #define ACCDET_PMIC_EINT1		BIT(3)
 #define ACCDET_PMIC_BI_EINT		BIT(4)
@@ -448,8 +445,7 @@ static void mt6359_accdet_jd_work(struct work_struct *work)
 		mt6359_accdet_recover_jd_setting(priv);
 	}
 
-	if (priv->caps & ACCDET_PMIC_EINT_IRQ)
-		recover_eint_setting(priv);
+	recover_eint_setting(priv);
 	mutex_unlock(&priv->res_lock);
 }
 
@@ -583,14 +579,6 @@ static int mt6359_accdet_parse_dt(struct mt6359_accdet *priv)
 	if (ret)
 		priv->data->eint_pol = IRQ_TYPE_LEVEL_LOW;
 
-	ret = of_property_read_u32(node, "mediatek,eint-use-ap", &tmp);
-	if (ret)
-		tmp = 0;
-	if (tmp == 0)
-		priv->caps |= ACCDET_PMIC_EINT_IRQ;
-	else if (tmp == 1)
-		priv->caps |= ACCDET_AP_GPIO_EINT;
-
 	ret = of_property_read_u32(node, "mediatek,eint-detect-mode",
 				   &priv->data->eint_detect_mode);
 	if (ret) {
@@ -910,10 +898,8 @@ static void mt6359_accdet_init(struct mt6359_accdet *priv)
 				   0x3 << RG_ANALOGFDEN_SFT);
 	}
 
-	if (priv->caps & ACCDET_PMIC_EINT_IRQ) {
-		config_eint_init_by_mode(priv);
-		config_digital_init_by_mode(priv);
-	}
+	config_eint_init_by_mode(priv);
+	config_digital_init_by_mode(priv);
 }
 
 int mt6359_accdet_enable_jack_detect(struct snd_soc_component *component,

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 08/13] ASoC: mediatek: mt6359-accdet: Drop dead code for EINT trigger setting
  2025-02-14 17:18 [PATCH 00/13] Get mt6359-accdet ready for usage in Devicetree Nícolas F. R. A. Prado
                   ` (6 preceding siblings ...)
  2025-02-14 17:18 ` [PATCH 07/13] ASoC: mediatek: mt6359-accdet: Drop dead code for EINT/GPIO IRQ handling Nícolas F. R. A. Prado
@ 2025-02-14 17:18 ` Nícolas F. R. A. Prado
  2025-02-14 17:18 ` [PATCH 09/13] ASoC: mediatek: mt6359-accdet: Drop dead code for button detection Nícolas F. R. A. Prado
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Nícolas F. R. A. Prado @ 2025-02-14 17:18 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Nícolas F. R. A. Prado

None of the EINT trigger options are implemented and the DT property is
not described in the binding. Remove the unused code.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
 sound/soc/codecs/mt6359-accdet.c | 11 -----------
 1 file changed, 11 deletions(-)

diff --git a/sound/soc/codecs/mt6359-accdet.c b/sound/soc/codecs/mt6359-accdet.c
index 57a70867b4b80fc904ae07ee05d0e554495ed6e7..e45630a134bb3a27bb52a80f43901c9fe4eac105 100644
--- a/sound/soc/codecs/mt6359-accdet.c
+++ b/sound/soc/codecs/mt6359-accdet.c
@@ -35,8 +35,6 @@
 #define ACCDET_PMIC_EINT1		BIT(3)
 #define ACCDET_PMIC_BI_EINT		BIT(4)
 
-#define ACCDET_PMIC_GPIO_TRIG_EINT	BIT(5)
-#define ACCDET_PMIC_INVERTER_TRIG_EINT	BIT(6)
 #define ACCDET_PMIC_RSV_EINT		BIT(7)
 
 #define ACCDET_THREE_KEY		BIT(8)
@@ -596,15 +594,6 @@ static int mt6359_accdet_parse_dt(struct mt6359_accdet *priv)
 	else if (tmp == 2)
 		priv->caps |= ACCDET_PMIC_BI_EINT;
 
-	ret = of_property_read_u32(node, "mediatek,eint-trig-mode",
-				   &tmp);
-	if (ret)
-		tmp = 0;
-	if (tmp == 0)
-		priv->caps |= ACCDET_PMIC_GPIO_TRIG_EINT;
-	else if (tmp == 1)
-		priv->caps |= ACCDET_PMIC_INVERTER_TRIG_EINT;
-
 	ret = of_property_read_u32(node, "mediatek,eint-use-ext-res",
 				   &priv->data->eint_use_ext_res);
 	if (ret) {

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 09/13] ASoC: mediatek: mt6359-accdet: Drop dead code for button detection
  2025-02-14 17:18 [PATCH 00/13] Get mt6359-accdet ready for usage in Devicetree Nícolas F. R. A. Prado
                   ` (7 preceding siblings ...)
  2025-02-14 17:18 ` [PATCH 08/13] ASoC: mediatek: mt6359-accdet: Drop dead code for EINT trigger setting Nícolas F. R. A. Prado
@ 2025-02-14 17:18 ` Nícolas F. R. A. Prado
  2025-02-14 17:18 ` [PATCH 10/13] ASoC: mediatek: mt6359-accdet: Drop dead code for plugout-debounce Nícolas F. R. A. Prado
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Nícolas F. R. A. Prado @ 2025-02-14 17:18 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Nícolas F. R. A. Prado

The button detection functionality depends on a calibration voltage
value which is currently not updated anywhere in the driver code, and
hence it doesn't actually do anything. Remove this unused code.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
 sound/soc/codecs/mt6359-accdet.c | 88 +---------------------------------------
 sound/soc/codecs/mt6359-accdet.h | 15 -------
 2 files changed, 2 insertions(+), 101 deletions(-)

diff --git a/sound/soc/codecs/mt6359-accdet.c b/sound/soc/codecs/mt6359-accdet.c
index e45630a134bb3a27bb52a80f43901c9fe4eac105..d2841b1385c7cbc5603100a56576eae3b6273b20 100644
--- a/sound/soc/codecs/mt6359-accdet.c
+++ b/sound/soc/codecs/mt6359-accdet.c
@@ -37,9 +37,6 @@
 
 #define ACCDET_PMIC_RSV_EINT		BIT(7)
 
-#define ACCDET_THREE_KEY		BIT(8)
-#define ACCDET_FOUR_KEY			BIT(9)
-#define ACCDET_TRI_KEY_CDD		BIT(10)
 #define ACCDET_RSV_KEY			BIT(11)
 
 #define ACCDET_ANALOG_FASTDISCHARGE	BIT(12)
@@ -322,41 +319,6 @@ static void mt6359_accdet_jack_report(struct mt6359_accdet *priv)
 	snd_soc_jack_report(priv->jack, report, MT6359_ACCDET_JACK_MASK);
 }
 
-static unsigned int check_button(struct mt6359_accdet *priv, unsigned int v)
-{
-	if (priv->caps & ACCDET_FOUR_KEY) {
-		if (v < priv->data->four_key.down &&
-		    v >= priv->data->four_key.up)
-			priv->btn_type = SND_JACK_BTN_1;
-		if (v < priv->data->four_key.up &&
-		    v >= priv->data->four_key.voice)
-			priv->btn_type = SND_JACK_BTN_2;
-		if (v < priv->data->four_key.voice &&
-		    v >= priv->data->four_key.mid)
-			priv->btn_type = SND_JACK_BTN_3;
-		if (v < priv->data->four_key.mid)
-			priv->btn_type = SND_JACK_BTN_0;
-	} else {
-		if (v < priv->data->three_key.down &&
-		    v >= priv->data->three_key.up)
-			priv->btn_type = SND_JACK_BTN_1;
-		if (v < priv->data->three_key.up &&
-		    v >= priv->data->three_key.mid)
-			priv->btn_type = SND_JACK_BTN_2;
-		if (v < priv->data->three_key.mid)
-			priv->btn_type = SND_JACK_BTN_0;
-	}
-	return 0;
-}
-
-static void is_key_pressed(struct mt6359_accdet *priv, bool pressed)
-{
-	priv->btn_type = priv->jack_type & ~MT6359_ACCDET_BTN_MASK;
-
-	if (pressed)
-		check_button(priv, priv->cali_voltage);
-}
-
 static inline void check_jack_btn_type(struct mt6359_accdet *priv)
 {
 	unsigned int val = 0;
@@ -368,15 +330,11 @@ static inline void check_jack_btn_type(struct mt6359_accdet *priv)
 
 	switch (priv->accdet_status) {
 	case 0:
-		if (priv->jack_type == SND_JACK_HEADSET)
-			is_key_pressed(priv, true);
-		else
+		if (priv->jack_type != SND_JACK_HEADSET)
 			priv->jack_type = SND_JACK_HEADPHONE;
 		break;
 	case 1:
-		if (priv->jack_type == SND_JACK_HEADSET) {
-			is_key_pressed(priv, false);
-		} else {
+		if (priv->jack_type != SND_JACK_HEADSET) {
 			priv->jack_type = SND_JACK_HEADSET;
 			accdet_set_debounce(priv, eint_state011, 0x1);
 		}
@@ -606,48 +564,6 @@ static int mt6359_accdet_parse_dt(struct mt6359_accdet *priv)
 	if (ret)
 		priv->data->eint_comp_vth = 0x0;
 
-	ret = of_property_read_u32(node, "mediatek,key-mode", &tmp);
-	if (ret)
-		tmp = 0;
-	if (tmp == 0) {
-		int three_key[4];
-
-		priv->caps |= ACCDET_THREE_KEY;
-		ret = of_property_read_u32_array(node,
-						 "mediatek,three-key-thr",
-						 three_key,
-						 ARRAY_SIZE(three_key));
-		if (!ret)
-			memcpy(&priv->data->three_key, three_key + 1,
-			       sizeof(struct three_key_threshold));
-	} else if (tmp == 1) {
-		int four_key[5];
-
-		priv->caps |= ACCDET_FOUR_KEY;
-		ret = of_property_read_u32_array(node,
-						 "mediatek,four-key-thr",
-						 four_key,
-						 ARRAY_SIZE(four_key));
-		if (!ret) {
-			memcpy(&priv->data->four_key, four_key + 1,
-			       sizeof(struct four_key_threshold));
-		} else {
-			dev_warn(priv->dev,
-				 "accdet no 4-key-thrsh dts, use efuse\n");
-		}
-	} else if (tmp == 2) {
-		int three_key[4];
-
-		priv->caps |= ACCDET_TRI_KEY_CDD;
-		ret = of_property_read_u32_array(node,
-						 "mediatek,tri-key-cdd-thr",
-						 three_key,
-						 ARRAY_SIZE(three_key));
-		if (!ret)
-			memcpy(&priv->data->three_key, three_key + 1,
-			       sizeof(struct three_key_threshold));
-	}
-
 	of_node_put(node);
 	dev_warn(priv->dev, "accdet caps=%x\n", priv->caps);
 
diff --git a/sound/soc/codecs/mt6359-accdet.h b/sound/soc/codecs/mt6359-accdet.h
index c234f2f4276a12853a6fe0b13c4198dfc551b6b4..0ad5c8660a0bf4a87136a700698b04dff121b175 100644
--- a/sound/soc/codecs/mt6359-accdet.h
+++ b/sound/soc/codecs/mt6359-accdet.h
@@ -50,19 +50,6 @@ enum {
 	eint_inverter_state000,
 };
 
-struct three_key_threshold {
-	unsigned int mid;
-	unsigned int up;
-	unsigned int down;
-};
-
-struct four_key_threshold {
-	unsigned int mid;
-	unsigned int voice;
-	unsigned int up;
-	unsigned int down;
-};
-
 struct pwm_deb_settings {
 	unsigned int pwm_width;
 	unsigned int pwm_thresh;
@@ -88,8 +75,6 @@ struct dts_data {
 	unsigned int plugout_deb;
 	unsigned int eint_pol;
 	struct pwm_deb_settings *pwm_deb;
-	struct three_key_threshold three_key;
-	struct four_key_threshold four_key;
 	unsigned int moisture_detect_enable;
 	unsigned int eint_detect_mode;
 	unsigned int eint_use_ext_res;

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 10/13] ASoC: mediatek: mt6359-accdet: Drop dead code for plugout-debounce
  2025-02-14 17:18 [PATCH 00/13] Get mt6359-accdet ready for usage in Devicetree Nícolas F. R. A. Prado
                   ` (8 preceding siblings ...)
  2025-02-14 17:18 ` [PATCH 09/13] ASoC: mediatek: mt6359-accdet: Drop dead code for button detection Nícolas F. R. A. Prado
@ 2025-02-14 17:18 ` Nícolas F. R. A. Prado
  2025-02-14 17:18 ` [PATCH 11/13] ASoC: mediatek: mt6359-accdet: Handle mediatek,eint-use-ext-res as bool Nícolas F. R. A. Prado
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Nícolas F. R. A. Prado @ 2025-02-14 17:18 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Nícolas F. R. A. Prado

The mediatek,plugout-debounce property is undocumented in the binding
and unhandled by the driver. Remove it.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
 sound/soc/codecs/mt6359-accdet.c | 5 -----
 sound/soc/codecs/mt6359-accdet.h | 1 -
 2 files changed, 6 deletions(-)

diff --git a/sound/soc/codecs/mt6359-accdet.c b/sound/soc/codecs/mt6359-accdet.c
index d2841b1385c7cbc5603100a56576eae3b6273b20..c3d51c0753c815cd92935736300f57fd18e033f7 100644
--- a/sound/soc/codecs/mt6359-accdet.c
+++ b/sound/soc/codecs/mt6359-accdet.c
@@ -514,11 +514,6 @@ static int mt6359_accdet_parse_dt(struct mt6359_accdet *priv)
 	if (ret)
 		priv->data->mic_vol = 8;
 
-	ret = of_property_read_u32(node, "mediatek,plugout-debounce",
-				   &priv->data->plugout_deb);
-	if (ret)
-		priv->data->plugout_deb = 1;
-
 	ret = of_property_read_u32(node, "mediatek,mic-mode",
 				   &priv->data->mic_mode);
 	if (ret)
diff --git a/sound/soc/codecs/mt6359-accdet.h b/sound/soc/codecs/mt6359-accdet.h
index 0ad5c8660a0bf4a87136a700698b04dff121b175..148e181fc00048ea349c029b382507542a33202e 100644
--- a/sound/soc/codecs/mt6359-accdet.h
+++ b/sound/soc/codecs/mt6359-accdet.h
@@ -72,7 +72,6 @@ struct pwm_deb_settings {
 struct dts_data {
 	unsigned int mic_vol;
 	unsigned int mic_mode;
-	unsigned int plugout_deb;
 	unsigned int eint_pol;
 	struct pwm_deb_settings *pwm_deb;
 	unsigned int moisture_detect_enable;

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 11/13] ASoC: mediatek: mt6359-accdet: Handle mediatek,eint-use-ext-res as bool
  2025-02-14 17:18 [PATCH 00/13] Get mt6359-accdet ready for usage in Devicetree Nícolas F. R. A. Prado
                   ` (9 preceding siblings ...)
  2025-02-14 17:18 ` [PATCH 10/13] ASoC: mediatek: mt6359-accdet: Drop dead code for plugout-debounce Nícolas F. R. A. Prado
@ 2025-02-14 17:18 ` Nícolas F. R. A. Prado
  2025-02-14 17:18 ` [PATCH 12/13] ASoC: mediatek: mt6359-accdet: Split mediatek,pwm-deb-setting properties Nícolas F. R. A. Prado
  2025-02-14 17:18 ` [PATCH 13/13] arm64: dts: mt6359: Add accessory detect node Nícolas F. R. A. Prado
  12 siblings, 0 replies; 17+ messages in thread
From: Nícolas F. R. A. Prado @ 2025-02-14 17:18 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Nícolas F. R. A. Prado

The code currently allows for values between 0 and 4 for the
eint_use_ext_res property, but it should be handled as a boolean, either
configuring the internal resistor to be used or not. Update the code
accordingly.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
 sound/soc/codecs/mt6359-accdet.c | 12 +++---------
 sound/soc/codecs/mt6359-accdet.h |  2 +-
 2 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/sound/soc/codecs/mt6359-accdet.c b/sound/soc/codecs/mt6359-accdet.c
index c3d51c0753c815cd92935736300f57fd18e033f7..646cdd4e0b57f2a007fdcfcaecb7534e08ae61c4 100644
--- a/sound/soc/codecs/mt6359-accdet.c
+++ b/sound/soc/codecs/mt6359-accdet.c
@@ -82,8 +82,7 @@ static unsigned int adjust_eint_analog_setting(struct mt6359_accdet *priv)
 					   RG_EINT1CONFIGACCDET_MASK_SFT,
 					   BIT(RG_EINT1CONFIGACCDET_SFT));
 		}
-		if (priv->data->eint_use_ext_res == 0x3 ||
-		    priv->data->eint_use_ext_res == 0x4) {
+		if (!priv->data->eint_use_ext_res) {
 			/*select 500k, use internal resistor */
 			regmap_update_bits(priv->regmap,
 					   RG_EINT0HIRENB_ADDR,
@@ -547,12 +546,7 @@ static int mt6359_accdet_parse_dt(struct mt6359_accdet *priv)
 	else if (tmp == 2)
 		priv->caps |= ACCDET_PMIC_BI_EINT;
 
-	ret = of_property_read_u32(node, "mediatek,eint-use-ext-res",
-				   &priv->data->eint_use_ext_res);
-	if (ret) {
-		/* eint use internal resister */
-		priv->data->eint_use_ext_res = 0x0;
-	}
+	priv->data->eint_use_ext_res = of_property_read_bool(node, "mediatek,eint-use-ext-res");
 
 	ret = of_property_read_u32(node, "mediatek,eint-comp-vth",
 				   &priv->data->eint_comp_vth);
@@ -660,7 +654,7 @@ static void config_eint_init_by_mode(struct mt6359_accdet *priv)
 	if (priv->data->eint_detect_mode == 0x1 ||
 	    priv->data->eint_detect_mode == 0x2 ||
 	    priv->data->eint_detect_mode == 0x3) {
-		if (priv->data->eint_use_ext_res == 0x1) {
+		if (priv->data->eint_use_ext_res) {
 			if (priv->caps & ACCDET_PMIC_EINT0) {
 				regmap_update_bits(priv->regmap,
 						   RG_EINT0CONFIGACCDET_ADDR,
diff --git a/sound/soc/codecs/mt6359-accdet.h b/sound/soc/codecs/mt6359-accdet.h
index 148e181fc00048ea349c029b382507542a33202e..1a255a360b2319396e9b7a5a145a9317e575587f 100644
--- a/sound/soc/codecs/mt6359-accdet.h
+++ b/sound/soc/codecs/mt6359-accdet.h
@@ -76,7 +76,7 @@ struct dts_data {
 	struct pwm_deb_settings *pwm_deb;
 	unsigned int moisture_detect_enable;
 	unsigned int eint_detect_mode;
-	unsigned int eint_use_ext_res;
+	bool eint_use_ext_res;
 	unsigned int eint_comp_vth;
 	unsigned int moisture_detect_mode;
 	unsigned int moisture_comp_vth;

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 12/13] ASoC: mediatek: mt6359-accdet: Split mediatek,pwm-deb-setting properties
  2025-02-14 17:18 [PATCH 00/13] Get mt6359-accdet ready for usage in Devicetree Nícolas F. R. A. Prado
                   ` (10 preceding siblings ...)
  2025-02-14 17:18 ` [PATCH 11/13] ASoC: mediatek: mt6359-accdet: Handle mediatek,eint-use-ext-res as bool Nícolas F. R. A. Prado
@ 2025-02-14 17:18 ` Nícolas F. R. A. Prado
  2025-02-14 17:18 ` [PATCH 13/13] arm64: dts: mt6359: Add accessory detect node Nícolas F. R. A. Prado
  12 siblings, 0 replies; 17+ messages in thread
From: Nícolas F. R. A. Prado @ 2025-02-14 17:18 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Nícolas F. R. A. Prado

Instead of parsing an array of 15 integers from the
mediatek,pwm-deb-setting property, which makes them harder to identify,
parse each value individually from its own property.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
 sound/soc/codecs/mt6359-accdet.c | 44 +++++++++++++++++++++++++++++-----------
 1 file changed, 32 insertions(+), 12 deletions(-)

diff --git a/sound/soc/codecs/mt6359-accdet.c b/sound/soc/codecs/mt6359-accdet.c
index 646cdd4e0b57f2a007fdcfcaecb7534e08ae61c4..eca8a0eeb1f868a41c808cc0b853e77db3b0bf59 100644
--- a/sound/soc/codecs/mt6359-accdet.c
+++ b/sound/soc/codecs/mt6359-accdet.c
@@ -501,9 +501,13 @@ static int mt6359_accdet_parse_dt(struct mt6359_accdet *priv)
 	int ret;
 	struct device *dev = priv->dev;
 	struct device_node *node = NULL;
-	int pwm_deb[15] = {0};
+	struct pwm_deb_settings *pwm_deb;
 	unsigned int tmp = 0;
 
+	pwm_deb = devm_kzalloc(dev, sizeof(struct pwm_deb_settings), GFP_KERNEL);
+	if (!pwm_deb)
+		return -ENOMEM;
+
 	node = of_get_child_by_name(dev->parent->of_node, "accdet");
 	if (!node)
 		return -EINVAL;
@@ -518,11 +522,33 @@ static int mt6359_accdet_parse_dt(struct mt6359_accdet *priv)
 	if (ret)
 		priv->data->mic_mode = 2;
 
-	ret = of_property_read_u32_array(node, "mediatek,pwm-deb-setting",
-					 pwm_deb, ARRAY_SIZE(pwm_deb));
-	/* debounce8(auxadc debounce) is default, needn't get from dts */
-	if (!ret)
-		memcpy(priv->data->pwm_deb, pwm_deb, sizeof(pwm_deb));
+	of_property_read_u32(node, "mediatek,pwm-width", &pwm_deb->pwm_width);
+	of_property_read_u32(node, "mediatek,pwm-thresh", &pwm_deb->pwm_thresh);
+	of_property_read_u32(node, "mediatek,pwm-rise-delay",
+			     &pwm_deb->rise_delay);
+	of_property_read_u32(node, "mediatek,pwm-fall-delay",
+			     &pwm_deb->fall_delay);
+	of_property_read_u32(node, "mediatek,debounce0", &pwm_deb->debounce0);
+	of_property_read_u32(node, "mediatek,debounce1", &pwm_deb->debounce1);
+	of_property_read_u32(node, "mediatek,debounce3", &pwm_deb->debounce3);
+	of_property_read_u32(node, "mediatek,debounce-auxadc",
+			     &pwm_deb->debounce4);
+	of_property_read_u32(node, "mediatek,eint-cmpmen-pwm-width",
+			     &pwm_deb->eint_pwm_width);
+	of_property_read_u32(node, "mediatek,eint-cmpmen-pwm-thresh",
+			     &pwm_deb->eint_pwm_thresh);
+	of_property_read_u32(node, "mediatek,eint-debounce0",
+			     &pwm_deb->eint_debounce0);
+	of_property_read_u32(node, "mediatek,eint-debounce1",
+			     &pwm_deb->eint_debounce1);
+	of_property_read_u32(node, "mediatek,eint-debounce2",
+			     &pwm_deb->eint_debounce2);
+	of_property_read_u32(node, "mediatek,eint-debounce3",
+			     &pwm_deb->eint_debounce3);
+	of_property_read_u32(node, "mediatek,eint-inverter-debounce",
+			     &pwm_deb->eint_inverter_debounce);
+
+	priv->data->pwm_deb = pwm_deb;
 
 	ret = of_property_read_u32(node, "mediatek,eint-level-pol",
 				   &priv->data->eint_pol);
@@ -834,12 +860,6 @@ static int mt6359_accdet_probe(struct platform_device *pdev)
 	if (!priv->data)
 		return -ENOMEM;
 
-	priv->data->pwm_deb = devm_kzalloc(&pdev->dev,
-					   sizeof(struct pwm_deb_settings),
-					   GFP_KERNEL);
-	if (!priv->data->pwm_deb)
-		return -ENOMEM;
-
 	priv->regmap = mt6397->regmap;
 	if (IS_ERR(priv->regmap)) {
 		ret = PTR_ERR(priv->regmap);

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 13/13] arm64: dts: mt6359: Add accessory detect node
  2025-02-14 17:18 [PATCH 00/13] Get mt6359-accdet ready for usage in Devicetree Nícolas F. R. A. Prado
                   ` (11 preceding siblings ...)
  2025-02-14 17:18 ` [PATCH 12/13] ASoC: mediatek: mt6359-accdet: Split mediatek,pwm-deb-setting properties Nícolas F. R. A. Prado
@ 2025-02-14 17:18 ` Nícolas F. R. A. Prado
  12 siblings, 0 replies; 17+ messages in thread
From: Nícolas F. R. A. Prado @ 2025-02-14 17:18 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Nícolas F. R. A. Prado,
	Andrew Perepech

Add audio jack detection node. PMIC accessory detect driver will
create an input device that will send key events on jack
insertion/removal or accessory device key presses.

Co-developed-by: Andrew Perepech <andrew.perepech@mediatek.com>
Signed-off-by: Andrew Perepech <andrew.perepech@mediatek.com>
Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
 arch/arm64/boot/dts/mediatek/mt6359.dtsi | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/arch/arm64/boot/dts/mediatek/mt6359.dtsi b/arch/arm64/boot/dts/mediatek/mt6359.dtsi
index 150ad84d5d2b30ab6064c71e1375ce5df5ae4b36..44631fa046b88fffe888d94bfb9b5943b8a66b24 100644
--- a/arch/arm64/boot/dts/mediatek/mt6359.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt6359.dtsi
@@ -15,6 +15,30 @@ pmic_adc: adc {
 			#io-channel-cells = <1>;
 		};
 
+		accdet: accdet {
+			compatible = "mediatek,mt6359-accdet";
+			mediatek,mic-vol = <8>;
+			mediatek,mic-mode = <2>;
+			mediatek,pwm-width = <0x500>;
+			mediatek,pwm-thresh = <0x500>;
+			mediatek,pwm-fall-delay = <1>;
+			mediatek,pwm-rise-delay = <0x1f0>;
+			mediatek,debounce0 = <0x800>;
+			mediatek,debounce1 = <0x800>;
+			mediatek,debounce3 = <0x20>;
+			mediatek,debounce-auxadc = <0x44>;
+			mediatek,eint-cmpmen-pwm-width = <4>;
+			mediatek,eint-cmpmen-pwm-thresh = <1>;
+			mediatek,eint-debounce0 = <5>;
+			mediatek,eint-debounce1 = <3>;
+			mediatek,eint-debounce2 = <3>;
+			mediatek,eint-debounce3 = <5>;
+			mediatek,eint-inverter-debounce = <0xe>;
+			mediatek,eint-detect-mode = <4>;
+			mediatek,eint-num = <0>;
+			mediatek,eint-comp-vth = <2>;
+		};
+
 		mt6359codec: mt6359codec {
 		};
 

-- 
2.48.1



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH 01/13] ASoC: dt-bindings: Add document for mt6359-accdet
  2025-02-14 17:18 ` [PATCH 01/13] ASoC: dt-bindings: Add document for mt6359-accdet Nícolas F. R. A. Prado
@ 2025-02-18 13:18   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 17+ messages in thread
From: AngeloGioacchino Del Regno @ 2025-02-18 13:18 UTC (permalink / raw)
  To: Nícolas F. R. A. Prado, Liam Girdwood, Mark Brown,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm

Il 14/02/25 18:18, Nícolas F. R. A. Prado ha scritto:
> Add dt-binding for the MT6359 ACCDET hardware block.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
> ---
>   .../bindings/sound/mediatek,mt6359-accdet.yaml     | 293 +++++++++++++++++++++
>   1 file changed, 293 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/sound/mediatek,mt6359-accdet.yaml b/Documentation/devicetree/bindings/sound/mediatek,mt6359-accdet.yaml
> new file mode 100644
> index 0000000000000000000000000000000000000000..8922003d3b9d039d2a0355add7a90cf42b1a9da6
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/mediatek,mt6359-accdet.yaml
> @@ -0,0 +1,293 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/sound/mediatek,mt6359-accdet.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: MT6359 Accessory Detection
> +
> +maintainers:
> +  - Nícolas F. R. A. Prado <nfraprado@collabora.com>
> +
> +description: |
> +  The MT6359 Accessory Detection block is part of the MT6359 PMIC and allows
> +  detecting audio jack insertion and removal, as well as identifying the type of
> +  events connected to the jack.
> +
> +properties:
> +  compatible:
> +    const: mediatek,mt6359-accdet
> +
> +  mediatek,mic-vol:

mediatek,micbias1-microvolts = <1700000>;

enum: [1700000, 1800000 ... etc ]

> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: MIC bias1 output voltage setting
> +    enum:
> +      - 0 # 1.7V
> +      - 1 # 1.8V
> +      - 2 # 1.9V
> +      - 3 # 2.0V
> +      - 4 # 2.1V
> +      - 5 # 2.5V
> +      - 6 # 2.6V
> +      - 7 # 2.7V
> +      - 8 # 2.8V
> +      - 9 # 2.85V
> +
> +  mediatek,mic-mode:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: Mic mode setting
> +    enum:
> +      - 1 # ACC
> +      - 2 # DCC mode. Low cost mode without internal bias
> +      - 6 # DCC mode. Low cost mode with internal bias

This is already defined in mt6359.yaml....?!

> +
> +  mediatek,eint-cmpmen-pwm-width:

mediatek,eint-cmpm-pwm-width-ms:

> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: EINT CMPMEN PWM width

P.S.: CMPMEN = CoMParator Monitor ENable

description: EINT Comparator Monitor PWM Width

enum: [50, 80, 100, 200, 400, 500, 800, 1000]

> +    enum:
> +      - 0 # 50ms
> +      - 1 # 80ms
> +      - 2 # 100ms
> +      - 3 # 200ms
> +      - 4 # 400ms
> +      - 5 # 500ms
> +      - 6 # 800ms
> +      - 7 # 1000ms
> +
> +  mediatek,eint-cmpmen-pwm-thresh:

mediatek,eint-cmpm-pwm-threshold-ms:

> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: EINT CMPMEN PWM threshold

description: EINT Comparator Monitor PWM Threshold

enum: [1, 2, 3, 4, 5, 8, 10, 20, 30]

> +    enum:
> +      - 0 # 1ms
> +      - 1 # 2ms
> +      - 2 # 4ms
> +      - 3 # 5ms
> +      - 4 # 8ms
> +      - 5 # 10ms
> +      - 6 # 20ms
> +      - 7 # 30ms
> +
> +  mediatek,pwm-width:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: PWM width
> +    minimum: 0
> +    maximum: 65535
> +
> +  mediatek,pwm-thresh:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: PWM threshold
> +    minimum: 0
> +    maximum: 65535

You can simplify those two with one param "mediatek,pwm-duty-cycle", I think.
But then, regardless, you still need to express this in decent units...

make a few calculations - but the equation is...

PWM Width      = (32768 / (mediatek,pwm-width + 1)) [hertz]
PWM Duty Cycle = ((mediatek,pwm-thresh + 1) / (mediatek,pwm-width + 1)) [ns?]
PWM High Time  = (mediatek,pwm-thresh + 1) / 32768 [seconds]

> +
> +  mediatek,pwm-rise-delay:

mediatek,pwm-rise-delay-cycle:

> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: Rise delay for PWM

description: Rising delay of PWM waveform in cycles

> +    minimum: 0
> +    maximum: 65535
> +
> +  mediatek,pwm-fall-delay:

same for the falling one

> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: Fall delay for PWM
> +    minimum: 0
> +    maximum: 65535
> +
> +  mediatek,debounce0:

mediatek,adc-debounce-ns = < debounce0 debounce1 debounce2 debounce3 >

> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: Debounce time for state 0
> +    minimum: 0
> +    maximum: 65535
> +
> +  mediatek,debounce1:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: Debounce time for state 1
> +    minimum: 0
> +    maximum: 65535
> +
> +  mediatek,debounce3:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: Debounce time for state 3
> +    minimum: 0
> +    maximum: 65535
> +
> +  mediatek,debounce-auxadc:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: Debounce time for AUXADC
> +    minimum: 0
> +    maximum: 65535
> +

mediatek,eint-debounce-ns = < same as adc-debounce-ns >

> +  mediatek,eint-debounce0:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: Debounce time for EINT state 0
> +    enum:
> +      - 0 # 0ms
> +      - 1 # 0.12ms
> +      - 2 # 0.25ms
> +      - 3 # 0.5ms
> +      - 4 # 0.75ms
> +      - 5 # 1ms
> +      - 6 # 2ms
> +      - 7 # 4ms
> +      - 8 # 8ms
> +      - 9 # 16ms
> +      - 10 # 32ms
> +      - 11 # 48ms
> +      - 12 # 64ms
> +      - 13 # 128ms
> +      - 14 # 256ms
> +      - 15 # 512ms
> +
> +  mediatek,eint-debounce1:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: Debounce time for EINT state 1
> +    enum:
> +      - 0 # 0ms
> +      - 1 # 0.5ms
> +      - 2 # 0.75ms
> +      - 3 # 0.9ms
> +      - 4 # 1.5ms
> +      - 5 # 1.8ms
> +      - 6 # 3ms
> +      - 7 # 3.5ms
> +      - 8 # 3.8ms
> +      - 9 # 16ms
> +      - 10 # 32ms
> +      - 11 # 48ms
> +      - 12 # 64ms
> +      - 13 # 128ms
> +      - 14 # 256ms
> +      - 15 # 512ms
> +
> +  mediatek,eint-debounce2:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: Debounce time for EINT state 2
> +    enum:
> +      - 0 # 0ms
> +      - 1 # 0.5ms
> +      - 2 # 0.75ms
> +      - 3 # 0.9ms
> +      - 4 # 1.5ms
> +      - 5 # 1.8ms
> +      - 6 # 3ms
> +      - 7 # 3.5ms
> +      - 8 # 3.8ms
> +      - 9 # 4ms
> +      - 10 # 4.5ms
> +      - 11 # 5ms
> +      - 12 # 7ms
> +      - 13 # 9ms
> +      - 14 # 19ms
> +      - 15 # 25ms
> +
> +  mediatek,eint-debounce3:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: Debounce time for EINT state 3
> +    enum:
> +      - 0 # 0ms
> +      - 1 # 0.12ms
> +      - 2 # 0.25ms
> +      - 3 # 0.5ms
> +      - 4 # 0.75ms
> +      - 5 # 1ms
> +      - 6 # 2ms
> +      - 7 # 4ms
> +      - 8 # 8ms
> +      - 9 # 16ms
> +      - 10 # 32ms
> +      - 11 # 48ms
> +      - 12 # 64ms
> +      - 13 # 128ms
> +      - 14 # 256ms
> +      - 15 # 512ms
> +
> +  mediatek,eint-inverter-debounce:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: Debounce time for EINT inverter
> +    enum:
> +      - 0 # 0ms
> +      - 1 # 0.12ms
> +      - 2 # 0.25ms
> +      - 3 # 0.5ms
> +      - 4 # 0.75ms
> +      - 5 # 1ms
> +      - 6 # 2ms
> +      - 7 # 4ms
> +      - 8 # 8ms
> +      - 9 # 16ms
> +      - 10 # 32ms
> +      - 11 # 48ms
> +      - 12 # 64ms
> +      - 13 # 128ms
> +      - 14 # 256ms
> +      - 15 # 512ms
> +
> +  mediatek,eint-detect-mode:

This is fine, I think.

> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: EINT detection mode
> +    enum:
> +      - 0 # Higher detection power
> +      - 1 # Lower detection power
> +      - 2 # SW moisture detection mode1
> +      - 3 # HW moisture detection mode1
> +      - 4 # HW moisture detection mode2
> +
> +  mediatek,eint-num:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: EINT interrupt that should be enabled
> +    enum:
> +      - 0 # EINT0
> +      - 1 # EINT1
> +      - 2 # EINT0 | EINT1
> +
> +  mediatek,eint-use-ext-res:
> +    type: boolean
> +    description:
> +      Whether an external resistor should be used for the HP_EINT signal.
> +      By default an internal pull-up resistor is used.
> +
> +  mediatek,eint-comp-vth:

mediatek,eint-comp-vth-microvolts = ....

> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: EINT comparator threshold
> +    enum:
> +      - 0 # 2.4V
> +      - 1 # 2V
> +      - 2 # 1.6V
> +      - 3 # 1.2V
> +      - 4 # 0.8V
> +

...and that's more or less it....

Cheers,
Angelo

> +  mediatek,eint-level-pol:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: EINT interrupt polarity
> +
> +required:
> +  - compatible
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +
> +    accdet: accdet {
> +        compatible = "mediatek,mt6359-accdet";
> +        mediatek,mic-vol = <8>;
> +        mediatek,mic-mode = <2>;
> +        mediatek,pwm-width = <0x500>;
> +        mediatek,pwm-thresh = <0x500>;
> +        mediatek,pwm-fall-delay = <1>;
> +        mediatek,pwm-rise-delay = <0x1f0>;
> +        mediatek,debounce0 = <0x800>;
> +        mediatek,debounce1 = <0x800>;
> +        mediatek,debounce3 = <0x20>;
> +        mediatek,debounce-auxadc = <0x44>;
> +        mediatek,eint-cmpmen-pwm-width = <4>;
> +        mediatek,eint-cmpmen-pwm-thresh = <1>;
> +        mediatek,eint-debounce0 = <5>;
> +        mediatek,eint-debounce1 = <3>;
> +        mediatek,eint-debounce2 = <3>;
> +        mediatek,eint-debounce3 = <5>;
> +        mediatek,eint-inverter-debounce = <0xe>;
> +        mediatek,eint-detect-mode = <4>;
> +        mediatek,eint-num = <0>;
> +        mediatek,eint-comp-vth = <2>;
> +        mediatek,eint-level-pol = <IRQ_TYPE_LEVEL_LOW>;
> +    };
> 



^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 04/13] ASoC: mediatek: mt6359-accdet: Add compatible property
  2025-02-14 17:18 ` [PATCH 04/13] ASoC: mediatek: mt6359-accdet: Add compatible property Nícolas F. R. A. Prado
@ 2025-02-18 13:18   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 17+ messages in thread
From: AngeloGioacchino Del Regno @ 2025-02-18 13:18 UTC (permalink / raw)
  To: Nícolas F. R. A. Prado, Liam Girdwood, Mark Brown,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger,
	Sen Chu, Sean Wang, Macpaul Lin, Lee Jones, Jaroslav Kysela,
	Takashi Iwai
  Cc: kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Andrew Perepech

Il 14/02/25 18:18, Nícolas F. R. A. Prado ha scritto:
> Add a compatible property and add it to the module device table for the
> mt6359-accdet platform driver to allow automatic module loading and
> probing when the compatible is present in DT.
> 
> Co-developed-by: Andrew Perepech <andrew.perepech@mediatek.com>
> Signed-off-by: Andrew Perepech <andrew.perepech@mediatek.com>
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
> ---
>   sound/soc/codecs/mt6359-accdet.c | 10 ++++++++++
>   1 file changed, 10 insertions(+)
> 
> diff --git a/sound/soc/codecs/mt6359-accdet.c b/sound/soc/codecs/mt6359-accdet.c
> index ed34cc15b80e856356c07fd53af22207124e0d19..6f07db879c6a56ce4843954f51bb9602373e4aa5 100644
> --- a/sound/soc/codecs/mt6359-accdet.c
> +++ b/sound/soc/codecs/mt6359-accdet.c
> @@ -1047,9 +1047,19 @@ static int mt6359_accdet_probe(struct platform_device *pdev)
>   	return ret;
>   }
>   
> +const struct of_device_id accdet_of_match[] = {
> +	{
> +		.compatible = "mediatek,mt6359-accdet",
> +	}, {
> +		/* sentinel */
> +	},

Compress that stuff please...

	{ .compatible .. },
	{ /* sentinel */ }
};

after which:

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>

> +};
> +MODULE_DEVICE_TABLE(of, accdet_of_match);
> +
>   static struct platform_driver mt6359_accdet_driver = {
>   	.driver = {
>   		.name = "pmic-codec-accdet",
> +		.of_match_table = accdet_of_match,
>   	},
>   	.probe = mt6359_accdet_probe,
>   };
> 





^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 03/13] mfd: mt6397-core: Add mfd_cell for mt6359-accdet
  2025-02-14 17:18 ` [PATCH 03/13] mfd: mt6397-core: Add mfd_cell for mt6359-accdet Nícolas F. R. A. Prado
@ 2025-02-27 16:16   ` Lee Jones
  0 siblings, 0 replies; 17+ messages in thread
From: Lee Jones @ 2025-02-27 16:16 UTC (permalink / raw)
  To: Nícolas F. R. A. Prado
  Cc: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno,
	Sen Chu, Sean Wang, Macpaul Lin, Jaroslav Kysela, Takashi Iwai,
	kernel, linux-sound, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, linux-pm, Andrew Perepech

On Fri, 14 Feb 2025, Nícolas F. R. A. Prado wrote:

> From: Andrew Perepech <andrew.perepech@mediatek.com>
> 
> Add an mfd_cell for mt6359-accdet and describe its IRQ resources to
> allow the mt6359-accdet driver to probe.
> 
> Signed-off-by: Andrew Perepech <andrew.perepech@mediatek.com>
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
> ---
>  drivers/mfd/mt6397-core.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)

Looks okay.

Not sure why the other patches are yet to gain attention though.

-- 
Lee Jones [李琼斯]


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2025-02-27 19:39 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-14 17:18 [PATCH 00/13] Get mt6359-accdet ready for usage in Devicetree Nícolas F. R. A. Prado
2025-02-14 17:18 ` [PATCH 01/13] ASoC: dt-bindings: Add document for mt6359-accdet Nícolas F. R. A. Prado
2025-02-18 13:18   ` AngeloGioacchino Del Regno
2025-02-14 17:18 ` [PATCH 02/13] dt-bindings: mfd: mediatek: mt6397: Add accdet subnode Nícolas F. R. A. Prado
2025-02-14 17:18 ` [PATCH 03/13] mfd: mt6397-core: Add mfd_cell for mt6359-accdet Nícolas F. R. A. Prado
2025-02-27 16:16   ` Lee Jones
2025-02-14 17:18 ` [PATCH 04/13] ASoC: mediatek: mt6359-accdet: Add compatible property Nícolas F. R. A. Prado
2025-02-18 13:18   ` AngeloGioacchino Del Regno
2025-02-14 17:18 ` [PATCH 05/13] ASoC: mediatek: mt6359-accdet: Implement EINT IRQ polarity configuration Nícolas F. R. A. Prado
2025-02-14 17:18 ` [PATCH 06/13] ASoC: mediatek: mt6359-accdet: Use IRQ_TYPE_LEVEL_LOW not raw value Nícolas F. R. A. Prado
2025-02-14 17:18 ` [PATCH 07/13] ASoC: mediatek: mt6359-accdet: Drop dead code for EINT/GPIO IRQ handling Nícolas F. R. A. Prado
2025-02-14 17:18 ` [PATCH 08/13] ASoC: mediatek: mt6359-accdet: Drop dead code for EINT trigger setting Nícolas F. R. A. Prado
2025-02-14 17:18 ` [PATCH 09/13] ASoC: mediatek: mt6359-accdet: Drop dead code for button detection Nícolas F. R. A. Prado
2025-02-14 17:18 ` [PATCH 10/13] ASoC: mediatek: mt6359-accdet: Drop dead code for plugout-debounce Nícolas F. R. A. Prado
2025-02-14 17:18 ` [PATCH 11/13] ASoC: mediatek: mt6359-accdet: Handle mediatek,eint-use-ext-res as bool Nícolas F. R. A. Prado
2025-02-14 17:18 ` [PATCH 12/13] ASoC: mediatek: mt6359-accdet: Split mediatek,pwm-deb-setting properties Nícolas F. R. A. Prado
2025-02-14 17:18 ` [PATCH 13/13] arm64: dts: mt6359: Add accessory detect node Nícolas F. R. A. Prado

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).