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