]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 27 Aug 2023 18:30:27 +0000 (20:30 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 27 Aug 2023 18:30:27 +0000 (20:30 +0200)
added patches:
asoc-rt711-add-two-jack-detection-modes.patch

queue-5.10/asoc-rt711-add-two-jack-detection-modes.patch [new file with mode: 0644]
queue-5.10/series

diff --git a/queue-5.10/asoc-rt711-add-two-jack-detection-modes.patch b/queue-5.10/asoc-rt711-add-two-jack-detection-modes.patch
new file mode 100644 (file)
index 0000000..5c35cfc
--- /dev/null
@@ -0,0 +1,133 @@
+From 683b0df26c3333a5c020a2764b71a70d082c1c61 Mon Sep 17 00:00:00 2001
+From: Shuming Fan <shumingf@realtek.com>
+Date: Thu, 17 Jun 2021 17:08:22 +0800
+Subject: ASoC: rt711: add two jack detection modes
+
+From: Shuming Fan <shumingf@realtek.com>
+
+commit 683b0df26c3333a5c020a2764b71a70d082c1c61 upstream.
+
+Some boards use different circuits for jack detection.
+This patch adds two modes as below
+1. JD2/2 ports/external resister 100k
+2. JD2/1 port/JD voltage 1.8V
+
+Signed-off-by: Shuming Fan <shumingf@realtek.com>
+Link: https://lore.kernel.org/r/20210617090822.16960-1-shumingf@realtek.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Cc: Philip Müller <philm@manjaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/soc/codecs/rt711-sdw.h |    2 ++
+ sound/soc/codecs/rt711.c     |   30 ++++++++++++++++++++++++++++++
+ sound/soc/codecs/rt711.h     |   29 ++++++++++++++++++++++++++++-
+ 3 files changed, 60 insertions(+), 1 deletion(-)
+
+--- a/sound/soc/codecs/rt711-sdw.h
++++ b/sound/soc/codecs/rt711-sdw.h
+@@ -267,7 +267,9 @@ static const struct reg_default rt711_re
+       { 0x8393, 0x00 },
+       { 0x7319, 0x00 },
+       { 0x8399, 0x00 },
++      { 0x752008, 0xa807 },
+       { 0x752009, 0x1029 },
++      { 0x75200b, 0x7770 },
+       { 0x752011, 0x007a },
+       { 0x75201a, 0x8003 },
+       { 0x752045, 0x5289 },
+--- a/sound/soc/codecs/rt711.c
++++ b/sound/soc/codecs/rt711.c
+@@ -389,6 +389,36 @@ static void rt711_jack_init(struct rt711
+                               RT711_HP_JD_FINAL_RESULT_CTL_JD12,
+                               RT711_HP_JD_FINAL_RESULT_CTL_JD12);
+                       break;
++              case RT711_JD2_100K:
++                      rt711_index_update_bits(rt711->regmap, RT711_VENDOR_REG,
++                              RT711_JD_CTL2, RT711_JD2_2PORT_100K_DECODE | RT711_JD2_1PORT_TYPE_DECODE |
++                              RT711_HP_JD_SEL_JD2 | RT711_JD1_2PORT_TYPE_100K_DECODE,
++                              RT711_JD2_2PORT_100K_DECODE_HP | RT711_JD2_1PORT_JD_HP |
++                              RT711_HP_JD_SEL_JD2 | RT711_JD1_2PORT_JD_RESERVED);
++                      rt711_index_update_bits(rt711->regmap, RT711_VENDOR_REG,
++                              RT711_CC_DET1,
++                              RT711_HP_JD_FINAL_RESULT_CTL_JD12,
++                              RT711_HP_JD_FINAL_RESULT_CTL_JD12);
++                      break;
++              case RT711_JD2_1P8V_1PORT:
++                      rt711_index_update_bits(rt711->regmap, RT711_VENDOR_REG,
++                              RT711_JD_CTL1, RT711_JD2_DIGITAL_JD_MODE_SEL,
++                              RT711_JD2_1_JD_MODE);
++                      rt711_index_update_bits(rt711->regmap, RT711_VENDOR_REG,
++                              RT711_JD_CTL2, RT711_JD2_1PORT_TYPE_DECODE |
++                              RT711_HP_JD_SEL_JD2,
++                              RT711_JD2_1PORT_JD_HP |
++                              RT711_HP_JD_SEL_JD2);
++                      rt711_index_update_bits(rt711->regmap, RT711_VENDOR_REG,
++                              RT711_JD_CTL4, RT711_JD2_PAD_PULL_UP_MASK |
++                              RT711_JD2_MODE_SEL_MASK,
++                              RT711_JD2_PAD_PULL_UP |
++                              RT711_JD2_MODE2_1P8V_1PORT);
++                      rt711_index_update_bits(rt711->regmap, RT711_VENDOR_REG,
++                              RT711_CC_DET1,
++                              RT711_HP_JD_FINAL_RESULT_CTL_JD12,
++                              RT711_HP_JD_FINAL_RESULT_CTL_JD12);
++                      break;
+               default:
+                       dev_warn(rt711->component->dev, "Wrong JD source\n");
+                       break;
+--- a/sound/soc/codecs/rt711.h
++++ b/sound/soc/codecs/rt711.h
+@@ -52,7 +52,9 @@ struct sdw_stream_data {
+ /* Index (NID:20h) */
+ #define RT711_DAC_DC_CALI_CTL1                                0x00
++#define RT711_JD_CTL1                         0x08
+ #define RT711_JD_CTL2                         0x09
++#define RT711_JD_CTL4                         0x0b
+ #define RT711_CC_DET1                         0x11
+ #define RT711_PARA_VERB_CTL                           0x1a
+ #define RT711_COMBO_JACK_AUTO_CTL1                            0x45
+@@ -171,10 +173,33 @@ struct sdw_stream_data {
+ /* DAC DC offset calibration control-1 (0x00)(NID:20h) */
+ #define RT711_DAC_DC_CALI_TRIGGER (0x1 << 15)
++/* jack detect control 1 (0x08)(NID:20h) */
++#define RT711_JD2_DIGITAL_JD_MODE_SEL (0x1 << 1)
++#define RT711_JD2_1_JD_MODE (0x0 << 1)
++#define RT711_JD2_2_JD_MODE (0x1 << 1)
++
+ /* jack detect control 2 (0x09)(NID:20h) */
+ #define RT711_JD2_2PORT_200K_DECODE_HP (0x1 << 13)
++#define RT711_JD2_2PORT_100K_DECODE (0x1 << 12)
++#define RT711_JD2_2PORT_100K_DECODE_HP (0x0 << 12)
+ #define RT711_HP_JD_SEL_JD1 (0x0 << 1)
+ #define RT711_HP_JD_SEL_JD2 (0x1 << 1)
++#define RT711_JD2_1PORT_TYPE_DECODE (0x3 << 10)
++#define RT711_JD2_1PORT_JD_LINE2 (0x0 << 10)
++#define RT711_JD2_1PORT_JD_HP (0x1 << 10)
++#define RT711_JD2_1PORT_JD_LINE1 (0x2 << 10)
++#define RT711_JD1_2PORT_TYPE_100K_DECODE (0x1 << 0)
++#define RT711_JD1_2PORT_JD_RESERVED (0x0 << 0)
++#define RT711_JD1_2PORT_JD_LINE1 (0x1 << 0)
++
++/* jack detect control 4 (0x0b)(NID:20h) */
++#define RT711_JD2_PAD_PULL_UP_MASK (0x1 << 3)
++#define RT711_JD2_PAD_NOT_PULL_UP (0x0 << 3)
++#define RT711_JD2_PAD_PULL_UP (0x1 << 3)
++#define RT711_JD2_MODE_SEL_MASK (0x3 << 0)
++#define RT711_JD2_MODE0_2PORT (0x0 << 0)
++#define RT711_JD2_MODE1_3P3V_1PORT (0x1 << 0)
++#define RT711_JD2_MODE2_1P8V_1PORT (0x2 << 0)
+ /* CC DET1 (0x11)(NID:20h) */
+ #define RT711_HP_JD_FINAL_RESULT_CTL_JD12 (0x1 << 10)
+@@ -215,7 +240,9 @@ enum {
+ enum rt711_jd_src {
+       RT711_JD_NULL,
+       RT711_JD1,
+-      RT711_JD2
++      RT711_JD2,
++      RT711_JD2_100K,
++      RT711_JD2_1P8V_1PORT
+ };
+ int rt711_io_init(struct device *dev, struct sdw_slave *slave);
index ed564e458263708ad0f99b717b9e4aa0da54b5a4..0ab1903effc0eb898f6596ab6d3049fa504dcedf 100644 (file)
@@ -70,3 +70,4 @@ cgroup-cpuset-iterate-only-if-deadline-tasks-are-present.patch
 sched-deadline-create-dl-bw-alloc-free-check-overflow-interface.patch
 cgroup-cpuset-free-dl-bw-in-case-can_attach-fails.patch
 drm-i915-fix-premature-release-of-request-s-reusable-memory.patch
+asoc-rt711-add-two-jack-detection-modes.patch