stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org,
	Oleksandr Suvorov <oleksandr.suvorov@toradex.com>,
	Marcel Ziswiler <marcel.ziswiler@toradex.com>,
	Fabio Estevam <festevam@gmail.com>,
	Cezary Rojewski <cezary.rojewski@intel.com>,
	Mark Brown <broonie@kernel.org>
Subject: [PATCH 5.3 020/148] ASoC: sgtl5000: Improve VAG power and mute control
Date: Thu, 10 Oct 2019 10:34:41 +0200	[thread overview]
Message-ID: <20191010083612.332032728@linuxfoundation.org> (raw)
In-Reply-To: <20191010083609.660878383@linuxfoundation.org>

From: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>

commit b1f373a11d25fc9a5f7679c9b85799fe09b0dc4a upstream.

VAG power control is improved to fit the manual [1]. This patch fixes as
minimum one bug: if customer muxes Headphone to Line-In right after boot,
the VAG power remains off that leads to poor sound quality from line-in.

I.e. after boot:
  - Connect sound source to Line-In jack;
  - Connect headphone to HP jack;
  - Run following commands:
  $ amixer set 'Headphone' 80%
  $ amixer set 'Headphone Mux' LINE_IN

Change VAG power on/off control according to the following algorithm:
  - turn VAG power ON on the 1st incoming event.
  - keep it ON if there is any active VAG consumer (ADC/DAC/HP/Line-In).
  - turn VAG power OFF when there is the latest consumer's pre-down event
    come.
  - always delay after VAG power OFF to avoid pop.
  - delay after VAG power ON if the initiative consumer is Line-In, this
    prevents pop during line-in muxing.

According to the data sheet [1], to avoid any pops/clicks,
the outputs should be muted during input/output
routing changes.

[1] https://www.nxp.com/docs/en/data-sheet/SGTL5000.pdf

Cc: stable@vger.kernel.org
Fixes: 9b34e6cc3bc2 ("ASoC: Add Freescale SGTL5000 codec support")
Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
Reviewed-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Link: https://lore.kernel.org/r/20190719100524.23300-3-oleksandr.suvorov@toradex.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/soc/codecs/sgtl5000.c |  224 ++++++++++++++++++++++++++++++++++++++------
 1 file changed, 194 insertions(+), 30 deletions(-)

--- a/sound/soc/codecs/sgtl5000.c
+++ b/sound/soc/codecs/sgtl5000.c
@@ -31,6 +31,13 @@
 #define SGTL5000_DAP_REG_OFFSET	0x0100
 #define SGTL5000_MAX_REG_OFFSET	0x013A
 
+/* Delay for the VAG ramp up */
+#define SGTL5000_VAG_POWERUP_DELAY 500 /* ms */
+/* Delay for the VAG ramp down */
+#define SGTL5000_VAG_POWERDOWN_DELAY 500 /* ms */
+
+#define SGTL5000_OUTPUTS_MUTE (SGTL5000_HP_MUTE | SGTL5000_LINE_OUT_MUTE)
+
 /* default value of sgtl5000 registers */
 static const struct reg_default sgtl5000_reg_defaults[] = {
 	{ SGTL5000_CHIP_DIG_POWER,		0x0000 },
@@ -123,6 +130,13 @@ enum  {
 	I2S_SCLK_STRENGTH_HIGH,
 };
 
+enum {
+	HP_POWER_EVENT,
+	DAC_POWER_EVENT,
+	ADC_POWER_EVENT,
+	LAST_POWER_EVENT = ADC_POWER_EVENT
+};
+
 /* sgtl5000 private structure in codec */
 struct sgtl5000_priv {
 	int sysclk;	/* sysclk rate */
@@ -137,8 +151,109 @@ struct sgtl5000_priv {
 	u8 micbias_voltage;
 	u8 lrclk_strength;
 	u8 sclk_strength;
+	u16 mute_state[LAST_POWER_EVENT + 1];
 };
 
+static inline int hp_sel_input(struct snd_soc_component *component)
+{
+	return (snd_soc_component_read32(component, SGTL5000_CHIP_ANA_CTRL) &
+		SGTL5000_HP_SEL_MASK) >> SGTL5000_HP_SEL_SHIFT;
+}
+
+static inline u16 mute_output(struct snd_soc_component *component,
+			      u16 mute_mask)
+{
+	u16 mute_reg = snd_soc_component_read32(component,
+					      SGTL5000_CHIP_ANA_CTRL);
+
+	snd_soc_component_update_bits(component, SGTL5000_CHIP_ANA_CTRL,
+			    mute_mask, mute_mask);
+	return mute_reg;
+}
+
+static inline void restore_output(struct snd_soc_component *component,
+				  u16 mute_mask, u16 mute_reg)
+{
+	snd_soc_component_update_bits(component, SGTL5000_CHIP_ANA_CTRL,
+		mute_mask, mute_reg);
+}
+
+static void vag_power_on(struct snd_soc_component *component, u32 source)
+{
+	if (snd_soc_component_read32(component, SGTL5000_CHIP_ANA_POWER) &
+	    SGTL5000_VAG_POWERUP)
+		return;
+
+	snd_soc_component_update_bits(component, SGTL5000_CHIP_ANA_POWER,
+			    SGTL5000_VAG_POWERUP, SGTL5000_VAG_POWERUP);
+
+	/* When VAG powering on to get local loop from Line-In, the sleep
+	 * is required to avoid loud pop.
+	 */
+	if (hp_sel_input(component) == SGTL5000_HP_SEL_LINE_IN &&
+	    source == HP_POWER_EVENT)
+		msleep(SGTL5000_VAG_POWERUP_DELAY);
+}
+
+static int vag_power_consumers(struct snd_soc_component *component,
+			       u16 ana_pwr_reg, u32 source)
+{
+	int consumers = 0;
+
+	/* count dac/adc consumers unconditional */
+	if (ana_pwr_reg & SGTL5000_DAC_POWERUP)
+		consumers++;
+	if (ana_pwr_reg & SGTL5000_ADC_POWERUP)
+		consumers++;
+
+	/*
+	 * If the event comes from HP and Line-In is selected,
+	 * current action is 'DAC to be powered down'.
+	 * As HP_POWERUP is not set when HP muxed to line-in,
+	 * we need to keep VAG power ON.
+	 */
+	if (source == HP_POWER_EVENT) {
+		if (hp_sel_input(component) == SGTL5000_HP_SEL_LINE_IN)
+			consumers++;
+	} else {
+		if (ana_pwr_reg & SGTL5000_HP_POWERUP)
+			consumers++;
+	}
+
+	return consumers;
+}
+
+static void vag_power_off(struct snd_soc_component *component, u32 source)
+{
+	u16 ana_pwr = snd_soc_component_read32(component,
+					     SGTL5000_CHIP_ANA_POWER);
+
+	if (!(ana_pwr & SGTL5000_VAG_POWERUP))
+		return;
+
+	/*
+	 * This function calls when any of VAG power consumers is disappearing.
+	 * Thus, if there is more than one consumer at the moment, as minimum
+	 * one consumer will definitely stay after the end of the current
+	 * event.
+	 * Don't clear VAG_POWERUP if 2 or more consumers of VAG present:
+	 * - LINE_IN (for HP events) / HP (for DAC/ADC events)
+	 * - DAC
+	 * - ADC
+	 * (the current consumer is disappearing right now)
+	 */
+	if (vag_power_consumers(component, ana_pwr, source) >= 2)
+		return;
+
+	snd_soc_component_update_bits(component, SGTL5000_CHIP_ANA_POWER,
+		SGTL5000_VAG_POWERUP, 0);
+	/* In power down case, we need wait 400-1000 ms
+	 * when VAG fully ramped down.
+	 * As longer we wait, as smaller pop we've got.
+	 */
+	msleep(SGTL5000_VAG_POWERDOWN_DELAY);
+}
+
 /*
  * mic_bias power on/off share the same register bits with
  * output impedance of mic bias, when power on mic bias, we
@@ -170,36 +285,46 @@ static int mic_bias_event(struct snd_soc
 	return 0;
 }
 
-/*
- * As manual described, ADC/DAC only works when VAG powerup,
- * So enabled VAG before ADC/DAC up.
- * In power down case, we need wait 400ms when vag fully ramped down.
- */
-static int power_vag_event(struct snd_soc_dapm_widget *w,
-	struct snd_kcontrol *kcontrol, int event)
+static int vag_and_mute_control(struct snd_soc_component *component,
+				 int event, int event_source)
 {
-	struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
-	const u32 mask = SGTL5000_DAC_POWERUP | SGTL5000_ADC_POWERUP;
+	static const u16 mute_mask[] = {
+		/*
+		 * Mask for HP_POWER_EVENT.
+		 * Muxing Headphones have to be wrapped with mute/unmute
+		 * headphones only.
+		 */
+		SGTL5000_HP_MUTE,
+		/*
+		 * Masks for DAC_POWER_EVENT/ADC_POWER_EVENT.
+		 * Muxing DAC or ADC block have to wrapped with mute/unmute
+		 * both headphones and line-out.
+		 */
+		SGTL5000_OUTPUTS_MUTE,
+		SGTL5000_OUTPUTS_MUTE
+	};
+
+	struct sgtl5000_priv *sgtl5000 =
+		snd_soc_component_get_drvdata(component);
 
 	switch (event) {
+	case SND_SOC_DAPM_PRE_PMU:
+		sgtl5000->mute_state[event_source] =
+			mute_output(component, mute_mask[event_source]);
+		break;
 	case SND_SOC_DAPM_POST_PMU:
-		snd_soc_component_update_bits(component, SGTL5000_CHIP_ANA_POWER,
-			SGTL5000_VAG_POWERUP, SGTL5000_VAG_POWERUP);
-		msleep(400);
+		vag_power_on(component, event_source);
+		restore_output(component, mute_mask[event_source],
+			       sgtl5000->mute_state[event_source]);
 		break;
-
 	case SND_SOC_DAPM_PRE_PMD:
-		/*
-		 * Don't clear VAG_POWERUP, when both DAC and ADC are
-		 * operational to prevent inadvertently starving the
-		 * other one of them.
-		 */
-		if ((snd_soc_component_read32(component, SGTL5000_CHIP_ANA_POWER) &
-				mask) != mask) {
-			snd_soc_component_update_bits(component, SGTL5000_CHIP_ANA_POWER,
-				SGTL5000_VAG_POWERUP, 0);
-			msleep(400);
-		}
+		sgtl5000->mute_state[event_source] =
+			mute_output(component, mute_mask[event_source]);
+		vag_power_off(component, event_source);
+		break;
+	case SND_SOC_DAPM_POST_PMD:
+		restore_output(component, mute_mask[event_source],
+			       sgtl5000->mute_state[event_source]);
 		break;
 	default:
 		break;
@@ -208,6 +333,41 @@ static int power_vag_event(struct snd_so
 	return 0;
 }
 
+/*
+ * Mute Headphone when power it up/down.
+ * Control VAG power on HP power path.
+ */
+static int headphone_pga_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);
+
+	return vag_and_mute_control(component, event, HP_POWER_EVENT);
+}
+
+/* As manual describes, ADC/DAC powering up/down requires
+ * to mute outputs to avoid pops.
+ * Control VAG power on ADC/DAC power path.
+ */
+static int adc_updown_depop(struct snd_soc_dapm_widget *w,
+	struct snd_kcontrol *kcontrol, int event)
+{
+	struct snd_soc_component *component =
+		snd_soc_dapm_to_component(w->dapm);
+
+	return vag_and_mute_control(component, event, ADC_POWER_EVENT);
+}
+
+static int dac_updown_depop(struct snd_soc_dapm_widget *w,
+	struct snd_kcontrol *kcontrol, int event)
+{
+	struct snd_soc_component *component =
+		snd_soc_dapm_to_component(w->dapm);
+
+	return vag_and_mute_control(component, event, DAC_POWER_EVENT);
+}
+
 /* input sources for ADC */
 static const char *adc_mux_text[] = {
 	"MIC_IN", "LINE_IN"
@@ -280,7 +440,10 @@ static const struct snd_soc_dapm_widget
 			    mic_bias_event,
 			    SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
 
-	SND_SOC_DAPM_PGA("HP", SGTL5000_CHIP_ANA_POWER, 4, 0, NULL, 0),
+	SND_SOC_DAPM_PGA_E("HP", SGTL5000_CHIP_ANA_POWER, 4, 0, NULL, 0,
+			   headphone_pga_event,
+			   SND_SOC_DAPM_PRE_POST_PMU |
+			   SND_SOC_DAPM_PRE_POST_PMD),
 	SND_SOC_DAPM_PGA("LO", SGTL5000_CHIP_ANA_POWER, 0, 0, NULL, 0),
 
 	SND_SOC_DAPM_MUX("Capture Mux", SND_SOC_NOPM, 0, 0, &adc_mux),
@@ -301,11 +464,12 @@ static const struct snd_soc_dapm_widget
 				0, SGTL5000_CHIP_DIG_POWER,
 				1, 0),
 
-	SND_SOC_DAPM_ADC("ADC", "Capture", SGTL5000_CHIP_ANA_POWER, 1, 0),
-	SND_SOC_DAPM_DAC("DAC", "Playback", SGTL5000_CHIP_ANA_POWER, 3, 0),
-
-	SND_SOC_DAPM_PRE("VAG_POWER_PRE", power_vag_event),
-	SND_SOC_DAPM_POST("VAG_POWER_POST", power_vag_event),
+	SND_SOC_DAPM_ADC_E("ADC", "Capture", SGTL5000_CHIP_ANA_POWER, 1, 0,
+			   adc_updown_depop, SND_SOC_DAPM_PRE_POST_PMU |
+			   SND_SOC_DAPM_PRE_POST_PMD),
+	SND_SOC_DAPM_DAC_E("DAC", "Playback", SGTL5000_CHIP_ANA_POWER, 3, 0,
+			   dac_updown_depop, SND_SOC_DAPM_PRE_POST_PMU |
+			   SND_SOC_DAPM_PRE_POST_PMD),
 };
 
 /* routes for sgtl5000 */



  parent reply	other threads:[~2019-10-10  9:03 UTC|newest]

Thread overview: 164+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-10  8:34 [PATCH 5.3 000/148] 5.3.6-stable review Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 001/148] s390/process: avoid potential reading of freed stack Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 002/148] s390/sclp: Fix bit checked for has_sipl Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 003/148] KVM: s390: Test for bad access register and size at the start of S390_MEM_OP Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 004/148] s390/topology: avoid firing events before kobjs are created Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 005/148] s390/cio: avoid calling strlen on null pointer Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 006/148] s390/cio: exclude subchannels with no parent from pseudo check Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 007/148] s390/dasd: Fix error handling during online processing Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 008/148] Revert "s390/dasd: Add discard support for ESE volumes" Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 009/148] KVM: s390: fix __insn32_query() inline assembly Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 010/148] KVM: PPC: Book3S: Enable XIVE native capability only if OPAL has required functions Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 011/148] KVM: PPC: Book3S HV: XIVE: Free escalation interrupts before disabling the VP Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 012/148] KVM: PPC: Book3S HV: Dont push XIVE context when not using XIVE device Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 013/148] KVM: PPC: Book3S HV: Fix race in re-enabling XIVE escalation interrupts Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 014/148] KVM: PPC: Book3S HV: Check for MMU ready on piggybacked virtual cores Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 015/148] KVM: PPC: Book3S HV: Dont lose pending doorbell request on migration on P9 Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 016/148] KVM: X86: Fix userspace set invalid CR4 Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 017/148] nbd: fix max number of supported devs Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 018/148] PM / devfreq: tegra: Fix kHz to Hz conversion Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 019/148] ASoC: Define a set of DAPM pre/post-up events Greg Kroah-Hartman
2019-10-10  8:34 ` Greg Kroah-Hartman [this message]
2019-10-10  8:34 ` [PATCH 5.3 021/148] powerpc/xive: Implement get_irqchip_state method for XIVE to fix shutdown race Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 022/148] powerpc/mce: Fix MCE handling for huge pages Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 023/148] powerpc/mce: Schedule work from irq_work Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 024/148] powerpc/603: Fix handling of the DIRTY flag Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 025/148] powerpc/32s: Fix boot failure with DEBUG_PAGEALLOC without KASAN Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 026/148] powerpc/ptdump: Fix addresses display on PPC32 Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 027/148] powerpc/powernv: Restrict OPAL symbol map to only be readable by root Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 028/148] powerpc/pseries: Fix cpu_hotplug_lock acquisition in resize_hpt() Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 029/148] powerpc/powernv/ioda: Fix race in TCE level allocation Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 030/148] powerpc/kasan: Fix parallel loading of modules Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 031/148] powerpc/kasan: Fix shadow area set up for modules Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 032/148] powerpc/book3s64/mm: Dont do tlbie fixup for some hardware revisions Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 033/148] powerpc/book3s64/radix: Rename CPU_FTR_P9_TLBIE_BUG feature flag Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 034/148] powerpc/mm: Add a helper to select PAGE_KERNEL_RO or PAGE_READONLY Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 035/148] powerpc/mm: Fix an Oops in kasan_mmu_init() Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 036/148] powerpc/mm: Fixup tlbie vs mtpidr/mtlpidr ordering issue on POWER9 Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 037/148] can: mcp251x: mcp251x_hw_reset(): allow more time after a reset Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 038/148] tools lib traceevent: Fix "robust" test of do_generate_dynamic_list_file Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 039/148] tools lib traceevent: Do not free tep->cmdlines in add_new_comm() on failure Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 040/148] crypto: qat - Silence smp_processor_id() warning Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 041/148] crypto: skcipher - Unmap pages after an external error Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 042/148] crypto: cavium/zip - Add missing single_release() Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 043/148] crypto: caam/qi - fix error handling in ERN handler Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 044/148] crypto: caam - fix concurrency issue in givencrypt descriptor Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 045/148] crypto: ccree - account for TEE not ready to report Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 046/148] crypto: ccree - use the full crypt length value Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 047/148] MIPS: Treat Loongson Extensions as ASEs Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 048/148] power: supply: sbs-battery: use correct flags field Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 049/148] power: supply: sbs-battery: only return health when battery present Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 050/148] tracing: Make sure variable reference alias has correct var_ref_idx Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 051/148] usercopy: Avoid HIGHMEM pfn warning Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 052/148] timer: Read jiffies once when forwarding base clk Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 053/148] PCI: vmd: Fix config addressing when using bus offsets Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 054/148] PCI: hv: Avoid use of hv_pci_dev->pci_slot after freeing it Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 055/148] PCI: vmd: Fix shadow offsets to reflect spec changes Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 056/148] PCI: Restore Resizable BAR size bits correctly for 1MB BARs Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 057/148] selftests/tpm2: Add the missing TEST_FILES assignment Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 058/148] selftests: pidfd: Fix undefined reference to pthread_create() Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 059/148] watchdog: imx2_wdt: fix min() calculation in imx2_wdt_set_timeout Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 061/148] perf stat: Fix a segmentation fault when using repeat forever Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 062/148] drm/i915/dp: Fix dsc bpp calculations, v5 Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 063/148] drm/atomic: Reject FLIP_ASYNC unconditionally Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 064/148] drm/atomic: Take the atomic toys away from X Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 065/148] drm: mali-dp: Mark expected switch fall-through Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 066/148] drm/omap: fix max fclk divider for omap36xx Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 067/148] drm/msm/dsi: Fix return value check for clk_get_parent Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 068/148] drm/nouveau/kms/nv50-: Dont create MSTMs for eDP connectors Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 069/148] drm/amd/powerplay: change metrics update period from 1ms to 100ms Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 070/148] drm/i915/gvt: update vgpu workload head pointer correctly Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 071/148] drm/i915/userptr: Acquire the page lock around set_page_dirty() Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 072/148] drm/i915: to make vgpu ppgtt notificaiton as atomic operation Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 073/148] mac80211: keep BHs disabled while calling drv_tx_wake_queue() Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 074/148] mmc: tegra: Implement ->set_dma_mask() Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 075/148] mmc: sdhci: improve ADMA error reporting Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 076/148] mmc: sdhci-of-esdhc: set DMA snooping based on DMA coherence Greg Kroah-Hartman
2019-10-10  8:49   ` Russell King - ARM Linux admin
2019-10-10  9:10     ` Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 077/148] mmc: sdhci: Let drivers define their DMA mask Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 078/148] Revert "locking/pvqspinlock: Dont wait if vCPU is preempted" Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 079/148] libnvdimm/altmap: Track namespace boundaries in altmap Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 080/148] sched: Add __ASSEMBLY__ guards around struct clone_args Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 081/148] DTS: ARM: gta04: introduce legacy spi-cs-high to make display work again Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 082/148] xen/balloon: Set pages PageOffline() in balloon_add_region() Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 083/148] xen/xenbus: fix self-deadlock after killing user process Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 084/148] ieee802154: atusb: fix use-after-free at disconnect Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 085/148] nl80211: validate beacon head Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 086/148] cfg80211: validate SSID/MBSSID element ordering assumption Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 087/148] cfg80211: initialize on-stack chandefs Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 088/148] drivers: thermal: qcom: tsens: Fix memory leak from qfprom read Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 089/148] ima: always return negative code for error Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 090/148] ima: fix freeing ongoing ahash_request Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 091/148] fs: nfs: Fix possible null-pointer dereferences in encode_attrs() Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 092/148] xprtrdma: Toggle XPRT_CONGESTED in xprtrdmas slot methods Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 093/148] xprtrdma: Send Queue size grows after a reconnect Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 094/148] 9p: Transport error uninitialized Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 095/148] 9p: avoid attaching writeback_fid on mmap with type PRIVATE Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 096/148] xen/pci: reserve MCFG areas earlier Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 097/148] fuse: fix request limit Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 098/148] ceph: fix directories inode i_blkbits initialization Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 099/148] ceph: fetch cap_gen under spinlock in ceph_add_cap Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 100/148] ceph: reconnect connection if session hang in opening state Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 101/148] SUNRPC: RPC level errors should always set task->tk_rpc_status Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 102/148] watchdog: aspeed: Add support for AST2600 Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 103/148] netfilter: nf_tables: allow lookups in dynamic sets Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 104/148] drm/amdgpu: Fix KFD-related kernel oops on Hawaii Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 105/148] drm/amdgpu: Check for valid number of registers to read Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 106/148] perf probe: Fix to clear tev->nargs in clear_probe_trace_event() Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 107/148] pNFS: Ensure we do clear the return-on-close layout stateid on fatal errors Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 108/148] SUNRPC: Dont try to parse incomplete RPC messages Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 109/148] pwm: stm32-lp: Add check in case requested period cannot be achieved Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 110/148] selftests/seccomp: fix build on older kernels Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 111/148] x86/purgatory: Disable the stackleak GCC plugin for the purgatory Greg Kroah-Hartman
     [not found]   ` <BYAPR04MB62468F03E52BCE23B5CD1C91AA940@BYAPR04MB6246.namprd04.prod.outlook.com>
2019-10-10 23:32     ` Sasha Levin
2019-10-10  8:36 ` [PATCH 5.3 112/148] ntb: point to right memory window index Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 113/148] thermal: Fix use-after-free when unregistering thermal zone device Greg Kroah-Hartman
2019-11-14 13:17   ` Lukasz Luba
2019-11-14 13:54     ` Ido Schimmel
2019-11-14 15:05     ` Zhang Rui
2019-10-10  8:36 ` [PATCH 5.3 114/148] thermal_hwmon: Sanitize thermal_zone type Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 115/148] iommu/amd: Fix downgrading default page-sizes in alloc_pte() Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 116/148] libnvdimm/region: Initialize bad block for volatile namespaces Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 117/148] libnvdimm: Fix endian conversion issues Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 118/148] fuse: fix memleak in cuse_channel_open Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 119/148] libnvdimm/nfit_test: Fix acpi_handle redefinition Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 120/148] sched/membarrier: Call sync_core only before usermode for same mm Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 121/148] sched/membarrier: Fix private expedited registration check Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 122/148] sched/core: Fix migration to invalid CPU in __set_cpus_allowed_ptr() Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 123/148] perf build: Add detection of java-11-openjdk-devel package Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 124/148] include/trace/events/writeback.h: fix -Wstringop-truncation warnings Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 125/148] selftests/bpf: adjust strobemeta loop to satisfy latest clang Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 126/148] kernel/elfcore.c: include proper prototypes Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 127/148] libbpf: fix false uninitialized variable warning Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 128/148] blk-mq: move lockdep_assert_held() into elevator_exit Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 129/148] bpf: Fix bpf_event_output re-entry issue Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 130/148] net: dsa: microchip: Always set regmap stride to 1 Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 131/148] i2c: qcom-geni: Disable DMA processing on the Lenovo Yoga C630 Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 132/148] perf unwind: Fix libunwind build failure on i386 systems Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 133/148] mlxsw: spectrum_flower: Fail in case user specifies multiple mirror actions Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 134/148] nfp: abm: fix memory leak in nfp_abm_u32_knode_replace Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 135/148] drm/radeon: Bail earlier when radeon.cik_/si_support=0 is passed Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 136/148] Btrfs: fix selftests failure due to uninitialized i_mode in test inodes Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 137/148] KVM: nVMX: Fix consistency check on injected exception error code Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 138/148] tick: broadcast-hrtimer: Fix a race in bc_set_next Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 139/148] perf stat: Reset previous counts on repeat with interval Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 140/148] riscv: Avoid interrupts being erroneously enabled in handle_exception() Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 141/148] vfs: Fix EOVERFLOW testing in put_compat_statfs64 Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 142/148] coresight: etm4x: Use explicit barriers on enable/disable Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 143/148] staging: erofs: fix an error handling in erofs_readdir() Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 144/148] staging: erofs: some compressed cluster should be submitted for corrupted images Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 145/148] staging: erofs: add two missing erofs_workgroup_put " Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 146/148] staging: erofs: avoid endless loop of invalid lookback distance 0 Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 147/148] staging: erofs: detect potential multiref due to corrupted images Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 148/148] libnvdimm: prevent nvdimm from requesting key when security is disabled Greg Kroah-Hartman
2019-10-10 14:41 ` [PATCH 5.3 000/148] 5.3.6-stable review kernelci.org bot
2019-10-10 17:09 ` Naresh Kamboju
2019-10-11  6:48   ` Greg Kroah-Hartman
2019-10-10 20:59 ` Didik Setiawan
2019-10-10 22:19 ` Guenter Roeck
2019-10-11  6:49   ` Greg Kroah-Hartman
2019-10-11  3:02 ` shuah
2019-10-11  6:47   ` Greg Kroah-Hartman
2019-10-11  8:33 ` Jon Hunter
2019-10-11  8:58   ` Greg Kroah-Hartman

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=20191010083612.332032728@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=broonie@kernel.org \
    --cc=cezary.rojewski@intel.com \
    --cc=festevam@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marcel.ziswiler@toradex.com \
    --cc=oleksandr.suvorov@toradex.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).