* [PATCH 1/4] Documentation: SoundWire: clarify TDM mode support
@ 2020-04-19 18:51 Bard Liao
2020-04-19 18:51 ` [PATCH 2/4] soundwire: slave: don't init debugfs on device registration error Bard Liao
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Bard Liao @ 2020-04-19 18:51 UTC (permalink / raw)
To: alsa-devel, vkoul
Cc: pierre-louis.bossart, tiwai, gregkh, linux-kernel,
ranjani.sridharan, hui.wang, broonie, srinivas.kandagatla, jank,
mengdong.lin, slawomir.blauciak, sanyog.r.kale, rander.wang,
bard.liao
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
The current description of stream topologies does not explicitly
mention 'mirror' topologies used for audio amplifiers, where all
amplifiers see the same data and generate a different output based on
configuration or dynamic information. Add examples and notes to
explain how channels can be transmitted and mapped.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
---
Documentation/driver-api/soundwire/stream.rst | 89 ++++++++++++++++++-
1 file changed, 86 insertions(+), 3 deletions(-)
diff --git a/Documentation/driver-api/soundwire/stream.rst b/Documentation/driver-api/soundwire/stream.rst
index 8bceece51554..1b386076402c 100644
--- a/Documentation/driver-api/soundwire/stream.rst
+++ b/Documentation/driver-api/soundwire/stream.rst
@@ -75,8 +75,33 @@ Slaves are using single port. ::
| (Data) |
+---------------+
+Example 4: Stereo Stream with L and R channels is rendered by
+Master. Both of the L and R channels are received by two different
+Slaves. Master and both Slaves are using single port handling
+L+R. Each Slave device processes the L + R data locally, typically
+based on static configuration or dynamic orientation, and may drive
+one or more speakers. ::
-Example 4: Stereo Stream with L and R channel is rendered by two different
+ +---------------+ Clock Signal +---------------+
+ | Master +---------+------------------------+ Slave |
+ | Interface | | | Interface |
+ | | | | 1 |
+ | | | Data Signal | |
+ | L + R +---+------------------------------+ L + R |
+ | (Data) | | | Data Direction | (Data) |
+ +---------------+ | | +-------------> +---------------+
+ | |
+ | |
+ | | +---------------+
+ | +----------------------> | Slave |
+ | | Interface |
+ | | 2 |
+ | | |
+ +----------------------------> | L + R |
+ | (Data) |
+ +---------------+
+
+Example 5: Stereo Stream with L and R channel is rendered by two different
Ports of the Master and is received by only single Port of the Slave
interface. ::
@@ -101,7 +126,7 @@ interface. ::
+--------------------+ | |
+----------------+
-Example 5: Stereo Stream with L and R channel is rendered by 2 Masters, each
+Example 6: Stereo Stream with L and R channel is rendered by 2 Masters, each
rendering one channel, and is received by two different Slaves, each
receiving one channel. Both Masters and both Slaves are using single port. ::
@@ -123,12 +148,70 @@ receiving one channel. Both Masters and both Slaves are using single port. ::
| (Data) | Data Direction | (Data) |
+---------------+ +-----------------------> +---------------+
-Note: In multi-link cases like above, to lock, one would acquire a global
+Example 7: Stereo Stream with L and R channel is rendered by 2
+Masters, each rendering both channels. Each Slave receives L + R. This
+is the same application as Example 4 but with Slaves placed on
+separate links. ::
+
+ +---------------+ Clock Signal +---------------+
+ | Master +----------------------------------+ Slave |
+ | Interface | | Interface |
+ | 1 | | 1 |
+ | | Data Signal | |
+ | L + R +----------------------------------+ L + R |
+ | (Data) | Data Direction | (Data) |
+ +---------------+ +-----------------------> +---------------+
+
+ +---------------+ Clock Signal +---------------+
+ | Master +----------------------------------+ Slave |
+ | Interface | | Interface |
+ | 2 | | 2 |
+ | | Data Signal | |
+ | L + R +----------------------------------+ L + R |
+ | (Data) | Data Direction | (Data) |
+ +---------------+ +-----------------------> +---------------+
+
+Example 8: 4-channel Stream is rendered by 2 Masters, each rendering a
+2 channels. Each Slave receives 2 channels. ::
+
+ +---------------+ Clock Signal +---------------+
+ | Master +----------------------------------+ Slave |
+ | Interface | | Interface |
+ | 1 | | 1 |
+ | | Data Signal | |
+ | L1 + R1 +----------------------------------+ L1 + R1 |
+ | (Data) | Data Direction | (Data) |
+ +---------------+ +-----------------------> +---------------+
+
+ +---------------+ Clock Signal +---------------+
+ | Master +----------------------------------+ Slave |
+ | Interface | | Interface |
+ | 2 | | 2 |
+ | | Data Signal | |
+ | L2 + R2 +----------------------------------+ L2 + R2 |
+ | (Data) | Data Direction | (Data) |
+ +---------------+ +-----------------------> +---------------+
+
+Note1: In multi-link cases like above, to lock, one would acquire a global
lock and then go on locking bus instances. But, in this case the caller
framework(ASoC DPCM) guarantees that stream operations on a card are
always serialized. So, there is no race condition and hence no need for
global lock.
+Note2: A Slave device may be configured to receive all channels
+transmitted on a link for a given Stream (Example 4) or just a subset
+of the data (Example 3). The configuration of the Slave device is not
+handled by a SoundWire subsystem API, but instead by the
+snd_soc_dai_set_tdm_slot() API. The platform or machine driver will
+typically configure which of the slots are used. For Example 4, the
+same slots would be used by all Devices, while for Example 3 the Slave
+Device1 would use e.g. Slot 0 and Slave device2 slot 1.
+
+Note3: Multiple Sink ports can extract the same information for the
+same bitSlots in the SoundWire frame, however multiple Source ports
+shall be configured with different bitSlot configurations. This is the
+same limitation as with I2S/PCM TDM usages.
+
SoundWire Stream Management flow
================================
--
2.17.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/4] soundwire: slave: don't init debugfs on device registration error
2020-04-19 18:51 [PATCH 1/4] Documentation: SoundWire: clarify TDM mode support Bard Liao
@ 2020-04-19 18:51 ` Bard Liao
2020-04-19 18:51 ` [PATCH 3/4] soundwire: debugfs: clarify SDPX license with GPL-2.0-only Bard Liao
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Bard Liao @ 2020-04-19 18:51 UTC (permalink / raw)
To: alsa-devel, vkoul
Cc: pierre-louis.bossart, tiwai, gregkh, linux-kernel,
ranjani.sridharan, hui.wang, broonie, srinivas.kandagatla, jank,
mengdong.lin, slawomir.blauciak, sanyog.r.kale, rander.wang,
bard.liao
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
The error handling flow seems incorrect, there is no reason to try and
add debugfs support if the device registration did not
succeed. Return on error.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
---
drivers/soundwire/slave.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/soundwire/slave.c b/drivers/soundwire/slave.c
index aace57fae7f8..4bacdb187eab 100644
--- a/drivers/soundwire/slave.c
+++ b/drivers/soundwire/slave.c
@@ -68,6 +68,8 @@ static int sdw_slave_add(struct sdw_bus *bus,
list_del(&slave->node);
mutex_unlock(&bus->bus_lock);
put_device(&slave->dev);
+
+ return ret;
}
sdw_slave_debugfs_init(slave);
--
2.17.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/4] soundwire: debugfs: clarify SDPX license with GPL-2.0-only
2020-04-19 18:51 [PATCH 1/4] Documentation: SoundWire: clarify TDM mode support Bard Liao
2020-04-19 18:51 ` [PATCH 2/4] soundwire: slave: don't init debugfs on device registration error Bard Liao
@ 2020-04-19 18:51 ` Bard Liao
2020-04-19 18:51 ` [PATCH 4/4] soundwire: bus: reduce verbosity on enumeration Bard Liao
2020-05-02 11:56 ` [PATCH 1/4] Documentation: SoundWire: clarify TDM mode support Vinod Koul
3 siblings, 0 replies; 5+ messages in thread
From: Bard Liao @ 2020-04-19 18:51 UTC (permalink / raw)
To: alsa-devel, vkoul
Cc: pierre-louis.bossart, tiwai, gregkh, linux-kernel,
ranjani.sridharan, hui.wang, broonie, srinivas.kandagatla, jank,
mengdong.lin, slawomir.blauciak, sanyog.r.kale, rander.wang,
bard.liao
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Follow recommendation to use GPL-2.0-only
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
---
drivers/soundwire/debugfs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/soundwire/debugfs.c b/drivers/soundwire/debugfs.c
index fb1140e82b86..b6cad0d59b7b 100644
--- a/drivers/soundwire/debugfs.c
+++ b/drivers/soundwire/debugfs.c
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0
+// SPDX-License-Identifier: GPL-2.0-only
// Copyright(c) 2017-2019 Intel Corporation.
#include <linux/device.h>
--
2.17.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 4/4] soundwire: bus: reduce verbosity on enumeration
2020-04-19 18:51 [PATCH 1/4] Documentation: SoundWire: clarify TDM mode support Bard Liao
2020-04-19 18:51 ` [PATCH 2/4] soundwire: slave: don't init debugfs on device registration error Bard Liao
2020-04-19 18:51 ` [PATCH 3/4] soundwire: debugfs: clarify SDPX license with GPL-2.0-only Bard Liao
@ 2020-04-19 18:51 ` Bard Liao
2020-05-02 11:56 ` [PATCH 1/4] Documentation: SoundWire: clarify TDM mode support Vinod Koul
3 siblings, 0 replies; 5+ messages in thread
From: Bard Liao @ 2020-04-19 18:51 UTC (permalink / raw)
To: alsa-devel, vkoul
Cc: pierre-louis.bossart, tiwai, gregkh, linux-kernel,
ranjani.sridharan, hui.wang, broonie, srinivas.kandagatla, jank,
mengdong.lin, slawomir.blauciak, sanyog.r.kale, rander.wang,
bard.liao
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
No need to repeat the same info log on all enumerations (essentially
each power-up), keep it as debug information.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
---
drivers/soundwire/bus.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c
index 488c3c9e4947..f9a078ce76bc 100644
--- a/drivers/soundwire/bus.c
+++ b/drivers/soundwire/bus.c
@@ -563,9 +563,9 @@ static int sdw_assign_device_num(struct sdw_slave *slave)
}
if (!new_device)
- dev_info(slave->bus->dev,
- "Slave already registered, reusing dev_num:%d\n",
- slave->dev_num);
+ dev_dbg(slave->bus->dev,
+ "Slave already registered, reusing dev_num:%d\n",
+ slave->dev_num);
/* Clear the slave->dev_num to transfer message on device 0 */
dev_num = slave->dev_num;
--
2.17.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/4] Documentation: SoundWire: clarify TDM mode support
2020-04-19 18:51 [PATCH 1/4] Documentation: SoundWire: clarify TDM mode support Bard Liao
` (2 preceding siblings ...)
2020-04-19 18:51 ` [PATCH 4/4] soundwire: bus: reduce verbosity on enumeration Bard Liao
@ 2020-05-02 11:56 ` Vinod Koul
3 siblings, 0 replies; 5+ messages in thread
From: Vinod Koul @ 2020-05-02 11:56 UTC (permalink / raw)
To: Bard Liao
Cc: pierre-louis.bossart, alsa-devel, tiwai, gregkh, linux-kernel,
ranjani.sridharan, hui.wang, broonie, srinivas.kandagatla, jank,
mengdong.lin, slawomir.blauciak, sanyog.r.kale, rander.wang,
bard.liao
On 20-04-20, 02:51, Bard Liao wrote:
> From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
>
> The current description of stream topologies does not explicitly
> mention 'mirror' topologies used for audio amplifiers, where all
> amplifiers see the same data and generate a different output based on
> configuration or dynamic information. Add examples and notes to
> explain how channels can be transmitted and mapped.
Applied all, thanks
--
~Vinod
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-05-02 11:57 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-19 18:51 [PATCH 1/4] Documentation: SoundWire: clarify TDM mode support Bard Liao
2020-04-19 18:51 ` [PATCH 2/4] soundwire: slave: don't init debugfs on device registration error Bard Liao
2020-04-19 18:51 ` [PATCH 3/4] soundwire: debugfs: clarify SDPX license with GPL-2.0-only Bard Liao
2020-04-19 18:51 ` [PATCH 4/4] soundwire: bus: reduce verbosity on enumeration Bard Liao
2020-05-02 11:56 ` [PATCH 1/4] Documentation: SoundWire: clarify TDM mode support Vinod Koul
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).