SCP - RSE Communication

Introduction

This document gives an overview of the SCP to RSE communication stack.

+----------------+        +-----------+        +-----------+
|                |        |           |        |           |
|  SCP PLATFORM  |<------>| TRANSPORT |<------>|   MHUv3   |
|                |        |           |        |           |
+----------------+        +-----------+        +-----------+

Overview

The RD-Fremont platform SCP communicates with the RSE via MHU doorbell during the boot sequence.

In SCP firmware, the scp_platform module binds to the transport module. The transport HAL module is bound to the MHUv3 driver.

The SCP transport module configuration info can be found in the following file in the software stack: <workspace>/scp/product/neoverse-rd/rdfremont/scp_ramfw/config_transport.c

  • The transport channel SCP_PLATFORM_TRANSPORT is used by the scp platform module during the initial boot to perform handshake with the RSE firmware via MHU doorbell events.

The SCP MHUv3 driver configuration info can found in the following file in the software stack: <workspace>/scp/product/neoverse-rd/rdfremont/scp_ramfw/config_mhu3.c

  • In this config data, the element SCP2RSS_S_MHU_DBCH is used to communicate with the RSE.

  • The SCP Platform transport channel uses the doorbell channel 1, flag 0 to perform handshake with the RSE firmware.

SCP-RSE Handshake

The RSE firmware BL2 stage loads the MCP, SCP and LCP firmware images. The LCP firmware must be loaded to the LCP ITCM (Instruction - Tightly Coupled Memory) which is accessed via the cluster utility region in the AP memory space through the RSE ATU. But, in order to access the LCP ITCM, the RSE must wait for the SYSTOP power domain to be in ON state. So, the RSE firmware loads the SCP firmware image, releases the SCP and waits for the SCP to turn on the SYSTOP power domain.

After the SYSTOP is turned on and the platform is initialized, the SCP platform system module triggers the SCP to RSE MHUv3 doorbell and waits for a doorbell back from RSE which would indicate that the RSE has successfully loaded the LCP firmware images to the LCPs.

The RSE firmware on receiving the doorbell from SCP, loads the LCP firmware to the LCP ITCMs and triggers RSE to SCP MHUv3 doorbell. The SCP platform system module receives the doorbell event, configures the LCP UART and releases all the LCPs from reset.

The LCP initialization code in the SCP platform module can be found in the function platform_setup_lcp() in the following file in the software stack: <workspace>/scp/product/neoverse-rd/rdfremont/module/scp_platform/src/ platform_lcp.c