The existing code can be both improved and simplified. To make this change easier to manage, first add new implementation and then remove deadcode in a separate patch.
Simplification achieved with:
- reduce the amount of resources requested by the driver i.e.: IPC and CLDMA request_irq() merged into one - reduce the number of DSP ops from 2 to 1: irq_handler/thread() vs dsp_interrupt() - drop ambiguity around CLDMA interrupt, let skl.c handle that explicitly as it is the only user
With that done, switch to the new implementation and remove unused members. While the change is non-trivial, from functional perspective status quo is achieved.
Cezary Rojewski (2): ASoC: Intel: avs: New IRQ handling implementation ASoC: Intel: avs: Remove unused IRQ-related code
sound/soc/intel/avs/apl.c | 20 +++++++- sound/soc/intel/avs/avs.h | 8 ++-- sound/soc/intel/avs/cldma.c | 42 ++++------------- sound/soc/intel/avs/cldma.h | 1 + sound/soc/intel/avs/cnl.c | 91 ++++++++++++++++++++++++------------- sound/soc/intel/avs/core.c | 85 ++++++++++++++++------------------ sound/soc/intel/avs/icl.c | 3 +- sound/soc/intel/avs/ipc.c | 48 ------------------- sound/soc/intel/avs/skl.c | 73 +++++++++++++++++++++-------- sound/soc/intel/avs/tgl.c | 3 +- 10 files changed, 186 insertions(+), 188 deletions(-)