Udoo bolt AMD ACP operation details: where to find them?

Discussion in 'Kernels' started by jpsollie, Dec 10, 2020.

  1. jpsollie

    jpsollie UDOOer

    Joined:
    Jul 27, 2020
    Messages:
    11
    Likes Received:
    2
    Hi everyone,

    I'm trying to assist alsa dev guys to make a kernel module for the onboard acp which currently cannot be used.
    I asked amd guys, but they answered:
    -----------------------------------------------------------------------
    On Raven Ridge platform, ACP device enumerated by PCI root.ACP PCI driver creates child nodes for I2S device.
    Currently we had added support for only I2S configuration.
    We recently fixed audio driver probe failure issue when Audio configuration is set to other than I2S.
    When Audio Configuration is set to other than I2S, load the ACP PCI driver instead of returning probe failure.
    ------------------------------------------------------------------------
    ACP PCI driver during its probe it only checks what is the audio configuration is really set.
    If it sees current configuration is set to I2S, then ACP PCI driver
    will go ahead and create the platform devices required for I2S endpoint.
    If it is other than I2S audio configuration, it wont create the child node and returns the probe as success.
    ACP IP do's lot more stuff beyond supporting simple audio endpoints.
    For other audio configurations, we have added a default case
    and left it as a place holder for future implementation.
    ------------------------------------------------------------------------

    which means the PCI device currently loads a dummy driver, but does not really expose its capabilities to the OS.
    So I read the config registers of the PCI bus:

    04:00.5 Multimedia controller: Advanced Micro Devices, Inc. [AMD] Raven/Raven2/FireFlight/Renoir Audio Processor
    00: 22 10 e2 15 06 04 10 00 00 00 80 04 10 00 80 00
    10: 00 00 68 fe 00 00 00 00 00 00 00 00 00 00 00 00
    20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 e2 15
    30: 00 00 00 00 48 00 00 00 00 00 00 00 ff 02 00 00
    40: 00 00 00 00 00 00 00 00 09 50 08 00 22 10 e2 15
    50: 01 64 03 c8 0b 01 00 00 00 00 00 00 00 00 00 00
    60: 00 00 00 00 10 a0 02 00 a1 8f 00 00 30 29 00 00
    70: 03 0d 40 00 40 00 03 11 00 00 00 00 00 00 00 00
    80: 00 00 00 00 00 00 00 00 00 08 70 00 00 00 00 00
    90: 0e 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00
    a0: 05 00 81 00 00 00 e0 fe 00 00 00 00 00 00 00 00
    b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    100: 0b 00 01 00 01 00 01 01 00 00 00 00 00 00 00 00

    Unfortunately, I have NO idea about what those registers say: if I want to convert them into capabilities (and thus link codecs to it), I need some info about the ACP implementation of the udoo bolt.
    Where can I find those?
     

Share This Page