refactor(delay-timer): add timer callback functionsIn order to avoid separate platform definitions when not using thedefault timer functions, it is better to move these functions out of theheader
refactor(delay-timer): add timer callback functionsIn order to avoid separate platform definitions when not using thedefault timer functions, it is better to move these functions out of theheader file and into the source files, so that they can be built ifneeded.Move timer functions from delay_timer.h into generic_delay_timer.c. Addthem as callback functions which are then called in delay_timer.c.Change-Id: I96a1eac8948b1a7b1e481899b67a083db4c9b97dSigned-off-by: Abhi Singh <abhi.singh@arm.com>
show more ...
include: move MHZ_TICKS_PER_SEC to utils_def.hThis patch moves the MHZ_TICKS_PER_SEC macro to utils_def.hfor other platforms to use.Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>Change-Id:
include: move MHZ_TICKS_PER_SEC to utils_def.hThis patch moves the MHZ_TICKS_PER_SEC macro to utils_def.hfor other platforms to use.Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>Change-Id: I6c4dc733f548d73cfdb3515ec9ad89a9efaf4407
TF-A: Fix non-standard frequency issue in udelayPrevious implementation of timers assumed that clk_div has prettyrepresentation in MHz (10MHz, 100MHz, etc). Unusual frequencies(99.99MHz) were cau
TF-A: Fix non-standard frequency issue in udelayPrevious implementation of timers assumed that clk_div has prettyrepresentation in MHz (10MHz, 100MHz, etc). Unusual frequencies(99.99MHz) were causing assertion error and made udelay unusable.Signed-off-by: Max Shvetsov <maksims.svecovs@arm.com>Change-Id: Ic915fff224369d113fd9f8edbcfff169fca8beac
drivers: generic_delay_timer: Assert presence of Generic TimerThe Generic Timer is an optional extension to an ARMv7-A implementation.The generic delay timer can be used from any architecture supp
drivers: generic_delay_timer: Assert presence of Generic TimerThe Generic Timer is an optional extension to an ARMv7-A implementation.The generic delay timer can be used from any architecture supported bythe Trusted Firmware. In ARMv7 it is needed to check that this featureis present. In ARMv8 it is always present.Change-Id: Ib7e8ec13ffbb2f64445d4ee48ed00f26e34b79b7Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
Sanitise includes across codebaseEnforce full include path for includes. Deprecate old paths.The following folders inside include/lib have been left unchanged:- include/lib/cpus/${ARCH}- inclu
Sanitise includes across codebaseEnforce full include path for includes. Deprecate old paths.The following folders inside include/lib have been left unchanged:- include/lib/cpus/${ARCH}- include/lib/el3_runtime/${ARCH}The reason for this change is that having a global namespace forincludes isn't a good idea. It defeats one of the advantages of havingfolders and it introduces problems that are sometimes subtle (becauseyou may not know the header you are actually including if there are twoof them).For example, this patch had to be created because two headers werecalled the same way: e0ea0928d5b7 ("Fix gpio includes of mt8173 platformto avoid collision."). More recently, this patch has had similarproblems: 46f9b2c3a282 ("drivers: add tzc380 support").This problem was introduced in commit 4ecca33988b9 ("Move include andsource files to logical locations"). At that time, there weren't toomany headers so it wasn't a real issue. However, time has shown thatthis creates problems.Platforms that want to preserve the way they include headers may add theremoved paths to PLAT_INCLUDES, but this is discouraged.Change-Id: I39dc53ed98f9e297a5966e723d1936d6ccf2fc8fSigned-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
Fix misra warnings in delay timer and console driversChange-Id: I43d2b3a0f672b4902edec3d3a39ffedbb0a701a3Signed-off-by: Sathees Balya <sathees.balya@arm.com>
Fix MISRA rule 8.3 in common codeRule 8.3: All declarations of an object or function shall use the same names and type qualifiers.Change-Id: Iff384187c74a598a4e73f350a1893b60e9d16cecSi
Fix MISRA rule 8.3 in common codeRule 8.3: All declarations of an object or function shall use the same names and type qualifiers.Change-Id: Iff384187c74a598a4e73f350a1893b60e9d16cecSigned-off-by: Roberto Vargas <roberto.vargas@arm.com>
delay_timer: Guarantee that delay time can never be undershotDelay functions like udelay() are often used to ensure that thenecessary time passed to allow some asynchronous event to finish, sucha
delay_timer: Guarantee that delay time can never be undershotDelay functions like udelay() are often used to ensure that thenecessary time passed to allow some asynchronous event to finish, suchas the stabilization delay for a power rail. For these use cases it isnot very problematic if the delay is slightly longer than requested,but it is critical that the delay must never be shorter.The current udelay() implementation contains two hazards that may causethe delay to be slightly shorter than intended: Firstly, the amount ofticks to wait is calculated with an integer division, which may cut offthe last fraction of ticks needed. Secondly, the delay may be short by afraction of a tick because we do not know whether the initial ("start")sample of the timer was near the start or near the end of the currenttick. Thus, if the code intends to wait for one tick, it might read thetimer value close to the end of the current tick and then read it againright after the start of the next tick, concluding that the duration ofa full tick has passed when it in fact was just a fraction of it.This patch rounds up the division and always adds one extra tick tocounteract both problems and ensure that delays will always be largerbut never smaller than requested.Change-Id: Ic5fe5f858b5cdf3c0dbf3e488d4d5702d9569433Signed-off-by: Julius Werner <jwerner@chromium.org>
delay_timer: correct sparse issues and warningsUse NULL instead of 0 where required.Include headers to have the prototype of the functions.Signed-off-by: Yann Gautier <yann.gautier@st.com>Signe
delay_timer: correct sparse issues and warningsUse NULL instead of 0 where required.Include headers to have the prototype of the functions.Signed-off-by: Yann Gautier <yann.gautier@st.com>Signed-off-by: Etienne Carriere <etienne.carriere@st.com>
Use SPDX license identifiersTo make software license auditing simpler, use SPDX[0] licenseidentifiers instead of duplicating the license text in every file.NOTE: Files that have been imported by
Use SPDX license identifiersTo make software license auditing simpler, use SPDX[0] licenseidentifiers instead of duplicating the license text in every file.NOTE: Files that have been imported by FreeBSD have not been modified.[0]: https://spdx.org/Change-Id: I80a00e1f641b8cc075ca5a95b10607ed9ed8761aSigned-off-by: dp-arm <dimitris.papastamos@arm.com>
Implement generic delay timerAdd delay timer implementation based on the system generic counter.This either uses the platform's implementation of`plat_get_syscnt_freq()` or explicit clock multipl
Implement generic delay timerAdd delay timer implementation based on the system generic counter.This either uses the platform's implementation of`plat_get_syscnt_freq()` or explicit clock multiplier/divider valuesprovided by the platform.The current implementation of udelay has been modified to avoidunnecessary calculations while waiting on the loop and to make iteasier to check for overflows.Change-Id: I9062e1d506dc2f68367fd9289250b93444721732
Add a simple delay timer driver APIThe API is simple. The BSP or specific timer driver creates aninstance of timer_ops_t, fills in the timer specific data, then callstimer_init(). The timer speci
Add a simple delay timer driver APIThe API is simple. The BSP or specific timer driver creates aninstance of timer_ops_t, fills in the timer specific data, then callstimer_init(). The timer specific data includes a function pointerto return the timer value and a clock multiplier/divider. The ratioof the multiplier and the divider is the clock frequency in MHz.After that, mdelay() or udelay() can be called to delay execution forthe specified time (milliseconds or microseconds, respectively).Change-Id: Icf8a295e1d25874f789bf28b7412156329dc975cCo-authored-by: Dan Handley <dan.handley@arm.com>