PCMD3180: PCMD3180: Linux Daisy-chain TDM issue - downstream codecs not activating (DEV_STS1=0xC0)

Part Number: PCMD3180

Tool/software:

Hello,

I'm doing a bring-up of three PCMD3180 codecs in a daisy-chain on a Variscite i.MX8M Nano, targeting an 8 and 12-channel TDM stream (48kHz, 32-bit) on a single SAI data line.

I've successfully brought up a single "HEAD" codec and can get 4 distinct channels of audio using my custom overlay and in-flight configuration script (amixer + i2cset). During this successful capture, the DEV_STS1 register (0x77) correctly reads 0xE0(Active with PDM on).

The problem is when I try to enable the 8 or 12-channel daisy-chain. My script correctly configures the unique slot mapping, SDIN pins, and secondary SDOUT routing for all codecs. However, the capture is silent.

A live register dump during the 8 or 12-channel capture attempt shows that the downstream "MID" and "TAIL" codecs are not fully activating. Their DEV_STS1 registers read 0xC0 (Active but PDM channels off), even though their power and input enable registers are correctly set.

My question is: What could cause the downstream codecs in a daisy-chain to refuse to enter the fully active state (MODE_STS=7)? Is there a specific register write or initialization sequence required for the daisy-chain that I might be missing?

Any guidance would be greatly appreciated.

  • Hi Colin,

    Can you check the interrupt register to see if a clock error is happening?

    Another debug option that could help is to power up a single ADC (MID or TAIL) to see if the issue sits in configuring a single codec or if the issue is around both being up at the same time.

    Best regards,
    Jeff McPherson

  • Jeff,

    Single codec is OK (taping the SDOUT not in daisy chain for each).

    Unfortunately, I am now traveling and will be away from my lab until next week, so I cannot run further tests on the daisy-chain setup at this moment.

    Given that a single codec works, is there a known issue or a specific register sequence required to make the downstream codecs activate correctly in a TDM daisy-chain with an i.MX8 Linux host?

    Colin

  • Hi Colin,

    The only thing I can think of is if the driver is not correctly shifting the audio on the MID and TAIL codecs to the 3/4 and 5/6 slots on the TDM bus. But I am not an expert on the driver. Our engineer who is more experienced on linux will be back tomorrow and he can take a look at this as well.

    Best regards,
    Jeff McPherson

  • Thanks Jeff. Investigating further here - I'm wondering if the linux "simple sound card" can't support the daisy chain and if a more custom ASoC driver is necessary for this configuration. Colin

  • Hi Colin,

    I found this in the driver file:

    The adjacent slots starting at the first slot may be the issue - it may not want to start at slot 9 on device 2 and etc. You may be able to edit the driver yourself to override this or implement your own workaround. Sorry about this.

    Best,
    Mir