ALSA: hda/tas2781: Use correct endian conversion
authorTakashi Iwai <tiwai@suse.de>
Wed, 14 Aug 2024 10:04:59 +0000 (12:04 +0200)
committerTakashi Iwai <tiwai@suse.de>
Wed, 14 Aug 2024 14:58:26 +0000 (16:58 +0200)
The data conversion is done rather by a wrong function.  We convert to
BE32, not from BE32.  Although the end result must be same, this was
complained by the compiler.

Fix the code again and align with another similar function
tas2563_apply_calib() that does already right.

Fixes: 3beddef84d90 ("ALSA: hda/tas2781: fix wrong calibrated data order")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202408141630.DiDUB8Z4-lkp@intel.com/
Link: https://patch.msgid.link/20240814100500.1944-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/tas2781_hda_i2c.c

index 7dbfc92d9d55c454b4caa586b71a8042bc4bdbf4..89d8235537cd3b01f96a210be2fcc84b07e891ae 100644 (file)
@@ -527,8 +527,8 @@ static void tas2781_apply_calib(struct tasdevice_priv *tas_priv)
 
        for (i = 0; i < tas_priv->ndev; i++) {
                for (j = 0; j < CALIB_MAX; j++) {
-                       data = get_unaligned_be32(
-                               &tas_priv->cali_data.data[offset]);
+                       data = cpu_to_be32(
+                               *(uint32_t *)&tas_priv->cali_data.data[offset]);
                        rc = tasdevice_dev_bulk_write(tas_priv, i,
                                TASDEVICE_REG(0, page_array[j], rgno_array[j]),
                                (unsigned char *)&data, 4);