| #
1c76dd2d |
| 05-Jan-2024 |
Joanna Farley <joanna.farley@arm.com> |
Merge changes from topic "xlnx_set_freq" into integration
* changes: refactor(xilinx): move plat_get_syscnt_freq2 to common file refactor(versal-net): rename VERSAL_NET_IOU_SCNTRS register to ge
Merge changes from topic "xlnx_set_freq" into integration
* changes: refactor(xilinx): move plat_get_syscnt_freq2 to common file refactor(versal-net): rename VERSAL_NET_IOU_SCNTRS register to generic fix(versal-net): setup counter frequency fix(versal): initialize cntfrq_el0 register
show more ...
|
| #
f000744e |
| 14-Dec-2023 |
Prasad Kummari <prasad.kummari@amd.com> |
fix(versal): initialize cntfrq_el0 register
The set_cnt_freq() function is introduced to configure the counter frequency register.If the counter frequency register is zero, it writes the output of p
fix(versal): initialize cntfrq_el0 register
The set_cnt_freq() function is introduced to configure the counter frequency register.If the counter frequency register is zero, it writes the output of plat_get_syscnt_freq2() the cpu_clocks to the counter frequency register.
According to the design specifications provided for Versal, the lpd_data.cdo file contains a mask_write operation for register 0xFF140020 (base_frequency_ID_register) to set it to 0x5f5e100, configuring it for a 100MHz clock frequency.
Reading the value of the IOU_SCNTRS_BASE_FREQ register using mmio_read_32() to determine the counter frequency. If the counter frequency is zero, the system will set the default CPU clocks constants in TF-A and displays message. However, if the counter frequency is non-zero, the program will return the value stored in the IOU_SCNTRS_BASE_FREQ register.
The issue lies in dcc_status_timeout(),function verifying timeout status, particularly within timeout_cnt_us2cnt(), converting microseconds to counter ticks using read_cntfrq_el0(), which returns zero. timeout_elapsed() then checks if the current counter from read_cntpct_el0()exceeds the expiration count, denoting timeout.
After the function set_cnt_freq() writes into the counter frequency register, the function timeout_cnt_us2cnt() is used to obtain the appropriate counter ticks. Subsequently, the function timeout_elapsed() checks whether the current counter value read_cntpct_el0() has exceeded the specified expiration count. If it has, this indicates that the timeout has lapsed.
Change-Id: I8f2f4d804b5aefa6f92083d831a5ebfade384294 Signed-off-by: Prasad Kummari <prasad.kummari@amd.com>
show more ...
|