From: Greg Kroah-Hartman Date: Sun, 27 Aug 2023 18:30:27 +0000 (+0200) Subject: 5.10-stable patches X-Git-Tag: v6.1.49~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4aeae13a669469690faa74c20aeb0699d5353855;p=thirdparty%2Fkernel%2Fstable-queue.git 5.10-stable patches added patches: asoc-rt711-add-two-jack-detection-modes.patch --- 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 index 00000000000..5c35cfce86b --- /dev/null +++ b/queue-5.10/asoc-rt711-add-two-jack-detection-modes.patch @@ -0,0 +1,133 @@ +From 683b0df26c3333a5c020a2764b71a70d082c1c61 Mon Sep 17 00:00:00 2001 +From: Shuming Fan +Date: Thu, 17 Jun 2021 17:08:22 +0800 +Subject: ASoC: rt711: add two jack detection modes + +From: Shuming Fan + +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 +Link: https://lore.kernel.org/r/20210617090822.16960-1-shumingf@realtek.com +Signed-off-by: Mark Brown +Cc: Philip Müller +Signed-off-by: Greg Kroah-Hartman +--- + 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); diff --git a/queue-5.10/series b/queue-5.10/series index ed564e45826..0ab1903effc 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -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