A problem of the shortcuts do not working after porting sgtl5000

Hi all, my shortcuts are not working on the TX2(p3310-1000 module with p2597-0000 carrier board) , for example, I pressed the ctrl + alt + T (open the terminal ) or print screen , no response all.

When I installed default JetPack(4.4.1) , the shortcuts are normal, but I insert the Fe-Pi Audio Z V2 (sgtl5000) sound card and change the kernel source and DTS, the shortcuts functions will breaking.

After checking the kernel source , I found the DTS settings modified the part of tegra_sound: sound {} will cause the shortcuts not working.

There are my all settings as below:

bootloader/t186ref/BCT/tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg

pinmux.0x02431040 = 0x00000444; # dap1_sclk_pj0: rsvd1, pull-down, tristate-enable, input-enable, lpdr-disable
pinmux.0x02431038 = 0x00000404; # dap1_dout_pj1: rsvd1, pull-down, tristate-enable, input-enable, lpdr-disable
pinmux.0x02431030 = 0x00000454; # dap1_din_pj2: rsvd1, pull-down, tristate-enable, input-enable, lpdr-disable
pinmux.0x02431028 = 0x00000444; # dap1_fs_pj3: rsvd1, pull-down, tristate-enable, input-enable, lpdr-disable
pinmux.0x02431020 = 0x00000400; # aud_mclk_pj4: rsvd1, pull-up, tristate-enable, input-enable, lpdr-disable

source/kernel/nvidia/sound/soc/tegra-alt/machine_drivers/tegra_machine_driver_mobile.c

static const struct snd_soc_dapm_widget tegra_machine_dapm_widgets[] = {
    SND_SOC_DAPM_SPK("x Int Spk", NULL),
    SND_SOC_DAPM_HP("x Headphone Jack", NULL),
    SND_SOC_DAPM_MIC("x Int Mic", NULL),
    SND_SOC_DAPM_MIC("x Mic Jack", NULL),
    SND_SOC_DAPM_LINE("x Lineout", NULL),
    SND_SOC_DAPM_LINE("x Linein", NULL),
    SND_SOC_DAPM_SPK("d1 Headphone", NULL),
    SND_SOC_DAPM_SPK("d2 Headphone", NULL),
    SND_SOC_DAPM_SPK("d3 Headphone", NULL),

    SND_SOC_DAPM_HP("w Headphone", NULL),
    SND_SOC_DAPM_HP("x Headphone", NULL),
    SND_SOC_DAPM_HP("y Headphone", NULL),
    SND_SOC_DAPM_HP("z Headphone", NULL),
    SND_SOC_DAPM_HP("l Headphone", NULL),
    SND_SOC_DAPM_HP("m Headphone", NULL),
    SND_SOC_DAPM_HP("n Headphone", NULL),
    SND_SOC_DAPM_HP("o Headphone", NULL),
    SND_SOC_DAPM_HP("s Headphone", NULL),

    SND_SOC_DAPM_MIC("Int Mic", NULL),
    SND_SOC_DAPM_MIC("w Mic", NULL),
    SND_SOC_DAPM_MIC("x Mic", NULL),
    SND_SOC_DAPM_MIC("y Mic", NULL),
    SND_SOC_DAPM_MIC("z Mic", NULL),
    SND_SOC_DAPM_MIC("l Mic", NULL),
    SND_SOC_DAPM_MIC("m Mic", NULL),
    SND_SOC_DAPM_MIC("n Mic", NULL),
    SND_SOC_DAPM_MIC("o Mic", NULL),
    SND_SOC_DAPM_MIC("a Mic", NULL),
    SND_SOC_DAPM_MIC("b Mic", NULL),
    SND_SOC_DAPM_MIC("c Mic", NULL),
    SND_SOC_DAPM_MIC("d Mic", NULL),
    SND_SOC_DAPM_MIC("s Mic", NULL),
};

source/hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-platforms/tegra186-quill-common.dtsi

    clocks {
    sgtl5000_mclk: sgtl5000_mclk {
    compatible = "fixed-clock";
    #clock-cells = <0>;
    clock-frequency = <12288000>;
    clock-output-names = "sgtl5000-mclk";
    status = "okay";
        };
    };

    i2c@c240000 {
        status = "okay";
        sgtl5000: sgtl5000@0a {
            compatible = "fsl,sgtl5000";
            reg = <0x0a>;
            clocks = <&sgtl5000_mclk>;
            micbias-resistor-k-ohms = <2>;
            micbias-voltage-m-volts = <3000>;
            VDDA-supply = <&vdd_3v3>;
            VDDIO-supply = <&vdd_3v3>;
            status = "okay";
        };

        nvidia,audio-routing =
            "x Headphone",  "x HP_OUT",
            "x MIC_IN",     "x Mic",
            "x LINE_IN",    "x Linein",
            "x Lineout",    "x LINE_OUT",
            "x ADC",        "x Mic Bias",
            "y Headphone",      "y OUT",
            "y IN",         "y Mic",
            "z Headphone",      "z OUT",
            "z IN",         "z Mic",
            "m Headphone",      "m OUT",
            "m IN",         "m Mic",
            "n Headphone",      "n OUT",
            "n IN",         "n Mic",
            "o Headphone",      "o OUT",
            "o IN",         "o Mic",
            "a IN",         "a Mic",
            "b IN",         "b Mic",
            "c IN",         "c Mic",
            "d IN",         "d Mic",
            "d1 Headphone",     "d1 OUT",
            "d3 Headphone",     "d3 OUT";

        rt565x_dai_link: nvidia,dai-link-1 {
        link-name = "fe-pi-audio-z-v2";
        cpu-dai = <&tegra_i2s1>;
        codec-dai = <&sgtl5000>;
        cpu-dai-name = "I2S1";
        codec-dai-name = "sgtl5000";
        format = "i2s";
        bit-format = "s16_le";
        bitclock-master;
        frame-master;
        srate = <48000>;
        num-channel = <2>;
        ignore_suspend;
        name-prefix = "x";
        status = "okay";
        };

Please help me solve this problem and happy new year!
Thanks and best regards,

Jake

Hello!

We have had a similar report of this problem here. This is being investigated, but as you can see this has been an open issue now for sometime. I have reported that this is still an issue but at the moment I do not know of a fix for this.

Disabling pulseaudio does seem to allow keyboard events to work, but this if you need pulseaudio then this is obviously no help. We will keep you posted.

Regards,
Jon

Hi Jon,

Thank for your reply, I found a way but it is not formally .
In the login screen, change gnome to “ubuntu” theme and login, the shortcuts work fine, I don’t know why , but it worked.
image

And I also tried to remove the pulse audio by this command :
sudo apt purge pulseaudio
The keyboard events come back, but the audio settings all broken :D

Regards,
Jake

Hi Jake,

Thanks for the feedback. Yes if you remove pulseaudio, then you lose the desktop audio support. Command line tools such as ALSA aplay, arecord, etc, still work, but the desktop interface is not supported. So depends on the level of audio support you need. I will provide your feedback to the team.

Thanks
Jon

1 Like