]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
ASoC: ti: davinci-mcasp: Fix slot mask settings when using multiple AXRs
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Thu, 20 Jun 2019 09:20:02 +0000 (12:20 +0300)
committerKhalid Elmously <khalid.elmously@canonical.com>
Fri, 14 Feb 2020 05:29:37 +0000 (00:29 -0500)
BugLink: https://bugs.launchpad.net/bugs/1863019
[ Upstream commit fd14f4436fd47d5418023c90e933e66d3645552e ]

If multiple serializers are connected in the system and the number of
channels will need to use more than one serializer the mask to enable the
serializers were left to 0 if tdm_mask is provided

Fixes: dd55ff8346a97 ("ASoC: davinci-mcasp: Add set_tdm_slots() support")
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
sound/soc/davinci/davinci-mcasp.c

index 07bac9ea65c41a3e003711a21c28aa8ff7bc014d..e10e03800cce52d76ca7c6f6ca4b83e73835b2f1 100644 (file)
@@ -882,14 +882,13 @@ static int mcasp_i2s_hw_param(struct davinci_mcasp *mcasp, int stream,
                active_slots = hweight32(mcasp->tdm_mask[stream]);
                active_serializers = (channels + active_slots - 1) /
                        active_slots;
-               if (active_serializers == 1) {
+               if (active_serializers == 1)
                        active_slots = channels;
-                       for (i = 0; i < total_slots; i++) {
-                               if ((1 << i) & mcasp->tdm_mask[stream]) {
-                                       mask |= (1 << i);
-                                       if (--active_slots <= 0)
-                                               break;
-                               }
+               for (i = 0; i < total_slots; i++) {
+                       if ((1 << i) & mcasp->tdm_mask[stream]) {
+                               mask |= (1 << i);
+                               if (--active_slots <= 0)
+                                       break;
                        }
                }
        } else {