2019-06-07 08:58:52

by Srinivas Kandagatla

[permalink] [raw]
Subject: [RFC PATCH 3/6] soundwire: core: define SDW_MAX_PORT

This patch adds SDW_MAX_PORT so that other driver can use it.

Signed-off-by: Srinivas Kandagatla <[email protected]>
---
include/linux/soundwire/sdw.h | 1 +
1 file changed, 1 insertion(+)

diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h
index aac68e879fae..80ca997e4e5d 100644
--- a/include/linux/soundwire/sdw.h
+++ b/include/linux/soundwire/sdw.h
@@ -36,6 +36,7 @@ struct sdw_slave;
#define SDW_FRAME_CTRL_BITS 48
#define SDW_MAX_DEVICES 11

+#define SDW_MAX_PORTS 14
#define SDW_VALID_PORT_RANGE(n) ((n) <= 14 && (n) >= 1)

#define SDW_DAI_ID_RANGE_START 100
--
2.21.0


2019-06-07 12:35:20

by Pierre-Louis Bossart

[permalink] [raw]
Subject: Re: [alsa-devel] [RFC PATCH 3/6] soundwire: core: define SDW_MAX_PORT

On 6/7/19 3:56 AM, Srinivas Kandagatla wrote:
> This patch adds SDW_MAX_PORT so that other driver can use it.
>
> Signed-off-by: Srinivas Kandagatla <[email protected]>
> ---
> include/linux/soundwire/sdw.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h
> index aac68e879fae..80ca997e4e5d 100644
> --- a/include/linux/soundwire/sdw.h
> +++ b/include/linux/soundwire/sdw.h
> @@ -36,6 +36,7 @@ struct sdw_slave;
> #define SDW_FRAME_CTRL_BITS 48
> #define SDW_MAX_DEVICES 11
>
> +#define SDW_MAX_PORTS 14

That's an ambiguous definition.
You can have 16 ports per the SoundWire spec, but DP0 is reserved for
control and DP15 is an alias for all ports (same idea as device 15 for
broadcast operations but limited to a single device), which leaves 14
ports for audio usages.

In the MIPI specs, specifically the DisCo part, the difference is called
about with the the DP0 and DPn notations, so this could be SDW_MAX_DPn.
Alternatively you could use SDW_MAX_AUDIO_PORTS which is more
self-explanatory and does not require in-depth familiarity with the spec.

> #define SDW_VALID_PORT_RANGE(n) ((n) <= 14 && (n) >= 1)
>
> #define SDW_DAI_ID_RANGE_START 100
>

2019-06-08 20:06:01

by Cezary Rojewski

[permalink] [raw]
Subject: Re: [alsa-devel] [RFC PATCH 3/6] soundwire: core: define SDW_MAX_PORT


On 2019-06-07 14:31, Pierre-Louis Bossart wrote:
> On 6/7/19 3:56 AM, Srinivas Kandagatla wrote:
>> This patch adds SDW_MAX_PORT so that other driver can use it.
>>
>> Signed-off-by: Srinivas Kandagatla <[email protected]>
>> ---
>>   include/linux/soundwire/sdw.h | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/include/linux/soundwire/sdw.h
>> b/include/linux/soundwire/sdw.h
>> index aac68e879fae..80ca997e4e5d 100644
>> --- a/include/linux/soundwire/sdw.h
>> +++ b/include/linux/soundwire/sdw.h
>> @@ -36,6 +36,7 @@ struct sdw_slave;
>>   #define SDW_FRAME_CTRL_BITS        48
>>   #define SDW_MAX_DEVICES            11
>> +#define SDW_MAX_PORTS    14
>
> That's an ambiguous definition.
> You can have 16 ports per the SoundWire spec, but DP0 is reserved for
> control and DP15 is an alias for all ports (same idea as device 15 for
> broadcast operations but limited to a single device), which leaves 14
> ports for audio usages.
>
> In the MIPI specs, specifically the DisCo part, the difference is called
> about with the the DP0 and DPn notations, so this could be SDW_MAX_DPn.
> Alternatively you could use SDW_MAX_AUDIO_PORTS which is more
> self-explanatory and does not require in-depth familiarity with the spec.
>

This ambiguity spreads even further. Look at the name of #define below.
DP0 is by no means invalid. It's specific and has some optional
registers, yes, but that's because of its engagement in BPT.

Given the fact SDW does not care about type of data being transported,
even "AUDIO" seems misleading here. Though it's still better than no
specifier at all.

>>   #define SDW_VALID_PORT_RANGE(n)        ((n) <= 14 && (n) >= 1)
>>   #define SDW_DAI_ID_RANGE_START        100
>>
>