blob: 9591cdc07a5a4d4461343027aaa90ad35c94d863 [file] [log] [blame]
.. SPDX-License-Identifier: GPL-2.0+:
.. index::
single: scmi (command)
scmi command
============
Synopsis
--------
::
scmi info
scmi perm_dev <agent id> <device id> <flags>
scmi perm_proto <agent id> <device id> <protocol id> <flags>
scmi reset <agent id> <flags>
Description
-----------
Arm System Control and Management Interface (SCMI hereafter) is a set of
standardised interfaces to manage system resources, like clocks, power
domains, pin controls, reset and so on, in a system-wide manner.
An entity which provides those services is called a SCMI firmware (or
SCMI server if you like) may be placed/implemented by EL3 software or
by a dedicated system control processor (SCP) or else.
A user of SCMI interfaces, including U-Boot, is called a SCMI agent and
may issues commands, which are defined in each protocol for specific system
resources, to SCMI server via a communication channel, called a transport.
Those interfaces are independent from the server's implementation thanks to
a transport layer.
For more details, see the `SCMI specification`_.
While most of system resources managed under SCMI protocols are implemented
and handled as standard U-Boot devices, for example clk_scmi, scmi command
provides additional management functionality against SCMI server.
scmi info
~~~~~~~~~
Show base information about SCMI server and supported protocols
scmi perm_dev
~~~~~~~~~~~~~
Allow or deny access permission to the device
scmi perm_proto
~~~~~~~~~~~~~~~
Allow or deny access to the protocol on the device
scmi reset
~~~~~~~~~~
Reset the already-configured permissions against the device
Parameters are used as follows:
<agent id>
SCMI Agent ID, hex value
<device id>
SCMI Device ID, hex value
Please note that what a device means is not defined
in the specification.
<protocol id>
SCMI Protocol ID, hex value
It must not be 0x10 (base protocol)
<flags>
Flags to control the action, hex value
0 to deny, 1 to allow. The other values are reserved and allowed
values may depend on the implemented version of SCMI server in
the future. See SCMI specification for more details.
Example
-------
Obtain basic information about SCMI server:
::
=> scmi info
SCMI device: scmi
protocol version: 0x20000
# of agents: 3
0: platform
> 1: OSPM
2: PSCI
# of protocols: 4
Power domain management
Performance domain management
Clock management
Sensor management
vendor: Linaro
sub vendor: PMWG
impl version: 0x20b0000
Ask for access permission to device#0:
::
=> scmi perm_dev 1 0 1
Reset configurations with all access permission settings retained:
::
=> scmi reset 1 0
Configuration
-------------
The scmi command is only available if CONFIG_CMD_SCMI=y.
Default n because this command is mainly for debug purpose.
Return value
------------
The return value ($?) is set to 0 if the operation succeeded,
1 if the operation failed or -1 if the operation failed due to
a syntax error.
.. _`SCMI specification`: https://developer.arm.com/documentation/den0056/e/?lang=en