firmware: arm_scmi: Relocate atomic_threshold to scmi_desc
authorCristian Marussi <cristian.marussi@arm.com>
Mon, 28 Oct 2024 12:01:49 +0000 (12:01 +0000)
committerSudeep Holla <sudeep.holla@arm.com>
Mon, 28 Oct 2024 14:53:17 +0000 (14:53 +0000)
Relocate the atomic_threshold field to scmi_desc and move the related code
to scmi_transport_setup.

No functional change.

Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Message-Id: <20241028120151.1301177-6-cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/firmware/arm_scmi/common.h
drivers/firmware/arm_scmi/driver.c

index e2424e6..9c7163f 100644 (file)
@@ -229,6 +229,12 @@ struct scmi_transport_ops {
  *     be pending simultaneously in the system. May be overridden by the
  *     get_max_msg op.
  * @max_msg_size: Maximum size of data payload per message that can be handled.
+ * @atomic_threshold: Optional system wide DT-configured threshold, expressed
+ *                   in microseconds, for atomic operations.
+ *                   Only SCMI synchronous commands reported by the platform
+ *                   to have an execution latency lesser-equal to the threshold
+ *                   should be considered for atomic mode operation: such
+ *                   decision is finally left up to the SCMI drivers.
  * @force_polling: Flag to force this whole transport to use SCMI core polling
  *                mechanism instead of completion interrupts even if available.
  * @sync_cmds_completed_on_ret: Flag to indicate that the transport assures
@@ -247,6 +253,7 @@ struct scmi_desc {
        int max_rx_timeout_ms;
        int max_msg;
        int max_msg_size;
+       unsigned int atomic_threshold;
        const bool force_polling;
        const bool sync_cmds_completed_on_ret;
        const bool atomic_enabled;
index ab9b055..1f53ca1 100644 (file)
@@ -149,12 +149,6 @@ struct scmi_debug_info {
  *                base protocol
  * @active_protocols: IDR storing device_nodes for protocols actually defined
  *                   in the DT and confirmed as implemented by fw.
- * @atomic_threshold: Optional system wide DT-configured threshold, expressed
- *                   in microseconds, for atomic operations.
- *                   Only SCMI synchronous commands reported by the platform
- *                   to have an execution latency lesser-equal to the threshold
- *                   should be considered for atomic mode operation: such
- *                   decision is finally left up to the SCMI drivers.
  * @notify_priv: Pointer to private data structure specific to notifications.
  * @node: List head
  * @users: Number of users of this instance
@@ -180,7 +174,6 @@ struct scmi_info {
        struct mutex protocols_mtx;
        u8 *protocols_imp;
        struct idr active_protocols;
-       unsigned int atomic_threshold;
        void *notify_priv;
        struct list_head node;
        int users;
@@ -2445,7 +2438,7 @@ static bool scmi_is_transport_atomic(const struct scmi_handle *handle,
        ret = info->desc->atomic_enabled &&
                is_transport_polling_capable(info->desc);
        if (ret && atomic_threshold)
-               *atomic_threshold = info->atomic_threshold;
+               *atomic_threshold = info->desc->atomic_threshold;
 
        return ret;
 }
@@ -2959,7 +2952,7 @@ static struct scmi_debug_info *scmi_debugfs_common_setup(struct scmi_info *info)
                           (char **)&dbg->name);
 
        debugfs_create_u32("atomic_threshold_us", 0400, top_dentry,
-                          &info->atomic_threshold);
+                          (u32 *)&info->desc->atomic_threshold);
 
        debugfs_create_str("type", 0400, trans, (char **)&dbg->type);
 
@@ -3069,6 +3062,13 @@ static const struct scmi_desc *scmi_transport_setup(struct device *dev)
                 trans->desc->max_rx_timeout_ms, trans->desc->max_msg_size,
                 trans->desc->max_msg);
 
+       /* System wide atomic threshold for atomic ops .. if any */
+       if (!of_property_read_u32(dev->of_node, "atomic-threshold-us",
+                                 &trans->desc->atomic_threshold))
+               dev_info(dev,
+                        "SCMI System wide atomic threshold set to %u us\n",
+                        trans->desc->atomic_threshold);
+
        return trans->desc;
 }
 
@@ -3118,13 +3118,6 @@ static int scmi_probe(struct platform_device *pdev)
        handle->devm_protocol_acquire = scmi_devm_protocol_acquire;
        handle->devm_protocol_get = scmi_devm_protocol_get;
        handle->devm_protocol_put = scmi_devm_protocol_put;
-
-       /* System wide atomic threshold for atomic ops .. if any */
-       if (!of_property_read_u32(np, "atomic-threshold-us",
-                                 &info->atomic_threshold))
-               dev_info(dev,
-                        "SCMI System wide atomic threshold set to %d us\n",
-                        info->atomic_threshold);
        handle->is_transport_atomic = scmi_is_transport_atomic;
 
        /* Setup all channels described in the DT at first */