SCP - RSS Communication

Introduction

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

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

Overview

The RD-Fremont platform SCP communicates with the RSS 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 RSS 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 RSS.

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

SCP-RSS handshake

The RSS 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 RSS ATU. But, in order to access the LCP ITCM, the RSS must wait for the SYSTOP power domain to be in ON state. So, the RSS 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 RSS MHUv3 doorbell and waits for a doorbell back from RSS which would indicate that the RSS has successfully loaded the LCP firmware images to the LCPs.

The RSS firmware on receiving the doorbell from SCP, loads the LCP firmware to the LCP ITCMs and triggers RSS 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


Copyright (c) 2023-2024, Arm Limited. All rights reserved.