[alsa-devel] [PATCH v6 07/10] soundwire: keep track of Masters in a stream

Pierre-Louis Bossart pierre-louis.bossart at linux.intel.com
Thu Jul 19 17:06:30 CEST 2018


On 7/16/18 1:47 PM, Sanyog Kale wrote:
> From: Shreyas NC <shreyas.nc at intel.com>
> 
> A multi link bankswitch can be done if the hardware supports and
> the stream is handled by multiple Master(s).
> 
> This preparatory patch adds support to track m_rt in a stream.

The order of the patches seems off, you are adding the definition of 
m_rt_count in patch 7 but using it in patch 6, that'll break git bisect.
What am i missing?

It'd also make more sense to have the reference counts in the same 
patch, it's hard to track otherwise, so maybe one patch to add the 
definitions and inits and the second to increase/decrease+use the value 
as needed.

> 
> Signed-off-by: Shreyas NC <shreyas.nc at intel.com>
> Signed-off-by: Sanyog Kale <sanyog.r.kale at intel.com>
> ---
>   drivers/soundwire/stream.c    | 2 ++
>   include/linux/soundwire/sdw.h | 2 ++
>   2 files changed, 4 insertions(+)
> 
> diff --git a/drivers/soundwire/stream.c b/drivers/soundwire/stream.c
> index 7e75a400d03e..539b98ec18d9 100644
> --- a/drivers/soundwire/stream.c
> +++ b/drivers/soundwire/stream.c
> @@ -759,6 +759,7 @@ struct sdw_stream_runtime *sdw_alloc_stream(char *stream_name)
>   	stream->name = stream_name;
>   	INIT_LIST_HEAD(&stream->master_list);
>   	stream->state = SDW_STREAM_ALLOCATED;
> +	stream->m_rt_count = 0;
>   
>   	return stream;
>   }
> @@ -963,6 +964,7 @@ int sdw_stream_remove_master(struct sdw_bus *bus,
>   
>   		sdw_master_port_release(bus, m_rt);
>   		sdw_release_master_stream(m_rt, stream);
> +		stream->m_rt_count--;
>   	}
>   
>   	if (list_empty(&stream->master_list))
> diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h
> index 03df709fb8ef..214e14604d9f 100644
> --- a/include/linux/soundwire/sdw.h
> +++ b/include/linux/soundwire/sdw.h
> @@ -771,6 +771,7 @@ struct sdw_stream_params {
>    * @master_list: List of Master runtime(s) in this stream.
>    * master_list can contain only one m_rt per Master instance
>    * for a stream
> + * @m_rt_count: Count of Master runtime(s) in this stream
>    */
>   struct sdw_stream_runtime {
>   	char *name;
> @@ -778,6 +779,7 @@ struct sdw_stream_runtime {
>   	enum sdw_stream_state state;
>   	enum sdw_stream_type type;
>   	struct list_head master_list;
> +	int m_rt_count;
>   };
>   
>   struct sdw_stream_runtime *sdw_alloc_stream(char *stream_name);
> 



More information about the Alsa-devel mailing list