When the IMX219 camera is connected, SDMMC_VDD_EN is pulled down and remains low

Hi, nvidia:
I am using the Jetson Nano b00 modules, 16G EMMC version.
When the IMX219 camera is connected, SDMMC_VDD_EN is pulled down, causing SDMMC3 to be unavailable.
When the IMX219 camera is not connected, SDMMC_VDD_EN remains high and SDMMC3 can be used normally.
Is the CSI interface directly related to SDMMC3?
IMX219 log:
root@linux:~# dmesg | grep imx219
[ 1.712389] imx219 7-0010: tegracam sensor driver:imx219_v2.0.6
[ 1.737454] imx219 8-0010: tegracam sensor driver:imx219_v2.0.6
[ 1.760835] imx219 8-0010: imx219_board_setup: error during i2c read probe (-121)
[ 1.768396] imx219 8-0010: board setup failed
[ 1.772856] imx219: probe of 8-0010 failed with error -121
[ 1.932840] vi 54080000.vi: subdev imx219 7-0010 bound
SDMMC log:
[ 1743.185586] mmc1: CMD CRC or end bit error, int mask 0xc0001
[ 1743.191766] mmc1: CMD CRC or end bit error, int mask 0xc0000
[ 1743.199437] mmc1: CMD CRC or end bit error, int mask 0xc0000
[ 1743.206891] mmc1: CMD CRC or end bit error, int mask 0xc0000
[ 1743.213376] mmc1: CMD CRC or end bit error, int mask 0xc0000

What’s your BSP version?
cat /etc/nv_tegra_release

Do you enable imx219 by jetson-io?

Hi, ShaneCCC:
root@linux:/sys/class/gpio# cat /etc/nv_tegra_release
R32 (release), REVISION: 4.4, GCID: 23942405, BOARD: t210ref, EABI: aarch64, DATE: Fri Oct 16 19:44:43 UTC 2020.
BSP supports IMX219 by default, I didn’t try to operate Jetson-io .

I tried to comment out the following code:

	/*p3448_vdd_3v3_sd: regulator@3 {
			compatible = "regulator-fixed-sync";
			reg = <3>;
			regulator-name = "vdd-3v3-sd";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			gpio = <&gpio TEGRA_GPIO(Z, 3) 0>;
			enable-active-high;
			regulator-boot-on;
			vin-supply = <&p3448_vdd_3v3_sys>;
		};*/

Then run the following command:

root@linux:~# cat /sys/kernel/debug/gpio | grep 203
 gpio-203 (                    )
root@linux:~# echo 203 > /sys/class/gpio/export 
root@linux:~# cat /sys/kernel/debug/gpio | grep 203
 gpio-203 (                    |sysfs               ) out hi 

As you can see from above, GPIO-203 is level by default and the voltage I measured is always 0.

After comment that and have imx219 connect does the pin state is correct?

Incorrect, GPIO-203 (SDMMC_VDD_EN) pin is always pulled low.
When executing a command:

echo 1 > /sys/kernel/debug/gpio/gpio203/value

GPIO-203 (SDMMC_VDD_EN) pin are still low.
That is, my control of GPIO-203 is invalid and its output is always low

So does it still have relative with the camera imx219?

Hi ShaneCCC,
Sorry, maybe it’s my problem, my DTS doesn’t match my hardware.
Do you have documentation on the meaning and instructions of versions A00 / A01 / A02 / B00?

Is the boardid, boardVersion, boardsku, boardrevision information of Jetson nano modules fixed in modules? How can I read and write them?
The get_board_version function in the flash.sh script reads the information in the Jetson Nano module and identifies the desired DTB name based on that information?

Check with below command.

cat /etc/nv_boot_control.conf 

Hello, ShaneCCC:
My SDMMC_VDD_EN was changed to GPIO64, and I have removed all reuse of GPIO64:

root@linux:~# cat /sys/kernel/debug/gpio | grep gpio-64
 gpio-64  (                    )

Also, I raised GPIO64 in DTSI, but it didn’t work, and DTSI is configured like this:

tegra210-porg-gpio-p3448-0002-b00.dtsi:
			gpio-output-high = <
				TEGRA_GPIO(A, 6)
				TEGRA_GPIO(X, 3)
				TEGRA_GPIO(I, 0)    // gpio64
				TEGRA_GPIO(I, 1)
				TEGRA_GPIO(CC, 7)
				>;

tegra210-porg-pinmux-p3448-0002-b00.dtsi:
			nfc_en_pi0 {
				nvidia,pins = "nfc_en_pi0";
				nvidia,function = "rsvd0";
				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
			};

I need to execute the following command GPIO64 to output high level:

root@linux:~# echo 64 > /sys/class/gpio/export 
root@linux:~# echo 1 > /sys/class/gpio/gpio64/value 

I want GPIO64 to output high level by default, instead of using “echo”, what should I do?

Could you confirm the GPIO configure by dumping device tree.

sudo dtc -I fs -O dts -o extracted_proc.dts /proc/device-tree

Hi ShaneCCC,
The problem related to IMX219 and SD has been solved, due to our hardware design conflict. I checked DTB, gpio64 does not have settings in effect, this issue is not important for the time being, so you can close this topic.
Thank you very much for your support