This patchset enables support for loading and starting IPU firmware, the following have been implemented: - Enable fs_loader compilation at SPL Level, that is necessary in order to load IPU firmware from /boot partition. - Define necessary related IPU dts nodes. - Add necessary drivers and helpers to bring up, load and start IPU firmware.
The underlying patches are interdependent, therefore should be applied in the order they are numbered in this patchset. Tests: - Please find SPL, u-boot and kernel console logs in here [1] - At SPL stage, debug logs have been enabled to make sure that IPU1 and IPU2 are loaded and started properly. In fact, these two log messages are only displayed when the firmware has been loaded, and if no errors appear afterwards, it means that firmware started successfully as well: - Starting IPU1... - Starting IPU2... At U-boot stage, "rproc" command-line tool was used for the testing. In the logs [1], "rproc list" was run before and after IPU1 and IPU2 are initialized by "rproc init". The before run gave an empty list, while the after run listed successfully the two IPUs with their correct addresses: - 0 - Name:'ipu@58820000' type:'internal memory mapped' - 1 - Name:'ipu@55020000' type:'internal memory mapped' "rproc start" and "rproc stop" were also used for both IPU1 and IPU2, both were successful as no error logs were displayed. [0]: https://pastebin.com/QGUYSPRt These U-boot/SPL flags have been purposely enabled during tests to ensure IPU load/start work properly: - CONFIG_DM_RESET=y - CONFIG_RESET_DRA7=y - CONFIG_SPL_DM_RESET=y - CONFIG_FS_LOADER=y - CONFIG_SPL_FS_LOADER=y - CONFIG_SPL_DRIVERS_MISC_SUPPORT=y - CONFIG_REMOTEPROC_TI_IPU=y - CONFIG_SPL_REMOTEPROC=y - CONFIG_CMD_REMOTEPROC=y Changes in v4: - Enable SPL fs_loader for j7200_evm_r5 and socfpga_arria10. Changes in v3: - Add a new patch for dra7xx_evm to expand SPL_MULTI_DTB_FIT Changes in v2: - Add useful checks and remove redundant code. Amjad Ouled-Ameur (1): configs: dra7xx_evm: Increase the size of SPL_MULTI_DTB_FIT Keerthy (10): reset: dra7: Add a reset driver arm: mach-omap2: load/start remoteproc IPU1/IPU2 drivers: misc: Makefile: Enable fs_loader compilation at SPL Level linux: bitmap.h: Add find_next_zero_area function remoteproc: uclass: Add remoteproc resource handling helpers remoteproc: ipu: Add driver to bring up ipu dts: dra7-ipu-common-early-boot.dtsi: Add all the ipu early boot related nodes arm: dts: dra7: Add ipu and related nodes arm: dts: dra7*/am57xx-idk-evm-u-boot: Add ipu early boot DT changes dts: am57xx*: Add ipu early boot DT changes MAINTAINERS | 4 + .../dts/am57xx-beagle-x15-revb1-u-boot.dtsi | 7 + .../dts/am57xx-beagle-x15-revc-u-boot.dtsi | 7 + arch/arm/dts/am57xx-beagle-x15-u-boot.dtsi | 7 + arch/arm/dts/am57xx-cl-som-am57x-u-boot.dtsi | 7 + arch/arm/dts/am57xx-idk-common-u-boot.dtsi | 1 + arch/arm/dts/am57xx-sbc-am57x-u-boot.dtsi | 7 + arch/arm/dts/dra7-evm-u-boot.dtsi | 1 + arch/arm/dts/dra7-ipu-common-early-boot.dtsi | 113 +++ arch/arm/dts/dra7.dtsi | 45 +- arch/arm/dts/dra71-evm-u-boot.dtsi | 1 + arch/arm/dts/dra72-evm-revc-u-boot.dtsi | 1 + arch/arm/dts/dra76-evm-u-boot.dtsi | 1 + arch/arm/include/asm/arch-omap5/clock.h | 3 + arch/arm/include/asm/omap_common.h | 10 + arch/arm/mach-k3/common.c | 10 +- arch/arm/mach-omap2/boot-common.c | 95 +++ arch/arm/mach-omap2/clocks-common.c | 33 + arch/arm/mach-omap2/omap5/hw_data.c | 92 ++- arch/arm/mach-omap2/omap5/prcm-regs.c | 9 +- configs/dra7xx_evm_defconfig | 2 +- configs/j7200_evm_r5_defconfig | 1 + configs/j721e_evm_r5_defconfig | 1 + configs/j721e_hs_evm_r5_defconfig | 1 + configs/socfpga_arria10_defconfig | 1 + drivers/misc/Kconfig | 9 + drivers/misc/Makefile | 2 +- drivers/remoteproc/Kconfig | 10 + drivers/remoteproc/Makefile | 1 + drivers/remoteproc/ipu_rproc.c | 759 ++++++++++++++++++ drivers/remoteproc/rproc-uclass.c | 534 ++++++++++++ drivers/reset/Kconfig | 6 + drivers/reset/Makefile | 1 + drivers/reset/reset-dra7.c | 97 +++ include/linux/bitmap.h | 26 + include/remoteproc.h | 384 ++++++++- 36 files changed, 2271 insertions(+), 18 deletions(-) create mode 100644 arch/arm/dts/am57xx-beagle-x15-revb1-u-boot.dtsi create mode 100644 arch/arm/dts/am57xx-beagle-x15-revc-u-boot.dtsi create mode 100644 arch/arm/dts/am57xx-beagle-x15-u-boot.dtsi create mode 100644 arch/arm/dts/am57xx-cl-som-am57x-u-boot.dtsi create mode 100644 arch/arm/dts/am57xx-sbc-am57x-u-boot.dtsi create mode 100644 arch/arm/dts/dra7-ipu-common-early-boot.dtsi create mode 100644 drivers/remoteproc/ipu_rproc.c create mode 100644 drivers/reset/reset-dra7.c -- 2.25.1