diff mbox series

[meta-ti,master/scarthgap,1/1] recipes-bsp: Add DM_FIRMWARE override for am62pxx display cluster

Message ID 20250506091015.4049616-2-c-shilwant@ti.com
State New
Headers show
Series Add DM_FIRMWARE override for AM62P display cluster | expand

Commit Message

Chirag Shilwant May 6, 2025, 9:10 a.m. UTC
* For AM62P display cluster usecase, we need to pick
"dss_display_share.wkup-r5f0_0.release.strip.out" from ti-linux-firmware [0]
Hence, pick the display cluster firmware only when DISPLAY_CLUSTER_ENABLE is set to 1.

* When DISPLAY_CLUSTER_ENABLE is not set to 1, fallback to pick the "ipc_echo_testb_mcu1_0_release_strip.xer5f"
DM firmware.

[0]: https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/tree/ti-dm/am62pxx?h=11.00.12

Signed-off-by: Chirag Shilwant <c-shilwant@ti.com>
---
 meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb | 1 +
 meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc | 1 +
 2 files changed, 2 insertions(+)

Comments

Denys Dmytriyenko May 6, 2025, 9:15 p.m. UTC | #1
On Tue, May 06, 2025 at 02:40:15PM +0530, Chirag Shilwant wrote:
> * For AM62P display cluster usecase, we need to pick
> "dss_display_share.wkup-r5f0_0.release.strip.out" from ti-linux-firmware [0]
> Hence, pick the display cluster firmware only when DISPLAY_CLUSTER_ENABLE is set to 1.
> 
> * When DISPLAY_CLUSTER_ENABLE is not set to 1, fallback to pick the "ipc_echo_testb_mcu1_0_release_strip.xer5f"
> DM firmware.

Should a similar condition be added for am62axx to select between dm_edgeai_mcu1_0_release_strip.out 
and ipc_echo_testb_mcu1_0_release_strip.xer5f ?


> [0]: https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/tree/ti-dm/am62pxx?h=11.00.12
> 
> Signed-off-by: Chirag Shilwant <c-shilwant@ti.com>
> ---
>  meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb | 1 +
>  meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc | 1 +
>  2 files changed, 2 insertions(+)
> 
> diff --git a/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb b/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb
> index a7d15e30..eaa82a62 100644
> --- a/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb
> +++ b/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb
> @@ -40,6 +40,7 @@ INSTALL_DM_FW_DIR  = "${nonarch_base_libdir}/firmware/${DM_FW_DIR}"
>  
>  DM_FIRMWARE = "ipc_echo_testb_mcu1_0_release_strip.xer5f"
>  DM_FIRMWARE:am62axx = "dm_edgeai_mcu1_0_release_strip.out"
> +DM_FIRMWARE:am62pxx = "${@oe.utils.conditional('DISPLAY_CLUSTER_ENABLE', '1', 'dss_display_share.wkup-r5f0_0.release.strip.out', 'ipc_echo_testb_mcu1_0_release_strip.xer5f', d)}"
>  
>  DM_FW_LIST = ""
>  DM_FW_LIST:j721e =   "${DM_FIRMWARE}"
> diff --git a/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc b/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
> index 57bf7a4e..6b7e2bea 100644
> --- a/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
> +++ b/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
> @@ -46,6 +46,7 @@ DEPENDS:append:j784s4 = " ti-hsm-demo-fw"
>  
>  DM_FIRMWARE = "ipc_echo_testb_mcu1_0_release_strip.xer5f"
>  DM_FIRMWARE:am62axx = "dm_edgeai_mcu1_0_release_strip.out"
> +DM_FIRMWARE:am62pxx = "${@oe.utils.conditional('DISPLAY_CLUSTER_ENABLE', '1', 'dss_display_share.wkup-r5f0_0.release.strip.out', 'ipc_echo_testb_mcu1_0_release_strip.xer5f', d)}"
>  
>  PLAT_SFX = ""
>  PLAT_SFX:j721e = "j721e"
> -- 
> 2.34.1
>
Chirag Shilwant May 7, 2025, 1:18 p.m. UTC | #2
+ Andrew

On 07/05/25 02:45, Denys Dmytriyenko wrote:
> On Tue, May 06, 2025 at 02:40:15PM +0530, Chirag Shilwant wrote:
>> * For AM62P display cluster usecase, we need to pick
>> "dss_display_share.wkup-r5f0_0.release.strip.out" from ti-linux-firmware [0]
>> Hence, pick the display cluster firmware only when DISPLAY_CLUSTER_ENABLE is set to 1.
>>
>> * When DISPLAY_CLUSTER_ENABLE is not set to 1, fallback to pick the "ipc_echo_testb_mcu1_0_release_strip.xer5f"
>> DM firmware.
> Should a similar condition be added for am62axx to select between dm_edgeai_mcu1_0_release_strip.out
> and ipc_echo_testb_mcu1_0_release_strip.xer5f ?


Hmm, that's a good point. Apparently for AM62A, the TI SDK story is a 
bit different.
The major delta between the two DM firmwares is the inclusion of TIOVX, 
VPAC & Vision Apps stack
in dm_edgeai_mcu1_0_release_strip.out

As all spins of AM62A (i.e. AM62A3, AM62A7, AM62A7-Q1, etc) are sold as 
a Analytics processor [0],
we want customers to always use dm_edgeai_mcu1_0_release_strip.out by 
default &
hence the SDKs (& eventually meta-ti-bsp) to always pick the EdgeAI DM 
firmware.


Now, the answer to why upstream u-boot binman still uses 
ipc_echo_testb_mcu1_0_release_strip.xer5f
as default (OR why does ipc_echo_testb* exist) is nicely explained by 
Andrew at [1]

As highlighted in [1], we eventually want 
dm_edgeai_mcu1_0_release_strip.out to be our default in future even
in upstream as well but until then if we want meta-ti-bsp to support the 
ipc_echo_testb_mcu1_0_release_strip.xer5f
as well then my suggestion would be to have it other way 
around...something like below,

DM_FIRMWARE:am62axx = "${@oe.utils.conditional('USE_IPC_ECHO_TEST_DM', 
'1', 'ipc_echo_testb_mcu1_0_release_strip.xer5f', 
'dm_edgeai_mcu1_0_release_strip.out', d)}"

This ensures that the additional local.conf step for setting 
"USE_IPC_ECHO_TEST_DM" is not needed for default offering
but only for users who intend to use the 
ipc_echo_testb_mcu1_0_release_strip.xer5fDM firmware.


For AM62P, both dss_display_share.wkup-r5f0_0.release.strip.out & 
ipc_echo_testb_mcu1_0_release_strip.xer5f
are delivered as a part of standard offering to customers [2] & hence we 
added the DISPLAY_CLUSTER_ENABLE
logic in meta-ti-bsp which helps in supporting both.


[0]: 
https://www.ti.com/microcontrollers-mcus-processors/arm-based-processors/overview.html

[1]: 
https://lore.kernel.org/all/534da8dc-f7bf-4ef3-b94d-3254a38b26a4@ti.com/

[2]: https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-AM62P/11.00.09.04



Chirag



>
>
>> [0]: https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/tree/ti-dm/am62pxx?h=11.00.12
>>
>> Signed-off-by: Chirag Shilwant <c-shilwant@ti.com>
>> ---
>>   meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb | 1 +
>>   meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc | 1 +
>>   2 files changed, 2 insertions(+)
>>
>> diff --git a/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb b/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb
>> index a7d15e30..eaa82a62 100644
>> --- a/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb
>> +++ b/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb
>> @@ -40,6 +40,7 @@ INSTALL_DM_FW_DIR  = "${nonarch_base_libdir}/firmware/${DM_FW_DIR}"
>>   
>>   DM_FIRMWARE = "ipc_echo_testb_mcu1_0_release_strip.xer5f"
>>   DM_FIRMWARE:am62axx = "dm_edgeai_mcu1_0_release_strip.out"
>> +DM_FIRMWARE:am62pxx = "${@oe.utils.conditional('DISPLAY_CLUSTER_ENABLE', '1', 'dss_display_share.wkup-r5f0_0.release.strip.out', 'ipc_echo_testb_mcu1_0_release_strip.xer5f', d)}"
>>   
>>   DM_FW_LIST = ""
>>   DM_FW_LIST:j721e =   "${DM_FIRMWARE}"
>> diff --git a/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc b/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
>> index 57bf7a4e..6b7e2bea 100644
>> --- a/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
>> +++ b/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
>> @@ -46,6 +46,7 @@ DEPENDS:append:j784s4 = " ti-hsm-demo-fw"
>>   
>>   DM_FIRMWARE = "ipc_echo_testb_mcu1_0_release_strip.xer5f"
>>   DM_FIRMWARE:am62axx = "dm_edgeai_mcu1_0_release_strip.out"
>> +DM_FIRMWARE:am62pxx = "${@oe.utils.conditional('DISPLAY_CLUSTER_ENABLE', '1', 'dss_display_share.wkup-r5f0_0.release.strip.out', 'ipc_echo_testb_mcu1_0_release_strip.xer5f', d)}"
>>   
>>   PLAT_SFX = ""
>>   PLAT_SFX:j721e = "j721e"
>> -- 
>> 2.34.1
>>
Daniel Schultz May 8, 2025, 4:43 a.m. UTC | #3
On 5/7/25 15:18, Chirag Shilwant via lists.yoctoproject.org wrote:
> + Andrew
>
> On 07/05/25 02:45, Denys Dmytriyenko wrote:
>> On Tue, May 06, 2025 at 02:40:15PM +0530, Chirag Shilwant wrote:
>>> * For AM62P display cluster usecase, we need to pick
>>> "dss_display_share.wkup-r5f0_0.release.strip.out" from 
>>> ti-linux-firmware [0]
>>> Hence, pick the display cluster firmware only when 
>>> DISPLAY_CLUSTER_ENABLE is set to 1.
>>>
>>> * When DISPLAY_CLUSTER_ENABLE is not set to 1, fallback to pick the 
>>> "ipc_echo_testb_mcu1_0_release_strip.xer5f"
>>> DM firmware.
>> Should a similar condition be added for am62axx to select between 
>> dm_edgeai_mcu1_0_release_strip.out
>> and ipc_echo_testb_mcu1_0_release_strip.xer5f ?
>
>
> Hmm, that's a good point. Apparently for AM62A, the TI SDK story is a 
> bit different.
> The major delta between the two DM firmwares is the inclusion of 
> TIOVX, VPAC & Vision Apps stack
> in dm_edgeai_mcu1_0_release_strip.out
>
> As all spins of AM62A (i.e. AM62A3, AM62A7, AM62A7-Q1, etc) are sold 
> as a Analytics processor [0],
> we want customers to always use dm_edgeai_mcu1_0_release_strip.out by 
> default &
> hence the SDKs (& eventually meta-ti-bsp) to always pick the EdgeAI DM 
> firmware.

I honestly had the impression TI lost interest in AM62Ax and seeing all 
these patches for better C7x support on the AM62Ax is great to see!

We already use a mainline-based U-Boot 2025.04 for our AM62Ax SoM. 
Therefore, the AM62Ax DM firmware change broke our build and I had to 
force back the old firmware in our yocto layer. That's also the reason 
why I sent [1] to change binman upstream.

It's not a big deal for me because it was easy to fix in our layer, but 
I would like to give the feedback that changing such an important 
firmware might break builds in downstream layers. Please also keep in 
mind that not everyone is using your latest SDK u-boot/linux tags and 
might need more time to update. So, adding flags to fallback to older DM 
firmwares sounds like a good solution until everyone has switched.

Best Regards,
Daniel

>
>
> Now, the answer to why upstream u-boot binman still uses 
> ipc_echo_testb_mcu1_0_release_strip.xer5f
> as default (OR why does ipc_echo_testb* exist) is nicely explained by 
> Andrew at [1]
>
> As highlighted in [1], we eventually want 
> dm_edgeai_mcu1_0_release_strip.out to be our default in future even
> in upstream as well but until then if we want meta-ti-bsp to support 
> the ipc_echo_testb_mcu1_0_release_strip.xer5f
> as well then my suggestion would be to have it other way 
> around...something like below,
>
> DM_FIRMWARE:am62axx = "${@oe.utils.conditional('USE_IPC_ECHO_TEST_DM', 
> '1', 'ipc_echo_testb_mcu1_0_release_strip.xer5f', 
> 'dm_edgeai_mcu1_0_release_strip.out', d)}"
>
> This ensures that the additional local.conf step for setting 
> "USE_IPC_ECHO_TEST_DM" is not needed for default offering
> but only for users who intend to use the 
> ipc_echo_testb_mcu1_0_release_strip.xer5fDM firmware.
>
>
> For AM62P, both dss_display_share.wkup-r5f0_0.release.strip.out & 
> ipc_echo_testb_mcu1_0_release_strip.xer5f
> are delivered as a part of standard offering to customers [2] & hence 
> we added the DISPLAY_CLUSTER_ENABLE
> logic in meta-ti-bsp which helps in supporting both.
>
>
> [0]: 
> https://www.ti.com/microcontrollers-mcus-processors/arm-based-processors/overview.html
>
> [1]: 
> https://lore.kernel.org/all/534da8dc-f7bf-4ef3-b94d-3254a38b26a4@ti.com/
>
> [2]: 
> https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-AM62P/11.00.09.04
>
>
>
> Chirag
>
>
>
>>
>>
>>> [0]: 
>>> https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/tree/ti-dm/am62pxx?h=11.00.12
>>>
>>> Signed-off-by: Chirag Shilwant <c-shilwant@ti.com>
>>> ---
>>>   meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb | 1 +
>>>   meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc | 1 +
>>>   2 files changed, 2 insertions(+)
>>>
>>> diff --git a/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb 
>>> b/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb
>>> index a7d15e30..eaa82a62 100644
>>> --- a/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb
>>> +++ b/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb
>>> @@ -40,6 +40,7 @@ INSTALL_DM_FW_DIR  = 
>>> "${nonarch_base_libdir}/firmware/${DM_FW_DIR}"
>>>     DM_FIRMWARE = "ipc_echo_testb_mcu1_0_release_strip.xer5f"
>>>   DM_FIRMWARE:am62axx = "dm_edgeai_mcu1_0_release_strip.out"
>>> +DM_FIRMWARE:am62pxx = 
>>> "${@oe.utils.conditional('DISPLAY_CLUSTER_ENABLE', '1', 
>>> 'dss_display_share.wkup-r5f0_0.release.strip.out', 
>>> 'ipc_echo_testb_mcu1_0_release_strip.xer5f', d)}"
>>>     DM_FW_LIST = ""
>>>   DM_FW_LIST:j721e =   "${DM_FIRMWARE}"
>>> diff --git a/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc 
>>> b/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
>>> index 57bf7a4e..6b7e2bea 100644
>>> --- a/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
>>> +++ b/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
>>> @@ -46,6 +46,7 @@ DEPENDS:append:j784s4 = " ti-hsm-demo-fw"
>>>     DM_FIRMWARE = "ipc_echo_testb_mcu1_0_release_strip.xer5f"
>>>   DM_FIRMWARE:am62axx = "dm_edgeai_mcu1_0_release_strip.out"
>>> +DM_FIRMWARE:am62pxx = 
>>> "${@oe.utils.conditional('DISPLAY_CLUSTER_ENABLE', '1', 
>>> 'dss_display_share.wkup-r5f0_0.release.strip.out', 
>>> 'ipc_echo_testb_mcu1_0_release_strip.xer5f', d)}"
>>>     PLAT_SFX = ""
>>>   PLAT_SFX:j721e = "j721e"
>>> -- 
>>> 2.34.1
>>>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#18541): https://lists.yoctoproject.org/g/meta-ti/message/18541
> Mute This Topic: https://lists.yoctoproject.org/mt/112645983/4454627
> Group Owner: meta-ti+owner@lists.yoctoproject.org
> Unsubscribe: https://lists.yoctoproject.org/g/meta-ti/unsub [d.schultz@phytec.de]
> -=-=-=-=-=-=-=-=-=-=-=-
>
diff mbox series

Patch

diff --git a/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb b/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb
index a7d15e30..eaa82a62 100644
--- a/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb
+++ b/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb
@@ -40,6 +40,7 @@  INSTALL_DM_FW_DIR  = "${nonarch_base_libdir}/firmware/${DM_FW_DIR}"
 
 DM_FIRMWARE = "ipc_echo_testb_mcu1_0_release_strip.xer5f"
 DM_FIRMWARE:am62axx = "dm_edgeai_mcu1_0_release_strip.out"
+DM_FIRMWARE:am62pxx = "${@oe.utils.conditional('DISPLAY_CLUSTER_ENABLE', '1', 'dss_display_share.wkup-r5f0_0.release.strip.out', 'ipc_echo_testb_mcu1_0_release_strip.xer5f', d)}"
 
 DM_FW_LIST = ""
 DM_FW_LIST:j721e =   "${DM_FIRMWARE}"
diff --git a/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc b/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
index 57bf7a4e..6b7e2bea 100644
--- a/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
+++ b/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
@@ -46,6 +46,7 @@  DEPENDS:append:j784s4 = " ti-hsm-demo-fw"
 
 DM_FIRMWARE = "ipc_echo_testb_mcu1_0_release_strip.xer5f"
 DM_FIRMWARE:am62axx = "dm_edgeai_mcu1_0_release_strip.out"
+DM_FIRMWARE:am62pxx = "${@oe.utils.conditional('DISPLAY_CLUSTER_ENABLE', '1', 'dss_display_share.wkup-r5f0_0.release.strip.out', 'ipc_echo_testb_mcu1_0_release_strip.xer5f', d)}"
 
 PLAT_SFX = ""
 PLAT_SFX:j721e = "j721e"