On 21/03/23 10:38, Vijendar Mukunda wrote:
ACP IP(v6.x) block has two SoundWire manager instance support. This patchset adds support for AMD SoundWire manager driver.
@vinod: Should I resend the patch series?
Signed-off-by: Vijendar Mukunda Vijendar.Mukunda@amd.com
changes since v7:
- use readl/writel instead of acp_reg_readl() & acp_reg_writel().
 - drop acp_reg_readl() & acp_reg_writel()
 - use readl_poll_timeout() instead of read_poll_timeout()
 - refactor command prepration and response error handling.
 - Modify switch statement in amd_sdw_fill_slave_status().
 - use lower case for hex values.
 - restrict debug logs to single line.
 changes since v6:
- remove pm suspend check in amd_resume_child_device() and always return 0.
 - use same name convention for command and response variables.
 changes since v5:
- replace loops logic with read_poll_timeout() throughout the code.
 changes since v4:
- fix nit-picks in the code.
 - update naming convention for control word and response buffer vairables.
 - drop pm_suspend check in prepare callback.
 - use return statement instead of returning ret variable.
 changes since v3:
- add usleep_range() in command/response implementation.
 - add usleep_range() in clock stop sequence.
 - modify usleep_range() values throughout the code.
 - remove unncessary debug statement from code.
 - update comment in probe() call.
 - fix timeout condition checks in the code.
 - drop "ret" variable in amd_disable_sdw_manager().
 changes since v2:
- Remove useless variable initializations.
 - Add helper function to interpret peripheral status.
 - Move runtime pm sequence to probe_work workqueue.
 - Use string "SoundWire" instead of "soundwire" in code.
 - Update comments in interrupt handler and probe sequence.
 - Rename "sdw_lock" as "acp_sdw_lock".
 - Remove __func__ from dev_dbg statements.
 changes since v1:
- Drop asoc tree based patches. will send asoc patches as a separate series.
 - Fixed double space errors.
 - Use dev instead of pci->dev.
 - Use SoundWire manager terminology.
 - Remove amd_sdw_compute_slave_ports() function and use exported sdw_compute_slave_ports() function.
 - Remove unused variable "num_ports" from amd_manager structure.
 - Drop startup and shutdown dai callbacks.
 - Drop reset_page_addr callback. - Use relative address offset to program SoundWire manager registers throughout the code.
 - Separate wake enable interrupt handling from slave status handling logic.
 - Use acp_mmio to program ACP common registers.
 - Use dai_runtime_array implementation in dai_ops.
 - Refactor port_ops callbacks.
 - Add comments in port_ops callbacks.
 - Add retry count logic in irq thread to address faulty case.
 - Add helper function to interpret command response.
 - Add generic bandwidth allocation dependency in Kconfig options.
 - Add comments for AMD SoundWire power modes.
 - Add missing timeout check in amd_init_sdw_manager callback.
 - Declare frameshape parameters in probe call.
 - Handle error case in clock stop sequence.
 - Add comments in pm_prepare and pm_ops callbacks.
 Vijendar Mukunda (8): soundwire: export sdw_compute_slave_ports() function soundwire: amd: Add support for AMD Manager driver soundwire: amd: register SoundWire manager dai ops soundwire: amd: enable build for AMD SoundWire manager driver soundwire: amd: add SoundWire manager interrupt handling soundwire: amd: add runtime pm ops for AMD SoundWire manager driver soundwire: amd: handle SoundWire wake enable interrupt soundwire: amd: add pm_prepare callback and pm ops support
drivers/soundwire/Kconfig | 10 + drivers/soundwire/Makefile | 4 + drivers/soundwire/amd_manager.c | 1208 +++++++++++++++++ drivers/soundwire/amd_manager.h | 258 ++++ drivers/soundwire/bus.h | 9 + .../soundwire/generic_bandwidth_allocation.c | 12 +- include/linux/soundwire/sdw_amd.h | 109 ++ 7 files changed, 1601 insertions(+), 9 deletions(-) create mode 100644 drivers/soundwire/amd_manager.c create mode 100644 drivers/soundwire/amd_manager.h create mode 100644 include/linux/soundwire/sdw_amd.h