mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-04 04:04:19 +00:00
firmware: arm_scmi: Relocate atomic_threshold to scmi_desc
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>
This commit is contained in:
parent
c091de2d38
commit
112ffc78dc
@ -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;
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user