From 75c173aa8ebd5447ed49bea59e730ee19b064679 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 6 Mar 2023 08:29:24 +0100 Subject: [PATCH] 4.14-stable patches added patches: rtc-pm8xxx-fix-set-alarm-race.patch wifi-rtl8xxxu-fixing-transmisison-failure-for-rtl8192eu.patch --- .../rtc-pm8xxx-fix-set-alarm-race.patch | 74 +++++++++++++++++++ queue-4.14/series | 2 + ...g-transmisison-failure-for-rtl8192eu.patch | 36 +++++++++ 3 files changed, 112 insertions(+) create mode 100644 queue-4.14/rtc-pm8xxx-fix-set-alarm-race.patch create mode 100644 queue-4.14/wifi-rtl8xxxu-fixing-transmisison-failure-for-rtl8192eu.patch diff --git a/queue-4.14/rtc-pm8xxx-fix-set-alarm-race.patch b/queue-4.14/rtc-pm8xxx-fix-set-alarm-race.patch new file mode 100644 index 00000000000..1dff86ae9a4 --- /dev/null +++ b/queue-4.14/rtc-pm8xxx-fix-set-alarm-race.patch @@ -0,0 +1,74 @@ +From c88db0eff9722fc2b6c4d172a50471d20e08ecc6 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Thu, 2 Feb 2023 16:54:27 +0100 +Subject: rtc: pm8xxx: fix set-alarm race + +From: Johan Hovold + +commit c88db0eff9722fc2b6c4d172a50471d20e08ecc6 upstream. + +Make sure to disable the alarm before updating the four alarm time +registers to avoid spurious alarms during the update. + +Note that the disable needs to be done outside of the ctrl_reg_lock +section to prevent a racing alarm interrupt from disabling the newly set +alarm when the lock is released. + +Fixes: 9a9a54ad7aa2 ("drivers/rtc: add support for Qualcomm PMIC8xxx RTC") +Cc: stable@vger.kernel.org # 3.1 +Signed-off-by: Johan Hovold +Reviewed-by: David Collins +Link: https://lore.kernel.org/r/20230202155448.6715-2-johan+linaro@kernel.org +Signed-off-by: Alexandre Belloni +Signed-off-by: Greg Kroah-Hartman +--- + drivers/rtc/rtc-pm8xxx.c | 24 ++++++++++-------------- + 1 file changed, 10 insertions(+), 14 deletions(-) + +--- a/drivers/rtc/rtc-pm8xxx.c ++++ b/drivers/rtc/rtc-pm8xxx.c +@@ -235,7 +235,6 @@ static int pm8xxx_rtc_set_alarm(struct d + { + int rc, i; + u8 value[NUM_8_BIT_RTC_REGS]; +- unsigned int ctrl_reg; + unsigned long secs, irq_flags; + struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev); + const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; +@@ -247,6 +246,11 @@ static int pm8xxx_rtc_set_alarm(struct d + secs >>= 8; + } + ++ rc = regmap_update_bits(rtc_dd->regmap, regs->alarm_ctrl, ++ regs->alarm_en, 0); ++ if (rc) ++ return rc; ++ + spin_lock_irqsave(&rtc_dd->ctrl_reg_lock, irq_flags); + + rc = regmap_bulk_write(rtc_dd->regmap, regs->alarm_rw, value, +@@ -256,19 +260,11 @@ static int pm8xxx_rtc_set_alarm(struct d + goto rtc_rw_fail; + } + +- rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl, &ctrl_reg); +- if (rc) +- goto rtc_rw_fail; +- +- if (alarm->enabled) +- ctrl_reg |= regs->alarm_en; +- else +- ctrl_reg &= ~regs->alarm_en; +- +- rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl, ctrl_reg); +- if (rc) { +- dev_err(dev, "Write to RTC alarm control register failed\n"); +- goto rtc_rw_fail; ++ if (alarm->enabled) { ++ rc = regmap_update_bits(rtc_dd->regmap, regs->alarm_ctrl, ++ regs->alarm_en, regs->alarm_en); ++ if (rc) ++ goto rtc_rw_fail; + } + + dev_dbg(dev, "Alarm Set for h:r:s=%d:%d:%d, d/m/y=%d/%d/%d\n", diff --git a/queue-4.14/series b/queue-4.14/series index 7f0903f3292..08d83286375 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -97,3 +97,5 @@ pinctrl-at91-use-devm_kasprintf-to-avoid-potential-l.patch dm-thin-add-cond_resched-to-various-workqueue-loops.patch dm-cache-add-cond_resched-to-various-workqueue-loops.patch spi-bcm63xx-hsspi-fix-multi-bit-mode-setting.patch +wifi-rtl8xxxu-fixing-transmisison-failure-for-rtl8192eu.patch +rtc-pm8xxx-fix-set-alarm-race.patch diff --git a/queue-4.14/wifi-rtl8xxxu-fixing-transmisison-failure-for-rtl8192eu.patch b/queue-4.14/wifi-rtl8xxxu-fixing-transmisison-failure-for-rtl8192eu.patch new file mode 100644 index 00000000000..c18d9ce3f22 --- /dev/null +++ b/queue-4.14/wifi-rtl8xxxu-fixing-transmisison-failure-for-rtl8192eu.patch @@ -0,0 +1,36 @@ +From c6015bf3ff1ffb3caa27eb913797438a0fc634a0 Mon Sep 17 00:00:00 2001 +From: Jun ASAKA +Date: Sat, 17 Dec 2022 11:06:59 +0800 +Subject: wifi: rtl8xxxu: fixing transmisison failure for rtl8192eu + +From: Jun ASAKA + +commit c6015bf3ff1ffb3caa27eb913797438a0fc634a0 upstream. + +Fixing transmission failure which results in +"authentication with ... timed out". This can be +fixed by disable the REG_TXPAUSE. + +Signed-off-by: Jun ASAKA +Reviewed-by: Ping-Ke Shih +Signed-off-by: Kalle Valo +Link: https://lore.kernel.org/r/20221217030659.12577-1-JunASAKA@zzy040330.moe +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c ++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c +@@ -1629,6 +1629,11 @@ static void rtl8192e_enable_rf(struct rt + val8 = rtl8xxxu_read8(priv, REG_PAD_CTRL1); + val8 &= ~BIT(0); + rtl8xxxu_write8(priv, REG_PAD_CTRL1, val8); ++ ++ /* ++ * Fix transmission failure of rtl8192e. ++ */ ++ rtl8xxxu_write8(priv, REG_TXPAUSE, 0x00); + } + + struct rtl8xxxu_fileops rtl8192eu_fops = { -- 2.47.3