summaryrefslogtreecommitdiff
path: root/drivers/firmware/scmi
AgeCommit message (Collapse)Author
2025-05-03scmi_protocols: update struct scmi_base_discover_list_protocols_outYe Li
@protocols is an array of protocol identifiers that are implemented, excluding the Base protocol. Four protocol identifiers are packed into each array element. The number of elements of @protocols is specified by callee-side. Signed-off-by: Ye Li <[email protected]> Signed-off-by: Alice Guo <[email protected]>
2025-05-03sandbox: add SCMI clock control permissions to sandboxAlice Guo
This patch is used to add SCMI clock control permissions to sandbox for testing. Signed-off-by: Alice Guo <[email protected]>
2025-05-03firmware: scmi_agent: add SCMI pin control protocol supportAlice Guo
This patch adds SCMI pin control protocol support to make the pin controller driver based on SCMI, such as drivers/pinctrl/nxp/pinctrl-imx-scmi.c, can be bound to the SCMI agent device whose protocol id is 0x19. Signed-off-by: Alice Guo <[email protected]>
2025-05-03firmware: scmi: use scmi_proto_driver_get() function to get SCMI protocol driverAlice Guo
If there is a SoC specific SCMI protocol driver, using scmi_proto_driver_get() function can avoid to add SoC specific code to scmi_agent-uclass.c. Signed-off-by: Alice Guo <[email protected]>
2025-05-03firmware: scmi: support to manage SCMI protocol drivers with a ↵Alice Guo
linker-genetated array U_BOOT_SCMI_PROTO_DRIVER macro is used to add a SCMI protocol driver to scmi_proto_driver list. scmi_proto_driver_get() function can be used to match a SCMI protocol id and its driver. Signed-off-by: Alice Guo <[email protected]>
2025-04-28power-domain: Add support for refcounting (again)Miquel Raynal
It is very surprising that such an uclass, specifically designed to handle resources that may be shared by different devices, is not keeping the count of the number of times a power domain has been enabled/disabled to avoid shutting it down unexpectedly or disabling it several times. Doing this causes troubles on eg. i.MX8MP because disabling power domains can be done in recursive loops were the same power domain disabled up to 4 times in a row. PGCs seem to have tight FSM internal timings to respect and it is easy to produce a race condition that puts the power domains in an unstable state, leading to ADB400 errors and later crashes in Linux. Some drivers implement their own mechanism for that, but it is probably best to add this feature in the uclass and share the common code across drivers. In order to avoid breaking existing drivers, refcounting is only enabled if the number of subdomains a device node supports is explicitly set in the probe function. ->xlate() callbacks will return the power domain ID which is then being used as the array index to reach the correct refcounter. As we do not want to break existing users while stile getting interesting error codes, the implementation is split between: - a low-level helper reporting error codes if the requested transition could not be operated, - a higher-level helper ignoring the "non error" codes, like EALREADY and EBUSY. CI tests using power domains are slightly updated to make sure the count of on/off calls is even and the results match what we *now* expect. They are also extended to test the low-level functions. Signed-off-by: Miquel Raynal <[email protected]>
2025-04-23power: regulator: scmi: Move regulator subnode hack to scmi_regulatorMarek Vasut
The current code attempts to bind scmi_voltage_domain to regulator subnode of the SCMI protocol node, so scmi_voltage_domain can then bind regulators directly to subnodes of its node. This kind of behavior should not be in core code, move it into scmi_voltage_domain driver code. Let the driver descend into regulator node and bind regulators to its subnodes. Fixes: 1f213ee4dbf2 ("firmware: scmi: voltage regulator") Signed-off-by: Marek Vasut <[email protected]> [Alice Guo: Fix scmi_regulator_bind] Signed-off-by: Peng Fan <[email protected]>
2025-04-18Revert "power-domain: Add refcounting"Wadim Egorov
Unfortunately this change breaks boot on K3 platform. U-Boot will hang after: U-Boot SPL 2025.04-01050-ga40fc5afaec0 (Apr 14 2025 - 07:31:32 +0000) SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)') This reverts commit 197376fbf300e92afa0a1583815d9c9eb52d613a as suggested in [1]. [1] https://lists.denx.de/pipermail/u-boot/2025-April/587032.html Signed-off-by: Wadim Egorov <[email protected]> Acked-by: Miquel Raynal <[email protected]>
2025-04-11firmware: scmi: smt: Interrupt communication enableViorel Suman
i.MX95 System Manager uses interrupt driven communication which requires the caller to set Bit[0] of channel flags to 1. When transmission completes and the previous general purpose interrupt has been processed by the other core, i.MX95 System Manager will set General Purpose Interrupt Control Register (GCR). U-Boot polls General-purpose Status (GSR) to check if the operation is finished. Signed-off-by: Viorel Suman <[email protected]> Signed-off-by: Alice Guo <[email protected]> Reviewed-by: Ye Li <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2025-04-10power-domain: Add refcountingMiquel Raynal
It is very surprising that such an uclass, specifically designed to handle resources that may be shared by different devices, is not keeping the count of the number of times a power domain has been enabled/disabled to avoid shutting it down unexpectedly or disabling it several times. Doing this causes troubles on eg. i.MX8MP because disabling power domains can be done in recursive loops were the same power domain disabled up to 4 times in a row. PGCs seem to have tight FSM internal timings to respect and it is easy to produce a race condition that puts the power domains in an unstable state, leading to ADB400 errors and later crashes in Linux. CI tests using power domains are slightly updated to make sure the count of on/off calls is even and the results match what we *now* expect. As we do not want to break existing users while stile getting interesting error codes, the implementation is split between: - a low-level helper reporting error codes if the requested transition could not be operated, - a higher-level helper ignoring the "non error" codes, like EALREADY and EBUSY. Signed-off-by: Miquel Raynal <[email protected]>
2024-05-20Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet"Tom Rini
As part of bringing the master branch back in to next, we need to allow for all of these changes to exist here. Reported-by: Jonas Karlman <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2024-05-19Revert "Merge patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet""Tom Rini
When bringing in the series 'arm: dts: am62-beagleplay: Fix Beagleplay Ethernet"' I failed to notice that b4 noticed it was based on next and so took that as the base commit and merged that part of next to master. This reverts commit c8ffd1356d42223cbb8c86280a083cc3c93e6426, reversing changes made to 2ee6f3a5f7550de3599faef9704e166e5dcace35. Reported-by: Jonas Karlman <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2024-05-07firmware: Remove <common.h> and add needed includesTom Rini
Remove <common.h> from this driver directory and when needed add missing include files directly. Reviewed-by: Ilias Apalodimas <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2023-11-28firmware: scmi: support protocols on sandbox only if enabledAKASHI Takahiro
This change will be useful when we manually test SCMI on sandbox by enabling/disabling a specific SCMI protocol. Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-11-10firmware: scmi: correct a validity check against power domain idAKASHI Takahiro
A power domain id on sandbox should be in the range from zero to ARRAY_SIZE(scmi_pwdom) - 1. Correct the validity check logic. Addresses-Coverity-ID: 467401 ("Out-of-bounds write") Addresses-Coverity-ID: 467405 ("Out-of-bounds read") Signed-off-by: AKASHI Takahiro <[email protected]>
2023-10-24sandbox: add SCMI power domain protocol support for testingAKASHI Takahiro
SCMI power domain management protocol is supported on sandbox for test purpose. Add fake agent interfaces and associated power domain devices. Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-10-24power: domain: add SCMI driverAKASHI Takahiro
Add power domain driver based on SCMI power domain management protocol. Signed-off-by: AKASHI Takahiro <[email protected]>
2023-10-24firmware: scmi: add power domain protocol supportAKASHI Takahiro
In this patch, added are helper functions to directly manipulate SCMI power domain management protocol. DM compliant power domain driver will be implemented on top of those interfaces in a succeeding patch. Signed-off-by: AKASHI Takahiro <[email protected]>
2023-10-13firmware: scmi: Fix clearing variableFrancois Berder
The sess variable in open_channel was not entirely cleared to zero at the start of this function. This commit ensures that the entire struct is cleared. Signed-off-by: Francois Berder <[email protected]>
2023-10-13firmware: scmi: add a check against availability of protocolsAKASHI Takahiro
Now that we have Base protocol support, we will be able to check if a given protocol is really supported by the SCMI server (firmware). Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Etienne Carriere <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-10-13firmware: scmi: install base protocol to SCMI agentAKASHI Takahiro
SCMI base protocol is mandatory, and once SCMI node is found in a device tree, the protocol handle (udevice) is unconditionally installed to the agent. Then basic information will be retrieved from SCMI server via the protocol and saved into the agent instance's local storage. Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Etienne Carriere <[email protected]>
2023-10-13test: dm: simplify SCMI unit test on sandboxAKASHI Takahiro
Adding SCMI base protocol makes it inconvenient to hold the agent instance (udevice) locally since the agent device will be re-created per each test. Just remove it and simplify the test flows. The test scenario is not changed at all. Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Etienne Carriere <[email protected]>
2023-10-13firmware: scmi: fake base protocol commands on sandboxAKASHI Takahiro
This is a simple implementation of SCMI base protocol for sandbox. The main use is in SCMI unit test. Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Etienne Carriere <[email protected]>
2023-10-13firmware: scmi: add a version check against base protocolAKASHI Takahiro
In SCMI base protocol version 2 (0x20000), new interfaces, BASE_SET_DEVICE_PERMISSIONS/BASE_SET_PROTOCOL_PERMISSIONS/ BASE_RESET_AGENT_CONFIGURATION, were added. Moreover, the api of BASE_DISCOVER_AGENT was changed to support self-agent discovery. So the driver expects SCMI firmware support version 2 of base protocol. Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Etienne Carriere <[email protected]>
2023-10-13firmware: scmi: implement SCMI base protocolAKASHI Takahiro
SCMI base protocol is mandatory according to the SCMI specification. With this patch, SCMI base protocol can be accessed via SCMI transport layers. All the commands, except SCMI_BASE_NOTIFY_ERRORS, are supported. This is because U-Boot doesn't support interrupts and the current transport layers are not able to handle asynchronous messages properly. Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Etienne Carriere <[email protected]>
2023-10-13firmware: scmi: framework for installing additional protocolsAKASHI Takahiro
This framework allows SCMI protocols to be installed and bound to the agent so that the agent can manage and utilize them later. Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Etienne Carriere <[email protected]>
2023-10-13firmware: scmi: move scmi_bind_protocols() backwardAKASHI Takahiro
Move the location of scmi_bind_protocols() backward for changes in later patches. There is no change in functionality. Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Etienne Carriere <[email protected]>
2023-10-13firmware: scmi: support dummy channels for sandbox agentAKASHI Takahiro
In sandbox scmi agent, channels are not used at all. But in this patch, dummy channels are supported in order to test protocol-specific channels. Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Etienne Carriere <[email protected]>
2023-10-13firmware: scmi: use a protocol's own channel if assignedAKASHI Takahiro
SCMI specification allows any protocol to have its own channel for the transport. While the current SCMI driver may assign its channel from a device tree, the core function, devm_scmi_process_msg(), doesn't use a protocol's channel, but always use an agent's channel. With this commit, devm_scmi_process_msg() tries to find and use a protocol's channel. If it doesn't exist, use an agent's. Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Etienne Carriere <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-10-13scmi: refactor the code to hide a channel from devicesAKASHI Takahiro
The commit 85dc58289238 ("firmware: scmi: prepare uclass to pass channel reference") added an explicit parameter, channel, but it seems to make the code complex. Hiding this parameter will allow for adding a generic (protocol-agnostic) helper function, i.e. for PROTOCOL_VERSION, in a later patch. Signed-off-by: AKASHI Takahiro <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Etienne Carriere <[email protected]>
2023-07-14firmware: scmi: return a right errno for SCMI status codeAKASHI Takahiro
scmi_to_linux_errno() is set to return an appropriate errno which corresponds to a given SCMI status code. But the current implementation always returns the same value. Signed-off-by: AKASHI Takahiro <[email protected]>
2023-04-21clk: scmi: Add Kconfig option for SPLJonas Karlman
Building U-Boot SPL with CLK_SCMI and SCMI_FIRMWARE Kconfig options enabled and SPL_FIRMWARE disabled result in the following error. drivers/clk/clk_scmi.o: in function `scmi_clk_gate': drivers/clk/clk_scmi.c:84: undefined reference to `devm_scmi_process_msg' drivers/clk/clk_scmi.c:88: undefined reference to `scmi_to_linux_errno' drivers/clk/clk_scmi.o: in function `scmi_clk_get_rate': drivers/clk/clk_scmi.c:113: undefined reference to `devm_scmi_process_msg' drivers/clk/clk_scmi.c:117: undefined reference to `scmi_to_linux_errno' drivers/clk/clk_scmi.o: in function `scmi_clk_set_rate': drivers/clk/clk_scmi.c:139: undefined reference to `devm_scmi_process_msg' drivers/clk/clk_scmi.c:143: undefined reference to `scmi_to_linux_errno' drivers/clk/clk_scmi.o: in function `scmi_clk_probe': drivers/clk/clk_scmi.c:157: undefined reference to `devm_scmi_of_get_channel' make[1]: *** [scripts/Makefile.spl:527: spl/u-boot-spl] Error 1 make: *** [Makefile:2043: spl/u-boot-spl] Error 2 Add Kconfig option so that CLK_SCMI can be disabled in SPL to fix this. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2022-12-08firmware: scmi: use protocol node name to bind the scmi regulator driverPatrick Delaunay
In scmi firmware driver, it is better to bind the scmi protocol driver "scmi_voltage_domain" with the node name of the protocol 17 and not the sub-node named "regulator", because is a fixed string which doesn't provide information and because it is not aligned with the other scmi protocol nodes. For example on stm32mp135f-dk board with device tree in stm32mp131.dtsi scmi: scmi { compatible = "linaro,scmi-optee"; #address-cells = <1>; #size-cells = <0>; linaro,optee-channel-id = <0>; shmem = <&scmi_shm>; scmi_clk: protocol@14 { reg = <0x14>; #clock-cells = <1>; }; scmi_reset: protocol@16 { reg = <0x16>; #reset-cells = <1>; }; scmi_voltd: protocol@17 { reg = <0x17>; scmi_regu: regulators { #address-cells = <1>; #size-cells = <0>; scmi_reg11: voltd-reg11 { reg = <VOLTD_SCMI_REG11>; regulator-name = "reg11"; }; scmi_reg18: voltd-reg18 { reg = <VOLTD_SCMI_REG18>; regulator-name = "reg18"; }; scmi_usb33: voltd-usb33 { reg = <VOLTD_SCMI_USB33>; regulator-name = "usb33"; }; }; }; }; Before the patch: > dm tree scmi_agent 0 [ + ] scmi-over-optee |-- scmi clk 1 [ + ] scmi_clk | |-- protocol@14 ... reset 1 [ ] scmi_reset_domain | |-- protocol@16 nop 2 [ + ] scmi_voltage_domain | `-- regulators regulator 0 [ + ] scmi_regulator | |-- voltd-reg11 regulator 1 [ + ] scmi_regulator | |-- voltd-reg18 regulator 2 [ + ] scmi_regulator | |-- voltd-usb33 ... after the patch: > dm tree scmi_agent 0 [ + ] scmi-over-optee |-- scmi clk 1 [ + ] scmi_clk | |-- protocol@14 ... reset 1 [ ] scmi_reset_domain | |-- protocol@16 nop 2 [ + ] scmi_voltage_domain | `-- protocol@17 regulator 0 [ + ] scmi_regulator | |-- voltd-reg11 regulator 1 [ + ] scmi_regulator | |-- voltd-reg18 regulator 2 [ + ] scmi_regulator | |-- voltd-usb33 ... Signed-off-by: Patrick Delaunay <[email protected]>
2022-10-12firmware: scmi: fix the multi channel support with CCFPatrick Delaunay
When the CCF is activated, the dev->parent is not necessary the reference to SCMI transport and the function devm_scmi_of_get_channel failed for the registered SCMI clock, child for protocol@14, the channel is null and the SCMI clock driver crash for any operations. This patch changes the first parameter of the ops of_get_channel(), aligned with other process_msg() to pass directly the good reference, i.e. parent result of find_scmi_transport_device(dev) which return the reference of the scmi transport device. Fixes: 8e96801aa6a ("firmware: scmi: add multi-channel support") Signed-off-by: Patrick Delaunay <[email protected]>
2022-09-29dm: core: Drop ofnode_is_available()Simon Glass
This function is also available as ofnode_is_enabled(), so use that instead. Signed-off-by: Simon Glass <[email protected]>
2022-06-23firmware: scmi: use multi channel in mailbox, optee and smccc agentsEtienne Carriere
Updates .process_msg operators of the SCMI transport drivers that supports multi-channel to use it now that drivers do provide the reference through channel argument. These are the mailbox agent, the optee agent and the smccc agent. Signed-off-by: Etienne Carriere <[email protected]>
2022-06-23firmware: scmi: optee transport: implement multi-channelEtienne Carriere
Implements multi SCMI channel support in OP-TEE SCMI transport. An SCMI protocol may use a dedicated channel, specified by the DT. Signed-off-by: Etienne Carriere <[email protected]>
2022-06-23firmware: scmi: smccc transport: implement multi-channelEtienne Carriere
Updates SCMI SMCCC transport driver to get SCMI channel reference at initialization and use when posting SCMI messages. Signed-off-by: Etienne Carriere <[email protected]>
2022-06-23firmware: scmi: mailbox transport: implement multi-channelEtienne Carriere
Updates SCMI mailbox transport driver to get SCMI channel reference at initialization and use when posting SCMI messages. Signed-off-by: Etienne Carriere <[email protected]>
2022-06-23firmware: scmi: add multi-channel supportEtienne Carriere
Adds resources for SCMI protocols to possibly use a dedicated SCMI channel instead of the default channel allocated by the SCMI agent during initialization. As per DT binding documentation, some SCMI transports can define a specific SCMI communication channel for given SCMI protocols. It allows SCMI protocols to pass messages concurrently each other. This change introduces new scmi agent uclass API function devm_scmi_of_get_channel() for SCMI drivers probe sequences to get a reference to the SCMI channel assigned to its related SCMI protocol. The function queries the channel reference to its SCMI transport driver through new scmi agent uclass operator .of_get_channel that uses Device Tree information from related SCMI agent node. Operator .of_get_channel returns a reference to the SCMI channel assigned to SCMI protocol used by the caller device. SCMI transport drivers that do not support multi-channel are not mandated to register this operator. When so, API function devm_scmi_of_get_channel() returns NULL and SCMI transport driver are expected to retrieve by their own means the reference to the unique SCMI channel, for example using platform data as these drivers currently do in U-Boot source tree. Signed-off-by: Etienne Carriere <[email protected]>
2022-06-23firmware: scmi: factorize scmi transport look upEtienne Carriere
Defines local helper function find_scmi_transport_device() with the instructions to find the SCMI transport device from a SCMI protocol device. Cc: Patrick Delaunay <[email protected]> Signed-off-by: Etienne Carriere <[email protected]>
2022-06-23firmware: scmi: prepare uclass to pass channel referenceEtienne Carriere
Changes SCMI transport operator ::process_msg to pass the SCMI channel reference provided by caller SCMI protocol device. Signed-off-by: Etienne Carriere <[email protected]>
2022-06-23firmware: scmi: prepare scmi uclass API to multi-channelEtienne Carriere
Changes SCMI driver API function devm_scmi_process_msg() to add an SCMI channel reference argument for when SCMI agent supports SCMI protocol specific channels. First argument of devm_scmi_process_msg() is also change to point to the caller SCMI protocol device rather than its parent device (the SCMI agent device). The argument is a pointer to opaque struct scmi_channel known from the SCMI transport drivers. It is currently unused and caller a pass NULL value. A later change will enable such support once SCMI protocol drivers have means to get the channel reference during initialization. Cc: Lukasz Majewski <[email protected]> Cc: Sean Anderson <[email protected]> Cc: Jaehoon Chung <[email protected]> Signed-off-by: Etienne Carriere <[email protected]>
2022-06-23firmware: scmi: optee: fix inline description of PTA_SCMI_CMD_GET_CHANNELEtienne Carriere
Removes inaccurate inline description of OP-TEE SCMI PTA command PTA_SCMI_CMD_GET_CHANNEL. Signed-off-by: Etienne Carriere <[email protected]>
2022-06-23firmware: scmi: optee: use TEE shared memory for SCMI messagesEtienne Carriere
Changes implementation when using TEE dynamically allocated shared memory to synchronize with the Linux implementation where the legacy SMT protocol cannot be used with such memory since it is expected from device mapped memory whereas OP-TEE shared memory is cached and hence should not be accessed using memcpy_toio()/memcpy_fromio(). This change implements the MSG shared memory protocol introduced in Linux [1]. The protocol uses a simplified SMT header of 32bit named MSG_SMT to carry SCMI protocol information and uses side channel means to carry exchanged buffer size information, as TEE invocation API parameters when used in the SCMI OP-TEE transport. Link: [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f301bba0ca7392d16a6ea4f1d264a91f1fadea1a Signed-off-by: Etienne Carriere <[email protected]>
2022-03-02clk: scmi: register scmi clocks with CCFEtienne Carriere
Implements SCMI APIs to retrieve the number exposed SCMI clocks using SCMI_PROTOCOL_ATTRIBUTES messages and the names of the clocks using SCMI_CLOCK_ATTRIBUTES messages. This change updates sandbox SCMI clock test driver to manage these 2 new message IDs. Cc: Lukasz Majewski <[email protected]> Cc: Sean Anderson <[email protected]> Cc: Clement Leger <[email protected]> Cc: Patrick Delaunay <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]> Signed-off-by: Gabriel Fernandez <[email protected]> Signed-off-by: Etienne Carriere <[email protected]>
2022-03-02firmware: scmi: fix sandbox and related tests for clock discoveryEtienne Carriere
Updates sandbox SCMI clock driver and tests since enabling CCF will mandate clock discovery that is all exposed SCMI clocks shall be discovered at initialization. For this reason, sandbox SCMI clock driver must emulate all clocks exposed by SCMI server, not only those effectively consumed by some other U-Boot devices. Therefore the sandbox SCMI test driver exposes 3 clocks (IDs 0, 1 and 2) and sandbox SCMI clock consumer driver gets 2 of them. Cc: Simon Glass <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]> Signed-off-by: Etienne Carriere <[email protected]>
2022-03-02scmi: change parameter dev in devm_scmi_process_msgEtienne Carriere
Changes devm_scmi_process_msg() first argument from target parent device to current SCMI device and lookup the SCMI agent device among SCMI device parents for find the SCMI agent operator needed for communication with the firmware. This change is needed in order to support CCF in clk_scmi driver unless what CCF will fail to find the right udevice related to exposed SCMI clocks. This patch allows to simplify the caller sequence, using SCMI device reference as parameter instead of knowing SCMI uclass topology. This change also adds some protection in case devm_scmi_process_msg() API function is called for an invalid device type. Cc: Lukasz Majewski <[email protected]> Cc: Sean Anderson <[email protected]> Cc: Jaehoon Chung <[email protected]> Cc: Patrick Delaunay <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]> Signed-off-by: Etienne Carriere <[email protected]>
2022-03-02sandbox: scmi: test against a single scmi agentEtienne Carriere
As per DT bindings since Linux kernel v5.14, the device tree can define only 1 SCMI agent node that is named scmi [1]. As a consequence, change implementation of the SCMI driver test through sandbox architecture to reflect that. This change updates sandbox test DT and sandbox SCMI driver accordingly since all these are impacted. Cc: Simon Glass <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]> Signed-off-by: Etienne Carriere <[email protected]>
2021-11-23firmware: scmi: Add OP-TEE transportEtienne Carriere
This change implements an SCMI transport for agent interfacing the OP-TEE SCMI service. OP-TEE provides an SCMI PTA (Pseudo-TA) for non-secure world to send SCMI messages over an identified channel. The driver implemented here uses a SMT shared memory for passing messages between client and server. The implementation opens and releases channel resources for each passed SCMI message so that resources allocated (sessions) or registered (shared memory areas) in OP-TEE firmware are released for example before relocation as the driver will likely allocate/register them back when probed after relocation. The integration of the driver using dedicated config switch CONFIG_SCMI_AGENT_OPTEE is designed on the model posted to the U-Boot ML by Patrick Delaunay [1]. Link: [1] https://lore.kernel.org/all/20211028191222.v3.4.Ib2e58ee67f4d023823d8b5404332dc4d7e847277@changeid/ Cc: Patrick Delaunay <[email protected]> Cc: Wolfgang Denk <[email protected]> Signed-off-by: Etienne Carriere <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>