How to use any SDMMC3 pin as 3V3 GPIO output pin

Hello all

I am currently adapting our product (which uses a Jetson Nano) to a new carrier board. We are not using an external sdcard, instead it needs one of the SDMMC3 DATx/CMD/CLK (any of 219, 221, 223, 225, 227, 229) pins to acts as a 3V3 GPIO to control a relay.

The custom carrier board uses the default dts files, only the sdhci@700b0400 is disabled, because we are not using the sdcard.

Using the pinmux spreadsheet I have set the SDMMC3 pins to “rsvd1” for GPIO. But setting 3V3 for the SDMMC3 IO Block Voltage has absolutely no effect on the dts output files.

Could somebody tell me how to enable 3V3 GPIO for these pins?

Thank you

Thomas

hello thomas.dendale,

had you refer to Jetson Nano Product Design Guide to have your board customization?
thanks

hello thomas.dendale,

please check TRM, please refer to [32.7.3.5 SDMMC3] to have specific settings to the SDMMC3 controller.
thanks

Hello JerryChang

The Jetson Nano Product Design Guide shows that the Nano supports 3.3V GPIO on the SDMMC3 pins, correct?
But I do not really know what to do with the the referred TRM manual.

Is it possible to configure this setting in the devicetree files?

Thanks

Thomas

hello thomas.dendale,

there shows the settings to enable 3.3V operation for SDMMC3 controller.

Hi JerryChang

We have decided to use an LDO to convert from 1V8 to 3V3. So that resolves part of my problems.

We still want to use some of the SDMMC3 pins as GPIOs (PP.00-PP.05) for bitbanging SPI, but the rising edge of these GPIOs is not steep enough. The falling edge seems fine.
I have attached a printscreen of my scope. I hope it is clear enough.

As you can see, the falling edge is much faster than the rising edge. The rising edge is very slow.

The dts configuration is as follows (similar for all 5 gpios):

  • pinmux dts:
sdmmc3_clk_pp0 {
	nvidia,pins = "sdmmc3_clk_pp0";
	nvidia,function = "rsvd1";
	nvidia,pull = <TEGRA_PIN_PULL_NONE>;
	nvidia,tristate = <TEGRA_PIN_DISABLE>;
	nvidia,enable-input = <TEGRA_PIN_DISABLE>;
};
  • gpio dts:
gpio-output-low = <
				TEGRA_GPIO(P, 0)
				TEGRA_GPIO(P, 1)
				TEGRA_GPIO(P, 2)
				TEGRA_GPIO(P, 3)
				TEGRA_GPIO(P, 4)
				TEGRA_GPIO(P, 5)
				>;

Additionally, I have tried all pinmux register combinations (using devmem 0x7000301c ...), none seem to result in a cleaner, steeper rising edge.

Is it correct to assume these GPIOs do not drive the pin high, only low? How do I configure push-pull for these GPIOs?

Thank you

Thomas