From: Greg Kroah-Hartman Date: Wed, 4 Jun 2025 14:41:39 +0000 (+0200) Subject: 6.14-stable patches X-Git-Tag: v6.12.33~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8daa7bde9145337630f43a48bce08505af8b7d92;p=thirdparty%2Fkernel%2Fstable-queue.git 6.14-stable patches added patches: acpi-cpufreq-fix-nominal_freq-units-to-khz-in-get_max_boost_ratio.patch clk-samsung-correct-clock-summary-for-hsi1-block.patch documentation-acpi-use-all-string-data-node-references.patch pinctrl-armada-37xx-set-gpio-output-value-before-setting-direction.patch pinctrl-armada-37xx-use-correct-output_val-register-for-gpios-31.patch --- diff --git a/queue-6.14/acpi-cpufreq-fix-nominal_freq-units-to-khz-in-get_max_boost_ratio.patch b/queue-6.14/acpi-cpufreq-fix-nominal_freq-units-to-khz-in-get_max_boost_ratio.patch new file mode 100644 index 0000000000..7b6f5cba24 --- /dev/null +++ b/queue-6.14/acpi-cpufreq-fix-nominal_freq-units-to-khz-in-get_max_boost_ratio.patch @@ -0,0 +1,45 @@ +From cb6a85f38f456b086c366e346ebb67ffa70c7243 Mon Sep 17 00:00:00 2001 +From: "Gautham R. Shenoy" +Date: Thu, 29 May 2025 14:21:43 +0530 +Subject: acpi-cpufreq: Fix nominal_freq units to KHz in get_max_boost_ratio() + +From: Gautham R. Shenoy + +commit cb6a85f38f456b086c366e346ebb67ffa70c7243 upstream. + +commit 083466754596 ("cpufreq: ACPI: Fix max-frequency computation") +modified get_max_boost_ratio() to return the nominal_freq advertised +in the _CPC object. This was for the purposes of computing the maximum +frequency. The frequencies advertised in _CPC objects are in +MHz. However, cpufreq expects the frequency to be in KHz. Since the +nominal_freq returned by get_max_boost_ratio() was not in KHz but +instead in MHz,the cpuinfo_max_frequency that was computed using this +nominal_freq was incorrect and an invalid value which resulted in +cpufreq reporting the P0 frequency as the cpuinfo_max_freq. + +Fix this by converting the nominal_freq to KHz before returning the +same from get_max_boost_ratio(). + +Reported-by: Manu Bretelle +Closes: https://lore.kernel.org/lkml/aDaB63tDvbdcV0cg@HQ-GR2X1W2P57/ +Fixes: 083466754596 ("cpufreq: ACPI: Fix max-frequency computation") +Signed-off-by: Gautham R. Shenoy +Cc: 6.14+ # 6.14+ +Link: https://patch.msgid.link/20250529085143.709-1-gautham.shenoy@amd.com +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman +--- + drivers/cpufreq/acpi-cpufreq.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/cpufreq/acpi-cpufreq.c ++++ b/drivers/cpufreq/acpi-cpufreq.c +@@ -660,7 +660,7 @@ static u64 get_max_boost_ratio(unsigned + nominal_perf = perf_caps.nominal_perf; + + if (nominal_freq) +- *nominal_freq = perf_caps.nominal_freq; ++ *nominal_freq = perf_caps.nominal_freq * 1000; + + if (!highest_perf || !nominal_perf) { + pr_debug("CPU%d: highest or nominal performance missing\n", cpu); diff --git a/queue-6.14/clk-samsung-correct-clock-summary-for-hsi1-block.patch b/queue-6.14/clk-samsung-correct-clock-summary-for-hsi1-block.patch new file mode 100644 index 0000000000..3bb4d10274 --- /dev/null +++ b/queue-6.14/clk-samsung-correct-clock-summary-for-hsi1-block.patch @@ -0,0 +1,48 @@ +From 81214185e7e1fc6dfc8661a574c457accaf9a5a4 Mon Sep 17 00:00:00 2001 +From: Pritam Manohar Sutar +Date: Tue, 6 May 2025 13:31:54 +0530 +Subject: clk: samsung: correct clock summary for hsi1 block + +From: Pritam Manohar Sutar + +commit 81214185e7e1fc6dfc8661a574c457accaf9a5a4 upstream. + +clk_summary shows wrong value for "mout_hsi1_usbdrd_user". +It shows 400Mhz instead of 40Mhz as below. + +dout_shared2_div4 1 1 0 400000000 0 0 50000 Y ... + mout_hsi1_usbdrd_user 0 0 0 400000000 0 0 50000 Y ... + dout_clkcmu_hsi1_usbdrd 0 0 0 40000000 0 0 50000 Y ... + +Correct the clk_tree by adding correct clock parent for +"mout_hsi1_usbdrd_user". + +Post this change, clk_summary shows correct value. + +dout_shared2_div4 1 1 0 400000000 0 0 50000 Y ... + mout_clkcmu_hsi1_usbdrd 0 0 0 400000000 0 0 50000 Y ... + dout_clkcmu_hsi1_usbdrd 0 0 0 40000000 0 0 50000 Y ... + mout_hsi1_usbdrd_user 0 0 0 40000000 0 0 50000 Y ... + +Fixes: 485e13fe2fb6 ("clk: samsung: add top clock support for ExynosAuto v920 SoC") +Cc: +Signed-off-by: Pritam Manohar Sutar +Reviewed-by: Alim Akhtar +Link: https://lore.kernel.org/r/20250506080154.3995512-1-pritam.sutar@samsung.com +Signed-off-by: Krzysztof Kozlowski +Signed-off-by: Greg Kroah-Hartman +--- + drivers/clk/samsung/clk-exynosautov920.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/clk/samsung/clk-exynosautov920.c ++++ b/drivers/clk/samsung/clk-exynosautov920.c +@@ -1393,7 +1393,7 @@ static const unsigned long hsi1_clk_regs + /* List of parent clocks for Muxes in CMU_HSI1 */ + PNAME(mout_hsi1_mmc_card_user_p) = {"oscclk", "dout_clkcmu_hsi1_mmc_card"}; + PNAME(mout_hsi1_noc_user_p) = { "oscclk", "dout_clkcmu_hsi1_noc" }; +-PNAME(mout_hsi1_usbdrd_user_p) = { "oscclk", "mout_clkcmu_hsi1_usbdrd" }; ++PNAME(mout_hsi1_usbdrd_user_p) = { "oscclk", "dout_clkcmu_hsi1_usbdrd" }; + PNAME(mout_hsi1_usbdrd_p) = { "dout_tcxo_div2", "mout_hsi1_usbdrd_user" }; + + static const struct samsung_mux_clock hsi1_mux_clks[] __initconst = { diff --git a/queue-6.14/documentation-acpi-use-all-string-data-node-references.patch b/queue-6.14/documentation-acpi-use-all-string-data-node-references.patch new file mode 100644 index 0000000000..6103397050 --- /dev/null +++ b/queue-6.14/documentation-acpi-use-all-string-data-node-references.patch @@ -0,0 +1,133 @@ +From 6db0261f3776bde01ae916ad8e1cb2ded3ba1a2b Mon Sep 17 00:00:00 2001 +From: Sakari Ailus +Date: Wed, 9 Apr 2025 11:47:38 +0300 +Subject: Documentation: ACPI: Use all-string data node references + +From: Sakari Ailus + +commit 6db0261f3776bde01ae916ad8e1cb2ded3ba1a2b upstream. + +Document that references to data nodes shall use string-only references +instead of a device reference and a succession of the first package +entries of hierarchical data node references. + +Fixes: 9880702d123f ("ACPI: property: Support using strings in reference properties") +Cc: 6.8+ # 6.8+ +Signed-off-by: Sakari Ailus +Link: https://patch.msgid.link/20250409084738.3657079-1-sakari.ailus@linux.intel.com +[ rjw: Clarifying edits ] +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman +--- + Documentation/firmware-guide/acpi/dsd/data-node-references.rst | 26 ++++------ + Documentation/firmware-guide/acpi/dsd/graph.rst | 11 +--- + Documentation/firmware-guide/acpi/dsd/leds.rst | 7 -- + 3 files changed, 17 insertions(+), 27 deletions(-) + +--- a/Documentation/firmware-guide/acpi/dsd/data-node-references.rst ++++ b/Documentation/firmware-guide/acpi/dsd/data-node-references.rst +@@ -12,11 +12,14 @@ ACPI in general allows referring to devi + Hierarchical data extension nodes may not be referred to directly, hence this + document defines a scheme to implement such references. + +-A reference consist of the device object name followed by one or more +-hierarchical data extension [dsd-guide] keys. Specifically, the hierarchical +-data extension node which is referred to by the key shall lie directly under +-the parent object i.e. either the device object or another hierarchical data +-extension node. ++A reference to a _DSD hierarchical data node is a string consisting of a ++device object reference followed by a dot (".") and a relative path to a data ++node object. Do not use non-string references as this will produce a copy of ++the hierarchical data node, not a reference! ++ ++The hierarchical data extension node which is referred to shall be located ++directly under its parent object i.e. either the device object or another ++hierarchical data extension node [dsd-guide]. + + The keys in the hierarchical data nodes shall consist of the name of the node, + "@" character and the number of the node in hexadecimal notation (without pre- +@@ -33,11 +36,9 @@ extension key. + Example + ======= + +-In the ASL snippet below, the "reference" _DSD property contains a +-device object reference to DEV0 and under that device object, a +-hierarchical data extension key "node@1" referring to the NOD1 object +-and lastly, a hierarchical data extension key "anothernode" referring to +-the ANOD object which is also the final target node of the reference. ++In the ASL snippet below, the "reference" _DSD property contains a string ++reference to a hierarchical data extension node ANOD under DEV0 under the parent ++of DEV1. ANOD is also the final target node of the reference. + :: + + Device (DEV0) +@@ -76,10 +77,7 @@ the ANOD object which is also the final + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { +- Package () { +- "reference", Package () { +- ^DEV0, "node@1", "anothernode" +- } ++ Package () { "reference", "^DEV0.ANOD" } + }, + } + }) +--- a/Documentation/firmware-guide/acpi/dsd/graph.rst ++++ b/Documentation/firmware-guide/acpi/dsd/graph.rst +@@ -66,12 +66,9 @@ of that port shall be zero. Similarly, i + endpoint, the number of that endpoint shall be zero. + + The endpoint reference uses property extension with "remote-endpoint" property +-name followed by a reference in the same package. Such references consist of +-the remote device reference, the first package entry of the port data extension +-reference under the device and finally the first package entry of the endpoint +-data extension reference under the port. Individual references thus appear as:: ++name followed by a string reference in the same package. [data-node-ref]:: + +- Package() { device, "port@X", "endpoint@Y" } ++ "device.datanode" + + In the above example, "X" is the number of the port and "Y" is the number of + the endpoint. +@@ -109,7 +106,7 @@ A simple example of this is show below:: + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () { "reg", 0 }, +- Package () { "remote-endpoint", Package() { \_SB.PCI0.ISP, "port@4", "endpoint@0" } }, ++ Package () { "remote-endpoint", "\\_SB.PCI0.ISP.EP40" }, + } + }) + } +@@ -141,7 +138,7 @@ A simple example of this is show below:: + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () { "reg", 0 }, +- Package () { "remote-endpoint", Package () { \_SB.PCI0.I2C2.CAM0, "port@0", "endpoint@0" } }, ++ Package () { "remote-endpoint", "\\_SB.PCI0.I2C2.CAM0.EP00" }, + } + }) + } +--- a/Documentation/firmware-guide/acpi/dsd/leds.rst ++++ b/Documentation/firmware-guide/acpi/dsd/leds.rst +@@ -15,11 +15,6 @@ Referring to LEDs in Device tree is docu + "flash-leds" property documentation. In short, LEDs are directly referred to by + using phandles. + +-While Device tree allows referring to any node in the tree [devicetree], in +-ACPI references are limited to device nodes only [acpi]. For this reason using +-the same mechanism on ACPI is not possible. A mechanism to refer to non-device +-ACPI nodes is documented in [data-node-ref]. +- + ACPI allows (as does DT) using integer arguments after the reference. A + combination of the LED driver device reference and an integer argument, + referring to the "reg" property of the relevant LED, is used to identify +@@ -74,7 +69,7 @@ omitted. :: + Package () { + Package () { + "flash-leds", +- Package () { ^LED, "led@0", ^LED, "led@1" }, ++ Package () { "^LED.LED0", "^LED.LED1" }, + } + } + }) diff --git a/queue-6.14/pinctrl-armada-37xx-set-gpio-output-value-before-setting-direction.patch b/queue-6.14/pinctrl-armada-37xx-set-gpio-output-value-before-setting-direction.patch new file mode 100644 index 0000000000..4d4b64ccf2 --- /dev/null +++ b/queue-6.14/pinctrl-armada-37xx-set-gpio-output-value-before-setting-direction.patch @@ -0,0 +1,62 @@ +From e6ebd4942981f8ad37189bbb36a3c8495e21ef4c Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Wed, 14 May 2025 21:18:33 +0200 +Subject: pinctrl: armada-37xx: set GPIO output value before setting direction + +From: Gabor Juhos + +commit e6ebd4942981f8ad37189bbb36a3c8495e21ef4c upstream. + +Changing the direction before updating the output value in the +OUTPUT_VAL register may result in a glitch on the output line +if the previous value in the OUTPUT_VAL register is different +from the one we want to set. + +In order to avoid that, update the output value before changing +the direction. + +Cc: stable@vger.kernel.org +Fixes: 6702abb3bf23 ("pinctrl: armada-37xx: Fix direction_output() callback behavior") +Signed-off-by: Imre Kaloz +Reviewed-by: Andrew Lunn +Signed-off-by: Gabor Juhos +Link: https://lore.kernel.org/20250514-pinctrl-a37xx-fixes-v2-2-07e9ac1ab737@gmail.com +Signed-off-by: Linus Walleij +Signed-off-by: Greg Kroah-Hartman +--- + drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +--- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c ++++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c +@@ -417,23 +417,22 @@ static int armada_37xx_gpio_direction_ou + unsigned int offset, int value) + { + struct armada_37xx_pinctrl *info = gpiochip_get_data(chip); +- unsigned int val_offset = offset; +- unsigned int reg = OUTPUT_EN; ++ unsigned int en_offset = offset; ++ unsigned int reg = OUTPUT_VAL; + unsigned int mask, val, ret; + + armada_37xx_update_reg(®, &offset); + mask = BIT(offset); ++ val = value ? mask : 0; + +- ret = regmap_update_bits(info->regmap, reg, mask, mask); +- ++ ret = regmap_update_bits(info->regmap, reg, mask, val); + if (ret) + return ret; + +- reg = OUTPUT_VAL; +- armada_37xx_update_reg(®, &val_offset); ++ reg = OUTPUT_EN; ++ armada_37xx_update_reg(®, &en_offset); + +- val = value ? mask : 0; +- regmap_update_bits(info->regmap, reg, mask, val); ++ regmap_update_bits(info->regmap, reg, mask, mask); + + return 0; + } diff --git a/queue-6.14/pinctrl-armada-37xx-use-correct-output_val-register-for-gpios-31.patch b/queue-6.14/pinctrl-armada-37xx-use-correct-output_val-register-for-gpios-31.patch new file mode 100644 index 0000000000..5821532d80 --- /dev/null +++ b/queue-6.14/pinctrl-armada-37xx-use-correct-output_val-register-for-gpios-31.patch @@ -0,0 +1,48 @@ +From 947c93eb29c2a581c0b0b6d5f21af3c2b7ff6d25 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Wed, 14 May 2025 21:18:32 +0200 +Subject: pinctrl: armada-37xx: use correct OUTPUT_VAL register for GPIOs > 31 + +From: Gabor Juhos + +commit 947c93eb29c2a581c0b0b6d5f21af3c2b7ff6d25 upstream. + +The controller has two consecutive OUTPUT_VAL registers and both +holds output value for 32 GPIOs. Due to a missing adjustment, the +current code always uses the first register while setting the +output value whereas it should use the second one for GPIOs > 31. + +Add the missing armada_37xx_update_reg() call to adjust the register +according to the 'offset' parameter of the function to fix the issue. + +Cc: stable@vger.kernel.org +Fixes: 6702abb3bf23 ("pinctrl: armada-37xx: Fix direction_output() callback behavior") +Signed-off-by: Imre Kaloz +Reviewed-by: Andrew Lunn +Signed-off-by: Gabor Juhos +Link: https://lore.kernel.org/20250514-pinctrl-a37xx-fixes-v2-1-07e9ac1ab737@gmail.com +Signed-off-by: Linus Walleij +Signed-off-by: Greg Kroah-Hartman +--- + drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c ++++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c +@@ -417,6 +417,7 @@ static int armada_37xx_gpio_direction_ou + unsigned int offset, int value) + { + struct armada_37xx_pinctrl *info = gpiochip_get_data(chip); ++ unsigned int val_offset = offset; + unsigned int reg = OUTPUT_EN; + unsigned int mask, val, ret; + +@@ -429,6 +430,8 @@ static int armada_37xx_gpio_direction_ou + return ret; + + reg = OUTPUT_VAL; ++ armada_37xx_update_reg(®, &val_offset); ++ + val = value ? mask : 0; + regmap_update_bits(info->regmap, reg, mask, val); + diff --git a/queue-6.14/series b/queue-6.14/series index 6502ba340f..a3818dace4 100644 --- a/queue-6.14/series +++ b/queue-6.14/series @@ -1 +1,6 @@ tracing-fix-compilation-warning-on-arm32.patch +pinctrl-armada-37xx-use-correct-output_val-register-for-gpios-31.patch +pinctrl-armada-37xx-set-gpio-output-value-before-setting-direction.patch +clk-samsung-correct-clock-summary-for-hsi1-block.patch +acpi-cpufreq-fix-nominal_freq-units-to-khz-in-get_max_boost_ratio.patch +documentation-acpi-use-all-string-data-node-references.patch