Jonathan Neuschäfer has uploaded this change for review. ( https://review.coreboot.org/25680
Change subject: Documentation/timestamp.md: Fix markdown formatting
......................................................................
Documentation/timestamp.md: Fix markdown formatting
Fix the headline levels (only the document's title should be a top-level
document), and use "# " instead of "====" to mark headlines, because
it's more obvious what the different levels of that are. Also fix some
other things.
Arguably, the explicit table of contents could be removed.
Change-Id: Ie29b6393e9d7871ea3c900e016b5c3ed415538ac
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer(a)gmx.net>
---
M Documentation/timestamp.md
1 file changed, 69 insertions(+), 69 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/80/25680/1
diff --git a/Documentation/timestamp.md b/Documentation/timestamp.md
index 821d462..bee4745 100644
--- a/Documentation/timestamp.md
+++ b/Documentation/timestamp.md
@@ -1,33 +1,31 @@
-Table of Contents
-=================
+# Timestamps
+
+## Table of Contents
+
Introduction
- Transition from cache to cbmem
+- Transition from cache to cbmem
Data structures used
- cache_state
- table
- entries
+- cache_state
+- table
+- entries
Function APIs
- timestamp_init
- timestamp_add
- timestamp_add_now
- timestamp_sync
+- timestamp_init
+- timestamp_add
+- timestamp_add_now
+- timestamp_sync
Use / Test Cases
- Case 1: Timestamp Region Exists
- Case 2: No timestamp region, fresh boot, cbmem_initialize called after
- timestamp_init
- Case 3: No timestamp region, fresh boot, cbmem_initialize called before
- timestamp_init
- Case 4: No timestamp region, resume, cbmem_initialize called after
- timestamp_init
- Case 5: No timestamp region, resume, cbmem_initialize called before
- timestamp_init
+- Case 1: Timestamp Region Exists
+- Case 2: No timestamp region, fresh boot, cbmem_initialize called after timestamp_init
+- Case 3: No timestamp region, fresh boot, cbmem_initialize called before timestamp_init
+- Case 4: No timestamp region, resume, cbmem_initialize called after timestamp_init
+- Case 5: No timestamp region, resume, cbmem_initialize called before timestamp_init
-Introduction
-============
+## Introduction
+
The aim of the timestamp library is to make it easier for different boards
to save timestamps in cbmem / stash (until cbmem is brought up) by
providing a simple API to initialize, add and sync timestamps. In order
@@ -51,8 +49,8 @@
3. Add a new cbmem timestamp area based on whether a reset of the cbmem
timestamp region is required or not.
-Transition from cache to cbmem
-------------------------------
+### Transition from cache to cbmem
+
To move timestamps from the cache to cbmem (and initialize the cbmem area in
the first place), we use the CBMEM_INIT_HOOK infrastructure of coreboot.
@@ -62,25 +60,30 @@
After such a transition, timestamp_init() must not be run again.
-Data structures used
-====================
+## Data structures used
+
The main structure that maintains information about the timestamp cache is:
+
+```
struct __packed timestamp_cache {
uint16_t cache_state;
struct timestamp_table table;
struct timestamp_entry entries[MAX_TIMESTAMP_CACHE];
};
+```
-cache_state
------------
-The state of the cache is maintained by cache_state attribute which can
+### cache_state
+
+The state of the cache is maintained by `cache_state` attribute which can
be any one of the following:
+```
enum {
TIMESTAMP_CACHE_UNINITIALIZED = 0,
TIMESTAMP_CACHE_INITIALIZED,
TIMESTAMP_CACHE_NOT_NEEDED,
};
+```
By default, if the cache is stored in local stash (bss area), then
it will be reset to uninitialized state. However, if the cache is
@@ -89,112 +92,109 @@
initialized to default values by the library.
Once the cache is initialized, its state is set to
-CACHE_INITIALIZED. Henceforth, the calls to cache i.e. timestamp_add
+`CACHE_INITIALIZED`. Henceforth, the calls to cache i.e. `timestamp_add`
know that the state reflected is valid and timestamps can be directly
saved in the cache.
-Once the cbmem area is up (i.e. call to timestamp_sync_cache_to_cbmem),
+Once the cbmem area is up (i.e. call to `timestamp_sync_cache_to_cbmem`),
we do not need to store the timestamps in local stash / timestamp area
-anymore. Thus, the cache state is set to CACHE_NOT_NEEDED, which allows
-timestamp_add to store all timestamps directly into the cbmem area.
+anymore. Thus, the cache state is set to `CACHE_NOT_NEEDED`, which allows
+`timestamp_add` to store all timestamps directly into the cbmem area.
-table
------
+### table
+
This field is represented by a structure which provides overall
information about the entries in the timestamp area:
+```
struct timestamp_table {
uint64_t base_time;
uint32_t max_entries;
uint32_t num_entries;
struct timestamp_entry entries[0]; /* Variable number of entries */
} __packed;
+```
It indicates the base time for all timestamp entries, maximum number
of entries that can be stored, total number of entries that currently
exist and an entry structure to hold variable number of entries.
-entries
--------
+### entries
+
This field holds the details of each timestamp entry, upto a maximum
-of MAX_TIMESTAMP_CACHE which is defined as 16 entries. Each entry is
+of `MAX_TIMESTAMP_CACHE` which is defined as 16 entries. Each entry is
defined by:
+```
struct timestamp_entry {
uint32_t entry_id;
uint64_t entry_stamp;
} __packed;
+```
-entry_id holds the timestamp id corresponding to this entry and
-entry_stamp holds the actual timestamp.
+`entry_id` holds the timestamp id corresponding to this entry and
+`entry_stamp` holds the actual timestamp.
-For timestamps stored in the cbmem area, a timestamp_table is allocated
-with space for MAX_TIMESTAMPS equal to 30. Thus, the cbmem area holds
-base_time, max_entries (which is 30), current number of entries and the
-actual entries represented by timestamp_entry.
+For timestamps stored in the cbmem area, a `timestamp_table` is allocated
+with space for `MAX_TIMESTAMPS` equal to 30. Thus, the cbmem area holds
+`base_time`, `max_entries` (which is 30), current number of entries and the
+actual entries represented by `timestamp_entry`.
-Function APIs
-=============
+## Function APIs
-timestamp_init
---------------
+### timestamp_init
+
This function initializes the timestamp cache and should be run as early
as possible. On platforms with SRAM, this might mean in bootblock, on
x86 with its CAR backed memory in romstage, this means romstage before
memory init.
-timestamp_add
--------------
+### timestamp_add
+
This function accepts from user a timestamp id and time to record in the
timestamp table. It stores the entry in the appropriate table in cbmem
-or _timestamp region or local stash.
+or `_timestamp` region or local stash.
-timestamp_add_now
------------------
-This function calls timestamp_add with user-provided id and current time.
+### timestamp_add_now
+
+This function calls `timestamp_add` with user-provided id and current time.
-Use / Test Cases
-================
+## Use / Test Cases
The following cases have been considered while designing the timestamp
library. It is important to ensure that any changes made to this library satisfy
each of the following use cases:
-Case 1: Timestamp Region Exists (Fresh Boot / Resume)
------------------------------------------------------
+### Case 1: Timestamp Region Exists (Fresh Boot / Resume)
-In this case, the library needs to call timestamp_init as early as possible to
+In this case, the library needs to call `timestamp_init` as early as possible to
enable the timestamp cache. Once cbmem is available, the values will be
transferred automatically.
All regions are automatically reset on initialization.
-Case 2: No timestamp region, fresh boot, cbmem_initialize called after timestamp_init
--------------------------------------------------------------------------------------
+### Case 2: No timestamp region, fresh boot, cbmem_initialize called after timestamp_init
-timestamp_init will set up a local cache. cbmem must be initialized before that
+`timestamp_init` will set up a local cache. cbmem must be initialized before that
cache vanishes - as happens when jumping to the next stage.
-Case 3: No timestamp region, fresh boot, cbmem_initialize called before timestamp_init
---------------------------------------------------------------------------------------
+### Case 3: No timestamp region, fresh boot, cbmem_initialize called before timestamp_init
-This case is not supported right now, just don't call timestamp_init after
-cbmem_initialize. (Patches to make this more robust are welcome.)
+This case is not supported right now, just don't call `timestamp_init` after
+`cbmem_initialize`. (Patches to make this more robust are welcome.)
-Case 4: No timestamp region, resume, cbmem_initialize called after timestamp_init
----------------------------------------------------------------------------------
+### Case 4: No timestamp region, resume, cbmem_initialize called after timestamp_init
We always reset the cbmem region before using it, so pre-suspend timestamps
will be gone.
-Case 5: No timestamp region, resume, cbmem_initialize called before timestamp_init
-----------------------------------------------------------------------------------
+### Case 5: No timestamp region, resume, cbmem_initialize called before timestamp_init
We always reset the cbmem region before using it, so pre-suspend timestamps
will be gone.
--
To view, visit https://review.coreboot.org/25680
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie29b6393e9d7871ea3c900e016b5c3ed415538ac
Gerrit-Change-Number: 25680
Gerrit-PatchSet: 1
Gerrit-Owner: Jonathan Neuschäfer <j.neuschaefer(a)gmx.net>
Jonathan Neuschäfer has uploaded this change for review. ( https://review.coreboot.org/25679
Change subject: Documentation/acpi/gpio.md: Fix formatting of table
......................................................................
Documentation/acpi/gpio.md: Fix formatting of table
The table in Documentation/acpi/gpio.md is currently detected as
free-form text (at least by GitHub and recommonmark), instead of a
table. Wrap it in a code formatting block to preserve the manual
formatting.
Change-Id: If460d7f1ba1a6198d949886f0f55fd6254bc2f7a
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer(a)gmx.net>
---
M Documentation/acpi/gpio.md
1 file changed, 2 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/79/25679/1
diff --git a/Documentation/acpi/gpio.md b/Documentation/acpi/gpio.md
index a3685b8..d42042f 100644
--- a/Documentation/acpi/gpio.md
+++ b/Documentation/acpi/gpio.md
@@ -92,6 +92,7 @@
make any assumptions about the values in Local5, Local6 and Local7
variables.
+```
**Function** **Operation** **Return**
acpigen_soc_read_rx_gpio Generate ACPI AML code to Error = -1
read value of Rx in Local0. Success = 0
@@ -101,6 +102,7 @@
set Tx to 1. Success = 0
acpigen_soc_clear_tx_gpio Generate ACPI AML code to Error = -1
set Tx to 0. Success = 0
+```
Ideally, the operation column in the above table should use one or
more functions implemented by the platform in AML code library (like
--
To view, visit https://review.coreboot.org/25679
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: If460d7f1ba1a6198d949886f0f55fd6254bc2f7a
Gerrit-Change-Number: 25679
Gerrit-PatchSet: 1
Gerrit-Owner: Jonathan Neuschäfer <j.neuschaefer(a)gmx.net>
Jonathan Neuschäfer has uploaded this change for review. ( https://review.coreboot.org/25678
Change subject: Documentation/acpi/gpio.md: Fix markdown heading levels
......................................................................
Documentation/acpi/gpio.md: Fix markdown heading levels
Only the document title should be a top-level heading ('#'). Everything
else should be a second- over lower-level heading ('##').
Change-Id: Ida16c3ecaa22e8439007673cb943d04952e19471
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer(a)gmx.net>
---
M Documentation/acpi/gpio.md
1 file changed, 7 insertions(+), 7 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/78/25678/1
diff --git a/Documentation/acpi/gpio.md b/Documentation/acpi/gpio.md
index 344e2ee..a3685b8 100644
--- a/Documentation/acpi/gpio.md
+++ b/Documentation/acpi/gpio.md
@@ -1,13 +1,13 @@
-# GPIO toggling in ACPI AML for coreboot #
+# GPIO toggling in ACPI AML for coreboot
-# Table of contents #
+## Table of contents
- Introduction
- Platform Interface
- Helper routines
- Implementation details
- Arguments and Local Variables Management
-# Introduction #
+## Introduction
ACPI provides platform-independent interfaces enabling the operating
system to perform power management for devices as well as the entire
@@ -25,7 +25,7 @@
simple interface that can be used by any coreboot driver to generate
ACPI AML code for reading or toggling platform GPIOs.
-# Platform Interface #
+## Platform Interface
All platforms that use drivers requiring ACPI AML code for GPIO
interactions need to be implement the following functions:
@@ -56,7 +56,7 @@
3. Allows GPIO AML methods to be present under any device scope and
gives SoC the flexibility to call them without any restrictions.
-# Helper routines #
+## Helper routines
In order to relieve drivers of the task of implementing the same code
for enabling/disabling Tx GPIOs based on the GPIO polarity, helper
@@ -73,7 +73,7 @@
functions internally. Thus, all the ACPI AML calling conventions for
the platform functions apply to these helper functions as well.
-# Implementation Details #
+## Implementation Details
ACPI library in coreboot will provide weak definitions for all the
above functions with error messages indicating that these functions
@@ -163,7 +163,7 @@
required, driver code can rely either on some config option or read
device-tree to use any user-provided GPIOs.
-# Arguments and Local Variables Management #
+## Arguments and Local Variables Management
Platform-defined functions can call methods using the same calling
conventions provided by AML code. However, use of Local Variables is
--
To view, visit https://review.coreboot.org/25678
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ida16c3ecaa22e8439007673cb943d04952e19471
Gerrit-Change-Number: 25678
Gerrit-PatchSet: 1
Gerrit-Owner: Jonathan Neuschäfer <j.neuschaefer(a)gmx.net>