Lines Matching full:scmi

3  * System Control and Management Interface (SCMI) Message Protocol driver
5 * SCMI Message Protocol is used between the System Control Processor(SCP)
38 #include <trace/events/scmi.h>
54 /* List of all SCMI devices active in system */
64 /* Track globally the creation of SCMI SystemPower related devices */
98 * @handle: Reference to the SCMI handle associated to this protocol instance.
106 * Each protocol is initialized independently once for each SCMI platform in
107 * which is defined by DT and implemented by the SCMI server fw.
121 * struct scmi_info - Structure representing a SCMI instance
125 * @version: SCMI revision information containing protocol version,
127 * @handle: Instance of SCMI handle to send to clients
133 * this SCMI instance: populated on protocol's first attempted
143 * Only SCMI synchronous commands reported by the platform
146 * decision is finally left up to the SCMI drivers.
336 * @handle: Pointer to SCMI entity handle
467 * SCMI transport can deliver such out-of-order responses.
731 * @cinfo: SCMI channel info
762 * @ph: Pointer to SCMI protocol handle
792 * @cinfo: SCMI channel info
870 * @ph: Pointer to SCMI protocol handle
961 * @ph: Pointer to SCMI protocol handle
1016 * @ph: Pointer to SCMI protocol handle
1063 * version_get() - command to get the revision of the SCMI entity
1065 * @ph: Pointer to SCMI protocol handle
1068 * Updates the SCMI information in the internal data structure.
1464 * A helper to grab the version memory area reference during SCMI Base protocol
1467 * Return: A reference to the version memory area associated to the SCMI
1481 * @info: The reference to the related SCMI instance.
1485 * description, against the specified SCMI instance @info, and initialize it;
1562 * @handle: A reference to the SCMI platform instance.
1601 * @handle: A reference to the SCMI platform instance.
1604 * Register a new user for the requested protocol on the specified SCMI
1616 * @handle: A reference to the SCMI platform instance.
1727 * released, and possibly de-initialized on last user, once the SCMI driver
1762 * released, and possibly de-initialized on last user, once the SCMI driver
1809 * SCMI instance is configured as atomic.
1811 * @handle: A reference to the SCMI platform instance.
1838 * scmi_handle_get() - Get the SCMI handle for a device
1840 * @dev: pointer to device for which we want SCMI handle
1843 * and is expected to be maintained by caller of SCMI protocol library.
1873 * and is expected to be maintained by caller of SCMI protocol library.
2035 dev_err(dev, "unable to allocate SCMI idr slot err %d\n", ret); in scmi_chan_setup()
2059 * scmi_get_protocol_device - Helper to get/create an SCMI device.
2062 * SCMI instance.
2063 * @info: The referred SCMI instance for which we are getting/creating this
2068 * Referring to the specific SCMI instance identified by @info, this helper
2071 * child of the specified SCMI instance @info and its transport properly
2074 * Return: A properly initialized scmi device, NULL otherwise.
2082 /* Already created for this parent SCMI instance ? */ in scmi_get_protocol_device()
2090 "SCMI SystemPower protocol device must be unique !\n"); in scmi_get_protocol_device()
2096 pr_debug("Creating SCMI device (%s) for protocol %x\n", name, prot_id); in scmi_get_protocol_device()
2139 * this SCMI instance.
2142 * @info: The SCMI instance descriptor
2170 * This helper let an SCMI driver request specific devices identified by the
2171 * @id_table to be created for each active SCMI instance.
2176 * active SCMI instance. (if any)
2179 * initialized(probed) SCMI instances (handles) and it remains also annotated
2180 * as pending creation if the requesting SCMI driver was loaded before some
2181 * SCMI instance and related transports were available: when such late instance
2196 pr_debug("Requesting SCMI device (%s) for protocol %x\n", in scmi_protocol_device_request()
2253 pr_err("Failed to save SCMI device - ret:%d\n", ret); in scmi_protocol_device_request()
2265 * already initialized SCMI instance which has registered the requested in scmi_protocol_device_request()
2293 "Failed. SCMI protocol %d not active.\n", in scmi_protocol_device_request()
2310 * An helper to let an SCMI driver release its request about devices; note that
2311 * devices are created and initialized once the first SCMI driver request them
2312 * but they destroyed only on SCMI core unloading/unbinding.
2314 * The current SCMI transport layer uses such devices as internal references and
2316 * that cannot be safely destroyed till the whole SCMI stack is removed.
2323 pr_debug("Unrequesting SCMI device (%s) for protocol %x\n", in scmi_protocol_device_unrequest()
2402 "SCMI System wide atomic threshold set to %d us\n", in scmi_probe()
2421 dev_err(dev, "SCMI Notifications NOT available.\n"); in scmi_probe()
2428 * Trigger SCMI Base protocol initialization. in scmi_probe()
2430 * SCMI stack is shutdown/unloaded as a whole. in scmi_probe()
2434 dev_err(dev, "unable to communicate with SCMI\n"); in scmi_probe()
2452 dev_err(dev, "SCMI protocol %d not implemented\n", in scmi_probe()
2459 * @active_protocols for this SCMI instance/ in scmi_probe()
2464 dev_err(dev, "SCMI protocol %d already activated. Skip\n", in scmi_probe()
2496 "Still active SCMI users will be forcibly unbound.\n"); in scmi_remove()
2513 dev_warn(&pdev->dev, "Failed to cleanup SCMI channels.\n"); in scmi_remove()
2567 { .compatible = "arm,scmi", .data = &scmi_mailbox_desc },
2570 { .compatible = "linaro,scmi-optee", .data = &scmi_optee_desc },
2573 { .compatible = "arm,scmi-smc", .data = &scmi_smc_desc},
2576 { .compatible = "arm,scmi-virtio", .data = &scmi_virtio_desc},
2585 .name = "arm-scmi",
2623 pr_err("SCMI transport %s FAILED initialization!\n", in __scmi_transports_setup()
2646 /* Bail out if no SCMI transport was configured */ in scmi_driver_init()
2693 MODULE_ALIAS("platform:arm-scmi");
2695 MODULE_DESCRIPTION("ARM SCMI protocol driver");