Define frequency of system counter in platform code
BL3-1 architecture setup code programs the system counter frequency
into the CNTFRQ_EL0 register. This frequency is defined by the
platform, though. This patch introduces a new platform hook that
the architecture setup code can call to retrieve this information.
In the ARM FVP port, this returns the first entry of the frequency
modes table from the memory mapped generic timer.

All system counter setup code has been removed from BL1 as some
platforms may not have initialized the system counters at this stage.
The platform specific settings done exclusively in BL1 have been moved
to BL3-1. In the ARM FVP port, this consists in enabling and
initializing the System level generic timer. Also, the frequency change
request in the counter control register has been set to 0 to make it
explicit it's using the base frequency. The CNTCR_FCREQ() macro has been
fixed in this context to give an entry number rather than a bitmask.

In future, when support for firmware update is implemented, there
is a case where BL1 platform specific code will need to program
the counter frequency. This should be implemented at that time.

This patch also updates the relevant documentation.
1 parent c78069c commit a5355358f34a6b0a37753fbe03d94ddb05f43e57
@Sandrine Bailleux Sandrine Bailleux authored on 2 Apr 2014
Showing 9 changed files
View
bl1/aarch64/bl1_arch_setup.c
View
bl31/aarch64/bl31_arch_setup.c
View
docs/firmware-design.md
View
docs/porting-guide.md
View
include/aarch64/arch.h
View
plat/fvp/aarch64/plat_common.c
View
plat/fvp/bl1_plat_setup.c
View
plat/fvp/bl31_plat_setup.c
View
plat/fvp/platform.h