[PATCH v2] arm64: dts: ti: k3-am62-main: Add PRUSS-M node

Judith Mendez jm at ti.com
Fri May 2 14:08:15 PDT 2025


Hi Nishanth,

On 5/2/25 7:24 AM, Nishanth Menon wrote:
> On 09:43-20250430, Judith Mendez wrote:
>> From: Kishon Vijay Abraham I <kishon at ti.com>
>>
>> Add the DT node for the PRUSS-M processor subsystem that is present
>> on the K3 AM62x SoCs. The K3 AM62x family of SoC has one PRUSS-M
>> instance and it has two Programmable Real-Time Units (PRU0 and PRU1).
>>
>> Signed-off-by: Kishon Vijay Abraham I <kishon at ti.com>
>> [ Judith: Fix pruss_iclk id for pruss_coreclk_mux ]
>> Signed-off-by: Judith Mendez <jm at ti.com>
>> ---
>> Changelog:
>> - drop internal tags
>> - rebase against ti-k3-dts-next
>> - fix header
>>
>> Link to v1:
>> https://lore.kernel.org/linux-devicetree/20250108222048.818835-1-jm@ti.com/
>> ---
>>   arch/arm64/boot/dts/ti/k3-am62-main.dtsi | 90 ++++++++++++++++++++++++
>>   1 file changed, 90 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/ti/k3-am62-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62-main.dtsi
>> index 7d355aa73ea2..ee53e663b5bd 100644
>> --- a/arch/arm64/boot/dts/ti/k3-am62-main.dtsi
>> +++ b/arch/arm64/boot/dts/ti/k3-am62-main.dtsi
>> @@ -1079,6 +1079,96 @@ dphy0: phy at 30110000 {
>>   		status = "disabled";
>>   	};
>>   
>> +	pruss: pruss at 30040000 {
>> +		compatible = "ti,am625-pruss";
>> +		reg = <0x00 0x30040000 0x00 0x80000>;
>> +		power-domains = <&k3_pds 81 TI_SCI_PD_EXCLUSIVE>;
>> +		#address-cells = <1>;
>> +		#size-cells = <1>;
>> +		ranges = <0x0 0x00 0x30040000 0x80000>;
> 
> Should this not be default disabled? pruss needs pinmux to operate
> correctly, right?

No, PRU node does not need pinmux to work properly. ATM we are using
RPMSG echo test as the default experience and this does not require
any pinmux configuration since signals are internal to the SoC. Now
it is possible for an application to use a PRU GPO for ex and then they
would require pinmux but it is application specific.

~ Judith

> 
>> +
>> +		pruss_mem: memories at 0 {
>> +			reg = <0x0 0x2000>,
>> +			      <0x2000 0x2000>,
>> +			      <0x10000 0x10000>;
>> +			reg-names = "dram0", "dram1", "shrdram2";
>> +		};
>> +
>> +		pruss_cfg: cfg at 26000 {
>> +			compatible = "ti,pruss-cfg", "syscon";
>> +			reg = <0x26000 0x200>;
>> +			#address-cells = <1>;
>> +			#size-cells = <1>;
>> +			ranges = <0x0 0x26000 0x2000>;
>> +
>> +			clocks {
>> +				#address-cells = <1>;
>> +				#size-cells = <0>;
>> +
>> +				pruss_coreclk_mux: coreclk-mux at 3c {
>> +					reg = <0x3c>;
>> +					#clock-cells = <0>;
>> +					clocks = <&k3_clks 81 0>,  /* pruss_core_clk */
>> +						 <&k3_clks 81 14>; /* pruss_iclk */
>> +					assigned-clocks = <&pruss_coreclk_mux>;
>> +					assigned-clock-parents = <&k3_clks 81 14>;
>> +				};
>> +
>> +				pruss_iepclk_mux: iepclk-mux at 30 {
>> +					reg = <0x30>;
>> +					#clock-cells = <0>;
>> +					clocks = <&k3_clks 81 3>,	/* pruss_iep_clk */
>> +						 <&pruss_coreclk_mux>;	/* pruss_coreclk_mux */
>> +					assigned-clocks = <&pruss_iepclk_mux>;
>> +					assigned-clock-parents = <&pruss_coreclk_mux>;
>> +				};
>> +			};
>> +		};
>> +
>> +		pruss_intc: interrupt-controller at 20000 {
>> +			compatible = "ti,pruss-intc";
>> +			reg = <0x20000 0x2000>;
>> +			interrupt-controller;
>> +			#interrupt-cells = <3>;
>> +			interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
>> +				     <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
>> +				     <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
>> +				     <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
>> +				     <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
>> +				     <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>,
>> +				     <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>,
>> +				     <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
>> +			interrupt-names = "host_intr0", "host_intr1",
>> +					  "host_intr2", "host_intr3",
>> +					  "host_intr4", "host_intr5",
>> +					  "host_intr6", "host_intr7";
>> +		};
>> +
>> +		pru0: pru at 34000 {
>> +			compatible = "ti,am625-pru";
>> +			reg = <0x34000 0x3000>,
>> +			      <0x22000 0x100>,
>> +			      <0x22400 0x100>;
>> +			reg-names = "iram", "control", "debug";
>> +			firmware-name = "am62x-pru0-fw";
>> +			interrupt-parent = <&pruss_intc>;
>> +			interrupts = <16 2 2>;
>> +			interrupt-names = "vring";
>> +		};
>> +
>> +		pru1: pru at 38000 {
>> +			compatible = "ti,am625-pru";
>> +			reg = <0x38000 0x3000>,
>> +			      <0x24000 0x100>,
>> +			      <0x24400 0x100>;
>> +			reg-names = "iram", "control", "debug";
>> +			firmware-name = "am62x-pru1-fw";
>> +			interrupt-parent = <&pruss_intc>;
>> +			interrupts = <18 3 3>;
>> +			interrupt-names = "vring";
>> +		};
>> +	};
>> +
>>   	gpmc0: memory-controller at 3b000000 {
>>   		compatible = "ti,am64-gpmc";
>>   		power-domains = <&k3_pds 80 TI_SCI_PD_EXCLUSIVE>;
>> -- 
>> 2.49.0
>>
>>
> 




More information about the linux-arm-kernel mailing list