STM32MP157A-DK1 remoteproc to M4 failed
Hello, i'm trying to use M4 kernel from A7 kernel worked under linux.
I've started with openSTlinux distro and it works well (i can upload firmware to M4 using rproc), but for some reasons i need to make a very small distro (less than 16 mb). For this i'm started to use buildroot build system, which i configured to use linux kernel from
https://github.com/STMicroelectronics/linux (i've tried to use 5.10 and 5.4 branches)
I'm try to original .config from openstlinux (/proc/config.gz) to build my own kernel and it builds fine. But when system is booting up i've got a regrettable messages:
[ 1.667275] stm32-rproc 10000000.m4: error -EINVAL: failed to get mcu reset
[ 1.674148] remoteproc remoteproc0: releasing m4
[ 1.678863] stm32-rproc: probe of 10000000.m4 failed with error -22
Some investigation brought me to file drivers/reset/core.c and function
static int of_reset_simple_xlate(struct reset_controller_dev *rcdev,
const struct of_phandle_args *reset_spec)
i've printk some vars:
reset_spec->args_count = 1
reset_spec->args[0] = 11
rcdev->nr_resets = 11
reset_spec->np->full_name = protocol@16
okay it looks similar to stm32mp151.dtsi where i've found a definition
firmware {
scmi0: scmi0 {
compatible = "arm,scmi-smc";
#address-cells = <1>;
#size-cells = <0>;
arm,smc-id = <0x82002000>;
shmem = <&scmi0_shm>;
scmi0_clk: protocol@14 {
reg = <0x14>;
#clock-cells = <1>;
};
scmi0_reset: protocol@16 {
reg = <0x16>;
#reset-cells = <1>;
};
};
and as you remember:
reset_spec->args[0] = 11
which is
#define RST_SCMI0_MCU_HOLD_BOOT 11 from file include/dt-bindings/reset/stm32mp1-resets.h
but in some reasons process finding of function (i'm not sure in teminology) "hold_boot" ruins on a line
if (reset_spec->args[0] >= rcdev->nr_resets)
return -EINVAL;
The question is: why? How to make it works propertly?
Thanks in advance
