This is a known issue with Common Clock Framework (CCF) and PL IP clocks.
When the PL IP is in the design, DTG does not generate the clock nodes in DTS to specify the clocks used by corresponding IP.
When CCF is enabled it will turn off all of the unused clocks or those not voted for by their corresponding drivers.
All of the drivers for PL IPs need to use CCF to set the IP clocks. If not, it can cause the system to hang on Linux.
CCF disables unused clocks.
To work around this issue you can use meta-xilinx-tools DTG, or set the bootargs in DTSI to "clk_ignore_unused" so that CCF will not disable the unused clocks automatically.
From the 2018.1 release on, all of the drivers will need to use CCF.
DTG will generate the PL DTSI clock entries in 2018.1.
If the device-tree is generated by DTG, clk_ignore_unused will be set to bootargs when the PL IP exists.
Please do not remove clk_ignore_unused, otherwise the system will hang for any PL register/memory access.
Building the Device Tree manually:
Add the clk_ignore_unused property in the bootargs device-tree.
The device-tree generated by meta-xilinx-tools layer and clk_ignore_unused device-tree property is appended.
If you use meta-xilinx alone this device-tree property will be not be generated.
You will need to use the in-kernel DTS (from Xilinx Linux) and manually add the clk_ignore_unused property in the bootargs device-tree.
PetaLinux uses meta-xilinx tools DTG which generates the "clk_ignore_unused" device-tree property.
|Boards & Kits||