On 24/03/23 17:50, Mukunda,Vijendar wrote:
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?
Hi Vinod,
We have to push ASoC patch series for upstream review, which is dependent on soundwire patch series.
Could you please look in to current patch series and provide your feedback?
-Thanks, Vijendar
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