]> Git Repo - linux.git/commitdiff
SoundWire: pass stream to compute_params()
authorBard Liao <[email protected]>
Wed, 18 Dec 2024 08:01:54 +0000 (16:01 +0800)
committerVinod Koul <[email protected]>
Mon, 23 Dec 2024 06:30:34 +0000 (12:00 +0530)
The stream parameter will be used in the follow up commit.
No function change.

Signed-off-by: Bard Liao <[email protected]>
Reviewed-by: Ranjani Sridharan <[email protected]>
Reviewed-by: Péter Ujfalusi <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Vinod Koul <[email protected]>
drivers/soundwire/amd_manager.c
drivers/soundwire/generic_bandwidth_allocation.c
drivers/soundwire/qcom.c
drivers/soundwire/stream.c
include/linux/soundwire/sdw.h

index f47d4cd656ae77431ad7db8870f1c442b235ea63..0ee792176f229f42dd11b825105a3e50f55fba1c 100644 (file)
@@ -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;
index faf04d82ba0a1383ddde8280827a683c179854aa..062e7488b2263b78eaa8e20538f6b83e6632d48b 100644 (file)
@@ -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;
index 2b403b14066c1611e69a07859d0f10d699c26399..fd98f05bf56d12ac6f9ad79916ae766d1c7a3197 100644 (file)
@@ -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;
index 892409cdb88c0b1a204f0827ec494ca8be147f1a..e9df503332bbdd84c5c1daef6d65099166a37b0b 100644 (file)
@@ -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);
index fc0a203c3ae0e5d1a4aed3002fb8ab653664bfaf..2d6c3031779257b029690df14331651eb6d95c83 100644 (file)
@@ -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,
This page took 0.072317 seconds and 4 git commands to generate.