History

Merge tag 'ti-k3-soc-for-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/kristo/linux into arm/late

Texas Instruments K3 SoC family changes for 5.4 - Typo fixes for gic-its unit addresses for both am654 and j721e - HW spinlock nodes added for both am654 and j721e - GPIO support for j721e - power-domain cells update for both am654 / j721e for exclusive only access * tag 'ti-k3-soc-for-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/kristo/linux: arm64: dts: ti: k3-j721e-main: Fix gic-its node unit-address arm64: dts: ti: k3-am65-main: Fix gic-its node unit-address arm64: dts: ti: k3-j721e-main: Add hwspinlock node arm64: dts: ti: k3-am65-main: Add hwspinlock node arm64: dts: k3-j721e: Add gpio-keys on common processor board dt-bindings: pinctrl: k3: Introduce pinmux definitions for J721E arm64: dts: ti: k3-j721e-common-proc-board: Disable unused gpio modules arm64: dts: ti: k3-j721e: Add gpio nodes in wakeup domain arm64: dts: ti: k3-j721e: Add gpio nodes in main domain arm64: dts: ti: k3-j721e: Update the power domain cells arm64: dts: ti: k3-am654: Update the power domain cells soc: ti: ti_sci_pm_domains: Add support for exclusive and shared access dt-bindings: ti_sci_pm_domains: Add support for exclusive and shared access firmware: ti_sci: Allow for device shared and exclusive requests

Arnd Bergmann committed 7 years ago

Commit 65ab0db2 parents 1fb2e59 d6dabd616 files · +384 −51Browse files

Unified · Split

16 files
  1. Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt +9 −2
  2. MAINTAINERS +1 −0
  3. arch/arm64/boot/dts/ti/k3-am65-main.dtsi +29 −23
  4. arch/arm64/boot/dts/ti/k3-am65-mcu.dtsi +5 −5
  5. arch/arm64/boot/dts/ti/k3-am65-wakeup.dtsi +3 −3
  6. arch/arm64/boot/dts/ti/k3-am65.dtsi +1 −0
  7. arch/arm64/boot/dts/ti/k3-am654-base-board.dts +1 −0
  8. arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts +69 −0
  9. arch/arm64/boot/dts/ti/k3-j721e-main.dtsi +149 −11
  10. arch/arm64/boot/dts/ti/k3-j721e-mcu-wakeup.dtsi +37 −3
  11. arch/arm64/boot/dts/ti/k3-j721e.dtsi +1 −0
  12. drivers/firmware/ti_sci.c +43 −2
  13. drivers/soc/ti/ti_sci_pm_domains.c +21 −2
  14. include/dt-bindings/pinctrl/k3.h +3 −0
  15. include/dt-bindings/soc/ti,sci_pm_domain.h +9 −0
  16. include/linux/soc/ti/ti_sci_protocol.h +3 −0
Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt+9−2
@@ -19,8 +19,15 @@ child of the pmmc node. · 18 unmodified lines
1919 Required Properties:
2020 --------------------
2121 - compatible: should be "ti,sci-pm-domain"
22−- #power-domain-cells: Must be 1 so that an id can be provided in each
23− device node.
22+- #power-domain-cells: Can be one of the following:
23+ 1: Containing the device id of each node
24+ 2: First entry should be device id
25+ Second entry should be one of the floowing:
26+ TI_SCI_PD_EXCLUSIVE: To allow device to be
27+ exclusively controlled by
28+ the requesting hosts.
29+ TI_SCI_PD_SHARED: To allow device to be shared
30+ by multiple hosts.
2431
2532 Example (K2G):
2633 -------------
MAINTAINERS+1−0
@@ -15885,6 +15885,7 @@ F: drivers/firmware/ti_sci* · 15884 unmodified lines
1588515885 F: include/linux/soc/ti/ti_sci_protocol.h
1588615886 F: Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt
1588715887 F: drivers/soc/ti/ti_sci_pm_domains.c
15888+F: include/dt-bindings/soc/ti,sci_pm_domain.h
1588815889 F: Documentation/devicetree/bindings/reset/ti,sci-reset.txt
1588915890 F: Documentation/devicetree/bindings/clock/ti,sci-clk.txt
1589015891 F: drivers/clk/keystone/sci-clk.c
arch/arm64/boot/dts/ti/k3-am65-main.dtsi+29−23
@@ -42,7 +42,7 @@ · 41 unmodified lines
4242 */
4343 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
4444
45− gic_its: gic-its@18200000 {
45+ gic_its: gic-its@1820000 {
4646 compatible = "arm,gic-v3-its";
4747 reg = <0x00 0x01820000 0x00 0x10000>;
4848 socionext,synquacer-pre-its = <0x1000000 0x400000>;
@@ -67,7 +67,7 @@ · 18 unmodified lines
6767 reg = <0x0 0x900000 0x0 0x2000>;
6868 reg-names = "serdes";
6969 #phy-cells = <2>;
70− power-domains = <&k3_pds 153>;
70+ power-domains = <&k3_pds 153 TI_SCI_PD_EXCLUSIVE>;
7171 clocks = <&k3_clks 153 4>, <&k3_clks 153 1>, <&serdes1 AM654_SERDES_LO_REFCLK>;
7272 clock-output-names = "serdes0_cmu_refclk", "serdes0_lo_refclk", "serdes0_ro_refclk";
7373 assigned-clocks = <&k3_clks 153 4>, <&serdes0 AM654_SERDES_CMU_REFCLK>;
@@ -82,7 +82,7 @@ · 8 unmodified lines
8282 reg = <0x0 0x910000 0x0 0x2000>;
8383 reg-names = "serdes";
8484 #phy-cells = <2>;
85− power-domains = <&k3_pds 154>;
85+ power-domains = <&k3_pds 154 TI_SCI_PD_EXCLUSIVE>;
8686 clocks = <&serdes0 AM654_SERDES_RO_REFCLK>, <&k3_clks 154 1>, <&k3_clks 154 5>;
8787 clock-output-names = "serdes1_cmu_refclk", "serdes1_lo_refclk", "serdes1_ro_refclk";
8888 assigned-clocks = <&k3_clks 154 5>, <&serdes1 AM654_SERDES_CMU_REFCLK>;
@@ -100,7 +100,7 @@ · 11 unmodified lines
100100 interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
101101 clock-frequency = <48000000>;
102102 current-speed = <115200>;
103− power-domains = <&k3_pds 146>;
103+ power-domains = <&k3_pds 146 TI_SCI_PD_EXCLUSIVE>;
104104 };
105105
106106 main_uart1: serial@2810000 {
@@ -110,7 +110,7 @@ · 3 unmodified lines
110110 reg-io-width = <4>;
111111 interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>;
112112 clock-frequency = <48000000>;
113− power-domains = <&k3_pds 147>;
113+ power-domains = <&k3_pds 147 TI_SCI_PD_EXCLUSIVE>;
114114 };
115115
116116 main_uart2: serial@2820000 {
@@ -120,7 +120,7 @@ · 3 unmodified lines
120120 reg-io-width = <4>;
121121 interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>;
122122 clock-frequency = <48000000>;
123− power-domains = <&k3_pds 148>;
123+ power-domains = <&k3_pds 148 TI_SCI_PD_EXCLUSIVE>;
124124 };
125125
126126 main_pmx0: pinmux@11c000 {
@@ -147,7 +147,7 @@ · 20 unmodified lines
147147 #size-cells = <0>;
148148 clock-names = "fck";
149149 clocks = <&k3_clks 110 1>;
150− power-domains = <&k3_pds 110>;
150+ power-domains = <&k3_pds 110 TI_SCI_PD_EXCLUSIVE>;
151151 };
152152
153153 main_i2c1: i2c@2010000 {
@@ -158,7 +158,7 @@ · 4 unmodified lines
158158 #size-cells = <0>;
159159 clock-names = "fck";
160160 clocks = <&k3_clks 111 1>;
161− power-domains = <&k3_pds 111>;
161+ power-domains = <&k3_pds 111 TI_SCI_PD_EXCLUSIVE>;
162162 };
163163
164164 main_i2c2: i2c@2020000 {
@@ -169,7 +169,7 @@ · 4 unmodified lines
169169 #size-cells = <0>;
170170 clock-names = "fck";
171171 clocks = <&k3_clks 112 1>;
172− power-domains = <&k3_pds 112>;
172+ power-domains = <&k3_pds 112 TI_SCI_PD_EXCLUSIVE>;
173173 };
174174
175175 main_i2c3: i2c@2030000 {
@@ -180,14 +180,14 @@ · 4 unmodified lines
180180 #size-cells = <0>;
181181 clock-names = "fck";
182182 clocks = <&k3_clks 113 1>;
183− power-domains = <&k3_pds 113>;
183+ power-domains = <&k3_pds 113 TI_SCI_PD_EXCLUSIVE>;
184184 };
185185
186186 ecap0: pwm@3100000 {
187187 compatible = "ti,am654-ecap", "ti,am3352-ecap";
188188 #pwm-cells = <3>;
189189 reg = <0x0 0x03100000 0x0 0x60>;
190− power-domains = <&k3_pds 39>;
190+ power-domains = <&k3_pds 39 TI_SCI_PD_EXCLUSIVE>;
191191 clocks = <&k3_clks 39 0>;
192192 clock-names = "fck";
193193 };
@@ -197,7 +197,7 @@ · 3 unmodified lines
197197 reg = <0x0 0x2100000 0x0 0x400>;
198198 interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
199199 clocks = <&k3_clks 137 1>;
200− power-domains = <&k3_pds 137>;
200+ power-domains = <&k3_pds 137 TI_SCI_PD_EXCLUSIVE>;
201201 #address-cells = <1>;
202202 #size-cells = <0>;
203203 };
@@ -207,7 +207,7 @@ · 3 unmodified lines
207207 reg = <0x0 0x2110000 0x0 0x400>;
208208 interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>;
209209 clocks = <&k3_clks 138 1>;
210− power-domains = <&k3_pds 138>;
210+ power-domains = <&k3_pds 138 TI_SCI_PD_EXCLUSIVE>;
211211 #address-cells = <1>;
212212 #size-cells = <0>;
213213 assigned-clocks = <&k3_clks 137 1>;
@@ -219,7 +219,7 @@ · 5 unmodified lines
219219 reg = <0x0 0x2120000 0x0 0x400>;
220220 interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
221221 clocks = <&k3_clks 139 1>;
222− power-domains = <&k3_pds 139>;
222+ power-domains = <&k3_pds 139 TI_SCI_PD_EXCLUSIVE>;
223223 #address-cells = <1>;
224224 #size-cells = <0>;
225225 };
@@ -229,7 +229,7 @@ · 3 unmodified lines
229229 reg = <0x0 0x2130000 0x0 0x400>;
230230 interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;
231231 clocks = <&k3_clks 140 1>;
232− power-domains = <&k3_pds 140>;
232+ power-domains = <&k3_pds 140 TI_SCI_PD_EXCLUSIVE>;
233233 #address-cells = <1>;
234234 #size-cells = <0>;
235235 };
@@ -239,7 +239,7 @@ · 3 unmodified lines
239239 reg = <0x0 0x2140000 0x0 0x400>;
240240 interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
241241 clocks = <&k3_clks 141 1>;
242− power-domains = <&k3_pds 141>;
242+ power-domains = <&k3_pds 141 TI_SCI_PD_EXCLUSIVE>;
243243 #address-cells = <1>;
244244 #size-cells = <0>;
245245 };
@@ -247,7 +247,7 @@ · 1 unmodified line
247247 sdhci0: sdhci@4f80000 {
248248 compatible = "ti,am654-sdhci-5.1";
249249 reg = <0x0 0x4f80000 0x0 0x260>, <0x0 0x4f90000 0x0 0x134>;
250− power-domains = <&k3_pds 47>;
250+ power-domains = <&k3_pds 47 TI_SCI_PD_EXCLUSIVE>;
251251 clocks = <&k3_clks 47 0>, <&k3_clks 47 1>;
252252 clock-names = "clk_ahb", "clk_xin";
253253 interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
@@ -306,7 +306,7 @@ · 52 unmodified lines
306306 ranges = <0x0 0x0 0x4000000 0x20000>;
307307 interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
308308 dma-coherent;
309− power-domains = <&k3_pds 151>;
309+ power-domains = <&k3_pds 151 TI_SCI_PD_EXCLUSIVE>;
310310 assigned-clocks = <&k3_clks 151 2>, <&k3_clks 151 7>;
311311 assigned-clock-parents = <&k3_clks 151 4>, /* set REF_CLK to 20MHz i.e. PER0_PLL/48 */
312312 <&k3_clks 151 9>; /* set PIPE3_TXB_CLK to CLK_12M_RC/256 (for HS only) */
@@ -345,7 +345,7 @@ · 32 unmodified lines
345345 ranges = <0x0 0x0 0x4020000 0x20000>;
346346 interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
347347 dma-coherent;
348− power-domains = <&k3_pds 152>;
348+ power-domains = <&k3_pds 152 TI_SCI_PD_EXCLUSIVE>;
349349 assigned-clocks = <&k3_clks 152 2>;
350350 assigned-clock-parents = <&k3_clks 152 4>; /* set REF_CLK to 20MHz i.e. PER0_PLL/48 */
351351
@@ -413,6 +413,12 @@ · 61 unmodified lines
413413 ti,sci-rm-range-vint = <0x0>;
414414 ti,sci-rm-range-global-event = <0x1>;
415415 };
416+
417+ hwspinlock: spinlock@30e00000 {
418+ compatible = "ti,am654-hwspinlock";
419+ reg = <0x00 0x30e00000 0x00 0x1000>;
420+ #hwlock-cells = <1>;
421+ };
416422 };
417423
418424 main_gpio0: main_gpio0@600000 {
@@ -451,7 +457,7 @@ · 32 unmodified lines
451457 compatible = "ti,am654-pcie-rc";
452458 reg = <0x0 0x5500000 0x0 0x1000>, <0x0 0x5501000 0x0 0x1000>, <0x0 0x10000000 0x0 0x2000>, <0x0 0x5506000 0x0 0x1000>;
453459 reg-names = "app", "dbics", "config", "atu";
454− power-domains = <&k3_pds 120>;
460+ power-domains = <&k3_pds 120 TI_SCI_PD_EXCLUSIVE>;
455461 #address-cells = <3>;
456462 #size-cells = <2>;
457463 ranges = <0x81000000 0 0 0x0 0x10020000 0 0x00010000
@@ -470,7 +476,7 @@ · 12 unmodified lines
470476 compatible = "ti,am654-pcie-ep";
471477 reg = <0x0 0x5500000 0x0 0x1000>, <0x0 0x5501000 0x0 0x1000>, <0x0 0x10000000 0x0 0x8000000>, <0x0 0x5506000 0x0 0x1000>;
472478 reg-names = "app", "dbics", "addr_space", "atu";
473− power-domains = <&k3_pds 120>;
479+ power-domains = <&k3_pds 120 TI_SCI_PD_EXCLUSIVE>;
474480 ti,syscon-pcie-mode = <&pcie0_mode>;
475481 num-ib-windows = <16>;
476482 num-ob-windows = <16>;
@@ -483,7 +489,7 @@ · 6 unmodified lines
483489 compatible = "ti,am654-pcie-rc";
484490 reg = <0x0 0x5600000 0x0 0x1000>, <0x0 0x5601000 0x0 0x1000>, <0x0 0x18000000 0x0 0x2000>, <0x0 0x5606000 0x0 0x1000>;
485491 reg-names = "app", "dbics", "config", "atu";
486− power-domains = <&k3_pds 121>;
492+ power-domains = <&k3_pds 121 TI_SCI_PD_EXCLUSIVE>;
487493 #address-cells = <3>;
488494 #size-cells = <2>;
489495 ranges = <0x81000000 0 0 0x0 0x18020000 0 0x00010000
@@ -502,7 +508,7 @@ · 12 unmodified lines
502508 compatible = "ti,am654-pcie-ep";
503509 reg = <0x0 0x5600000 0x0 0x1000>, <0x0 0x5601000 0x0 0x1000>, <0x0 0x18000000 0x0 0x4000000>, <0x0 0x5606000 0x0 0x1000>;
504510 reg-names = "app", "dbics", "addr_space", "atu";
505− power-domains = <&k3_pds 121>;
511+ power-domains = <&k3_pds 121 TI_SCI_PD_EXCLUSIVE>;
506512 ti,syscon-pcie-mode = <&pcie1_mode>;
507513 num-ib-windows = <16>;
508514 num-ob-windows = <16>;
arch/arm64/boot/dts/ti/k3-am65-mcu.dtsi+5−5
@@ -14,7 +14,7 @@ · 13 unmodified lines
1414 interrupts = <GIC_SPI 565 IRQ_TYPE_LEVEL_HIGH>;
1515 clock-frequency = <96000000>;
1616 current-speed = <115200>;
17− power-domains = <&k3_pds 149>;
17+ power-domains = <&k3_pds 149 TI_SCI_PD_EXCLUSIVE>;
1818 };
1919
2020 mcu_ram: sram@41c00000 {
@@ -33,7 +33,7 @@ · 12 unmodified lines
3333 #size-cells = <0>;
3434 clock-names = "fck";
3535 clocks = <&k3_clks 114 1>;
36− power-domains = <&k3_pds 114>;
36+ power-domains = <&k3_pds 114 TI_SCI_PD_EXCLUSIVE>;
3737 };
3838
3939 mcu_spi0: spi@40300000 {
@@ -41,7 +41,7 @@ · 1 unmodified line
4141 reg = <0x0 0x40300000 0x0 0x400>;
4242 interrupts = <GIC_SPI 560 IRQ_TYPE_LEVEL_HIGH>;
4343 clocks = <&k3_clks 142 1>;
44− power-domains = <&k3_pds 142>;
44+ power-domains = <&k3_pds 142 TI_SCI_PD_EXCLUSIVE>;
4545 #address-cells = <1>;
4646 #size-cells = <0>;
4747 };
@@ -51,7 +51,7 @@ · 3 unmodified lines
5151 reg = <0x0 0x40310000 0x0 0x400>;
5252 interrupts = <GIC_SPI 561 IRQ_TYPE_LEVEL_HIGH>;
5353 clocks = <&k3_clks 143 1>;
54− power-domains = <&k3_pds 143>;
54+ power-domains = <&k3_pds 143 TI_SCI_PD_EXCLUSIVE>;
5555 #address-cells = <1>;
5656 #size-cells = <0>;
5757 };
@@ -61,7 +61,7 @@ · 3 unmodified lines
6161 reg = <0x0 0x40320000 0x0 0x400>;
6262 interrupts = <GIC_SPI 562 IRQ_TYPE_LEVEL_HIGH>;
6363 clocks = <&k3_clks 144 1>;
64− power-domains = <&k3_pds 144>;
64+ power-domains = <&k3_pds 144 TI_SCI_PD_EXCLUSIVE>;
6565 #address-cells = <1>;
6666 #size-cells = <0>;
6767 };
arch/arm64/boot/dts/ti/k3-am65-wakeup.dtsi+3−3
@@ -20,7 +20,7 @@ · 19 unmodified lines
2020
2121 k3_pds: power-controller {
2222 compatible = "ti,sci-pm-domain";
23− #power-domain-cells = <1>;
23+ #power-domain-cells = <2>;
2424 };
2525
2626 k3_clks: clocks {
@@ -50,7 +50,7 @@ · 23 unmodified lines
5050 interrupts = <GIC_SPI 697 IRQ_TYPE_LEVEL_HIGH>;
5151 clock-frequency = <48000000>;
5252 current-speed = <115200>;
53− power-domains = <&k3_pds 150>;
53+ power-domains = <&k3_pds 150 TI_SCI_PD_EXCLUSIVE>;
5454 };
5555
5656 wkup_i2c0: i2c@42120000 {
@@ -61,7 +61,7 @@ · 4 unmodified lines
6161 #size-cells = <0>;
6262 clock-names = "fck";
6363 clocks = <&k3_clks 115 1>;
64− power-domains = <&k3_pds 115>;
64+ power-domains = <&k3_pds 115 TI_SCI_PD_EXCLUSIVE>;
6565 };
6666
6767 intr_wkup_gpio: interrupt-controller2 {
arch/arm64/boot/dts/ti/k3-am65.dtsi+1−0
@@ -9,6 +9,7 @@ · 8 unmodified lines
99 #include <dt-bindings/interrupt-controller/irq.h>
1010 #include <dt-bindings/interrupt-controller/arm-gic.h>
1111 #include <dt-bindings/pinctrl/k3.h>
12+#include <dt-bindings/soc/ti,sci_pm_domain.h>
1213
1314 / {
1415 model = "Texas Instruments K3 AM654 SoC";
arch/arm64/boot/dts/ti/k3-am654-base-board.dts+1−0
@@ -151,6 +151,7 @@ · 150 unmodified lines
151151 &main_uart0 {
152152 pinctrl-names = "default";
153153 pinctrl-0 = <&main_uart0_pins_default>;
154+ power-domains = <&k3_pds 146 TI_SCI_PD_SHARED>;
154155 };
155156
156157 &wkup_i2c0 {
arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts+69−0
@@ -6,12 +6,49 @@ · 5 unmodified lines
66 /dts-v1/;
77
88 #include "k3-j721e-som-p0.dtsi"
9+#include <dt-bindings/gpio/gpio.h>
10+#include <dt-bindings/input/input.h>
911
1012 / {
1113 chosen {
1214 stdout-path = "serial2:115200n8";
1315 bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";
1416 };
17+
18+ gpio_keys: gpio-keys {
19+ compatible = "gpio-keys";
20+ autorepeat;
21+ pinctrl-names = "default";
22+ pinctrl-0 = <&sw10_button_pins_default &sw11_button_pins_default>;
23+
24+ sw10: sw10 {
25+ label = "GPIO Key USER1";
26+ linux,code = <BTN_0>;
27+ gpios = <&main_gpio0 0 GPIO_ACTIVE_LOW>;
28+ };
29+
30+ sw11: sw11 {
31+ label = "GPIO Key USER2";
32+ linux,code = <BTN_1>;
33+ gpios = <&wkup_gpio0 7 GPIO_ACTIVE_LOW>;
34+ };
35+ };
36+};
37+
38+&main_pmx0 {
39+ sw10_button_pins_default: sw10_button_pins_default {
40+ pinctrl-single,pins = <
41+ J721E_IOPAD(0x0, PIN_INPUT, 7) /* (AC18) EXTINTn.GPIO0_0 */
42+ >;
43+ };
44+};
45+
46+&wkup_pmx0 {
47+ sw11_button_pins_default: sw11_button_pins_default {
48+ pinctrl-single,pins = <
49+ J721E_WKUP_IOPAD(0xcc, PIN_INPUT, 7) /* (G28) WKUP_GPIO0_7 */
50+ >;
51+ };
1552 };
1653
1754 &wkup_uart0 {
@@ -19,6 +56,10 @@ · 1 unmodified line
1956 status = "disabled";
2057 };
2158
59+&main_uart0 {
60+ power-domains = <&k3_pds 146 TI_SCI_PD_SHARED>;
61+};
62+
2263 &main_uart3 {
2364 /* UART not brought out */
2465 status = "disabled";
@@ -48,3 +89,31 @@ · 23 unmodified lines
4889 /* UART not brought out */
4990 status = "disabled";
5091 };
92+
93+&main_gpio2 {
94+ status = "disabled";
95+};
96+
97+&main_gpio3 {
98+ status = "disabled";
99+};
100+
101+&main_gpio4 {
102+ status = "disabled";
103+};
104+
105+&main_gpio5 {
106+ status = "disabled";
107+};
108+
109+&main_gpio6 {
110+ status = "disabled";
111+};
112+
113+&main_gpio7 {
114+ status = "disabled";
115+};
116+
117+&wkup_gpio1 {
118+ status = "disabled";
119+};
arch/arm64/boot/dts/ti/k3-j721e-main.dtsi+149−11
@@ -31,7 +31,7 @@ · 30 unmodified lines
3131 /* vcpumntirq: virtual CPU interface maintenance interrupt */
3232 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
3333
34− gic_its: gic-its@18200000 {
34+ gic_its: gic-its@1820000 {
3535 compatible = "arm,gic-v3-its";
3636 reg = <0x00 0x01820000 0x00 0x10000>;
3737 socionext,synquacer-pre-its = <0x1000000 0x400000>;
@@ -89,6 +89,12 @@ · 51 unmodified lines
8989 ti,sci-rm-range-vint = <0xa>;
9090 ti,sci-rm-range-global-event = <0xd>;
9191 };
92+
93+ hwspinlock: spinlock@30e00000 {
94+ compatible = "ti,am654-hwspinlock";
95+ reg = <0x00 0x30e00000 0x00 0x1000>;
96+ #hwlock-cells = <1>;
97+ };
9298 };
9399
94100 secure_proxy_main: mailbox@32c00000 {
@@ -119,7 +125,7 @@ · 24 unmodified lines
119125 interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
120126 clock-frequency = <48000000>;
121127 current-speed = <115200>;
122− power-domains = <&k3_pds 146>;
128+ power-domains = <&k3_pds 146 TI_SCI_PD_EXCLUSIVE>;
123129 clocks = <&k3_clks 146 0>;
124130 clock-names = "fclk";
125131 };
@@ -132,7 +138,7 @@ · 6 unmodified lines
132138 interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>;
133139 clock-frequency = <48000000>;
134140 current-speed = <115200>;
135− power-domains = <&k3_pds 278>;
141+ power-domains = <&k3_pds 278 TI_SCI_PD_EXCLUSIVE>;
136142 clocks = <&k3_clks 278 0>;
137143 clock-names = "fclk";
138144 };
@@ -145,7 +151,7 @@ · 6 unmodified lines
145151 interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>;
146152 clock-frequency = <48000000>;
147153 current-speed = <115200>;
148− power-domains = <&k3_pds 279>;
154+ power-domains = <&k3_pds 279 TI_SCI_PD_EXCLUSIVE>;
149155 clocks = <&k3_clks 279 0>;
150156 clock-names = "fclk";
151157 };
@@ -158,7 +164,7 @@ · 6 unmodified lines
158164 interrupts = <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>;
159165 clock-frequency = <48000000>;
160166 current-speed = <115200>;
161− power-domains = <&k3_pds 280>;
167+ power-domains = <&k3_pds 280 TI_SCI_PD_EXCLUSIVE>;
162168 clocks = <&k3_clks 280 0>;
163169 clock-names = "fclk";
164170 };
@@ -171,7 +177,7 @@ · 6 unmodified lines
171177 interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>;
172178 clock-frequency = <48000000>;
173179 current-speed = <115200>;
174− power-domains = <&k3_pds 281>;
180+ power-domains = <&k3_pds 281 TI_SCI_PD_EXCLUSIVE>;
175181 clocks = <&k3_clks 281 0>;
176182 clock-names = "fclk";
177183 };
@@ -184,7 +190,7 @@ · 6 unmodified lines
184190 interrupts = <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>;
185191 clock-frequency = <48000000>;
186192 current-speed = <115200>;
187− power-domains = <&k3_pds 282>;
193+ power-domains = <&k3_pds 282 TI_SCI_PD_EXCLUSIVE>;
188194 clocks = <&k3_clks 282 0>;
189195 clock-names = "fclk";
190196 };
@@ -197,7 +203,7 @@ · 6 unmodified lines
197203 interrupts = <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>;
198204 clock-frequency = <48000000>;
199205 current-speed = <115200>;
200− power-domains = <&k3_pds 283>;
206+ power-domains = <&k3_pds 283 TI_SCI_PD_EXCLUSIVE>;
201207 clocks = <&k3_clks 283 0>;
202208 clock-names = "fclk";
203209 };
@@ -210,7 +216,7 @@ · 6 unmodified lines
210216 interrupts = <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>;
211217 clock-frequency = <48000000>;
212218 current-speed = <115200>;
213− power-domains = <&k3_pds 284>;
219+ power-domains = <&k3_pds 284 TI_SCI_PD_EXCLUSIVE>;
214220 clocks = <&k3_clks 284 0>;
215221 clock-names = "fclk";
216222 };
@@ -223,7 +229,7 @@ · 6 unmodified lines
223229 interrupts = <GIC_SPI 248 IRQ_TYPE_LEVEL_HIGH>;
224230 clock-frequency = <48000000>;
225231 current-speed = <115200>;
226− power-domains = <&k3_pds 285>;
232+ power-domains = <&k3_pds 285 TI_SCI_PD_EXCLUSIVE>;
227233 clocks = <&k3_clks 285 0>;
228234 clock-names = "fclk";
229235 };
@@ -236,8 +242,140 @@ · 6 unmodified lines
236242 interrupts = <GIC_SPI 249 IRQ_TYPE_LEVEL_HIGH>;
237243 clock-frequency = <48000000>;
238244 current-speed = <115200>;
239− power-domains = <&k3_pds 286>;
245+ power-domains = <&k3_pds 286 TI_SCI_PD_EXCLUSIVE>;
240246 clocks = <&k3_clks 286 0>;
241247 clock-names = "fclk";
242248 };
249+
250+ main_gpio0: gpio@600000 {
251+ compatible = "ti,j721e-gpio", "ti,keystone-gpio";
252+ reg = <0x0 0x00600000 0x0 0x100>;
253+ gpio-controller;
254+ #gpio-cells = <2>;
255+ interrupt-parent = <&main_gpio_intr>;
256+ interrupts = <105 0>, <105 1>, <105 2>, <105 3>,
257+ <105 4>, <105 5>, <105 6>, <105 7>;
258+ interrupt-controller;
259+ #interrupt-cells = <2>;
260+ ti,ngpio = <128>;
261+ ti,davinci-gpio-unbanked = <0>;
262+ power-domains = <&k3_pds 105 TI_SCI_PD_EXCLUSIVE>;
263+ clocks = <&k3_clks 105 0>;
264+ clock-names = "gpio";
265+ };
266+
267+ main_gpio1: gpio@601000 {
268+ compatible = "ti,j721e-gpio", "ti,keystone-gpio";
269+ reg = <0x0 0x00601000 0x0 0x100>;
270+ gpio-controller;
271+ #gpio-cells = <2>;
272+ interrupt-parent = <&main_gpio_intr>;
273+ interrupts = <106 0>, <106 1>, <106 2>;
274+ interrupt-controller;
275+ #interrupt-cells = <2>;
276+ ti,ngpio = <36>;
277+ ti,davinci-gpio-unbanked = <0>;
278+ power-domains = <&k3_pds 106 TI_SCI_PD_EXCLUSIVE>;
279+ clocks = <&k3_clks 106 0>;
280+ clock-names = "gpio";
281+ };
282+
283+ main_gpio2: gpio@610000 {
284+ compatible = "ti,j721e-gpio", "ti,keystone-gpio";
285+ reg = <0x0 0x00610000 0x0 0x100>;
286+ gpio-controller;
287+ #gpio-cells = <2>;
288+ interrupt-parent = <&main_gpio_intr>;
289+ interrupts = <107 0>, <107 1>, <107 2>, <107 3>,
290+ <107 4>, <107 5>, <107 6>, <107 7>;
291+ interrupt-controller;
292+ #interrupt-cells = <2>;
293+ ti,ngpio = <128>;
294+ ti,davinci-gpio-unbanked = <0>;
295+ power-domains = <&k3_pds 107 TI_SCI_PD_EXCLUSIVE>;
296+ clocks = <&k3_clks 107 0>;
297+ clock-names = "gpio";
298+ };
299+
300+ main_gpio3: gpio@611000 {
301+ compatible = "ti,j721e-gpio", "ti,keystone-gpio";
302+ reg = <0x0 0x00611000 0x0 0x100>;
303+ gpio-controller;
304+ #gpio-cells = <2>;
305+ interrupt-parent = <&main_gpio_intr>;
306+ interrupts = <108 0>, <108 1>, <108 2>;
307+ interrupt-controller;
308+ #interrupt-cells = <2>;
309+ ti,ngpio = <36>;
310+ ti,davinci-gpio-unbanked = <0>;
311+ power-domains = <&k3_pds 108 TI_SCI_PD_EXCLUSIVE>;
312+ clocks = <&k3_clks 108 0>;
313+ clock-names = "gpio";
314+ };
315+
316+ main_gpio4: gpio@620000 {
317+ compatible = "ti,j721e-gpio", "ti,keystone-gpio";
318+ reg = <0x0 0x00620000 0x0 0x100>;
319+ gpio-controller;
320+ #gpio-cells = <2>;
321+ interrupt-parent = <&main_gpio_intr>;
322+ interrupts = <109 0>, <109 1>, <109 2>, <109 3>,
323+ <109 4>, <109 5>, <109 6>, <109 7>;
324+ interrupt-controller;
325+ #interrupt-cells = <2>;
326+ ti,ngpio = <128>;
327+ ti,davinci-gpio-unbanked = <0>;
328+ power-domains = <&k3_pds 109 TI_SCI_PD_EXCLUSIVE>;
329+ clocks = <&k3_clks 109 0>;
330+ clock-names = "gpio";
331+ };
332+
333+ main_gpio5: gpio@621000 {
334+ compatible = "ti,j721e-gpio", "ti,keystone-gpio";
335+ reg = <0x0 0x00621000 0x0 0x100>;
336+ gpio-controller;
337+ #gpio-cells = <2>;
338+ interrupt-parent = <&main_gpio_intr>;
339+ interrupts = <110 0>, <110 1>, <110 2>;
340+ interrupt-controller;
341+ #interrupt-cells = <2>;
342+ ti,ngpio = <36>;
343+ ti,davinci-gpio-unbanked = <0>;
344+ power-domains = <&k3_pds 110 TI_SCI_PD_EXCLUSIVE>;
345+ clocks = <&k3_clks 110 0>;
346+ clock-names = "gpio";
347+ };
348+
349+ main_gpio6: gpio@630000 {
350+ compatible = "ti,j721e-gpio", "ti,keystone-gpio";
351+ reg = <0x0 0x00630000 0x0 0x100>;
352+ gpio-controller;
353+ #gpio-cells = <2>;
354+ interrupt-parent = <&main_gpio_intr>;
355+ interrupts = <111 0>, <111 1>, <111 2>, <111 3>,
356+ <111 4>, <111 5>, <111 6>, <111 7>;
357+ interrupt-controller;
358+ #interrupt-cells = <2>;
359+ ti,ngpio = <128>;
360+ ti,davinci-gpio-unbanked = <0>;
361+ power-domains = <&k3_pds 111 TI_SCI_PD_EXCLUSIVE>;
362+ clocks = <&k3_clks 111 0>;
363+ clock-names = "gpio";
364+ };
365+
366+ main_gpio7: gpio@631000 {
367+ compatible = "ti,j721e-gpio", "ti,keystone-gpio";
368+ reg = <0x0 0x00631000 0x0 0x100>;
369+ gpio-controller;
370+ #gpio-cells = <2>;
371+ interrupt-parent = <&main_gpio_intr>;
372+ interrupts = <112 0>, <112 1>, <112 2>;
373+ interrupt-controller;
374+ #interrupt-cells = <2>;
375+ ti,ngpio = <36>;
376+ ti,davinci-gpio-unbanked = <0>;
377+ power-domains = <&k3_pds 112 TI_SCI_PD_EXCLUSIVE>;
378+ clocks = <&k3_clks 112 0>;
379+ clock-names = "gpio";
380+ };
243381 };
arch/arm64/boot/dts/ti/k3-j721e-mcu-wakeup.dtsi+37−3
@@ -20,7 +20,7 @@ · 19 unmodified lines
2020
2121 k3_pds: power-controller {
2222 compatible = "ti,sci-pm-domain";
23− #power-domain-cells = <1>;
23+ #power-domain-cells = <2>;
2424 };
2525
2626 k3_clks: clocks {
@@ -59,7 +59,7 @@ · 32 unmodified lines
5959 interrupts = <GIC_SPI 897 IRQ_TYPE_LEVEL_HIGH>;
6060 clock-frequency = <48000000>;
6161 current-speed = <115200>;
62− power-domains = <&k3_pds 287>;
62+ power-domains = <&k3_pds 287 TI_SCI_PD_EXCLUSIVE>;
6363 clocks = <&k3_clks 287 0>;
6464 clock-names = "fclk";
6565 };
@@ -72,7 +72,7 @@ · 6 unmodified lines
7272 interrupts = <GIC_SPI 846 IRQ_TYPE_LEVEL_HIGH>;
7373 clock-frequency = <96000000>;
7474 current-speed = <115200>;
75− power-domains = <&k3_pds 149>;
75+ power-domains = <&k3_pds 149 TI_SCI_PD_EXCLUSIVE>;
7676 clocks = <&k3_clks 149 0>;
7777 clock-names = "fclk";
7878 };
@@ -87,4 +87,38 @@ · 8 unmodified lines
8787 ti,sci-dst-id = <14>;
8888 ti,sci-rm-range-girq = <0x5>;
8989 };
90+
91+ wkup_gpio0: gpio@42110000 {
92+ compatible = "ti,j721e-gpio", "ti,keystone-gpio";
93+ reg = <0x0 0x42110000 0x0 0x100>;
94+ gpio-controller;
95+ #gpio-cells = <2>;
96+ interrupt-parent = <&wkup_gpio_intr>;
97+ interrupts = <113 0>, <113 1>, <113 2>,
98+ <113 3>, <113 4>, <113 5>;
99+ interrupt-controller;
100+ #interrupt-cells = <2>;
101+ ti,ngpio = <84>;
102+ ti,davinci-gpio-unbanked = <0>;
103+ power-domains = <&k3_pds 113 TI_SCI_PD_EXCLUSIVE>;
104+ clocks = <&k3_clks 113 0>;
105+ clock-names = "gpio";
106+ };
107+
108+ wkup_gpio1: gpio@42100000 {
109+ compatible = "ti,j721e-gpio", "ti,keystone-gpio";
110+ reg = <0x0 0x42100000 0x0 0x100>;
111+ gpio-controller;
112+ #gpio-cells = <2>;
113+ interrupt-parent = <&wkup_gpio_intr>;
114+ interrupts = <114 0>, <114 1>, <114 2>,
115+ <114 3>, <114 4>, <114 5>;
116+ interrupt-controller;
117+ #interrupt-cells = <2>;
118+ ti,ngpio = <84>;
119+ ti,davinci-gpio-unbanked = <0>;
120+ power-domains = <&k3_pds 114 TI_SCI_PD_EXCLUSIVE>;
121+ clocks = <&k3_clks 114 0>;
122+ clock-names = "gpio";
123+ };
90124 };
arch/arm64/boot/dts/ti/k3-j721e.dtsi+1−0
@@ -8,6 +8,7 @@ · 7 unmodified lines
88 #include <dt-bindings/interrupt-controller/irq.h>
99 #include <dt-bindings/interrupt-controller/arm-gic.h>
1010 #include <dt-bindings/pinctrl/k3.h>
11+#include <dt-bindings/soc/ti,sci_pm_domain.h>
1112
1213 / {
1314 model = "Texas Instruments K3 J721E SoC";
drivers/firmware/ti_sci.c+43−2
@@ -635,6 +635,7 @@ fail: · 634 unmodified lines
635635
636636 /**
637637 * ti_sci_cmd_get_device() - command to request for device managed by TISCI
638+ * that can be shared with other hosts.
638639 * @handle: Pointer to TISCI handle as retrieved by *ti_sci_get_handle
639640 * @id: Device Identifier
640641 *
@@ -642,11 +643,29 @@ fail: · 1 unmodified line
642643 * usage count by balancing get_device with put_device. No refcounting is
643644 * managed by driver for that purpose.
644645 *
645− * NOTE: The request is for exclusive access for the processor.
646− *
647646 * Return: 0 if all went fine, else return appropriate error.
648647 */
649648 static int ti_sci_cmd_get_device(const struct ti_sci_handle *handle, u32 id)
649+{
650+ return ti_sci_set_device_state(handle, id, 0,
651+ MSG_DEVICE_SW_STATE_ON);
652+}
653+
654+/**
655+ * ti_sci_cmd_get_device_exclusive() - command to request for device managed by
656+ * TISCI that is exclusively owned by the
657+ * requesting host.
658+ * @handle: Pointer to TISCI handle as retrieved by *ti_sci_get_handle
659+ * @id: Device Identifier
660+ *
661+ * Request for the device - NOTE: the client MUST maintain integrity of
662+ * usage count by balancing get_device with put_device. No refcounting is
663+ * managed by driver for that purpose.
664+ *
665+ * Return: 0 if all went fine, else return appropriate error.
666+ */
667+static int ti_sci_cmd_get_device_exclusive(const struct ti_sci_handle *handle,
668+ u32 id)
650669 {
651670 return ti_sci_set_device_state(handle, id,
652671 MSG_FLAG_DEVICE_EXCLUSIVE,
@@ -665,6 +684,26 @@ static int ti_sci_cmd_get_device(const struct ti_sci_handle *handle, u32 id) · 12 unmodified lines
665684 * Return: 0 if all went fine, else return appropriate error.
666685 */
667686 static int ti_sci_cmd_idle_device(const struct ti_sci_handle *handle, u32 id)
687+{
688+ return ti_sci_set_device_state(handle, id, 0,
689+ MSG_DEVICE_SW_STATE_RETENTION);
690+}
691+
692+/**
693+ * ti_sci_cmd_idle_device_exclusive() - Command to idle a device managed by
694+ * TISCI that is exclusively owned by
695+ * requesting host.
696+ * @handle: Pointer to TISCI handle as retrieved by *ti_sci_get_handle
697+ * @id: Device Identifier
698+ *
699+ * Request for the device - NOTE: the client MUST maintain integrity of
700+ * usage count by balancing get_device with put_device. No refcounting is
701+ * managed by driver for that purpose.
702+ *
703+ * Return: 0 if all went fine, else return appropriate error.
704+ */
705+static int ti_sci_cmd_idle_device_exclusive(const struct ti_sci_handle *handle,
706+ u32 id)
668707 {
669708 return ti_sci_set_device_state(handle, id,
670709 MSG_FLAG_DEVICE_EXCLUSIVE,
@@ -2894,7 +2933,9 @@ static void ti_sci_setup_ops(struct ti_sci_info *info) · 2223 unmodified lines
28942933 core_ops->reboot_device = ti_sci_cmd_core_reboot;
28952934
28962935 dops->get_device = ti_sci_cmd_get_device;
2936+ dops->get_device_exclusive = ti_sci_cmd_get_device_exclusive;
28972937 dops->idle_device = ti_sci_cmd_idle_device;
2938+ dops->idle_device_exclusive = ti_sci_cmd_idle_device_exclusive;
28982939 dops->put_device = ti_sci_cmd_put_device;
28992940
29002941 dops->is_valid = ti_sci_cmd_dev_is_valid;
drivers/soc/ti/ti_sci_pm_domains.c+21−2
@@ -15,15 +15,19 @@ · 14 unmodified lines
1515 #include <linux/pm_domain.h>
1616 #include <linux/slab.h>
1717 #include <linux/soc/ti/ti_sci_protocol.h>
18+#include <dt-bindings/soc/ti,sci_pm_domain.h>
1819
1920 /**
2021 * struct ti_sci_genpd_dev_data: holds data needed for every device attached
2122 * to this genpd
2223 * @idx: index of the device that identifies it with the system
2324 * control processor.
25+ * @exclusive: Permissions for exclusive request or shared request of the
26+ * device.
2427 */
2528 struct ti_sci_genpd_dev_data {
2629 int idx;
30+ u8 exclusive;
2731 };
2832
2933 /**
@@ -55,6 +59,14 @@ static int ti_sci_dev_id(struct device *dev) · 25 unmodified lines
5559 return sci_dev_data->idx;
5660 }
5761
62+static u8 is_ti_sci_dev_exclusive(struct device *dev)
63+{
64+ struct generic_pm_domain_data *genpd_data = dev_gpd_data(dev);
65+ struct ti_sci_genpd_dev_data *sci_dev_data = genpd_data->data;
66+
67+ return sci_dev_data->exclusive;
68+}
69+
5870 /**
5971 * ti_sci_dev_to_sci_handle(): get pointer to ti_sci_handle
6072 * @dev: pointer to device associated with this genpd
@@ -79,7 +91,10 @@ static int ti_sci_dev_start(struct device *dev) · 18 unmodified lines
7991 const struct ti_sci_handle *ti_sci = ti_sci_dev_to_sci_handle(dev);
8092 int idx = ti_sci_dev_id(dev);
8193
82− return ti_sci->ops.dev_ops.get_device(ti_sci, idx);
94+ if (is_ti_sci_dev_exclusive(dev))
95+ return ti_sci->ops.dev_ops.get_device_exclusive(ti_sci, idx);
96+ else
97+ return ti_sci->ops.dev_ops.get_device(ti_sci, idx);
8398 }
8499
85100 /**
@@ -110,7 +125,7 @@ static int ti_sci_pd_attach_dev(struct generic_pm_domain *domain, · 24 unmodified lines
110125 if (ret < 0)
111126 return ret;
112127
113− if (pd_args.args_count != 1)
128+ if (pd_args.args_count != 1 && pd_args.args_count != 2)
114129 return -EINVAL;
115130
116131 idx = pd_args.args[0];
@@ -128,6 +143,10 @@ static int ti_sci_pd_attach_dev(struct generic_pm_domain *domain, · 11 unmodified lines
128143 return -ENOMEM;
129144
130145 sci_dev_data->idx = idx;
146+ /* Enable the exclusive permissions by default */
147+ sci_dev_data->exclusive = TI_SCI_PD_EXCLUSIVE;
148+ if (pd_args.args_count == 2)
149+ sci_dev_data->exclusive = pd_args.args[1] & 0x1;
131150
132151 genpd_data = dev_gpd_data(dev);
133152 genpd_data->data = sci_dev_data;
include/dt-bindings/pinctrl/k3.h+3−0
@@ -32,4 +32,7 @@ · 31 unmodified lines
3232 #define AM65X_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
3333 #define AM65X_WKUP_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
3434
35+#define J721E_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
36+#define J721E_WKUP_IOPAD(pa, val, muxmode) (((pa) & 0x1fff)) ((val) | (muxmode))
37+
3538 #endif
include/dt-bindings/soc/ti,sci_pm_domain.h+9−0
@@ -0,0 +1,9 @@
1+/* SPDX-License-Identifier: GPL-2.0 */
2+
3+#ifndef __DT_BINDINGS_TI_SCI_PM_DOMAIN_H
4+#define __DT_BINDINGS_TI_SCI_PM_DOMAIN_H
5+
6+#define TI_SCI_PD_EXCLUSIVE 1
7+#define TI_SCI_PD_SHARED 0
8+
9+#endif /* __DT_BINDINGS_TI_SCI_PM_DOMAIN_H */
include/linux/soc/ti/ti_sci_protocol.h+3−0
@@ -97,7 +97,10 @@ struct ti_sci_core_ops { · 96 unmodified lines
9797 */
9898 struct ti_sci_dev_ops {
9999 int (*get_device)(const struct ti_sci_handle *handle, u32 id);
100+ int (*get_device_exclusive)(const struct ti_sci_handle *handle, u32 id);
100101 int (*idle_device)(const struct ti_sci_handle *handle, u32 id);
102+ int (*idle_device_exclusive)(const struct ti_sci_handle *handle,
103+ u32 id);
101104 int (*put_device)(const struct ti_sci_handle *handle, u32 id);
102105 int (*is_valid)(const struct ti_sci_handle *handle, u32 id);
103106 int (*get_context_loss_count)(const struct ti_sci_handle *handle,

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t