Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
edbf612
ASoC: SOF: Intel: hda: use global interrupt enable/disable
plbossart Nov 25, 2019
35b3e41
soundwire: sdw_slave: add probe_complete structure and new fields
plbossart Oct 9, 2019
29bd348
soundwire: sdw_slave: add enumeration_complete structure
plbossart Sep 26, 2019
1697a71
soundwire: sdw_slave: add initialization_complete definition
plbossart Nov 4, 2019
d12d8e7
soundwire: sdw_slave: track unattach_request to handle all init seque…
plbossart Nov 11, 2019
dd36605
soundwire: intel: update interfaces between ASoC and SoundWire
plbossart Oct 23, 2019
80e7f57
soundwire: intel: update stream callbacks for hwparams/free stream op…
RanderWang Aug 19, 2019
fd87e8c
soundwire: renames to prepare support for master drivers/devices
plbossart Sep 10, 2019
8ce1798
soundwire: rename dev_to_sdw_dev macro
plbossart Sep 11, 2019
3994102
soundwire: rename drv_to_sdw_slave_driver macro
plbossart Sep 11, 2019
44a7799
soundwire: bus_type: rename sdw_drv_ to sdw_slave_drv
plbossart Sep 11, 2019
ffd26c5
soundwire: intel: rename res field as link_res
plbossart Sep 11, 2019
52d92bf
soundwire: add support for sdw_slave_type
plbossart Sep 11, 2019
d1cd984
soundwire: slave: move uevent handling to slave
plbossart Nov 14, 2019
7e51316
soundwire: add initial definitions for sdw_master_device
plbossart Sep 11, 2019
f9c9b87
soundwire: intel: remove platform devices and provide new interface
plbossart Oct 23, 2019
26be62e
soundwire: add device driver to sdw_md_driver
bardliao Sep 12, 2019
83f40df
soundwire: intel: add prepare support in sdw dai driver
RanderWang Aug 19, 2019
34b2382
soundwire: intel: add trigger support in sdw dai driver
RanderWang Aug 19, 2019
5bd67eb
soundwire: intel: add sdw_stream_setup helper for .startup callback
RanderWang Aug 19, 2019
cd2c15d
soundwire: intel: free all resources on hw_free()
plbossart Oct 23, 2019
c097e46
soundwire: intel_init: add implementation of sdw_intel_enable_irq()
plbossart Oct 23, 2019
102eaa3
soundwire: intel/cadence: fix timeouts in MSI mode
bardliao Sep 24, 2019
864cc32
soundwire: bus: fix race condition with probe_complete signaling
plbossart Aug 2, 2019
a042a24
soundwire: bus: add PM/no-PM versions of read/write functions
plbossart Jun 11, 2019
25caa3b
soundwire: bus: write Slave Device Number without runtime_pm
plbossart Sep 26, 2019
2320def
soundwire: intel: add helpers for link power down and shim wake
plbossart Sep 20, 2019
a96fa15
soundwire: intel: Add basic power management support
plbossart Sep 20, 2019
d4c425d
soundwire: intel: add pm_runtime support
plbossart Sep 20, 2019
3ffe189
soundwire: intel: reset pm_runtime status during system resume
plbossart Oct 11, 2019
ce8487b
soundwire: intel: fix race condition on system resume
plbossart Nov 26, 2019
b5b3afe
soundwire: bus: add helper to reset Slave status to UNATTACHED
plbossart Sep 26, 2019
bf48655
soundwire: intel: call helper to reset Slave states on resume
plbossart Sep 26, 2019
fac8147
soundwire: bus: check first if Slaves become UNATTACHED
plbossart Sep 26, 2019
d0a3af2
soundwire: bus: fix race condition with enumeration_complete signaling
plbossart Sep 26, 2019
6cd32d1
soundwire: bus: fix race condition with initialization_complete signa…
plbossart Nov 4, 2019
7d67c0e
soundwire: bus: fix race condition by tracking UNATTACHED transition
plbossart Nov 8, 2019
70009de
soundwire: intel: disable pm_runtime when removing a master
plbossart Oct 9, 2019
8730a6f
soundwire: bus: disable pm_runtime in sdw_slave_delete
plbossart Oct 9, 2019
3404ea7
soundwire: stream: remove redundant pr_err traces
plbossart Nov 14, 2019
f618309
soundwire: stream: update state machine and add state checks
plbossart Oct 12, 2019
7259b2b
soundwire: stream: only prepare stream when it is configured.
bardliao Sep 20, 2019
31c3587
soundwire: stream: do not update parameters during DISABLED-PREPARED …
plbossart Oct 15, 2019
9a107df
soundwire: intel: reinitialize IP+DSP in .prepare(), but only when re…
bardliao Oct 14, 2019
ee78232
soundwire: intel: pm_runtime idle scheduling
plbossart Oct 24, 2019
fdf27c3
[HACK] add traces to debug aplay suspend/resume issue
plbossart Oct 12, 2019
64dc8b2
pm: add more traces
plbossart Nov 21, 2019
7513b3f
ALSA: HDA: intel-dsp-config: add DMI info for Dell laptop
bardliao Nov 5, 2019
689a071
soundwire: cadence_master: handle multiple status reports per Slave
plbossart Jun 11, 2019
22481bc
soundwire: Add generic bandwidth allocation algorithm
plbossart Apr 24, 2018
7275106
soundwire: dynamic_allocation: set grp_ctrl_valid false
bardliao Aug 2, 2019
ec6d001
soundwire: bus: fix device number leak on errors
plbossart Jul 30, 2019
b9d09e0
soundwire: intel: modify DMAT field for ALH
bardliao Aug 19, 2019
b44367a
soundwire: intel: fix factor of two in MCLK handling
bardliao Aug 19, 2019
6635d6b
soundwire: cadence_master: log register write info
plbossart Jun 26, 2019
8d5a8a1
add more traces to bus code
plbossart Jun 11, 2019
2bcd9e4
add traces for bus
plbossart Aug 1, 2019
f443e2a
[HACK] soundwire: add dynamic DEBUG in makefile
plbossart Sep 12, 2019
8d3cc3c
ALSA: HDA: intel-dsp-config: add DMI info for Dell laptop
bardliao Nov 20, 2019
bd5a3cb
Merge branch 'fix/isr-handling' into fix/sdw_interrupts
plbossart Nov 26, 2019
f68fbb3
soundwire: intel: update headers for interrupts
bardliao Nov 22, 2019
e252a87
soundwire: intel: merge SoundWire interrupt handlers with DSP ones
bardliao Nov 22, 2019
20611a5
ASoC: SOF: Intel: hda: merge IPC, stream and SoundWire interrupt hand…
bardliao Nov 22, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 45 additions & 18 deletions Documentation/driver-api/soundwire/stream.rst
Original file line number Diff line number Diff line change
Expand Up @@ -156,22 +156,27 @@ Below shows the SoundWire stream states and state transition diagram. ::
+-----------+ +------------+ +----------+ +----------+
| ALLOCATED +---->| CONFIGURED +---->| PREPARED +---->| ENABLED |
| STATE | | STATE | | STATE | | STATE |
+-----------+ +------------+ +----------+ +----+-----+
^
|
|
v
+----------+ +------------+ +----+-----+
+-----------+ +------------+ +---+--+---+ +----+-----+
^ ^ ^
| | |
__| |___________ |
| | |
v | v
+----------+ +-----+------+ +-+--+-----+
| RELEASED |<----------+ DEPREPARED |<-------+ DISABLED |
| STATE | | STATE | | STATE |
+----------+ +------------+ +----------+

NOTE: State transition between prepare and deprepare is supported in Spec
but not in the software (subsystem)
NOTE: State transitions between ``SDW_STREAM_ENABLED`` and
``SDW_STREAM_DISABLED`` are only relevant when then INFO_PAUSE flag is
supported at the ALSA/ASoC level. Likewise the transition between
``SDW_DISABLED_STATE`` and ``SDW_PREPARED_STATE`` depends on the
INFO_RESUME flag.

NOTE2: Stream state transition checks need to be handled by caller
framework, for example ALSA/ASoC. No checks for stream transition exist in
SoundWire subsystem.
NOTE2: The framework implements basic state transition checks, but
does not e.g. check if a transition from DISABLED to ENABLED is valid
on a specific platform. Such tests need to be added at the ALSA/ASoC
level.

Stream State Operations
-----------------------
Expand Down Expand Up @@ -246,6 +251,9 @@ SDW_STREAM_PREPARED

Prepare state of stream. Operations performed before entering in this state:

(0) Steps 1 and 2 are omitted in the case of a resume operation,
where the bus bandwidth is known.

(1) Bus parameters such as bandwidth, frame shape, clock frequency,
are computed based on current stream as well as already active
stream(s) on Bus. Re-computation is required to accommodate current
Expand All @@ -270,13 +278,15 @@ Prepare state of stream. Operations performed before entering in this state:
After all above operations are successful, stream state is set to
``SDW_STREAM_PREPARED``.

Bus implements below API for PREPARE state which needs to be called once per
stream. From ASoC DPCM framework, this stream state is linked to
.prepare() operation.
Bus implements below API for PREPARE state which needs to be called
once per stream. From ASoC DPCM framework, this stream state is linked
to .prepare() operation. Since the .trigger() operations may not
follow the .prepare(), a direct transitions from
``SDW_STREAM_PREPARED`` to ``SDW_STREAM_DEPREPARED`` is allowed.

.. code-block:: c

int sdw_prepare_stream(struct sdw_stream_runtime * stream);
int sdw_prepare_stream(struct sdw_stream_runtime * stream, bool resume);


SDW_STREAM_ENABLED
Expand Down Expand Up @@ -332,6 +342,14 @@ Bus implements below API for DISABLED state which needs to be called once
per stream. From ASoC DPCM framework, this stream state is linked to
.trigger() stop operation.

When the INFO_PAUSE flag is supported, a direct transition to
``SDW_STREAM_ENABLED`` is allowed.

For resume operations where ASoC will use the .prepare() callback, the
stream can transition from ``SDW_STREAM_DISABLED`` to
``SDW_STREAM_PREPARED``, with all required settings restored but
without updating the bandwidth and bit allocation.

.. code-block:: c

int sdw_disable_stream(struct sdw_stream_runtime * stream);
Expand All @@ -353,9 +371,18 @@ state:
After all above operations are successful, stream state is set to
``SDW_STREAM_DEPREPARED``.

Bus implements below API for DEPREPARED state which needs to be called once
per stream. From ASoC DPCM framework, this stream state is linked to
.trigger() stop operation.
Bus implements below API for DEPREPARED state which needs to be called
once per stream. ALSA/ASoC do not have a concept of 'deprepare', and
the mapping from this stream state to ALSA/ASoC operation may be
implementation specific.

When the INFO_PAUSE flag is supported, the stream state is linked to
the .hw_free() operation - the stream is not deprepared on a
TRIGGER_STOP.

Other implementations may transition to the ``SDW_STREAM_DEPREPARED``
state on TRIGGER_STOP, should they require a transition through the
``SDW_STREAM_PREPARED`` state.

.. code-block:: c

Expand Down
4 changes: 2 additions & 2 deletions drivers/base/regmap/regmap-sdw.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@
static int regmap_sdw_write(void *context, unsigned int reg, unsigned int val)
{
struct device *dev = context;
struct sdw_slave *slave = dev_to_sdw_dev(dev);
struct sdw_slave *slave = to_sdw_slave_device(dev);

return sdw_write(slave, reg, val);
}

static int regmap_sdw_read(void *context, unsigned int reg, unsigned int *val)
{
struct device *dev = context;
struct sdw_slave *slave = dev_to_sdw_dev(dev);
struct sdw_slave *slave = to_sdw_slave_device(dev);
int read;

read = sdw_read(slave, reg);
Expand Down
4 changes: 4 additions & 0 deletions drivers/soundwire/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,15 @@ config SOUNDWIRE_CADENCE
config SOUNDWIRE_INTEL
tristate "Intel SoundWire Master driver"
select SOUNDWIRE_CADENCE
select SOUNDWIRE_GENERIC_ALLOCATION
depends on ACPI && SND_SOC
help
SoundWire Intel Master driver.
If you have an Intel platform which has a SoundWire Master then
enable this config option to get the SoundWire support for that
device.

config SOUNDWIRE_GENERIC_ALLOCATION
tristate

endif
6 changes: 5 additions & 1 deletion drivers/soundwire/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,15 @@
#
# Makefile for soundwire core
#
ccflags-y += -DDEBUG

#Bus Objs
soundwire-bus-objs := bus_type.o bus.o slave.o mipi_disco.o stream.o
soundwire-bus-objs := bus_type.o bus.o master.o slave.o mipi_disco.o stream.o
obj-$(CONFIG_SOUNDWIRE) += soundwire-bus.o

soundwire-generic-allocation-objs := generic_bandwidth_allocation.o
obj-$(CONFIG_SOUNDWIRE_GENERIC_ALLOCATION) += soundwire-generic-allocation.o

ifdef CONFIG_DEBUG_FS
soundwire-bus-objs += debugfs.o
endif
Expand Down
Loading