* [PATCH] ALSA: hda/realtek: tas2781: Fix ROG ALLY X audio
@ 2024-08-12 4:53 Jonathan LoBue
2024-08-12 7:26 ` Takashi Iwai
0 siblings, 1 reply; 6+ messages in thread
From: Jonathan LoBue @ 2024-08-12 4:53 UTC (permalink / raw)
To: perex, tiwai
Cc: shenghao-ding, kailang, alsa-devel, linux-sound, linux-kernel,
derekjohn.clark, luke, benato.denis96, Jonathan LoBue,
Kyle Gospodnetich, Jan Drogehoff, Antheas Kapenekakis,
Richard Alvarez, Miles Montierth
This patch enables the TI TAS2781 amplifier SoC for the ASUS ROG ALLY X.
This is a design change from the original ASUS ROG ALLY, creating the need
for this patch. All other Realtek Codec settings seem to be re-used from
the original ROG ALLY design (on the ROG ALLY X). This patch maintains the
previous settings for the Realtek codec portion, but enables the I2C
binding for the TI TAS2781 amplifier (instead of the Cirrus CS35L41 amp
used on the original ASUS ROG ALLY).
One other requirement must be met for audio to work on the ASUS ROG ALLY X.
A proper firmware file in the correct location with a proper symlink. We
had reached out to TI engineers and confirmed that the firmware found in
the Windows' driver package has a GPL license. Bazzite Github is hosting
this firmware file for now until proper linux-firmware upstreaming can
occur. https://github.com/ublue-os/bazzite
This firmware file should be placed in
/usr/lib/firmware/ti/tas2781/TAS2XXX1EB3.bin with a symlink to it from
/usr/lib/firmware/TAS2XXX1EB3.bin
Co-developed by: Kyle Gospodnetich <me@kylegospodneti.ch>
Signed-off-by: Kyle Gospodnetich <me@kylegospodneti.ch>
Co-developed by: Jan Drogehoff <sentrycraft123@gmail.com>
Signed-off-by: Jan Drogehoff <sentrycraft123@gmail.com>
Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
Tested-by: Richard Alvarez <alvarez.richard@gmail.com>
Tested-by: Miles Montierth <cyber_dopamine@intheblackmedia.com>
Signed-off-by: Jonathan LoBue <jlobue10@gmail.com>
---
sound/pci/hda/patch_realtek.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 480e82df7a4c..9bc39c2ee6b9 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -7410,6 +7410,7 @@ enum {
ALC285_FIXUP_THINKPAD_X1_GEN7,
ALC285_FIXUP_THINKPAD_HEADSET_JACK,
ALC294_FIXUP_ASUS_ALLY,
+ ALC294_FIXUP_ASUS_ALLY_X,
ALC294_FIXUP_ASUS_ALLY_PINS,
ALC294_FIXUP_ASUS_ALLY_VERBS,
ALC294_FIXUP_ASUS_ALLY_SPEAKER,
@@ -8877,6 +8878,12 @@ static const struct hda_fixup alc269_fixups[] = {
.chained = true,
.chain_id = ALC294_FIXUP_ASUS_ALLY_PINS
},
+ [ALC294_FIXUP_ASUS_ALLY_X] = {
+ .type = HDA_FIXUP_FUNC,
+ .v.func = tas2781_fixup_i2c,
+ .chained = true,
+ .chain_id = ALC294_FIXUP_ASUS_ALLY_PINS
+ },
[ALC294_FIXUP_ASUS_ALLY_PINS] = {
.type = HDA_FIXUP_PINS,
.v.pins = (const struct hda_pintbl[]) {
@@ -10313,6 +10320,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x1043, 0x1740, "ASUS UX430UA", ALC295_FIXUP_ASUS_DACS),
SND_PCI_QUIRK(0x1043, 0x17d1, "ASUS UX431FL", ALC294_FIXUP_ASUS_DUAL_SPK),
SND_PCI_QUIRK(0x1043, 0x17f3, "ROG Ally NR2301L/X", ALC294_FIXUP_ASUS_ALLY),
+ SND_PCI_QUIRK(0x1043, 0x1eb3, "ROG Ally X RC72LA", ALC294_FIXUP_ASUS_ALLY_X),
SND_PCI_QUIRK(0x1043, 0x1863, "ASUS UX6404VI/VV", ALC245_FIXUP_CS35L41_SPI_2),
SND_PCI_QUIRK(0x1043, 0x1881, "ASUS Zephyrus S/M", ALC294_FIXUP_ASUS_GX502_PINS),
SND_PCI_QUIRK(0x1043, 0x18b1, "Asus MJ401TA", ALC256_FIXUP_ASUS_HEADSET_MIC),
--
2.46.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] ALSA: hda/realtek: tas2781: Fix ROG ALLY X audio
2024-08-12 4:53 [PATCH] ALSA: hda/realtek: tas2781: Fix ROG ALLY X audio Jonathan LoBue
@ 2024-08-12 7:26 ` Takashi Iwai
2024-08-12 7:45 ` Antheas Kapenekakis
0 siblings, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2024-08-12 7:26 UTC (permalink / raw)
To: Jonathan LoBue
Cc: perex, tiwai, shenghao-ding, kailang, alsa-devel, linux-sound,
linux-kernel, derekjohn.clark, luke, benato.denis96,
Kyle Gospodnetich, Jan Drogehoff, Antheas Kapenekakis,
Richard Alvarez, Miles Montierth
On Mon, 12 Aug 2024 06:53:25 +0200,
Jonathan LoBue wrote:
>
> This patch enables the TI TAS2781 amplifier SoC for the ASUS ROG ALLY X.
> This is a design change from the original ASUS ROG ALLY, creating the need
> for this patch. All other Realtek Codec settings seem to be re-used from
> the original ROG ALLY design (on the ROG ALLY X). This patch maintains the
> previous settings for the Realtek codec portion, but enables the I2C
> binding for the TI TAS2781 amplifier (instead of the Cirrus CS35L41 amp
> used on the original ASUS ROG ALLY).
>
> One other requirement must be met for audio to work on the ASUS ROG ALLY X.
> A proper firmware file in the correct location with a proper symlink. We
> had reached out to TI engineers and confirmed that the firmware found in
> the Windows' driver package has a GPL license. Bazzite Github is hosting
> this firmware file for now until proper linux-firmware upstreaming can
> occur. https://github.com/ublue-os/bazzite
>
> This firmware file should be placed in
> /usr/lib/firmware/ti/tas2781/TAS2XXX1EB3.bin with a symlink to it from
> /usr/lib/firmware/TAS2XXX1EB3.bin
>
> Co-developed by: Kyle Gospodnetich <me@kylegospodneti.ch>
> Signed-off-by: Kyle Gospodnetich <me@kylegospodneti.ch>
> Co-developed by: Jan Drogehoff <sentrycraft123@gmail.com>
> Signed-off-by: Jan Drogehoff <sentrycraft123@gmail.com>
> Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
> Tested-by: Richard Alvarez <alvarez.richard@gmail.com>
> Tested-by: Miles Montierth <cyber_dopamine@intheblackmedia.com>
> Signed-off-by: Jonathan LoBue <jlobue10@gmail.com>
Applied to for-next branch.
Meanwhile, could you ask TI guys to include the missing firmware files
in linux-firmware git tree, too?
thanks,
Takashi
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] ALSA: hda/realtek: tas2781: Fix ROG ALLY X audio
2024-08-12 7:26 ` Takashi Iwai
@ 2024-08-12 7:45 ` Antheas Kapenekakis
2024-08-12 11:27 ` Takashi Iwai
0 siblings, 1 reply; 6+ messages in thread
From: Antheas Kapenekakis @ 2024-08-12 7:45 UTC (permalink / raw)
To: Takashi Iwai
Cc: Jonathan LoBue, perex, tiwai, shenghao-ding, kailang, alsa-devel,
linux-sound, linux-kernel, derekjohn.clark, luke, benato.denis96,
Kyle Gospodnetich, Jan Drogehoff, Richard Alvarez,
Miles Montierth, Chen, Robin
Hi,
I have spoken with Shenghao and Robin Chen (who I CC) from Texas Instruments.
There is no such thing as TAS2XXX1EB3. For Ally X, there are two firmware files:
TAS2XXX1EB30 and TAS2XXX1EB31. Both are licensed with GPL
according to Shenghao.
Since the linux driver has no concept of the 0 and 1 suffix, I propose
we symlink the
0 one to TAS2XXX1EB3. If required, the driver can be augmented in the future
to either choose the 0 or 1 file.
According to Robin Chen about the difference with the files:
> They are IO, I/F settings, audio tuning and speaker protection. In current cause, you can ignore them.
The only source we know of right now is the Windows executable.
I would be happy to upload those files in linux-firmware later this week.
We validated that this patch meets all basic functionality, including no pops
during sleep and mic operation.
Some users reported lower volume than windows, but perhaps that is due to
Dolby integration in windows, or using the 0 firmware file instead of 1 and
in any case a minor issue.
Best,
Antheas
On Mon, 12 Aug 2024 at 10:26, Takashi Iwai <tiwai@suse.de> wrote:
>
> On Mon, 12 Aug 2024 06:53:25 +0200,
> Jonathan LoBue wrote:
> >
> > This patch enables the TI TAS2781 amplifier SoC for the ASUS ROG ALLY X.
> > This is a design change from the original ASUS ROG ALLY, creating the need
> > for this patch. All other Realtek Codec settings seem to be re-used from
> > the original ROG ALLY design (on the ROG ALLY X). This patch maintains the
> > previous settings for the Realtek codec portion, but enables the I2C
> > binding for the TI TAS2781 amplifier (instead of the Cirrus CS35L41 amp
> > used on the original ASUS ROG ALLY).
> >
> > One other requirement must be met for audio to work on the ASUS ROG ALLY X.
> > A proper firmware file in the correct location with a proper symlink. We
> > had reached out to TI engineers and confirmed that the firmware found in
> > the Windows' driver package has a GPL license. Bazzite Github is hosting
> > this firmware file for now until proper linux-firmware upstreaming can
> > occur. https://github.com/ublue-os/bazzite
> >
> > This firmware file should be placed in
> > /usr/lib/firmware/ti/tas2781/TAS2XXX1EB3.bin with a symlink to it from
> > /usr/lib/firmware/TAS2XXX1EB3.bin
> >
> > Co-developed by: Kyle Gospodnetich <me@kylegospodneti.ch>
> > Signed-off-by: Kyle Gospodnetich <me@kylegospodneti.ch>
> > Co-developed by: Jan Drogehoff <sentrycraft123@gmail.com>
> > Signed-off-by: Jan Drogehoff <sentrycraft123@gmail.com>
> > Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
> > Tested-by: Richard Alvarez <alvarez.richard@gmail.com>
> > Tested-by: Miles Montierth <cyber_dopamine@intheblackmedia.com>
> > Signed-off-by: Jonathan LoBue <jlobue10@gmail.com>
>
> Applied to for-next branch.
>
> Meanwhile, could you ask TI guys to include the missing firmware files
> in linux-firmware git tree, too?
>
>
> thanks,
>
> Takashi
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] ALSA: hda/realtek: tas2781: Fix ROG ALLY X audio
2024-08-12 7:45 ` Antheas Kapenekakis
@ 2024-08-12 11:27 ` Takashi Iwai
2024-08-15 12:58 ` Antheas Kapenekakis
0 siblings, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2024-08-12 11:27 UTC (permalink / raw)
To: Antheas Kapenekakis
Cc: Jonathan LoBue, perex, tiwai, shenghao-ding, kailang, alsa-devel,
linux-sound, linux-kernel, derekjohn.clark, luke, benato.denis96,
Kyle Gospodnetich, Jan Drogehoff, Richard Alvarez,
Miles Montierth, Chen, Robin
On Mon, 12 Aug 2024 09:45:59 +0200,
Antheas Kapenekakis wrote:
>
> Hi,
> I have spoken with Shenghao and Robin Chen (who I CC) from Texas Instruments.
>
> There is no such thing as TAS2XXX1EB3. For Ally X, there are two firmware files:
> TAS2XXX1EB30 and TAS2XXX1EB31. Both are licensed with GPL
> according to Shenghao.
>
> Since the linux driver has no concept of the 0 and 1 suffix, I propose
> we symlink the
> 0 one to TAS2XXX1EB3. If required, the driver can be augmented in the future
> to either choose the 0 or 1 file.
Yes, symlinking in linux-firmware tree makes sense.
It's just a matter of a line in WHENCE file, after all.
Takashi
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] ALSA: hda/realtek: tas2781: Fix ROG ALLY X audio
2024-08-12 11:27 ` Takashi Iwai
@ 2024-08-15 12:58 ` Antheas Kapenekakis
2024-10-11 5:20 ` Philip Müller
0 siblings, 1 reply; 6+ messages in thread
From: Antheas Kapenekakis @ 2024-08-15 12:58 UTC (permalink / raw)
To: Takashi Iwai
Cc: Jonathan LoBue, perex, tiwai, shenghao-ding, kailang, alsa-devel,
linux-sound, linux-kernel, derekjohn.clark, luke, benato.denis96,
Kyle Gospodnetich, Jan Drogehoff, Richard Alvarez,
Miles Montierth, Chen, Robin
Hi everyone,
I created the following Draft MR for the Ally firmware files:
https://gitlab.com/kernel-firmware/linux-firmware/-/merge_requests/272
Please comment on it at your leisure. I will remove the Draft status once
all the sign-off members verify it for correctness.
@Shenghao: can you restate publicly the license of the firmware files and if
there are no issues, sign-off on the MR?
Best,
Antheas
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] ALSA: hda/realtek: tas2781: Fix ROG ALLY X audio
2024-08-15 12:58 ` Antheas Kapenekakis
@ 2024-10-11 5:20 ` Philip Müller
0 siblings, 0 replies; 6+ messages in thread
From: Philip Müller @ 2024-10-11 5:20 UTC (permalink / raw)
To: Takashi Iwai
Cc: Jonathan LoBue, perex, tiwai, shenghao-ding, kailang, alsa-devel,
linux-sound, linux-kernel, derekjohn.clark, luke, benato.denis96,
Kyle Gospodnetich, Jan Drogehoff, Richard Alvarez,
Miles Montierth, Chen, Robin, Antheas Kapenekakis, Xu, Baojun,
Mario Limonciello
On 15/8/24 19:58, Antheas Kapenekakis wrote:
> Hi everyone,
> I created the following Draft MR for the Ally firmware files:
> https://gitlab.com/kernel-firmware/linux-firmware/-/merge_requests/272
>
> Please comment on it at your leisure. I will remove the Draft status once
> all the sign-off members verify it for correctness.
>
> @Shenghao: can you restate publicly the license of the firmware files and if
> there are no issues, sign-off on the MR?
>
> Best,
> Antheas
The firmware is now finally merged upstream:
https://gitlab.com/kernel-firmware/linux-firmware/-/merge_requests/317/diffs
For now a symlink was added to make the current driver implementation by
Jonathan work:
https://gitlab.com/kernel-firmware/linux-firmware/-/merge_requests/318/diffs
Jim and Robin from TI will adjust the tas2781_hda_i2c driver to load the
correct firmware per speaker vendor so the different optimized
protection parameters are given.
For example the following can be used to readout the GUID for
calibration data in UEFI BIOS:
status = efi.get_variable(efi_name, &efi_guid, &attr, &total_sz, data);
Example source:
find /sys/firmware/efi/efivars/ -name *-1f52* -print -exec hexdump -C {} \;
/sys/firmware/efi/efivars/CALI_DATA-1f52d2a1-bb3a-457d-bc09-43a3f4310a92
00000000 07 00 00 00 dd f5 15 41 4d ab bb 0f f4 11 bd 31
|.......AM......1|
00000010 bf 5e 97 00 00 00 00 24 2f 8d 10 3e 77 b9 7f 10
|.^.....$/..>w...|
00000020 f3 07 6e 2f b3 d0 93 00 00 00 00 24 00 00 00 00
|..n/.......$....|
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|................|
*
00000050 00 00 00 00 f2 e1 73 66 8e 08 d9 2b 00 00 00 01
|......sf...+....|
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|................|
*
00000080 00 00 00 00 |....|
00000084
--
Best, Philip
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-10-11 5:20 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-12 4:53 [PATCH] ALSA: hda/realtek: tas2781: Fix ROG ALLY X audio Jonathan LoBue
2024-08-12 7:26 ` Takashi Iwai
2024-08-12 7:45 ` Antheas Kapenekakis
2024-08-12 11:27 ` Takashi Iwai
2024-08-15 12:58 ` Antheas Kapenekakis
2024-10-11 5:20 ` Philip Müller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox