-
Notifications
You must be signed in to change notification settings - Fork 128
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SoundWire: start adding BPT/BRA support #4679
base: topic/sof-dev
Are you sure you want to change the base?
SoundWire: start adding BPT/BRA support #4679
Commits on Jan 24, 2024
-
Documentation: driver: add SoundWire BRA description
The Bulk Register Access protocol was left as a TODO topic since 2018. It's time to document this protocol and the design of its Linux support. Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 7f11656 - Browse repository at this point
Copy the full SHA 7f11656View commit details -
soundwire: cadence: add BTP support for DP0
The register definitions are missing a BULK_ENABLE bitfield which must be set for DP0. In addition, the existing mapping from PDI to Data Port is 1:1. That's fine for PCM streams which are by construction in one direction only. The BTP/BRA protocol is bidirectional and relies on DP0 only, which breaks the 1:1 mapping. DP0 MUST be mapped to both PDI0 and PDI1, with PDI1 taking care of the TX direction and PDI1 of the RX direction. Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 5d00a54 - Browse repository at this point
Copy the full SHA 5d00a54View commit details -
soundwire: stream: extend sdw_alloc_stream() to take 'type' parameter
In the existing definition of sdw_stream_runtime, the 'type' member is never set and defaults to PCM. To prepare for the BPT/BRA support, we need to special-case streams and make use of the 'type'. No functional change for now, the implicit PCM type is now explicit. Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for d4418b6 - Browse repository at this point
Copy the full SHA d4418b6View commit details -
soundwire: extend sdw_stream_type to BPT
BPT/BRA need to be special cased, i.e. there's no point in using the bandwidth allocation since the entire frame can be used. Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 4db12ce - Browse repository at this point
Copy the full SHA 4db12ceView commit details -
soundwire: stream: special-case the bus compute_params() routine
For BPT support, we want to allocate the entire audio payload and bypass the allocation based on PCM/PDM parameters. Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 9243784 - Browse repository at this point
Copy the full SHA 9243784View commit details -
soundwire: stream: reuse existing code for BPT stream
DP0 (Data Port 0) is very similar to regular data ports, with minor tweaks we can reuse the same code. Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for bdf7ab0 - Browse repository at this point
Copy the full SHA bdf7ab0View commit details -
soundwire: bus: add send_async/wait API for BPT protocol
Add definitions and helpers for the BPT/BRA protocol. Peripheral drivers (aka ASoC codec drivers) can use this API to send bulk data such as firmware or tables. The design intent is however NOT to directly use this API but to rely on an intermediate regmap layer. The API is only available when no other audio streams have been allocated, and only one BTP/BRA stream is allowed per link. To avoid the addition of yet another lock, the refcount tests are handled in the stream master_runtime alloc/free routines where the bus_lock is already held. Another benefit of this approach is that the same bus_lock is used to handle runtime and port linked lists, which reduces the potential for misaligned configurations. In addition to exclusion with audio streams, BPT transfers have a lot of overhead, specifically registers writes are needed to enable transport in DP0. Most DMAs don't handle too well very small data sets and they may have alignment limitations. The size and alignment requirements are for now not handled by the core but must be checked by platform-specific drivers. Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for c010d8a - Browse repository at this point
Copy the full SHA c010d8aView commit details -
soundwire: bus: add bpt_stream pointer
Add a convenience pointer to the 'sdw_bus' structure. BPT is a dedicated stream which will typically not be handled by DAIs or dailinks. Since there's only one BPT stream per link, storing the pointer at the link level seems rather natural. Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for d232a12 - Browse repository at this point
Copy the full SHA d232a12View commit details -
soundwire: cadence: add BTP/BRA helpers to format data
The Cadence IP expects a specific format (detailed in the Documentation). Add helpers to copy the data into the DMA buffer. The crc8 table is for now only used by the Cadence driver. This table might be moved to a common module at a later point if needed by other controller implementations. Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for cb4b02b - Browse repository at this point
Copy the full SHA cb4b02bView commit details -
soundwire: intel_auxdevice: add indirection for BPT send_async/wait
Mirror abstraction added for master ops. Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for f9e8ce4 - Browse repository at this point
Copy the full SHA f9e8ce4View commit details -
ASoC: SOF: Intel: hda-sdw-bpt: add helpers for SoundWire BPT DMA
Add SoundWire BPT DMA helpers as a separate module to avoid circular dependencies. For now this assumes no link DMA, only coupled mode. Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for af779a3 - Browse repository at this point
Copy the full SHA af779a3View commit details -
soundwire: intel: add BPT context definition
This is needed to be shared between open/send_async/close. Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 16d1dbd - Browse repository at this point
Copy the full SHA 16d1dbdView commit details -
soundwire: intel_ace2x: add BPT send_async/wait callbacks
Add support for BTP API using Cadence and hda-sdw-bpt helpers. Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 21b61c2 - Browse repository at this point
Copy the full SHA 21b61c2View commit details -
soundwire: debugfs: add interface for BPT/BRA transfers
Add code to show what codec drivers will need to do to enable BPT/BRA transfers. The only difference is to set the 'command_type' file to '1'. A zero-value will rely on regular read/write commands in Column0. Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 9ab61c9 - Browse repository at this point
Copy the full SHA 9ab61c9View commit details -
ASoC: rt711-sdca: add DP0 support
DP0 is required for BPT/BRA transport. Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for afdfe60 - Browse repository at this point
Copy the full SHA afdfe60View commit details -
ASoC: SOF: Intel: hda-sdw-bpt: add CHAIN_DMA support
When the firmware is involved, the data can be transferred with a CHAIN_DMA on LNL+. The CHAIN_DMA needs to be programmed before the DMAs per the documentation. The states are not exactly symmetrical, on stop we must do a PAUSE and RESET. The FIFO size of 10ms was determined experimentally. With the minimum of 2ms, errors were reported by the codec, likely because of xruns. The code flow deals with the two TX and RX CHAIN_DMAs in symmetrical ways, i.e. alloc TX alloc RX enable TX enable RX disable RX disable TX free RX free TX Signed-off-by: Pierre-Louis Bossart <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 3a9c2b9 - Browse repository at this point
Copy the full SHA 3a9c2b9View commit details