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 [0] - 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 [0], "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/puCZ5GSm 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 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/j721e_evm_r5_defconfig | 1 + configs/j721e_hs_evm_r5_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 | 562 +++++++++++++ drivers/reset/Kconfig | 6 + drivers/reset/Makefile | 1 + drivers/reset/reset-dra7.c | 97 +++ include/linux/bitmap.h | 26 + include/remoteproc.h | 384 ++++++++- 33 files changed, 2296 insertions(+), 17 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