summaryrefslogtreecommitdiffstats
path: root/include/chip.h
diff options
context:
space:
mode:
authorVasant Hegde <hegdevasant@linux.vnet.ibm.com>2018-04-23 12:13:59 +0530
committerStewart Smith <stewart@linux.ibm.com>2018-04-30 19:04:42 -0500
commit6739c890a2f298ed382b9557840a493fb97df44b (patch)
tree007c00d73f2c5aa1f75250dca25df1328956adf1 /include/chip.h
parentd654f6c93bd6b2ea2db4cea68252073e6cd0fae6 (diff)
downloadblackbird-skiboot-6739c890a2f298ed382b9557840a493fb97df44b.tar.gz
blackbird-skiboot-6739c890a2f298ed382b9557840a493fb97df44b.zip
Add SBE driver support
SBE (Self Boot Engine) on P9 has two different jobs: - Boot the chip up to the point the core is functional - Provide various services like timer, scom, stash MPIPL, etc., at runtime OPAL can communicate to SBE via a set of data and control registers provided by the PSU block in P9 chip. - Four 8 byte registers for Host to send command packets to SBE - Four 8 byte registers for SBE to send response packets to Host - Two doorbell registers (1 on each side) to alert either party when data is placed in above mentioned data register Protocol constraints: Only one command is accepted in the command buffer until the response for the command is enqueued in the response buffer by SBE. Usage: We will use SBE for various purposes like timer, MPIPL, etc. This patch implements the SBE MBOX spec for OPAL to communicate with SBE. Design consideration: - Each chip has SBE. We need to track SBE messages per chip. Hence added per chip sbe structure and list of messages to that chip - SBE accepts only one command at a time. Hence serialized MBOX commands. - OPAL gets interrupted once SBE sets doorbell register - OPAL has to clear doorbell register after reading response - Every command class has timeout option. Timed out messages are discarded - SBE MBOX commands can be classified into four types : - Those that must be sent to the master only (ex: sending MDST/MDDT info) - Those that must be sent to slaves only (ex: continue MPIPL) - Those that must be sent to all chips (ex: close insecure window) - Those that can be sent to any chip (ex: timer) Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
Diffstat (limited to 'include/chip.h')
-rw-r--r--include/chip.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/chip.h b/include/chip.h
index 43b5ea55..059033e2 100644
--- a/include/chip.h
+++ b/include/chip.h
@@ -113,6 +113,7 @@ struct mfsi;
struct xive;
struct lpcm;
struct vas;
+struct p9_sbe;
/* Chip type */
enum proc_chip_type {
@@ -218,6 +219,9 @@ struct proc_chip {
/* location code of this chip */
const uint8_t *loc_code;
+
+ /* Used by hw/sbe-p9.c */
+ struct p9_sbe *sbe;
};
extern uint32_t pir_to_chip_id(uint32_t pir);
OpenPOWER on IntegriCloud