This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TLV320AIC3107: AM5728: tlv320aic3x-codec 2-0018: unable to sync registers 0x3-0x5

Part Number: TLV320AIC3107
Other Parts Discussed in Thread: TLV320AIC3007

we took the am57xx -PHYcore kit evaluation board and with that, as a reference, we are creating a custom board. The PHYcore board uses the tlv320aic3007 codec, while we are using the tlv320aic3107 codec and tlv320aic3x as the driver. but we seem to get this error "tlv320aic3x-codec 2-0018: unable to sync registers 0x3-0x5", what might be the issue??

  • I'll ask our driver expert to comment.

  • set the correct page first

    i2cset -y -f 0 4c 0 1  //switch to page 1
    i2cset -y -f 0 4c 0x3 2
    i2cset -y -f 0 4c 0x4 6
    i2cset -y -f 0 4c 0x5 8
  • Hey, thank you for the reply... I'm quite new at this, so maybe you could give me a little bit more explanation on this, please.

  • Kindly read the datasheet carefully. in Datasheet, you will find there are reg0x3 ~ reg 0x5 in page 0 and page 1. I wonder what regs you want to set, page 0 or page 1?

  • Hi 

    First thing tlv320aic3107 codec is connected to i2c-3 in board.

    I am attaching the dts here,

    ```

    rdk_audio: sound {
    compatible = "simple-audio-card";
    status = "okay";
    simple-audio-card,name = "phyCORE-AM57xx-RDK";
    simple-audio-card,widgets =
    "Line", "Line Out",
    "Line", "Line In",
    "Microphone", "Mic Jack",
    "Headphone", "HP Jack";
    simple-audio-card,routing =
    "Line Out", "LLOUT",
    "Line Out", "RLOUT",

    "LINE1R", "Line In",
    "LINE1R", "Line In",

    "MIC3L", "Mic Jack",
    "MIC3R", "Mic Jack",
    "Mic Jack", "Mic Bias",

    "HP Jack", "HPLOUT",
    "HP Jack", "HPROUT";
    simple-audio-card,format = "dsp_b";
    simple-audio-card,bitclock-master = <&sound0_master>;
    simple-audio-card,frame-master = <&sound0_master>;
    simple-audio-card,bitclock-inversion;

    simple-audio-card,cpu {
    sound-dai = <&mcasp1>;
    system-clock-frequency = <12000000>;
    };
    sound0_master: simple-audio-card,codec {
    sound-dai = <&tlv320aic3x>;
    clocks = <&clkout2_clk>;
    };

    };

    &i2c3 {

    tlv320aic3x: tlv320aic3x@18 {
    #sound-dai-cells = <0>;
    compatible = "ti,tlv320aic3x";
    reg = <0x18>;
    reset-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
    pinctrl-names = "default", "sleep";
    pinctrl-0 = <&clkout2_pins_default>;
    pinctrl-1 = <&clkout2_pins_sleep>;

    status = "okay";
    ai3x-micbias-vg = <2>;
    adc-settle-ms = <40>;

    AVDD-supply = <&vdd_3v3>;
    IOVDD-supply = <&vdd_3v3>;
    DRVDD-supply = <&vdd_3v3>;
    DVDD-supply = <&aic_dvdd>;
    };

    };

    ```

    When the kernel is loading or whenever aplay command is running , I am getting this error 

    ```

    tlv320aic3x-codec 2-0018: unable to sync registers 0x3-0x5"

    ```

    From your previous reply, I am assuming 4c is the slave address , I tried to used i2cset command as,

    i2cset -y -f 2 0x18 0 1 //  0x18 is the tlvcodec slave address. I got write failed for this command.

  • try "i2cdump -y -f 2 0x18" and "i2cdump -y -f 2 0x18"

    one more thing, since tlvcodec is on the i2c-3, why the log is "tlv320aic3x-codec 2-0018: unable to sync registers 0x3-0x5", not "tlv320aic3x-codec 3-0018: unable to sync registers 0x3-0x5""

  • we have 5 i2c's and in /dev, they are mapped from i2c 0-4 , so we have mapped i2c_3 to i2c_2 .

    Attaching output for i2c dump cmd:

    ```

    root@am572x-bel-mmrfic:~# i2cdump -y -f 2 0x18
    No size specified (using byte-data access)
    0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
    00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX

    ```

  • My question is whether i2c-3 in DTSI is &i2c3?

    Kindly check hardware, because no register value can be got according to you log.