kernel-6.13.7-200

* Thu Mar 13 2025 Augusto Caringi <acaringi@redhat.com> [6.13.7-0]
- Set CONFIG_FW_CACHE=y for rhel to avoid config mismatch issues (Augusto Caringi)
- media: ov08x40: Extend sleep after reset to 5 ms (Hans de Goede)
- media: ov08x40: Log chip ID when identifying the chip (Hans de Goede)
- media: ov08x40: Fix value of reset GPIO when requesting it (Hans de Goede)
- ASoC: rt712-sdca: Add FU05 playback switch control (Shuming Fan) [2350689]
- Linux v6.13.7
Resolves: rhbz#2350689

Signed-off-by: Augusto Caringi <acaringi@redhat.com>
This commit is contained in:
Augusto Caringi 2025-03-13 14:15:41 -03:00
parent 7cf8deae04
commit c8e9bc39e6
24 changed files with 214 additions and 56 deletions

View File

@ -1,3 +1,15 @@
https://gitlab.com/cki-project/kernel-ark/-/commit/fa2776a85804c480dd9427a042e799849f060e2d
fa2776a85804c480dd9427a042e799849f060e2d media: ov08x40: Extend sleep after reset to 5 ms
https://gitlab.com/cki-project/kernel-ark/-/commit/6b680e517ceb2830d460ea67145070748f726be3
6b680e517ceb2830d460ea67145070748f726be3 media: ov08x40: Log chip ID when identifying the chip
https://gitlab.com/cki-project/kernel-ark/-/commit/54b19247d77afbda6c90d7ad6204e6c757a9645b
54b19247d77afbda6c90d7ad6204e6c757a9645b media: ov08x40: Fix value of reset GPIO when requesting it
https://gitlab.com/cki-project/kernel-ark/-/commit/9b79932890f97f0226f6c41b3cd05aee537d2561
9b79932890f97f0226f6c41b3cd05aee537d2561 ASoC: rt712-sdca: Add FU05 playback switch control
https://gitlab.com/cki-project/kernel-ark/-/commit/993f8a0404b0a8ee5b210f2d5e1b43a9236ea1a9
993f8a0404b0a8ee5b210f2d5e1b43a9236ea1a9 fuse: revert back to __readahead_folio() for readahead

View File

@ -2179,7 +2179,7 @@ CONFIG_FUSION_SAS=m
CONFIG_FUSION_SPI=m
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -2163,7 +2163,7 @@ CONFIG_FUSION_SAS=m
CONFIG_FUSION_SPI=m
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -2330,7 +2330,7 @@ CONFIG_FUSION_MAX_SGE=128
# CONFIG_FUSION_SPI is not set
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=m
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -2314,7 +2314,7 @@ CONFIG_FUSION_MAX_SGE=128
# CONFIG_FUSION_SPI is not set
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=m
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -2177,7 +2177,7 @@ CONFIG_FUSION_SAS=m
CONFIG_FUSION_SPI=m
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -2161,7 +2161,7 @@ CONFIG_FUSION_SAS=m
CONFIG_FUSION_SPI=m
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -2216,7 +2216,7 @@ CONFIG_FUSION_SAS=m
CONFIG_FUSION_SPI=m
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -2200,7 +2200,7 @@ CONFIG_FUSION_SAS=m
CONFIG_FUSION_SPI=m
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -1902,7 +1902,7 @@ CONFIG_FUSION_SAS=m
CONFIG_FUSION_SPI=m
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -1886,7 +1886,7 @@ CONFIG_FUSION_SAS=m
CONFIG_FUSION_SPI=m
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -1904,7 +1904,7 @@ CONFIG_FUSION_SAS=m
CONFIG_FUSION_SPI=m
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -1888,7 +1888,7 @@ CONFIG_FUSION_SAS=m
CONFIG_FUSION_SPI=m
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -1891,7 +1891,7 @@ CONFIG_FUSION_SAS=m
CONFIG_FUSION_SPI=m
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -2113,7 +2113,7 @@ CONFIG_FUSION_MAX_SGE=128
# CONFIG_FUSION_SPI is not set
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=m
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -2097,7 +2097,7 @@ CONFIG_FUSION_MAX_SGE=128
# CONFIG_FUSION_SPI is not set
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=m
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -2039,7 +2039,7 @@ CONFIG_FUSION_SAS=m
CONFIG_FUSION_SPI=m
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -2023,7 +2023,7 @@ CONFIG_FUSION_SAS=m
CONFIG_FUSION_SPI=m
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -2078,7 +2078,7 @@ CONFIG_FUSION_SAS=m
CONFIG_FUSION_SPI=m
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -2062,7 +2062,7 @@ CONFIG_FUSION_SAS=m
CONFIG_FUSION_SPI=m
CONFIG_FUSION=y
CONFIG_FUTEX=y
# CONFIG_FW_CACHE is not set
CONFIG_FW_CACHE=y
# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_FW_CFG_SYSFS=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set

View File

@ -1,3 +1,12 @@
* Thu Mar 13 2025 Augusto Caringi <acaringi@redhat.com> [6.13.7-0]
- Set CONFIG_FW_CACHE=y for rhel to avoid config mismatch issues (Augusto Caringi)
- media: ov08x40: Extend sleep after reset to 5 ms (Hans de Goede)
- media: ov08x40: Log chip ID when identifying the chip (Hans de Goede)
- media: ov08x40: Fix value of reset GPIO when requesting it (Hans de Goede)
- ASoC: rt712-sdca: Add FU05 playback switch control (Shuming Fan) [2350689]
- Linux v6.13.7
Resolves: rhbz#2350689
* Fri Mar 07 2025 Augusto Caringi <acaringi@redhat.com> [6.13.6-0]
- Fix up some debug module loading issues due to BTF mismatch (Justin M. Forbes)
- Linux v6.13.6

View File

@ -159,18 +159,18 @@ Summary: The Linux kernel
# the --with-release option overrides this setting.)
%define debugbuildsenabled 1
# define buildid .local
%define specrpmversion 6.13.6
%define specversion 6.13.6
%define specrpmversion 6.13.7
%define specversion 6.13.7
%define patchversion 6.13
%define pkgrelease 200
%define kversion 6
%define tarfile_release 6.13.6
%define tarfile_release 6.13.7
# This is needed to do merge window version magic
%define patchlevel 13
# This allows pkg_release to have configurable %%{?dist} tag
%define specrelease 200%{?buildid}%{?dist}
# This defines the kabi tarball version
%define kabiversion 6.13.6
%define kabiversion 6.13.7
# If this variable is set to 1, a bpf selftests build failure will cause a
# fatal kernel package build error
@ -4166,6 +4166,14 @@ fi\
#
#
%changelog
* Thu Mar 13 2025 Augusto Caringi <acaringi@redhat.com> [6.13.7-0]
- Set CONFIG_FW_CACHE=y for rhel to avoid config mismatch issues (Augusto Caringi)
- media: ov08x40: Extend sleep after reset to 5 ms (Hans de Goede)
- media: ov08x40: Log chip ID when identifying the chip (Hans de Goede)
- media: ov08x40: Fix value of reset GPIO when requesting it (Hans de Goede)
- ASoC: rt712-sdca: Add FU05 playback switch control (Shuming Fan) [2350689]
- Linux v6.13.7
* Fri Mar 07 2025 Augusto Caringi <acaringi@redhat.com> [6.13.6-0]
- Fix up some debug module loading issues due to BTF mismatch (Justin M. Forbes)
- Linux v6.13.6

View File

@ -47,8 +47,7 @@
drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 +
drivers/input/rmi4/rmi_driver.c | 124 +-
drivers/iommu/iommu.c | 22 +
drivers/media/i2c/ov08x40.c | 167 ++-
drivers/misc/mei/vsc-tp.c | 2 +-
drivers/media/i2c/ov08x40.c | 170 ++-
drivers/nvme/host/core.c | 22 +-
drivers/nvme/host/multipath.c | 19 +-
drivers/nvme/host/nvme.h | 4 +
@ -68,7 +67,9 @@
security/integrity/platform_certs/load_uefi.c | 6 +-
security/lockdown/Kconfig | 13 +
security/lockdown/lockdown.c | 11 +
70 files changed, 9164 insertions(+), 277 deletions(-)
sound/soc/codecs/rt712-sdca.c | 80 +-
sound/soc/codecs/rt712-sdca.h | 3 +
71 files changed, 9231 insertions(+), 294 deletions(-)
diff --git a/Documentation/hid/index.rst b/Documentation/hid/index.rst
index af02cf7cfa820..baf156b44b58a 100644
@ -672,7 +673,7 @@ index 0fa7c5728f1e6..e404279c86107 100644
M: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
L: platform-driver-x86@vger.kernel.org
diff --git a/Makefile b/Makefile
index f49182f3bae14..1a1d23c1b2938 100644
index 3363645fa6242..ba71e36c832be 100644
--- a/Makefile
+++ b/Makefile
@@ -22,6 +22,18 @@ $(if $(filter __%, $(MAKECMDGOALS)), \
@ -712,7 +713,7 @@ index f49182f3bae14..1a1d23c1b2938 100644
ifdef mixed-build
# ===========================================================================
# We're called with mixed targets (*config and build targets).
@@ -1905,6 +1928,23 @@ endif
@@ -1910,6 +1933,23 @@ endif
ifdef CONFIG_MODULES
@ -9002,7 +9003,7 @@ index 599030e1e890b..74dd17d516c0b 100644
* iommu_setup_default_domain - Set the default_domain for the group
* @group: Group to change
diff --git a/drivers/media/i2c/ov08x40.c b/drivers/media/i2c/ov08x40.c
index b9682264e2f53..c2a399e3bb414 100644
index b9682264e2f53..54575eea3c490 100644
--- a/drivers/media/i2c/ov08x40.c
+++ b/drivers/media/i2c/ov08x40.c
@@ -1322,9 +1322,6 @@ static int ov08x40_power_on(struct device *dev)
@ -9015,6 +9016,15 @@ index b9682264e2f53..c2a399e3bb414 100644
ret = clk_prepare_enable(ov08x->xvclk);
if (ret < 0) {
dev_err(dev, "failed to enable xvclk\n");
@@ -1344,7 +1341,7 @@ static int ov08x40_power_on(struct device *dev)
}
gpiod_set_value_cansleep(ov08x->reset_gpio, 0);
- usleep_range(1500, 1800);
+ usleep_range(5000, 5500);
return 0;
@@ -1360,9 +1357,6 @@ static int ov08x40_power_off(struct device *dev)
struct v4l2_subdev *sd = dev_get_drvdata(dev);
struct ov08x40 *ov08x = to_ov08x40(sd);
@ -9055,7 +9065,7 @@ index b9682264e2f53..c2a399e3bb414 100644
return 0;
}
@@ -1937,6 +1932,34 @@ static int ov08x40_stop_streaming(struct ov08x40 *ov08x)
@@ -1937,6 +1932,35 @@ static int ov08x40_stop_streaming(struct ov08x40 *ov08x)
OV08X40_REG_VALUE_08BIT, OV08X40_MODE_STANDBY);
}
@ -9082,6 +9092,7 @@ index b9682264e2f53..c2a399e3bb414 100644
+ return -ENXIO;
+ }
+
+ dev_dbg(&client->dev, "chip id 0x%x\n", val);
+ ov08x->identified = true;
+
+ return 0;
@ -9090,7 +9101,7 @@ index b9682264e2f53..c2a399e3bb414 100644
static int ov08x40_set_stream(struct v4l2_subdev *sd, int enable)
{
struct ov08x40 *ov08x = to_ov08x40(sd);
@@ -1950,6 +1973,10 @@ static int ov08x40_set_stream(struct v4l2_subdev *sd, int enable)
@@ -1950,6 +1974,10 @@ static int ov08x40_set_stream(struct v4l2_subdev *sd, int enable)
if (ret < 0)
goto err_unlock;
@ -9101,7 +9112,7 @@ index b9682264e2f53..c2a399e3bb414 100644
/*
* Apply default & customized values
* and then start streaming.
@@ -1974,32 +2001,6 @@ static int ov08x40_set_stream(struct v4l2_subdev *sd, int enable)
@@ -1974,32 +2002,6 @@ static int ov08x40_set_stream(struct v4l2_subdev *sd, int enable)
return ret;
}
@ -9134,7 +9145,7 @@ index b9682264e2f53..c2a399e3bb414 100644
static const struct v4l2_subdev_video_ops ov08x40_video_ops = {
.s_stream = ov08x40_set_stream,
};
@@ -2151,65 +2152,69 @@ static int ov08x40_check_hwcfg(struct ov08x40 *ov08x, struct device *dev)
@@ -2151,65 +2153,69 @@ static int ov08x40_check_hwcfg(struct ov08x40 *ov08x, struct device *dev)
int ret;
u32 xvclk_rate;
@ -9163,7 +9174,7 @@ index b9682264e2f53..c2a399e3bb414 100644
- xvclk_rate = clk_get_rate(ov08x->xvclk);
+ ov08x->reset_gpio = devm_gpiod_get_optional(dev, "reset",
+ GPIOD_OUT_LOW);
+ GPIOD_OUT_HIGH);
+ if (IS_ERR(ov08x->reset_gpio)) {
+ ret = dev_err_probe(dev, PTR_ERR(ov08x->reset_gpio),
+ "getting reset GPIO\n");
@ -9240,7 +9251,7 @@ index b9682264e2f53..c2a399e3bb414 100644
ret = -EINVAL;
goto out_err;
}
@@ -2222,7 +2227,7 @@ static int ov08x40_check_hwcfg(struct ov08x40 *ov08x, struct device *dev)
@@ -2222,7 +2228,7 @@ static int ov08x40_check_hwcfg(struct ov08x40 *ov08x, struct device *dev)
}
if (j == bus_cfg.nr_of_link_frequencies) {
@ -9249,7 +9260,7 @@ index b9682264e2f53..c2a399e3bb414 100644
link_freq_menu_items[i]);
ret = -EINVAL;
goto out_err;
@@ -2246,10 +2251,8 @@ static int ov08x40_probe(struct i2c_client *client)
@@ -2246,10 +2252,8 @@ static int ov08x40_probe(struct i2c_client *client)
/* Check HW config */
ret = ov08x40_check_hwcfg(ov08x, &client->dev);
@ -9261,7 +9272,7 @@ index b9682264e2f53..c2a399e3bb414 100644
/* Initialize subdev */
v4l2_i2c_subdev_init(&ov08x->sd, client, &ov08x40_subdev_ops);
@@ -2264,10 +2267,8 @@ static int ov08x40_probe(struct i2c_client *client)
@@ -2264,10 +2268,8 @@ static int ov08x40_probe(struct i2c_client *client)
/* Check module identity */
ret = ov08x40_identify_module(ov08x);
@ -9273,7 +9284,7 @@ index b9682264e2f53..c2a399e3bb414 100644
}
/* Set default mode to max resolution */
@@ -2324,11 +2325,14 @@ static void ov08x40_remove(struct i2c_client *client)
@@ -2324,11 +2326,14 @@ static void ov08x40_remove(struct i2c_client *client)
ov08x40_free_controls(ov08x);
pm_runtime_disable(&client->dev);
@ -9290,7 +9301,7 @@ index b9682264e2f53..c2a399e3bb414 100644
#ifdef CONFIG_ACPI
static const struct acpi_device_id ov08x40_acpi_ids[] = {
{"OVTI08F4"},
@@ -2349,6 +2353,7 @@ static struct i2c_driver ov08x40_i2c_driver = {
@@ -2349,6 +2354,7 @@ static struct i2c_driver ov08x40_i2c_driver = {
.name = "ov08x40",
.acpi_match_table = ACPI_PTR(ov08x40_acpi_ids),
.of_match_table = ov08x40_of_match,
@ -9298,19 +9309,6 @@ index b9682264e2f53..c2a399e3bb414 100644
},
.probe = ov08x40_probe,
.remove = ov08x40_remove,
diff --git a/drivers/misc/mei/vsc-tp.c b/drivers/misc/mei/vsc-tp.c
index 35d349fee7698..7be1649b19725 100644
--- a/drivers/misc/mei/vsc-tp.c
+++ b/drivers/misc/mei/vsc-tp.c
@@ -502,7 +502,7 @@ static int vsc_tp_probe(struct spi_device *spi)
if (ret)
return ret;
- tp->wakeuphost = devm_gpiod_get(dev, "wakeuphost", GPIOD_IN);
+ tp->wakeuphost = devm_gpiod_get(dev, "wakeuphostint", GPIOD_IN);
if (IS_ERR(tp->wakeuphost))
return PTR_ERR(tp->wakeuphost);
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 46e04b30f6425..063ffbe57ba94 100644
--- a/drivers/nvme/host/core.c
@ -9514,7 +9512,7 @@ index af62a8ed86200..bf275aac44e19 100644
if (err)
goto err_out_driver;
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 906daf423cb02..5e69805e10162 100644
index 145787c424e0c..85f92b85237cb 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -5856,6 +5856,13 @@ static void hub_event(struct work_struct *work)
@ -10591,3 +10589,134 @@ index f2bdbd55aa2bc..b37a79c4a6af7 100644
static struct security_hook_list lockdown_hooks[] __ro_after_init = {
LSM_HOOK_INIT(locked_down, lockdown_is_locked_down),
};
diff --git a/sound/soc/codecs/rt712-sdca.c b/sound/soc/codecs/rt712-sdca.c
index 78dbf9eed494b..19d99b9d4ab26 100644
--- a/sound/soc/codecs/rt712-sdca.c
+++ b/sound/soc/codecs/rt712-sdca.c
@@ -652,6 +652,61 @@ static int rt712_sdca_fu0f_capture_put(struct snd_kcontrol *kcontrol,
return 1;
}
+static int rt712_sdca_set_fu05_playback_ctl(struct rt712_sdca_priv *rt712)
+{
+ int err;
+ unsigned int ch_01, ch_02;
+
+ ch_01 = (rt712->fu05_dapm_mute || rt712->fu05_mixer_l_mute) ? 0x01 : 0x00;
+ ch_02 = (rt712->fu05_dapm_mute || rt712->fu05_mixer_r_mute) ? 0x01 : 0x00;
+
+ err = regmap_write(rt712->regmap,
+ SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT712_SDCA_ENT_USER_FU05,
+ RT712_SDCA_CTL_FU_MUTE, CH_01), ch_01);
+ if (err < 0)
+ return err;
+
+ err = regmap_write(rt712->regmap,
+ SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT712_SDCA_ENT_USER_FU05,
+ RT712_SDCA_CTL_FU_MUTE, CH_02), ch_02);
+ if (err < 0)
+ return err;
+
+ return 0;
+}
+
+static int rt712_sdca_fu05_playback_get(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
+ struct rt712_sdca_priv *rt712 = snd_soc_component_get_drvdata(component);
+
+ ucontrol->value.integer.value[0] = !rt712->fu05_mixer_l_mute;
+ ucontrol->value.integer.value[1] = !rt712->fu05_mixer_r_mute;
+ return 0;
+}
+
+static int rt712_sdca_fu05_playback_put(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
+ struct rt712_sdca_priv *rt712 = snd_soc_component_get_drvdata(component);
+ int err;
+
+ if (rt712->fu05_mixer_l_mute == !ucontrol->value.integer.value[0] &&
+ rt712->fu05_mixer_r_mute == !ucontrol->value.integer.value[1])
+ return 0;
+
+ rt712->fu05_mixer_l_mute = !ucontrol->value.integer.value[0];
+ rt712->fu05_mixer_r_mute = !ucontrol->value.integer.value[1];
+
+ err = rt712_sdca_set_fu05_playback_ctl(rt712);
+ if (err < 0)
+ return err;
+
+ return 1;
+}
+
static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -6525, 75, 0);
static const DECLARE_TLV_DB_SCALE(mic_vol_tlv, -1725, 75, 0);
static const DECLARE_TLV_DB_SCALE(boost_vol_tlv, 0, 1000, 0);
@@ -674,6 +729,8 @@ static const struct snd_kcontrol_new rt712_sdca_controls[] = {
SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT712_SDCA_ENT_PLATFORM_FU44, RT712_SDCA_CTL_FU_CH_GAIN, CH_02),
8, 3, 0,
rt712_sdca_set_gain_get, rt712_sdca_set_gain_put, boost_vol_tlv),
+ SOC_DOUBLE_EXT("FU05 Playback Switch", SND_SOC_NOPM, 0, 1, 1, 0,
+ rt712_sdca_fu05_playback_get, rt712_sdca_fu05_playback_put),
};
static const struct snd_kcontrol_new rt712_sdca_spk_controls[] = {
@@ -766,28 +823,15 @@ static int rt712_sdca_fu05_event(struct snd_soc_dapm_widget *w,
struct snd_soc_component *component =
snd_soc_dapm_to_component(w->dapm);
struct rt712_sdca_priv *rt712 = snd_soc_component_get_drvdata(component);
- unsigned char unmute = 0x0, mute = 0x1;
switch (event) {
case SND_SOC_DAPM_POST_PMU:
- regmap_write(rt712->regmap,
- SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT712_SDCA_ENT_USER_FU05,
- RT712_SDCA_CTL_FU_MUTE, CH_01),
- unmute);
- regmap_write(rt712->regmap,
- SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT712_SDCA_ENT_USER_FU05,
- RT712_SDCA_CTL_FU_MUTE, CH_02),
- unmute);
+ rt712->fu05_dapm_mute = false;
+ rt712_sdca_set_fu05_playback_ctl(rt712);
break;
case SND_SOC_DAPM_PRE_PMD:
- regmap_write(rt712->regmap,
- SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT712_SDCA_ENT_USER_FU05,
- RT712_SDCA_CTL_FU_MUTE, CH_01),
- mute);
- regmap_write(rt712->regmap,
- SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT712_SDCA_ENT_USER_FU05,
- RT712_SDCA_CTL_FU_MUTE, CH_02),
- mute);
+ rt712->fu05_dapm_mute = true;
+ rt712_sdca_set_fu05_playback_ctl(rt712);
break;
}
return 0;
@@ -1640,6 +1684,8 @@ int rt712_sdca_init(struct device *dev, struct regmap *regmap,
rt712->fu1e_dapm_mute = true;
rt712->fu1e_mixer_mute[0] = rt712->fu1e_mixer_mute[1] =
rt712->fu1e_mixer_mute[2] = rt712->fu1e_mixer_mute[3] = true;
+ rt712->fu05_dapm_mute = true;
+ rt712->fu05_mixer_l_mute = rt712->fu05_mixer_r_mute = false;
/* JD source uses JD1 in default */
rt712->jd_src = RT712_JD1;
diff --git a/sound/soc/codecs/rt712-sdca.h b/sound/soc/codecs/rt712-sdca.h
index a08491496d901..7ab7d5feb50a2 100644
--- a/sound/soc/codecs/rt712-sdca.h
+++ b/sound/soc/codecs/rt712-sdca.h
@@ -42,6 +42,9 @@ struct rt712_sdca_priv {
bool fu0f_mixer_r_mute;
bool fu1e_dapm_mute;
bool fu1e_mixer_mute[4];
+ bool fu05_dapm_mute;
+ bool fu05_mixer_l_mute;
+ bool fu05_mixer_r_mute;
};
struct rt712_dmic_kctrl_priv {

View File

@ -1,3 +1,3 @@
SHA512 (linux-6.13.6.tar.xz) = 2290e45305ff3f022da435081af4a568cb1fb3f8d37696318f93ce9adc198afc9a40ef310021eeb9912e21db63e3968681b2ca67caa0b5cf329887fb19f6e942
SHA512 (kernel-abi-stablelists-6.13.6.tar.xz) = 92c1fd5b1c415f1cd576caba8353024bea2b1f431873594a9aa474abc7771e9058c790c37bf65e6f72fc1c7ac9241fbba16877df2f3cffaa554f838c0565e730
SHA512 (kernel-kabi-dw-6.13.6.tar.xz) = 024cbd41540195018dbc5eabb1bf53fef8584a69c176a143b01bc5ee2650ac151263a417d227535a3ddb908d54a615d4b19ae9892fb3d57e3f482f71f195ac64
SHA512 (linux-6.13.7.tar.xz) = dd98bd427f6b0c4fdf85882a6e8fb9a378f491255dcaba8854343b2e261875f96b82bdacd2a556f58751dc3b452c86ef8da02827a51e0e4e5eb1e67376e259a2
SHA512 (kernel-abi-stablelists-6.13.7.tar.xz) = 93973b5bac6f6cdb99edc6df1ebeef254b598c6c23c96e705fbe264ba5300b3fe2b706749d1f9fe62a0b25caeca6568fea5d028ad20ee2d21aebd4c25c8f7aff
SHA512 (kernel-kabi-dw-6.13.7.tar.xz) = 11be634ecf8318ddf681a40510844eb0683e32245ab4e76e0983768f59cd3d393d0f67306594d6b2ff7c85a4bc257c0149bd9c70b762cb43704e8515ff853276