42 lines
1.5 KiB
Diff
42 lines
1.5 KiB
Diff
From 8622915ef6b2bdd5779ebe986d9ad1a360246377 Mon Sep 17 00:00:00 2001
|
|
From: Gergo Koteles <soyer@irl.hu>
|
|
Date: Fri, 29 Aug 2025 18:04:49 +0200
|
|
Subject: ALSA: hda: tas2781: fix tas2563 EFI data endianness
|
|
|
|
Before conversion to unify the calibration data management, the
|
|
tas2563_apply_calib() function performed the big endian conversion and
|
|
wrote the calibration data to the device. The writing is now done by the
|
|
common tasdev_load_calibrated_data() function, but without conversion.
|
|
|
|
Put the values into the calibration data buffer with the expected
|
|
endianness.
|
|
|
|
Fixes: 4fe238513407 ("ALSA: hda/tas2781: Move and unified the calibrated-data getting function for SPI and I2C into the tas2781_hda lib")
|
|
Cc: <stable@vger.kernel.org>
|
|
Signed-off-by: Gergo Koteles <soyer@irl.hu>
|
|
Link: https://patch.msgid.link/20250829160450.66623-1-soyer@irl.hu
|
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
---
|
|
sound/pci/hda/tas2781_hda_i2c.c | 3 +++
|
|
1 file changed, 3 insertions(+)
|
|
|
|
--- a/sound/pci/hda/tas2781_hda_i2c.c
|
|
+++ b/sound/pci/hda/tas2781_hda_i2c.c
|
|
@@ -292,6 +292,7 @@ static int tas2563_save_calibration(stru
|
|
struct cali_reg *r = &cd->cali_reg_array;
|
|
unsigned int offset = 0;
|
|
unsigned char *data;
|
|
+ __be32 bedata;
|
|
efi_status_t status;
|
|
unsigned int attr;
|
|
int ret, i, j, k;
|
|
@@ -333,6 +334,8 @@ static int tas2563_save_calibration(stru
|
|
i, j, status);
|
|
return -EINVAL;
|
|
}
|
|
+ bedata = cpu_to_be32(*(uint32_t *)&data[offset]);
|
|
+ memcpy(&data[offset], &bedata, sizeof(bedata));
|
|
offset += TAS2563_CAL_DATA_SIZE;
|
|
}
|
|
}
|