This is all is due to not saving nr_channels in probe and using that
instead.
Looking deeper, struct pch_dma defines array of length MAX_CHAN_NR for
channels. Then why do you allocate memory in probe as
pd = kzalloc(sizeof(struct pch_dma)+
sizeof(struct pch_dma_chan) * nr_channels, GFP_KERNEL);
what is the point in allocating additional memory for each channel?
Given this, why should there be predefined channel array in pcm_dma?
It would be great if we could fix this by dynamically allocating memory
for channels based on nr_channels and not wasting due to a static array.