On 11/01/23 18:34, Mark Brown wrote: > On Wed, Jan 11, 2023 at 02:32:11PM +0530, Vijendar Mukunda wrote: > >> +static int acp63_sdw_dma_start(struct snd_pcm_substream *stream) >> +{ >> + struct sdw_stream_instance *sdw_ins; >> + struct snd_soc_pcm_runtime *prtd; >> + u32 stream_id; >> + u32 sdw_dma_reg; >> + u32 sdw_dma_en_stat_reg; >> + u32 sdw_dma_stat; >> + u32 val; >> + int timeout = 0; >> + >> + sdw_ins = stream->runtime->private_data; >> + prtd = stream->private_data; >> + stream_id = sdw_ins->stream_id; >> + switch (stream_id) { >> + case ACP_SDW_AUDIO_TX: >> + sdw_dma_reg = ACP_SW_AUDIO_TX_EN; >> + sdw_dma_en_stat_reg = ACP_SW_AUDIO_TX_EN_STATUS; >> + break; > Not super urgent but if you're respinning then it looks like the > register selection here is the same in _dma_stop() so they could be > shared. Indeed it generally feels like it might be nicer to have a > table of structs listing the registers needed per stream so all these > switch statements can be more like > > sdw_dma_reg = stream_registers[sdw_ins->stream_id]; > > That'd make each function smaller and I'd expect it'd be a bit easier to > add new streams for new hardware that way. will fix it in next version.