Back to home page

OSCL-LXR

 
 

    


0001 TI Keystone DSP devices
0002 =======================
0003 
0004 The TI Keystone 2 family of SoCs usually have one or more (upto 8) TI DSP Core
0005 sub-systems that are used to offload some of the processor-intensive tasks or
0006 algorithms, for achieving various system level goals.
0007 
0008 These processor sub-systems usually contain additional sub-modules like L1
0009 and/or L2 caches/SRAMs, an Interrupt Controller, an external memory controller,
0010 a dedicated local power/sleep controller etc. The DSP processor core in
0011 Keystone 2 SoCs is usually a TMS320C66x CorePac processor.
0012 
0013 DSP Device Node:
0014 ================
0015 Each DSP Core sub-system is represented as a single DT node, and should also
0016 have an alias with the stem 'rproc' defined. Each node has a number of required
0017 or optional properties that enable the OS running on the host processor (ARM
0018 CorePac) to perform the device management of the remote processor and to
0019 communicate with the remote processor.
0020 
0021 Required properties:
0022 --------------------
0023 The following are the mandatory properties:
0024 
0025 - compatible:           Should be one of the following,
0026                             "ti,k2hk-dsp" for DSPs on Keystone 2 66AK2H/K SoCs
0027                             "ti,k2l-dsp" for DSPs on Keystone 2 66AK2L SoCs
0028                             "ti,k2e-dsp" for DSPs on Keystone 2 66AK2E SoCs
0029                             "ti,k2g-dsp" for DSPs on Keystone 2 66AK2G SoCs
0030 
0031 - reg:                  Should contain an entry for each value in 'reg-names'.
0032                         Each entry should have the memory region's start address
0033                         and the size of the region, the representation matching
0034                         the parent node's '#address-cells' and '#size-cells' values.
0035 
0036 - reg-names:            Should contain strings with the following names, each
0037                         representing a specific internal memory region, and
0038                         should be defined in this order,
0039                              "l2sram", "l1pram", "l1dram"
0040 
0041 - ti,syscon-dev:        Should be a pair of the phandle to the Keystone Device
0042                         State Control node, and the register offset of the DSP
0043                         boot address register within that node's address space.
0044 
0045 - resets:               Should contain the phandle to the reset controller node
0046                         managing the resets for this device, and a reset
0047                         specifier. Please refer to either of the following reset
0048                         bindings for the reset argument specifier as per SoC,
0049                         Documentation/devicetree/bindings/reset/ti-syscon-reset.txt
0050                             for 66AK2HK/66AK2L/66AK2E SoCs or,
0051                         Documentation/devicetree/bindings/reset/ti,sci-reset.yaml
0052                             for 66AK2G SoCs
0053 
0054 - interrupts:           Should contain an entry for each value in 'interrupt-names'.
0055                         Each entry should have the interrupt source number used by
0056                         the remote processor to the host processor. The values should
0057                         follow the interrupt-specifier format as dictated by the
0058                         'interrupt-parent' node. The purpose of each is as per the
0059                         description in the 'interrupt-names' property.
0060 
0061 - interrupt-names:      Should contain strings with the following names, each
0062                         representing a specific interrupt,
0063                             "vring" - interrupt for virtio based IPC
0064                             "exception" - interrupt for exception notification
0065 
0066 - kick-gpios:           Should specify the gpio device needed for the virtio IPC
0067                         stack. This will be used to interrupt the remote processor.
0068                         The gpio device to be used is as per the bindings in,
0069                         Documentation/devicetree/bindings/gpio/gpio-dsp-keystone.txt
0070 
0071 SoC-specific Required properties:
0072 ---------------------------------
0073 The following are mandatory properties for Keystone 2 66AK2HK, 66AK2L and 66AK2E
0074 SoCs only:
0075 
0076 - clocks:               Should contain the device's input clock, and should be
0077                         defined as per the bindings in,
0078                         Documentation/devicetree/bindings/clock/keystone-gate.txt
0079 
0080 The following are mandatory properties for Keystone 2 66AK2G SoCs only:
0081 
0082 - power-domains:        Should contain a phandle to a PM domain provider node
0083                         and an args specifier containing the DSP device id
0084                         value. This property is as per the binding,
0085                         Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml
0086 
0087 Optional properties:
0088 --------------------
0089 
0090 - memory-region:        phandle to the reserved memory node to be associated
0091                         with the remoteproc device. The reserved memory node
0092                         can be a CMA memory node, and should be defined as
0093                         per the bindings in
0094                         Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
0095 
0096 
0097 Examples:
0098 ---------
0099 
0100 1.
0101         /* 66AK2H/K DSP aliases */
0102         aliases {
0103                 rproc0 = &dsp0;
0104                 rproc1 = &dsp1;
0105                 rproc2 = &dsp2;
0106                 rproc3 = &dsp3;
0107                 rproc4 = &dsp4;
0108                 rproc5 = &dsp5;
0109                 rproc6 = &dsp6;
0110                 rproc7 = &dsp7;
0111         };
0112 
0113         /* 66AK2H/K DSP memory node */
0114         reserved-memory {
0115                 #address-cells = <2>;
0116                 #size-cells = <2>;
0117                 ranges;
0118 
0119                 dsp_common_memory: dsp-common-memory@81f800000 {
0120                         compatible = "shared-dma-pool";
0121                         reg = <0x00000008 0x1f800000 0x00000000 0x800000>;
0122                         reusable;
0123                 };
0124         };
0125 
0126         /* 66AK2H/K DSP node */
0127         soc {
0128                 dsp0: dsp@10800000 {
0129                         compatible = "ti,k2hk-dsp";
0130                         reg = <0x10800000 0x00100000>,
0131                               <0x10e00000 0x00008000>,
0132                               <0x10f00000 0x00008000>;
0133                         reg-names = "l2sram", "l1pram", "l1dram";
0134                         clocks = <&clkgem0>;
0135                         ti,syscon-dev = <&devctrl 0x40>;
0136                         resets = <&pscrst 0>;
0137                         interrupt-parent = <&kirq0>;
0138                         interrupts = <0 8>;
0139                         interrupt-names = "vring", "exception";
0140                         kick-gpios = <&dspgpio0 27 0>;
0141                         memory-region = <&dsp_common_memory>;
0142                 };
0143 
0144         };
0145 
0146 2.
0147         /* 66AK2G DSP alias */
0148         aliases {
0149                 rproc0 = &dsp0;
0150         };
0151 
0152         /* 66AK2G DSP memory node */
0153         reserved-memory {
0154                 #address-cells = <2>;
0155                 #size-cells = <2>;
0156                 ranges;
0157 
0158                 dsp_common_memory: dsp-common-memory@81f800000 {
0159                         compatible = "shared-dma-pool";
0160                         reg = <0x00000008 0x1f800000 0x00000000 0x800000>;
0161                         reusable;
0162                 };
0163         };
0164 
0165         /* 66AK2G DSP node */
0166         soc {
0167                 dsp0: dsp@10800000 {
0168                         compatible = "ti,k2g-dsp";
0169                         reg = <0x10800000 0x00100000>,
0170                               <0x10e00000 0x00008000>,
0171                               <0x10f00000 0x00008000>;
0172                         reg-names = "l2sram", "l1pram", "l1dram";
0173                         power-domains = <&k2g_pds 0x0046>;
0174                         ti,syscon-dev = <&devctrl 0x40>;
0175                         resets = <&k2g_reset 0x0046 0x1>;
0176                         interrupt-parent = <&kirq0>;
0177                         interrupts = <0 8>;
0178                         interrupt-names = "vring", "exception";
0179                         kick-gpios = <&dspgpio0 27 0>;
0180                         memory-region = <&dsp_common_memory>;
0181                 };
0182         };