Merge tag 'arm-fixes-6.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull ARM SoC fixes from Arnd Bergmann:
"There is a fairly large number of bug fixes for Qualcomm platforms,
most of them addressing issues with the devicetree files for the newly
added Snapdragon X1 based laptops to make them more reliable.

The Qualcomm driver changes address a few build-time issues as well as
runtime problems in the tzmem and scm firmware, the USB Type-C driver,
and the cmd-db and pmic_glink soc drivers.

The NXP i.MX usually gets a bunch of devicetree fixes that is
proportional to the number of supported machines. This includes both
warning fixes and correctness for the 64-bit i.MX9, i.MX8 and
layerscape platforms, as well as a single fix for a 32-bit i.MX6 based
board.

The other changes are the usual minor changes, including an update to
the MAINTAINERS file, an omap3 dts file and a SoC driver for mpfs
(risc-v)"

* tag 'arm-fixes-6.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (50 commits)
firmware: microchip: fix incorrect error report of programming:timeout on success
soc: qcom: pd-mapper: Fix singleton refcount
firmware: qcom: tzmem: disable sdm670 platform
soc: qcom: pmic_glink: Actually communicate when remote goes down
usb: typec: ucsi: Move unregister out of atomic section
soc: qcom: pmic_glink: Fix race during initialization
firmware: qcom: qseecom: remove unused functions
firmware: qcom: tzmem: fix virtual-to-physical address conversion
firmware: qcom: scm: Mark get_wq_ctx() as atomic call
arm64: dts: qcom: x1e80100: Fix Adreno SMMU global interrupt
arm64: dts: qcom: disable GPU on x1e80100 by default
arm64: dts: imx8mm-phygate: fix typo pinctrcl-0
arm64: dts: imx95: correct L3Cache cache-sets
arm64: dts: imx95: correct a55 power-domains
arm64: dts: freescale: imx93-tqma9352-mba93xxla: fix typo
arm64: dts: freescale: imx93-tqma9352: fix CMA alloc-ranges
ARM: dts: imx6dl-yapp43: Increase LED current to match the yapp4 HW design
arm64: dts: imx93: update default value for snps,clk-csr
arm64: dts: freescale: tqma9352: Fix watchdog reset
arm64: dts: imx8mp-beacon-kit: Fix Stereo Audio on WM8962
...

+366 -176
+2
.mailmap
··· 354 354 Kiran Gunda <quic_kgunda@quicinc.com> <kgunda@codeaurora.org> 355 355 Kirill Tkhai <tkhai@ya.ru> <ktkhai@virtuozzo.com> 356 356 Kishon Vijay Abraham I <kishon@kernel.org> <kishon@ti.com> 357 + Konrad Dybcio <konradybcio@kernel.org> <konrad.dybcio@linaro.org> 358 + Konrad Dybcio <konradybcio@kernel.org> <konrad.dybcio@somainline.org> 357 359 Konstantin Khlebnikov <koct9i@gmail.com> <khlebnikov@yandex-team.ru> 358 360 Konstantin Khlebnikov <koct9i@gmail.com> <k.khlebnikov@samsung.com> 359 361 Koushik <raghavendra.koushik@neterion.com>
+4 -5
MAINTAINERS
··· 2539 2539 S: Supported 2540 2540 W: http://www.linux4sam.org 2541 2541 T: git git://git.kernel.org/pub/scm/linux/kernel/git/at91/linux.git 2542 - F: arch/arm/boot/dts/microchip/at91* 2543 - F: arch/arm/boot/dts/microchip/sama* 2542 + F: arch/arm/boot/dts/microchip/ 2544 2543 F: arch/arm/include/debug/at91.S 2545 2544 F: arch/arm/mach-at91/ 2546 2545 F: drivers/memory/atmel* ··· 2748 2749 2749 2750 ARM/QUALCOMM SUPPORT 2750 2751 M: Bjorn Andersson <andersson@kernel.org> 2751 - M: Konrad Dybcio <konrad.dybcio@linaro.org> 2752 + M: Konrad Dybcio <konradybcio@kernel.org> 2752 2753 L: linux-arm-msm@vger.kernel.org 2753 2754 S: Maintained 2754 2755 T: git git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git ··· 7111 7112 DRM DRIVER for Qualcomm Adreno GPUs 7112 7113 M: Rob Clark <robdclark@gmail.com> 7113 7114 R: Sean Paul <sean@poorly.run> 7114 - R: Konrad Dybcio <konrad.dybcio@linaro.org> 7115 + R: Konrad Dybcio <konradybcio@kernel.org> 7115 7116 L: linux-arm-msm@vger.kernel.org 7116 7117 L: dri-devel@lists.freedesktop.org 7117 7118 L: freedreno@lists.freedesktop.org ··· 18799 18800 18800 18801 QUALCOMM CORE POWER REDUCTION (CPR) AVS DRIVER 18801 18802 M: Bjorn Andersson <andersson@kernel.org> 18802 - M: Konrad Dybcio <konrad.dybcio@linaro.org> 18803 + M: Konrad Dybcio <konradybcio@kernel.org> 18803 18804 L: linux-pm@vger.kernel.org 18804 18805 L: linux-arm-msm@vger.kernel.org 18805 18806 S: Maintained
+6 -6
arch/arm/boot/dts/nxp/imx/imx6dl-yapp43-common.dtsi
··· 274 274 275 275 led@0 { 276 276 chan-name = "R"; 277 - led-cur = /bits/ 8 <0x20>; 278 - max-cur = /bits/ 8 <0x60>; 277 + led-cur = /bits/ 8 <0x6e>; 278 + max-cur = /bits/ 8 <0xc8>; 279 279 reg = <0>; 280 280 color = <LED_COLOR_ID_RED>; 281 281 }; 282 282 283 283 led@1 { 284 284 chan-name = "G"; 285 - led-cur = /bits/ 8 <0x20>; 286 - max-cur = /bits/ 8 <0x60>; 285 + led-cur = /bits/ 8 <0xbe>; 286 + max-cur = /bits/ 8 <0xc8>; 287 287 reg = <1>; 288 288 color = <LED_COLOR_ID_GREEN>; 289 289 }; 290 290 291 291 led@2 { 292 292 chan-name = "B"; 293 - led-cur = /bits/ 8 <0x20>; 294 - max-cur = /bits/ 8 <0x60>; 293 + led-cur = /bits/ 8 <0xbe>; 294 + max-cur = /bits/ 8 <0xc8>; 295 295 reg = <2>; 296 296 color = <LED_COLOR_ID_BLUE>; 297 297 };
+1 -1
arch/arm/boot/dts/ti/omap/omap3-n900.dts
··· 781 781 782 782 mount-matrix = "-1", "0", "0", 783 783 "0", "1", "0", 784 - "0", "0", "1"; 784 + "0", "0", "-1"; 785 785 }; 786 786 787 787 cam1: camera@3e {
+1 -1
arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
··· 175 175 }; 176 176 }; 177 177 178 - core-cluster-thermal { 178 + cluster-thermal { 179 179 polling-delay-passive = <1000>; 180 180 polling-delay = <5000>; 181 181 thermal-sensors = <&tmu 1>;
+1 -1
arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi
··· 214 214 }; 215 215 }; 216 216 217 - core-cluster-thermal { 217 + cluster-thermal { 218 218 polling-delay-passive = <1000>; 219 219 polling-delay = <5000>; 220 220 thermal-sensors = <&tmu 3>;
+1 -1
arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi
··· 182 182 }; 183 183 }; 184 184 185 - core-cluster-thermal { 185 + cluster-thermal { 186 186 polling-delay-passive = <1000>; 187 187 polling-delay = <5000>; 188 188 thermal-sensors = <&tmu 3>;
+1 -1
arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi
··· 131 131 }; 132 132 133 133 thermal-zones { 134 - core-cluster-thermal { 134 + cluster-thermal { 135 135 polling-delay-passive = <1000>; 136 136 polling-delay = <5000>; 137 137 thermal-sensors = <&tmu 0>;
+4 -4
arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
··· 122 122 }; 123 123 }; 124 124 125 - core-cluster1-thermal { 125 + cluster1-thermal { 126 126 polling-delay-passive = <1000>; 127 127 polling-delay = <5000>; 128 128 thermal-sensors = <&tmu 4>; ··· 151 151 }; 152 152 }; 153 153 154 - core-cluster2-thermal { 154 + cluster2-thermal { 155 155 polling-delay-passive = <1000>; 156 156 polling-delay = <5000>; 157 157 thermal-sensors = <&tmu 5>; ··· 180 180 }; 181 181 }; 182 182 183 - core-cluster3-thermal { 183 + cluster3-thermal { 184 184 polling-delay-passive = <1000>; 185 185 polling-delay = <5000>; 186 186 thermal-sensors = <&tmu 6>; ··· 209 209 }; 210 210 }; 211 211 212 - core-cluster4-thermal { 212 + cluster4-thermal { 213 213 polling-delay-passive = <1000>; 214 214 polling-delay = <5000>; 215 215 thermal-sensors = <&tmu 7>;
+1 -1
arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi
··· 492 492 }; 493 493 }; 494 494 495 - ddr-cluster5-thermal { 495 + ddr-ctrl5-thermal { 496 496 polling-delay-passive = <1000>; 497 497 polling-delay = <5000>; 498 498 thermal-sensors = <&tmu 1>;
+1 -1
arch/arm64/boot/dts/freescale/imx8mm-phygate-tauri-l-rs232-rs232.dtso
··· 21 21 22 22 &gpio3 { 23 23 pinctrl-names = "default"; 24 - pinctrcl-0 = <&pinctrl_gpio3_hog>; 24 + pinctrl-0 = <&pinctrl_gpio3_hog>; 25 25 26 26 uart4_rs485_en { 27 27 gpio-hog;
+1 -1
arch/arm64/boot/dts/freescale/imx8mm-phygate-tauri-l-rs232-rs485.dtso
··· 22 22 23 23 &gpio3 { 24 24 pinctrl-names = "default"; 25 - pinctrcl-0 = <&pinctrl_gpio3_hog>; 25 + pinctrl-0 = <&pinctrl_gpio3_hog>; 26 26 27 27 uart4_rs485_en { 28 28 gpio-hog;
+5 -7
arch/arm64/boot/dts/freescale/imx8mp-beacon-kit.dts
··· 211 211 212 212 simple-audio-card,cpu { 213 213 sound-dai = <&sai3>; 214 + frame-master; 215 + bitclock-master; 214 216 }; 215 217 216 218 simple-audio-card,codec { 217 219 sound-dai = <&wm8962>; 218 - clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO1>; 219 - frame-master; 220 - bitclock-master; 221 220 }; 222 221 }; 223 222 }; ··· 506 507 &sai3 { 507 508 pinctrl-names = "default"; 508 509 pinctrl-0 = <&pinctrl_sai3>; 509 - assigned-clocks = <&clk IMX8MP_CLK_SAI3>, 510 - <&clk IMX8MP_AUDIO_PLL2> ; 511 - assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL2_OUT>; 512 - assigned-clock-rates = <12288000>, <361267200>; 510 + assigned-clocks = <&clk IMX8MP_CLK_SAI3>; 511 + assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>; 512 + assigned-clock-rates = <12288000>; 513 513 fsl,sai-mclk-direction-output; 514 514 status = "okay"; 515 515 };
+1 -1
arch/arm64/boot/dts/freescale/imx93-tqma9352-mba93xxla.dts
··· 499 499 pinctrl-0 = <&pinctrl_usdhc2_hs>, <&pinctrl_usdhc2_gpio>; 500 500 pinctrl-1 = <&pinctrl_usdhc2_uhs>, <&pinctrl_usdhc2_gpio>; 501 501 pinctrl-2 = <&pinctrl_usdhc2_uhs>, <&pinctrl_usdhc2_gpio>; 502 - cd-gpios = <&gpio3 00 GPIO_ACTIVE_LOW>; 502 + cd-gpios = <&gpio3 0 GPIO_ACTIVE_LOW>; 503 503 vmmc-supply = <&reg_usdhc2_vmmc>; 504 504 bus-width = <4>; 505 505 no-sdio;
+2 -1
arch/arm64/boot/dts/freescale/imx93-tqma9352.dtsi
··· 19 19 linux,cma { 20 20 compatible = "shared-dma-pool"; 21 21 reusable; 22 - alloc-ranges = <0 0x60000000 0 0x40000000>; 22 + alloc-ranges = <0 0x80000000 0 0x40000000>; 23 23 size = <0 0x10000000>; 24 24 linux,cma-default; 25 25 }; ··· 156 156 &wdog3 { 157 157 pinctrl-names = "default"; 158 158 pinctrl-0 = <&pinctrl_wdog>; 159 + fsl,ext-reset-output; 159 160 status = "okay"; 160 161 }; 161 162
+1 -1
arch/arm64/boot/dts/freescale/imx93.dtsi
··· 1105 1105 <&clk IMX93_CLK_SYS_PLL_PFD0_DIV2>; 1106 1106 assigned-clock-rates = <100000000>, <250000000>; 1107 1107 intf_mode = <&wakeupmix_gpr 0x28>; 1108 - snps,clk-csr = <0>; 1108 + snps,clk-csr = <6>; 1109 1109 nvmem-cells = <&eth_mac2>; 1110 1110 nvmem-cell-names = "mac-address"; 1111 1111 status = "disabled";
+7 -7
arch/arm64/boot/dts/freescale/imx95.dtsi
··· 27 27 reg = <0x0>; 28 28 enable-method = "psci"; 29 29 #cooling-cells = <2>; 30 - power-domains = <&scmi_devpd IMX95_PERF_A55>; 30 + power-domains = <&scmi_perf IMX95_PERF_A55>; 31 31 power-domain-names = "perf"; 32 32 i-cache-size = <32768>; 33 33 i-cache-line-size = <64>; ··· 44 44 reg = <0x100>; 45 45 enable-method = "psci"; 46 46 #cooling-cells = <2>; 47 - power-domains = <&scmi_devpd IMX95_PERF_A55>; 47 + power-domains = <&scmi_perf IMX95_PERF_A55>; 48 48 power-domain-names = "perf"; 49 49 i-cache-size = <32768>; 50 50 i-cache-line-size = <64>; ··· 61 61 reg = <0x200>; 62 62 enable-method = "psci"; 63 63 #cooling-cells = <2>; 64 - power-domains = <&scmi_devpd IMX95_PERF_A55>; 64 + power-domains = <&scmi_perf IMX95_PERF_A55>; 65 65 power-domain-names = "perf"; 66 66 i-cache-size = <32768>; 67 67 i-cache-line-size = <64>; ··· 78 78 reg = <0x300>; 79 79 enable-method = "psci"; 80 80 #cooling-cells = <2>; 81 - power-domains = <&scmi_devpd IMX95_PERF_A55>; 81 + power-domains = <&scmi_perf IMX95_PERF_A55>; 82 82 power-domain-names = "perf"; 83 83 i-cache-size = <32768>; 84 84 i-cache-line-size = <64>; ··· 93 93 device_type = "cpu"; 94 94 compatible = "arm,cortex-a55"; 95 95 reg = <0x400>; 96 - power-domains = <&scmi_devpd IMX95_PERF_A55>; 96 + power-domains = <&scmi_perf IMX95_PERF_A55>; 97 97 power-domain-names = "perf"; 98 98 enable-method = "psci"; 99 99 #cooling-cells = <2>; ··· 110 110 device_type = "cpu"; 111 111 compatible = "arm,cortex-a55"; 112 112 reg = <0x500>; 113 - power-domains = <&scmi_devpd IMX95_PERF_A55>; 113 + power-domains = <&scmi_perf IMX95_PERF_A55>; 114 114 power-domain-names = "perf"; 115 115 enable-method = "psci"; 116 116 #cooling-cells = <2>; ··· 187 187 compatible = "cache"; 188 188 cache-size = <524288>; 189 189 cache-line-size = <64>; 190 - cache-sets = <1024>; 190 + cache-sets = <512>; 191 191 cache-level = <3>; 192 192 cache-unified; 193 193 };
+2 -2
arch/arm64/boot/dts/qcom/ipq5332.dtsi
··· 320 320 reg = <0x08af8800 0x400>; 321 321 322 322 interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>, 323 - <GIC_SPI 53 IRQ_TYPE_EDGE_BOTH>, 324 - <GIC_SPI 52 IRQ_TYPE_EDGE_BOTH>; 323 + <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>, 324 + <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; 325 325 interrupt-names = "pwr_event", 326 326 "dp_hs_phy_irq", 327 327 "dm_hs_phy_irq";
+39 -3
arch/arm64/boot/dts/qcom/x1e80100-asus-vivobook-s15.dts
··· 278 278 vdd-l3-supply = <&vreg_s1f_0p7>; 279 279 vdd-s1-supply = <&vph_pwr>; 280 280 vdd-s2-supply = <&vph_pwr>; 281 + 282 + vreg_l3i_0p8: ldo3 { 283 + regulator-name = "vreg_l3i_0p8"; 284 + regulator-min-microvolt = <880000>; 285 + regulator-max-microvolt = <920000>; 286 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 287 + }; 281 288 }; 282 289 283 290 regulators-7 { ··· 430 423 }; 431 424 432 425 &pcie4 { 426 + perst-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>; 427 + wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>; 428 + 429 + pinctrl-0 = <&pcie4_default>; 430 + pinctrl-names = "default"; 431 + 433 432 status = "okay"; 434 433 }; 435 434 436 435 &pcie4_phy { 437 - vdda-phy-supply = <&vreg_l3j_0p8>; 436 + vdda-phy-supply = <&vreg_l3i_0p8>; 438 437 vdda-pll-supply = <&vreg_l3e_1p2>; 439 438 440 439 status = "okay"; ··· 530 517 bias-disable; 531 518 }; 532 519 533 - pcie6a_default: pcie2a-default-state { 520 + pcie4_default: pcie4-default-state { 521 + clkreq-n-pins { 522 + pins = "gpio147"; 523 + function = "pcie4_clk"; 524 + drive-strength = <2>; 525 + bias-pull-up; 526 + }; 527 + 528 + perst-n-pins { 529 + pins = "gpio146"; 530 + function = "gpio"; 531 + drive-strength = <2>; 532 + bias-disable; 533 + }; 534 + 535 + wake-n-pins { 536 + pins = "gpio148"; 537 + function = "gpio"; 538 + drive-strength = <2>; 539 + bias-pull-up; 540 + }; 541 + }; 542 + 543 + pcie6a_default: pcie6a-default-state { 534 544 clkreq-n-pins { 535 545 pins = "gpio153"; 536 546 function = "pcie6a_clk"; ··· 565 529 pins = "gpio152"; 566 530 function = "gpio"; 567 531 drive-strength = <2>; 568 - bias-pull-down; 532 + bias-disable; 569 533 }; 570 534 571 535 wake-n-pins {
+60 -10
arch/arm64/boot/dts/qcom/x1e80100-crd.dts
··· 268 268 pinctrl-0 = <&edp_reg_en>; 269 269 pinctrl-names = "default"; 270 270 271 - regulator-always-on; 272 271 regulator-boot-on; 273 272 }; 274 273 ··· 636 637 }; 637 638 }; 638 639 640 + &gpu { 641 + status = "okay"; 642 + 643 + zap-shader { 644 + firmware-name = "qcom/x1e80100/gen70500_zap.mbn"; 645 + }; 646 + }; 647 + 639 648 &i2c0 { 640 649 clock-frequency = <400000>; 641 650 ··· 731 724 732 725 aux-bus { 733 726 panel { 734 - compatible = "edp-panel"; 727 + compatible = "samsung,atna45af01", "samsung,atna33xc20"; 728 + enable-gpios = <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>; 735 729 power-supply = <&vreg_edp_3p3>; 730 + 731 + pinctrl-0 = <&edp_bl_en>; 732 + pinctrl-names = "default"; 736 733 737 734 port { 738 735 edp_panel_in: endpoint { ··· 767 756 }; 768 757 769 758 &pcie4 { 759 + perst-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>; 760 + wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>; 761 + 762 + pinctrl-0 = <&pcie4_default>; 763 + pinctrl-names = "default"; 764 + 770 765 status = "okay"; 771 766 }; 772 767 773 768 &pcie4_phy { 774 - vdda-phy-supply = <&vreg_l3j_0p8>; 769 + vdda-phy-supply = <&vreg_l3i_0p8>; 775 770 vdda-pll-supply = <&vreg_l3e_1p2>; 776 771 777 772 status = "okay"; ··· 800 783 vdda-pll-supply = <&vreg_l2j_1p2>; 801 784 802 785 status = "okay"; 786 + }; 787 + 788 + &pmc8380_3_gpios { 789 + edp_bl_en: edp-bl-en-state { 790 + pins = "gpio4"; 791 + function = "normal"; 792 + power-source = <1>; /* 1.8V */ 793 + input-disable; 794 + output-enable; 795 + }; 803 796 }; 804 797 805 798 &qupv3_0 { ··· 958 931 bias-disable; 959 932 }; 960 933 961 - pcie6a_default: pcie2a-default-state { 934 + pcie4_default: pcie4-default-state { 935 + clkreq-n-pins { 936 + pins = "gpio147"; 937 + function = "pcie4_clk"; 938 + drive-strength = <2>; 939 + bias-pull-up; 940 + }; 941 + 942 + perst-n-pins { 943 + pins = "gpio146"; 944 + function = "gpio"; 945 + drive-strength = <2>; 946 + bias-disable; 947 + }; 948 + 949 + wake-n-pins { 950 + pins = "gpio148"; 951 + function = "gpio"; 952 + drive-strength = <2>; 953 + bias-pull-up; 954 + }; 955 + }; 956 + 957 + pcie6a_default: pcie6a-default-state { 962 958 clkreq-n-pins { 963 959 pins = "gpio153"; 964 960 function = "pcie6a_clk"; ··· 993 943 pins = "gpio152"; 994 944 function = "gpio"; 995 945 drive-strength = <2>; 996 - bias-pull-down; 946 + bias-disable; 997 947 }; 998 948 999 949 wake-n-pins { 1000 - pins = "gpio154"; 1001 - function = "gpio"; 1002 - drive-strength = <2>; 1003 - bias-pull-up; 1004 - }; 950 + pins = "gpio154"; 951 + function = "gpio"; 952 + drive-strength = <2>; 953 + bias-pull-up; 954 + }; 1005 955 }; 1006 956 1007 957 tpad_default: tpad-default-state {
+46 -8
arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
··· 625 625 }; 626 626 627 627 &pcie4 { 628 + perst-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>; 629 + wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>; 630 + 631 + pinctrl-0 = <&pcie4_default>; 632 + pinctrl-names = "default"; 633 + 628 634 status = "okay"; 629 635 }; 630 636 631 637 &pcie4_phy { 632 - vdda-phy-supply = <&vreg_l3j_0p8>; 638 + vdda-phy-supply = <&vreg_l3i_0p8>; 633 639 vdda-pll-supply = <&vreg_l3e_1p2>; 634 640 635 641 status = "okay"; 642 + }; 643 + 644 + &pcie4_port0 { 645 + wifi@0 { 646 + compatible = "pci17cb,1107"; 647 + reg = <0x10000 0x0 0x0 0x0 0x0>; 648 + 649 + qcom,ath12k-calibration-variant = "LES790"; 650 + }; 636 651 }; 637 652 638 653 &pcie6a { ··· 797 782 bias-disable; 798 783 }; 799 784 800 - pcie6a_default: pcie2a-default-state { 785 + pcie4_default: pcie4-default-state { 786 + clkreq-n-pins { 787 + pins = "gpio147"; 788 + function = "pcie4_clk"; 789 + drive-strength = <2>; 790 + bias-pull-up; 791 + }; 792 + 793 + perst-n-pins { 794 + pins = "gpio146"; 795 + function = "gpio"; 796 + drive-strength = <2>; 797 + bias-disable; 798 + }; 799 + 800 + wake-n-pins { 801 + pins = "gpio148"; 802 + function = "gpio"; 803 + drive-strength = <2>; 804 + bias-pull-up; 805 + }; 806 + }; 807 + 808 + pcie6a_default: pcie6a-default-state { 801 809 clkreq-n-pins { 802 810 pins = "gpio153"; 803 811 function = "pcie6a_clk"; ··· 832 794 pins = "gpio152"; 833 795 function = "gpio"; 834 796 drive-strength = <2>; 835 - bias-pull-down; 797 + bias-disable; 836 798 }; 837 799 838 800 wake-n-pins { 839 - pins = "gpio154"; 840 - function = "gpio"; 841 - drive-strength = <2>; 842 - bias-pull-up; 843 - }; 801 + pins = "gpio154"; 802 + function = "gpio"; 803 + drive-strength = <2>; 804 + bias-pull-up; 805 + }; 844 806 }; 845 807 846 808 tpad_default: tpad-default-state {
+45 -8
arch/arm64/boot/dts/qcom/x1e80100-qcp.dts
··· 606 606 }; 607 607 }; 608 608 609 + &gpu { 610 + status = "okay"; 611 + 612 + zap-shader { 613 + firmware-name = "qcom/x1e80100/gen70500_zap.mbn"; 614 + }; 615 + }; 616 + 609 617 &lpass_tlmm { 610 618 spkr_01_sd_n_active: spkr-01-sd-n-active-state { 611 619 pins = "gpio12"; ··· 668 660 }; 669 661 670 662 &pcie4 { 663 + perst-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>; 664 + wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>; 665 + 666 + pinctrl-0 = <&pcie4_default>; 667 + pinctrl-names = "default"; 668 + 671 669 status = "okay"; 672 670 }; 673 671 674 672 &pcie4_phy { 675 - vdda-phy-supply = <&vreg_l3j_0p8>; 673 + vdda-phy-supply = <&vreg_l3i_0p8>; 676 674 vdda-pll-supply = <&vreg_l3e_1p2>; 677 675 678 676 status = "okay"; ··· 818 804 bias-disable; 819 805 }; 820 806 821 - pcie6a_default: pcie2a-default-state { 807 + pcie4_default: pcie4-default-state { 808 + clkreq-n-pins { 809 + pins = "gpio147"; 810 + function = "pcie4_clk"; 811 + drive-strength = <2>; 812 + bias-pull-up; 813 + }; 814 + 815 + perst-n-pins { 816 + pins = "gpio146"; 817 + function = "gpio"; 818 + drive-strength = <2>; 819 + bias-disable; 820 + }; 821 + 822 + wake-n-pins { 823 + pins = "gpio148"; 824 + function = "gpio"; 825 + drive-strength = <2>; 826 + bias-pull-up; 827 + }; 828 + }; 829 + 830 + pcie6a_default: pcie6a-default-state { 822 831 clkreq-n-pins { 823 832 pins = "gpio153"; 824 833 function = "pcie6a_clk"; ··· 853 816 pins = "gpio152"; 854 817 function = "gpio"; 855 818 drive-strength = <2>; 856 - bias-pull-down; 819 + bias-disable; 857 820 }; 858 821 859 822 wake-n-pins { 860 - pins = "gpio154"; 861 - function = "gpio"; 862 - drive-strength = <2>; 863 - bias-pull-up; 864 - }; 823 + pins = "gpio154"; 824 + function = "gpio"; 825 + drive-strength = <2>; 826 + bias-pull-up; 827 + }; 865 828 }; 866 829 867 830 wcd_default: wcd-reset-n-active-state {
+17 -4
arch/arm64/boot/dts/qcom/x1e80100.dtsi
··· 2901 2901 2902 2902 dma-coherent; 2903 2903 2904 - linux,pci-domain = <7>; 2904 + linux,pci-domain = <6>; 2905 2905 num-lanes = <2>; 2906 2906 2907 2907 interrupts = <GIC_SPI 773 IRQ_TYPE_LEVEL_HIGH>, ··· 2959 2959 "link_down"; 2960 2960 2961 2961 power-domains = <&gcc GCC_PCIE_6A_GDSC>; 2962 + required-opps = <&rpmhpd_opp_nom>; 2962 2963 2963 2964 phys = <&pcie6a_phy>; 2964 2965 phy-names = "pciephy"; ··· 3023 3022 3024 3023 dma-coherent; 3025 3024 3026 - linux,pci-domain = <5>; 3025 + linux,pci-domain = <4>; 3027 3026 num-lanes = <2>; 3028 3027 3029 3028 interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>, ··· 3081 3080 "link_down"; 3082 3081 3083 3082 power-domains = <&gcc GCC_PCIE_4_GDSC>; 3083 + required-opps = <&rpmhpd_opp_nom>; 3084 3084 3085 3085 phys = <&pcie4_phy>; 3086 3086 phy-names = "pciephy"; 3087 3087 3088 3088 status = "disabled"; 3089 + 3090 + pcie4_port0: pcie@0 { 3091 + device_type = "pci"; 3092 + reg = <0x0 0x0 0x0 0x0 0x0>; 3093 + bus-range = <0x01 0xff>; 3094 + 3095 + #address-cells = <3>; 3096 + #size-cells = <2>; 3097 + ranges; 3098 + }; 3089 3099 }; 3090 3100 3091 3101 pcie4_phy: phy@1c0e000 { ··· 3167 3155 interconnects = <&gem_noc MASTER_GFX3D 0 &mc_virt SLAVE_EBI1 0>; 3168 3156 interconnect-names = "gfx-mem"; 3169 3157 3158 + status = "disabled"; 3159 + 3170 3160 zap-shader { 3171 3161 memory-region = <&gpu_microcode_mem>; 3172 - firmware-name = "qcom/gen70500_zap.mbn"; 3173 3162 }; 3174 3163 3175 3164 gpu_opp_table: opp-table { ··· 3301 3288 reg = <0x0 0x03da0000 0x0 0x40000>; 3302 3289 #iommu-cells = <2>; 3303 3290 #global-interrupts = <1>; 3304 - interrupts = <GIC_SPI 673 IRQ_TYPE_LEVEL_HIGH>, 3291 + interrupts = <GIC_SPI 674 IRQ_TYPE_LEVEL_HIGH>, 3305 3292 <GIC_SPI 678 IRQ_TYPE_LEVEL_HIGH>, 3306 3293 <GIC_SPI 679 IRQ_TYPE_LEVEL_HIGH>, 3307 3294 <GIC_SPI 680 IRQ_TYPE_LEVEL_HIGH>,
+1
arch/arm64/configs/defconfig
··· 887 887 CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m 888 888 CONFIG_DRM_PANEL_NOVATEK_NT36672E=m 889 889 CONFIG_DRM_PANEL_RAYDIUM_RM67191=m 890 + CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20=m 890 891 CONFIG_DRM_PANEL_SITRONIX_ST7703=m 891 892 CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA=m 892 893 CONFIG_DRM_PANEL_VISIONOX_VTDR6130=m
+1 -1
drivers/firmware/microchip/mpfs-auto-update.c
··· 166 166 */ 167 167 ret = wait_for_completion_timeout(&priv->programming_complete, 168 168 msecs_to_jiffies(AUTO_UPDATE_TIMEOUT_MS)); 169 - if (ret) 169 + if (!ret) 170 170 return FW_UPLOAD_ERR_TIMEOUT; 171 171 172 172 return FW_UPLOAD_ERR_NONE;
+1 -1
drivers/firmware/qcom/qcom_scm-smc.c
··· 73 73 struct arm_smccc_res get_wq_res; 74 74 struct arm_smccc_args get_wq_ctx = {0}; 75 75 76 - get_wq_ctx.args[0] = ARM_SMCCC_CALL_VAL(ARM_SMCCC_STD_CALL, 76 + get_wq_ctx.args[0] = ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, 77 77 ARM_SMCCC_SMC_64, ARM_SMCCC_OWNER_SIP, 78 78 SCM_SMC_FNID(QCOM_SCM_SVC_WAITQ, QCOM_SCM_WAITQ_GET_WQ_CTX)); 79 79
+22 -11
drivers/firmware/qcom/qcom_tzmem.c
··· 40 40 }; 41 41 42 42 struct qcom_tzmem_chunk { 43 - phys_addr_t paddr; 44 43 size_t size; 45 44 struct qcom_tzmem_pool *owner; 46 45 }; ··· 77 78 /* List of machines that are known to not support SHM bridge correctly. */ 78 79 static const char *const qcom_tzmem_blacklist[] = { 79 80 "qcom,sc8180x", 81 + "qcom,sdm670", /* failure in GPU firmware loading */ 80 82 "qcom,sdm845", /* reset in rmtfs memory assignment */ 81 83 "qcom,sm8150", /* reset in rmtfs memory assignment */ 82 84 NULL ··· 385 385 return NULL; 386 386 } 387 387 388 - chunk->paddr = gen_pool_virt_to_phys(pool->genpool, vaddr); 389 388 chunk->size = size; 390 389 chunk->owner = pool; 391 390 ··· 430 431 EXPORT_SYMBOL_GPL(qcom_tzmem_free); 431 432 432 433 /** 433 - * qcom_tzmem_to_phys() - Map the virtual address of a TZ buffer to physical. 434 - * @vaddr: Virtual address of the buffer allocated from a TZ memory pool. 434 + * qcom_tzmem_to_phys() - Map the virtual address of TZ memory to physical. 435 + * @vaddr: Virtual address of memory allocated from a TZ memory pool. 435 436 * 436 - * Can be used in any context. The address must have been returned by a call 437 - * to qcom_tzmem_alloc(). 437 + * Can be used in any context. The address must point to memory allocated 438 + * using qcom_tzmem_alloc(). 438 439 * 439 - * Returns: Physical address of the buffer. 440 + * Returns: 441 + * Physical address mapped from the virtual or 0 if the mapping failed. 440 442 */ 441 443 phys_addr_t qcom_tzmem_to_phys(void *vaddr) 442 444 { 443 445 struct qcom_tzmem_chunk *chunk; 446 + struct radix_tree_iter iter; 447 + void __rcu **slot; 448 + phys_addr_t ret; 444 449 445 450 guard(spinlock_irqsave)(&qcom_tzmem_chunks_lock); 446 451 447 - chunk = radix_tree_lookup(&qcom_tzmem_chunks, (unsigned long)vaddr); 448 - if (!chunk) 449 - return 0; 452 + radix_tree_for_each_slot(slot, &qcom_tzmem_chunks, &iter, 0) { 453 + chunk = radix_tree_deref_slot_protected(slot, 454 + &qcom_tzmem_chunks_lock); 450 455 451 - return chunk->paddr; 456 + ret = gen_pool_virt_to_phys(chunk->owner->genpool, 457 + (unsigned long)vaddr); 458 + if (ret == -1) 459 + continue; 460 + 461 + return ret; 462 + } 463 + 464 + return 0; 452 465 } 453 466 EXPORT_SYMBOL_GPL(qcom_tzmem_to_phys); 454 467
+10 -6
drivers/power/supply/qcom_battmgr.c
··· 1387 1387 "failed to register wireless charing power supply\n"); 1388 1388 } 1389 1389 1390 - battmgr->client = devm_pmic_glink_register_client(dev, 1391 - PMIC_GLINK_OWNER_BATTMGR, 1392 - qcom_battmgr_callback, 1393 - qcom_battmgr_pdr_notify, 1394 - battmgr); 1395 - return PTR_ERR_OR_ZERO(battmgr->client); 1390 + battmgr->client = devm_pmic_glink_client_alloc(dev, PMIC_GLINK_OWNER_BATTMGR, 1391 + qcom_battmgr_callback, 1392 + qcom_battmgr_pdr_notify, 1393 + battmgr); 1394 + if (IS_ERR(battmgr->client)) 1395 + return PTR_ERR(battmgr->client); 1396 + 1397 + pmic_glink_client_register(battmgr->client); 1398 + 1399 + return 0; 1396 1400 } 1397 1401 1398 1402 static const struct auxiliary_device_id qcom_battmgr_id_table[] = {
+1 -1
drivers/soc/qcom/Kconfig
··· 77 77 select QCOM_QMI_HELPERS 78 78 select QCOM_PDR_MSG 79 79 select AUXILIARY_BUS 80 - depends on NET && QRTR 80 + depends on NET && QRTR && (ARCH_QCOM || COMPILE_TEST) 81 81 default QCOM_RPROC_COMMON 82 82 help 83 83 The Protection Domain Mapper maps registered services to the domains
+1 -1
drivers/soc/qcom/cmd-db.c
··· 349 349 return -EINVAL; 350 350 } 351 351 352 - cmd_db_header = memremap(rmem->base, rmem->size, MEMREMAP_WB); 352 + cmd_db_header = memremap(rmem->base, rmem->size, MEMREMAP_WC); 353 353 if (!cmd_db_header) { 354 354 ret = -ENOMEM; 355 355 cmd_db_header = NULL;
+28 -12
drivers/soc/qcom/pmic_glink.c
··· 66 66 spin_unlock_irqrestore(&pg->client_lock, flags); 67 67 } 68 68 69 - struct pmic_glink_client *devm_pmic_glink_register_client(struct device *dev, 70 - unsigned int id, 71 - void (*cb)(const void *, size_t, void *), 72 - void (*pdr)(void *, int), 73 - void *priv) 69 + struct pmic_glink_client *devm_pmic_glink_client_alloc(struct device *dev, 70 + unsigned int id, 71 + void (*cb)(const void *, size_t, void *), 72 + void (*pdr)(void *, int), 73 + void *priv) 74 74 { 75 75 struct pmic_glink_client *client; 76 76 struct pmic_glink *pg = dev_get_drvdata(dev->parent); 77 - unsigned long flags; 78 77 79 78 client = devres_alloc(_devm_pmic_glink_release_client, sizeof(*client), GFP_KERNEL); 80 79 if (!client) ··· 84 85 client->cb = cb; 85 86 client->pdr_notify = pdr; 86 87 client->priv = priv; 88 + INIT_LIST_HEAD(&client->node); 89 + 90 + devres_add(dev, client); 91 + 92 + return client; 93 + } 94 + EXPORT_SYMBOL_GPL(devm_pmic_glink_client_alloc); 95 + 96 + void pmic_glink_client_register(struct pmic_glink_client *client) 97 + { 98 + struct pmic_glink *pg = client->pg; 99 + unsigned long flags; 87 100 88 101 mutex_lock(&pg->state_lock); 89 102 spin_lock_irqsave(&pg->client_lock, flags); ··· 106 95 spin_unlock_irqrestore(&pg->client_lock, flags); 107 96 mutex_unlock(&pg->state_lock); 108 97 109 - devres_add(dev, client); 110 - 111 - return client; 112 98 } 113 - EXPORT_SYMBOL_GPL(devm_pmic_glink_register_client); 99 + EXPORT_SYMBOL_GPL(pmic_glink_client_register); 114 100 115 101 int pmic_glink_send(struct pmic_glink_client *client, void *data, size_t len) 116 102 { 117 103 struct pmic_glink *pg = client->pg; 104 + int ret; 118 105 119 - return rpmsg_send(pg->ept, data, len); 106 + mutex_lock(&pg->state_lock); 107 + if (!pg->ept) 108 + ret = -ECONNRESET; 109 + else 110 + ret = rpmsg_send(pg->ept, data, len); 111 + mutex_unlock(&pg->state_lock); 112 + 113 + return ret; 120 114 } 121 115 EXPORT_SYMBOL_GPL(pmic_glink_send); 122 116 ··· 191 175 if (pg->pdr_state == SERVREG_SERVICE_STATE_UP && pg->ept) 192 176 new_state = SERVREG_SERVICE_STATE_UP; 193 177 } else { 194 - if (pg->pdr_state == SERVREG_SERVICE_STATE_UP && pg->ept) 178 + if (pg->pdr_state == SERVREG_SERVICE_STATE_DOWN || !pg->ept) 195 179 new_state = SERVREG_SERVICE_STATE_DOWN; 196 180 } 197 181
+3 -1
drivers/soc/qcom/qcom_pd_mapper.c
··· 517 517 NULL, 518 518 }; 519 519 520 - static const struct of_device_id qcom_pdm_domains[] = { 520 + static const struct of_device_id qcom_pdm_domains[] __maybe_unused = { 521 521 { .compatible = "qcom,apq8064", .data = NULL, }, 522 522 { .compatible = "qcom,apq8074", .data = NULL, }, 523 523 { .compatible = "qcom,apq8084", .data = NULL, }, ··· 635 635 ret = PTR_ERR(data); 636 636 else 637 637 __qcom_pdm_data = data; 638 + } else { 639 + refcount_inc(&__qcom_pdm_data->refcnt); 638 640 } 639 641 640 642 auxiliary_set_drvdata(auxdev, __qcom_pdm_data);
+32 -11
drivers/usb/typec/ucsi/ucsi_glink.c
··· 68 68 69 69 struct work_struct notify_work; 70 70 struct work_struct register_work; 71 + spinlock_t state_lock; 72 + bool ucsi_registered; 73 + bool pd_running; 71 74 72 75 u8 read_buf[UCSI_BUF_SIZE]; 73 76 }; ··· 247 244 static void pmic_glink_ucsi_register(struct work_struct *work) 248 245 { 249 246 struct pmic_glink_ucsi *ucsi = container_of(work, struct pmic_glink_ucsi, register_work); 247 + unsigned long flags; 248 + bool pd_running; 250 249 251 - ucsi_register(ucsi->ucsi); 250 + spin_lock_irqsave(&ucsi->state_lock, flags); 251 + pd_running = ucsi->pd_running; 252 + spin_unlock_irqrestore(&ucsi->state_lock, flags); 253 + 254 + if (!ucsi->ucsi_registered && pd_running) { 255 + ucsi_register(ucsi->ucsi); 256 + ucsi->ucsi_registered = true; 257 + } else if (ucsi->ucsi_registered && !pd_running) { 258 + ucsi_unregister(ucsi->ucsi); 259 + ucsi->ucsi_registered = false; 260 + } 252 261 } 253 262 254 263 static void pmic_glink_ucsi_callback(const void *data, size_t len, void *priv) ··· 284 269 static void pmic_glink_ucsi_pdr_notify(void *priv, int state) 285 270 { 286 271 struct pmic_glink_ucsi *ucsi = priv; 272 + unsigned long flags; 287 273 288 - if (state == SERVREG_SERVICE_STATE_UP) 289 - schedule_work(&ucsi->register_work); 290 - else if (state == SERVREG_SERVICE_STATE_DOWN) 291 - ucsi_unregister(ucsi->ucsi); 274 + spin_lock_irqsave(&ucsi->state_lock, flags); 275 + ucsi->pd_running = (state == SERVREG_SERVICE_STATE_UP); 276 + spin_unlock_irqrestore(&ucsi->state_lock, flags); 277 + schedule_work(&ucsi->register_work); 292 278 } 293 279 294 280 static void pmic_glink_ucsi_destroy(void *data) ··· 336 320 INIT_WORK(&ucsi->register_work, pmic_glink_ucsi_register); 337 321 init_completion(&ucsi->read_ack); 338 322 init_completion(&ucsi->write_ack); 323 + spin_lock_init(&ucsi->state_lock); 339 324 mutex_init(&ucsi->lock); 340 325 341 326 ucsi->ucsi = ucsi_create(dev, &pmic_glink_ucsi_ops); ··· 384 367 ucsi->port_orientation[port] = desc; 385 368 } 386 369 387 - ucsi->client = devm_pmic_glink_register_client(dev, 388 - PMIC_GLINK_OWNER_USBC, 389 - pmic_glink_ucsi_callback, 390 - pmic_glink_ucsi_pdr_notify, 391 - ucsi); 392 - return PTR_ERR_OR_ZERO(ucsi->client); 370 + ucsi->client = devm_pmic_glink_client_alloc(dev, PMIC_GLINK_OWNER_USBC, 371 + pmic_glink_ucsi_callback, 372 + pmic_glink_ucsi_pdr_notify, 373 + ucsi); 374 + if (IS_ERR(ucsi->client)) 375 + return PTR_ERR(ucsi->client); 376 + 377 + pmic_glink_client_register(ucsi->client); 378 + 379 + return 0; 393 380 } 394 381 395 382 static void pmic_glink_ucsi_remove(struct auxiliary_device *adev)
-45
include/linux/firmware/qcom/qcom_qseecom.h
··· 26 26 }; 27 27 28 28 /** 29 - * qseecom_scm_dev() - Get the SCM device associated with the QSEECOM client. 30 - * @client: The QSEECOM client device. 31 - * 32 - * Returns the SCM device under which the provided QSEECOM client device 33 - * operates. This function is intended to be used for DMA allocations. 34 - */ 35 - static inline struct device *qseecom_scm_dev(struct qseecom_client *client) 36 - { 37 - return client->aux_dev.dev.parent->parent; 38 - } 39 - 40 - /** 41 - * qseecom_dma_alloc() - Allocate DMA memory for a QSEECOM client. 42 - * @client: The QSEECOM client to allocate the memory for. 43 - * @size: The number of bytes to allocate. 44 - * @dma_handle: Pointer to where the DMA address should be stored. 45 - * @gfp: Allocation flags. 46 - * 47 - * Wrapper function for dma_alloc_coherent(), allocating DMA memory usable for 48 - * TZ/QSEECOM communication. Refer to dma_alloc_coherent() for details. 49 - */ 50 - static inline void *qseecom_dma_alloc(struct qseecom_client *client, size_t size, 51 - dma_addr_t *dma_handle, gfp_t gfp) 52 - { 53 - return dma_alloc_coherent(qseecom_scm_dev(client), size, dma_handle, gfp); 54 - } 55 - 56 - /** 57 - * dma_free_coherent() - Free QSEECOM DMA memory. 58 - * @client: The QSEECOM client for which the memory has been allocated. 59 - * @size: The number of bytes allocated. 60 - * @cpu_addr: Virtual memory address to free. 61 - * @dma_handle: DMA memory address to free. 62 - * 63 - * Wrapper function for dma_free_coherent(), freeing memory previously 64 - * allocated with qseecom_dma_alloc(). Refer to dma_free_coherent() for 65 - * details. 66 - */ 67 - static inline void qseecom_dma_free(struct qseecom_client *client, size_t size, 68 - void *cpu_addr, dma_addr_t dma_handle) 69 - { 70 - return dma_free_coherent(qseecom_scm_dev(client), size, cpu_addr, dma_handle); 71 - } 72 - 73 - /** 74 29 * qcom_qseecom_app_send() - Send to and receive data from a given QSEE app. 75 30 * @client: The QSEECOM client associated with the target app. 76 31 * @req: Request buffer sent to the app (must be TZ memory).
+6 -5
include/linux/soc/qcom/pmic_glink.h
··· 23 23 24 24 int pmic_glink_send(struct pmic_glink_client *client, void *data, size_t len); 25 25 26 - struct pmic_glink_client *devm_pmic_glink_register_client(struct device *dev, 27 - unsigned int id, 28 - void (*cb)(const void *, size_t, void *), 29 - void (*pdr)(void *, int), 30 - void *priv); 26 + struct pmic_glink_client *devm_pmic_glink_client_alloc(struct device *dev, 27 + unsigned int id, 28 + void (*cb)(const void *, size_t, void *), 29 + void (*pdr)(void *, int), 30 + void *priv); 31 + void pmic_glink_client_register(struct pmic_glink_client *client); 31 32 32 33 #endif