All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev, Shuming Fan <shumingf@realtek.com>,
	Mark Brown <broonie@kernel.org>, Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.1 206/239] ASoC: rt1318: Add RT1318 SDCA vendor-specific driver
Date: Mon, 15 May 2023 18:27:49 +0200	[thread overview]
Message-ID: <20230515161727.907512241@linuxfoundation.org> (raw)
In-Reply-To: <20230515161721.545370111@linuxfoundation.org>

From: Shuming Fan <shumingf@realtek.com>

[ Upstream commit 6ad73a2b42ea6d43fc5bf32033e8f6b21df3109e ]

This is the initial amplifier driver for rt1318 SDCA version.

Signed-off-by: Shuming Fan <shumingf@realtek.com>
Link: https://lore.kernel.org/r/20221108092727.13011-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Stable-dep-of: 84822215acd1 ("ASoC: codecs: wcd938x: fix accessing regmap on unattached devices")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/codecs/Kconfig      |   6 +
 sound/soc/codecs/Makefile     |   2 +
 sound/soc/codecs/rt1318-sdw.c | 884 ++++++++++++++++++++++++++++++++++
 sound/soc/codecs/rt1318-sdw.h | 101 ++++
 4 files changed, 993 insertions(+)
 create mode 100644 sound/soc/codecs/rt1318-sdw.c
 create mode 100644 sound/soc/codecs/rt1318-sdw.h

diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
index 3f16ad1c37585..965ae55fa1607 100644
--- a/sound/soc/codecs/Kconfig
+++ b/sound/soc/codecs/Kconfig
@@ -199,6 +199,7 @@ config SND_SOC_ALL_CODECS
 	imply SND_SOC_RT715_SDCA_SDW
 	imply SND_SOC_RT1308_SDW
 	imply SND_SOC_RT1316_SDW
+	imply SND_SOC_RT1318_SDW
 	imply SND_SOC_RT9120
 	imply SND_SOC_SDW_MOCKUP
 	imply SND_SOC_SGTL5000
@@ -1311,6 +1312,11 @@ config SND_SOC_RT1316_SDW
 	depends on SOUNDWIRE
 	select REGMAP_SOUNDWIRE
 
+config SND_SOC_RT1318_SDW
+	tristate "Realtek RT1318 Codec - SDW"
+	depends on SOUNDWIRE
+	select REGMAP_SOUNDWIRE
+
 config SND_SOC_RT5514
 	tristate
 	depends on I2C
diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
index 9170ee1447dda..71d3ce5867e4f 100644
--- a/sound/soc/codecs/Makefile
+++ b/sound/soc/codecs/Makefile
@@ -196,6 +196,7 @@ snd-soc-rt1305-objs := rt1305.o
 snd-soc-rt1308-objs := rt1308.o
 snd-soc-rt1308-sdw-objs := rt1308-sdw.o
 snd-soc-rt1316-sdw-objs := rt1316-sdw.o
+snd-soc-rt1318-sdw-objs := rt1318-sdw.o
 snd-soc-rt274-objs := rt274.o
 snd-soc-rt286-objs := rt286.o
 snd-soc-rt298-objs := rt298.o
@@ -551,6 +552,7 @@ obj-$(CONFIG_SND_SOC_RT1305)	+= snd-soc-rt1305.o
 obj-$(CONFIG_SND_SOC_RT1308)	+= snd-soc-rt1308.o
 obj-$(CONFIG_SND_SOC_RT1308_SDW)	+= snd-soc-rt1308-sdw.o
 obj-$(CONFIG_SND_SOC_RT1316_SDW)	+= snd-soc-rt1316-sdw.o
+obj-$(CONFIG_SND_SOC_RT1318_SDW)	+= snd-soc-rt1318-sdw.o
 obj-$(CONFIG_SND_SOC_RT274)	+= snd-soc-rt274.o
 obj-$(CONFIG_SND_SOC_RT286)	+= snd-soc-rt286.o
 obj-$(CONFIG_SND_SOC_RT298)	+= snd-soc-rt298.o
diff --git a/sound/soc/codecs/rt1318-sdw.c b/sound/soc/codecs/rt1318-sdw.c
new file mode 100644
index 0000000000000..f85f5ab2c6d04
--- /dev/null
+++ b/sound/soc/codecs/rt1318-sdw.c
@@ -0,0 +1,884 @@
+// SPDX-License-Identifier: GPL-2.0-only
+//
+// rt1318-sdw.c -- rt1318 SDCA ALSA SoC amplifier audio driver
+//
+// Copyright(c) 2022 Realtek Semiconductor Corp.
+//
+//
+#include <linux/delay.h>
+#include <linux/device.h>
+#include <linux/pm_runtime.h>
+#include <linux/mod_devicetable.h>
+#include <linux/module.h>
+#include <linux/regmap.h>
+#include <linux/dmi.h>
+#include <linux/firmware.h>
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc-dapm.h>
+#include <sound/initval.h>
+#include "rt1318-sdw.h"
+
+static const struct reg_sequence rt1318_blind_write[] = {
+	{ 0xc001, 0x43 },
+	{ 0xc003, 0xa2 },
+	{ 0xc004, 0x44 },
+	{ 0xc005, 0x44 },
+	{ 0xc006, 0x33 },
+	{ 0xc007, 0x64 },
+	{ 0xc320, 0x20 },
+	{ 0xf203, 0x18 },
+	{ 0xf211, 0x00 },
+	{ 0xf212, 0x26 },
+	{ 0xf20d, 0x17 },
+	{ 0xf214, 0x06 },
+	{ 0xf20e, 0x00 },
+	{ 0xf223, 0x7f },
+	{ 0xf224, 0xdb },
+	{ 0xf225, 0xee },
+	{ 0xf226, 0x3f },
+	{ 0xf227, 0x0f },
+	{ 0xf21a, 0x78 },
+	{ 0xf242, 0x3c },
+	{ 0xc321, 0x0b },
+	{ 0xc200, 0xd8 },
+	{ 0xc201, 0x27 },
+	{ 0xc202, 0x0f },
+	{ 0xf800, 0x20 },
+	{ 0xdf00, 0x10 },
+	{ 0xdf5f, 0x01 },
+	{ 0xdf60, 0xa7 },
+	{ 0xc400, 0x0e },
+	{ 0xc401, 0x43 },
+	{ 0xc402, 0xe0 },
+	{ 0xc403, 0x00 },
+	{ 0xc404, 0x4c },
+	{ 0xc407, 0x02 },
+	{ 0xc408, 0x3f },
+	{ 0xc300, 0x01 },
+	{ 0xc206, 0x78 },
+	{ 0xc203, 0x84 },
+	{ 0xc120, 0xc0 },
+	{ 0xc121, 0x03 },
+	{ 0xe000, 0x88 },
+	{ 0xc321, 0x09 },
+	{ 0xc322, 0x01 },
+	{ 0xe706, 0x0f },
+	{ 0xe707, 0x30 },
+	{ 0xe806, 0x0f },
+	{ 0xe807, 0x30 },
+	{ 0xed00, 0xb0 },
+	{ 0xce04, 0x02 },
+	{ 0xce05, 0x63 },
+	{ 0xce06, 0x68 },
+	{ 0xce07, 0x07 },
+	{ 0xcf04, 0x02 },
+	{ 0xcf05, 0x63 },
+	{ 0xcf06, 0x68 },
+	{ 0xcf07, 0x07 },
+	{ 0xce60, 0xe3 },
+	{ 0xc130, 0x51 },
+	{ 0xf102, 0x00 },
+	{ 0xf103, 0x00 },
+	{ 0xf104, 0xf5 },
+	{ 0xf105, 0x06 },
+	{ 0xf109, 0x9b },
+	{ 0xf10a, 0x0b },
+	{ 0xf10b, 0x4c },
+	{ 0xf10b, 0x5c },
+	{ 0xf102, 0x00 },
+	{ 0xf103, 0x00 },
+	{ 0xf104, 0xf5 },
+	{ 0xf105, 0x0b },
+	{ 0xf109, 0x03 },
+	{ 0xf10a, 0x0b },
+	{ 0xf10b, 0x4c },
+	{ 0xf10b, 0x5c },
+	{ 0xf102, 0x00 },
+	{ 0xf103, 0x00 },
+	{ 0xf104, 0xf5 },
+	{ 0xf105, 0x0c },
+	{ 0xf109, 0x7f },
+	{ 0xf10a, 0x0b },
+	{ 0xf10b, 0x4c },
+	{ 0xf10b, 0x5c },
+
+	{ 0xe604, 0x00 },
+	{ 0xdb00, 0x0c },
+	{ 0xdd00, 0x0c },
+	{ 0xdc19, 0x00 },
+	{ 0xdc1a, 0xff },
+	{ 0xdc1b, 0xff },
+	{ 0xdc1c, 0xff },
+	{ 0xdc1d, 0x00 },
+	{ 0xdc1e, 0x00 },
+	{ 0xdc1f, 0x00 },
+	{ 0xdc20, 0xff },
+	{ 0xde19, 0x00 },
+	{ 0xde1a, 0xff },
+	{ 0xde1b, 0xff },
+	{ 0xde1c, 0xff },
+	{ 0xde1d, 0x00 },
+	{ 0xde1e, 0x00 },
+	{ 0xde1f, 0x00 },
+	{ 0xde20, 0xff },
+	{ 0xdb32, 0x00 },
+	{ 0xdd32, 0x00 },
+	{ 0xdb33, 0x0a },
+	{ 0xdd33, 0x0a },
+	{ 0xdb34, 0x1a },
+	{ 0xdd34, 0x1a },
+	{ 0xdb17, 0xef },
+	{ 0xdd17, 0xef },
+	{ 0xdba7, 0x00 },
+	{ 0xdba8, 0x64 },
+	{ 0xdda7, 0x00 },
+	{ 0xdda8, 0x64 },
+	{ 0xdb19, 0x40 },
+	{ 0xdd19, 0x40 },
+	{ 0xdb00, 0x4c },
+	{ 0xdb01, 0x79 },
+	{ 0xdd01, 0x79 },
+	{ 0xdb04, 0x05 },
+	{ 0xdb05, 0x03 },
+	{ 0xdd04, 0x05 },
+	{ 0xdd05, 0x03 },
+	{ 0xdbbb, 0x09 },
+	{ 0xdbbc, 0x30 },
+	{ 0xdbbd, 0xf0 },
+	{ 0xdbbe, 0xf1 },
+	{ 0xddbb, 0x09 },
+	{ 0xddbc, 0x30 },
+	{ 0xddbd, 0xf0 },
+	{ 0xddbe, 0xf1 },
+	{ 0xdb01, 0x79 },
+	{ 0xdd01, 0x79 },
+	{ 0xdc52, 0xef },
+	{ 0xde52, 0xef },
+	{ 0x2f55, 0x22 },
+};
+
+static const struct reg_default rt1318_reg_defaults[] = {
+	{ 0x3000, 0x00 },
+	{ 0x3004, 0x01 },
+	{ 0x3005, 0x23 },
+	{ 0x3202, 0x00 },
+	{ 0x3203, 0x01 },
+	{ 0x3206, 0x00 },
+	{ 0xc000, 0x00 },
+	{ 0xc001, 0x43 },
+	{ 0xc003, 0x22 },
+	{ 0xc004, 0x44 },
+	{ 0xc005, 0x44 },
+	{ 0xc006, 0x33 },
+	{ 0xc007, 0x64 },
+	{ 0xc008, 0x05 },
+	{ 0xc00a, 0xfc },
+	{ 0xc00b, 0x0f },
+	{ 0xc00c, 0x0e },
+	{ 0xc00d, 0xef },
+	{ 0xc00e, 0xe5 },
+	{ 0xc00f, 0xff },
+	{ 0xc120, 0xc0 },
+	{ 0xc121, 0x00 },
+	{ 0xc122, 0x00 },
+	{ 0xc123, 0x14 },
+	{ 0xc125, 0x00 },
+	{ 0xc200, 0x00 },
+	{ 0xc201, 0x00 },
+	{ 0xc202, 0x00 },
+	{ 0xc203, 0x04 },
+	{ 0xc204, 0x00 },
+	{ 0xc205, 0x00 },
+	{ 0xc206, 0x68 },
+	{ 0xc207, 0x70 },
+	{ 0xc208, 0x00 },
+	{ 0xc20a, 0x00 },
+	{ 0xc20b, 0x01 },
+	{ 0xc20c, 0x7f },
+	{ 0xc20d, 0x01 },
+	{ 0xc20e, 0x7f },
+	{ 0xc300, 0x00 },
+	{ 0xc301, 0x00 },
+	{ 0xc303, 0x80 },
+	{ 0xc320, 0x00 },
+	{ 0xc321, 0x09 },
+	{ 0xc322, 0x02 },
+	{ 0xc410, 0x04 },
+	{ 0xc430, 0x00 },
+	{ 0xc431, 0x00 },
+	{ 0xca00, 0x10 },
+	{ 0xca01, 0x00 },
+	{ 0xca02, 0x0b },
+	{ 0xca10, 0x10 },
+	{ 0xca11, 0x00 },
+	{ 0xca12, 0x0b },
+	{ 0xdd93, 0x00 },
+	{ 0xdd94, 0x64 },
+	{ 0xe300, 0xa0 },
+	{ 0xed00, 0x80 },
+	{ 0xed01, 0x0f },
+	{ 0xed02, 0xff },
+	{ 0xed03, 0x00 },
+	{ 0xed04, 0x00 },
+	{ 0xed05, 0x0f },
+	{ 0xed06, 0xff },
+	{ 0xf010, 0x10 },
+	{ 0xf011, 0xec },
+	{ 0xf012, 0x68 },
+	{ 0xf013, 0x21 },
+	{ 0xf800, 0x00 },
+	{ 0xf801, 0x12 },
+	{ 0xf802, 0xe0 },
+	{ 0xf803, 0x2f },
+	{ 0xf804, 0x00 },
+	{ 0xf805, 0x00 },
+	{ 0xf806, 0x07 },
+	{ 0xf807, 0xff },
+	{ SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_UDMPU21, RT1318_SDCA_CTL_UDMPU_CLUSTER, 0), 0x00 },
+	{ SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_FU21, RT1318_SDCA_CTL_FU_MUTE, CH_L), 0x01 },
+	{ SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_FU21, RT1318_SDCA_CTL_FU_MUTE, CH_R), 0x01 },
+	{ SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_PDE23, RT1318_SDCA_CTL_REQ_POWER_STATE, 0), 0x03 },
+	{ SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_CS21, RT1318_SDCA_CTL_SAMPLE_FREQ_INDEX, 0), 0x09 },
+};
+
+static bool rt1318_readable_register(struct device *dev, unsigned int reg)
+{
+	switch (reg) {
+	case 0x2f55:
+	case 0x3000:
+	case 0x3004 ... 0x3005:
+	case 0x3202 ... 0x3203:
+	case 0x3206:
+	case 0xc000 ... 0xc00f:
+	case 0xc120 ... 0xc125:
+	case 0xc200 ... 0xc20e:
+	case 0xc300 ... 0xc303:
+	case 0xc320 ... 0xc322:
+	case 0xc410:
+	case 0xc430 ... 0xc431:
+	case 0xca00 ... 0xca02:
+	case 0xca10 ... 0xca12:
+	case 0xcb00 ... 0xcb0b:
+	case 0xcc00 ... 0xcce5:
+	case 0xcd00 ... 0xcde5:
+	case 0xce00 ... 0xce6a:
+	case 0xcf00 ... 0xcf53:
+	case 0xd000 ... 0xd0cc:
+	case 0xd100 ... 0xd1b9:
+	case 0xdb00 ... 0xdc53:
+	case 0xdd00 ... 0xde53:
+	case 0xdf00 ... 0xdf6b:
+	case 0xe300:
+	case 0xeb00 ... 0xebcc:
+	case 0xec00 ... 0xecb9:
+	case 0xed00 ... 0xed06:
+	case 0xf010 ... 0xf014:
+	case 0xf800 ... 0xf807:
+	case SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_UDMPU21, RT1318_SDCA_CTL_UDMPU_CLUSTER, 0):
+	case SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_FU21, RT1318_SDCA_CTL_FU_MUTE, CH_L):
+	case SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_FU21, RT1318_SDCA_CTL_FU_MUTE, CH_R):
+	case SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_PDE23, RT1318_SDCA_CTL_REQ_POWER_STATE, 0):
+	case SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_CS21, RT1318_SDCA_CTL_SAMPLE_FREQ_INDEX, 0):
+	case SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_SAPU, RT1318_SDCA_CTL_SAPU_PROTECTION_MODE, 0):
+	case SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_SAPU, RT1318_SDCA_CTL_SAPU_PROTECTION_STATUS, 0):
+		return true;
+	default:
+		return false;
+	}
+}
+
+static bool rt1318_volatile_register(struct device *dev, unsigned int reg)
+{
+	switch (reg) {
+	case 0x2f55:
+	case 0x3000 ... 0x3001:
+	case 0xc000:
+	case 0xc301:
+	case 0xc410:
+	case 0xc430 ... 0xc431:
+	case 0xdb06:
+	case 0xdb12:
+	case 0xdb1d ... 0xdb1f:
+	case 0xdb35:
+	case 0xdb37:
+	case 0xdb8a ... 0xdb92:
+	case 0xdbc5 ... 0xdbc8:
+	case 0xdc2b ... 0xdc49:
+	case 0xdd0b:
+	case 0xdd12:
+	case 0xdd1d ... 0xdd1f:
+	case 0xdd35:
+	case 0xdd8a ... 0xdd92:
+	case 0xddc5 ... 0xddc8:
+	case 0xde2b ... 0xde44:
+	case 0xdf4a ... 0xdf55:
+	case 0xe224 ... 0xe23b:
+	case 0xea01:
+	case 0xebc5:
+	case 0xebc8:
+	case 0xebcb ... 0xebcc:
+	case 0xed03 ... 0xed06:
+	case 0xf010 ... 0xf014:
+	case SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_SAPU, RT1318_SDCA_CTL_SAPU_PROTECTION_MODE, 0):
+	case SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_SAPU, RT1318_SDCA_CTL_SAPU_PROTECTION_STATUS, 0):
+		return true;
+	default:
+		return false;
+	}
+}
+
+static const struct regmap_config rt1318_sdw_regmap = {
+	.reg_bits = 32,
+	.val_bits = 8,
+	.readable_reg = rt1318_readable_register,
+	.volatile_reg = rt1318_volatile_register,
+	.max_register = 0x41081488,
+	.reg_defaults = rt1318_reg_defaults,
+	.num_reg_defaults = ARRAY_SIZE(rt1318_reg_defaults),
+	.cache_type = REGCACHE_RBTREE,
+	.use_single_read = true,
+	.use_single_write = true,
+};
+
+static int rt1318_read_prop(struct sdw_slave *slave)
+{
+	struct sdw_slave_prop *prop = &slave->prop;
+	int nval;
+	int i, j;
+	u32 bit;
+	unsigned long addr;
+	struct sdw_dpn_prop *dpn;
+
+	prop->scp_int1_mask = SDW_SCP_INT1_BUS_CLASH | SDW_SCP_INT1_PARITY;
+	prop->quirks = SDW_SLAVE_QUIRKS_INVALID_INITIAL_PARITY;
+	prop->is_sdca = true;
+
+	prop->paging_support = true;
+
+	/* first we need to allocate memory for set bits in port lists */
+	prop->source_ports = BIT(2);
+	prop->sink_ports = BIT(1);
+
+	nval = hweight32(prop->source_ports);
+	prop->src_dpn_prop = devm_kcalloc(&slave->dev, nval,
+		sizeof(*prop->src_dpn_prop), GFP_KERNEL);
+	if (!prop->src_dpn_prop)
+		return -ENOMEM;
+
+	i = 0;
+	dpn = prop->src_dpn_prop;
+	addr = prop->source_ports;
+	for_each_set_bit(bit, &addr, 32) {
+		dpn[i].num = bit;
+		dpn[i].type = SDW_DPN_FULL;
+		dpn[i].simple_ch_prep_sm = true;
+		dpn[i].ch_prep_timeout = 10;
+		i++;
+	}
+
+	/* do this again for sink now */
+	nval = hweight32(prop->sink_ports);
+	prop->sink_dpn_prop = devm_kcalloc(&slave->dev, nval,
+		sizeof(*prop->sink_dpn_prop), GFP_KERNEL);
+	if (!prop->sink_dpn_prop)
+		return -ENOMEM;
+
+	j = 0;
+	dpn = prop->sink_dpn_prop;
+	addr = prop->sink_ports;
+	for_each_set_bit(bit, &addr, 32) {
+		dpn[j].num = bit;
+		dpn[j].type = SDW_DPN_FULL;
+		dpn[j].simple_ch_prep_sm = true;
+		dpn[j].ch_prep_timeout = 10;
+		j++;
+	}
+
+	/* set the timeout values */
+	prop->clk_stop_timeout = 20;
+
+	return 0;
+}
+
+static int rt1318_io_init(struct device *dev, struct sdw_slave *slave)
+{
+	struct rt1318_sdw_priv *rt1318 = dev_get_drvdata(dev);
+
+	if (rt1318->hw_init)
+		return 0;
+
+	if (rt1318->first_hw_init) {
+		regcache_cache_only(rt1318->regmap, false);
+		regcache_cache_bypass(rt1318->regmap, true);
+	} else {
+		/*
+		 * PM runtime is only enabled when a Slave reports as Attached
+		 */
+
+		/* set autosuspend parameters */
+		pm_runtime_set_autosuspend_delay(&slave->dev, 3000);
+		pm_runtime_use_autosuspend(&slave->dev);
+
+		/* update count of parent 'active' children */
+		pm_runtime_set_active(&slave->dev);
+
+		/* make sure the device does not suspend immediately */
+		pm_runtime_mark_last_busy(&slave->dev);
+
+		pm_runtime_enable(&slave->dev);
+	}
+
+	pm_runtime_get_noresume(&slave->dev);
+
+	/* blind write */
+	regmap_multi_reg_write(rt1318->regmap, rt1318_blind_write,
+		ARRAY_SIZE(rt1318_blind_write));
+
+	if (rt1318->first_hw_init) {
+		regcache_cache_bypass(rt1318->regmap, false);
+		regcache_mark_dirty(rt1318->regmap);
+	}
+
+	/* Mark Slave initialization complete */
+	rt1318->first_hw_init = true;
+	rt1318->hw_init = true;
+
+	pm_runtime_mark_last_busy(&slave->dev);
+	pm_runtime_put_autosuspend(&slave->dev);
+
+	dev_dbg(&slave->dev, "%s hw_init complete\n", __func__);
+	return 0;
+}
+
+static int rt1318_update_status(struct sdw_slave *slave,
+					enum sdw_slave_status status)
+{
+	struct  rt1318_sdw_priv *rt1318 = dev_get_drvdata(&slave->dev);
+
+	/* Update the status */
+	rt1318->status = status;
+
+	if (status == SDW_SLAVE_UNATTACHED)
+		rt1318->hw_init = false;
+
+	/*
+	 * Perform initialization only if slave status is present and
+	 * hw_init flag is false
+	 */
+	if (rt1318->hw_init || rt1318->status != SDW_SLAVE_ATTACHED)
+		return 0;
+
+	/* perform I/O transfers required for Slave initialization */
+	return rt1318_io_init(&slave->dev, slave);
+}
+
+static int rt1318_classd_event(struct snd_soc_dapm_widget *w,
+	struct snd_kcontrol *kcontrol, int event)
+{
+	struct snd_soc_component *component =
+		snd_soc_dapm_to_component(w->dapm);
+	struct rt1318_sdw_priv *rt1318 = snd_soc_component_get_drvdata(component);
+	unsigned char ps0 = 0x0, ps3 = 0x3;
+
+	switch (event) {
+	case SND_SOC_DAPM_POST_PMU:
+		regmap_write(rt1318->regmap,
+			SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_PDE23,
+				RT1318_SDCA_CTL_REQ_POWER_STATE, 0),
+				ps0);
+		break;
+	case SND_SOC_DAPM_PRE_PMD:
+		regmap_write(rt1318->regmap,
+			SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_PDE23,
+				RT1318_SDCA_CTL_REQ_POWER_STATE, 0),
+				ps3);
+		break;
+
+	default:
+		break;
+	}
+
+	return 0;
+}
+
+static const char * const rt1318_rx_data_ch_select[] = {
+	"L,R",
+	"L,L",
+	"L,R",
+	"L,L+R",
+	"R,L",
+	"R,R",
+	"R,L+R",
+	"L+R,L",
+	"L+R,R",
+	"L+R,L+R",
+};
+
+static SOC_ENUM_SINGLE_DECL(rt1318_rx_data_ch_enum,
+	SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_UDMPU21, RT1318_SDCA_CTL_UDMPU_CLUSTER, 0), 0,
+	rt1318_rx_data_ch_select);
+
+static const struct snd_kcontrol_new rt1318_snd_controls[] = {
+
+	/* UDMPU Cluster Selection */
+	SOC_ENUM("RX Channel Select", rt1318_rx_data_ch_enum),
+};
+
+static const struct snd_kcontrol_new rt1318_sto_dac =
+	SOC_DAPM_DOUBLE_R("Switch",
+		SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_FU21, RT1318_SDCA_CTL_FU_MUTE, CH_L),
+		SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_FU21, RT1318_SDCA_CTL_FU_MUTE, CH_R),
+		0, 1, 1);
+
+static const struct snd_soc_dapm_widget rt1318_dapm_widgets[] = {
+	/* Audio Interface */
+	SND_SOC_DAPM_AIF_IN("DP1RX", "DP1 Playback", 0, SND_SOC_NOPM, 0, 0),
+	SND_SOC_DAPM_AIF_OUT("DP2TX", "DP2 Capture", 0, SND_SOC_NOPM, 0, 0),
+
+	/* Digital Interface */
+	SND_SOC_DAPM_SWITCH("DAC", SND_SOC_NOPM, 0, 0, &rt1318_sto_dac),
+
+	/* Output */
+	SND_SOC_DAPM_PGA_E("CLASS D", SND_SOC_NOPM, 0, 0, NULL, 0,
+		rt1318_classd_event, SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMU),
+	SND_SOC_DAPM_OUTPUT("SPOL"),
+	SND_SOC_DAPM_OUTPUT("SPOR"),
+	/* Input */
+	SND_SOC_DAPM_PGA("FB Data", SND_SOC_NOPM, 0, 0, NULL, 0),
+	SND_SOC_DAPM_SIGGEN("FB Gen"),
+};
+
+static const struct snd_soc_dapm_route rt1318_dapm_routes[] = {
+	{ "DAC", "Switch", "DP1RX" },
+	{ "CLASS D", NULL, "DAC" },
+	{ "SPOL", NULL, "CLASS D" },
+	{ "SPOR", NULL, "CLASS D" },
+
+	{ "FB Data", NULL, "FB Gen" },
+	{ "DP2TX", NULL, "FB Data" },
+};
+
+static int rt1318_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
+				int direction)
+{
+	struct sdw_stream_data *stream;
+
+	if (!sdw_stream)
+		return 0;
+
+	stream = kzalloc(sizeof(*stream), GFP_KERNEL);
+	if (!stream)
+		return -ENOMEM;
+
+	stream->sdw_stream = sdw_stream;
+
+	/* Use tx_mask or rx_mask to configure stream tag and set dma_data */
+	if (direction == SNDRV_PCM_STREAM_PLAYBACK)
+		dai->playback_dma_data = stream;
+	else
+		dai->capture_dma_data = stream;
+
+	return 0;
+}
+
+static void rt1318_sdw_shutdown(struct snd_pcm_substream *substream,
+				struct snd_soc_dai *dai)
+{
+	struct sdw_stream_data *stream;
+
+	stream = snd_soc_dai_get_dma_data(dai, substream);
+	snd_soc_dai_set_dma_data(dai, substream, NULL);
+	kfree(stream);
+}
+
+static int rt1318_sdw_hw_params(struct snd_pcm_substream *substream,
+	struct snd_pcm_hw_params *params, struct snd_soc_dai *dai)
+{
+	struct snd_soc_component *component = dai->component;
+	struct rt1318_sdw_priv *rt1318 =
+		snd_soc_component_get_drvdata(component);
+	struct sdw_stream_config stream_config;
+	struct sdw_port_config port_config;
+	enum sdw_data_direction direction;
+	struct sdw_stream_data *stream;
+	int retval, port, num_channels, ch_mask;
+	unsigned int sampling_rate;
+
+	dev_dbg(dai->dev, "%s %s", __func__, dai->name);
+	stream = snd_soc_dai_get_dma_data(dai, substream);
+
+	if (!stream)
+		return -EINVAL;
+
+	if (!rt1318->sdw_slave)
+		return -EINVAL;
+
+	/* SoundWire specific configuration */
+	/* port 1 for playback */
+	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
+		direction = SDW_DATA_DIR_RX;
+		port = 1;
+	} else {
+		direction = SDW_DATA_DIR_TX;
+		port = 2;
+	}
+
+	num_channels = params_channels(params);
+	ch_mask = (1 << num_channels) - 1;
+
+	stream_config.frame_rate = params_rate(params);
+	stream_config.ch_count = num_channels;
+	stream_config.bps = snd_pcm_format_width(params_format(params));
+	stream_config.direction = direction;
+
+	port_config.ch_mask = ch_mask;
+	port_config.num = port;
+
+	retval = sdw_stream_add_slave(rt1318->sdw_slave, &stream_config,
+				&port_config, 1, stream->sdw_stream);
+	if (retval) {
+		dev_err(dai->dev, "Unable to configure port\n");
+		return retval;
+	}
+
+	/* sampling rate configuration */
+	switch (params_rate(params)) {
+	case 16000:
+		sampling_rate = RT1318_SDCA_RATE_16000HZ;
+		break;
+	case 32000:
+		sampling_rate = RT1318_SDCA_RATE_32000HZ;
+		break;
+	case 44100:
+		sampling_rate = RT1318_SDCA_RATE_44100HZ;
+		break;
+	case 48000:
+		sampling_rate = RT1318_SDCA_RATE_48000HZ;
+		break;
+	case 96000:
+		sampling_rate = RT1318_SDCA_RATE_96000HZ;
+		break;
+	case 192000:
+		sampling_rate = RT1318_SDCA_RATE_192000HZ;
+		break;
+	default:
+		dev_err(component->dev, "Rate %d is not supported\n",
+			params_rate(params));
+		return -EINVAL;
+	}
+
+	/* set sampling frequency */
+	regmap_write(rt1318->regmap,
+		SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1318_SDCA_ENT_CS21, RT1318_SDCA_CTL_SAMPLE_FREQ_INDEX, 0),
+		sampling_rate);
+
+	return 0;
+}
+
+static int rt1318_sdw_pcm_hw_free(struct snd_pcm_substream *substream,
+				struct snd_soc_dai *dai)
+{
+	struct snd_soc_component *component = dai->component;
+	struct rt1318_sdw_priv *rt1318 =
+		snd_soc_component_get_drvdata(component);
+	struct sdw_stream_data *stream =
+		snd_soc_dai_get_dma_data(dai, substream);
+
+	if (!rt1318->sdw_slave)
+		return -EINVAL;
+
+	sdw_stream_remove_slave(rt1318->sdw_slave, stream->sdw_stream);
+	return 0;
+}
+
+/*
+ * slave_ops: callbacks for get_clock_stop_mode, clock_stop and
+ * port_prep are not defined for now
+ */
+static struct sdw_slave_ops rt1318_slave_ops = {
+	.read_prop = rt1318_read_prop,
+	.update_status = rt1318_update_status,
+};
+
+static int rt1318_sdw_component_probe(struct snd_soc_component *component)
+{
+	int ret;
+	struct rt1318_sdw_priv *rt1318 = snd_soc_component_get_drvdata(component);
+
+	rt1318->component = component;
+
+	ret = pm_runtime_resume(component->dev);
+	dev_dbg(&rt1318->sdw_slave->dev, "%s pm_runtime_resume, ret=%d", __func__, ret);
+	if (ret < 0 && ret != -EACCES)
+		return ret;
+
+	return 0;
+}
+
+static const struct snd_soc_component_driver soc_component_sdw_rt1318 = {
+	.probe = rt1318_sdw_component_probe,
+	.controls = rt1318_snd_controls,
+	.num_controls = ARRAY_SIZE(rt1318_snd_controls),
+	.dapm_widgets = rt1318_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(rt1318_dapm_widgets),
+	.dapm_routes = rt1318_dapm_routes,
+	.num_dapm_routes = ARRAY_SIZE(rt1318_dapm_routes),
+	.endianness = 1,
+};
+
+static const struct snd_soc_dai_ops rt1318_aif_dai_ops = {
+	.hw_params = rt1318_sdw_hw_params,
+	.hw_free	= rt1318_sdw_pcm_hw_free,
+	.set_stream	= rt1318_set_sdw_stream,
+	.shutdown	= rt1318_sdw_shutdown,
+};
+
+#define RT1318_STEREO_RATES (SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
+	SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_192000)
+#define RT1318_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE | \
+	SNDRV_PCM_FMTBIT_S32_LE)
+
+static struct snd_soc_dai_driver rt1318_sdw_dai[] = {
+	{
+		.name = "rt1318-aif",
+		.playback = {
+			.stream_name = "DP1 Playback",
+			.channels_min = 1,
+			.channels_max = 2,
+			.rates = RT1318_STEREO_RATES,
+			.formats = RT1318_FORMATS,
+		},
+		.capture = {
+			.stream_name = "DP2 Capture",
+			.channels_min = 1,
+			.channels_max = 2,
+			.rates = RT1318_STEREO_RATES,
+			.formats = RT1318_FORMATS,
+		},
+		.ops = &rt1318_aif_dai_ops,
+	},
+};
+
+static int rt1318_sdw_init(struct device *dev, struct regmap *regmap,
+				struct sdw_slave *slave)
+{
+	struct rt1318_sdw_priv *rt1318;
+	int ret;
+
+	rt1318 = devm_kzalloc(dev, sizeof(*rt1318), GFP_KERNEL);
+	if (!rt1318)
+		return -ENOMEM;
+
+	dev_set_drvdata(dev, rt1318);
+	rt1318->sdw_slave = slave;
+	rt1318->regmap = regmap;
+
+	/*
+	 * Mark hw_init to false
+	 * HW init will be performed when device reports present
+	 */
+	rt1318->hw_init = false;
+	rt1318->first_hw_init = false;
+
+	ret =  devm_snd_soc_register_component(dev,
+				&soc_component_sdw_rt1318,
+				rt1318_sdw_dai,
+				ARRAY_SIZE(rt1318_sdw_dai));
+
+	dev_dbg(&slave->dev, "%s\n", __func__);
+
+	return ret;
+}
+
+static int rt1318_sdw_probe(struct sdw_slave *slave,
+				const struct sdw_device_id *id)
+{
+	struct regmap *regmap;
+
+	/* Regmap Initialization */
+	regmap = devm_regmap_init_sdw(slave, &rt1318_sdw_regmap);
+	if (IS_ERR(regmap))
+		return PTR_ERR(regmap);
+
+	return rt1318_sdw_init(&slave->dev, regmap, slave);
+}
+
+static int rt1318_sdw_remove(struct sdw_slave *slave)
+{
+	struct rt1318_sdw_priv *rt1318 = dev_get_drvdata(&slave->dev);
+
+	if (rt1318->first_hw_init)
+		pm_runtime_disable(&slave->dev);
+
+	return 0;
+}
+
+static const struct sdw_device_id rt1318_id[] = {
+	SDW_SLAVE_ENTRY_EXT(0x025d, 0x1318, 0x3, 0x1, 0),
+	{},
+};
+MODULE_DEVICE_TABLE(sdw, rt1318_id);
+
+static int __maybe_unused rt1318_dev_suspend(struct device *dev)
+{
+	struct rt1318_sdw_priv *rt1318 = dev_get_drvdata(dev);
+
+	if (!rt1318->hw_init)
+		return 0;
+
+	regcache_cache_only(rt1318->regmap, true);
+	return 0;
+}
+
+#define RT1318_PROBE_TIMEOUT 5000
+
+static int __maybe_unused rt1318_dev_resume(struct device *dev)
+{
+	struct sdw_slave *slave = dev_to_sdw_dev(dev);
+	struct rt1318_sdw_priv *rt1318 = dev_get_drvdata(dev);
+	unsigned long time;
+
+	if (!rt1318->first_hw_init)
+		return 0;
+
+	if (!slave->unattach_request)
+		goto regmap_sync;
+
+	time = wait_for_completion_timeout(&slave->initialization_complete,
+				msecs_to_jiffies(RT1318_PROBE_TIMEOUT));
+	if (!time) {
+		dev_err(&slave->dev, "Initialization not complete, timed out\n");
+		return -ETIMEDOUT;
+	}
+
+regmap_sync:
+	slave->unattach_request = 0;
+	regcache_cache_only(rt1318->regmap, false);
+	regcache_sync(rt1318->regmap);
+
+	return 0;
+}
+
+static const struct dev_pm_ops rt1318_pm = {
+	SET_SYSTEM_SLEEP_PM_OPS(rt1318_dev_suspend, rt1318_dev_resume)
+	SET_RUNTIME_PM_OPS(rt1318_dev_suspend, rt1318_dev_resume, NULL)
+};
+
+static struct sdw_driver rt1318_sdw_driver = {
+	.driver = {
+		.name = "rt1318-sdca",
+		.owner = THIS_MODULE,
+		.pm = &rt1318_pm,
+	},
+	.probe = rt1318_sdw_probe,
+	.remove = rt1318_sdw_remove,
+	.ops = &rt1318_slave_ops,
+	.id_table = rt1318_id,
+};
+module_sdw_driver(rt1318_sdw_driver);
+
+MODULE_DESCRIPTION("ASoC RT1318 driver SDCA SDW");
+MODULE_AUTHOR("Shuming Fan <shumingf@realtek.com>");
+MODULE_LICENSE("GPL");
diff --git a/sound/soc/codecs/rt1318-sdw.h b/sound/soc/codecs/rt1318-sdw.h
new file mode 100644
index 0000000000000..4d7ac9c4bd8de
--- /dev/null
+++ b/sound/soc/codecs/rt1318-sdw.h
@@ -0,0 +1,101 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * rt1318-sdw.h -- RT1318 SDCA ALSA SoC audio driver header
+ *
+ * Copyright(c) 2022 Realtek Semiconductor Corp.
+ */
+
+#ifndef __RT1318_SDW_H__
+#define __RT1318_SDW_H__
+
+#include <linux/regmap.h>
+#include <linux/soundwire/sdw.h>
+#include <linux/soundwire/sdw_type.h>
+#include <linux/soundwire/sdw_registers.h>
+#include <sound/soc.h>
+
+/* imp-defined registers */
+#define RT1318_SAPU_SM 0x3203
+
+#define R1318_TCON	0xc203
+#define R1318_TCON_RELATED_1	0xc206
+
+#define R1318_SPK_TEMPERATRUE_PROTECTION_0	0xdb00
+#define R1318_SPK_TEMPERATRUE_PROTECTION_L_4	0xdb08
+#define R1318_SPK_TEMPERATRUE_PROTECTION_R_4	0xdd08
+
+#define R1318_SPK_TEMPERATRUE_PROTECTION_L_6	0xdb12
+#define R1318_SPK_TEMPERATRUE_PROTECTION_R_6	0xdd12
+
+#define RT1318_INIT_RECIPROCAL_REG_L_24		0xdbb5
+#define RT1318_INIT_RECIPROCAL_REG_L_23_16	0xdbb6
+#define RT1318_INIT_RECIPROCAL_REG_L_15_8	0xdbb7
+#define RT1318_INIT_RECIPROCAL_REG_L_7_0	0xdbb8
+#define RT1318_INIT_RECIPROCAL_REG_R_24		0xddb5
+#define RT1318_INIT_RECIPROCAL_REG_R_23_16	0xddb6
+#define RT1318_INIT_RECIPROCAL_REG_R_15_8	0xddb7
+#define RT1318_INIT_RECIPROCAL_REG_R_7_0	0xddb8
+
+#define RT1318_INIT_R0_RECIPROCAL_SYN_L_24 0xdbc5
+#define RT1318_INIT_R0_RECIPROCAL_SYN_L_23_16 0xdbc6
+#define RT1318_INIT_R0_RECIPROCAL_SYN_L_15_8 0xdbc7
+#define RT1318_INIT_R0_RECIPROCAL_SYN_L_7_0 0xdbc8
+#define RT1318_INIT_R0_RECIPROCAL_SYN_R_24 0xddc5
+#define RT1318_INIT_R0_RECIPROCAL_SYN_R_23_16 0xddc6
+#define RT1318_INIT_R0_RECIPROCAL_SYN_R_15_8 0xddc7
+#define RT1318_INIT_R0_RECIPROCAL_SYN_R_7_0 0xddc8
+
+#define RT1318_R0_COMPARE_FLAG_L	0xdb35
+#define RT1318_R0_COMPARE_FLAG_R	0xdd35
+
+#define RT1318_STP_INITIAL_RS_TEMP_H 0xdd93
+#define RT1318_STP_INITIAL_RS_TEMP_L 0xdd94
+
+/* RT1318 SDCA Control - function number */
+#define FUNC_NUM_SMART_AMP 0x04
+
+/* RT1318 SDCA entity */
+#define RT1318_SDCA_ENT_PDE23 0x31
+#define RT1318_SDCA_ENT_XU24 0x24
+#define RT1318_SDCA_ENT_FU21 0x03
+#define RT1318_SDCA_ENT_UDMPU21 0x02
+#define RT1318_SDCA_ENT_CS21 0x21
+#define RT1318_SDCA_ENT_SAPU 0x29
+
+/* RT1318 SDCA control */
+#define RT1318_SDCA_CTL_SAMPLE_FREQ_INDEX 0x10
+#define RT1318_SDCA_CTL_REQ_POWER_STATE 0x01
+#define RT1318_SDCA_CTL_FU_MUTE 0x01
+#define RT1318_SDCA_CTL_FU_VOLUME 0x02
+#define RT1318_SDCA_CTL_UDMPU_CLUSTER 0x10
+#define RT1318_SDCA_CTL_SAPU_PROTECTION_MODE 0x10
+#define RT1318_SDCA_CTL_SAPU_PROTECTION_STATUS 0x11
+
+/* RT1318 SDCA channel */
+#define CH_L 0x01
+#define CH_R 0x02
+
+/* sample frequency index */
+#define RT1318_SDCA_RATE_16000HZ		0x04
+#define RT1318_SDCA_RATE_32000HZ		0x07
+#define RT1318_SDCA_RATE_44100HZ		0x08
+#define RT1318_SDCA_RATE_48000HZ		0x09
+#define RT1318_SDCA_RATE_96000HZ		0x0b
+#define RT1318_SDCA_RATE_192000HZ		0x0d
+
+
+struct rt1318_sdw_priv {
+	struct snd_soc_component *component;
+	struct regmap *regmap;
+	struct sdw_slave *sdw_slave;
+	enum sdw_slave_status status;
+	struct sdw_bus_params params;
+	bool hw_init;
+	bool first_hw_init;
+};
+
+struct sdw_stream_data {
+	struct sdw_stream_runtime *sdw_stream;
+};
+
+#endif /* __RT1318_SDW_H__ */
-- 
2.39.2




  parent reply	other threads:[~2023-05-15 17:11 UTC|newest]

Thread overview: 258+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-15 16:24 [PATCH 6.1 000/239] 6.1.29-rc1 review Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 001/239] USB: dwc3: gadget: drop dead hibernation code Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 002/239] usb: dwc3: gadget: Execute gadget stop after halting the controller Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 003/239] drm/vmwgfx: Remove explicit and broken vblank handling Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 004/239] drm/vmwgfx: Fix Legacy Display Unit atomic drm support Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 005/239] crypto: ccp - Clear PSP interrupt status register before calling handler Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 006/239] perf/x86/core: Zero @lbr instead of returning -1 in x86_perf_get_lbr() stub Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 007/239] KVM: x86: Track supported PERF_CAPABILITIES in kvm_caps Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 008/239] KVM: x86/pmu: Disallow legacy LBRs if architectural LBRs are available Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 009/239] mtd: spi-nor: spansion: Remove NO_SFDP_FLAGS from s28hs512t info Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 010/239] mtd: spi-nor: add SFDP fixups for Quad Page Program Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 011/239] mtd: spi-nor: Add a RWW flag Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 012/239] mtd: spi-nor: spansion: Enable JFFS2 write buffer for Infineon s28hx SEMPER flash Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 013/239] qcom: llcc/edac: Support polling mode for ECC handling Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 014/239] soc: qcom: llcc: Do not create EDAC platform device on SDM845 Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 015/239] mailbox: zynq: Switch to flexible array to simplify code Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 016/239] mailbox: zynqmp: Fix counts of child nodes Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 017/239] mtd: spi-nor: spansion: Enable JFFS2 write buffer for Infineon s25hx SEMPER flash Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 018/239] fs/ntfs3: Fix null-ptr-deref on inode->i_op in ntfs_lookup() Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 019/239] drm/amd/display: Ext displays with dock cant recognized after resume Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 020/239] KVM: x86/mmu: Avoid indirect call for get_cr3 Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 021/239] KVM: x86: Do not unload MMU roots when only toggling CR0.WP with TDP enabled Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 022/239] KVM: x86: Make use of kvm_read_cr*_bits() when testing bits Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 023/239] KVM: VMX: Make CR0.WP a guest owned bit Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 024/239] KVM: x86/mmu: Refresh CR0.WP prior to checking for emulated permission faults Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 025/239] ASoC: Intel: soc-acpi-byt: Fix "WM510205" match no longer working Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 026/239] scsi: qedi: Fix use after free bug in qedi_remove() Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 027/239] drm/amd/display: Remove FPU guards from the DML folder Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 028/239] drm/amd/display: Add missing WA and MCLK validation Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 029/239] drm/amd/display: Return error code on DSC atomic check failure Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 030/239] drm/amd/display: Fixes for dcn32_clk_mgr implementation Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 031/239] drm/amd/display: Reset OUTBOX0 r/w pointer on DMUB reset Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 032/239] drm/amd/display: Do not clear GPINT register when releasing DMUB from reset Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 033/239] drm/amd/display: Update bounding box values for DCN321 Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 034/239] ixgbe: Fix panic during XDP_TX with > 64 CPUs Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 035/239] octeonxt2-af: mcs: Fix per port bypass config Greg Kroah-Hartman
2023-05-15 16:24 ` [PATCH 6.1 036/239] octeontx2-af: mcs: Write TCAM_DATA and TCAM_MASK registers at once Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 037/239] octeontx2-af: mcs: Config parser to skip 8B header Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 038/239] octeontx2-af: mcs: Fix MCS block interrupt Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 039/239] octeontx2-pf: mcs: Fix NULL pointer dereferences Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 040/239] octeontx2-pf: mcs: Match macsec ethertype along with DMAC Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 041/239] octeontx2-pf: mcs: Clear stats before freeing resource Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 042/239] octeontx2-pf: mcs: Fix shared counters logic Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 043/239] octeontx2-pf: mcs: Do not reset PN while updating secy Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 044/239] net/ncsi: clear Tx enable mode when handling a Config required AEN Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 045/239] tcp: fix skb_copy_ubufs() vs BIG TCP Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 046/239] net/sched: cls_api: remove block_cb from driver_list before freeing Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 047/239] sit: update dev->needed_headroom in ipip6_tunnel_bind_dev() Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 048/239] selftests: srv6: make srv6_end_dt46_l3vpn_test more robust Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 049/239] net: ipv6: fix skb hash for some RST packets Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 050/239] net: dsa: mv88e6xxx: add mv88e6321 rsvd2cpu Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 051/239] writeback: fix call of incorrect macro Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 052/239] block: Skip destroyed blkg when restart in blkg_destroy_all() Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 053/239] watchdog: dw_wdt: Fix the error handling path of dw_wdt_drv_probe() Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 054/239] RISC-V: mm: Enable huge page support to kernel_page_present() function Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 055/239] i2c: tegra: Fix PEC support for SMBUS block read Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 056/239] net/sched: act_mirred: Add carrier check Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 057/239] r8152: fix flow control issue of RTL8156A Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 058/239] r8152: fix the poor throughput for 2.5G devices Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 059/239] r8152: move setting r8153b_rx_agg_chg_indicate() Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 060/239] sfc: Fix module EEPROM reporting for QSFP modules Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 061/239] rxrpc: Fix hard call timeout units Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 062/239] riscv: compat_syscall_table: Fixup compile warning Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 063/239] drm/i915/mtl: Add the missing CPU transcoder mask in intel_device_info Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 064/239] selftests: netfilter: fix libmnl pkg-config usage Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 065/239] octeontx2-af: Secure APR table update with the lock Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 066/239] octeontx2-af: Fix start and end bit for scan config Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 067/239] octeontx2-af: Fix depth of cam and mem table Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 068/239] octeontx2-pf: Increase the size of dmac filter flows Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 069/239] octeontx2-af: Allow mkex profile without DMAC and add L2M/L2B header extraction support Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 070/239] octeontx2-pf: Add additional checks while configuring ucast/bcast/mcast rules Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 071/239] octeontx2-af: Update/Fix NPC field hash extract feature Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 072/239] octeontx2-af: Fix issues with NPC field hash extract Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 073/239] octeontx2-af: Skip PFs if not enabled Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 074/239] octeontx2-pf: Disable packet I/O for graceful exit Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 075/239] octeontx2-vf: Detach LF resources on probe cleanup Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 076/239] ionic: remove noise from ethtool rxnfc error msg Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 077/239] ethtool: Fix uninitialized number of lanes Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 078/239] ionic: catch failure from devlink_alloc Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 079/239] af_packet: Dont send zero-byte data in packet_sendmsg_spkt() Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 080/239] drm/amdgpu: add a missing lock for AMDGPU_SCHED Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 081/239] ALSA: caiaq: input: Add error handling for unsupported input methods in `snd_usb_caiaq_input_init` Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 082/239] KVM: s390: fix race in gmap_make_secure() Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 083/239] net: dsa: mt7530: fix corrupt frames using trgmii on 40 MHz XTAL MT7621 Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 084/239] net: dsa: mt7530: split-off common parts from mt7531_setup Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 085/239] net: dsa: mt7530: fix network connectivity with multiple CPU ports Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 086/239] ice: block LAN in case of VF to VF offload Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 087/239] virtio_net: suppress cpu stall when free_unused_bufs Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 088/239] net: enetc: check the index of the SFI rather than the handle Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 089/239] net: bcmgenet: Remove phy_stop() from bcmgenet_netif_stop() Greg Kroah-Hartman
2023-05-16  3:42   ` Florian Fainelli
2023-05-15 16:25 ` [PATCH 6.1 090/239] perf record: Fix "read LOST count failed" msg with sample read Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 091/239] perf scripts intel-pt-events.py: Fix IPC output for Python 2 Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 092/239] perf vendor events s390: Remove UTF-8 characters from JSON file Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 093/239] perf tests record_offcpu.sh: Fix redirection of stderr to stdin Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 094/239] perf ftrace: Make system wide the default target for latency subcommand Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 095/239] perf vendor events power9: Remove UTF-8 characters from JSON files Greg Kroah-Hartman
2023-05-15 16:25   ` Greg Kroah-Hartman
2023-05-15 16:25 ` [PATCH 6.1 096/239] perf pmu: zfree() expects a pointer to a pointer to zero it after freeing its contents Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 097/239] perf map: Delete two variable initialisations before null pointer checks in sort__sym_from_cmp() Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 098/239] perf cs-etm: Fix timeless decode mode detection Greg Kroah-Hartman
2023-05-15 16:26   ` Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 099/239] crypto: sun8i-ss - Fix a test in sun8i_ss_setup_ivs() Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 100/239] crypto: api - Add scaffolding to change completion function signature Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 101/239] crypto: engine - Use crypto_request_complete Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 102/239] crypto: engine - fix crypto_queue backlog handling Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 103/239] perf symbols: Fix return incorrect build_id size in elf_read_build_id() Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 104/239] perf tracepoint: Fix memory leak in is_valid_tracepoint() Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 105/239] perf stat: Separate bperf from bpf_profiler Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 106/239] RISC-V: take text_mutex during alternative patching Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 107/239] RISC-V: fix taking the text_mutex twice during sifive errata patching Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 108/239] x86/retbleed: Fix return thunk alignment Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 109/239] btrfs: fix btrfs_prev_leaf() to not return the same key twice Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 110/239] btrfs: zoned: fix wrong use of bitops API in btrfs_ensure_empty_zones Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 111/239] btrfs: properly reject clear_cache and v1 cache for block-group-tree Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 112/239] btrfs: fix assertion of exclop condition when starting balance Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 113/239] btrfs: fix encoded write i_size corruption with no-holes Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 114/239] btrfs: dont free qgroup space unless specified Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 115/239] btrfs: zero the buffer before marking it dirty in btrfs_redirty_list_add Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 116/239] btrfs: make clear_cache mount option to rebuild FST without disabling it Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 117/239] btrfs: print-tree: parent bytenr must be aligned to sector size Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 118/239] btrfs: fix space cache inconsistency after error loading it from disk Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 119/239] btrfs: zoned: zone finish data relocation BG with last IO Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 120/239] btrfs: zoned: fix full zone super block reading on ZNS Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 121/239] cifs: fix pcchunk length type in smb2_copychunk_range Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 122/239] cifs: release leases for deferred close handles when freezing Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 123/239] platform/x86/intel-uncore-freq: Return error on write frequency Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 124/239] platform/x86: touchscreen_dmi: Add upside-down quirk for GDIX1002 ts on the Juno Tablet Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 125/239] platform/x86: thinkpad_acpi: Fix platform profiles on T490 Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 126/239] platform/x86: touchscreen_dmi: Add info for the Dexp Ursus KX210i Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 127/239] platform/x86: thinkpad_acpi: Add profile force ability Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 128/239] inotify: Avoid reporting event with invalid wd Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 129/239] smb3: fix problem remounting a share after shutdown Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 130/239] SMB3: force unmount was failing to close deferred close files Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 131/239] sh: math-emu: fix macro redefined warning Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 132/239] sh: mcount.S: fix build error when PRINTK is not enabled Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 133/239] sh: init: use OF_EARLY_FLATTREE for early init Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 134/239] sh: nmi_debug: fix return value of __setup handler Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 135/239] proc_sysctl: update docs for __register_sysctl_table() Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 136/239] proc_sysctl: enhance documentation Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 137/239] remoteproc: stm32: Call of_node_put() on iteration error Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 138/239] remoteproc: st: " Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 139/239] remoteproc: imx_dsp_rproc: " Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 140/239] remoteproc: imx_rproc: " Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 141/239] remoteproc: rcar_rproc: " Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 142/239] sysctl: clarify register_sysctl_init() base directory order Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 143/239] ARM: dts: aspeed: asrock: Correct firmware flash SPI clocks Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 144/239] ARM: dts: exynos: fix WM8960 clock name in Itop Elite Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 145/239] ARM: dts: s5pv210: correct MIPI CSIS clock name Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 146/239] ARM: dts: aspeed: romed8hm3: Fix GPIO polarity of system-fault LED Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 147/239] drm/msm/adreno: fix runtime PM imbalance at gpu load Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 148/239] drm/bridge: lt8912b: Fix DSI Video Mode Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 149/239] drm/i915/color: Fix typo for Plane CSC indexes Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 150/239] drm/msm: fix NULL-deref on snapshot tear down Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 151/239] drm/msm: fix NULL-deref on irq uninstall Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 152/239] drm/msm: fix drm device leak on bind errors Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 153/239] drm/msm: fix vram " Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 154/239] drm/msm: fix workqueue " Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 155/239] drm/i915/dsi: Use unconditional msleep() instead of intel_dsi_msleep() Greg Kroah-Hartman
2023-05-15 16:26 ` [PATCH 6.1 156/239] f2fs: fix null pointer panic in tracepoint in __replace_atomic_write_block Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 157/239] f2fs: fix potential corruption when moving a directory Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 158/239] irqchip/loongson-pch-pic: Fix pch_pic_acpi_init calling Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 159/239] irqchip/loongson-eiointc: Fix returned value on parsing MADT Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 160/239] drm/panel: otm8009a: Set backlight parent to panel device Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 161/239] drm/amd/display: Add NULL plane_state check for cursor disable logic Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 162/239] drm/amd/display: Fix 4to1 MPC black screen with DPP RCO Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 163/239] drm/amd/display: filter out invalid bits in pipe_fuses Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 164/239] drm/amd/display: fix flickering caused by S/G mode Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 165/239] drm/amdgpu: fix amdgpu_irq_put call trace in gmc_v10_0_hw_fini Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 166/239] drm/amdgpu: fix an amdgpu_irq_put() issue in gmc_v9_0_hw_fini() Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 167/239] drm/amdgpu: fix amdgpu_irq_put call trace in gmc_v11_0_hw_fini Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 168/239] drm/amdgpu/gfx: disable gfx9 cp_ecc_error_irq only when enabling legacy gfx ras Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 169/239] drm/amdgpu/jpeg: Remove harvest checking for JPEG3 Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 170/239] drm/amdgpu: change gfx 11.0.4 external_id range Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 171/239] drm/amdgpu: Fix vram recover doesnt work after whole GPU reset (v2) Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 172/239] drm/amd/display: Enforce 60us prefetch for 200Mhz DCFCLK modes Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 173/239] drm/amd/pm: parse pp_handle under appropriate conditions Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 174/239] drm/amdgpu: disable sdma ecc irq only when sdma RAS is enabled in suspend Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 175/239] drm/amd/pm: avoid potential UBSAN issue on legacy asics Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 176/239] drm/amdgpu: remove deprecated MES version vars Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 177/239] drm/amd: Load MES microcode during early_init Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 178/239] drm/amd: Add a new helper for loading/validating microcode Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 179/239] drm/amd: Use `amdgpu_ucode_*` helpers for MES Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 180/239] HID: wacom: Set a default resolution for older tablets Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 181/239] HID: wacom: insert timestamp to packed Bluetooth (BT) events Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 182/239] fs/ntfs3: Refactoring of various minor issues Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 183/239] drm/msm/adreno: adreno_gpu: Use suspend() instead of idle() on load error Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 184/239] f2fs: specify extent cache for read explicitly Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 185/239] f2fs: move internal functions into extent_cache.c Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 186/239] f2fs: remove unnecessary __init_extent_tree Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 187/239] f2fs: refactor extent_cache to support for read and more Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 188/239] f2fs: allocate the extent_cache by default Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 189/239] f2fs: factor out victim_entry usage from general rb_tree use Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 190/239] drm/msm/adreno: Simplify read64/write64 helpers Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 191/239] drm/msm: Hangcheck progress detection Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 192/239] drm/msm: fix missing wq allocation error handling Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 193/239] irqchip/loongarch: Adjust acpi_cascade_irqdomain_init() and sub-routines Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 194/239] irqchip/loongson-eiointc: Fix incorrect use of acpi_get_vec_parent Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 195/239] irqchip/loongson-eiointc: Fix registration of syscore_ops Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 196/239] wifi: rtw88: rtw8821c: Fix rfe_option field width Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 197/239] drm/i915/mtl: update scaler source and destination limits for MTL Greg Kroah-Hartman
2023-05-16  7:13   ` Coelho, Luciano
2023-05-16  7:20     ` gregkh
2023-05-16  7:23       ` Coelho, Luciano
2023-05-15 16:27 ` [PATCH 6.1 198/239] drm/i915: Check pipe source size when using skl+ scalers Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 199/239] drm/amd/display: Refactor eDP PSR codes Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 200/239] drm/amd/display: Add Z8 allow states to z-state support list Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 201/239] drm/amd/display: Add debug option to skip PSR CRTC disable Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 202/239] drm/amd/display: Fix Z8 support configurations Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 203/239] drm/amd/display: Add minimum Z8 residency debug option Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 204/239] drm/amd/display: Update minimum stutter residency for DCN314 Z8 Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 205/239] drm/amd/display: Lowering min Z8 residency time Greg Kroah-Hartman
2023-05-15 16:27 ` Greg Kroah-Hartman [this message]
2023-05-15 16:27 ` [PATCH 6.1 207/239] ASoC: codecs: constify static sdw_slave_ops struct Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 208/239] ASoC: codecs: wcd938x: fix accessing regmap on unattached devices Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 209/239] drm/amd/display: Update Z8 watermarks for DCN314 Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 210/239] drm/amd/display: Update Z8 SR exit/enter latencies Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 211/239] drm/amd/display: Change default Z8 watermark values Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 212/239] ksmbd: Implements sess->ksmbd_chann_list as xarray Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 213/239] ksmbd: fix racy issue from session setup and logoff Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 214/239] ksmbd: destroy expired sessions Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 215/239] ksmbd: block asynchronous requests when making a delay on session setup Greg Kroah-Hartman
2023-05-15 16:27 ` [PATCH 6.1 216/239] ksmbd: fix racy issue from smb2 close and logoff with multichannel Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 217/239] drm: Add missing DP DSC extended capability definitions Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 218/239] drm/dsc: fix drm_edp_dsc_sink_output_bpp() DPCD high byte usage Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 219/239] locking/rwsem: Add __always_inline annotation to __down_read_common() and inlined callers Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 220/239] ext4: fix WARNING in mb_find_extent Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 221/239] ext4: avoid a potential slab-out-of-bounds in ext4_group_desc_csum Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 222/239] ext4: fix data races when using cached status extents Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 223/239] ext4: check iomap type only if ext4_iomap_begin() does not fail Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 224/239] ext4: improve error recovery code paths in __ext4_remount() Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 225/239] ext4: improve error handling from ext4_dirhash() Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 226/239] ext4: fix deadlock when converting an inline directory in nojournal mode Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 227/239] ext4: add bounds checking in get_max_inline_xattr_value_size() Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 228/239] ext4: bail out of ext4_xattr_ibody_get() fails for any reason Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 229/239] ext4: fix lockdep warning when enabling MMP Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 230/239] ext4: remove a BUG_ON in ext4_mb_release_group_pa() Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 231/239] ext4: fix invalid free tracking in ext4_xattr_move_to_block() Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 232/239] drm/dsc: fix DP_DSC_MAX_BPP_DELTA_* macro values Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 233/239] f2fs: fix to do sanity check on extent cache correctly Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 234/239] f2fs: inode: " Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 235/239] x86/amd_nb: Add PCI ID for family 19h model 78h Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 236/239] x86: fix clear_user_rep_good() exception handling annotation Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 237/239] spi: fsl-spi: Re-organise transfer bits_per_word adaptation Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 238/239] spi: fsl-cpm: Use 16 bit mode for large transfers with even size Greg Kroah-Hartman
2023-05-15 16:28 ` [PATCH 6.1 239/239] drm/amd/display: Fix hang when skipping modeset Greg Kroah-Hartman
2023-05-15 20:12 ` [PATCH 6.1 000/239] 6.1.29-rc1 review Chris Paterson
2023-05-16  1:25 ` Shuah Khan
2023-05-16  8:35 ` Ron Economos
2023-05-16  8:38 ` Bagas Sanjaya
2023-05-16  9:17 ` Sudip Mukherjee (Codethink)
2023-05-16 10:25 ` ogasawara takeshi
2023-05-16 12:27 ` Conor Dooley
2023-05-16 13:54 ` Naresh Kamboju
2023-05-16 13:54   ` [LTP] " Naresh Kamboju
2023-05-16 18:26 ` Markus Reichelt
2023-05-17  2:52 ` Guenter Roeck
2023-05-17  7:55 ` Jon Hunter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230515161727.907512241@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=broonie@kernel.org \
    --cc=patches@lists.linux.dev \
    --cc=sashal@kernel.org \
    --cc=shumingf@realtek.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.