Hi Andrew, On 5/22/2024 9:38 PM, Andrew Davis wrote: > On 5/22/24 1:36 AM, MD Danish Anwar wrote: >> Add remoteproc-name property for PRU cores. >> >> Signed-off-by: MD Danish Anwar <danishan...@ti.com> >> --- >> arch/arm/dts/k3-am642-evm-u-boot.dtsi | 44 +++++++++++++++++++++++++++ >> 1 file changed, 44 insertions(+) >> >> diff --git a/arch/arm/dts/k3-am642-evm-u-boot.dtsi >> b/arch/arm/dts/k3-am642-evm-u-boot.dtsi >> index 705b3baa81..25ddace74e 100644 >> --- a/arch/arm/dts/k3-am642-evm-u-boot.dtsi >> +++ b/arch/arm/dts/k3-am642-evm-u-boot.dtsi >> @@ -11,6 +11,50 @@ >> }; >> }; >> +&pru0_0 { >> + remoteproc-name = "pru0_0"; > > Why do we need all these? Looks like we fallback to using `dev->name` if > these are not set, does that not work for us here? >
Yes we will fallback to `dev->name` if `remoteproc-name` is not set but in our case two different PRU cores will have same `dev->name`. As a result the API rproc_name_is_unique() will return false and as a result the probe will fail for the PRU cores. Example: In k3-am64-main.dtsi, both pru0_0 [1] and pru1_0 [2] will have dev->name as "pru@34000" same goes for rtu and txpru as well. pru0_0: pru@34000 { compatible = "ti,am642-pru"; reg = <0x34000 0x3000>, <0x22000 0x100>, <0x22400 0x100>; reg-names = "iram", "control", "debug"; firmware-name = "am64x-pru0_0-fw"; }; pru1_0: pru@34000 { compatible = "ti,am642-pru"; reg = <0x34000 0x4000>, <0x22000 0x100>, <0x22400 0x100>; reg-names = "iram", "control", "debug"; firmware-name = "am64x-pru1_0-fw"; }; To avoid this, we are setting the "remoteproc-name" property in -u-boot.dtsi. Same is done for AM65x as well [3]. [1] https://elixir.bootlin.com/u-boot/v2024.07-rc3/source/dts/upstream/src/arm64/ti/k3-am64-main.dtsi#L1276 [2] https://elixir.bootlin.com/u-boot/v2024.07-rc3/source/dts/upstream/src/arm64/ti/k3-am64-main.dtsi#L1417 [3] https://elixir.bootlin.com/u-boot/v2024.07-rc3/source/arch/arm/dts/k3-am654-base-board-u-boot.dtsi#L168 > Andrew > >> +}; >> + >> +&rtu0_0 { >> + remoteproc-name = "rtu0_0"; >> +}; >> + >> +&tx_pru0_0 { >> + remoteproc-name = "tx_pru0_0"; >> +}; >> + >> +&pru0_1 { >> + remoteproc-name = "pru0_1"; >> +}; >> + >> +&rtu0_1 { >> + remoteproc-name = "rtu0_1"; >> +}; >> + >> +&tx_pru0_1 { >> + remoteproc-name = "tx_pru0_1"; >> +}; >> + >> +&pru1_0 { >> + remoteproc-name = "pru1_0"; >> +}; >> + >> +&rtu1_0 { >> + remoteproc-name = "rtu1_0"; >> +}; >> + >> +&tx_pru1_0 { >> + remoteproc-name = "tx_pru1_0"; >> +}; >> + >> +&pru1_1 { >> + remoteproc-name = "pru1_1"; >> +}; >> + >> +&rtu1_1 { >> + remoteproc-name = "rtu1_1"; >> +}; >> + >> &main_timer0 { >> clock-frequency = <200000000>; >> }; -- Thanks and Regards, Md Danish Anwar