TAS2770EVM-STEREO: TAS2770

Part Number: TAS2770EVM-STEREO
Other Parts Discussed in Thread: TAS2770, TAS2781, TAS2563,

Tool/software:

The datasheet www.ti.com/.../tas2770.pdf for the TAS2770 amplifier includes
a hint on how to use it to design a stereo version or even a multi-channel version described in www.ti.com/.../slou497.pdf .
There is also an evaluation board www.ti.com/.../TAS2770EVM-STEREO, which, together with PPC3,
constitutes a very good tool for starting and checking amplifiers based on the TAS2770.
Since a Linux driver is available, such an amplifier has been implemented.
The amplifier is to use the ComExpress bus signals existing on the Intel Ekhart Lake platform
(EHL9A21 to be precise) working with the Debian system.
I have no experience writing drivers, but I read the available information
and managed to compile and load the snd_soc_tas2770 module.
The amplifier is recognized and controlled by I2C via addresses 0x41 and 0x42.
However, it is not recognized by the ”aplay -l” command.
Actually. I have a VERY SPECIFIC question and would appreciate a specific answer
“I need specific installation instructions, which include all required configuration parameters to install the module snd_soc_tas2770 correctly, so it will be recognized in the system when using the aplay-I command.

There is also a problem that the driver is only for the mono version, but we will deal with problem that later.

Henryk

  • Let me know the kernel version?

    Kindly use this driver lpaa-android-drivers/tasdevice-linux-driver - Unnamed repository; edit this file 'description' to name the repository.

    the guideline has been in the branch, kindly read it carefully. If you have any questions, kindly raise then via e2e. 

  • The kernel version is- 6.1.0-33-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.133-1 (2025-04-10) x86_64 GNU/Linux

    The guideline is mainly for BBB platform, The true platform is ELKHART LAKE-atom-x642SE. 

    The snd_soc_tas2770 module was compiled but probably not registered.

     Attempts to compile lpaa-android-drivers/tasdevice-linux-driver failed.

    Henryk

  • Pls share the compile log or the how do you register the sound card?

  • I am trying to summarize my information regarding an attempt of correct implementatocodec was implemented according to instructions per:  https://www.ti.com/lit/ds/symlink/tas2770.pdf

    1. The operation of the implemented codec was checked using PPC3.
    2. Attempts to compile the driver based on https://git.ti.com/cgit/tas2770sw-android/tas2770sw-android/tree/ were unsuccessful. I do not currently program much in Linux, but I have no problem understanding the instructions (I used Unix before). The help I received regarding problems encountered in compilation was not very useful.
    3. I use the Ekhart Lake platform on which the Linux Debian ver.12 system is installed. It was checked that the kernel can compile the snd_soc_tas2770 module. Such a module was correctly compiled and installed without comments. Unfortunately, the device is not seen by the aplay -l command. There is a suspicion that the device has not been registered. It was not attempted to be registered because there are no instructions on what the registration parameters should be.
    4. An attempt to compile driver from the repository https://git.ti.com/cgit/lpaa-android-drivers/tasdevice-linux-driver/tree/ failed. Details in Item 6 below.
    5. The following steps were taken to build driver as module:
      a) the suggested repository https://git.ti.com/cgit/lpaa-android-drivers/tasdevice-linux-driver/tree/ was cloned
      b) the following build.sh script file was added:

                       #!/bin/sh

                       make -C /lib/modules/$(uname -r)/build M=$(pwd)/src KCONFIG_CONFIG=src/config modules
                c) added src/config containing: CONFIG_SND_SOC_TASDEVICE=m
                d) executed script build.sh

                        root@deviant:~/tasdevice-linux-driver# ./build.sh
                e) the following messages were produced after executing the above command:

     

                       make: Entering directory '/usr/src/linux-headers-6.1.0-33-amd64'

                       MODPOST /root/tasdevice-linux-driver/src/Module.symvers

                      make: Leaving directory '/usr/src/linux-headers-6.1.0-33-amd64'

     

    So, the question is: What needs to be verified to find the cause of the compilation failure?

     Henryk

  • Hi Henryk

    • I wonder what kind of sound architecture in your system (Ekhart Lake platform).

    As you know, there're two sound architecture in Linux system. One is HDA arch(hda « pci « sound - kernel/git/torvalds/linux.git - Linux kernel source tree), the other is sound-soc arch(codecs « soc « sound - kernel/git/torvalds/linux.git - Linux kernel source tree).

    HDA arch is used in PC device or laptop.

    sound-soc arch is widely use in mobile device, IOT.

    • How do you define the hardware in your system? ACPI or DTS. ACPI mainly used in x86, e,g. PC use ACPI to define all its hardware component; DTS mainly used in arm-cpu device, most mobile device use this.
    • Also, share your schematics, I wonder what the connection between tas2770 and Ekhart Lake platform.
  • As I have already informed, the stereo amplifier was made exactly according to the recommendation

    https://www.ti.com/lit/ds/symlink/tas2770.pdf

    and has a connector identical to the INPUT HEADER as shown in

    https://www.ti.com/lit/ug/slou497/slou497.pdf,

    which can be directly connected to the OUTPUT HEADER, and the amplifier can be tested using PPC3.

    A similar connector is built into the EKHART LAKE platform and appropriately connected to

    the COMExpress bus (ver.10) used by the platform.

    The TAS2770 amplifier is connected to the platform using flat cables.

    The TAS2770 amplifier was chosen because it can be used as a codec to work with the HDA bus

    which is on the COMExpress bus as below.

     It is possible to use several codecs

     The platform provider suggests a link to a similar codec

    https://github.com/torvalds/linux/blob/master/sound/pci/hda/tas2781_hda_i2c.c

     

    The platform sees such i2c ports

     

    The TAS2770 stereo amplifier is seen on i2c addresses 41 and 42.

    51 and 52 are other sensors.

      

    Example reading of amplifier registers with address 41

      

    Linux shows such devices for aplay –l command:

     

    Is there any other info you need?

    What do you think could fix the problem?

    Henryk

  • Hi Guy

    Your system is the HDA architecture, First, you must ask platform vendor how to add tas2770 into UEFI or BIOS.

    The attachment is the UEFI setting for tas2781. hope it is useful for you.

    After that you can set the tas2781_hda_i2c.c as the sample code for tas2770.

    The tas2770 driver from git.ti.com can't work on your platform, it is not for HDA architecture.

                Scope (PC00.I2C2)
                {
                    Device (SPKR)
                    {
                        Name (_HID, "TXNW2781")  // _HID: Hardware ID
                        Name (_UID, Zero)  // _UID: Unique ID
                        Name (_SUB, "17AA3886")  // _SSID: Sub System ID
                        Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                        {
                            Name (RBUF, ResourceTemplate ()
                            {
                                I2cSerialBusV2 (0x0038, ControllerInitiated, 1000000,
                                    AddressingMode7Bit, "\\_SB.PC00.I2C2",
                                    0x00, ResourceConsumer, , Exclusive,
                                    )
                                I2cSerialBusV2 (0x003F, ControllerInitiated, 1000000,
                                    AddressingMode7Bit, "\\_SB.PC00.I2C2",
                                    0x00, ResourceConsumer, , Exclusive,
                                    )
                                GpioInt (Edge, ActiveLow, SharedAndWake, PullNone, 0x0000,
                                    "\\_SB.GPI0", 0x00, ResourceConsumer, ,
                                    )
                                    {   // Pin list
                                        0x0000
                                    }
                            })
                            CreateWordField (RBUF, 0x59, IN1N)
                            IN1N = GNUM (0x0805000B)
                            Return (RBUF) /* \_SB_.PC00.I2C2.SPKR._CRS.RBUF */
                        }
    
                        Method (_STA, 0, NotSerialized)  // _STA: Status
                        {
                            If ((MCSK == 0x02))
                            {
                                Return (0x0F)
                            }
    
                            Return (Zero)
                        }
    
                        Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
                        {
                        }
                    }
                }
    

  • We want to build tas2770 driver as linux module.

     

    We cloned git repository:

     

    git clone https://git.ti.com/cgit/lpaa-android-drivers/tasdevice-linux-driver/tree/

     

    We added config file src/config:

     

    CONFIG_SND_SOC_TASDEVICE=m

     

    We tried to build module:

     

    make -C /lib/modules/$(uname -r)/build M=$(pwd)/src KCONFIG_CONFIG=src/config modules

     

    This is command result:

     

    make: Entering directory '/usr/src/linux-headers-6.1.0-33-amd64'

    MODPOST /root/tasdevice-linux-driver/src/Module.symvers

    make: Leaving directory '/usr/src/linux-headers-6.1.0-33-amd64'

     

    How to configure the repository in order to be able to build linux module?

     Henryk

  • This driver(https://git.ti.com/cgit/lpaa-android-drivers/tasdevice-linux-driver/tree/) do not support HDA architecute, you can reuse this code linux/sound/pci/hda/tas2781_hda_i2c.c at master · torvalds/linux · GitHub for tas2770, but you will have some rework. 

    Before rework, pls register tas2770 into your system with UEFI or BIOS.

  • After all our previous exchanges on the TI forum, I cannot escape the impression that TI is reluctant to support the use of TI’s products.

    During the execution of our project, a need arose to increase the audio output power in a design based on a typical PC.

    The TAS2770 element seemed the most suitable because the datasheet contained full instructions for the design of the system.

    There is also a very well-described development board with a tool for starting PPC3.

    And finally, the existence of a Linux system driver and required support for use were declared as well.

    While the amplifier made according to the instructions works perfectly using PPC3, the declared support is illusory.

    So far, I have not received specific answers related to my questions, but these were rather comments that I perceived, unfortunately, as an attempt to discourage the use of the TAS2770 system.

    Is TI really not interested in using the TAS2770 in devices using the Linux system and the HDA standard?

    I admit, I have no experience in writing drivers, but everything can be learned as needed.

    it was written in the headers of the earlier programs that they support the ALSA system; the kernel compiler found a driver (module) for TAS2770 and created the module, which loaded correctly.

    However, the problem was that the system did not see the TAS2770 device.  Then I received information that a new repository should be used.

    When I reported difficulties with using this repository, I received the response that the driver in this repository does not support HDA.

    I want to state and confirm again that the TAS2770 element was chosen because it can support HDA. Isn't that true?

    Henryk

  • Hi Henryk

    In the Linux mainline, tas2781_hda_i2c.c « hda « pci « sound - kernel/git/torvalds/linux.git - Linux kernel source tree is a good example HDA driver code for you to develop the similar code for TAS2770.

    If it is not easy for you to develop a specific HDA driver for tas2770, you can reuse tas2781_hda_i2c.c driver to support TAS2770. So far, tas2781_hda_i2c.c support both tas2781 and tas2563, let alone TAS2770.

    One more thing, after almost one month, have you reworked the BIOS or UEFI in your system for the TAS2770? 

    Let me know new issue you have met after your reworking.

    BR

  • The stereo amplifier which uses  TAS2770 is not my invention but is implemented according to the TI datasheet recommendations, and even Gerbers for making PCB are available there .

    There is a very well documented development board TAS2770EVM-Stereo and an equally well documented tool for starting PPC3.

    The declared availability of the driver for Linux, (for the preparation of which I estimated the time needed for about half a year to one year), was also an incentive to use TAS2770.

    When I first tried to use the driver, I noticed that it is only for the mono version but TAS2770 can be used to implement up to eight audio channels and TAS2770EVM-Stereo enables this.

    The proposed driver should also enable this, but in the current situation I expect the driver to work at least in the existing mono version, leaving the completion of the operation in the remaining channels at a later date.

    I do not consider it advisable to design a driver for TAS2770 from scratch since someone has already done it since it would be creating a competitive program and that is not my goal.

    I would only like to correct the procedures related to the hardware platform used.

    However, I am NOT able to implement successful operation of your driver in my HW configuration and SW environment

    I am waiting for suggestions on what to check and how to check.

    Henryk

  • The tas2781 HDA driver can support multiple pieces of devices, one, two, even four.

    Have you got DFI's support? As you know, if you can't add any information of TAS2770 into ACPI, driver can't be loaded in your system. 

    One more thing, pls confirm for the customer about the Realtek codec ID.

     

    patch_realtek.c « hda « pci « sound - kernel/git/stable/linux.git - Linux kernel stable tree <https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/sound/pci/hda/patch_realtek.c?h=v6.1.142>

     

    In this code, it lists all the supported Realtek codec ID. I wonder whether their realtek codec is in the list?

     

    /*

     

    * patch entries

     

    */

     

    static const struct hda_device_id snd_hda_id_realtek[] = {

     

            HDA_CODEC_ENTRY(0x10ec0215, "ALC215", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0221, "ALC221", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0222, "ALC222", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0225, "ALC225", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0230, "ALC236", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0231, "ALC231", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0233, "ALC233", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0234, "ALC234", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0235, "ALC233", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0236, "ALC236", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0245, "ALC245", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0255, "ALC255", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0256, "ALC256", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0257, "ALC257", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0260, "ALC260", patch_alc260),

     

            HDA_CODEC_ENTRY(0x10ec0262, "ALC262", patch_alc262),

     

            HDA_CODEC_ENTRY(0x10ec0267, "ALC267", patch_alc268),

     

            HDA_CODEC_ENTRY(0x10ec0268, "ALC268", patch_alc268),

     

            HDA_CODEC_ENTRY(0x10ec0269, "ALC269", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0270, "ALC270", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0272, "ALC272", patch_alc662),

     

            HDA_CODEC_ENTRY(0x10ec0274, "ALC274", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0275, "ALC275", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0276, "ALC276", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0280, "ALC280", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0282, "ALC282", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0283, "ALC283", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0284, "ALC284", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0285, "ALC285", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0286, "ALC286", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0287, "ALC287", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0288, "ALC288", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0289, "ALC289", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0290, "ALC290", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0292, "ALC292", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0293, "ALC293", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0294, "ALC294", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0295, "ALC295", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0298, "ALC298", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0299, "ALC299", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0300, "ALC300", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0623, "ALC623", patch_alc269),

     

            HDA_CODEC_REV_ENTRY(0x10ec0861, 0x100340, "ALC660", patch_alc861),

     

            HDA_CODEC_ENTRY(0x10ec0660, "ALC660-VD", patch_alc861vd),

     

            HDA_CODEC_ENTRY(0x10ec0861, "ALC861", patch_alc861),

     

            HDA_CODEC_ENTRY(0x10ec0862, "ALC861-VD", patch_alc861vd),

     

            HDA_CODEC_REV_ENTRY(0x10ec0662, 0x100002, "ALC662 rev2", patch_alc882),

     

            HDA_CODEC_REV_ENTRY(0x10ec0662, 0x100101, "ALC662 rev1", patch_alc662),

     

            HDA_CODEC_REV_ENTRY(0x10ec0662, 0x100300, "ALC662 rev3", patch_alc662),

     

            HDA_CODEC_ENTRY(0x10ec0663, "ALC663", patch_alc662),

     

            HDA_CODEC_ENTRY(0x10ec0665, "ALC665", patch_alc662),

     

            HDA_CODEC_ENTRY(0x10ec0667, "ALC667", patch_alc662),

     

            HDA_CODEC_ENTRY(0x10ec0668, "ALC668", patch_alc662),

     

            HDA_CODEC_ENTRY(0x10ec0670, "ALC670", patch_alc662),

     

            HDA_CODEC_ENTRY(0x10ec0671, "ALC671", patch_alc662),

     

            HDA_CODEC_ENTRY(0x10ec0680, "ALC680", patch_alc680),

     

            HDA_CODEC_ENTRY(0x10ec0700, "ALC700", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0701, "ALC701", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0703, "ALC703", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0711, "ALC711", patch_alc269),

     

            HDA_CODEC_ENTRY(0x10ec0867, "ALC891", patch_alc662),

     

            HDA_CODEC_ENTRY(0x10ec0880, "ALC880", patch_alc880),

     

            HDA_CODEC_ENTRY(0x10ec0882, "ALC882", patch_alc882),

     

            HDA_CODEC_ENTRY(0x10ec0883, "ALC883", patch_alc882),

     

            HDA_CODEC_REV_ENTRY(0x10ec0885, 0x100101, "ALC889A", patch_alc882),

     

            HDA_CODEC_REV_ENTRY(0x10ec0885, 0x100103, "ALC889A", patch_alc882),

     

            HDA_CODEC_ENTRY(0x10ec0885, "ALC885", patch_alc882),

     

            HDA_CODEC_ENTRY(0x10ec0887, "ALC887", patch_alc882),

     

            HDA_CODEC_REV_ENTRY(0x10ec0888, 0x100101, "ALC1200", patch_alc882),

     

            HDA_CODEC_ENTRY(0x10ec0888, "ALC888", patch_alc882),

     

            HDA_CODEC_ENTRY(0x10ec0889, "ALC889", patch_alc882),

     

            HDA_CODEC_ENTRY(0x10ec0892, "ALC892", patch_alc662),

     

            HDA_CODEC_ENTRY(0x10ec0897, "ALC897", patch_alc662),

     

            HDA_CODEC_ENTRY(0x10ec0899, "ALC898", patch_alc882),

     

            HDA_CODEC_ENTRY(0x10ec0900, "ALC1150", patch_alc882),

     

            HDA_CODEC_ENTRY(0x10ec0b00, "ALCS1200A", patch_alc882),

     

            HDA_CODEC_ENTRY(0x10ec1168, "ALC1220", patch_alc882),

     

            HDA_CODEC_ENTRY(0x10ec1220, "ALC1220", patch_alc882),

     

            HDA_CODEC_ENTRY(0x19e58326, "HW8326", patch_alc269),

     

            {} /* terminator */

     

    };

  • Hi Guy

    I have to point out that two pieces of TAS2770s can't be directly connected to platform.

    While TAS2770 only supports I2S/TDM instead of HDA. TAS2770 does not support such connection.

    Unless you must connect I2S input to HD-A codec’s I2S bridge. In such scenario we can re-use 2781 driver with minor modifications as needed.

    We have much HDA driver experience focused on PC products, all of our amplifiers in these products are connected with Realtek codec, and realtek codec directly connected to the HDA.

    One more thing, do you need IV data for speaker protection or echo reference signal for AEC?

  • I keep explaining that I chose the TAS2770 element, since it has very good documentation, and seems to be the best suited for our purpose.

    You can connect not only two but even eight to the platform, as shown in the TAS2770EVM-Stereo development board documentation.

    The original question was - how to correct the driver to support the stereo version and not the mono version.

    At the moment, the question can be expanded - how to correct the driver to support all eight channels instead of the mono version.

    However, I gave up on the original question because I encountered difficulties in starting the driver, even the mono version.

    There is no justification for associating the cooperation of TAS2770 with REALTEK, because TAS2770 is supposed to replace REALTEK.

    The programs in the introduction declare "ALSA SoC" and therefore support HDA as below.

    1.

    =========

    // ALSA SoC Texas Instruments TAS2770 20-W Digital Input Mono Class-D

    // Audio Amplifier with Speaker I/V Sense // Copyright (C) 2016-2017 Texas Instruments Incorporated - https://www.ti.com/

    // Author: Tracy Yi <tracy-yi@ti.com>

    // Frank Shi <shifu0704@thundersoft.com> **

     

    2.

    =============================================================================================

    ** Copyright (c) 2016 Texas Instruments Inc.

    ** File:

    ** tas2770-codec.c **

    ** Description:

    ** ALSA SoC driver for TAS2770 20-W Digital Input Mono Class-D Audio Amplifier

    ** with Speaker I/V Sense **

    ** == ========...

     

    The stereo amplifiers designed and made as suggested in TAS2770 documentation work very well,

    but I expect help in the implementation of the existing declared drivers in Linux, so as not to implement these from scratch.

     
    Therefore, I am not interested in modifying the TAS2781.

    Henryk

  • Our TAS2781 HDA driver can support multiple pieces in one device. We applied the regbin arhitecture into the driver.

    All the register settings are saved into a bin file. You can define the pieces of TAS2770 in the bin file. 

    Regbin tool link toolset « regbin - tas2781-linux-drivers/tas2781-linux-driver - Unnamed repository; edit this file 'description' to name the repository.

    This tool was developed right for you.

    One more thing, I have to highlight again that TAS2770 only support I2S/TDM, can't be not connected to HDA bus dirreclty, or it can't work.

  • I cannot comprehend Texas Instruments' policy regarding user support for TI products.

    The TAS2770 chip was chosen because it was fit to our  expectations and had excellent documentation, including startup tools and information about available software.

    The choice seemed to be a good one because the amplifier was built as  scheduled, exactly according to the instructions, and works as expected, however launching the software failed.

    It seemed that updating the software to adapt it for multi-channel operation (as it is designed for mono operation) would be a simple task.

    Not only is there no declared support for launching the program, but the choice of the TAS2770 is even questioned, suggesting that two systems cannot be connected to the platform, even though such a connection is suggested in the TAS2770 documentation and such a version has been implemented.

    Additionally, the TAS2770EVM-stereo documentation even shows that eight such components can be connected to the bus. It's strange to see when a user chooses a product that meets its requirements, BUT TI support tries to prove it's a incorrect choice, when in reality, the problem is only about software startup support.

    The most important element of support is the legally required responsibility of the final product manufacturer, which is in this case is our company, www.aiut.com.

    To meet all requirements, all doubts must be clarified, and questions answered by customer’s support. Such answers should precisely answer the questions asked, and not expand on related topics.

    Our company deals with automation, and software must be safe and optimal (optimizing time and memory space), so a program supporting a specific element should only be applicable to that element.

    While a program supporting all Texas products may seem ideal for selling Texas products, it is useless for devices used in automation.

    If a software specialists want to be so clever as to have a program for everything, they should be even more clever and be able to generate a version of that program designed specifically for the selected product.

    Let me remind you that the idea was only to supplement the driver for the TAS2770 so that it would not be limited to the mono version but would also support stereo, or even better, a version using all available channels, i.e. eight.

    Henryk

     

  • The choice seemed to be a good one because the amplifier was built as  scheduled, exactly according to the instructions, and works as expected, however launching the software failed.

    Hi Henryk

    Thank you for your recent post. Our HDA driver has already been made public to the Linux community and supports mono, stereo, and even multiple channels. Please disregard the file name TAS2781. This driver is not only compatible with TAS2781, but also with TAS2563, TAS2770, and other TI audio chips, among others. It is highly regarded in the audio industry and is widely used by my customers, who are very satisfied with it. I’m confident that you will also appreciate it once you integrate it into your system. Your product can greatly benefit from this code. Additionally, if you prefer not to use TAS2781, you can rename it to TAS2770 if that suits you better.

    Regarding your connection questions, I will forward them to our hardware experts.

  • I have not asked, and I am not asking, about the hardware connection.

    The TAS2770 is connected to the HDA bus, and you can read and write the TAS2770 registers using the Linux i2get and i2cset commands, as previously presented.

    The suggestion to use a TAS2781 driver for the TAS2770 was rejected earlier on since I'm familiar with both components and know that I2C addresses are different.

    Now, the information that the TAS2781 driver can be configured for other components is new and worth trying.

    While the documentation for the TAS2770 itself, along with the PPC3 tools and the TAS2770EVM-Stereo development board, is very good and allowed me to easily build and test the amplifier in a short time, support for implementing a Linux driver is practically nonexistent, even though the TAS2770 is very attractive for industrial applications.

    It is rather surprising that TI is so little involved in software support.

    As I've already mentioned, the TAS2770 was chosen not for hobby purposes, but for a specific production project..

    According to existing requirements, the manufacturer is responsible for meeting these requirements.

    These requirements also apply to software. Unfortunately, in recent years, software issues have been neglected, and in practice, software is very poorly documented.

    Fifty years ago, IBM issued guidelines on software documentation. Such well-prepared documentation exists for the TAS2770EVM-Stereo development board, but there's a complete lack of information on how to use the TAS2770 with Linux software in the HDA systems for which it was designed.

    The above mentioned TAS2781 driver can be used and then unnecessary program fragments can be removed, but first we need to get the TAS2781 driver running. This requires clear implementation and configuration instructions and, of course, specific answers to any arising questions.

    Henryk

  • Hi Henryk

    The patch for TAS2770 for HDA arch has been already public to Linux Community. See following link.

    ALSA: hda: Add TAS2770 support - kernel/git/next/linux-next.git - The linux-next integration testing tree

    We had shared the setting example for ACPI three months ago.

    As to guideline, we have no ATOM platform, but we have many experiences on Intel PC platform, which also use HDA arch. See following link

    TAS2781: tas2781s linux drivers for Lenovo laptops - Audio forum - Audio - TI E2E support forums

  • I don't expect help in the form of a ready-made program, but rather answers to any questions.

    This is not a teaching/learning project or a hobbyist pursuit of audio, but a professional project with mandatory requirements. Disclaimers such as:

    "This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE"

    cannot be applied here, and you should guarantee that the program is correct.

    Our company, AIUT, is a well-known company in the automation and robotics market and has also been using TI chips for a very long time. We assume that TI is also committed to promote good TI solutions. In our opinion, the TAS2770 chip is very well suited for our applications, and it should be  in TI's best interest that AIUT positively evaluates this element.

    The driver for this component is validated by the Debian kernel, but there are some ambiguities that I wanted to clarify, besides the fact that it's a driver for the mono version, and the amplifier proposed by TI is stereo.

    Following are this driver’s data:

    // SPDX-License-Identifier: GPL-2.0

    // ALSA SoC Texas Instruments TAS2770 20-W Digital Input Mono Class-D

    // Audio Amplifier with Speaker I/V Sense  

    // Copyright (C) 2016-2017 Texas Instruments Incorporated - https://www.ti.com/

    // Author: Tracy Yi <tracy-yi@ti.com>

    // Frank Shi shifu0704@thundersoft.com

    MODULE_AUTHOR("Shi Fu <shifu0704@thundersoft.com>");

    MODULE_DESCRIPTION("TAS2770 I2C Smart Amplifier driver");

    MODULE_LICENSE("GPL v2");

    I hoped that I could easily get clarification on any ambiguities that arose.

     However, I would like to implement the program I mentioned earlier, which Debian tecognizess and compiles a module that is loadable. 

    Can I count on TI support in help to implement  the program, which is obviously authored by TI?

     Henryk

  • Sure, you can. I think you may as well create a new thread to raise your question.

  • I apologize for the long delays in my forum posts, but English is not my first language and I need more time to verify whether my answers meet my intentions.

    I prefer to stay in this thread to avoid explaining issues that have already been addressed in this thread.

    I am using the Debian system and its complier showed that it contains the snd_soc_tas2770 codec module, and it compiled your program and allowed it to load without reporting any problems.

    The program header indicates that it was written by TI.

    "

    // SPDX-License-Identifier: GPL-2.0 // ALSA SoC Texas Instruments TAS2770 20-W Digital Input Mono Class-D

    // Audio Amplifier with Speaker I/V Sense

    // Copyright (C) 2016-2017 Texas Instruments Incorporated - https://www.ti.com/

    // Author: Tracy Yi <tracy-yi@ti.com>

    // Frank Shi shifu0704@thundersoft.com

    MODULE_AUTHOR("Shi Fu <shifu0704@thundersoft.com>");

    MODULE_DESCRIPTION("TAS2770 I2C Smart Amplifier driver"); MODULE_LICENSE("GPL v2");

    "

    However, I\information about the repository and DAI preparation is missing.

    Is this information available?

    Henryk