diff mbox series

soundwire: intel: report slave_ids for each link to SOF driver

Message ID 20200110220016.30887-1-pierre-louis.bossart@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series soundwire: intel: report slave_ids for each link to SOF driver | expand

Commit Message

Pierre-Louis Bossart Jan. 10, 2020, 10 p.m. UTC
From: Bard Liao <yung-chuan.liao@linux.intel.com>

The existing link_mask flag is no longer sufficient to detect the
hardware and identify which topology file and a machine driver to load.

By reporting the slave_ids exposed in ACPI tables, the parent SOF
driver will be able to compare against a set of static configurations.

This patch only adds the interface change, the functionality is added
in future patches.

Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
---
 include/linux/soundwire/sdw_intel.h | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Pierre-Louis Bossart Jan. 10, 2020, 10:31 p.m. UTC | #1
On 1/10/20 4:00 PM, Pierre-Louis Bossart wrote:
> From: Bard Liao <yung-chuan.liao@linux.intel.com>
> 
> The existing link_mask flag is no longer sufficient to detect the
> hardware and identify which topology file and a machine driver to load.
> 
> By reporting the slave_ids exposed in ACPI tables, the parent SOF
> driver will be able to compare against a set of static configurations.
> 
> This patch only adds the interface change, the functionality is added
> in future patches.

Vinod, this patch would need to be shared as an immutable tag for Mark, 
once this is done I can share the SOF parts that make use of the 
information (cf. https://github.com/thesofproject/linux/pull/1692 for 
reference)

Sorry we missed this in the earlier interface changes, we didn't think 
we would have so many hardware variations so quickly.

Thanks!

> 
> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> ---
>   include/linux/soundwire/sdw_intel.h | 11 +++++++++++
>   1 file changed, 11 insertions(+)
> 
> diff --git a/include/linux/soundwire/sdw_intel.h b/include/linux/soundwire/sdw_intel.h
> index 93b83bdf8035..979b41b5dcb4 100644
> --- a/include/linux/soundwire/sdw_intel.h
> +++ b/include/linux/soundwire/sdw_intel.h
> @@ -5,6 +5,7 @@
>   #define __SDW_INTEL_H
>   
>   #include <linux/irqreturn.h>
> +#include <linux/soundwire/sdw.h>
>   
>   /**
>    * struct sdw_intel_stream_params_data: configuration passed during
> @@ -93,6 +94,11 @@ struct sdw_intel_link_res;
>    */
>   #define SDW_INTEL_CLK_STOP_BUS_RESET		BIT(3)
>   
> +struct sdw_intel_slave_id {
> +	int link_id;
> +	struct sdw_slave_id id;
> +};
> +
>   /**
>    * struct sdw_intel_ctx - context allocated by the controller
>    * driver probe
> @@ -101,9 +107,12 @@ struct sdw_intel_link_res;
>    * hardware capabilities after all power dependencies are settled.
>    * @link_mask: bit-wise mask listing SoundWire links reported by the
>    * Controller
> + * @num_slaves: total number of devices exposed across all enabled links
>    * @handle: ACPI parent handle
>    * @links: information for each link (controller-specific and kept
>    * opaque here)
> + * @ids: array of slave_id, representing Slaves exposed across all enabled
> + * links
>    * @link_list: list to handle interrupts across all links
>    * @shim_lock: mutex to handle concurrent rmw access to shared SHIM registers.
>    */
> @@ -111,8 +120,10 @@ struct sdw_intel_ctx {
>   	int count;
>   	void __iomem *mmio_base;
>   	u32 link_mask;
> +	int num_slaves;
>   	acpi_handle handle;
>   	struct sdw_intel_link_res *links;
> +	struct sdw_intel_slave_id *ids;
>   	struct list_head link_list;
>   	struct mutex shim_lock; /* lock for access to shared SHIM registers */
>   };
>
Vinod Koul Jan. 14, 2020, 6:26 a.m. UTC | #2
On 10-01-20, 16:31, Pierre-Louis Bossart wrote:
> 
> 
> On 1/10/20 4:00 PM, Pierre-Louis Bossart wrote:
> > From: Bard Liao <yung-chuan.liao@linux.intel.com>
> > 
> > The existing link_mask flag is no longer sufficient to detect the
> > hardware and identify which topology file and a machine driver to load.
> > 
> > By reporting the slave_ids exposed in ACPI tables, the parent SOF
> > driver will be able to compare against a set of static configurations.
> > 
> > This patch only adds the interface change, the functionality is added
> > in future patches.
> 
> Vinod, this patch would need to be shared as an immutable tag for Mark, once
> this is done I can share the SOF parts that make use of the information (cf.
> https://github.com/thesofproject/linux/pull/1692 for reference)
> 
> Sorry we missed this in the earlier interface changes, we didn't think we
> would have so many hardware variations so quickly.

do you want the tag now..? I can provide... We are already in -rc6
and i will send PR to greg later this week...
Pierre-Louis Bossart Jan. 14, 2020, 4:05 p.m. UTC | #3
On 1/14/20 12:26 AM, Vinod Koul wrote:
> On 10-01-20, 16:31, Pierre-Louis Bossart wrote:
>>
>>
>> On 1/10/20 4:00 PM, Pierre-Louis Bossart wrote:
>>> From: Bard Liao <yung-chuan.liao@linux.intel.com>
>>>
>>> The existing link_mask flag is no longer sufficient to detect the
>>> hardware and identify which topology file and a machine driver to load.
>>>
>>> By reporting the slave_ids exposed in ACPI tables, the parent SOF
>>> driver will be able to compare against a set of static configurations.
>>>
>>> This patch only adds the interface change, the functionality is added
>>> in future patches.
>>
>> Vinod, this patch would need to be shared as an immutable tag for Mark, once
>> this is done I can share the SOF parts that make use of the information (cf.
>> https://github.com/thesofproject/linux/pull/1692 for reference)
>>
>> Sorry we missed this in the earlier interface changes, we didn't think we
>> would have so many hardware variations so quickly.
> 
> do you want the tag now..? I can provide... We are already in -rc6
> and i will send PR to greg later this week...

yes please, I'd like to send the SOF patches this week as well.
Vinod Koul Jan. 16, 2020, 12:03 p.m. UTC | #4
On 14-01-20, 10:05, Pierre-Louis Bossart wrote:
> On 1/14/20 12:26 AM, Vinod Koul wrote:
> > On 10-01-20, 16:31, Pierre-Louis Bossart wrote:
> > > On 1/10/20 4:00 PM, Pierre-Louis Bossart wrote:
> > > > From: Bard Liao <yung-chuan.liao@linux.intel.com>
> > > > 
> > > > The existing link_mask flag is no longer sufficient to detect the
> > > > hardware and identify which topology file and a machine driver to load.
> > > > 
> > > > By reporting the slave_ids exposed in ACPI tables, the parent SOF
> > > > driver will be able to compare against a set of static configurations.
> > > > 
> > > > This patch only adds the interface change, the functionality is added
> > > > in future patches.
> > > 
> > > Vinod, this patch would need to be shared as an immutable tag for Mark, once
> > > this is done I can share the SOF parts that make use of the information (cf.
> > > https://github.com/thesofproject/linux/pull/1692 for reference)
> > > 
> > > Sorry we missed this in the earlier interface changes, we didn't think we
> > > would have so many hardware variations so quickly.
> > 
> > do you want the tag now..? I can provide... We are already in -rc6
> > and i will send PR to greg later this week...
> 
> yes please, I'd like to send the SOF patches this week as well.

Applied now and pushed tag 'sdw_interfaces_2_5.6' for this, thanks
diff mbox series

Patch

diff --git a/include/linux/soundwire/sdw_intel.h b/include/linux/soundwire/sdw_intel.h
index 93b83bdf8035..979b41b5dcb4 100644
--- a/include/linux/soundwire/sdw_intel.h
+++ b/include/linux/soundwire/sdw_intel.h
@@ -5,6 +5,7 @@ 
 #define __SDW_INTEL_H
 
 #include <linux/irqreturn.h>
+#include <linux/soundwire/sdw.h>
 
 /**
  * struct sdw_intel_stream_params_data: configuration passed during
@@ -93,6 +94,11 @@  struct sdw_intel_link_res;
  */
 #define SDW_INTEL_CLK_STOP_BUS_RESET		BIT(3)
 
+struct sdw_intel_slave_id {
+	int link_id;
+	struct sdw_slave_id id;
+};
+
 /**
  * struct sdw_intel_ctx - context allocated by the controller
  * driver probe
@@ -101,9 +107,12 @@  struct sdw_intel_link_res;
  * hardware capabilities after all power dependencies are settled.
  * @link_mask: bit-wise mask listing SoundWire links reported by the
  * Controller
+ * @num_slaves: total number of devices exposed across all enabled links
  * @handle: ACPI parent handle
  * @links: information for each link (controller-specific and kept
  * opaque here)
+ * @ids: array of slave_id, representing Slaves exposed across all enabled
+ * links
  * @link_list: list to handle interrupts across all links
  * @shim_lock: mutex to handle concurrent rmw access to shared SHIM registers.
  */
@@ -111,8 +120,10 @@  struct sdw_intel_ctx {
 	int count;
 	void __iomem *mmio_base;
 	u32 link_mask;
+	int num_slaves;
 	acpi_handle handle;
 	struct sdw_intel_link_res *links;
+	struct sdw_intel_slave_id *ids;
 	struct list_head link_list;
 	struct mutex shim_lock; /* lock for access to shared SHIM registers */
 };