What controls the dynamic pin mux anyhow? How can I change it to gpio?
I’m trying to get module pin E16 to be GPIO3_PAA01.
I used the excel spreadsheet to generate the gpio.dtsi file to see the syntax.
It seems that I can’t get control of the pin, and it reverts to dmic function.
I don’t see any fragments in the dmesg for this.
DTS that I added to the top level:
pinmux@2430000 {
can_gpio1_paa1 {
nvidia,pins = "can_gpio1_paa1";
nvidia,function = "rsvd0";
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
quill-common.dtsi
pinmux@2430000 {
...
/* Dynamic pinmux config for DMIC3 */
dmic3_dap_active_state: dmic3_dap_active {
dmic_can_gpio0_paa0 {
nvidia,pins = "can_gpio0_paa0";
nvidia,function = "dmic3";
};
dmic_can_gpio1_paa1 {
nvidia,pins = "can_gpio1_paa1";
nvidia,function = "dmic3";
};
};
dmic3_dap_inactive_state: dmic3_dap_inactive {
dmic_can_gpio0_paa0 {
nvidia,pins = "can_gpio0_paa0";
nvidia,function = "dmic5";
};
dmic_can_gpio1_paa1 {
nvidia,pins = "can_gpio1_paa1";
nvidia,function = "dmic5";
};
};
Resulting dts from proc:
dmic3_dap_active {
phandle = <0xeb>;
linux,phandle = <0xeb>;
dmic_can_gpio0_paa0 {
nvidia,function = "dmic3";
nvidia,pins = "can_gpio0_paa0";
};
dmic_can_gpio1_paa1 {
nvidia,function = "dmic3";
nvidia,pins = "can_gpio1_paa1";
};
};
...
dmic3_dap_inactive {
phandle = <0xec>;
linux,phandle = <0xec>;
dmic_can_gpio0_paa0 {
nvidia,function = "dmic5";
nvidia,pins = "can_gpio0_paa0";
};
dmic_can_gpio1_paa1 {
nvidia,function = "dmic5";
nvidia,pins = "can_gpio1_paa1";
};
};
...
can_gpio1_paa1 {
nvidia,enable-input = <0x1>;
nvidia,tristate = <0x1>;
nvidia,function = "rsvd0";
nvidia,pins = "can_gpio1_paa1";
nvidia,pull = <0x1>;
};