diff mbox series

[2/4] arm64: dts: ti: k3-am62a-mcu: Add R5F remote proc node

Message ID 20250127221631.3974583-3-jm@ti.com (mailing list archive)
State New, archived
Headers show
Series Add R5F and C7xv device nodes | expand

Commit Message

Judith Mendez Jan. 27, 2025, 10:16 p.m. UTC
From: Hari Nagalla <hnagalla@ti.com>

AM62A SoCs have a single R5F core in the MCU voltage domain. The MCU
domain also has a 512KB sram memory, the R5F core can use for
applications needing fast memory access.

Signed-off-by: Hari Nagalla <hnagalla@ti.com>
[Judith: Fix commit message header]
Signed-off-by: Judith Mendez <jm@ti.com>
---
 arch/arm64/boot/dts/ti/k3-am62a-mcu.dtsi | 36 ++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

Comments

Andrew Davis Jan. 28, 2025, 4:27 p.m. UTC | #1
On 1/27/25 4:16 PM, Judith Mendez wrote:
> From: Hari Nagalla <hnagalla@ti.com>
> 
> AM62A SoCs have a single R5F core in the MCU voltage domain. The MCU
> domain also has a 512KB sram memory, the R5F core can use for
> applications needing fast memory access.
> 
> Signed-off-by: Hari Nagalla <hnagalla@ti.com>
> [Judith: Fix commit message header]
> Signed-off-by: Judith Mendez <jm@ti.com>
> ---
>   arch/arm64/boot/dts/ti/k3-am62a-mcu.dtsi | 36 ++++++++++++++++++++++++
>   1 file changed, 36 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/ti/k3-am62a-mcu.dtsi b/arch/arm64/boot/dts/ti/k3-am62a-mcu.dtsi
> index 0469c766b769e..9a20f75e48063 100644
> --- a/arch/arm64/boot/dts/ti/k3-am62a-mcu.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-am62a-mcu.dtsi
> @@ -6,6 +6,18 @@
>    */
>   
>   &cbass_mcu {
> +	mcu_ram: sram@79100000 {
> +		compatible = "mmio-sram";
> +		reg = <0x00 0x79100000 0x00 0x80000>;
> +		ranges = <0x00 0x00 0x79100000 0x80000>;
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +
> +		mcu1-sram@0 {
> +			reg = <0x0 0x80000>;
> +		};
> +	};
> +
>   	mcu_pmx0: pinctrl@4084000 {
>   		compatible = "pinctrl-single";
>   		reg = <0x00 0x04084000 0x00 0x88>;
> @@ -175,4 +187,28 @@ mcu_mcan1: can@4e18000 {
>   		bosch,mram-cfg = <0x0 128 64 64 64 64 32 32>;
>   		status = "disabled";
>   	};
> +
> +	mcu_r5fss0: r5fss@79000000 {
> +		compatible = "ti,am62-r5fss";
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		ranges = <0x79000000 0x00 0x79000000 0x8000>,
> +			 <0x79020000 0x00 0x79020000 0x8000>;
> +		power-domains = <&k3_pds 7 TI_SCI_PD_EXCLUSIVE>;

Newline here.

Also this should be default "disabled". It can be set to "okay"
in the board DTS file when the needed mboxes and memory-region
are set. Speaking of that, where are those patches? This is
incomplete without them and these nodes will not function.
Same for the DSP patch.

Andrew

> +		mcu_r5fss0_core0: r5f@79000000 {
> +			compatible = "ti,am62-r5f";
> +			reg = <0x79000000 0x00008000>,
> +				<0x79020000 0x00008000>;
> +			reg-names = "atcm", "btcm";
> +			ti,sci = <&dmsc>;
> +			ti,sci-dev-id = <9>;
> +			ti,sci-proc-ids = <0x03 0xff>;
> +			resets = <&k3_reset 9 1>;
> +			firmware-name = "am62a-mcu-r5f0_0-fw";
> +			ti,atcm-enable = <0>;
> +			ti,btcm-enable = <1>;
> +			ti,loczrama = <0>;
> +			sram = <&mcu_ram>;
> +		};
> +	};
>   };
Hari Nagalla Jan. 28, 2025, 4:52 p.m. UTC | #2
On 1/28/25 10:27, Andrew Davis wrote:
>> +    mcu_r5fss0: r5fss@79000000 {
>> +        compatible = "ti,am62-r5fss";
>> +        #address-cells = <1>;
>> +        #size-cells = <1>;
>> +        ranges = <0x79000000 0x00 0x79000000 0x8000>,
>> +             <0x79020000 0x00 0x79020000 0x8000>;
>> +        power-domains = <&k3_pds 7 TI_SCI_PD_EXCLUSIVE>;
> 
> Newline here.
> 
> Also this should be default "disabled". It can be set to "okay"
> in the board DTS file when the needed mboxes and memory-region
> are set. Speaking of that, where are those patches? This is
> incomplete without them and these nodes will not function.
> Same for the DSP patch.
> 
> Andrew
Yes, by default needs to set the node state to "disabled". This is HW 
description of the wake-up domain components. Memory carve outs and 
mailbox assignments for IPC are a separate patch as it is configurable 
and distro dependent.
Judith Mendez Jan. 28, 2025, 5:48 p.m. UTC | #3
Hi Andrew,

On 1/28/25 10:52 AM, Hari Nagalla wrote:
> On 1/28/25 10:27, Andrew Davis wrote:
>>> +    mcu_r5fss0: r5fss@79000000 {
>>> +        compatible = "ti,am62-r5fss";
>>> +        #address-cells = <1>;
>>> +        #size-cells = <1>;
>>> +        ranges = <0x79000000 0x00 0x79000000 0x8000>,
>>> +             <0x79020000 0x00 0x79020000 0x8000>;
>>> +        power-domains = <&k3_pds 7 TI_SCI_PD_EXCLUSIVE>;
>>
>> Newline here.
>>
>> Also this should be default "disabled". It can be set to "okay"
>> in the board DTS file when the needed mboxes and memory-region
>> are set. Speaking of that, where are those patches? This is
>> incomplete without them and these nodes will not function.
>> Same for the DSP patch.
>>
>> Andrew
> Yes, by default needs to set the node state to "disabled". This is HW 
> description of the wake-up domain components. Memory carve outs and 
> mailbox assignments for IPC are a separate patch as it is configurable 
> and distro dependent.

Yes I plan to disable the nodes in each domain .dtsi file.

Also yes, my understanding is that the memory carveouts could
be a separate series if at all. Not sure if those patches can be
sent upstream since they are distro dependent. Can anyone clarify
if this is the case?

~ Judith
Judith Mendez Jan. 30, 2025, 10:40 p.m. UTC | #4
On 1/28/25 11:48 AM, Judith Mendez wrote:
> Hi Andrew,
> 
> On 1/28/25 10:52 AM, Hari Nagalla wrote:
>> On 1/28/25 10:27, Andrew Davis wrote:
>>>> +    mcu_r5fss0: r5fss@79000000 {
>>>> +        compatible = "ti,am62-r5fss";
>>>> +        #address-cells = <1>;
>>>> +        #size-cells = <1>;
>>>> +        ranges = <0x79000000 0x00 0x79000000 0x8000>,
>>>> +             <0x79020000 0x00 0x79020000 0x8000>;
>>>> +        power-domains = <&k3_pds 7 TI_SCI_PD_EXCLUSIVE>;
>>>
>>> Newline here.
>>>
>>> Also this should be default "disabled". It can be set to "okay"
>>> in the board DTS file when the needed mboxes and memory-region
>>> are set. Speaking of that, where are those patches? This is
>>> incomplete without them and these nodes will not function.
>>> Same for the DSP patch.
>>>
>>> Andrew
>> Yes, by default needs to set the node state to "disabled". This is HW 
>> description of the wake-up domain components. Memory carve outs and 
>> mailbox assignments for IPC are a separate patch as it is configurable 
>> and distro dependent.
> 
> Yes I plan to disable the nodes in each domain .dtsi file.
> 
> Also yes, my understanding is that the memory carveouts could
> be a separate series if at all. Not sure if those patches can be
> sent upstream since they are distro dependent. Can anyone clarify
> if this is the case?
> 

As per offline discussion, I will include the memory carveouts in this
same series.
~ Judith

> ~ Judith
>
Andrew Davis Jan. 31, 2025, 6:25 p.m. UTC | #5
On 1/30/25 4:40 PM, Judith Mendez wrote:
> On 1/28/25 11:48 AM, Judith Mendez wrote:
>> Hi Andrew,
>>
>> On 1/28/25 10:52 AM, Hari Nagalla wrote:
>>> On 1/28/25 10:27, Andrew Davis wrote:
>>>>> +    mcu_r5fss0: r5fss@79000000 {
>>>>> +        compatible = "ti,am62-r5fss";
>>>>> +        #address-cells = <1>;
>>>>> +        #size-cells = <1>;
>>>>> +        ranges = <0x79000000 0x00 0x79000000 0x8000>,
>>>>> +             <0x79020000 0x00 0x79020000 0x8000>;
>>>>> +        power-domains = <&k3_pds 7 TI_SCI_PD_EXCLUSIVE>;
>>>>
>>>> Newline here.
>>>>
>>>> Also this should be default "disabled". It can be set to "okay"
>>>> in the board DTS file when the needed mboxes and memory-region
>>>> are set. Speaking of that, where are those patches? This is
>>>> incomplete without them and these nodes will not function.
>>>> Same for the DSP patch.
>>>>
>>>> Andrew
>>> Yes, by default needs to set the node state to "disabled". This is HW description of the wake-up domain components. Memory carve outs and mailbox assignments for IPC are a separate patch as it is configurable and distro dependent.
>>
>> Yes I plan to disable the nodes in each domain .dtsi file.
>>
>> Also yes, my understanding is that the memory carveouts could
>> be a separate series if at all. Not sure if those patches can be
>> sent upstream since they are distro dependent. Can anyone clarify
>> if this is the case?
>>
> 
> As per offline discussion, I will include the memory carveouts in this
> same series.

It's usually good to fill in some details of "offline discussion" for
folks on the list not in that conversation.

By "distro dependent" we really mean firmware dependent. The carveouts
are set in DT and then most firmware follows the same and hardcode
these addresses. For example[0].

This works well as long as all the firmware uses these standard
addresses. Problem is some legacy firmware did not, and so to use
those firmware the DT would need modified.

For AM62 and AM62A I'm not aware of any such firmware. So this
is a bit of a non-issue and we can safely add the carveouts
like we already do for all other K3 devices.

Andrew

[0] https://github.com/zephyrproject-rtos/zephyr/blob/main/boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0.dts#L30

> ~ Judith
> 
>> ~ Judith
>>
>
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/ti/k3-am62a-mcu.dtsi b/arch/arm64/boot/dts/ti/k3-am62a-mcu.dtsi
index 0469c766b769e..9a20f75e48063 100644
--- a/arch/arm64/boot/dts/ti/k3-am62a-mcu.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62a-mcu.dtsi
@@ -6,6 +6,18 @@ 
  */
 
 &cbass_mcu {
+	mcu_ram: sram@79100000 {
+		compatible = "mmio-sram";
+		reg = <0x00 0x79100000 0x00 0x80000>;
+		ranges = <0x00 0x00 0x79100000 0x80000>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		mcu1-sram@0 {
+			reg = <0x0 0x80000>;
+		};
+	};
+
 	mcu_pmx0: pinctrl@4084000 {
 		compatible = "pinctrl-single";
 		reg = <0x00 0x04084000 0x00 0x88>;
@@ -175,4 +187,28 @@  mcu_mcan1: can@4e18000 {
 		bosch,mram-cfg = <0x0 128 64 64 64 64 32 32>;
 		status = "disabled";
 	};
+
+	mcu_r5fss0: r5fss@79000000 {
+		compatible = "ti,am62-r5fss";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x79000000 0x00 0x79000000 0x8000>,
+			 <0x79020000 0x00 0x79020000 0x8000>;
+		power-domains = <&k3_pds 7 TI_SCI_PD_EXCLUSIVE>;
+		mcu_r5fss0_core0: r5f@79000000 {
+			compatible = "ti,am62-r5f";
+			reg = <0x79000000 0x00008000>,
+				<0x79020000 0x00008000>;
+			reg-names = "atcm", "btcm";
+			ti,sci = <&dmsc>;
+			ti,sci-dev-id = <9>;
+			ti,sci-proc-ids = <0x03 0xff>;
+			resets = <&k3_reset 9 1>;
+			firmware-name = "am62a-mcu-r5f0_0-fw";
+			ti,atcm-enable = <0>;
+			ti,btcm-enable = <1>;
+			ti,loczrama = <0>;
+			sram = <&mcu_ram>;
+		};
+	};
 };