| .. 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. | |
| .. _`SCMI specification`: https://developer.arm.com/documentation/den0056/e/?lang=en |