From: "Padhi, Beleswar" <b-padhi@ti.com>
To: Kendall Willis <k-willis@ti.com>
Cc: <nm@ti.com>, <kristo@kernel.org>, <ssantosh@kernel.org>,
<afd@ti.com>, <vigneshr@ti.com>, <u-kumar1@ti.com>,
<linux-kernel@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v2 20/22] firmware: ti: ti_sci_pm: Move pm ops into its own file
Date: Mon, 19 Oct 2026 14:38:35 +0530 [thread overview]
Message-ID: <90a38923-eb18-4245-9fc9-d149c53c7ab8@ti.com> (raw)
In-Reply-To: <20261017133007.cp265f33t4an77g5@uda0506412>
Hi Kendall,
On 10/17/2026 7:00 PM, Kendall Willis wrote:
> Hi Beleswar,
> On 21:36-20260930, Beleswar Padhi wrote:
>> From: Andrew Davis <afd@ti.com>
>>
>> Extract the power management operations related functions and services
>> from ti_sci_core.c into its own file. This breaks down the single
>> large file into smaller logical files for better readability and
>> maintenance.
>>
>> The pm ops need access to the TI SCI instance to get the device used for
>> error reporting. Move struct ti_sci_xfer, struct ti_sci_xfers_info,
>> struct ti_sci_desc, struct ti_sci_info and handle_to_ti_sci_info() from
>> ti_sci_core.c into ti_sci.h, along with the includes they need, so that
>> they can be shared with the split files. Upcoming splits also need
>> access to the instance state, so this is done once here.
>>
>> Signed-off-by: Andrew Davis <afd@ti.com>
>> Co-developed-by: Beleswar Padhi <b-padhi@ti.com>
>> Signed-off-by: Beleswar Padhi <b-padhi@ti.com>
> Would it be possible to add the following LPM related functions to
> ti_sci_pm.c?
> ti_sci_partial_io_wakeup_enabled
> ti_sci_prepare_system_suspend
These functions are related to the ti-sci driver's own PM functionality.
The individual refactored files contain ops that are exposed out to
client layers. IMHO, these functions belong in the ti_sci_core.c file.
Let me know what you think.
>
>> ---
>> v2: Changelog:
>> 1. None to this patch.
>>
>> Link to v1:
>> https://lore.kernel.org/all/20260929201746.4078803-21-b-padhi@ti.com/
>>
>> drivers/firmware/ti/Makefile | 1 +
>> drivers/firmware/ti/ti_sci.h | 100 ++++++++++++++
>> drivers/firmware/ti/ti_sci_core.c | 220 +-----------------------------
>> drivers/firmware/ti/ti_sci_pm.c | 145 ++++++++++++++++++++
>> 4 files changed, 247 insertions(+), 219 deletions(-)
>> create mode 100644 drivers/firmware/ti/ti_sci_pm.c
>>
>> diff --git a/drivers/firmware/ti/Makefile b/drivers/firmware/ti/Makefile
>> index c4233542ad57d..bbfe73587a3c7 100644
>> --- a/drivers/firmware/ti/Makefile
>> +++ b/drivers/firmware/ti/Makefile
>> @@ -3,4 +3,5 @@
>> ti_sci-y := ti_sci_core.o
>> ti_sci-y += ti_sci_clock.o
>> ti_sci-y += ti_sci_device.o
>> +ti_sci-y += ti_sci_pm.o
>> obj-$(CONFIG_TI_SCI_PROTOCOL) += ti_sci.o
>> diff --git a/drivers/firmware/ti/ti_sci.h b/drivers/firmware/ti/ti_sci.h
>> index cce59cac35ed6..7a707c632276e 100644
>> --- a/drivers/firmware/ti/ti_sci.h
>> +++ b/drivers/firmware/ti/ti_sci.h
>> @@ -13,8 +13,107 @@
>> #define __TI_SCI_H
>>
>> #include <linux/compiler_types.h>
>> +#include <linux/completion.h>
>> +#include <linux/container_of.h>
>> +#include <linux/hashtable.h>
>> +#include <linux/mailbox_client.h>
>> +#include <linux/mutex.h>
>> +#include <linux/semaphore.h>
>> +#include <linux/soc/ti/ti-msgmgr.h>
>> +#include <linux/soc/ti/ti_sci_protocol.h>
>> +#include <linux/spinlock.h>
>> #include <linux/types.h>
>>
>> +/**
>> + * struct ti_sci_xfer - Structure representing a message flow
>> + * @tx_message: Transmit message
>> + * @rx_buf: Pointer to store received message
>> + * @rx_len: Receive message length
>> + * @done: completion event
>> + */
>> +struct ti_sci_xfer {
>> + struct ti_msgmgr_message tx_message;
>> + void *rx_buf;
>> + u8 rx_len;
>> + struct completion done;
>> +};
>> +
>> +/**
>> + * struct ti_sci_xfers_info - Structure to manage transfer information
>> + * @sem_xfer_count: Counting Semaphore for managing max simultaneous
>> + * Messages.
>> + * @xfer_block: Preallocated Message array
>> + * @xfer_alloc_table: Bitmap table for allocated messages.
>> + * Index of this bitmap table is also used for message
>> + * sequence identifier.
>> + * @xfer_lock: Protection for message allocation
>> + */
>> +struct ti_sci_xfers_info {
>> + struct semaphore sem_xfer_count;
>> + struct ti_sci_xfer *xfer_block;
>> + unsigned long *xfer_alloc_table;
>> + /* protect transfer allocation */
>> + spinlock_t xfer_lock;
>> +};
>> +
>> +/**
>> + * struct ti_sci_desc - Description of SoC integration
>> + * @default_host_id: Host identifier representing the compute entity
>> + * @max_rx_timeout_ms: Timeout for communication with SoC (in Milliseconds)
>> + * @max_msgs: Maximum number of messages that can be pending
>> + * simultaneously in the system
>> + * @max_msg_size: Maximum size of data per message that can be handled.
>> + */
>> +struct ti_sci_desc {
>> + u8 default_host_id;
>> + int max_rx_timeout_ms;
>> + int max_msgs;
>> + int max_msg_size;
>> +};
>> +
>> +/**
>> + * struct ti_sci_info - Structure representing a TI SCI instance
>> + * @dev: Device pointer
>> + * @desc: SoC description for this instance
>> + * @d: Debugfs file entry
>> + * @debug_region: Memory region where the debug message are available
>> + * @debug_region_size: Debug region size
>> + * @debug_buffer: Buffer allocated to copy debug messages.
>> + * @handle: Instance of TI SCI handle to send to clients.
>> + * @cl: Mailbox Client
>> + * @chan_tx: Transmit mailbox channel
>> + * @chan_rx: Receive mailbox channel
>> + * @minfo: Message info
>> + * @node: list head
>> + * @irqs: List of allocated irqs
>> + * @irq_lock: Protection for irq hash list
>> + * @host_id: Host ID
>> + * @fw_caps: FW/SoC low power capabilities
>> + * @users: Number of users of this instance
>> + */
>> +struct ti_sci_info {
>> + struct device *dev;
>> + const struct ti_sci_desc *desc;
>> + struct dentry *d;
>> + void __iomem *debug_region;
>> + char *debug_buffer;
>> + size_t debug_region_size;
>> + struct ti_sci_handle handle;
>> + struct mbox_client cl;
>> + struct mbox_chan *chan_tx;
>> + struct mbox_chan *chan_rx;
>> + struct ti_sci_xfers_info minfo;
>> + struct list_head node;
>> + DECLARE_HASHTABLE(irqs, 8);
>> + struct mutex irq_lock;
>> + u8 host_id;
>> + u64 fw_caps;
>> + /* protected by ti_sci_list_mutex */
>> + int users;
>> +};
>> +
>> +#define handle_to_ti_sci_info(h) container_of(h, struct ti_sci_info, handle)
>> +
>> /* Generic Messages */
>> #define TI_SCI_MSG_ENABLE_WDT 0x0000
>> #define TI_SCI_MSG_WAKE_RESET 0x0001
>> @@ -1567,5 +1666,6 @@ int ti_sci_do_xfer(const struct ti_sci_handle *handle,
>>
>> void ti_sci_setup_device_ops(struct ti_sci_dev_ops *dops);
>> void ti_sci_setup_clock_ops(struct ti_sci_clk_ops *cops);
>> +void ti_sci_setup_pm_ops(struct ti_sci_pm_ops *pmops);
>>
>> #endif /* __TI_SCI_H */
>> diff --git a/drivers/firmware/ti/ti_sci_core.c b/drivers/firmware/ti/ti_sci_core.c
>> index 848c040f598e0..60d0d64ac4ae8 100644
>> --- a/drivers/firmware/ti/ti_sci_core.c
>> +++ b/drivers/firmware/ti/ti_sci_core.c
>> @@ -13,11 +13,9 @@
>> #include <linux/cpu.h>
>> #include <linux/debugfs.h>
>> #include <linux/export.h>
>> -#include <linux/hashtable.h>
>> #include <linux/io.h>
>> #include <linux/iopoll.h>
>> #include <linux/kernel.h>
>> -#include <linux/mailbox_client.h>
>> #include <linux/module.h>
>> #include <linux/mutex.h>
>> #include <linux/of.h>
>> @@ -25,10 +23,7 @@
>> #include <linux/platform_device.h>
>> #include <linux/pm_qos.h>
>> #include <linux/property.h>
>> -#include <linux/semaphore.h>
>> #include <linux/slab.h>
>> -#include <linux/soc/ti/ti-msgmgr.h>
>> -#include <linux/soc/ti/ti_sci_protocol.h>
>> #include <linux/suspend.h>
>> #include <linux/sys_soc.h>
>> #include <linux/reboot.h>
>> @@ -40,53 +35,6 @@ static LIST_HEAD(ti_sci_list);
>> /* Protection for the entire list */
>> static DEFINE_MUTEX(ti_sci_list_mutex);
>>
>> -/**
>> - * struct ti_sci_xfer - Structure representing a message flow
>> - * @tx_message: Transmit message
>> - * @rx_buf: Pointer to store received message
>> - * @rx_len: Receive message length
>> - * @done: completion event
>> - */
>> -struct ti_sci_xfer {
>> - struct ti_msgmgr_message tx_message;
>> - void *rx_buf;
>> - u8 rx_len;
>> - struct completion done;
>> -};
>> -
>> -/**
>> - * struct ti_sci_xfers_info - Structure to manage transfer information
>> - * @sem_xfer_count: Counting Semaphore for managing max simultaneous
>> - * Messages.
>> - * @xfer_block: Preallocated Message array
>> - * @xfer_alloc_table: Bitmap table for allocated messages.
>> - * Index of this bitmap table is also used for message
>> - * sequence identifier.
>> - * @xfer_lock: Protection for message allocation
>> - */
>> -struct ti_sci_xfers_info {
>> - struct semaphore sem_xfer_count;
>> - struct ti_sci_xfer *xfer_block;
>> - unsigned long *xfer_alloc_table;
>> - /* protect transfer allocation */
>> - spinlock_t xfer_lock;
>> -};
>> -
>> -/**
>> - * struct ti_sci_desc - Description of SoC integration
>> - * @default_host_id: Host identifier representing the compute entity
>> - * @max_rx_timeout_ms: Timeout for communication with SoC (in Milliseconds)
>> - * @max_msgs: Maximum number of messages that can be pending
>> - * simultaneously in the system
>> - * @max_msg_size: Maximum size of data per message that can be handled.
>> - */
>> -struct ti_sci_desc {
>> - u8 default_host_id;
>> - int max_rx_timeout_ms;
>> - int max_msgs;
>> - int max_msg_size;
>> -};
>> -
>> /**
>> * struct ti_sci_irq - Description of allocated irqs
>> * @node: Link to hash table
>> @@ -97,49 +45,7 @@ struct ti_sci_irq {
>> struct ti_sci_msg_req_manage_irq desc;
>> };
>>
>> -/**
>> - * struct ti_sci_info - Structure representing a TI SCI instance
>> - * @dev: Device pointer
>> - * @desc: SoC description for this instance
>> - * @d: Debugfs file entry
>> - * @debug_region: Memory region where the debug message are available
>> - * @debug_region_size: Debug region size
>> - * @debug_buffer: Buffer allocated to copy debug messages.
>> - * @handle: Instance of TI SCI handle to send to clients.
>> - * @cl: Mailbox Client
>> - * @chan_tx: Transmit mailbox channel
>> - * @chan_rx: Receive mailbox channel
>> - * @minfo: Message info
>> - * @node: list head
>> - * @irqs: List of allocated irqs
>> - * @irq_lock: Protection for irq hash list
>> - * @host_id: Host ID
>> - * @fw_caps: FW/SoC low power capabilities
>> - * @users: Number of users of this instance
>> - */
>> -struct ti_sci_info {
>> - struct device *dev;
>> - const struct ti_sci_desc *desc;
>> - struct dentry *d;
>> - void __iomem *debug_region;
>> - char *debug_buffer;
>> - size_t debug_region_size;
>> - struct ti_sci_handle handle;
>> - struct mbox_client cl;
>> - struct mbox_chan *chan_tx;
>> - struct mbox_chan *chan_rx;
>> - struct ti_sci_xfers_info minfo;
>> - struct list_head node;
>> - DECLARE_HASHTABLE(irqs, 8);
>> - struct mutex irq_lock;
>> - u8 host_id;
>> - u64 fw_caps;
>> - /* protected by ti_sci_list_mutex */
>> - int users;
>> -};
>> -
>> #define cl_to_ti_sci_info(c) container_of(c, struct ti_sci_info, cl)
>> -#define handle_to_ti_sci_info(h) container_of(h, struct ti_sci_info, handle)
>>
>> #ifdef CONFIG_DEBUG_FS
>>
>> @@ -687,128 +593,6 @@ static int ti_sci_cmd_set_io_isolation(const struct ti_sci_handle *handle,
>> return 0;
>> }
>>
>> -/**
>> - * ti_sci_msg_cmd_lpm_wake_reason() - Get the wakeup source from LPM
>> - * @handle: Pointer to TI SCI handle
>> - * @source: The wakeup source that woke the SoC from LPM
>> - * @timestamp: Timestamp of the wakeup event
>> - * @pin: The pin that has triggered wake up
>> - * @mode: The last entered low power mode
>> - *
>> - * Return: 0 if all went well, else returns appropriate error value.
>> - */
>> -static int ti_sci_msg_cmd_lpm_wake_reason(const struct ti_sci_handle *handle,
>> - u32 *source, u64 *timestamp, u8 *pin, u8 *mode)
>> -{
>> - struct ti_sci_msg_hdr req;
>> - struct ti_sci_msg_resp_lpm_wake_reason resp;
>> - struct device *dev;
>> - int ret = 0;
>> -
>> - if (IS_ERR(handle))
>> - return PTR_ERR(handle);
>> - if (!handle)
>> - return -EINVAL;
>> -
>> - dev = handle_to_ti_sci_info(handle)->dev;
>> -
>> - ret = ti_sci_do_xfer(handle, TI_SCI_MSG_LPM_WAKE_REASON,
>> - TI_SCI_FLAG_REQ_ACK_ON_PROCESSED,
>> - &req, sizeof(req),
>> - &resp, sizeof(resp));
>> - if (ret) {
>> - dev_err(dev, "Failed to get wake reason\n");
>> - return ret;
>> - }
>> -
>> - if (source)
>> - *source = resp.wake_source;
>> - if (timestamp)
>> - *timestamp = resp.wake_timestamp;
>> - if (pin)
>> - *pin = resp.wake_pin;
>> - if (mode)
>> - *mode = resp.mode;
>> -
>> - return 0;
>> -}
>> -
>> -/**
>> - * ti_sci_cmd_set_device_constraint() - Set LPM constraint on behalf of a device
>> - * @handle: pointer to TI SCI handle
>> - * @id: Device identifier
>> - * @state: The desired state of device constraint: set or clear
>> - *
>> - * Return: 0 if all went well, else returns appropriate error value.
>> - */
>> -static int ti_sci_cmd_set_device_constraint(const struct ti_sci_handle *handle,
>> - u32 id, u8 state)
>> -{
>> - struct ti_sci_msg_req_lpm_set_device_constraint req;
>> - struct ti_sci_msg_hdr resp;
>> - struct device *dev;
>> - int ret = 0;
>> -
>> - if (IS_ERR(handle))
>> - return PTR_ERR(handle);
>> - if (!handle)
>> - return -EINVAL;
>> -
>> - dev = handle_to_ti_sci_info(handle)->dev;
>> -
>> - req.id = id;
>> - req.state = state;
>> -
>> - ret = ti_sci_do_xfer(handle, TI_SCI_MSG_LPM_SET_DEVICE_CONSTRAINT,
>> - TI_SCI_FLAG_REQ_ACK_ON_PROCESSED,
>> - &req, sizeof(req),
>> - &resp, sizeof(resp));
>> - if (ret) {
>> - dev_err(dev, "Failed to set device constraint\n");
>> - return ret;
>> - }
>> -
>> - return 0;
>> -}
>> -
>> -/**
>> - * ti_sci_cmd_set_latency_constraint() - Set LPM resume latency constraint
>> - * @handle: pointer to TI SCI handle
>> - * @latency: maximum acceptable latency (in ms) to wake up from LPM
>> - * @state: The desired state of latency constraint: set or clear
>> - *
>> - * Return: 0 if all went well, else returns appropriate error value.
>> - */
>> -static int ti_sci_cmd_set_latency_constraint(const struct ti_sci_handle *handle,
>> - u16 latency, u8 state)
>> -{
>> - struct ti_sci_msg_req_lpm_set_latency_constraint req;
>> - struct ti_sci_msg_hdr resp;
>> - struct device *dev;
>> - int ret = 0;
>> -
>> - if (IS_ERR(handle))
>> - return PTR_ERR(handle);
>> - if (!handle)
>> - return -EINVAL;
>> -
>> - dev = handle_to_ti_sci_info(handle)->dev;
>> -
>> - req.latency = latency;
>> - req.state = state;
>> -
>> - ret = ti_sci_do_xfer(handle, TI_SCI_MSG_LPM_SET_LATENCY_CONSTRAINT,
>> - TI_SCI_FLAG_REQ_ACK_ON_PROCESSED,
>> - &req, sizeof(req),
>> - &resp, sizeof(resp));
>> - if (ret) {
>> - dev_err(dev, "Failed to set device constraint\n");
>> - return ret;
>> - }
>> -
>> - return 0;
>> -}
>> -
>> /**
>> * ti_sci_cmd_lpm_abort() - Abort entry to LPM by clearing selection of LPM to enter
>> * @dev: Device pointer corresponding to the SCI entity
>> @@ -1708,9 +1492,7 @@ static void ti_sci_setup_ops(struct ti_sci_info *info)
>>
>> if (info->fw_caps & MSG_FLAG_CAPS_LPM_DM_MANAGED) {
>> pr_debug("detected DM managed LPM in fw_caps\n");
>> - pmops->lpm_wake_reason = ti_sci_msg_cmd_lpm_wake_reason;
>> - pmops->set_device_constraint = ti_sci_cmd_set_device_constraint;
>> - pmops->set_latency_constraint = ti_sci_cmd_set_latency_constraint;
>> + ti_sci_setup_pm_ops(pmops);
>> }
>>
>> rm_core_ops->get_range = ti_sci_cmd_get_resource_range;
>> diff --git a/drivers/firmware/ti/ti_sci_pm.c b/drivers/firmware/ti/ti_sci_pm.c
>> new file mode 100644
>> index 0000000000000..6ea09a7e342e7
>> --- /dev/null
>> +++ b/drivers/firmware/ti/ti_sci_pm.c
>> @@ -0,0 +1,145 @@
>> +// SPDX-License-Identifier: GPL-2.0
>> +/*
>> + * Texas Instruments System Control Interface Protocol Driver
>> + *
>> + * Copyright (C) 2015-2026 Texas Instruments Incorporated - https://www.ti.com/
>> + * Nishanth Menon
>> + */
>> +
>> +#include <linux/errno.h>
>> +#include <linux/soc/ti/ti_sci_protocol.h>
>> +
>> +#include "ti_sci.h"
>> +
>> +/**
>> + * ti_sci_msg_cmd_lpm_wake_reason() - Get the wakeup source from LPM
>> + * @handle: Pointer to TI SCI handle
>> + * @source: The wakeup source that woke the SoC from LPM
>> + * @timestamp: Timestamp of the wakeup event
>> + * @pin: The pin that has triggered wake up
>> + * @mode: The last entered low power mode
>> + *
>> + * Return: 0 if all went well, else returns appropriate error value.
>> + */
>> +static int ti_sci_msg_cmd_lpm_wake_reason(const struct ti_sci_handle *handle,
>> + u32 *source, u64 *timestamp, u8 *pin, u8 *mode)
>> +{
>> + struct ti_sci_msg_hdr req;
>> + struct ti_sci_msg_resp_lpm_wake_reason resp;
>> + struct device *dev;
>> + int ret = 0;
>> +
>> + if (IS_ERR(handle))
>> + return PTR_ERR(handle);
>> + if (!handle)
>> + return -EINVAL;
>> +
>> + dev = handle_to_ti_sci_info(handle)->dev;
>> +
>> + ret = ti_sci_do_xfer(handle, TI_SCI_MSG_LPM_WAKE_REASON,
>> + TI_SCI_FLAG_REQ_ACK_ON_PROCESSED,
>> + &req, sizeof(req),
>> + &resp, sizeof(resp));
>> + if (ret) {
>> + dev_err(dev, "Failed to get wake reason\n");
>> + return ret;
>> + }
>> +
>> + if (source)
>> + *source = resp.wake_source;
>> + if (timestamp)
>> + *timestamp = resp.wake_timestamp;
>> + if (pin)
>> + *pin = resp.wake_pin;
>> + if (mode)
>> + *mode = resp.mode;
>> +
>> + return 0;
>> +}
>> +
>> +/**
>> + * ti_sci_cmd_set_device_constraint() - Set LPM constraint on behalf of a device
>> + * @handle: pointer to TI SCI handle
>> + * @id: Device identifier
>> + * @state: The desired state of device constraint: set or clear
>> + *
>> + * Return: 0 if all went well, else returns appropriate error value.
>> + */
>> +static int ti_sci_cmd_set_device_constraint(const struct ti_sci_handle *handle,
>> + u32 id, u8 state)
>> +{
>> + struct ti_sci_msg_req_lpm_set_device_constraint req;
>> + struct ti_sci_msg_hdr resp;
>> + struct device *dev;
>> + int ret = 0;
>> +
>> + if (IS_ERR(handle))
>> + return PTR_ERR(handle);
>> + if (!handle)
>> + return -EINVAL;
>> +
>> + dev = handle_to_ti_sci_info(handle)->dev;
>> +
>> + req.id = id;
>> + req.state = state;
>> +
>> + ret = ti_sci_do_xfer(handle, TI_SCI_MSG_LPM_SET_DEVICE_CONSTRAINT,
>> + TI_SCI_FLAG_REQ_ACK_ON_PROCESSED,
>> + &req, sizeof(req),
>> + &resp, sizeof(resp));
>> + if (ret) {
>> + dev_err(dev, "Failed to set device constraint\n");
>> + return ret;
>> + }
>> +
>> + return 0;
>> +}
>> +
>> +/**
>> + * ti_sci_cmd_set_latency_constraint() - Set LPM resume latency constraint
>> + * @handle: pointer to TI SCI handle
>> + * @latency: maximum acceptable latency (in ms) to wake up from LPM
>> + * @state: The desired state of latency constraint: set or clear
>> + *
>> + * Return: 0 if all went well, else returns appropriate error value.
>> + */
>> +static int ti_sci_cmd_set_latency_constraint(const struct ti_sci_handle *handle,
>> + u16 latency, u8 state)
>> +{
>> + struct ti_sci_msg_req_lpm_set_latency_constraint req;
>> + struct ti_sci_msg_hdr resp;
>> + struct device *dev;
>> + int ret = 0;
>> +
>> + if (IS_ERR(handle))
>> + return PTR_ERR(handle);
>> + if (!handle)
>> + return -EINVAL;
>> +
>> + dev = handle_to_ti_sci_info(handle)->dev;
>> +
>> + req.latency = latency;
>> + req.state = state;
>> +
>> + ret = ti_sci_do_xfer(handle, TI_SCI_MSG_LPM_SET_LATENCY_CONSTRAINT,
>> + TI_SCI_FLAG_REQ_ACK_ON_PROCESSED,
>> + &req, sizeof(req),
>> + &resp, sizeof(resp));
>> + if (ret) {
>> + dev_err(dev, "Failed to set device constraint\n");
> Could you correct this line to:
>
> if (ret) {
> dev_err(dev, "Failed to set latency constraint\n");
Sure, will fix this in revision.
Thanks,
Beleswar
>
> Best,
> Kendall
>
>> + return ret;
>> + }
>> +
>> + return 0;
>> +}
>> +
>> +/*
>> + * ti_sci_setup_pm_ops() - Setup the pm operations structures
>> + * @pmops: pointer to TISCI pm ops structure
>> + */
>> +void ti_sci_setup_pm_ops(struct ti_sci_pm_ops *pmops)
>> +{
>> + pmops->lpm_wake_reason = ti_sci_msg_cmd_lpm_wake_reason;
>> + pmops->set_device_constraint = ti_sci_cmd_set_device_constraint;
>> + pmops->set_latency_constraint = ti_sci_cmd_set_latency_constraint;
>> +}
>> --
>> 2.34.1
>>
>>
next prev parent reply other threads:[~2026-10-19 9:09 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-30 16:05 [PATCH v2 00/22] Cleanup and Refactor TI-SCI driver Beleswar Padhi
2026-09-30 16:05 ` [PATCH v2 01/22] firmware: ti_sci: Move error message handling into ti_sci_get_one_xfer() Beleswar Padhi
2026-09-30 16:05 ` [PATCH v2 02/22] firmware: ti_sci: Move error message handling into ti_sci_do_xfer() Beleswar Padhi
2026-09-30 16:05 ` [PATCH v2 03/22] firmware: ti_sci: Move check for ACK " Beleswar Padhi
2026-09-30 16:05 ` [PATCH v2 04/22] firmware: ti_sci: Remove out of place RM debug messages Beleswar Padhi
2026-09-30 16:05 ` [PATCH v2 05/22] firmware: ti_sci: Name response variable resp for consistency Beleswar Padhi
2026-09-30 16:05 ` [PATCH v2 06/22] firmware: ti_sci: Handle xfer cleanup inside ti_sci_do_xfer() Beleswar Padhi
2026-09-30 16:05 ` [PATCH v2 07/22] firmware: ti_sci: Pass request struct into ti_sci_do_xfer() Beleswar Padhi
2026-09-30 16:05 ` [PATCH v2 08/22] firmware: ti_sci: Combine xfer allocation and transfer functions Beleswar Padhi
2026-09-30 16:05 ` [PATCH v2 09/22] firmware: ti_sci: Fetch info struct from handle inside ti_sci_do_xfer() Beleswar Padhi
2026-09-30 16:05 ` [PATCH v2 10/22] firmware: ti_sci: Use tx_message as message buffer directly Beleswar Padhi
2026-09-30 16:05 ` [PATCH v2 11/22] firmware: ti_sci: Use rx_message as message receive buffer Beleswar Padhi
2026-09-30 18:52 ` Andrew Davis
2026-09-30 20:17 ` Padhi, Beleswar
2026-09-30 16:05 ` [PATCH v2 12/22] firmware: ti_sci: Fix some kernel-doc references in structs Beleswar Padhi
2026-09-30 16:05 ` [PATCH v2 13/22] soc: ti: ti_sci_protocol.h: Add missing documentation for structs Beleswar Padhi
2026-09-30 16:05 ` [PATCH v2 14/22] firmware: ti_sci: Do not export reboot control Beleswar Padhi
2026-09-30 16:06 ` [PATCH v2 15/22] firmware: ti_sci: Use pmops fxn pointers in suspend/resume hooks Beleswar Padhi
2026-09-30 16:06 ` [PATCH v2 16/22] firmware: ti_sci: Move the huge ti_sci file into its own directory Beleswar Padhi
2026-09-30 19:05 ` Andrew Davis
2026-09-30 16:06 ` [PATCH v2 17/22] firmware: ti: ti_sci: Add missing includes for self-contained headers Beleswar Padhi
2026-09-30 16:06 ` [PATCH v2 18/22] firmware: ti: ti_sci_device: Move device ops into its own file Beleswar Padhi
2026-09-30 16:06 ` [PATCH v2 19/22] firmware: ti: ti_sci_clock: Move clock " Beleswar Padhi
2026-09-30 16:06 ` [PATCH v2 20/22] firmware: ti: ti_sci_pm: Move pm " Beleswar Padhi
2026-10-17 13:30 ` Kendall Willis
2026-10-19 9:08 ` Padhi, Beleswar [this message]
2026-09-30 16:06 ` [PATCH v2 21/22] firmware: ti: ti_sci_rm: Move rm " Beleswar Padhi
2026-09-30 16:06 ` [PATCH v2 22/22] firmware: ti: ti_sci_proc: Move processor " Beleswar Padhi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=90a38923-eb18-4245-9fc9-d149c53c7ab8@ti.com \
--to=b-padhi@ti.com \
--cc=afd@ti.com \
--cc=k-willis@ti.com \
--cc=kristo@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nm@ti.com \
--cc=ssantosh@kernel.org \
--cc=u-kumar1@ti.com \
--cc=vigneshr@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®