Commit 99ba3dca9ef7c7b30f6a9014edb53c80556d6da9
1 parent
898994a161
Exists in
smarct4x-processor-sdk-linux-02.00.01
and in
3 other branches
remoteproc/keystone: add support for Keystone 2 Galileo SOCs
Add support to the keystone remoteproc driver for managing the DSP present in the Keystone 2 Galileo (K2G) SoC. The K2G SoC has a Power Management Micro Controller (PMMC) that manages the individual device's power, clock and reset functionalities. The keystone remoteproc driver already uses standard frameworks for reset and clock control, so it doesn't require any significant modifications other than a new compatible suitable for K2G DSP. The binding document is also updated to reflect the modified property values used by the K2G DSP node as compared to the values used by existing Keystone 2 DSPs. NOTE: The enhancement to use common pm_runtime framework for all Keystone 2 SoCs is left for a future time. The redundata clock API usage for K2G does not impact any functionality, but is still required for other K2 SoCs. Signed-off-by: Suman Anna <s-anna@ti.com> Signed-off-by: Andrew F. Davis <afd@ti.com>
Showing 2 changed files with 45 additions and 5 deletions Side-by-side Diff
Documentation/devicetree/bindings/remoteproc/ti,keystone-rproc.txt
1 | 1 | TI Keystone DSP devices |
2 | 2 | ======================= |
3 | 3 | |
4 | -Binding status: Unstable - Subject to changes for Keystone2 Galileo SoCs | |
4 | +Binding status: Unstable - Subject to changes for using common shared memories | |
5 | 5 | |
6 | 6 | The TI Keystone 2 family of SoCs usually have one or more (upto 8) TI DSP Core |
7 | 7 | sub-systems that are used to offload some of the processor-intensive tasks or |
... | ... | @@ -27,6 +27,7 @@ |
27 | 27 | "ti,k2hk-dsp" for DSPs on Keystone2 Hawking/Kepler SoCs |
28 | 28 | "ti,k2l-dsp" for DSPs on Keystone2 Lamarr SoCs |
29 | 29 | "ti,k2e-dsp" for DSPs on Keystone2 Edison SoCs |
30 | + "ti,k2g-dsp" for DSPs on Keystone2 Galileo SoCs | |
30 | 31 | |
31 | 32 | - reg: Should contain an entry for each value in 'reg-names'. |
32 | 33 | Each entry should have the memory region's start address |
... | ... | @@ -41,6 +42,9 @@ |
41 | 42 | - clocks: Should contain the device's input clock, and should be |
42 | 43 | defined as per the bindings in, |
43 | 44 | Documentation/devicetree/bindings/clock/keystone-gate.txt |
45 | + for K2HK/K2L/K2E SoCs or, | |
46 | + Documentation/devicetree/bindings/clock/ti,sci-clk.txt | |
47 | + for K2G SoC | |
44 | 48 | |
45 | 49 | - ti,syscon-dev: Should be a pair of the phandle to the Keystone Device |
46 | 50 | State Control node, and the register offset of the DSP |
47 | 51 | |
... | ... | @@ -50,9 +54,12 @@ |
50 | 54 | managing the resets for this device, and an array of |
51 | 55 | cells for the reset argument specifier as defined by |
52 | 56 | the selected reset controller node's binding. Please |
53 | - also refer to the reset bindings for the reset argument | |
54 | - specifier details. This is defined in, | |
57 | + also refer to either of the following reset bindings | |
58 | + for the reset argument specifier as per SoC, | |
55 | 59 | Documentation/devicetree/bindings/reset/reset/syscon-reset.txt |
60 | + for K2HK/K2L/K2E SoCs or, | |
61 | + Documentation/devicetree/bindings/reset/reset/ti,sci-reset.txt | |
62 | + for K2G SoC | |
56 | 63 | |
57 | 64 | - interrupt-parent: Should contain a phandle to the Keystone 2 IRQ controller |
58 | 65 | IP node that is used by the ARM CorePac processor to |
... | ... | @@ -80,6 +87,11 @@ |
80 | 87 | Optional properties: |
81 | 88 | -------------------- |
82 | 89 | |
90 | +- power-domains : _required_ property only for Keystone 2 Galileo SoC. | |
91 | + Should contain a phandle to a PM domain provider node, | |
92 | + and a PM domain specifier as defined by the binding, | |
93 | + Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt | |
94 | + | |
83 | 95 | - memory-region : phandle to the reserved memory node to be associated |
84 | 96 | with the remoteproc device. The reserved memory node |
85 | 97 | can be a CMA memory node, and should be defined as |
86 | 98 | |
... | ... | @@ -87,9 +99,10 @@ |
87 | 99 | Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt |
88 | 100 | |
89 | 101 | |
90 | -Example: | |
91 | --------- | |
102 | +Examples: | |
103 | +--------- | |
92 | 104 | |
105 | +1. | |
93 | 106 | /* K2HK DSP node in SoC DTS file */ |
94 | 107 | soc { |
95 | 108 | dsp0: dsp0 { |
... | ... | @@ -110,6 +123,32 @@ |
110 | 123 | }; |
111 | 124 | |
112 | 125 | /* K2HK EVM Board file */ |
126 | + &dsp0 { | |
127 | + memory-region = <&dsp_common_cma_pool>; | |
128 | + }; | |
129 | + | |
130 | +2. | |
131 | + /* K2G DSP node in SoC DTS file */ | |
132 | + soc { | |
133 | + dsp0: dsp0 { | |
134 | + compatible = "ti,k2g-dsp"; | |
135 | + reg = <0x10800000 0x00100000>, | |
136 | + <0x10e00000 0x00008000>, | |
137 | + <0x10f00000 0x00008000>; | |
138 | + reg-names = "l2sram", "l1pram", "l1dram"; | |
139 | + power-domains = <&k2g_pds K2G_DEV_CGEM0>; | |
140 | + clocks = <&k2g_clks K2G_DEV_CGEM0 0>; | |
141 | + ti,syscon-dev = <&devctrl 0x40>; | |
142 | + resets = <&k2g_reset K2G_DEV_CGEM0 K2G_DEV_CGEM0_DSP0_RESET>; | |
143 | + interrupt-parent = <&kirq0>; | |
144 | + interrupts = <0 8>; | |
145 | + interrupt-names = "vring", "exception"; | |
146 | + kick-gpio = <&dspgpio0 27 0>; | |
147 | + }; | |
148 | + | |
149 | + }; | |
150 | + | |
151 | + /* K2G EVM Board file */ | |
113 | 152 | &dsp0 { |
114 | 153 | memory-region = <&dsp_common_cma_pool>; |
115 | 154 | }; |
drivers/remoteproc/keystone_remoteproc.c