History

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

Pull ARM SoC fixes from Arnd Bergmann: "There are a lot of minor DT fixes for Mediatek, Rockchip, Qualcomm and Microchip and NXP, addressing both build-time warnings and bugs found during runtime testing. Most of these changes are machine specific fixups, but there are a few notable regressions that affect an entire SoC: - The Qualcomm MSI support that was improved for 6.9 ended up being wrong on some chips and now gets fixed. - The i.MX8MP camera interface broke due to a typo and gets updated again. The main driver fix is also for Qualcomm platforms, rewriting an interface in the QSEECOM firmware support that could lead to crashing the kernel from a trusted application. The only other code changes are minor fixes for Mediatek SoC drivers" * tag 'soc-fixes-6.9-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (50 commits) ARM: dts: imx6ull-tarragon: fix USB over-current polarity soc: mediatek: mtk-socinfo: depends on CONFIG_SOC_BUS soc: mediatek: mtk-svs: Append "-thermal" to thermal zone names arm64: dts: imx8mp: Fix assigned-clocks for second CSI2 ARM: dts: microchip: at91-sama7g54_curiosity: Replace regulator-suspend-voltage with the valid property ARM: dts: microchip: at91-sama7g5ek: Replace regulator-suspend-voltage with the valid property arm64: dts: rockchip: Fix USB interface compatible string on kobol-helios64 arm64: dts: qcom: sc8180x: Fix ss_phy_irq for secondary USB controller arm64: dts: qcom: sm8650: Fix the msi-map entries arm64: dts: qcom: sm8550: Fix the msi-map entries arm64: dts: qcom: sm8450: Fix the msi-map entries arm64: dts: qcom: sc8280xp: add missing PCIe minimum OPP arm64: dts: qcom: x1e80100: Fix the compatible for cluster idle states arm64: dts: qcom: Fix type of "wdog" IRQs for remoteprocs arm64: dts: rockchip: regulator for sd needs to be always on for BPI-R2Pro dt-bindings: rockchip: grf: Add missing type to 'pcie-phy' node arm64: dts: rockchip: drop redundant disable-gpios in Lubancat 2 arm64: dts: rockchip: drop redundant disable-gpios in Lubancat 1 arm64: dts: rockchip: drop redundant pcie-reset-suspend in Scarlet Dumo arm64: dts: rockchip: mark system power controller and fix typo on orangepi-5-plus ...

Linus Torvalds committed 2 years ago

Commit 5eb45732 parents e6ebf01 9f26bc744 files · +331 −193Browse files

Unified · Split

44 files
  1. Documentation/devicetree/bindings/soc/rockchip/grf.yaml +1 −0
  2. arch/arm/boot/dts/microchip/at91-sama7g54_curiosity.dts +4 −4
  3. arch/arm/boot/dts/microchip/at91-sama7g5ek.dts +4 −4
  4. arch/arm/boot/dts/nxp/imx/imx6ull-tarragon-common.dtsi +1 −0
  5. arch/arm64/boot/dts/freescale/imx8mp.dtsi +1 −1
  6. arch/arm64/boot/dts/mediatek/mt2712-evb.dts +4 −4
  7. arch/arm64/boot/dts/mediatek/mt2712e.dtsi +2 −1
  8. arch/arm64/boot/dts/mediatek/mt7622.dtsi +14 −20
  9. arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts +3 −3
  10. arch/arm64/boot/dts/mediatek/mt7986a.dtsi +2 −6
  11. arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi +0 −1
  12. arch/arm64/boot/dts/mediatek/mt8183.dtsi +1 −0
  13. arch/arm64/boot/dts/mediatek/mt8186-corsola.dtsi +1 −1
  14. arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi +3 −3
  15. arch/arm64/boot/dts/mediatek/mt8192.dtsi +1 −0
  16. arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi +34 −2
  17. arch/arm64/boot/dts/mediatek/mt8195.dtsi +5 −0
  18. arch/arm64/boot/dts/qcom/sc7280.dtsi +2 −2
  19. arch/arm64/boot/dts/qcom/sc8180x.dtsi +1 −1
  20. arch/arm64/boot/dts/qcom/sc8280xp.dtsi +8 −3
  21. arch/arm64/boot/dts/qcom/sm6350.dtsi +2 −2
  22. arch/arm64/boot/dts/qcom/sm6375.dtsi +1 −1
  23. arch/arm64/boot/dts/qcom/sm8250.dtsi +3 −3
  24. arch/arm64/boot/dts/qcom/sm8450.dtsi +4 −12
  25. arch/arm64/boot/dts/qcom/sm8550.dtsi +4 −6
  26. arch/arm64/boot/dts/qcom/sm8650.dtsi +4 −6
  27. arch/arm64/boot/dts/qcom/x1e80100.dtsi +2 −2
  28. arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi +1 −2
  29. arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts +1 −1
  30. arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts +0 −1
  31. arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts +2 −0
  32. arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi +47 −6
  33. arch/arm64/boot/dts/rockchip/rk3566-lubancat-1.dts +0 −1
  34. arch/arm64/boot/dts/rockchip/rk3568-bpi-r2-pro.dts +4 −2
  35. arch/arm64/boot/dts/rockchip/rk3568-lubancat-2.dts +0 −1
  36. arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5.dtsi +2 −2
  37. arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts +2 −1
  38. arch/arm64/boot/dts/rockchip/rk3588-quartzpro64.dts +1 −0
  39. drivers/firmware/qcom/qcom_qseecom_uefisecapp.c +91 −46
  40. drivers/firmware/qcom/qcom_scm.c +6 −31
  41. drivers/soc/mediatek/Kconfig +1 −0
  42. drivers/soc/mediatek/mtk-svs.c +5 −2
  43. include/linux/firmware/qcom/qcom_qseecom.h +51 −4
  44. include/linux/firmware/qcom/qcom_scm.h +5 −5
Documentation/devicetree/bindings/soc/rockchip/grf.yaml+1−0
@@ -171,6 +171,7 @@ allOf: · 170 unmodified lines
171171 unevaluatedProperties: false
172172
173173 pcie-phy:
174+ type: object
174175 description:
175176 Documentation/devicetree/bindings/phy/rockchip-pcie-phy.txt
176177
arch/arm/boot/dts/microchip/at91-sama7g54_curiosity.dts+4−4
@@ -242,7 +242,7 @@ · 241 unmodified lines
242242
243243 regulator-state-standby {
244244 regulator-on-in-suspend;
245− regulator-suspend-voltage = <1150000>;
245+ regulator-suspend-microvolt = <1150000>;
246246 regulator-mode = <4>;
247247 };
248248
@@ -263,7 +263,7 @@ · 14 unmodified lines
263263
264264 regulator-state-standby {
265265 regulator-on-in-suspend;
266− regulator-suspend-voltage = <1050000>;
266+ regulator-suspend-microvolt = <1050000>;
267267 regulator-mode = <4>;
268268 };
269269
@@ -280,7 +280,7 @@ · 10 unmodified lines
280280 regulator-always-on;
281281
282282 regulator-state-standby {
283− regulator-suspend-voltage = <1800000>;
283+ regulator-suspend-microvolt = <1800000>;
284284 regulator-on-in-suspend;
285285 };
286286
@@ -296,7 +296,7 @@ · 9 unmodified lines
296296 regulator-always-on;
297297
298298 regulator-state-standby {
299− regulator-suspend-voltage = <3300000>;
299+ regulator-suspend-microvolt = <3300000>;
300300 regulator-on-in-suspend;
301301 };
302302
arch/arm/boot/dts/microchip/at91-sama7g5ek.dts+4−4
@@ -293,7 +293,7 @@ · 292 unmodified lines
293293
294294 regulator-state-standby {
295295 regulator-on-in-suspend;
296− regulator-suspend-voltage = <1150000>;
296+ regulator-suspend-microvolt = <1150000>;
297297 regulator-mode = <4>;
298298 };
299299
@@ -314,7 +314,7 @@ · 14 unmodified lines
314314
315315 regulator-state-standby {
316316 regulator-on-in-suspend;
317− regulator-suspend-voltage = <1050000>;
317+ regulator-suspend-microvolt = <1050000>;
318318 regulator-mode = <4>;
319319 };
320320
@@ -331,7 +331,7 @@ · 10 unmodified lines
331331 regulator-always-on;
332332
333333 regulator-state-standby {
334− regulator-suspend-voltage = <1800000>;
334+ regulator-suspend-microvolt = <1800000>;
335335 regulator-on-in-suspend;
336336 };
337337
@@ -346,7 +346,7 @@ · 8 unmodified lines
346346 regulator-max-microvolt = <3700000>;
347347
348348 regulator-state-standby {
349− regulator-suspend-voltage = <1800000>;
349+ regulator-suspend-microvolt = <1800000>;
350350 regulator-on-in-suspend;
351351 };
352352
arch/arm/boot/dts/nxp/imx/imx6ull-tarragon-common.dtsi+1−0
@@ -805,6 +805,7 @@ · 804 unmodified lines
805805 &pinctrl_usb_pwr>;
806806 dr_mode = "host";
807807 power-active-high;
808+ over-current-active-low;
808809 disable-over-current;
809810 status = "okay";
810811 };
arch/arm64/boot/dts/freescale/imx8mp.dtsi+1−1
@@ -1672,7 +1672,7 @@ · 1671 unmodified lines
16721672 <&clk IMX8MP_CLK_MEDIA_MIPI_PHY1_REF_ROOT>,
16731673 <&clk IMX8MP_CLK_MEDIA_AXI_ROOT>;
16741674 clock-names = "pclk", "wrap", "phy", "axi";
1675− assigned-clocks = <&clk IMX8MP_CLK_MEDIA_CAM1_PIX>,
1675+ assigned-clocks = <&clk IMX8MP_CLK_MEDIA_CAM2_PIX>,
16761676 <&clk IMX8MP_CLK_MEDIA_MIPI_PHY1_REF>;
16771677 assigned-clock-parents = <&clk IMX8MP_SYS_PLL2_1000M>,
16781678 <&clk IMX8MP_CLK_24M>;
arch/arm64/boot/dts/mediatek/mt2712-evb.dts+4−4
@@ -129,7 +129,7 @@ · 128 unmodified lines
129129 };
130130
131131 &pio {
132− eth_default: eth_default {
132+ eth_default: eth-default-pins {
133133 tx_pins {
134134 pinmux = <MT2712_PIN_71_GBE_TXD3__FUNC_GBE_TXD3>,
135135 <MT2712_PIN_72_GBE_TXD2__FUNC_GBE_TXD2>,
@@ -156,7 +156,7 @@ · 20 unmodified lines
156156 };
157157 };
158158
159− eth_sleep: eth_sleep {
159+ eth_sleep: eth-sleep-pins {
160160 tx_pins {
161161 pinmux = <MT2712_PIN_71_GBE_TXD3__FUNC_GPIO71>,
162162 <MT2712_PIN_72_GBE_TXD2__FUNC_GPIO72>,
@@ -182,14 +182,14 @@ · 19 unmodified lines
182182 };
183183 };
184184
185− usb0_id_pins_float: usb0_iddig {
185+ usb0_id_pins_float: usb0-iddig-pins {
186186 pins_iddig {
187187 pinmux = <MT2712_PIN_12_IDDIG_P0__FUNC_IDDIG_A>;
188188 bias-pull-up;
189189 };
190190 };
191191
192− usb1_id_pins_float: usb1_iddig {
192+ usb1_id_pins_float: usb1-iddig-pins {
193193 pins_iddig {
194194 pinmux = <MT2712_PIN_14_IDDIG_P1__FUNC_IDDIG_B>;
195195 bias-pull-up;
arch/arm64/boot/dts/mediatek/mt2712e.dtsi+2−1
@@ -249,10 +249,11 @@ · 248 unmodified lines
249249 #clock-cells = <1>;
250250 };
251251
252− infracfg: syscon@10001000 {
252+ infracfg: clock-controller@10001000 {
253253 compatible = "mediatek,mt2712-infracfg", "syscon";
254254 reg = <0 0x10001000 0 0x1000>;
255255 #clock-cells = <1>;
256+ #reset-cells = <1>;
256257 };
257258
258259 pericfg: syscon@10003000 {
arch/arm64/boot/dts/mediatek/mt7622.dtsi+14−20
@@ -252,7 +252,7 @@ · 251 unmodified lines
252252 clock-names = "hif_sel";
253253 };
254254
255− cir: cir@10009000 {
255+ cir: ir-receiver@10009000 {
256256 compatible = "mediatek,mt7622-cir";
257257 reg = <0 0x10009000 0 0x1000>;
258258 interrupts = <GIC_SPI 175 IRQ_TYPE_LEVEL_LOW>;
@@ -283,16 +283,14 @@ · 24 unmodified lines
283283 };
284284 };
285285
286− apmixedsys: apmixedsys@10209000 {
287− compatible = "mediatek,mt7622-apmixedsys",
288− "syscon";
286+ apmixedsys: clock-controller@10209000 {
287+ compatible = "mediatek,mt7622-apmixedsys";
289288 reg = <0 0x10209000 0 0x1000>;
290289 #clock-cells = <1>;
291290 };
292291
293− topckgen: topckgen@10210000 {
294− compatible = "mediatek,mt7622-topckgen",
295− "syscon";
292+ topckgen: clock-controller@10210000 {
293+ compatible = "mediatek,mt7622-topckgen";
296294 reg = <0 0x10210000 0 0x1000>;
297295 #clock-cells = <1>;
298296 };
@@ -515,7 +513,6 @@ · 216 unmodified lines
515513 <&pericfg CLK_PERI_AUXADC_PD>;
516514 clock-names = "therm", "auxadc";
517515 resets = <&pericfg MT7622_PERI_THERM_SW_RST>;
518− reset-names = "therm";
519516 mediatek,auxadc = <&auxadc>;
520517 mediatek,apmixedsys = <&apmixedsys>;
521518 nvmem-cells = <&thermal_calibration>;
@@ -734,9 +731,8 @@ · 212 unmodified lines
734731 power-domains = <&scpsys MT7622_POWER_DOMAIN_WB>;
735732 };
736733
737− ssusbsys: ssusbsys@1a000000 {
738− compatible = "mediatek,mt7622-ssusbsys",
739− "syscon";
734+ ssusbsys: clock-controller@1a000000 {
735+ compatible = "mediatek,mt7622-ssusbsys";
740736 reg = <0 0x1a000000 0 0x1000>;
741737 #clock-cells = <1>;
742738 #reset-cells = <1>;
@@ -793,9 +789,8 @@ · 50 unmodified lines
793789 };
794790 };
795791
796− pciesys: pciesys@1a100800 {
797− compatible = "mediatek,mt7622-pciesys",
798− "syscon";
792+ pciesys: clock-controller@1a100800 {
793+ compatible = "mediatek,mt7622-pciesys";
799794 reg = <0 0x1a100800 0 0x1000>;
800795 #clock-cells = <1>;
801796 #reset-cells = <1>;
@@ -921,12 +916,13 @@ · 119 unmodified lines
921916 };
922917 };
923918
924− hifsys: syscon@1af00000 {
925− compatible = "mediatek,mt7622-hifsys", "syscon";
919+ hifsys: clock-controller@1af00000 {
920+ compatible = "mediatek,mt7622-hifsys";
926921 reg = <0 0x1af00000 0 0x70>;
922+ #clock-cells = <1>;
927923 };
928924
929− ethsys: syscon@1b000000 {
925+ ethsys: clock-controller@1b000000 {
930926 compatible = "mediatek,mt7622-ethsys",
931927 "syscon";
932928 reg = <0 0x1b000000 0 0x1000>;
@@ -966,9 +962,7 @@ · 33 unmodified lines
966962 };
967963
968964 eth: ethernet@1b100000 {
969− compatible = "mediatek,mt7622-eth",
970− "mediatek,mt2701-eth",
971− "syscon";
965+ compatible = "mediatek,mt7622-eth";
972966 reg = <0 0x1b100000 0 0x20000>;
973967 interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_LOW>,
974968 <GIC_SPI 224 IRQ_TYPE_LEVEL_LOW>,
arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts+3−3
@@ -146,19 +146,19 @@ · 145 unmodified lines
146146
147147 &cpu_thermal {
148148 cooling-maps {
149− cpu-active-high {
149+ map-cpu-active-high {
150150 /* active: set fan to cooling level 2 */
151151 cooling-device = <&fan 2 2>;
152152 trip = <&cpu_trip_active_high>;
153153 };
154154
155− cpu-active-med {
155+ map-cpu-active-med {
156156 /* active: set fan to cooling level 1 */
157157 cooling-device = <&fan 1 1>;
158158 trip = <&cpu_trip_active_med>;
159159 };
160160
161− cpu-active-low {
161+ map-cpu-active-low {
162162 /* active: set fan to cooling level 0 */
163163 cooling-device = <&fan 0 0>;
164164 trip = <&cpu_trip_active_low>;
arch/arm64/boot/dts/mediatek/mt7986a.dtsi+2−6
@@ -332,9 +332,8 @@ · 331 unmodified lines
332332 reg = <0 0x1100c800 0 0x800>;
333333 interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
334334 clocks = <&infracfg CLK_INFRA_THERM_CK>,
335− <&infracfg CLK_INFRA_ADC_26M_CK>,
336− <&infracfg CLK_INFRA_ADC_FRC_CK>;
337− clock-names = "therm", "auxadc", "adc_32k";
335+ <&infracfg CLK_INFRA_ADC_26M_CK>;
336+ clock-names = "therm", "auxadc";
338337 nvmem-cells = <&thermal_calibration>;
339338 nvmem-cell-names = "calibration-data";
340339 #thermal-sensor-cells = <1>;
@@ -492,8 +491,6 @@ · 151 unmodified lines
492491 compatible = "mediatek,mt7986-ethsys",
493492 "syscon";
494493 reg = <0 0x15000000 0 0x1000>;
495− #address-cells = <1>;
496− #size-cells = <1>;
497494 #clock-cells = <1>;
498495 #reset-cells = <1>;
499496 };
@@ -556,7 +553,6 @@ · 56 unmodified lines
556553 <&topckgen CLK_TOP_SGM_325M_SEL>;
557554 assigned-clock-parents = <&apmixedsys CLK_APMIXED_NET2PLL>,
558555 <&apmixedsys CLK_APMIXED_SGMPLL>;
559− #reset-cells = <1>;
560556 #address-cells = <1>;
561557 #size-cells = <0>;
562558 mediatek,ethsys = <&ethsys>;
arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi+0−1
@@ -433,7 +433,6 @@ · 432 unmodified lines
433433 };
434434
435435 &mt6358_vgpu_reg {
436− regulator-min-microvolt = <625000>;
437436 regulator-max-microvolt = <900000>;
438437
439438 regulator-coupled-with = <&mt6358_vsram_gpu_reg>;
arch/arm64/boot/dts/mediatek/mt8183.dtsi+1−0
@@ -1637,6 +1637,7 @@ · 1636 unmodified lines
16371637 compatible = "mediatek,mt8183-mfgcfg", "syscon";
16381638 reg = <0 0x13000000 0 0x1000>;
16391639 #clock-cells = <1>;
1640+ power-domains = <&spm MT8183_POWER_DOMAIN_MFG_ASYNC>;
16401641 };
16411642
16421643 gpu: gpu@13040000 {
arch/arm64/boot/dts/mediatek/mt8186-corsola.dtsi+1−1
@@ -1296,7 +1296,7 @@ · 1295 unmodified lines
12961296 * regulator coupling requirements.
12971297 */
12981298 regulator-name = "ppvar_dvdd_vgpu";
1299− regulator-min-microvolt = <600000>;
1299+ regulator-min-microvolt = <500000>;
13001300 regulator-max-microvolt = <950000>;
13011301 regulator-ramp-delay = <6250>;
13021302 regulator-enable-ramp-delay = <200>;
arch/arm64/boot/dts/mediatek/mt8192-asurada.dtsi+3−3
@@ -1421,7 +1421,7 @@ · 1420 unmodified lines
14211421 mt6315_6_vbuck1: vbuck1 {
14221422 regulator-compatible = "vbuck1";
14231423 regulator-name = "Vbcpu";
1424− regulator-min-microvolt = <300000>;
1424+ regulator-min-microvolt = <400000>;
14251425 regulator-max-microvolt = <1193750>;
14261426 regulator-enable-ramp-delay = <256>;
14271427 regulator-allowed-modes = <0 1 2>;
@@ -1431,7 +1431,7 @@ · 3 unmodified lines
14311431 mt6315_6_vbuck3: vbuck3 {
14321432 regulator-compatible = "vbuck3";
14331433 regulator-name = "Vlcpu";
1434− regulator-min-microvolt = <300000>;
1434+ regulator-min-microvolt = <400000>;
14351435 regulator-max-microvolt = <1193750>;
14361436 regulator-enable-ramp-delay = <256>;
14371437 regulator-allowed-modes = <0 1 2>;
@@ -1448,7 +1448,7 @@ · 10 unmodified lines
14481448 mt6315_7_vbuck1: vbuck1 {
14491449 regulator-compatible = "vbuck1";
14501450 regulator-name = "Vgpu";
1451− regulator-min-microvolt = <606250>;
1451+ regulator-min-microvolt = <400000>;
14521452 regulator-max-microvolt = <800000>;
14531453 regulator-enable-ramp-delay = <256>;
14541454 regulator-allowed-modes = <0 1 2>;
arch/arm64/boot/dts/mediatek/mt8192.dtsi+1−0
@@ -1464,6 +1464,7 @@ · 1463 unmodified lines
14641464 reg = <0 0x14001000 0 0x1000>;
14651465 interrupts = <GIC_SPI 252 IRQ_TYPE_LEVEL_HIGH 0>;
14661466 clocks = <&mmsys CLK_MM_DISP_MUTEX0>;
1467+ mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0x1000 0x1000>;
14671468 mediatek,gce-events = <CMDQ_EVENT_DISP_STREAM_DONE_ENG_EVENT_0>,
14681469 <CMDQ_EVENT_DISP_STREAM_DONE_ENG_EVENT_1>;
14691470 power-domains = <&spm MT8192_POWER_DOMAIN_DISP>;
arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi+34−2
@@ -264,6 +264,38 @@ · 263 unmodified lines
264264 status = "okay";
265265 };
266266
267+&cpu0 {
268+ cpu-supply = <&mt6359_vcore_buck_reg>;
269+};
270+
271+&cpu1 {
272+ cpu-supply = <&mt6359_vcore_buck_reg>;
273+};
274+
275+&cpu2 {
276+ cpu-supply = <&mt6359_vcore_buck_reg>;
277+};
278+
279+&cpu3 {
280+ cpu-supply = <&mt6359_vcore_buck_reg>;
281+};
282+
283+&cpu4 {
284+ cpu-supply = <&mt6315_6_vbuck1>;
285+};
286+
287+&cpu5 {
288+ cpu-supply = <&mt6315_6_vbuck1>;
289+};
290+
291+&cpu6 {
292+ cpu-supply = <&mt6315_6_vbuck1>;
293+};
294+
295+&cpu7 {
296+ cpu-supply = <&mt6315_6_vbuck1>;
297+};
298+
267299 &dp_intf0 {
268300 status = "okay";
269301
@@ -1214,7 +1246,7 @@ · 944 unmodified lines
12141246 mt6315_6_vbuck1: vbuck1 {
12151247 regulator-compatible = "vbuck1";
12161248 regulator-name = "Vbcpu";
1217− regulator-min-microvolt = <300000>;
1249+ regulator-min-microvolt = <400000>;
12181250 regulator-max-microvolt = <1193750>;
12191251 regulator-enable-ramp-delay = <256>;
12201252 regulator-ramp-delay = <6250>;
@@ -1232,7 +1264,7 @@ · 11 unmodified lines
12321264 mt6315_7_vbuck1: vbuck1 {
12331265 regulator-compatible = "vbuck1";
12341266 regulator-name = "Vgpu";
1235− regulator-min-microvolt = <625000>;
1267+ regulator-min-microvolt = <400000>;
12361268 regulator-max-microvolt = <1193750>;
12371269 regulator-enable-ramp-delay = <256>;
12381270 regulator-ramp-delay = <6250>;
arch/arm64/boot/dts/mediatek/mt8195.dtsi+5−0
@@ -2028,6 +2028,7 @@ · 2027 unmodified lines
20282028 compatible = "mediatek,mt8195-vppsys0", "syscon";
20292029 reg = <0 0x14000000 0 0x1000>;
20302030 #clock-cells = <1>;
2031+ mediatek,gce-client-reg = <&gce1 SUBSYS_1400XXXX 0 0x1000>;
20312032 };
20322033
20332034 dma-controller@14001000 {
@@ -2251,6 +2252,7 @@ · 217 unmodified lines
22512252 compatible = "mediatek,mt8195-vppsys1", "syscon";
22522253 reg = <0 0x14f00000 0 0x1000>;
22532254 #clock-cells = <1>;
2255+ mediatek,gce-client-reg = <&gce1 SUBSYS_14f0XXXX 0 0x1000>;
22542256 };
22552257
22562258 mutex@14f01000 {
@@ -3080,6 +3082,7 @@ · 823 unmodified lines
30803082 reg = <0 0x1c01a000 0 0x1000>;
30813083 mboxes = <&gce0 0 CMDQ_THR_PRIO_4>;
30823084 #clock-cells = <1>;
3085+ mediatek,gce-client-reg = <&gce0 SUBSYS_1c01XXXX 0xa000 0x1000>;
30833086 };
30843087
30853088
@@ -3261,6 +3264,7 @@ · 175 unmodified lines
32613264 interrupts = <GIC_SPI 658 IRQ_TYPE_LEVEL_HIGH 0>;
32623265 power-domains = <&spm MT8195_POWER_DOMAIN_VDOSYS0>;
32633266 clocks = <&vdosys0 CLK_VDO0_DISP_MUTEX0>;
3267+ mediatek,gce-client-reg = <&gce0 SUBSYS_1c01XXXX 0x6000 0x1000>;
32643268 mediatek,gce-events = <CMDQ_EVENT_VDO0_DISP_STREAM_DONE_0>;
32653269 };
32663270
@@ -3331,6 +3335,7 @@ · 64 unmodified lines
33313335 power-domains = <&spm MT8195_POWER_DOMAIN_VDOSYS1>;
33323336 clocks = <&vdosys1 CLK_VDO1_DISP_MUTEX>;
33333337 clock-names = "vdo1_mutex";
3338+ mediatek,gce-client-reg = <&gce0 SUBSYS_1c10XXXX 0x1000 0x1000>;
33343339 mediatek,gce-events = <CMDQ_EVENT_VDO1_STREAM_DONE_ENG_0>;
33353340 };
33363341
arch/arm64/boot/dts/qcom/sc7280.dtsi+2−2
@@ -3707,7 +3707,7 @@ · 3706 unmodified lines
37073707 compatible = "qcom,sc7280-adsp-pas";
37083708 reg = <0 0x03700000 0 0x100>;
37093709
3710− interrupts-extended = <&pdc 6 IRQ_TYPE_LEVEL_HIGH>,
3710+ interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>,
37113711 <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
37123712 <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
37133713 <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
@@ -3944,7 +3944,7 @@ · 230 unmodified lines
39443944 compatible = "qcom,sc7280-cdsp-pas";
39453945 reg = <0 0x0a300000 0 0x10000>;
39463946
3947− interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_LEVEL_HIGH>,
3947+ interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_EDGE_RISING>,
39483948 <&cdsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
39493949 <&cdsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
39503950 <&cdsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
arch/arm64/boot/dts/qcom/sc8180x.dtsi+1−1
@@ -2701,7 +2701,7 @@ · 2700 unmodified lines
27012701 resets = <&gcc GCC_USB30_SEC_BCR>;
27022702 power-domains = <&gcc USB30_SEC_GDSC>;
27032703 interrupts-extended = <&intc GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
2704− <&pdc 7 IRQ_TYPE_LEVEL_HIGH>,
2704+ <&pdc 40 IRQ_TYPE_LEVEL_HIGH>,
27052705 <&pdc 10 IRQ_TYPE_EDGE_BOTH>,
27062706 <&pdc 11 IRQ_TYPE_EDGE_BOTH>;
27072707 interrupt-names = "hs_phy_irq", "ss_phy_irq",
arch/arm64/boot/dts/qcom/sc8280xp.dtsi+8−3
@@ -1774,6 +1774,7 @@ · 1773 unmodified lines
17741774 reset-names = "pci";
17751775
17761776 power-domains = <&gcc PCIE_4_GDSC>;
1777+ required-opps = <&rpmhpd_opp_nom>;
17771778
17781779 phys = <&pcie4_phy>;
17791780 phy-names = "pciephy";
@@ -1872,6 +1873,7 @@ · 92 unmodified lines
18721873 reset-names = "pci";
18731874
18741875 power-domains = <&gcc PCIE_3B_GDSC>;
1876+ required-opps = <&rpmhpd_opp_nom>;
18751877
18761878 phys = <&pcie3b_phy>;
18771879 phy-names = "pciephy";
@@ -1970,6 +1972,7 @@ · 92 unmodified lines
19701972 reset-names = "pci";
19711973
19721974 power-domains = <&gcc PCIE_3A_GDSC>;
1975+ required-opps = <&rpmhpd_opp_nom>;
19731976
19741977 phys = <&pcie3a_phy>;
19751978 phy-names = "pciephy";
@@ -2071,6 +2074,7 @@ · 95 unmodified lines
20712074 reset-names = "pci";
20722075
20732076 power-domains = <&gcc PCIE_2B_GDSC>;
2077+ required-opps = <&rpmhpd_opp_nom>;
20742078
20752079 phys = <&pcie2b_phy>;
20762080 phy-names = "pciephy";
@@ -2169,6 +2173,7 @@ · 92 unmodified lines
21692173 reset-names = "pci";
21702174
21712175 power-domains = <&gcc PCIE_2A_GDSC>;
2176+ required-opps = <&rpmhpd_opp_nom>;
21722177
21732178 phys = <&pcie2a_phy>;
21742179 phy-names = "pciephy";
@@ -2641,7 +2646,7 @@ · 466 unmodified lines
26412646 compatible = "qcom,sc8280xp-adsp-pas";
26422647 reg = <0 0x03000000 0 0x100>;
26432648
2644− interrupts-extended = <&intc GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
2649+ interrupts-extended = <&intc GIC_SPI 162 IRQ_TYPE_EDGE_RISING>,
26452650 <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
26462651 <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
26472652 <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
@@ -4977,7 +4982,7 @@ · 2329 unmodified lines
49774982 compatible = "qcom,sc8280xp-nsp0-pas";
49784983 reg = <0 0x1b300000 0 0x100>;
49794984
4980− interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_LEVEL_HIGH>,
4985+ interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_EDGE_RISING>,
49814986 <&smp2p_nsp0_in 0 IRQ_TYPE_EDGE_RISING>,
49824987 <&smp2p_nsp0_in 1 IRQ_TYPE_EDGE_RISING>,
49834988 <&smp2p_nsp0_in 2 IRQ_TYPE_EDGE_RISING>,
@@ -5108,7 +5113,7 @@ · 124 unmodified lines
51085113 compatible = "qcom,sc8280xp-nsp1-pas";
51095114 reg = <0 0x21300000 0 0x100>;
51105115
5111− interrupts-extended = <&intc GIC_SPI 887 IRQ_TYPE_LEVEL_HIGH>,
5116+ interrupts-extended = <&intc GIC_SPI 887 IRQ_TYPE_EDGE_RISING>,
51125117 <&smp2p_nsp1_in 0 IRQ_TYPE_EDGE_RISING>,
51135118 <&smp2p_nsp1_in 1 IRQ_TYPE_EDGE_RISING>,
51145119 <&smp2p_nsp1_in 2 IRQ_TYPE_EDGE_RISING>,
arch/arm64/boot/dts/qcom/sm6350.dtsi+2−2
@@ -1252,7 +1252,7 @@ · 1251 unmodified lines
12521252 compatible = "qcom,sm6350-adsp-pas";
12531253 reg = <0 0x03000000 0 0x100>;
12541254
1255− interrupts-extended = <&pdc 6 IRQ_TYPE_LEVEL_HIGH>,
1255+ interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>,
12561256 <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
12571257 <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
12581258 <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
@@ -1511,7 +1511,7 @@ · 252 unmodified lines
15111511 compatible = "qcom,sm6350-cdsp-pas";
15121512 reg = <0 0x08300000 0 0x10000>;
15131513
1514− interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_LEVEL_HIGH>,
1514+ interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_EDGE_RISING>,
15151515 <&smp2p_cdsp_in 0 IRQ_TYPE_EDGE_RISING>,
15161516 <&smp2p_cdsp_in 1 IRQ_TYPE_EDGE_RISING>,
15171517 <&smp2p_cdsp_in 2 IRQ_TYPE_EDGE_RISING>,
arch/arm64/boot/dts/qcom/sm6375.dtsi+1−1
@@ -1561,7 +1561,7 @@ · 1560 unmodified lines
15611561 compatible = "qcom,sm6375-adsp-pas";
15621562 reg = <0 0x0a400000 0 0x100>;
15631563
1564− interrupts-extended = <&intc GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
1564+ interrupts-extended = <&intc GIC_SPI 282 IRQ_TYPE_EDGE_RISING>,
15651565 <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
15661566 <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
15671567 <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
arch/arm64/boot/dts/qcom/sm8250.dtsi+3−3
@@ -3062,7 +3062,7 @@ · 3061 unmodified lines
30623062 compatible = "qcom,sm8250-slpi-pas";
30633063 reg = <0 0x05c00000 0 0x4000>;
30643064
3065− interrupts-extended = <&pdc 9 IRQ_TYPE_LEVEL_HIGH>,
3065+ interrupts-extended = <&pdc 9 IRQ_TYPE_EDGE_RISING>,
30663066 <&smp2p_slpi_in 0 IRQ_TYPE_EDGE_RISING>,
30673067 <&smp2p_slpi_in 1 IRQ_TYPE_EDGE_RISING>,
30683068 <&smp2p_slpi_in 2 IRQ_TYPE_EDGE_RISING>,
@@ -3766,7 +3766,7 @@ · 697 unmodified lines
37663766 compatible = "qcom,sm8250-cdsp-pas";
37673767 reg = <0 0x08300000 0 0x10000>;
37683768
3769− interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_LEVEL_HIGH>,
3769+ interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_EDGE_RISING>,
37703770 <&smp2p_cdsp_in 0 IRQ_TYPE_EDGE_RISING>,
37713771 <&smp2p_cdsp_in 1 IRQ_TYPE_EDGE_RISING>,
37723772 <&smp2p_cdsp_in 2 IRQ_TYPE_EDGE_RISING>,
@@ -5928,7 +5928,7 @@ · 2155 unmodified lines
59285928 compatible = "qcom,sm8250-adsp-pas";
59295929 reg = <0 0x17300000 0 0x100>;
59305930
5931− interrupts-extended = <&pdc 6 IRQ_TYPE_LEVEL_HIGH>,
5931+ interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>,
59325932 <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
59335933 <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
59345934 <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
arch/arm64/boot/dts/qcom/sm8450.dtsi+4−12
@@ -1777,12 +1777,8 @@ · 1776 unmodified lines
17771777 ranges = <0x01000000 0x0 0x00000000 0x0 0x60200000 0x0 0x100000>,
17781778 <0x02000000 0x0 0x60300000 0x0 0x60300000 0x0 0x3d00000>;
17791779
1780− /*
1781− * MSIs for BDF (1:0.0) only works with Device ID 0x5980.
1782− * Hence, the IDs are swapped.
1783− */
1784− msi-map = <0x0 &gic_its 0x5981 0x1>,
1785− <0x100 &gic_its 0x5980 0x1>;
1780+ msi-map = <0x0 &gic_its 0x5980 0x1>,
1781+ <0x100 &gic_its 0x5981 0x1>;
17861782 msi-map-mask = <0xff00>;
17871783 interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
17881784 <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
@@ -1900,12 +1896,8 @@ · 111 unmodified lines
19001896 ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>,
19011897 <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x1fd00000>;
19021898
1903− /*
1904− * MSIs for BDF (1:0.0) only works with Device ID 0x5a00.
1905− * Hence, the IDs are swapped.
1906− */
1907− msi-map = <0x0 &gic_its 0x5a01 0x1>,
1908− <0x100 &gic_its 0x5a00 0x1>;
1899+ msi-map = <0x0 &gic_its 0x5a00 0x1>,
1900+ <0x100 &gic_its 0x5a01 0x1>;
19091901 msi-map-mask = <0xff00>;
19101902 interrupts = <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH>,
19111903 <GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH>,
arch/arm64/boot/dts/qcom/sm8550.dtsi+4−6
@@ -1755,9 +1755,8 @@ · 1754 unmodified lines
17551755 <&gem_noc MASTER_APPSS_PROC 0 &cnoc_main SLAVE_PCIE_0 0>;
17561756 interconnect-names = "pcie-mem", "cpu-pcie";
17571757
1758− /* Entries are reversed due to the unusual ITS DeviceID encoding */
1759− msi-map = <0x0 &gic_its 0x1401 0x1>,
1760− <0x100 &gic_its 0x1400 0x1>;
1758+ msi-map = <0x0 &gic_its 0x1400 0x1>,
1759+ <0x100 &gic_its 0x1401 0x1>;
17611760 iommu-map = <0x0 &apps_smmu 0x1400 0x1>,
17621761 <0x100 &apps_smmu 0x1401 0x1>;
17631762
@@ -1867,9 +1866,8 @@ · 103 unmodified lines
18671866 <&gem_noc MASTER_APPSS_PROC 0 &cnoc_main SLAVE_PCIE_1 0>;
18681867 interconnect-names = "pcie-mem", "cpu-pcie";
18691868
1870− /* Entries are reversed due to the unusual ITS DeviceID encoding */
1871− msi-map = <0x0 &gic_its 0x1481 0x1>,
1872− <0x100 &gic_its 0x1480 0x1>;
1869+ msi-map = <0x0 &gic_its 0x1480 0x1>,
1870+ <0x100 &gic_its 0x1481 0x1>;
18731871 iommu-map = <0x0 &apps_smmu 0x1480 0x1>,
18741872 <0x100 &apps_smmu 0x1481 0x1>;
18751873
arch/arm64/boot/dts/qcom/sm8650.dtsi+4−6
@@ -2274,9 +2274,8 @@ · 2273 unmodified lines
22742274 interrupt-map-mask = <0 0 0 0x7>;
22752275 #interrupt-cells = <1>;
22762276
2277− /* Entries are reversed due to the unusual ITS DeviceID encoding */
2278− msi-map = <0x0 &gic_its 0x1401 0x1>,
2279− <0x100 &gic_its 0x1400 0x1>;
2277+ msi-map = <0x0 &gic_its 0x1400 0x1>,
2278+ <0x100 &gic_its 0x1401 0x1>;
22802279 msi-map-mask = <0xff00>;
22812280
22822281 linux,pci-domain = <0>;
@@ -2402,9 +2401,8 @@ · 119 unmodified lines
24022401 interrupt-map-mask = <0 0 0 0x7>;
24032402 #interrupt-cells = <1>;
24042403
2405− /* Entries are reversed due to the unusual ITS DeviceID encoding */
2406− msi-map = <0x0 &gic_its 0x1481 0x1>,
2407− <0x100 &gic_its 0x1480 0x1>;
2404+ msi-map = <0x0 &gic_its 0x1480 0x1>,
2405+ <0x100 &gic_its 0x1481 0x1>;
24082406 msi-map-mask = <0xff00>;
24092407
24102408 linux,pci-domain = <1>;
arch/arm64/boot/dts/qcom/x1e80100.dtsi+2−2
@@ -284,7 +284,7 @@ · 283 unmodified lines
284284
285285 domain-idle-states {
286286 CLUSTER_CL4: cluster-sleep-0 {
287− compatible = "arm,idle-state";
287+ compatible = "domain-idle-state";
288288 idle-state-name = "l2-ret";
289289 arm,psci-suspend-param = <0x01000044>;
290290 entry-latency-us = <350>;
@@ -293,7 +293,7 @@ · 2 unmodified lines
293293 };
294294
295295 CLUSTER_CL5: cluster-sleep-1 {
296− compatible = "arm,idle-state";
296+ compatible = "domain-idle-state";
297297 idle-state-name = "ret-pll-off";
298298 arm,psci-suspend-param = <0x01000054>;
299299 entry-latency-us = <2200>;
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi+1−2
@@ -663,7 +663,7 @@ camera: &i2c7 { · 662 unmodified lines
663663 port@1 {
664664 reg = <1>;
665665
666− mipi1_in_panel: endpoint@1 {
666+ mipi1_in_panel: endpoint {
667667 remote-endpoint = <&mipi1_out_panel>;
668668 };
669669 };
@@ -689,7 +689,6 @@ camera: &i2c7 { · 19 unmodified lines
689689 ep-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>;
690690
691691 /* PERST# asserted in S3 */
692− pcie-reset-suspend = <1>;
693692
694693 vpcie3v3-supply = <&wlan_3v3>;
695694 vpcie1v8-supply = <&pp1800_pcie>;
arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts+1−1
@@ -611,7 +611,7 @@ · 610 unmodified lines
611611 #size-cells = <0>;
612612
613613 interface@0 { /* interface 0 of configuration 1 */
614− compatible = "usbbda,8156.config1.0";
614+ compatible = "usbifbda,8156.config1.0";
615615 reg = <0 1>;
616616 };
617617 };
arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts+0−1
@@ -779,7 +779,6 @@ · 778 unmodified lines
779779 };
780780
781781 &pcie0 {
782− bus-scan-delay-ms = <1000>;
783782 ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>;
784783 num-lanes = <4>;
785784 pinctrl-names = "default";
arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts+2−0
@@ -194,6 +194,8 @@ · 193 unmodified lines
194194 num-lanes = <4>;
195195 pinctrl-names = "default";
196196 pinctrl-0 = <&pcie_clkreqn_cpm>;
197+ vpcie3v3-supply = <&vcc3v3_baseboard>;
198+ vpcie12v-supply = <&dc_12v>;
197199 status = "okay";
198200 };
199201
arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi+47−6
@@ -79,6 +79,26 @@ · 78 unmodified lines
7979 regulator-max-microvolt = <5000000>;
8080 };
8181
82+ vcca_0v9: vcca-0v9-regulator {
83+ compatible = "regulator-fixed";
84+ regulator-name = "vcca_0v9";
85+ regulator-always-on;
86+ regulator-boot-on;
87+ regulator-min-microvolt = <900000>;
88+ regulator-max-microvolt = <900000>;
89+ vin-supply = <&vcc_1v8>;
90+ };
91+
92+ vcca_1v8: vcca-1v8-regulator {
93+ compatible = "regulator-fixed";
94+ regulator-name = "vcca_1v8";
95+ regulator-always-on;
96+ regulator-boot-on;
97+ regulator-min-microvolt = <1800000>;
98+ regulator-max-microvolt = <1800000>;
99+ vin-supply = <&vcc3v3_sys>;
100+ };
101+
82102 vdd_log: vdd-log {
83103 compatible = "pwm-regulator";
84104 pwms = <&pwm2 0 25000 1>;
@@ -416,16 +436,28 @@ · 331 unmodified lines
416436 gpio1830-supply = <&vcc_1v8>;
417437 };
418438
419−&pmu_io_domains {
420− status = "okay";
421− pmu1830-supply = <&vcc_1v8>;
439+&pcie0 {
440+ /* PCIe PHY supplies */
441+ vpcie0v9-supply = <&vcca_0v9>;
442+ vpcie1v8-supply = <&vcca_1v8>;
422443 };
423444
424−&pwm2 {
425− status = "okay";
445+&pcie_clkreqn_cpm {
446+ rockchip,pins =
447+ <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>;
426448 };
427449
428450 &pinctrl {
451+ pinctrl-names = "default";
452+ pinctrl-0 = <&q7_thermal_pin>;
453+
454+ gpios {
455+ q7_thermal_pin: q7-thermal-pin {
456+ rockchip,pins =
457+ <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
458+ };
459+ };
460+
429461 i2c8 {
430462 i2c8_xfer_a: i2c8-xfer {
431463 rockchip,pins =
@@ -458,11 +490,20 @@ · 26 unmodified lines
458490 usb3 {
459491 usb3_id: usb3-id {
460492 rockchip,pins =
461− <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
493+ <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>;
462494 };
463495 };
464496 };
465497
498+&pmu_io_domains {
499+ status = "okay";
500+ pmu1830-supply = <&vcc_1v8>;
501+};
502+
503+&pwm2 {
504+ status = "okay";
505+};
506+
466507 &sdhci {
467508 /*
468509 * Signal integrity isn't great at 200MHz but 100MHz has proven stable
arch/arm64/boot/dts/rockchip/rk3566-lubancat-1.dts+0−1
@@ -447,7 +447,6 @@ · 446 unmodified lines
447447
448448 &pcie2x1 {
449449 reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
450− disable-gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
451450 vpcie3v3-supply = <&vcc3v3_pcie>;
452451 status = "okay";
453452 };
arch/arm64/boot/dts/rockchip/rk3568-bpi-r2-pro.dts+4−2
@@ -416,6 +416,8 @@ · 415 unmodified lines
416416
417417 vccio_sd: LDO_REG5 {
418418 regulator-name = "vccio_sd";
419+ regulator-always-on;
420+ regulator-boot-on;
419421 regulator-min-microvolt = <1800000>;
420422 regulator-max-microvolt = <3300000>;
421423
@@ -525,9 +527,9 @@ · 103 unmodified lines
525527 #address-cells = <1>;
526528 #size-cells = <0>;
527529
528− switch@0 {
530+ switch@1f {
529531 compatible = "mediatek,mt7531";
530− reg = <0>;
532+ reg = <0x1f>;
531533
532534 ports {
533535 #address-cells = <1>;
arch/arm64/boot/dts/rockchip/rk3568-lubancat-2.dts+0−1
@@ -523,7 +523,6 @@ · 522 unmodified lines
523523
524524 &pcie2x1 {
525525 reset-gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_HIGH>;
526− disable-gpios = <&gpio3 RK_PC2 GPIO_ACTIVE_HIGH>;
527526 vpcie3v3-supply = <&vcc3v3_mini_pcie>;
528527 status = "okay";
529528 };
arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5.dtsi+2−2
@@ -216,9 +216,9 @@ · 215 unmodified lines
216216 pinctrl-0 = <&i2c7m0_xfer>;
217217 status = "okay";
218218
219− es8316: audio-codec@11 {
219+ es8316: audio-codec@10 {
220220 compatible = "everest,es8316";
221− reg = <0x11>;
221+ reg = <0x10>;
222222 assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
223223 assigned-clock-rates = <12288000>;
224224 clocks = <&cru I2S0_8CH_MCLKOUT>;
arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts+2−1
@@ -485,6 +485,7 @@ · 484 unmodified lines
485485 pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
486486 <&rk806_dvs2_null>, <&rk806_dvs3_null>;
487487 spi-max-frequency = <1000000>;
488+ system-power-controller;
488489
489490 vcc1-supply = <&vcc5v0_sys>;
490491 vcc2-supply = <&vcc5v0_sys>;
@@ -506,7 +507,7 @@ · 15 unmodified lines
506507 #gpio-cells = <2>;
507508
508509 rk806_dvs1_null: dvs1-null-pins {
509− pins = "gpio_pwrctrl2";
510+ pins = "gpio_pwrctrl1";
510511 function = "pin_fun0";
511512 };
512513
arch/arm64/boot/dts/rockchip/rk3588-quartzpro64.dts+1−0
@@ -456,6 +456,7 @@ · 455 unmodified lines
456456 <&rk806_dvs2_null>, <&rk806_dvs3_null>;
457457 pinctrl-names = "default";
458458 spi-max-frequency = <1000000>;
459+ system-power-controller;
459460
460461 vcc1-supply = <&vcc4v0_sys>;
461462 vcc2-supply = <&vcc4v0_sys>;
drivers/firmware/qcom/qcom_qseecom_uefisecapp.c+91−46
@@ -221,6 +221,19 @@ struct qsee_rsp_uefi_query_variable_info { · 220 unmodified lines
221221 * alignment of 8 bytes (64 bits) for GUIDs. Our definition of efi_guid_t,
222222 * however, has an alignment of 4 byte (32 bits). So far, this seems to work
223223 * fine here. See also the comment on the typedef of efi_guid_t.
224+ *
225+ * Note: It looks like uefisecapp is quite picky about how the memory passed to
226+ * it is structured and aligned. In particular the request/response setup used
227+ * for QSEE_CMD_UEFI_GET_VARIABLE. While qcom_qseecom_app_send(), in theory,
228+ * accepts separate buffers/addresses for the request and response parts, in
229+ * practice, however, it seems to expect them to be both part of a larger
230+ * contiguous block. We initially allocated separate buffers for the request
231+ * and response but this caused the QSEE_CMD_UEFI_GET_VARIABLE command to
232+ * either not write any response to the response buffer or outright crash the
233+ * device. Therefore, we now allocate a single contiguous block of DMA memory
234+ * for both and properly align the data using the macros below. In particular,
235+ * request and response structs are aligned at 8 byte (via __reqdata_offs()),
236+ * following the driver that this has been reverse-engineered from.
224237 */
225238 #define qcuefi_buf_align_fields(fields...) \
226239 ({ \
@@ -244,6 +257,12 @@ struct qsee_rsp_uefi_query_variable_info { · 17 unmodified lines
244257 #define __array_offs(type, count, offset) \
245258 __field_impl(sizeof(type) * (count), __alignof__(type), offset)
246259
260+#define __array_offs_aligned(type, count, align, offset) \
261+ __field_impl(sizeof(type) * (count), align, offset)
262+
263+#define __reqdata_offs(size, offset) \
264+ __array_offs_aligned(u8, size, 8, offset)
265+
247266 #define __array(type, count) __array_offs(type, count, NULL)
248267 #define __field_offs(type, offset) __array_offs(type, 1, offset)
249268 #define __field(type) __array_offs(type, 1, NULL)
@@ -277,10 +296,15 @@ static efi_status_t qsee_uefi_get_variable(struct qcuefi_client *qcuefi, const e · 27 unmodified lines
277296 unsigned long buffer_size = *data_size;
278297 efi_status_t efi_status = EFI_SUCCESS;
279298 unsigned long name_length;
299+ dma_addr_t cmd_buf_dma;
300+ size_t cmd_buf_size;
301+ void *cmd_buf;
280302 size_t guid_offs;
281303 size_t name_offs;
282304 size_t req_size;
283305 size_t rsp_size;
306+ size_t req_offs;
307+ size_t rsp_offs;
284308 ssize_t status;
285309
286310 if (!name || !guid)
@@ -304,17 +328,19 @@ static efi_status_t qsee_uefi_get_variable(struct qcuefi_client *qcuefi, const e · 17 unmodified lines
304328 __array(u8, buffer_size)
305329 );
306330
307− req_data = kzalloc(req_size, GFP_KERNEL);
308− if (!req_data) {
331+ cmd_buf_size = qcuefi_buf_align_fields(
332+ __reqdata_offs(req_size, &req_offs)
333+ __reqdata_offs(rsp_size, &rsp_offs)
334+ );
335+
336+ cmd_buf = qseecom_dma_alloc(qcuefi->client, cmd_buf_size, &cmd_buf_dma, GFP_KERNEL);
337+ if (!cmd_buf) {
309338 efi_status = EFI_OUT_OF_RESOURCES;
310339 goto out;
311340 }
312341
313− rsp_data = kzalloc(rsp_size, GFP_KERNEL);
314− if (!rsp_data) {
315− efi_status = EFI_OUT_OF_RESOURCES;
316− goto out_free_req;
317− }
342+ req_data = cmd_buf + req_offs;
343+ rsp_data = cmd_buf + rsp_offs;
318344
319345 req_data->command_id = QSEE_CMD_UEFI_GET_VARIABLE;
320346 req_data->data_size = buffer_size;
@@ -332,7 +358,9 @@ static efi_status_t qsee_uefi_get_variable(struct qcuefi_client *qcuefi, const e · 11 unmodified lines
332358
333359 memcpy(((void *)req_data) + req_data->guid_offset, guid, req_data->guid_size);
334360
335− status = qcom_qseecom_app_send(qcuefi->client, req_data, req_size, rsp_data, rsp_size);
361+ status = qcom_qseecom_app_send(qcuefi->client,
362+ cmd_buf_dma + req_offs, req_size,
363+ cmd_buf_dma + rsp_offs, rsp_size);
336364 if (status) {
337365 efi_status = EFI_DEVICE_ERROR;
338366 goto out_free;
@@ -407,9 +435,7 @@ static efi_status_t qsee_uefi_get_variable(struct qcuefi_client *qcuefi, const e · 68 unmodified lines
407435 memcpy(data, ((void *)rsp_data) + rsp_data->data_offset, rsp_data->data_size);
408436
409437 out_free:
410− kfree(rsp_data);
411−out_free_req:
412− kfree(req_data);
438+ qseecom_dma_free(qcuefi->client, cmd_buf_size, cmd_buf, cmd_buf_dma);
413439 out:
414440 return efi_status;
415441 }
@@ -422,10 +448,15 @@ static efi_status_t qsee_uefi_set_variable(struct qcuefi_client *qcuefi, const e · 6 unmodified lines
422448 struct qsee_rsp_uefi_set_variable *rsp_data;
423449 efi_status_t efi_status = EFI_SUCCESS;
424450 unsigned long name_length;
451+ dma_addr_t cmd_buf_dma;
452+ size_t cmd_buf_size;
453+ void *cmd_buf;
425454 size_t name_offs;
426455 size_t guid_offs;
427456 size_t data_offs;
428457 size_t req_size;
458+ size_t req_offs;
459+ size_t rsp_offs;
429460 ssize_t status;
430461
431462 if (!name || !guid)
@@ -450,17 +481,19 @@ static efi_status_t qsee_uefi_set_variable(struct qcuefi_client *qcuefi, const e · 18 unmodified lines
450481 __array_offs(u8, data_size, &data_offs)
451482 );
452483
453− req_data = kzalloc(req_size, GFP_KERNEL);
454− if (!req_data) {
484+ cmd_buf_size = qcuefi_buf_align_fields(
485+ __reqdata_offs(req_size, &req_offs)
486+ __reqdata_offs(sizeof(*rsp_data), &rsp_offs)
487+ );
488+
489+ cmd_buf = qseecom_dma_alloc(qcuefi->client, cmd_buf_size, &cmd_buf_dma, GFP_KERNEL);
490+ if (!cmd_buf) {
455491 efi_status = EFI_OUT_OF_RESOURCES;
456492 goto out;
457493 }
458494
459− rsp_data = kzalloc(sizeof(*rsp_data), GFP_KERNEL);
460− if (!rsp_data) {
461− efi_status = EFI_OUT_OF_RESOURCES;
462− goto out_free_req;
463− }
495+ req_data = cmd_buf + req_offs;
496+ rsp_data = cmd_buf + rsp_offs;
464497
465498 req_data->command_id = QSEE_CMD_UEFI_SET_VARIABLE;
466499 req_data->attributes = attributes;
@@ -483,8 +516,9 @@ static efi_status_t qsee_uefi_set_variable(struct qcuefi_client *qcuefi, const e · 16 unmodified lines
483516 if (data_size)
484517 memcpy(((void *)req_data) + req_data->data_offset, data, req_data->data_size);
485518
486− status = qcom_qseecom_app_send(qcuefi->client, req_data, req_size, rsp_data,
487− sizeof(*rsp_data));
519+ status = qcom_qseecom_app_send(qcuefi->client,
520+ cmd_buf_dma + req_offs, req_size,
521+ cmd_buf_dma + rsp_offs, sizeof(*rsp_data));
488522 if (status) {
489523 efi_status = EFI_DEVICE_ERROR;
490524 goto out_free;
@@ -507,9 +541,7 @@ static efi_status_t qsee_uefi_set_variable(struct qcuefi_client *qcuefi, const e · 16 unmodified lines
507541 }
508542
509543 out_free:
510− kfree(rsp_data);
511−out_free_req:
512− kfree(req_data);
544+ qseecom_dma_free(qcuefi->client, cmd_buf_size, cmd_buf, cmd_buf_dma);
513545 out:
514546 return efi_status;
515547 }
@@ -521,10 +553,15 @@ static efi_status_t qsee_uefi_get_next_variable(struct qcuefi_client *qcuefi, · 5 unmodified lines
521553 struct qsee_req_uefi_get_next_variable *req_data;
522554 struct qsee_rsp_uefi_get_next_variable *rsp_data;
523555 efi_status_t efi_status = EFI_SUCCESS;
556+ dma_addr_t cmd_buf_dma;
557+ size_t cmd_buf_size;
558+ void *cmd_buf;
524559 size_t guid_offs;
525560 size_t name_offs;
526561 size_t req_size;
527562 size_t rsp_size;
563+ size_t req_offs;
564+ size_t rsp_offs;
528565 ssize_t status;
529566
530567 if (!name_size || !name || !guid)
@@ -545,17 +582,19 @@ static efi_status_t qsee_uefi_get_next_variable(struct qcuefi_client *qcuefi, · 14 unmodified lines
545582 __array(*name, *name_size / sizeof(*name))
546583 );
547584
548− req_data = kzalloc(req_size, GFP_KERNEL);
549− if (!req_data) {
585+ cmd_buf_size = qcuefi_buf_align_fields(
586+ __reqdata_offs(req_size, &req_offs)
587+ __reqdata_offs(rsp_size, &rsp_offs)
588+ );
589+
590+ cmd_buf = qseecom_dma_alloc(qcuefi->client, cmd_buf_size, &cmd_buf_dma, GFP_KERNEL);
591+ if (!cmd_buf) {
550592 efi_status = EFI_OUT_OF_RESOURCES;
551593 goto out;
552594 }
553595
554− rsp_data = kzalloc(rsp_size, GFP_KERNEL);
555− if (!rsp_data) {
556− efi_status = EFI_OUT_OF_RESOURCES;
557− goto out_free_req;
558− }
596+ req_data = cmd_buf + req_offs;
597+ rsp_data = cmd_buf + rsp_offs;
559598
560599 req_data->command_id = QSEE_CMD_UEFI_GET_NEXT_VARIABLE;
561600 req_data->guid_offset = guid_offs;
@@ -572,7 +611,9 @@ static efi_status_t qsee_uefi_get_next_variable(struct qcuefi_client *qcuefi, · 10 unmodified lines
572611 goto out_free;
573612 }
574613
575− status = qcom_qseecom_app_send(qcuefi->client, req_data, req_size, rsp_data, rsp_size);
614+ status = qcom_qseecom_app_send(qcuefi->client,
615+ cmd_buf_dma + req_offs, req_size,
616+ cmd_buf_dma + rsp_offs, rsp_size);
576617 if (status) {
577618 efi_status = EFI_DEVICE_ERROR;
578619 goto out_free;
@@ -645,9 +686,7 @@ static efi_status_t qsee_uefi_get_next_variable(struct qcuefi_client *qcuefi, · 66 unmodified lines
645686 }
646687
647688 out_free:
648− kfree(rsp_data);
649−out_free_req:
650− kfree(req_data);
689+ qseecom_dma_free(qcuefi->client, cmd_buf_size, cmd_buf, cmd_buf_dma);
651690 out:
652691 return efi_status;
653692 }
@@ -659,26 +698,34 @@ static efi_status_t qsee_uefi_query_variable_info(struct qcuefi_client *qcuefi, · 5 unmodified lines
659698 struct qsee_req_uefi_query_variable_info *req_data;
660699 struct qsee_rsp_uefi_query_variable_info *rsp_data;
661700 efi_status_t efi_status = EFI_SUCCESS;
701+ dma_addr_t cmd_buf_dma;
702+ size_t cmd_buf_size;
703+ void *cmd_buf;
704+ size_t req_offs;
705+ size_t rsp_offs;
662706 int status;
663707
664− req_data = kzalloc(sizeof(*req_data), GFP_KERNEL);
665− if (!req_data) {
708+ cmd_buf_size = qcuefi_buf_align_fields(
709+ __reqdata_offs(sizeof(*req_data), &req_offs)
710+ __reqdata_offs(sizeof(*rsp_data), &rsp_offs)
711+ );
712+
713+ cmd_buf = qseecom_dma_alloc(qcuefi->client, cmd_buf_size, &cmd_buf_dma, GFP_KERNEL);
714+ if (!cmd_buf) {
666715 efi_status = EFI_OUT_OF_RESOURCES;
667716 goto out;
668717 }
669718
670− rsp_data = kzalloc(sizeof(*rsp_data), GFP_KERNEL);
671− if (!rsp_data) {
672− efi_status = EFI_OUT_OF_RESOURCES;
673− goto out_free_req;
674− }
719+ req_data = cmd_buf + req_offs;
720+ rsp_data = cmd_buf + rsp_offs;
675721
676722 req_data->command_id = QSEE_CMD_UEFI_QUERY_VARIABLE_INFO;
677723 req_data->attributes = attr;
678724 req_data->length = sizeof(*req_data);
679725
680− status = qcom_qseecom_app_send(qcuefi->client, req_data, sizeof(*req_data), rsp_data,
681− sizeof(*rsp_data));
726+ status = qcom_qseecom_app_send(qcuefi->client,
727+ cmd_buf_dma + req_offs, sizeof(*req_data),
728+ cmd_buf_dma + rsp_offs, sizeof(*rsp_data));
682729 if (status) {
683730 efi_status = EFI_DEVICE_ERROR;
684731 goto out_free;
@@ -711,9 +758,7 @@ static efi_status_t qsee_uefi_query_variable_info(struct qcuefi_client *qcuefi, · 26 unmodified lines
711758 *max_variable_size = rsp_data->max_variable_size;
712759
713760 out_free:
714− kfree(rsp_data);
715−out_free_req:
716− kfree(req_data);
761+ qseecom_dma_free(qcuefi->client, cmd_buf_size, cmd_buf, cmd_buf_dma);
717762 out:
718763 return efi_status;
719764 }
drivers/firmware/qcom/qcom_scm.c+6−31
@@ -1576,9 +1576,9 @@ EXPORT_SYMBOL_GPL(qcom_scm_qseecom_app_get_id); · 1575 unmodified lines
15761576 /**
15771577 * qcom_scm_qseecom_app_send() - Send to and receive data from a given QSEE app.
15781578 * @app_id: The ID of the target app.
1579− * @req: Request buffer sent to the app (must be DMA-mappable).
1579+ * @req: DMA address of the request buffer sent to the app.
15801580 * @req_size: Size of the request buffer.
1581− * @rsp: Response buffer, written to by the app (must be DMA-mappable).
1581+ * @rsp: DMA address of the response buffer, written to by the app.
15821582 * @rsp_size: Size of the response buffer.
15831583 *
15841584 * Sends a request to the QSEE app associated with the given ID and read back
@@ -1589,33 +1589,13 @@ EXPORT_SYMBOL_GPL(qcom_scm_qseecom_app_get_id); · 4 unmodified lines
15891589 *
15901590 * Return: Zero on success, nonzero on failure.
15911591 */
1592−int qcom_scm_qseecom_app_send(u32 app_id, void *req, size_t req_size, void *rsp,
1593− size_t rsp_size)
1592+int qcom_scm_qseecom_app_send(u32 app_id, dma_addr_t req, size_t req_size,
1593+ dma_addr_t rsp, size_t rsp_size)
15941594 {
15951595 struct qcom_scm_qseecom_resp res = {};
15961596 struct qcom_scm_desc desc = {};
1597− dma_addr_t req_phys;
1598− dma_addr_t rsp_phys;
15991597 int status;
16001598
1601− /* Map request buffer */
1602− req_phys = dma_map_single(__scm->dev, req, req_size, DMA_TO_DEVICE);
1603− status = dma_mapping_error(__scm->dev, req_phys);
1604− if (status) {
1605− dev_err(__scm->dev, "qseecom: failed to map request buffer\n");
1606− return status;
1607− }
1608−
1609− /* Map response buffer */
1610− rsp_phys = dma_map_single(__scm->dev, rsp, rsp_size, DMA_FROM_DEVICE);
1611− status = dma_mapping_error(__scm->dev, rsp_phys);
1612− if (status) {
1613− dma_unmap_single(__scm->dev, req_phys, req_size, DMA_TO_DEVICE);
1614− dev_err(__scm->dev, "qseecom: failed to map response buffer\n");
1615− return status;
1616− }
1617−
1618− /* Set up SCM call data */
16191599 desc.owner = QSEECOM_TZ_OWNER_TZ_APPS;
16201600 desc.svc = QSEECOM_TZ_SVC_APP_ID_PLACEHOLDER;
16211601 desc.cmd = QSEECOM_TZ_CMD_APP_SEND;
@@ -1623,18 +1603,13 @@ int qcom_scm_qseecom_app_send(u32 app_id, void *req, size_t req_size, void *rsp, · 1 unmodified line
16231603 QCOM_SCM_RW, QCOM_SCM_VAL,
16241604 QCOM_SCM_RW, QCOM_SCM_VAL);
16251605 desc.args[0] = app_id;
1626− desc.args[1] = req_phys;
1606+ desc.args[1] = req;
16271607 desc.args[2] = req_size;
1628− desc.args[3] = rsp_phys;
1608+ desc.args[3] = rsp;
16291609 desc.args[4] = rsp_size;
16301610
1631− /* Perform call */
16321611 status = qcom_scm_qseecom_call(&desc, &res);
16331612
1634− /* Unmap buffers */
1635− dma_unmap_single(__scm->dev, rsp_phys, rsp_size, DMA_FROM_DEVICE);
1636− dma_unmap_single(__scm->dev, req_phys, req_size, DMA_TO_DEVICE);
1637−
16381613 if (status)
16391614 return status;
16401615
drivers/soc/mediatek/Kconfig+1−0
@@ -72,6 +72,7 @@ config MTK_SOCINFO · 71 unmodified lines
7272 tristate "MediaTek SoC Information"
7373 default y
7474 depends on NVMEM_MTK_EFUSE
75+ select SOC_BUS
7576 help
7677 The MediaTek SoC Information (mtk-socinfo) driver provides
7778 information about the SoC to the userspace including the
drivers/soc/mediatek/mtk-svs.c+5−2
@@ -1768,6 +1768,7 @@ static int svs_bank_resource_setup(struct svs_platform *svsp) · 1767 unmodified lines
17681768 const struct svs_bank_pdata *bdata;
17691769 struct svs_bank *svsb;
17701770 struct dev_pm_opp *opp;
1771+ char tz_name_buf[20];
17711772 unsigned long freq;
17721773 int count, ret;
17731774 u32 idx, i;
@@ -1819,10 +1820,12 @@ static int svs_bank_resource_setup(struct svs_platform *svsp) · 45 unmodified lines
18191820 }
18201821
18211822 if (!IS_ERR_OR_NULL(bdata->tzone_name)) {
1822− svsb->tzd = thermal_zone_get_zone_by_name(bdata->tzone_name);
1823+ snprintf(tz_name_buf, ARRAY_SIZE(tz_name_buf),
1824+ "%s-thermal", bdata->tzone_name);
1825+ svsb->tzd = thermal_zone_get_zone_by_name(tz_name_buf);
18231826 if (IS_ERR(svsb->tzd)) {
18241827 dev_err(svsb->dev, "cannot get \"%s\" thermal zone\n",
1825− bdata->tzone_name);
1828+ tz_name_buf);
18261829 return PTR_ERR(svsb->tzd);
18271830 }
18281831 }
include/linux/firmware/qcom/qcom_qseecom.h+51−4
@@ -10,6 +10,7 @@ · 9 unmodified lines
1010 #define __QCOM_QSEECOM_H
1111
1212 #include <linux/auxiliary_bus.h>
13+#include <linux/dma-mapping.h>
1314 #include <linux/types.h>
1415
1516 #include <linux/firmware/qcom/qcom_scm.h>
@@ -24,12 +25,57 @@ struct qseecom_client { · 8 unmodified lines
2425 u32 app_id;
2526 };
2627
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+
2773 /**
2874 * qcom_qseecom_app_send() - Send to and receive data from a given QSEE app.
2975 * @client: The QSEECOM client associated with the target app.
30− * @req: Request buffer sent to the app (must be DMA-mappable).
76+ * @req: DMA address of the request buffer sent to the app.
3177 * @req_size: Size of the request buffer.
32− * @rsp: Response buffer, written to by the app (must be DMA-mappable).
78+ * @rsp: DMA address of the response buffer, written to by the app.
3379 * @rsp_size: Size of the response buffer.
3480 *
3581 * Sends a request to the QSEE app associated with the given client and read
@@ -43,8 +89,9 @@ struct qseecom_client { · 7 unmodified lines
4389 *
4490 * Return: Zero on success, nonzero on failure.
4591 */
46−static inline int qcom_qseecom_app_send(struct qseecom_client *client, void *req, size_t req_size,
47− void *rsp, size_t rsp_size)
92+static inline int qcom_qseecom_app_send(struct qseecom_client *client,
93+ dma_addr_t req, size_t req_size,
94+ dma_addr_t rsp, size_t rsp_size)
4895 {
4996 return qcom_scm_qseecom_app_send(client->app_id, req, req_size, rsp, rsp_size);
5097 }
include/linux/firmware/qcom/qcom_scm.h+5−5
@@ -118,8 +118,8 @@ bool qcom_scm_lmh_dcvsh_available(void); · 117 unmodified lines
118118 #ifdef CONFIG_QCOM_QSEECOM
119119
120120 int qcom_scm_qseecom_app_get_id(const char *app_name, u32 *app_id);
121−int qcom_scm_qseecom_app_send(u32 app_id, void *req, size_t req_size, void *rsp,
122− size_t rsp_size);
121+int qcom_scm_qseecom_app_send(u32 app_id, dma_addr_t req, size_t req_size,
122+ dma_addr_t rsp, size_t rsp_size);
123123
124124 #else /* CONFIG_QCOM_QSEECOM */
125125
@@ -128,9 +128,9 @@ static inline int qcom_scm_qseecom_app_get_id(const char *app_name, u32 *app_id) · 2 unmodified lines
128128 return -EINVAL;
129129 }
130130
131−static inline int qcom_scm_qseecom_app_send(u32 app_id, void *req,
132− size_t req_size, void *rsp,
133− size_t rsp_size)
131+static inline int qcom_scm_qseecom_app_send(u32 app_id,
132+ dma_addr_t req, size_t req_size,
133+ dma_addr_t rsp, size_t rsp_size)
134134 {
135135 return -EINVAL;
136136 }