ti_sci_*: Add utility to access tisci firmware and SOC capability
authorMoteen Shah <m-shah@ti.com>
Mon, 9 Jun 2025 08:14:29 +0000 (13:44 +0530)
committerTom Rini <trini@konsulko.com>
Wed, 18 Jun 2025 18:20:25 +0000 (12:20 -0600)
Introduce response and request structs for receiving information
regarding FW/SOC capability from DM. The received capability can
further be used to call certain API's based on the feature supoorted
by the DM firmware.

Signed-off-by: Moteen Shah <m-shah@ti.com>
Reviewed-by: Neha Malcom Francis <n-francis@ti.com>
Reviewed-by: Dhruva Gole <d-gole@ti.com>
drivers/firmware/ti_sci.h
include/linux/soc/ti/ti_sci_protocol.h

index bb8bc7b..292f7cd 100644 (file)
@@ -27,6 +27,7 @@
 #define TI_SCI_MSG_BOARD_CONFIG_SECURITY  0x000d
 #define TI_SCI_MSG_BOARD_CONFIG_PM     0x000e
 #define TISCI_MSG_QUERY_MSMC           0x0020
+#define TI_SCI_MSG_QUERY_FW_CAPS       0x0022
 
 /* Device requests */
 #define TI_SCI_MSG_SET_DEVICE_STATE    0x0200
@@ -134,6 +135,18 @@ struct ti_sci_msg_resp_version {
        u8 abi_minor;
 } __packed;
 
+/**
+ * struct ti_sci_query_fw_caps_resp - Response for a message
+ * @hdr:       Generic header
+ * @fw_caps:   64-bit value representing the FW/SOC capabilities.
+ *
+ * Response to a message with message type TI_SCI_MSG_QUERY_FW_CAPS
+ */
+struct ti_sci_query_fw_caps_resp {
+       struct ti_sci_msg_hdr hdr;
+       u64    fw_caps;
+} __packed;
+
 /**
  * struct ti_sci_msg_req_reboot - Reboot the SoC
  * @hdr:       Generic Header
index aa4d105..f967077 100644 (file)
@@ -261,6 +261,18 @@ struct ti_sci_core_ops {
                          u64 *msmc_start, u64 *msmc_end);
 };
 
+/**
+ * struct ti_sci_firmware_ops - DM firmware operations
+ * @query_dm_cap: Query the DM capabilities
+ *                Return 0 for successful query else appropriate error value.
+ */
+struct ti_sci_firmware_ops {
+       int (*query_dm_cap)(struct ti_sci_handle *handle,
+                           u64 *dm_cap);
+};
+
+#define TI_SCI_MSG_FLAG_FW_CAP_DM      0x100
+
 /**
  * struct ti_sci_proc_ops - Processor specific operations.
  *
@@ -609,6 +621,7 @@ struct ti_sci_ops {
        struct ti_sci_dev_ops dev_ops;
        struct ti_sci_clk_ops clk_ops;
        struct ti_sci_core_ops core_ops;
+       struct ti_sci_firmware_ops fw_ops;
        struct ti_sci_proc_ops proc_ops;
        struct ti_sci_rm_core_ops rm_core_ops;
        struct ti_sci_rm_ringacc_ops rm_ring_ops;