The Zynq Multi-Processor reset-controller has the ability to reset lines connected to different blocks and peripherals (LPD & FPD blocks) in the SoC.
1) Kernel Configuration Options:
These depend on the Rest controller and ARCH_ZYNQMP. Enable the Rest Controller Support option in kernel configuration as an inbuilt module:
Select Device Drivers ---> [*] Reset Controller Support....
2) Device-tree configurations:
The below figure describes the reset-controller frame-work under Linux.
If the Zynq MPSoC is configured with a secure FSBL, we cannot access the Reset-controller hardware for the Linux kernel space directly.
In that case we would require Arm Trusted Firmware (ATF) and PMU Components to access contents from the secure region to the non-secure region.
All of our reset-controller registers exist in the secure-zone. If we want to perform any real read/writes on the reset-controller registers, it is possible only through ATF and PMU components.
The Zynq MP Linux Reset-controller driver provides the following generic call-backs to reset the different blocks (i2c, uart, spi....) from the kernel:
1)reset_control_reset - reset the controlled device.
reset_colntrol_status - return a negative errno if not supported, a positive value if the reset line is asserted, or zero if the reset line is not asserted.
@rstc: reset controller
Apply the attached patch.
This patch has debug system entry so that the reset controller driver can be tested from the user space.
|Name||File Size||File Type|
|Boards & Kits||