mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-22 23:13:01 +02:00
SoundWire: pass stream to compute_params()
The stream parameter will be used in the follow up commit. No function change. Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://lore.kernel.org/r/20241218080155.102405-14-yung-chuan.liao@linux.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
366fd59fb8
commit
168cdf9cde
|
@ -384,7 +384,7 @@ static u32 amd_sdw_read_ping_status(struct sdw_bus *bus)
|
|||
return slave_stat;
|
||||
}
|
||||
|
||||
static int amd_sdw_compute_params(struct sdw_bus *bus)
|
||||
static int amd_sdw_compute_params(struct sdw_bus *bus, struct sdw_stream_runtime *stream)
|
||||
{
|
||||
struct sdw_transport_data t_data = {0};
|
||||
struct sdw_master_runtime *m_rt;
|
||||
|
|
|
@ -170,6 +170,7 @@ static void _sdw_compute_port_params(struct sdw_bus *bus,
|
|||
}
|
||||
|
||||
static int sdw_compute_group_params(struct sdw_bus *bus,
|
||||
struct sdw_stream_runtime *stream,
|
||||
struct sdw_group_params *params,
|
||||
struct sdw_group *group)
|
||||
{
|
||||
|
@ -319,8 +320,9 @@ static int sdw_get_group_count(struct sdw_bus *bus,
|
|||
* sdw_compute_port_params: Compute transport and port parameters
|
||||
*
|
||||
* @bus: SDW Bus instance
|
||||
* @stream: Soundwire stream
|
||||
*/
|
||||
static int sdw_compute_port_params(struct sdw_bus *bus)
|
||||
static int sdw_compute_port_params(struct sdw_bus *bus, struct sdw_stream_runtime *stream)
|
||||
{
|
||||
struct sdw_group_params *params = NULL;
|
||||
struct sdw_group group;
|
||||
|
@ -340,7 +342,7 @@ static int sdw_compute_port_params(struct sdw_bus *bus)
|
|||
}
|
||||
|
||||
/* Compute transport parameters for grouped streams */
|
||||
ret = sdw_compute_group_params(bus, params, &group);
|
||||
ret = sdw_compute_group_params(bus, stream, params, &group);
|
||||
if (ret < 0)
|
||||
goto free_params;
|
||||
|
||||
|
@ -592,8 +594,9 @@ out:
|
|||
* sdw_compute_params: Compute bus, transport and port parameters
|
||||
*
|
||||
* @bus: SDW Bus instance
|
||||
* @stream: Soundwire stream
|
||||
*/
|
||||
int sdw_compute_params(struct sdw_bus *bus)
|
||||
int sdw_compute_params(struct sdw_bus *bus, struct sdw_stream_runtime *stream)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
@ -603,7 +606,7 @@ int sdw_compute_params(struct sdw_bus *bus)
|
|||
return ret;
|
||||
|
||||
/* Compute transport and port params */
|
||||
ret = sdw_compute_port_params(bus);
|
||||
ret = sdw_compute_port_params(bus, stream);
|
||||
if (ret < 0) {
|
||||
dev_err(bus->dev, "Compute transport params failed: %d\n", ret);
|
||||
return ret;
|
||||
|
|
|
@ -1072,7 +1072,7 @@ static const struct sdw_master_ops qcom_swrm_ops = {
|
|||
.pre_bank_switch = qcom_swrm_pre_bank_switch,
|
||||
};
|
||||
|
||||
static int qcom_swrm_compute_params(struct sdw_bus *bus)
|
||||
static int qcom_swrm_compute_params(struct sdw_bus *bus, struct sdw_stream_runtime *stream)
|
||||
{
|
||||
struct qcom_swrm_ctrl *ctrl = to_qcom_sdw(bus);
|
||||
struct sdw_master_runtime *m_rt;
|
||||
|
|
|
@ -1419,7 +1419,7 @@ static int _sdw_prepare_stream(struct sdw_stream_runtime *stream,
|
|||
|
||||
/* Compute params */
|
||||
if (bus->compute_params) {
|
||||
ret = bus->compute_params(bus);
|
||||
ret = bus->compute_params(bus, stream);
|
||||
if (ret < 0) {
|
||||
dev_err(bus->dev, "Compute params failed: %d\n",
|
||||
ret);
|
||||
|
@ -1721,7 +1721,7 @@ static int _sdw_deprepare_stream(struct sdw_stream_runtime *stream)
|
|||
|
||||
/* Compute params */
|
||||
if (bus->compute_params) {
|
||||
ret = bus->compute_params(bus);
|
||||
ret = bus->compute_params(bus, stream);
|
||||
if (ret < 0) {
|
||||
dev_err(bus->dev, "Compute params failed: %d\n",
|
||||
ret);
|
||||
|
|
|
@ -855,79 +855,6 @@ struct sdw_master_ops {
|
|||
int dev_num);
|
||||
};
|
||||
|
||||
/**
|
||||
* struct sdw_bus - SoundWire bus
|
||||
* @dev: Shortcut to &bus->md->dev to avoid changing the entire code.
|
||||
* @md: Master device
|
||||
* @bus_lock_key: bus lock key associated to @bus_lock
|
||||
* @bus_lock: bus lock
|
||||
* @slaves: list of Slaves on this bus
|
||||
* @msg_lock_key: message lock key associated to @msg_lock
|
||||
* @msg_lock: message lock
|
||||
* @m_rt_list: List of Master instance of all stream(s) running on Bus. This
|
||||
* is used to compute and program bus bandwidth, clock, frame shape,
|
||||
* transport and port parameters
|
||||
* @defer_msg: Defer message
|
||||
* @params: Current bus parameters
|
||||
* @stream_refcount: number of streams currently using this bus
|
||||
* @ops: Master callback ops
|
||||
* @port_ops: Master port callback ops
|
||||
* @prop: Master properties
|
||||
* @vendor_specific_prop: pointer to non-standard properties
|
||||
* @hw_sync_min_links: Number of links used by a stream above which
|
||||
* hardware-based synchronization is required. This value is only
|
||||
* meaningful if multi_link is set. If set to 1, hardware-based
|
||||
* synchronization will be used even if a stream only uses a single
|
||||
* SoundWire segment.
|
||||
* @controller_id: system-unique controller ID. If set to -1, the bus @id will be used.
|
||||
* @link_id: Link id number, can be 0 to N, unique for each Controller
|
||||
* @id: bus system-wide unique id
|
||||
* @compute_params: points to Bus resource management implementation
|
||||
* @assigned: Bitmap for Slave device numbers.
|
||||
* Bit set implies used number, bit clear implies unused number.
|
||||
* @clk_stop_timeout: Clock stop timeout computed
|
||||
* @bank_switch_timeout: Bank switch timeout computed
|
||||
* @domain: IRQ domain
|
||||
* @irq_chip: IRQ chip
|
||||
* @debugfs: Bus debugfs (optional)
|
||||
* @multi_link: Store bus property that indicates if multi links
|
||||
* are supported. This flag is populated by drivers after reading
|
||||
* appropriate firmware (ACPI/DT).
|
||||
* @lane_used_bandwidth: how much bandwidth in bits per second is used by each lane
|
||||
*/
|
||||
struct sdw_bus {
|
||||
struct device *dev;
|
||||
struct sdw_master_device *md;
|
||||
struct lock_class_key bus_lock_key;
|
||||
struct mutex bus_lock;
|
||||
struct list_head slaves;
|
||||
struct lock_class_key msg_lock_key;
|
||||
struct mutex msg_lock;
|
||||
struct list_head m_rt_list;
|
||||
struct sdw_defer defer_msg;
|
||||
struct sdw_bus_params params;
|
||||
int stream_refcount;
|
||||
const struct sdw_master_ops *ops;
|
||||
const struct sdw_master_port_ops *port_ops;
|
||||
struct sdw_master_prop prop;
|
||||
void *vendor_specific_prop;
|
||||
int hw_sync_min_links;
|
||||
int controller_id;
|
||||
unsigned int link_id;
|
||||
int id;
|
||||
int (*compute_params)(struct sdw_bus *bus);
|
||||
DECLARE_BITMAP(assigned, SDW_MAX_DEVICES);
|
||||
unsigned int clk_stop_timeout;
|
||||
u32 bank_switch_timeout;
|
||||
struct irq_chip irq_chip;
|
||||
struct irq_domain *domain;
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
struct dentry *debugfs;
|
||||
#endif
|
||||
bool multi_link;
|
||||
unsigned int lane_used_bandwidth[SDW_MAX_LANES];
|
||||
};
|
||||
|
||||
int sdw_bus_master_add(struct sdw_bus *bus, struct device *parent,
|
||||
struct fwnode_handle *fwnode);
|
||||
void sdw_bus_master_delete(struct sdw_bus *bus);
|
||||
|
@ -1017,10 +944,83 @@ struct sdw_stream_runtime {
|
|||
struct list_head master_list;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct sdw_bus - SoundWire bus
|
||||
* @dev: Shortcut to &bus->md->dev to avoid changing the entire code.
|
||||
* @md: Master device
|
||||
* @bus_lock_key: bus lock key associated to @bus_lock
|
||||
* @bus_lock: bus lock
|
||||
* @slaves: list of Slaves on this bus
|
||||
* @msg_lock_key: message lock key associated to @msg_lock
|
||||
* @msg_lock: message lock
|
||||
* @m_rt_list: List of Master instance of all stream(s) running on Bus. This
|
||||
* is used to compute and program bus bandwidth, clock, frame shape,
|
||||
* transport and port parameters
|
||||
* @defer_msg: Defer message
|
||||
* @params: Current bus parameters
|
||||
* @stream_refcount: number of streams currently using this bus
|
||||
* @ops: Master callback ops
|
||||
* @port_ops: Master port callback ops
|
||||
* @prop: Master properties
|
||||
* @vendor_specific_prop: pointer to non-standard properties
|
||||
* @hw_sync_min_links: Number of links used by a stream above which
|
||||
* hardware-based synchronization is required. This value is only
|
||||
* meaningful if multi_link is set. If set to 1, hardware-based
|
||||
* synchronization will be used even if a stream only uses a single
|
||||
* SoundWire segment.
|
||||
* @controller_id: system-unique controller ID. If set to -1, the bus @id will be used.
|
||||
* @link_id: Link id number, can be 0 to N, unique for each Controller
|
||||
* @id: bus system-wide unique id
|
||||
* @compute_params: points to Bus resource management implementation
|
||||
* @assigned: Bitmap for Slave device numbers.
|
||||
* Bit set implies used number, bit clear implies unused number.
|
||||
* @clk_stop_timeout: Clock stop timeout computed
|
||||
* @bank_switch_timeout: Bank switch timeout computed
|
||||
* @domain: IRQ domain
|
||||
* @irq_chip: IRQ chip
|
||||
* @debugfs: Bus debugfs (optional)
|
||||
* @multi_link: Store bus property that indicates if multi links
|
||||
* are supported. This flag is populated by drivers after reading
|
||||
* appropriate firmware (ACPI/DT).
|
||||
* @lane_used_bandwidth: how much bandwidth in bits per second is used by each lane
|
||||
*/
|
||||
struct sdw_bus {
|
||||
struct device *dev;
|
||||
struct sdw_master_device *md;
|
||||
struct lock_class_key bus_lock_key;
|
||||
struct mutex bus_lock;
|
||||
struct list_head slaves;
|
||||
struct lock_class_key msg_lock_key;
|
||||
struct mutex msg_lock;
|
||||
struct list_head m_rt_list;
|
||||
struct sdw_defer defer_msg;
|
||||
struct sdw_bus_params params;
|
||||
int stream_refcount;
|
||||
const struct sdw_master_ops *ops;
|
||||
const struct sdw_master_port_ops *port_ops;
|
||||
struct sdw_master_prop prop;
|
||||
void *vendor_specific_prop;
|
||||
int hw_sync_min_links;
|
||||
int controller_id;
|
||||
unsigned int link_id;
|
||||
int id;
|
||||
int (*compute_params)(struct sdw_bus *bus, struct sdw_stream_runtime *stream);
|
||||
DECLARE_BITMAP(assigned, SDW_MAX_DEVICES);
|
||||
unsigned int clk_stop_timeout;
|
||||
u32 bank_switch_timeout;
|
||||
struct irq_chip irq_chip;
|
||||
struct irq_domain *domain;
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
struct dentry *debugfs;
|
||||
#endif
|
||||
bool multi_link;
|
||||
unsigned int lane_used_bandwidth[SDW_MAX_LANES];
|
||||
};
|
||||
|
||||
struct sdw_stream_runtime *sdw_alloc_stream(const char *stream_name);
|
||||
void sdw_release_stream(struct sdw_stream_runtime *stream);
|
||||
|
||||
int sdw_compute_params(struct sdw_bus *bus);
|
||||
int sdw_compute_params(struct sdw_bus *bus, struct sdw_stream_runtime *stream);
|
||||
|
||||
int sdw_stream_add_master(struct sdw_bus *bus,
|
||||
struct sdw_stream_config *stream_config,
|
||||
|
|
Loading…
Reference in New Issue
Block a user