testing/linux-xiaomi-pipa: upgrade to 6.19.11
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8316>
This commit is contained in:
parent
5a7acde0f0
commit
90281e9722
14 changed files with 654 additions and 1981 deletions
|
|
@ -1,7 +1,8 @@
|
|||
From 2b12882b851d1eea3aaa7ad416d0b7de863530e8 Mon Sep 17 00:00:00 2001
|
||||
From bf64a74631c1df015388ff572c8479084b625da1 Mon Sep 17 00:00:00 2001
|
||||
From: bluebunny <1812-bluebunny@users.noreply.gitlab.postmarketos.org>
|
||||
Date: Thu, 19 Mar 2026 14:52:20 +0900
|
||||
Subject: [PATCH 01/12] arm64: dts: qcom: sm8250-xiaomi-pipa: Add device tree for Xiaomi Pad 6
|
||||
Subject: [PATCH 01/12] arm64: dts: qcom: sm8250-xiaomi-pipa: Add device tree
|
||||
for Xiaomi Pad 6
|
||||
|
||||
Co-developed-by: Ryo Kenrie Wongso <developer@damillora.com>
|
||||
Signed-off-by: Ryo Kenrie Wongso <developer@damillora.com>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
From 7fbd6cbdc9d417ac9f600e946b2a4b695ab84804 Mon Sep 17 00:00:00 2001
|
||||
From 8de782658e6f847107e711873af8c7412e1d7299 Mon Sep 17 00:00:00 2001
|
||||
From: Joel Selvaraj <jo@jsfamily.in>
|
||||
Date: Wed, 3 Feb 2021 19:54:45 +0000
|
||||
Subject: [PATCH 02/12] power: supply: Add driver for Qualcomm PMIC fuel gauge
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
From 3bd98bc7ce56ff2472cb17a0be9bcb56b107ac25 Mon Sep 17 00:00:00 2001
|
||||
From 154dfbecbae5be661610d14895fffd036bb45b8c Mon Sep 17 00:00:00 2001
|
||||
From: Jianhua Lu <lujianhua000@gmail.com>
|
||||
Date: Wed, 18 Sep 2024 14:27:53 +0800
|
||||
Subject: [PATCH 03/12] power: supply: add bq25970 charger driver
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,4 +1,4 @@
|
|||
From 52a2cbde53677a53453b512558f3cb2213fd87bc Mon Sep 17 00:00:00 2001
|
||||
From bf99cf395af1bccc191828aba631ca18fa4ecbc1 Mon Sep 17 00:00:00 2001
|
||||
From: Jianhua Lu <lujianhua000@gmail.com>
|
||||
Date: Thu, 4 Aug 2022 13:26:53 +0800
|
||||
Subject: [PATCH 05/12] drm: Add drm notifier support
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
From 34f033b66626bf82954f17a09ba3877ace034f2a Mon Sep 17 00:00:00 2001
|
||||
From 124895bab4804060519eb52dad4dbc9178d2c62f Mon Sep 17 00:00:00 2001
|
||||
From: Jianhua Lu <lujianhua000@gmail.com>
|
||||
Date: Mon, 17 Oct 2022 08:02:58 +0800
|
||||
Subject: [PATCH 06/12] drm: dsi: emit panel turn on/off signal to touchscreen
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
From 1afc0d0edec9d42ba072af2fe07380154186d55f Mon Sep 17 00:00:00 2001
|
||||
From 73515e9b78e92abfca144f95ef9ce2f44a88e83a Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
Date: Sun, 4 Jun 2023 21:44:33 +0300
|
||||
Subject: [PATCH 07/12] drm/msm/dsi: change sync mode to sync on DSI0 rather
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
From c6a632815c2f558bf8f8b29a17df05f5a914eecd Mon Sep 17 00:00:00 2001
|
||||
From 4fdf0e7715ba08b393fb80fac427f44d02b71374 Mon Sep 17 00:00:00 2001
|
||||
From: Jun Nie <jun.nie@linaro.org>
|
||||
Date: Wed, 1 Oct 2025 21:59:13 +0800
|
||||
Subject: [PATCH 08/12] drm/msm/dsi: support DSC configurations with
|
||||
|
|
@ -19,7 +19,7 @@ Signed-off-by: Junjie Cao <caojunjie650@gmail.com>
|
|||
2 files changed, 12 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
|
||||
index e0de545d4077..773ce8520698 100644
|
||||
index db6da99375a1..519410ec5197 100644
|
||||
--- a/drivers/gpu/drm/msm/dsi/dsi_host.c
|
||||
+++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
|
||||
@@ -166,6 +166,7 @@ struct msm_dsi_host {
|
||||
|
|
@ -30,7 +30,7 @@ index e0de545d4077..773ce8520698 100644
|
|||
|
||||
/* connected device info */
|
||||
unsigned int channel;
|
||||
@@ -910,17 +911,10 @@ static void dsi_update_dsc_timing(struct msm_dsi_host *msm_host, bool is_cmd_mod
|
||||
@@ -927,17 +928,10 @@ static void dsi_update_dsc_timing(struct msm_dsi_host *msm_host, bool is_cmd_mod
|
||||
slice_per_intf = dsc->slice_count;
|
||||
|
||||
total_bytes_per_intf = dsc->slice_chunk_size * slice_per_intf;
|
||||
|
|
@ -50,7 +50,7 @@ index e0de545d4077..773ce8520698 100644
|
|||
|
||||
if (is_cmd_mode) /* packet data type */
|
||||
reg = DSI_COMMAND_COMPRESSION_MODE_CTRL_STREAM0_DATATYPE(MIPI_DSI_DCS_LONG_WRITE);
|
||||
@@ -1069,12 +1063,8 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi)
|
||||
@@ -1088,12 +1082,8 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi)
|
||||
else
|
||||
/*
|
||||
* When DSC is enabled, WC = slice_chunk_size * slice_per_pkt + 1.
|
||||
|
|
@ -64,7 +64,7 @@ index e0de545d4077..773ce8520698 100644
|
|||
|
||||
dsi_write(msm_host, REG_DSI_CMD_MDP_STREAM0_CTRL,
|
||||
DSI_CMD_MDP_STREAM0_CTRL_WORD_COUNT(wc) |
|
||||
@@ -1683,8 +1673,13 @@ static int dsi_host_attach(struct mipi_dsi_host *host,
|
||||
@@ -1702,8 +1692,13 @@ static int dsi_host_attach(struct mipi_dsi_host *host,
|
||||
msm_host->lanes = dsi->lanes;
|
||||
msm_host->format = dsi->format;
|
||||
msm_host->mode_flags = dsi->mode_flags;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,4 +1,4 @@
|
|||
From c5591f3289e3aaa841af20889ad3d952f88a699b Mon Sep 17 00:00:00 2001
|
||||
From b7d4d69d76531e60945f625137a7b266a1447331 Mon Sep 17 00:00:00 2001
|
||||
From: bluebunny <1812-bluebunny@users.noreply.gitlab.postmarketos.org>
|
||||
Date: Mon, 27 Jan 2025 01:19:39 +0300
|
||||
Subject: [PATCH 10/12] drivers: media: i2c: ov13b10: add device tree support
|
||||
|
|
|
|||
|
|
@ -1,16 +1,18 @@
|
|||
From 1876ed85b33282e67f3bf85e97c0920b8fbe7ee3 Mon Sep 17 00:00:00 2001
|
||||
From 6e26f796af8264cc0c9f6a6c923e77a0e98e9a72 Mon Sep 17 00:00:00 2001
|
||||
From: domin746826 <ominek.pl91@gmail.com>
|
||||
Date: Fri, 11 Apr 2025 13:46:25 +0400
|
||||
Subject: [PATCH 11/12] ASoC: codecs: aw88261: add hacks for xiaomi-pipa
|
||||
|
||||
aw88261 requires some hacks to work on pipa, including device tree support and non-standard firmware requests to the codec itself.
|
||||
|
||||
The overall hack was reduced, but it still needs rework when linux-next changes land on stable.
|
||||
---
|
||||
sound/soc/codecs/aw88261.c | 541 ++++++++++++++++++++-----------------
|
||||
sound/soc/codecs/aw88261.h | 8 +-
|
||||
2 files changed, 297 insertions(+), 252 deletions(-)
|
||||
sound/soc/codecs/aw88261.c | 210 +++++++++++++++++++++++++++++++++++--
|
||||
sound/soc/codecs/aw88261.h | 4 +
|
||||
2 files changed, 208 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/sound/soc/codecs/aw88261.c b/sound/soc/codecs/aw88261.c
|
||||
index 96b1a85c26aa..8f9770d46517 100644
|
||||
index 96b1a85c26aa..f69fb56ec6b0 100644
|
||||
--- a/sound/soc/codecs/aw88261.c
|
||||
+++ b/sound/soc/codecs/aw88261.c
|
||||
@@ -10,11 +10,13 @@
|
||||
|
|
@ -27,288 +29,7 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
|
||||
static const struct regmap_config aw88261_remap_config = {
|
||||
.val_bits = 16,
|
||||
@@ -29,6 +31,10 @@ static void aw88261_dev_set_volume(struct aw_device *aw_dev, unsigned int value)
|
||||
struct aw_volume_desc *vol_desc = &aw_dev->volume_desc;
|
||||
unsigned int real_value, volume;
|
||||
unsigned int reg_value;
|
||||
+ unsigned int volume_boost = 3; // Apply a 3dB boost to all volume settings
|
||||
+
|
||||
+ /* Apply boosted volume - increase output level for Xiaomi Pad 6 */
|
||||
+ value = (value > volume_boost) ? (value - volume_boost) : 0;
|
||||
|
||||
volume = min((value + vol_desc->init_volume), (unsigned int)AW88261_MUTE_VOL);
|
||||
real_value = DB_TO_REG_VAL(volume);
|
||||
@@ -37,7 +43,7 @@ static void aw88261_dev_set_volume(struct aw_device *aw_dev, unsigned int value)
|
||||
|
||||
real_value = (real_value | (reg_value & AW88261_VOL_START_MASK));
|
||||
|
||||
- dev_dbg(aw_dev->dev, "value 0x%x , real_value:0x%x", value, real_value);
|
||||
+ dev_dbg(aw_dev->dev, "value 0x%x , real_value:0x%x (boosted)", value, real_value);
|
||||
|
||||
regmap_write(aw_dev->regmap, AW88261_SYSCTRL2_REG, real_value);
|
||||
}
|
||||
@@ -88,12 +94,12 @@ static void aw88261_dev_fade_out(struct aw_device *aw_dev)
|
||||
|
||||
static void aw88261_dev_i2s_tx_enable(struct aw_device *aw_dev, bool flag)
|
||||
{
|
||||
- if (flag)
|
||||
- regmap_update_bits(aw_dev->regmap, AW88261_I2SCFG1_REG,
|
||||
- ~AW88261_I2STXEN_MASK, AW88261_I2STXEN_ENABLE_VALUE);
|
||||
- else
|
||||
- regmap_update_bits(aw_dev->regmap, AW88261_I2SCFG1_REG,
|
||||
- ~AW88261_I2STXEN_MASK, AW88261_I2STXEN_DISABLE_VALUE);
|
||||
+ // if (flag)
|
||||
+ // regmap_update_bits(aw_dev->regmap, AW88261_I2SCFG1_REG,
|
||||
+ // ~AW88261_I2STXEN_MASK, AW88261_I2STXEN_ENABLE_VALUE);
|
||||
+ // else
|
||||
+ // regmap_update_bits(aw_dev->regmap, AW88261_I2SCFG1_REG,
|
||||
+ // ~AW88261_I2STXEN_MASK, AW88261_I2STXEN_DISABLE_VALUE);
|
||||
}
|
||||
|
||||
static void aw88261_dev_pwd(struct aw_device *aw_dev, bool pwd)
|
||||
@@ -108,11 +114,12 @@ static void aw88261_dev_pwd(struct aw_device *aw_dev, bool pwd)
|
||||
|
||||
static void aw88261_dev_amppd(struct aw_device *aw_dev, bool amppd)
|
||||
{
|
||||
+ int ret;
|
||||
if (amppd)
|
||||
- regmap_update_bits(aw_dev->regmap, AW88261_SYSCTRL_REG,
|
||||
+ ret = regmap_update_bits(aw_dev->regmap, AW88261_SYSCTRL_REG,
|
||||
~AW88261_AMPPD_MASK, AW88261_AMPPD_POWER_DOWN_VALUE);
|
||||
else
|
||||
- regmap_update_bits(aw_dev->regmap, AW88261_SYSCTRL_REG,
|
||||
+ ret = regmap_update_bits(aw_dev->regmap, AW88261_SYSCTRL_REG,
|
||||
~AW88261_AMPPD_MASK, AW88261_AMPPD_WORKING_VALUE);
|
||||
}
|
||||
|
||||
@@ -149,11 +156,19 @@ static int aw88261_dev_get_iis_status(struct aw_device *aw_dev)
|
||||
ret = regmap_read(aw_dev->regmap, AW88261_SYSST_REG, ®_val);
|
||||
if (ret)
|
||||
return ret;
|
||||
- if ((reg_val & AW88261_BIT_PLL_CHECK) != AW88261_BIT_PLL_CHECK) {
|
||||
- dev_err(aw_dev->dev, "check pll lock fail,reg_val:0x%04x", reg_val);
|
||||
- return -EINVAL;
|
||||
- }
|
||||
|
||||
+ bool pll_lock = (reg_val & (1 << 0)) == 0x0001;
|
||||
+ bool clks_available = (reg_val & (1 << 5)) == 0x0000;
|
||||
+
|
||||
+ if (pll_lock && clks_available) {
|
||||
+ dev_dbg(aw_dev->dev, "IIS signal is OK");
|
||||
+ ret = 0;
|
||||
+ } else {
|
||||
+ dev_err(aw_dev->dev,
|
||||
+ "IIS signal is not OK, pll_lock:%d, clks_available:%d",
|
||||
+ pll_lock, clks_available);
|
||||
+ ret = -EINVAL;
|
||||
+ }
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -174,68 +189,27 @@ static int aw88261_dev_check_mode1_pll(struct aw_device *aw_dev)
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
-static int aw88261_dev_check_mode2_pll(struct aw_device *aw_dev)
|
||||
+static int aw88261_dev_check_syspll(struct aw_device *aw_dev)
|
||||
{
|
||||
- unsigned int reg_val;
|
||||
- int ret, i;
|
||||
-
|
||||
- ret = regmap_read(aw_dev->regmap, AW88261_PLLCTRL1_REG, ®_val);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- reg_val &= (~AW88261_CCO_MUX_MASK);
|
||||
- if (reg_val == AW88261_CCO_MUX_DIVIDED_VALUE) {
|
||||
- dev_dbg(aw_dev->dev, "CCO_MUX is already divider");
|
||||
- return -EPERM;
|
||||
- }
|
||||
-
|
||||
- /* change mode2 */
|
||||
- ret = regmap_update_bits(aw_dev->regmap, AW88261_PLLCTRL1_REG,
|
||||
- ~AW88261_CCO_MUX_MASK, AW88261_CCO_MUX_DIVIDED_VALUE);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- for (i = 0; i < AW88261_DEV_SYSST_CHECK_MAX; i++) {
|
||||
- ret = aw88261_dev_get_iis_status(aw_dev);
|
||||
- if (ret) {
|
||||
- dev_err(aw_dev->dev, "mode2 iis signal check error");
|
||||
- usleep_range(AW88261_2000_US, AW88261_2000_US + 10);
|
||||
- } else {
|
||||
+ int ret;
|
||||
+ int retry_count = 0;
|
||||
+ const int max_retries = 20; // Increase retries for PLL stabilization
|
||||
+
|
||||
+ while (retry_count < max_retries) {
|
||||
+ ret = aw88261_dev_check_mode1_pll(aw_dev);
|
||||
+ if (ret != 0)
|
||||
+ retry_count++;
|
||||
+ else
|
||||
break;
|
||||
- }
|
||||
}
|
||||
|
||||
- /* change mode1 */
|
||||
- ret = regmap_update_bits(aw_dev->regmap, AW88261_PLLCTRL1_REG,
|
||||
- ~AW88261_CCO_MUX_MASK, AW88261_CCO_MUX_BYPASS_VALUE);
|
||||
- if (ret == 0) {
|
||||
- usleep_range(AW88261_2000_US, AW88261_2000_US + 10);
|
||||
- for (i = 0; i < AW88261_DEV_SYSST_CHECK_MAX; i++) {
|
||||
- ret = aw88261_dev_check_mode1_pll(aw_dev);
|
||||
- if (ret) {
|
||||
- dev_err(aw_dev->dev, "mode2 switch to mode1, iis signal check error");
|
||||
- usleep_range(AW88261_2000_US, AW88261_2000_US + 10);
|
||||
- } else {
|
||||
- break;
|
||||
- }
|
||||
- }
|
||||
+ if (retry_count == max_retries) {
|
||||
+ dev_err(aw_dev->dev,
|
||||
+ "Failed to stabilize PLL after %d attempts, we're cooked", max_retries);
|
||||
+ return -ETIMEDOUT;
|
||||
}
|
||||
-
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-static int aw88261_dev_check_syspll(struct aw_device *aw_dev)
|
||||
-{
|
||||
- int ret;
|
||||
-
|
||||
- ret = aw88261_dev_check_mode1_pll(aw_dev);
|
||||
- if (ret) {
|
||||
- dev_dbg(aw_dev->dev, "mode1 check iis failed try switch to mode2 check");
|
||||
- ret = aw88261_dev_check_mode2_pll(aw_dev);
|
||||
- if (ret) {
|
||||
- dev_err(aw_dev->dev, "mode2 check iis failed");
|
||||
- return ret;
|
||||
- }
|
||||
+ if (ret == 0) {
|
||||
+ dev_info(aw_dev->dev, "PLL stabilized successfully");
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -278,123 +252,13 @@ static void aw88261_dev_uls_hmute(struct aw_device *aw_dev, bool uls_hmute)
|
||||
AW88261_ULS_HMUTE_DISABLE_VALUE);
|
||||
}
|
||||
|
||||
-static void aw88261_reg_force_set(struct aw88261 *aw88261)
|
||||
-{
|
||||
- if (aw88261->frcset_en == AW88261_FRCSET_ENABLE) {
|
||||
- /* set FORCE_PWM */
|
||||
- regmap_update_bits(aw88261->regmap, AW88261_BSTCTRL3_REG,
|
||||
- AW88261_FORCE_PWM_MASK, AW88261_FORCE_PWM_FORCEMINUS_PWM_VALUE);
|
||||
- /* set BOOST_OS_WIDTH */
|
||||
- regmap_update_bits(aw88261->regmap, AW88261_BSTCTRL5_REG,
|
||||
- AW88261_BST_OS_WIDTH_MASK, AW88261_BST_OS_WIDTH_50NS_VALUE);
|
||||
- /* set BURST_LOOPR */
|
||||
- regmap_update_bits(aw88261->regmap, AW88261_BSTCTRL6_REG,
|
||||
- AW88261_BST_LOOPR_MASK, AW88261_BST_LOOPR_340K_VALUE);
|
||||
- /* set RSQN_DLY */
|
||||
- regmap_update_bits(aw88261->regmap, AW88261_BSTCTRL7_REG,
|
||||
- AW88261_RSQN_DLY_MASK, AW88261_RSQN_DLY_35NS_VALUE);
|
||||
- /* set BURST_SSMODE */
|
||||
- regmap_update_bits(aw88261->regmap, AW88261_BSTCTRL8_REG,
|
||||
- AW88261_BURST_SSMODE_MASK, AW88261_BURST_SSMODE_FAST_VALUE);
|
||||
- /* set BST_BURST */
|
||||
- regmap_update_bits(aw88261->regmap, AW88261_BSTCTRL9_REG,
|
||||
- AW88261_BST_BURST_MASK, AW88261_BST_BURST_30MA_VALUE);
|
||||
- } else {
|
||||
- dev_dbg(aw88261->aw_pa->dev, "needn't set reg value");
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-static int aw88261_dev_get_icalk(struct aw_device *aw_dev, int16_t *icalk)
|
||||
-{
|
||||
- u16 reg_icalk, reg_icalkl;
|
||||
- unsigned int reg_val;
|
||||
- int ret;
|
||||
-
|
||||
- ret = regmap_read(aw_dev->regmap, AW88261_EFRH4_REG, ®_val);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- reg_icalk = reg_val & (~AW88261_EF_ISN_GESLP_H_MASK);
|
||||
-
|
||||
- ret = regmap_read(aw_dev->regmap, AW88261_EFRL4_REG, ®_val);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- reg_icalkl = reg_val & (~AW88261_EF_ISN_GESLP_L_MASK);
|
||||
-
|
||||
- reg_icalk = (reg_icalk >> AW88261_ICALK_SHIFT) & (reg_icalkl >> AW88261_ICALKL_SHIFT);
|
||||
-
|
||||
- if (reg_icalk & (~AW88261_EF_ISN_GESLP_SIGN_MASK))
|
||||
- reg_icalk = reg_icalk | ~AW88261_EF_ISN_GESLP_NEG;
|
||||
-
|
||||
- *icalk = (int16_t)reg_icalk;
|
||||
-
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-static int aw88261_dev_get_vcalk(struct aw_device *aw_dev, int16_t *vcalk)
|
||||
-{
|
||||
- u16 reg_vcalk, reg_vcalkl;
|
||||
- unsigned int reg_val;
|
||||
- int ret;
|
||||
-
|
||||
- ret = regmap_read(aw_dev->regmap, AW88261_EFRH3_REG, ®_val);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- reg_vcalk = (u16)reg_val & (~AW88261_EF_VSN_GESLP_H_MASK);
|
||||
-
|
||||
- ret = regmap_read(aw_dev->regmap, AW88261_EFRL3_REG, ®_val);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- reg_vcalkl = (u16)reg_val & (~AW88261_EF_VSN_GESLP_L_MASK);
|
||||
-
|
||||
- reg_vcalk = (reg_vcalk >> AW88261_VCALK_SHIFT) & (reg_vcalkl >> AW88261_VCALKL_SHIFT);
|
||||
-
|
||||
- if (reg_vcalk & AW88261_EF_VSN_GESLP_SIGN_MASK)
|
||||
- reg_vcalk = reg_vcalk | (~AW88261_EF_VSN_GESLP_NEG);
|
||||
- *vcalk = (int16_t)reg_vcalk;
|
||||
-
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-static int aw88261_dev_set_vcalb(struct aw_device *aw_dev)
|
||||
-{
|
||||
- int16_t icalk_val, vcalk_val;
|
||||
- int icalk, vcalk, vcalb;
|
||||
- u32 reg_val;
|
||||
- int ret;
|
||||
-
|
||||
- ret = aw88261_dev_get_icalk(aw_dev, &icalk_val);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- ret = aw88261_dev_get_vcalk(aw_dev, &vcalk_val);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- icalk = AW88261_CABL_BASE_VALUE + AW88261_ICABLK_FACTOR * icalk_val;
|
||||
- vcalk = AW88261_CABL_BASE_VALUE + AW88261_VCABLK_FACTOR * vcalk_val;
|
||||
- if (!vcalk)
|
||||
- return -EINVAL;
|
||||
-
|
||||
- vcalb = AW88261_VCAL_FACTOR * icalk / vcalk;
|
||||
- reg_val = (unsigned int)vcalb;
|
||||
-
|
||||
- dev_dbg(aw_dev->dev, "icalk=%d, vcalk=%d, vcalb=%d, reg_val=0x%04x",
|
||||
- icalk, vcalk, vcalb, reg_val);
|
||||
- ret = regmap_write(aw_dev->regmap, AW88261_VSNTM1_REG, reg_val);
|
||||
-
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-static int aw88261_dev_reg_update(struct aw88261 *aw88261,
|
||||
- unsigned char *data, unsigned int len)
|
||||
+static int aw88261_dev_reg_update(struct aw88261 *aw88261, unsigned char *data, unsigned int len)
|
||||
{
|
||||
@@ -395,6 +397,8 @@ static int aw88261_dev_reg_update(struct aw88261 *aw88261,
|
||||
struct aw_device *aw_dev = aw88261->aw_pa;
|
||||
struct aw_volume_desc *vol_desc = &aw_dev->volume_desc;
|
||||
unsigned int read_val, efcheck_val, read_vol;
|
||||
|
|
@ -317,7 +38,7 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
int data_len, i, ret;
|
||||
int16_t *reg_data;
|
||||
u16 reg_val;
|
||||
@@ -417,6 +281,31 @@ static int aw88261_dev_reg_update(struct aw88261 *aw88261,
|
||||
@@ -417,6 +421,31 @@ static int aw88261_dev_reg_update(struct aw88261 *aw88261,
|
||||
reg_addr = reg_data[i];
|
||||
reg_val = reg_data[i + 1];
|
||||
|
||||
|
|
@ -349,20 +70,10 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
if (reg_addr == AW88261_SYSCTRL_REG) {
|
||||
aw88261->amppd_st = reg_val & (~AW88261_AMPPD_MASK);
|
||||
ret = regmap_read(aw_dev->regmap, reg_addr, &read_val);
|
||||
@@ -432,21 +321,45 @@ static int aw88261_dev_reg_update(struct aw88261 *aw88261,
|
||||
/* enable uls hmute */
|
||||
reg_val &= AW88261_ULS_HMUTE_MASK;
|
||||
reg_val |= AW88261_ULS_HMUTE_ENABLE_VALUE;
|
||||
+
|
||||
+ reg_val = 0b0011001001000000;
|
||||
@@ -442,6 +471,35 @@ static int aw88261_dev_reg_update(struct aw88261 *aw88261,
|
||||
aw88261->efuse_check = AW88261_EF_AND_CHECK;
|
||||
}
|
||||
|
||||
- if (reg_addr == AW88261_DBGCTRL_REG) {
|
||||
- efcheck_val = reg_val & (~AW88261_EF_DBMD_MASK);
|
||||
- if (efcheck_val == AW88261_OR_VALUE)
|
||||
- aw88261->efuse_check = AW88261_EF_OR_CHECK;
|
||||
- else
|
||||
- aw88261->efuse_check = AW88261_EF_AND_CHECK;
|
||||
+ /* Special handling for I2SCTRL registers for Xiaomi Pad 6 */
|
||||
+ if (reg_addr == AW88261_I2SCTRL1_REG &&
|
||||
+ (of_machine_is_compatible("xiaomi,pipa") ||
|
||||
|
|
@ -390,57 +101,12 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
+ aw_dev->dev,
|
||||
+ "Setting TDM mode for Xiaomi Pad 6, channel: %d",
|
||||
+ slot_num);
|
||||
}
|
||||
|
||||
+ }
|
||||
+
|
||||
/* i2stxen */
|
||||
if (reg_addr == AW88261_I2SCTRL3_REG) {
|
||||
/* close tx */
|
||||
- reg_val &= AW88261_I2STXEN_MASK;
|
||||
- reg_val |= AW88261_I2STXEN_DISABLE_VALUE;
|
||||
+ // reg_val &= AW88261_I2STXEN_MASK;
|
||||
+ // reg_val |= AW88261_I2STXEN_DISABLE_VALUE;
|
||||
+ reg_val = 0b0000000011110110; // 0b00000000_0_0_0_1_0_0_1_0;
|
||||
}
|
||||
|
||||
if (reg_addr == AW88261_SYSCTRL2_REG) {
|
||||
@@ -456,18 +369,11 @@ static int aw88261_dev_reg_update(struct aw88261 *aw88261,
|
||||
REG_VAL_TO_DB(read_vol);
|
||||
}
|
||||
|
||||
- if (reg_addr == AW88261_VSNTM1_REG)
|
||||
- continue;
|
||||
-
|
||||
ret = regmap_write(aw_dev->regmap, reg_addr, reg_val);
|
||||
if (ret)
|
||||
break;
|
||||
}
|
||||
|
||||
- ret = aw88261_dev_set_vcalb(aw_dev);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
if (aw_dev->prof_cur != aw_dev->prof_index)
|
||||
vol_desc->ctl_volume = 0;
|
||||
|
||||
@@ -580,8 +486,6 @@ static int aw88261_dev_start(struct aw88261 *aw88261)
|
||||
if (aw88261->amppd_st)
|
||||
aw88261_dev_amppd(aw_dev, true);
|
||||
|
||||
- aw88261_reg_force_set(aw88261);
|
||||
-
|
||||
/* close uls mute */
|
||||
aw88261_dev_uls_hmute(aw_dev, false);
|
||||
|
||||
@@ -609,7 +513,7 @@ static int aw88261_dev_start(struct aw88261 *aw88261)
|
||||
static int aw88261_dev_stop(struct aw_device *aw_dev)
|
||||
{
|
||||
if (aw_dev->status == AW88261_DEV_PW_OFF) {
|
||||
- dev_info(aw_dev->dev, "already power off");
|
||||
+ dev_dbg(aw_dev->dev, "already power off");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -711,6 +615,86 @@ static void aw88261_start(struct aw88261 *aw88261, bool sync_start)
|
||||
@@ -711,6 +769,70 @@ static void aw88261_start(struct aw88261 *aw88261, bool sync_start)
|
||||
AW88261_START_WORK_DELAY_MS);
|
||||
}
|
||||
|
||||
|
|
@ -501,23 +167,7 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int aw88261_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai)
|
||||
+{
|
||||
+ // aw_snd_soc_codec_t *codec = dai->component;
|
||||
+
|
||||
+ // struct aw88261 *aw88261 = snd_soc_component_get_drvdata(codec);
|
||||
+
|
||||
+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
||||
+ // handle playback
|
||||
+ } else {
|
||||
+ // handle capture
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct snd_soc_dai_ops aw88261_dai_ops = {
|
||||
+ .startup = aw88261_startup,
|
||||
+ .set_stream = aw88261_dai_set_stream,
|
||||
+ .set_sysclk = aw88261_dai_set_sysclk,
|
||||
+ .set_fmt = aw88261_dai_set_fmt,
|
||||
|
|
@ -527,20 +177,7 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
static struct snd_soc_dai_driver aw88261_dai[] = {
|
||||
{
|
||||
.name = "aw88261-aif",
|
||||
@@ -718,17 +702,18 @@ static struct snd_soc_dai_driver aw88261_dai[] = {
|
||||
.playback = {
|
||||
.stream_name = "Speaker_Playback",
|
||||
.channels_min = 1,
|
||||
- .channels_max = 2,
|
||||
+ .channels_max = 1,
|
||||
.rates = AW88261_RATES,
|
||||
.formats = AW88261_FORMATS,
|
||||
},
|
||||
.capture = {
|
||||
.stream_name = "Speaker_Capture",
|
||||
.channels_min = 1,
|
||||
- .channels_max = 2,
|
||||
+ .channels_max = 1,
|
||||
@@ -729,6 +851,7 @@ static struct snd_soc_dai_driver aw88261_dai[] = {
|
||||
.rates = AW88261_RATES,
|
||||
.formats = AW88261_FORMATS,
|
||||
},
|
||||
|
|
@ -548,7 +185,7 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
},
|
||||
};
|
||||
|
||||
@@ -956,6 +941,25 @@ static int aw88261_set_fade_step(struct snd_kcontrol *kcontrol,
|
||||
@@ -956,6 +1079,25 @@ static int aw88261_set_fade_step(struct snd_kcontrol *kcontrol,
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -574,59 +211,7 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
static const struct snd_kcontrol_new aw88261_controls[] = {
|
||||
SOC_SINGLE_EXT("PCM Playback Volume", AW88261_SYSCTRL2_REG,
|
||||
6, AW88261_MUTE_VOL, 0, aw88261_volume_get,
|
||||
@@ -1009,38 +1013,6 @@ static const struct snd_soc_dapm_route aw88261_audio_map[] = {
|
||||
{"AIF_TX", NULL, "ADC Input"},
|
||||
};
|
||||
|
||||
-static int aw88261_frcset_check(struct aw88261 *aw88261)
|
||||
-{
|
||||
- unsigned int reg_val;
|
||||
- u16 temh, teml, tem;
|
||||
- int ret;
|
||||
-
|
||||
- ret = regmap_read(aw88261->regmap, AW88261_EFRH3_REG, ®_val);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
- temh = ((u16)reg_val & (~AW88261_TEMH_MASK));
|
||||
-
|
||||
- ret = regmap_read(aw88261->regmap, AW88261_EFRL3_REG, ®_val);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
- teml = ((u16)reg_val & (~AW88261_TEML_MASK));
|
||||
-
|
||||
- if (aw88261->efuse_check == AW88261_EF_OR_CHECK)
|
||||
- tem = (temh | teml);
|
||||
- else
|
||||
- tem = (temh & teml);
|
||||
-
|
||||
- if (tem == AW88261_DEFAULT_CFG)
|
||||
- aw88261->frcset_en = AW88261_FRCSET_ENABLE;
|
||||
- else
|
||||
- aw88261->frcset_en = AW88261_FRCSET_DISABLE;
|
||||
-
|
||||
- dev_dbg(aw88261->aw_pa->dev, "tem is 0x%04x, frcset_en is %d",
|
||||
- tem, aw88261->frcset_en);
|
||||
-
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
static int aw88261_dev_init(struct aw88261 *aw88261, struct aw_container *aw_cfg)
|
||||
{
|
||||
struct aw_device *aw_dev = aw88261->aw_pa;
|
||||
@@ -1067,12 +1039,6 @@ static int aw88261_dev_init(struct aw88261 *aw88261, struct aw_container *aw_cfg
|
||||
return ret;
|
||||
}
|
||||
|
||||
- ret = aw88261_frcset_check(aw88261);
|
||||
- if (ret) {
|
||||
- dev_err(aw_dev->dev, "aw88261_frcset_check ret = %d\n", ret);
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
aw88261_dev_clear_int_status(aw_dev);
|
||||
|
||||
aw88261_dev_uls_hmute(aw_dev, true);
|
||||
@@ -1097,13 +1063,13 @@ static int aw88261_request_firmware_file(struct aw88261 *aw88261)
|
||||
@@ -1097,13 +1239,13 @@ static int aw88261_request_firmware_file(struct aw88261 *aw88261)
|
||||
|
||||
aw88261->aw_pa->fw_status = AW88261_DEV_FW_FAILED;
|
||||
|
||||
|
|
@ -643,7 +228,7 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
|
||||
aw88261->aw_cfg = devm_kzalloc(aw88261->aw_pa->dev, cont->size + sizeof(int), GFP_KERNEL);
|
||||
if (!aw88261->aw_cfg) {
|
||||
@@ -1116,7 +1082,7 @@ static int aw88261_request_firmware_file(struct aw88261 *aw88261)
|
||||
@@ -1116,7 +1258,7 @@ static int aw88261_request_firmware_file(struct aw88261 *aw88261)
|
||||
|
||||
ret = aw88395_dev_load_acf_check(aw88261->aw_pa, aw88261->aw_cfg);
|
||||
if (ret) {
|
||||
|
|
@ -652,7 +237,7 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
return ret;
|
||||
}
|
||||
|
||||
@@ -1135,28 +1101,65 @@ static int aw88261_codec_probe(struct snd_soc_component *component)
|
||||
@@ -1135,6 +1277,10 @@ static int aw88261_codec_probe(struct snd_soc_component *component)
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_component_to_dapm(component);
|
||||
struct aw88261 *aw88261 = snd_soc_component_get_drvdata(component);
|
||||
int ret;
|
||||
|
|
@ -663,30 +248,7 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
|
||||
INIT_DELAYED_WORK(&aw88261->start_work, aw88261_startup_work);
|
||||
|
||||
+ /* Log device info for debugging */
|
||||
+ dev_info(component->dev,
|
||||
+ "Probing AW88261 codec for Xiaomi Pad 6 (channel %d)",
|
||||
+ aw88261->aw_pa->channel);
|
||||
+
|
||||
ret = aw88261_request_firmware_file(aw88261);
|
||||
if (ret)
|
||||
return dev_err_probe(aw88261->aw_pa->dev, ret,
|
||||
"aw88261_request_firmware_file failed\n");
|
||||
|
||||
- /* add widgets */
|
||||
+ /* add widgets with unique names for each channel */
|
||||
ret = snd_soc_dapm_new_controls(dapm, aw88261_dapm_widgets,
|
||||
ARRAY_SIZE(aw88261_dapm_widgets));
|
||||
+ dev_info(component->dev, "Widget return status: %d\n", ret);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
- /* add route */
|
||||
+ /* add route with unique widget names */
|
||||
+
|
||||
ret = snd_soc_dapm_add_routes(dapm, aw88261_audio_map,
|
||||
ARRAY_SIZE(aw88261_audio_map));
|
||||
+ dev_info(component->dev, "Route return status: %d\n", ret);
|
||||
@@ -1155,8 +1301,24 @@ static int aw88261_codec_probe(struct snd_soc_component *component)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
@ -709,20 +271,11 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
+ if (ret) {
|
||||
+ dev_err(component->dev, "Failed to add controls: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ /* Apply Xiaomi Pad 6 specific optimizations */
|
||||
+ if (of_machine_is_compatible("xiaomi,pipa") ||
|
||||
+ of_machine_is_compatible("qcom,sm8250-mtp")) {
|
||||
+ dev_info(
|
||||
+ component->dev,
|
||||
+ "Applying Xiaomi Pad 6 specific optimizations for channel %d",
|
||||
+ aw88261->aw_pa->channel);
|
||||
+ }
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -1173,6 +1176,14 @@ static const struct snd_soc_component_driver soc_codec_dev_aw88261 = {
|
||||
@@ -1173,6 +1335,14 @@ static const struct snd_soc_component_driver soc_codec_dev_aw88261 = {
|
||||
.remove = aw88261_codec_remove,
|
||||
};
|
||||
|
||||
|
|
@ -737,7 +290,7 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
static void aw88261_parse_channel_dt(struct aw88261 *aw88261)
|
||||
{
|
||||
struct aw_device *aw_dev = aw88261->aw_pa;
|
||||
@@ -1185,6 +1196,19 @@ static void aw88261_parse_channel_dt(struct aw88261 *aw88261)
|
||||
@@ -1185,6 +1355,19 @@ static void aw88261_parse_channel_dt(struct aw88261 *aw88261)
|
||||
aw_dev->channel = channel_value;
|
||||
}
|
||||
|
||||
|
|
@ -757,13 +310,7 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
static int aw88261_init(struct aw88261 *aw88261, struct i2c_client *i2c, struct regmap *regmap)
|
||||
{
|
||||
struct aw_device *aw_dev;
|
||||
@@ -1218,11 +1242,12 @@ static int aw88261_init(struct aw88261 *aw88261, struct i2c_client *i2c, struct
|
||||
aw_dev->prof_info.count = 0;
|
||||
aw_dev->prof_info.prof_type = AW88395_DEV_NONE_TYPE_ID;
|
||||
aw_dev->channel = 0;
|
||||
- aw_dev->fw_status = AW88261_DEV_FW_FAILED;
|
||||
+ aw_dev->fw_status = AW88261_DEV_FW_OK;
|
||||
aw_dev->fade_step = AW88261_VOLUME_STEP_DB;
|
||||
@@ -1223,6 +1406,7 @@ static int aw88261_init(struct aw88261 *aw88261, struct i2c_client *i2c, struct
|
||||
aw_dev->volume_desc.ctl_volume = AW88261_VOL_DEFAULT_VALUE;
|
||||
aw_dev->volume_desc.mute_volume = AW88261_MUTE_VOL;
|
||||
aw88261_parse_channel_dt(aw88261);
|
||||
|
|
@ -771,16 +318,7 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
|
||||
return ret;
|
||||
}
|
||||
@@ -1232,6 +1257,8 @@ static int aw88261_i2c_probe(struct i2c_client *i2c)
|
||||
struct aw88261 *aw88261;
|
||||
int ret;
|
||||
|
||||
+ dev_info(&i2c->dev, "Probing AW88261 at address 0x%x, name: %s\n",
|
||||
+ i2c->addr, dev_name(&i2c->dev));
|
||||
ret = i2c_check_functionality(i2c->adapter, I2C_FUNC_I2C);
|
||||
if (!ret)
|
||||
return dev_err_probe(&i2c->dev, -ENXIO, "check_functionality failed");
|
||||
@@ -1244,6 +1271,13 @@ static int aw88261_i2c_probe(struct i2c_client *i2c)
|
||||
@@ -1244,6 +1428,13 @@ static int aw88261_i2c_probe(struct i2c_client *i2c)
|
||||
|
||||
i2c_set_clientdata(i2c, aw88261);
|
||||
|
||||
|
|
@ -794,7 +332,7 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
aw88261->regmap = devm_regmap_init_i2c(i2c, &aw88261_remap_config);
|
||||
if (IS_ERR(aw88261->regmap)) {
|
||||
ret = PTR_ERR(aw88261->regmap);
|
||||
@@ -1270,9 +1304,16 @@ static const struct i2c_device_id aw88261_i2c_id[] = {
|
||||
@@ -1270,9 +1461,16 @@ static const struct i2c_device_id aw88261_i2c_id[] = {
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, aw88261_i2c_id);
|
||||
|
||||
|
|
@ -812,36 +350,27 @@ index 96b1a85c26aa..8f9770d46517 100644
|
|||
.probe = aw88261_i2c_probe,
|
||||
.id_table = aw88261_i2c_id,
|
||||
diff --git a/sound/soc/codecs/aw88261.h b/sound/soc/codecs/aw88261.h
|
||||
index 734d0f93ced9..4cfa84c1b3f3 100644
|
||||
index 734d0f93ced9..c62043ed5e07 100644
|
||||
--- a/sound/soc/codecs/aw88261.h
|
||||
+++ b/sound/soc/codecs/aw88261.h
|
||||
@@ -372,8 +372,8 @@
|
||||
@@ -374,6 +374,7 @@
|
||||
|
||||
#define AW88261_I2C_NAME "aw88261"
|
||||
|
||||
-#define AW88261_RATES (SNDRV_PCM_RATE_8000_48000 | \
|
||||
- SNDRV_PCM_RATE_96000)
|
||||
+#define AW88261_RATES SNDRV_PCM_RATE_48000
|
||||
#define AW88261_RATES (SNDRV_PCM_RATE_8000_48000 | \
|
||||
SNDRV_PCM_RATE_96000)
|
||||
+
|
||||
#define AW88261_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
|
||||
SNDRV_PCM_FMTBIT_S24_LE | \
|
||||
SNDRV_PCM_FMTBIT_S32_LE)
|
||||
@@ -448,11 +448,15 @@ struct aw88261 {
|
||||
@@ -448,6 +449,9 @@ struct aw88261 {
|
||||
struct regmap *regmap;
|
||||
struct aw_container *aw_cfg;
|
||||
|
||||
+ const char *fw_name;
|
||||
+ int sysclk;
|
||||
+
|
||||
int efuse_check;
|
||||
int frcset_en;
|
||||
unsigned int mute_st;
|
||||
unsigned int amppd_st;
|
||||
|
||||
+ int sysclk;
|
||||
+
|
||||
bool phase_sync;
|
||||
};
|
||||
|
||||
--
|
||||
2.52.0
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
From c07e80d775c574391b70bec855075ba305fd0e78 Mon Sep 17 00:00:00 2001
|
||||
From ec0d4317e6e0c57f64aa9a175b827f21c2a208a5 Mon Sep 17 00:00:00 2001
|
||||
From: Jianhua Lu <lujianhua000@gmail.com>
|
||||
Date: Mon, 11 Dec 2023 09:23:28 +0800
|
||||
Subject: [PATCH 12/12] ASoC: qcom: sm8250: Add tdm support
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
maintainer="bluebunny <kalorin.bok084@passinbox.com>"
|
||||
_flavor="xiaomi-pipa"
|
||||
pkgname=linux-$_flavor
|
||||
pkgver=6.19.10
|
||||
pkgver=6.19.11
|
||||
pkgrel=0
|
||||
pkgdesc="Stable kernel for Xiaomi Pad 6"
|
||||
arch="aarch64"
|
||||
|
|
@ -90,18 +90,18 @@ package() {
|
|||
}
|
||||
|
||||
sha512sums="
|
||||
11a397c54dddf02fc62b52b2571a0d13cf96450c2e67cffa759c34b9432e51dcb39871347c9cdbca36cfaf78198015d8d7a4d2c2a8d506e22b998fd2b185341b linux-6.19.10.tar.xz
|
||||
1fa160c966de44287af79d33bda865abe8023e86756f1a6bb1bb01f30b264cbd52e6ae2c9bf24d77689cfb94eb5949d7a8049c20f222b8d34b63e6d2b72cfdba config-xiaomi-pipa.aarch64
|
||||
b074e307a6d670d4e07e21fef8a10a17d19b3f7c42d0c13c862c0411d36463e897d4351b7db6238fcd3c79d455a1716bd63be42d41158dadf91529cbac96433a 0001-arm64-dts-qcom-sm8250-xiaomi-pipa-Add-device-tree-fo.patch
|
||||
6ebbe90abac86eed17e3c8c162ff3d161422d8a5a8359de75ace7482ff73cfbc01e50b116d4d1753e1e889b3bf6baf10e7f90e5964cd6e88e399f2f53f802154 0002-power-supply-Add-driver-for-Qualcomm-PMIC-fuel-gauge.patch
|
||||
4602990473e9f4c446b62a1db80f23631542f29427847ae6eace5d8da0615e49443438d2a934530388b1d236c9d489d869136f2fc2469756e20d5eaa88861eb9 0003-power-supply-add-bq25970-charger-driver.patch
|
||||
06975736172a08bae8354bf1e5f958224454510829fa339e7e0318a2cea78aef84aea71856d563ee8ae1f734ab174db2897a9236f46c75b7f120dadce749bb3b 0004-Input-Add-nt36523-touchscreen-driver.patch
|
||||
488ca6bf65f07a0876d8362aa56422af77cc9e6aa421be7ffc3425886549c97857597d6915880a0851e88b844c132c3b57958fa911ef4d26c8be0479d71239ea 0005-drm-Add-drm-notifier-support.patch
|
||||
3f3d6825a06a2eacc1297c3857102550701d12cf6530f65b099b11ce0803d4148127223a8552417f0757618d82d671251d44c3b665af55b856c04ae5c92e098b 0006-drm-dsi-emit-panel-turn-on-off-signal-to-touchscreen.patch
|
||||
47968c31e40229f555ce31cd3674a00841b1feec9b30cbd3724415384965207e59d9b998ee59dbaccb73b431666b0071cf5f589bd63e841743d14ea4926f7432 0007-drm-msm-dsi-change-sync-mode-to-sync-on-DSI0-rather-.patch
|
||||
959c6ee7640887db16f6d0e8722daacff1ecab61d4146c60922129d154a96174559eef2819f46f6771b38704f63cbb9de08c1e57bcc8b292054592efa323710e 0008-drm-msm-dsi-support-DSC-configurations-with-slice_pe.patch
|
||||
6613e4c6c7ec2619a4d9440546852ac3edaf55a1f10011c99a339354162fee91858d8cf4b8367a65579a789cbfa2d10e81f4fe28ebefde6275de76a0a087e99e 0009-drm-panel-Add-support-for-Novatek-NT36532-panel.patch
|
||||
52c7bf7a788c47924fdc8f6d0a667fa89dbc9c7f1d87a71ba313866a0046832d573fc2acb132644d6a3d09022efd05cac096cc8741a2c16450755c43249766f4 0010-drivers-media-i2c-ov13b10-add-device-tree-support-an.patch
|
||||
5b0204da89898145d6ed1d3a60c35a9b3c5ba319e883ddc30c685daa427558702795a7a86a84ecb0a167791d951b1f5e3cd402ad9636b528111ac3c79805396f 0011-ASoC-codecs-aw88261-add-hacks-for-xiaomi-pipa.patch
|
||||
569377adb477d233b88b7b922d924d781a78e91ab829afe03e3a22882bc7b852e4dc6e34ea299e1e7a53e759a71c8c9e763e8e1dbf3e7e1fe1b0ea3f38b02cb9 0012-ASoC-qcom-sm8250-Add-tdm-support.patch
|
||||
d458fdf65f08b501978d1e274c777633b8473628fb099e2a9a8aac3a943b157fa5132a8ec026cc242f836eb2c441701b5e342f30402d10b12f6759097775de2a linux-6.19.11.tar.xz
|
||||
21638c8ad6858257885ccc78c4fb81937986f4b6e4a496bb5cfee19e642d06604209c757de96b0d1cc9ff54f66ecaabc69d68971651b31f6192a5ca7ab0214d5 config-xiaomi-pipa.aarch64
|
||||
d0758c5d4d4be8812fcbb10c60cc69f86dfd6cd0c305840cb1d445eea7999ee2e68c7a2211869426d2f25cc4b1a5ada5a16d02abf49d31929d6522b40446faa6 0001-arm64-dts-qcom-sm8250-xiaomi-pipa-Add-device-tree-fo.patch
|
||||
7e69dba0cfb93ed6f6cfcc7a5b4a9fe5b54c2b5a93a39a05b97928f4de9f1acc3780fb4668310548acc294649e135cdccb7ba5c7c4133286c69ab84e26c9e8ff 0002-power-supply-Add-driver-for-Qualcomm-PMIC-fuel-gauge.patch
|
||||
20a2c5424179dc625ff5d6f733ecf77fe5fd1388373f6a1c637d0324b5ddd738817e5bec4be0409e2073c907547b533b88982049f145f1c2261e246f998d7043 0003-power-supply-add-bq25970-charger-driver.patch
|
||||
c9ee1043db813789312f93de40f1cd281025b6abb7afed9410403db1e9422922e2c3c7ebeeb29b7cb43516fa8eb265165d2c2f3895c5ef1cff16b7100f7289b7 0004-Input-Add-nt36523-touchscreen-driver.patch
|
||||
a89109d1cedec7288c71b1966a78e73572fef98a6ec06654ea787833a442f5f5e368d6793060a78262a54abaad59c6f503b23622762cefcac0c5d0bb2f449abd 0005-drm-Add-drm-notifier-support.patch
|
||||
18bf12f551b0b0dc78f29f3e0a0a7f01bb02ca425987ef338cee270d0833e33d4a22e0d1b2465d5089581e94a5c959efbee35f9b40fa67c4d110e21690525811 0006-drm-dsi-emit-panel-turn-on-off-signal-to-touchscreen.patch
|
||||
a3989290372f0460a4ddde37f4ff6ad16dab34706b0723f1f60e01cd59792c11f59ccd1bc083b5f24f35138eaccc07b00ca7ace970c65fd2eb9dabbef7b1506f 0007-drm-msm-dsi-change-sync-mode-to-sync-on-DSI0-rather-.patch
|
||||
2a6d83c12a7958d3b53980de7d6202e2eb80134cd203cd809142f245ccf1d33ff0f07f6b110bf8bd2109e26744a0ee61e628be0d275fc722cbb8224d64abbba3 0008-drm-msm-dsi-support-DSC-configurations-with-slice_pe.patch
|
||||
65306c9462f3a4cc20f09ca6abede22e1b3948856181f8014c1fd3e4c2dcb44598c1899a4e7241a8eb055797ac3796d87cb6476581fd9fc478e91b0ea8014f5b 0009-drm-panel-Add-support-for-Novatek-NT36532-panel.patch
|
||||
becec854853aa2b21545b4132c024524f185cd6a63f816361dc970ae6635068430ec78b74fb08f7cc4bcdb92facc8596de78e5a1072f68f38c19e6d0f3d513de 0010-drivers-media-i2c-ov13b10-add-device-tree-support-an.patch
|
||||
f3487b392bab9158878b8354a133c8f7868b0b61791f2c189e8c6d615f970af8c81c475e6dba82c48451df0c3a15fe0c7cc2e1f8d2a7b8dd69319b9f3bbd35ce 0011-ASoC-codecs-aw88261-add-hacks-for-xiaomi-pipa.patch
|
||||
4863893049b002352144b7935929cbb89f0b2253735efb4aab96f9e18c7834e51af67fcd92f8514bf8c5a1ea8331aadd2bca171fb85f971c27ec17eaf7c31514 0012-ASoC-qcom-sm8250-Add-tdm-support.patch
|
||||
"
|
||||
|
|
|
|||
|
|
@ -1,20 +1,19 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 6.19.10 Kernel Configuration
|
||||
# Linux/arm64 6.19.11 Kernel Configuration
|
||||
#
|
||||
CONFIG_CC_VERSION_TEXT="Alpine clang version 21.1.2"
|
||||
CONFIG_CC_VERSION_TEXT="Alpine clang version 22.1.3"
|
||||
CONFIG_GCC_VERSION=0
|
||||
CONFIG_CC_IS_CLANG=y
|
||||
CONFIG_CLANG_VERSION=210102
|
||||
CONFIG_CLANG_VERSION=220103
|
||||
CONFIG_AS_IS_LLVM=y
|
||||
CONFIG_AS_VERSION=210102
|
||||
CONFIG_AS_VERSION=220103
|
||||
CONFIG_LD_VERSION=0
|
||||
CONFIG_LD_IS_LLD=y
|
||||
CONFIG_LLD_VERSION=210102
|
||||
CONFIG_RUSTC_VERSION=109101
|
||||
CONFIG_LLD_VERSION=220103
|
||||
CONFIG_RUSTC_VERSION=109401
|
||||
CONFIG_RUST_IS_AVAILABLE=y
|
||||
CONFIG_RUSTC_LLVM_VERSION=210102
|
||||
CONFIG_CC_CAN_LINK=y
|
||||
CONFIG_RUSTC_LLVM_VERSION=220101
|
||||
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
|
||||
CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y
|
||||
CONFIG_TOOLS_SUPPORT_RELR=y
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue