OpenNuvoton / NUC980-linux-5.10.y

NUC980 Linux Kernel 5.10.y
Other
11 stars 7 forks source link

NAU88C22 Can't Use With NUC980 #14

Open RSTurgay opened 1 day ago

RSTurgay commented 1 day ago

Hi everyone,

I want to use NAU88C22YG Codec Driver. But I getting error like this,

# dmesg | grep audio
[   10.992399] nuc980-audio-i2s b0020000.i2s: obtain a copy of previously claimed pinctrl
[   11.003633] nuc980-audio ahb:sound: snd_soc_register_card() failed: -517
[   11.353958] nuc980-audio ahb:sound: snd_soc_register_card() failed: -517
[   11.361758] nuc980-audio ahb:sound: snd_soc_register_card() failed: -517
[   12.117591] nuc980-audio ahb:sound: snd_soc_register_card() failed: -517
[   22.180774] nuc980-audio ahb:sound: snd_soc_register_card() failed: -517

My .dts file (i2c and i2s section)

i2c3: i2c3@b0083000 {
    status = "okay";
    pinctrl-0 = <&pinctrl_i2c3_PD>;

    nau8822: nau8822@1a {
        compatible = "nuvoton,nau8822";
        reg = <0x1a> ;
    };
};

i2s: i2s@b0020000 {
    status = "okay";
    pinctrl-0 = <&pinctrl_i2s_pa>;
};

i2s_pcm: i2s_pcm {
    status = "okay";
};

sound {
    compatible = "nuvoton,nuc980-audio";
    i2s-controller = <&i2s>;
    i2s-platform = <&i2s_pcm>;
    status = "okay";
};

Also, when I check nau8822 using i2cdetect, I getting address 0x1A

# i2cdetect -y 3
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

What is the point ? Where is my mistake ?

ychuang3 commented 11 hours ago
            pinctrl_i2s_pa: i2s-PA {
                nuvoton,pins =
                    <0 2 2 0
                     0 3 2 0
                     0 4 2 0
                     0 5 2 0
                     0 6 2 0 >;
            };

The error message looks like one of PA.2 ~ PA.6 had been claimed by other device. Please check your pinctrl settings.

RSTurgay commented 5 hours ago

Hi, thank you for your reply. But I check i2s pins but I din't see kernel message use another device.

My Kernel messages:

# dmesg | grep PA.2
[    1.162441] nuc980-pinctrl apb:pinctrl@b0000000: PA.2: func=1
[    2.973533] nuc980-pinctrl apb:pinctrl@b0000000: PA.2: func=2
[    4.556224] nuc980-pinctrl apb:pinctrl@b0000000: PA.2: func=6
[    4.689291] nuc980-pinctrl apb:pinctrl@b0000000: PA.2: func=3

# dmesg | grep PA.3
[    1.168174] nuc980-pinctrl apb:pinctrl@b0000000: PA.3: func=1
[    2.979258] nuc980-pinctrl apb:pinctrl@b0000000: PA.3: func=2
[    4.586974] nuc980-pinctrl apb:pinctrl@b0000000: PA.3: func=6
[    4.695083] nuc980-pinctrl apb:pinctrl@b0000000: PA.3: func=3

# dmesg | grep PA.4
[    1.173958] nuc980-pinctrl apb:pinctrl@b0000000: PA.4: func=1
[    2.985049] nuc980-pinctrl apb:pinctrl@b0000000: PA.4: func=2
[    4.700874] nuc980-pinctrl apb:pinctrl@b0000000: PA.4: func=3
[    4.767058] nuc980-pinctrl apb:pinctrl@b0000000: PA.4: func=3

# dmesg | grep PA.5
[    1.179683] nuc980-pinctrl apb:pinctrl@b0000000: PA.5: func=1
[    2.990841] nuc980-pinctrl apb:pinctrl@b0000000: PA.5: func=2
[    4.706599] nuc980-pinctrl apb:pinctrl@b0000000: PA.5: func=3
[    4.772833] nuc980-pinctrl apb:pinctrl@b0000000: PA.5: func=3

# dmesg | grep PA.6
[    2.996566] nuc980-pinctrl apb:pinctrl@b0000000: PA.6: func=2
[    3.652491] nuc980-pinctrl apb:pinctrl@b0000000: PA.6: func=1
[    3.884666] nuc980-pinctrl apb:pinctrl@b0000000: PA.6: func=1
[    4.712391] nuc980-pinctrl apb:pinctrl@b0000000: PA.6: func=3

# dmesg | grep PA2
[    4.937233] pinctrl core: registered pin 2 (PA2) on apb:pinctrl@b0000000
[   10.971724] nuc980-pinctrl apb:pinctrl@b0000000: request pin 2 (PA2) for b0020000.i2s

# dmesg | grep PA3
[    4.943983] pinctrl core: registered pin 3 (PA3) on apb:pinctrl@b0000000
[   10.979833] nuc980-pinctrl apb:pinctrl@b0000000: request pin 3 (PA3) for b0020000.i2s

# dmesg | grep PA4
[    4.950716] pinctrl core: registered pin 4 (PA4) on apb:pinctrl@b0000000
[   10.987933] nuc980-pinctrl apb:pinctrl@b0000000: request pin 4 (PA4) for b0020000.i2s

# dmesg | grep PA5
[    4.957391] pinctrl core: registered pin 5 (PA5) on apb:pinctrl@b0000000
[   10.995991] nuc980-pinctrl apb:pinctrl@b0000000: request pin 5 (PA5) for b0020000.i2s

# dmesg | grep PA6
[    4.964133] pinctrl core: registered pin 6 (PA6) on apb:pinctrl@b0000000
[   11.003816] nuc980-pinctrl apb:pinctrl@b0000000: request pin 6 (PA6) for b0020000.i2s

# dmesg | grep i2s
[    2.960699] nuc980-pinctrl apb:pinctrl@b0000000: parse function(34): i2s
[    2.967391] nuc980-pinctrl apb:pinctrl@b0000000: group(0): i2s-PA
[    3.002358] nuc980-pinctrl apb:pinctrl@b0000000: group(1): i2s-PB
[   10.938791] nuc980-pinctrl apb:pinctrl@b0000000: i2s-PA: 5 0:2
[   10.944649] nuc980-pinctrl apb:pinctrl@b0000000: maps: function i2s group i2s-PA num 6
[   10.963583] nuc980-pinctrl apb:pinctrl@b0000000: found group selector 89 for i2s-PA
[   10.971724] nuc980-pinctrl apb:pinctrl@b0000000: request pin 2 (PA2) for b0020000.i2s
[   10.979833] nuc980-pinctrl apb:pinctrl@b0000000: request pin 3 (PA3) for b0020000.i2s
[   10.987933] nuc980-pinctrl apb:pinctrl@b0000000: request pin 4 (PA4) for b0020000.i2s
[   10.995991] nuc980-pinctrl apb:pinctrl@b0000000: request pin 5 (PA5) for b0020000.i2s
[   11.003816] nuc980-pinctrl apb:pinctrl@b0000000: request pin 6 (PA6) for b0020000.i2s
[   11.016049] nuc980-audio-i2s b0020000.i2s: obtain a copy of previously claimed pinctrl

It's using by i2s. Where should I check?