diff options
Diffstat (limited to 'docs/porting-guide.md')
-rw-r--r-- | docs/porting-guide.md | 59 |
1 files changed, 46 insertions, 13 deletions
diff --git a/docs/porting-guide.md b/docs/porting-guide.md index 0d713c4a..759761e3 100644 --- a/docs/porting-guide.md +++ b/docs/porting-guide.md @@ -76,8 +76,8 @@ either mandatory or optional. A platform port must enable the Memory Management Unit (MMU) as well as the instruction and data caches for each BL stage. Setting up the translation tables is the responsibility of the platform port because memory maps differ -across platforms. A memory translation library (see `lib/aarch64/xlat_tables.c`) -is provided to help in this setup. Note that although this library supports +across platforms. A memory translation library (see `lib/xlat_tables/`) is +provided to help in this setup. Note that although this library supports non-identity mappings, this is intended only for re-mapping peripheral physical addresses and allows platforms with high I/O addresses to reduce their virtual address space. All other addresses corresponding to code and data must currently @@ -448,6 +448,14 @@ must also be defined: Defines the maximum number of open IO handles. Attempting to open more IO entities than this value using `io_open()` will fail with -ENOMEM. +* **#define : MAX_IO_BLOCK_DEVICES** + + Defines the maximum number of registered IO block devices. Attempting to + register more devices this value using `io_dev_open()` will fail + with -ENOMEM. MAX_IO_BLOCK_DEVICES should be less than MAX_IO_DEVICES. + With this macro, multiple block devices could be supported at the same + time. + If the platform needs to allocate data within the per-cpu data framework in BL31, it should define the following macro. Currently this is only required if the platform decides not to use the coherent memory section by undefining the @@ -623,10 +631,19 @@ In case the function returns a hash of the key: digest OCTET STRING } -The function returns 0 on success. Any other value means the ROTPK could not be -retrieved from the platform. The function also reports extra information related -to the ROTPK in the flags parameter. +The function returns 0 on success. Any other value is treated as error by the +Trusted Board Boot. The function also reports extra information related +to the ROTPK in the flags parameter: + ROTPK_IS_HASH : Indicates that the ROTPK returned by the platform is a + hash. + ROTPK_NOT_DEPLOYED : This allows the platform to skip certificate ROTPK + verification while the platform ROTPK is not deployed. + When this flag is set, the function does not need to + return a platform ROTPK, and the authentication + framework uses the ROTPK in the certificate without + verifying it against the platform value. This flag + must not be used in a deployed production environment. ### Function: plat_get_nv_ctr() @@ -1521,10 +1538,10 @@ state. This function must return a pointer to the `entry_point_info` structure (that was copied during `bl31_early_platform_setup()`) if the image exists. It should return NULL otherwise. -### Function : plat_get_syscnt_freq() [mandatory] +### Function : plat_get_syscnt_freq2() [mandatory] Argument : void - Return : uint64_t + Return : unsigned int This function is used by the architecture setup code to retrieve the counter frequency for the CPU's generic timer. This value will be programmed into the @@ -1707,6 +1724,22 @@ latter case, the power domain is expected to save enough state so that it can resume execution by restoring this state when its powered on (see `pwr_domain_suspend_finish()`). +#### plat_psci_ops.pwr_domain_pwr_down_wfi() + +This is an optional function and, if implemented, is expected to perform +platform specific actions including the `wfi` invocation which allows the +CPU to powerdown. Since this function is invoked outside the PSCI locks, +the actions performed in this hook must be local to the CPU or the platform +must ensure that races between multiple CPUs cannot occur. + +The `target_state` has a similar meaning as described in the `pwr_domain_off()` +operation and it encodes the platform coordinated target local power states for +the CPU power domain and its parent power domain levels. This function must +not return back to the caller. + +If this function is not implemented by the platform, PSCI generic +implementation invokes `psci_power_down_wfi()` for power down. + #### plat_psci_ops.pwr_domain_on_finish() This function is called by the PSCI implementation after the calling CPU is @@ -2011,12 +2044,12 @@ library only contains those C library definitions required by the local implementation. If more functionality is required, the needed library functions will need to be added to the local implementation. -Versions of [FreeBSD] headers can be found in `include/stdlib`. Some of these -headers have been cut down in order to simplify the implementation. In order to -minimize changes to the header files, the [FreeBSD] layout has been maintained. -The generic C library definitions can be found in `include/stdlib` with more -system and machine specific declarations in `include/stdlib/sys` and -`include/stdlib/machine`. +Versions of [FreeBSD] headers can be found in `include/lib/stdlib`. Some of +these headers have been cut down in order to simplify the implementation. In +order to minimize changes to the header files, the [FreeBSD] layout has been +maintained. The generic C library definitions can be found in +`include/lib/stdlib` with more system and machine specific declarations in +`include/lib/stdlib/sys` and `include/lib/stdlib/machine`. The local C library implementations can be found in `lib/stdlib`. In order to extend the C library these files may need to be modified. It is recommended to |