RE: [PATCH v3 1/6] Documentation: firmware-guide: add NXP i.MX95 SCMI documentation

From: Peng Fan
Date: Tue Apr 23 2024 - 23:12:11 EST


Hi Sudeep,

> Subject: [PATCH v3 1/6] Documentation: firmware-guide: add NXP i.MX95
> SCMI documentation

Does this documentation looks good to you?

Thanks,
Peng.
>
> From: Peng Fan <peng.fan@xxxxxxx>
>
> Add NXP i.MX95 System Control Management Interface(SCMI) vendor
> extensions protocol documentation.
>
> Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
> ---
> Documentation/firmware-guide/index.rst | 10 +
> Documentation/firmware-guide/nxp/imx95-scmi.rst | 877
> ++++++++++++++++++++++++
> Documentation/firmware-guide/nxp/index.rst | 10 +
> 3 files changed, 897 insertions(+)
>
> diff --git a/Documentation/firmware-guide/index.rst
> b/Documentation/firmware-guide/index.rst
> index 5355784ca0a2..8f66ae31337e 100644
> --- a/Documentation/firmware-guide/index.rst
> +++ b/Documentation/firmware-guide/index.rst
> @@ -4,6 +4,9 @@
> The Linux kernel firmware guide
> ===============================
>
> +ACPI subsystem
> +==============
> +
> This section describes the ACPI subsystem in Linux from firmware perspective.
>
> .. toctree::
> @@ -11,3 +14,10 @@ This section describes the ACPI subsystem in Linux
> from firmware perspective.
>
> acpi/index
>
> +NXP firmware
> +============
> +
> +.. toctree::
> + :maxdepth: 1
> +
> + nxp/index
> diff --git a/Documentation/firmware-guide/nxp/imx95-scmi.rst
> b/Documentation/firmware-guide/nxp/imx95-scmi.rst
> new file mode 100644
> index 000000000000..bd87a961e4a5
> --- /dev/null
> +++ b/Documentation/firmware-guide/nxp/imx95-scmi.rst
> @@ -0,0 +1,877 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +.. include:: <isonum.txt>
> +
> +=================================================================
> ==============
> +i.MX95 System Control and Management Interface(SCMI) Vendor Protocols
> Extension
> +=================================================================
> ==============
> +
> +:Copyright: |copy| 2024 NXP
> +
> +:Author: Peng Fan <peng.fan@xxxxxxx>
> +
> +The System Manager (SM) is a low-level system function which runs on a
> System
> +Control Processor (SCP) to support isolation and management of power
> domains,
> +clocks, resets, sensors, pins, etc. on complex application processors. It often
> +runs on a Cortex-M processor and provides an abstraction to many of the
> +underlying features of the hardware. The primary purpose of the SM is to
> allow
> +isolation between software running on different cores in the SoC. It does this
> +by having exclusive access to critical resources such as those controlling
> +power, clocks, reset, PMIC, etc. and then providing an RPC interface to those
> +clients. This allows the SM to provide access control, arbitration, and
> +aggregation policies for those shared critical resources.
> +
> +This document covers all the information necessary to understand, maintain,
> +port, and deploy the SM on supported processors.
> +
> +The SM implements an interface compliant with the Arm SCMI 3.2
> Specification
> +with vendor specific extensions.
> +
> +SCMI_BBM: System Control and Management Interface Driver (BBM)
> +==============================================================
> +
> +This protocol is intended provide access to the battery-backed module. This
> +contains persistent storage (GPR), an RTC, and the ON/OFF button. The
> protocol
> +can also provide access to similar functions implemented via external board
> +components. The BBM protocol provides functions to:
> +
> +- Describe the protocol version.
> +- Discover implementation attributes.
> +- Read/write GPR
> +- Discover the RTCs available in the system.
> +- Read/write the RTC time in seconds and ticks
> +- Set an alarm (per LM) in seconds
> +- Get notifications on RTC update, alarm, or rollover.
> +- Get notification on ON/OFF button activity.
> +
> +For most SoC, there is one on-chip RTC (e.g. in BBNSM) and this is RTC ID 0.
> +Board code can add additional GPR and RTC.
> +
> +GPR are not aggregated. The RTC time is also not aggregated. Setting these
> +sets for all so normally exclusive access would be granted to one agent for
> +each. However, RTC alarms are maintained for each LM and the hardware is
> +programmed with the next nearest alarm time. So only one agent in an LM
> should
> +be given access rights to set an RTC alarm.
> +
> +Commands:
> +_________
> +
> +PROTOCOL_VERSION
> +~~~~~~~~~~~~~~~~
> +
> +message_id: 0x0
> +protocol_id: 0x81
> +
> ++---------------+--------------------------------------------------------------+
> +|Return values |
> ++---------------+--------------------------------------------------------------+
> +|Name |Description |
> ++---------------+--------------------------------------------------------------+
> +|int32 status | See ARM SCMI Specification v3.2 section 4.1.4 for status
> |
> +| | code definitions. |
> ++---------------+--------------------------------------------------------------+
> +|uint32 version | For this revision of the specification, this value must be |
> +| | 0x10000. |
> ++---------------+--------------------------------------------------------------+
> +
> +PROTOCOL_ATTRIBUTES
> +~~~~~~~~~~~~~~~~~~~
> +
> +message_id: 0x1
> +protocol_id: 0x81
> +
> ++---------------+--------------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status | See ARM SCMI Specification v3.2 section 4.1.4 for status
> |
> +| | code definitions. |
> ++------------------+-----------------------------------------------------------+
> +|uint32 attributes | Bits[31:8] Number of RTCs. |
> +| | Bits[15:0] Number of persistent storage (GPR) words. |
> ++------------------+-----------------------------------------------------------+
> +
> +PROTOCOL_MESSAGE_ATTRIBUTES
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +message_id: 0x2
> +protocol_id: 0x81
> +
> ++---------------+--------------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: in case the message is implemented and
> available |
> +| |to use. |
> +| |NOT_FOUND: if the message identified by message_id is |
> +| |invalid or not implemented |
> ++------------------+-----------------------------------------------------------+
> +|uint32 attributes |Flags that are associated with a specific function in the |
> +| |protocol. For all functions in this protocol, this |
> +| |parameter has a value of 0 |
> ++------------------+-----------------------------------------------------------+
> +
> +BBM_GPR_SET
> +~~~~~~~~~~~
> +
> +message_id: 0x3
> +protocol_id: 0x81
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 index |Index of GPR to write |
> ++------------------+-----------------------------------------------------------+
> +|uint32 value |32-bit value to write to the GPR |
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: if the GPR was successfully written. |
> +| |NOT_FOUND: if the index is not valid. |
> +| |DENIED: if the agent does not have permission to write |
> +| |the specified GPR |
> ++------------------+-----------------------------------------------------------+
> +
> +BBM_GPR_GET
> +~~~~~~~~~~~
> +
> +message_id: 0x4
> +protocol_id: 0x81
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 index |Index of GPR to read |
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: if the GPR was successfully written. |
> +| |NOT_FOUND: if the index is not valid. |
> +| |DENIED: if the agent does not have permission to write |
> +| |the specified GPR. |
> ++------------------+-----------------------------------------------------------+
> +|uint32 value |32-bit value read from the GPR |
> ++------------------+-----------------------------------------------------------+
> +
> +BBM_RTC_ATTRIBUTES
> +~~~~~~~~~~~~~~~~~~
> +
> +message_id: 0x5
> +protocol_id: 0x81
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 index |Index of RTC |
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: returned the attributes. |
> +| |NOT_FOUND: Index is invalid. |
> ++------------------+-----------------------------------------------------------+
> +|uint32 attributes |Bit[31:24] Bit width of RTC seconds. |
> +| |Bit[23:16] Bit width of RTC ticks. |
> +| |Bits[15:0] RTC ticks per second |
> ++------------------+-----------------------------------------------------------+
> +|uint8 name[16] |Null-terminated ASCII string of up to 16 bytes in length
> |
> +| |describing the RTC name |
> ++------------------+-----------------------------------------------------------+
> +
> +BBM_RTC_TIME_SET
> +~~~~~~~~~~~~~~~~
> +
> +message_id: 0x6
> +protocol_id: 0x81
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 index |Index of RTC |
> ++------------------+-----------------------------------------------------------+
> +|uint32 flags |Bits[31:1] Reserved, must be zero. |
> +| |Bit[0] RTC time format: |
> +| |Set to 1 if the time is in ticks. |
> +| |Set to 0 if the time is in seconds |
> ++------------------+-----------------------------------------------------------+
> +|uint32 time[2] |Lower word: Lower 32 bits of the time in seconds/ticks.
> |
> +| |Upper word: Upper 32 bits of the time in seconds/ticks. |
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: RTC time was successfully set. |
> +| |NOT_FOUND: rtcId pertains to a non-existent RTC. |
> +| |INVALID_PARAMETERS: time is not valid |
> +| |(beyond the range of the RTC). |
> +| |DENIED: the agent does not have permission to set the RTC. |
> ++------------------+-----------------------------------------------------------+
> +
> +BBM_RTC_TIME_GET
> +~~~~~~~~~~~~~~~~
> +
> +message_id: 0x7
> +protocol_id: 0x81
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 index |Index of RTC |
> ++------------------+-----------------------------------------------------------+
> +|uint32 flags |Bits[31:1] Reserved, must be zero. |
> +| |Bit[0] RTC time format: |
> +| |Set to 1 if the time is in ticks. |
> +| |Set to 0 if the time is in seconds |
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: RTC time was successfully set. |
> +| |NOT_FOUND: rtcId pertains to a non-existent RTC. |
> ++------------------+-----------------------------------------------------------+
> +|uint32 time[2] |Lower word: Lower 32 bits of the time in seconds/ticks.
> |
> +| |Upper word: Upper 32 bits of the time in seconds/ticks. |
> ++------------------+-----------------------------------------------------------+
> +
> +BBM_RTC_ALARM_SET
> +~~~~~~~~~~~~~~~~~
> +
> +message_id: 0x8
> +protocol_id: 0x81
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 index |Index of RTC |
> ++------------------+-----------------------------------------------------------+
> +|uint32 flags |Bits[31:1] Reserved, must be zero. |
> +| |Bit[0] RTC enable flag: |
> +| |Set to 1 if the RTC alarm should be enabled. |
> +| |Set to 0 if the RTC alarm should be disabled |
> ++------------------+-----------------------------------------------------------+
> +|uint32 time[2] |Lower word: Lower 32 bits of the time in seconds. |
> +| |Upper word: Upper 32 bits of the time in seconds. |
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: RTC time was successfully set. |
> +| |NOT_FOUND: rtcId pertains to a non-existent RTC. |
> +| |INVALID_PARAMETERS: time is not valid |
> +| |(beyond the range of the RTC). |
> +| |DENIED: the agent does not have permission to set the RTC |
> +| |alarm |
> ++------------------+-----------------------------------------------------------+
> +
> +BBM_BUTTON_GET
> +~~~~~~~~~~~~~~
> +
> +message_id: 0x9
> +protocol_id: 0x81
> +
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: if the button status was read. |
> +| |Other value: ARM SCMI Specification v3.2 section 4.1.4. |
> ++------------------+-----------------------------------------------------------+
> +|uint32 state |State of the ON/OFF button |
> ++------------------+-----------------------------------------------------------+
> +
> +BBM_RTC_NOTIFY
> +~~~~~~~~~~~~~~
> +
> +message_id: 0xA
> +protocol_id: 0x81
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 index |Index of RTC |
> ++------------------+-----------------------------------------------------------+
> +|uint32 flags |Notification flags |
> +| |Bits[31:3] Reserved, must be zero. |
> +| |Bit[2] Update enable: |
> +| |Set to 1 to send notification. |
> +| |Set to 0 if no notification. |
> +| |Bit[1] Rollover enable: |
> +| |Set to 1 to send notification. |
> +| |Set to 0 if no notification. |
> +| |Bit[0] Alarm enable: |
> +| |Set to 1 to send notification. |
> +| |Set to 0 if no notification |
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: notification configuration was successfully |
> +| |updated. |
> +| |NOT_FOUND: rtcId pertains to a non-existent RTC. |
> +| |DENIED: the agent does not have permission to request RTC |
> +| |notifications. |
> ++------------------+-----------------------------------------------------------+
> +
> +BBM_BUTTON_NOTIFY
> +~~~~~~~~~~~~~~~~~
> +
> +message_id: 0xB
> +protocol_id: 0x81
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 flags |Notification flags |
> +| |Bits[31:1] Reserved, must be zero. |
> +| |Bit[0] Enable button: |
> +| |Set to 1 to send notification. |
> +| |Set to 0 if no notification |
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: notification configuration was successfully |
> +| |updated. |
> +| |DENIED: the agent does not have permission to request |
> +| |button notifications. |
> ++------------------+-----------------------------------------------------------+
> +
> +NEGOTIATE_PROTOCOL_VERSION
> +~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +message_id: 0x10
> +protocol_id: 0x81
> +
> ++--------------------+---------------------------------------------------------+
> +|Parameters |
> ++--------------------+---------------------------------------------------------+
> +|Name |Description |
> ++--------------------+---------------------------------------------------------+
> +|uint32 version |The negotiated protocol version the agent intends to
> use |
> ++--------------------+---------------------------------------------------------+
> +|Return values |
> ++--------------------+---------------------------------------------------------+
> +|Name |Description |
> ++--------------------+---------------------------------------------------------+
> +|int32 status |SUCCESS: if the negotiated protocol version is supported
> |
> +| |by the platform. All commands, responses, and |
> +| |notifications post successful return of this command must|
> +| |comply with the negotiated version. |
> +| |NOT_SUPPORTED: if the protocol version is not supported. |
> ++--------------------+---------------------------------------------------------+
> +
> +Notifications
> +_____________
> +
> +BBM_RTC_EVENT
> +~~~~~~~~~~~~~
> +
> +message_id: 0x0
> +protocol_id: 0x81
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 flags |RTC events: |
> +| |Bits[31:2] Reserved, must be zero. |
> +| |Bit[1] RTC rollover notification: |
> +| |1 RTC rollover detected. |
> +| |0 no RTC rollover detected. |
> +| |Bit[0] RTC alarm notification: |
> +| |1 RTC alarm generated. |
> +| |0 no RTC alarm generated. |
> ++------------------+-----------------------------------------------------------+
> +
> +BBM_BUTTON_EVENT
> +~~~~~~~~~~~~~~~~
> +
> +message_id: 0x1
> +protocol_id: 0x81
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 flags |RTC events: |
> ++------------------+-----------------------------------------------------------+
> +| |Button events: |
> +| |Bits[31:1] Reserved, must be zero. |
> +| |Bit[0] Button notification: |
> +| |1 button change detected. |
> +| |0 no button change detected. |
> ++------------------+-----------------------------------------------------------+
> +
> +SCMI_MISC: System Control and Management Interface Driver (MISC)
> +================================================================
> +
> +Provides misc. functions. This includes controls that are misc.
> settings/actions
> +that must be exposed from the SM to agents. They are device specific and
> are
> +usually define to access bit fields in various mix block control modules,
> +IOMUX_GPR, and other GPR/CSR owned by the SM. This protocol supports
> the
> +following functions:
> +
> +- Describe the protocol version.
> +- Discover implementation attributes.
> +- Set/Get a control.
> +- Initiate an action on a control.
> +- Obtain platform (i.e. SM) build information.
> +- Obtain ROM passover data.
> +- Read boot/shutdown/reset information for the LM or the system.
> +
> +Commands:
> +_________
> +
> +PROTOCOL_VERSION
> +~~~~~~~~~~~~~~~~
> +
> +message_id: 0x0
> +protocol_id: 0x84
> +
> ++---------------+--------------------------------------------------------------+
> +|Return values |
> ++---------------+--------------------------------------------------------------+
> +|Name |Description |
> ++---------------+--------------------------------------------------------------+
> +|int32 status | See ARM SCMI Specification v3.2 section 4.1.4 for status
> |
> +| | code definitions. |
> ++---------------+--------------------------------------------------------------+
> +|uint32 version | For this revision of the specification, this value must be |
> +| | 0x10000. |
> ++---------------+--------------------------------------------------------------+
> +
> +PROTOCOL_ATTRIBUTES
> +~~~~~~~~~~~~~~~~~~~
> +
> +message_id: 0x1
> +protocol_id: 0x84
> +
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |See ARM SCMI Specification v3.2 section 4.1.4 for status
> |
> +| |code definitions. |
> ++------------------+-----------------------------------------------------------+
> +|uint32 attributes |Protocol attributes: |
> +| |Bits[31:24] Reserved, must be zero. |
> +| |Bits[23:16] Number of reasons. |
> +| |Bits[15:0] Number of controls |
> ++------------------+-----------------------------------------------------------+
> +
> +PROTOCOL_MESSAGE_ATTRIBUTES
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +message_id: 0x2
> +protocol_id: 0x84
> +
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: in case the message is implemented and
> available |
> +| |to use. |
> +| |NOT_FOUND: if the message identified by message_id is |
> +| |invalid or not implemented |
> ++------------------+-----------------------------------------------------------+
> +|uint32 attributes |Flags that are associated with a specific function in the |
> +| |protocol. For all functions in this protocol, this |
> +| |parameter has a value of 0 |
> ++------------------+-----------------------------------------------------------+
> +
> +MISC_CONTROL_SET
> +~~~~~~~~~~~~~~~~
> +
> +message_id: 0x3
> +protocol_id: 0x84
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 index |Index of the control |
> ++------------------+-----------------------------------------------------------+
> +|uint32 num |Size of the value data in words |
> ++------------------+-----------------------------------------------------------+
> +|uint32 val[8] |value data array |
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: if the control was set successfully. |
> +| |NOT_FOUND: if the index is not valid. |
> +| |DENIED: if the agent does not have permission to set the |
> +| |control |
> ++------------------+-----------------------------------------------------------+
> +
> +MISC_CONTROL_GET
> +~~~~~~~~~~~~~~~~
> +
> +message_id: 0x4
> +protocol_id: 0x84
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 index |Index of the control |
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: if the control was set successfully. |
> +| |NOT_FOUND: if the index is not valid. |
> +| |DENIED: if the agent does not have permission to get the |
> +| |control |
> ++------------------+-----------------------------------------------------------+
> +|uint32 num |Size of the return data in words |
> ++------------------+-----------------------------------------------------------+
> +|uint32 val[8] |value data array |
> ++------------------+-----------------------------------------------------------+
> +
> +MISC_CONTROL_ACTION
> +~~~~~~~~~~~~~~~~~~~
> +
> +message_id: 0x5
> +protocol_id: 0x84
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 index |Index of the control |
> ++------------------+-----------------------------------------------------------+
> +|uint32 action |Action for the control |
> ++------------------+-----------------------------------------------------------+
> +|uint32 numarg |Size of the argument data |
> ++------------------+-----------------------------------------------------------+
> +|uint32 arg[8] |Argument data array |
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: if the action was set successfully. |
> +| |NOT_FOUND: if the index is not valid. |
> +| |DENIED: if the agent does not have permission to get the |
> +| |control |
> ++------------------+-----------------------------------------------------------+
> +|uint32 num |Size of the return data in words |
> ++------------------+-----------------------------------------------------------+
> +|uint32 val[8] |value data array |
> ++------------------+-----------------------------------------------------------+
> +
> +MISC_DISCOVER_BUILD_INFO
> +~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +message_id: 0x6
> +protocol_id: 0x84
> +
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: if the build info was got successfully. |
> +| |NOT_SUPPORTED: if the data is not available. |
> ++------------------+-----------------------------------------------------------+
> +|uint32 buildnum |Build number |
> ++------------------+-----------------------------------------------------------+
> +|uint32 buildcommit|Most significant 32 bits of the git commit hash
> |
> ++------------------+-----------------------------------------------------------+
> +|uint8 date[16] |Date of build. Null terminated ASCII string of up to 16 |
> +| |bytes in length |
> ++------------------+-----------------------------------------------------------+
> +|uint8 time[16] |Time of build. Null terminated ASCII string of up to 16 |
> +| |bytes in length |
> ++------------------+-----------------------------------------------------------+
> +
> +MISC_ROM_PASSOVER_GET
> +~~~~~~~~~~~~~~~~~~~~~
> +
> +This function is used to obtain the ROM passover data. The returned block of
> +words is structured as defined in the ROM passover section in the SoC RM.
> +
> +message_id: 0x7
> +protocol_id: 0x84
> +
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: if the data was got successfully. |
> +| |NOT_SUPPORTED: if the data is not available. |
> ++------------------+-----------------------------------------------------------+
> +|uint32 num |Size of the passover data in words |
> ++------------------+-----------------------------------------------------------+
> +|uint32_t data[8] |Passover data array |
> ++------------------+-----------------------------------------------------------+
> +
> +MISC_CONTROL_NOTIFY
> +~~~~~~~~~~~~~~~~~~~
> +
> +message_id: 0x8
> +protocol_id: 0x84
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 index |Index of control |
> ++------------------+-----------------------------------------------------------+
> +|uint32 flags |Notification flags, varies by control |
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: notification configuration was successfully |
> +| |updated. |
> +| |NOT_FOUND: control id not exists. |
> +| |INVALID_PARAMETERS: if the input attributes flag specifies |
> +| |unsupported or invalid configurations.. |
> +| |DENIED: if the calling agent is not permitted to request |
> +| |the notification. |
> ++------------------+-----------------------------------------------------------+
> +
> +MISC_REASON_ATTRIBUTES
> +~~~~~~~~~~~~~~~~~~~~~~
> +
> +message_id: 0x9
> +protocol_id: 0x84
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 reasonid |Identifier for the reason |
> ++------------------+-----------------------------------------------------------+
> +|Return values |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|int32 status |SUCCESS: if valid reason attributes are returned |
> +| |NOT_FOUND: if reasonId pertains to a non-existent reason. |
> ++------------------+-----------------------------------------------------------+
> +|uint32 attributes |Reason attributes. This parameter has the following
> |
> +| |format: Bits[31:0] Reserved, must be zero |
> +| |Bits[15:0] Number of persistent storage (GPR) words. |
> ++------------------+-----------------------------------------------------------+
> +|uint8 name[16] |Null-terminated ASCII string of up to 16 bytes in length
> |
> +| |describing the reason |
> ++------------------+-----------------------------------------------------------+
> +
> +MISC_RESET_REASON
> +~~~~~~~~~~~~~~~~~
> +
> +message_id: 0xA
> +protocol_id: 0x84
> +
> ++--------------------+---------------------------------------------------------+
> +|Parameters |
> ++--------------------+---------------------------------------------------------+
> +|Name |Description |
> ++--------------------+---------------------------------------------------------+
> +|uint32 flags |Reason flags. This parameter has the following format: |
> +| |Bits[31:1] Reserved, must be zero. |
> +| |Bit[0] System: |
> +| |Set to 1 to return the system reason. |
> +| |Set to 0 to return the LM reason |
> ++--------------------+---------------------------------------------------------+
> +|Return values |
> ++--------------------+---------------------------------------------------------+
> +|Name |Description |
> ++--------------------+---------------------------------------------------------+
> +|int32 status |SUCCESS: reset reason return |
> ++--------------------+---------------------------------------------------------+
> +|uint32 bootflags |Boot reason flags. This parameter has the format: |
> +| |Bits[31] Valid. |
> +| |Set to 1 if the entire reason is valid. |
> +| |Set to 0 if the entire reason is not valid. |
> +| |Bits[30:29] Reserved, must be zero. |
> +| |Bit[28] Valid origin: |
> +| |Set to 1 if the origin field is valid. |
> +| |Set to 0 if the origin field is not valid. |
> +| |Bits[27:24] Origin. |
> +| |Bit[23] Valid err ID: |
> +| |Set to 1 if the error ID field is valid. |
> +| |Set to 0 if the error ID field is not valid. |
> +| |Bits[22:8] Error ID. |
> +| |Bit[7:0] Reason |
> ++--------------------+---------------------------------------------------------+
> +|uint32 shutdownflags|Shutdown reason flags. This parameter has the
> format: |
> +| |Bits[31] Valid. |
> +| |Set to 1 if the entire reason is valid. |
> +| |Set to 0 if the entire reason is not valid. |
> +| |Bits[30:29] Number of valid extended info words. |
> +| |Bit[28] Valid origin: |
> +| |Set to 1 if the origin field is valid. |
> +| |Set to 0 if the origin field is not valid. |
> +| |Bits[27:24] Origin. |
> +| |Bit[23] Valid err ID: |
> +| |Set to 1 if the error ID field is valid. |
> +| |Set to 0 if the error ID field is not valid. |
> +| |Bits[22:8] Error ID. |
> +| |Bit[7:0] Reason |
> ++--------------------+---------------------------------------------------------+
> +|uint32 extinfo[8] |Array of extended info words |
> ++--------------------+---------------------------------------------------------+
> +
> +MISC_SI_INFO
> +~~~~~~~~~~~~
> +
> +message_id: 0xB
> +protocol_id: 0x84
> +
> ++--------------------+---------------------------------------------------------+
> +|Return values |
> ++--------------------+---------------------------------------------------------+
> +|Name |Description |
> ++--------------------+---------------------------------------------------------+
> +|int32 status |SUCCESS: silicon info return |
> ++--------------------+---------------------------------------------------------+
> +|uint32 deviceid |Silicon specific device ID |
> ++--------------------+---------------------------------------------------------+
> +|uint32 sirev |Silicon specific revision |
> ++--------------------+---------------------------------------------------------+
> +|uint32 partnum |Silicon specific part number |
> ++--------------------+---------------------------------------------------------+
> +|uint8 siname[16] |Silicon name/revision. Null terminated ASCII string of
> up|
> +| |to 16 bytes in length |
> ++--------------------+---------------------------------------------------------+
> +
> +MISC_CFG_INFO
> +~~~~~~~~~~~~~
> +
> +message_id: 0xC
> +protocol_id: 0x84
> +
> ++--------------------+---------------------------------------------------------+
> +|Return values |
> ++--------------------+---------------------------------------------------------+
> +|Name |Description |
> ++--------------------+---------------------------------------------------------+
> +|int32 status |SUCCESS: config name return |
> +| |NOT_SUPPORTED: name not available |
> ++--------------------+---------------------------------------------------------+
> +|uint32 msel |Mode selector value |
> ++--------------------+---------------------------------------------------------+
> +|uint8 cfgname[16] |config file basename. Null terminated ASCII string of
> up |
> +| |to 16 bytes in length |
> ++--------------------+---------------------------------------------------------+
> +
> +MISC_SYSLOG
> +~~~~~~~~~~~
> +
> +message_id: 0xD
> +protocol_id: 0x84
> +
> ++--------------------+---------------------------------------------------------+
> +|Parameters |
> ++--------------------+---------------------------------------------------------+
> +|Name |Description |
> ++--------------------+---------------------------------------------------------+
> +|uint32 flags |Device specific flags that might impact the data returned|
> +| |or clearing of the data |
> ++--------------------+---------------------------------------------------------+
> +|uint32 logindex |Index to the first log word. Will be the first element in|
> +| |the return array |
> ++--------------------+---------------------------------------------------------+
> +|Return values |
> ++--------------------+---------------------------------------------------------+
> +|Name |Description |
> ++--------------------+---------------------------------------------------------+
> +|int32 status |SUCCESS: reset reason return |
> ++--------------------+---------------------------------------------------------+
> +|uint32 numLogflags |Descriptor for the log data returned by this call. |
> +| |Bits[31:20] Number of remaining log words. |
> +| |Bits[15:12] Reserved, must be zero. |
> +| |Bits[11:0] Number of log words that are returned by this |
> +| |call |
> ++--------------------+---------------------------------------------------------+
> +|uint32 syslog[16] |Log data array |
> ++--------------------+---------------------------------------------------------+
> +
> +NEGOTIATE_PROTOCOL_VERSION
> +~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +message_id: 0x10
> +protocol_id: 0x84
> +
> ++--------------------+---------------------------------------------------------+
> +|Parameters |
> ++--------------------+---------------------------------------------------------+
> +|Name |Description |
> ++--------------------+---------------------------------------------------------+
> +|uint32 version |The negotiated protocol version the agent intends to
> use |
> ++--------------------+---------------------------------------------------------+
> +|Return values |
> ++--------------------+---------------------------------------------------------+
> +|Name |Description |
> ++--------------------+---------------------------------------------------------+
> +|int32 status |SUCCESS: if the negotiated protocol version is supported
> |
> +| |by the platform. All commands, responses, and |
> +| |notifications post successful return of this command must|
> +| |comply with the negotiated version. |
> +| |NOT_SUPPORTED: if the protocol version is not supported. |
> ++--------------------+---------------------------------------------------------+
> +
> +Notifications
> +_____________
> +
> +MISC_CONTROL_EVENT
> +~~~~~~~~~~~~~~~~~~
> +
> +message_id: 0x0
> +protocol_id: 0x81
> +
> ++------------------+-----------------------------------------------------------+
> +|Parameters |
> ++------------------+-----------------------------------------------------------+
> +|Name |Description |
> ++------------------+-----------------------------------------------------------+
> +|uint32 ctrlid |Identifier for the control that caused the event. |
> ++------------------+-----------------------------------------------------------+
> +|uint32 flags |Event flags, varies by control. |
> ++------------------+-----------------------------------------------------------+
> +
> diff --git a/Documentation/firmware-guide/nxp/index.rst
> b/Documentation/firmware-guide/nxp/index.rst
> new file mode 100644
> index 000000000000..b38c980a50c6
> --- /dev/null
> +++ b/Documentation/firmware-guide/nxp/index.rst
> @@ -0,0 +1,10 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +
> +====================
> +NXP Firmware Support
> +====================
> +
> +.. toctree::
> + :maxdepth: 1
> +
> + imx95-scmi
>
> --
> 2.37.1