This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM-Q1: AC3 GPIO1_32 pin cannot be set to high or low output

Part Number: TDA4VM-Q1


Tool/software:

Hi,Ti experts, 

We are using TDA4VM-Q1, the sdk version is "ti-processor-sdk-linux-j7-evm-08_06_01_02", we have encountered a problem,when we configure the AC23 BALL to GPIO1_32 pinmux mode, it cannot be set to high or low output.

The DTS configuration is as follows,i had disabled other cores in /lib/firmware filesystem, so i think this is not cause by it.

Thanks.

nvidia-ctl-gpios {
		// status = "disabled";
		compatible = "upai-box,nvidia-ctl-gpios";
		pinctrl-names = "default";
		pinctrl-0 = <&nvctl_main_pins_default>;
		nvidia_power_on = <&main_gpio0 113 GPIO_ACTIVE_HIGH>;
		sw00 {
			/* gpio = <&main_gpio1>; */
			gpio = <&main_gpio1 32 GPIO_ACTIVE_HIGH>;
			gpios = <&main_gpio1 32 GPIO_ACTIVE_HIGH>;  /* (AC3) GPIO1_32 */ /* PEB_SYS_RST */
			value = <0>;
		};
		sw01 {
			/* gpio = <&main_gpio0>; */
			gpio = <&main_gpio0 114 GPIO_ACTIVE_HIGH>;
			gpios = <&main_gpio0 114 GPIO_ACTIVE_HIGH>; /* (AB5) GPIO0_114 */ /* MODULE_PWR_ON */
			value = <0>;
		};
		sw1 {
			gpio = <&main_gpio0 120 GPIO_ACTIVE_HIGH>;
			gpios = <&main_gpio0 120 GPIO_ACTIVE_HIGH>; /* (Y2) GPIO0_120 */ /* POWER_BTN_N */
			value = <1>;
		};
		sw2 {
			/* gpio = <&main_gpio1>; */
			gpio = <&main_gpio1 35 GPIO_ACTIVE_LOW>;
			gpios = <&main_gpio1 35 GPIO_ACTIVE_LOW>;  /* (AE2)GPIO1_35 */ /* PEB_PCIE_RST */
			value = <0>;
		};
		sw3 {
			/* gpio = <&main_gpio0>; */
			gpio = <&main_gpio0 115 GPIO_ACTIVE_HIGH>;
			gpios = <&main_gpio0 115 GPIO_ACTIVE_HIGH>; /* (AA3) GPIO0_115 */ /* VIN_PWR_ON */
			value = <1>;
		};
		sw4 {
			/* gpio = <&main_gpio0>; */
			gpio = <&main_gpio0 114 GPIO_ACTIVE_HIGH>;
			gpios = <&main_gpio0 114 GPIO_ACTIVE_HIGH>; /* (AB5) GPIO0_114 */ /* MODULE_PWR_ON */
			value = <1>;
		};
		sw5 {
			/* gpio = <&main_gpio1>; */
			gpio = <&main_gpio1 32 GPIO_ACTIVE_HIGH>;
			gpios = <&main_gpio1 32 GPIO_ACTIVE_HIGH>;  /* (AB5) GPIO1_32 */ /* PEB_SYS_RST */
			value = <1>;
		};
		sw6 {
			/* gpio = <&main_gpio0>; */
			gpio = <&main_gpio0 113 GPIO_ACTIVE_HIGH>;
			gpios = <&main_gpio0 113 GPIO_ACTIVE_HIGH>; /* (AA1) GPIO0_113 */ /* CARRIER_PWR_ON */
			value = <1>;
		};
	};
	
	
	nvctl_main_pins_default: nvctl-main-pins-default {
		pinctrl-single,pins = <
			J721E_IOPAD(0x1c8, PIN_INPUT, 7)  /* (AA1) SPI0_CLK.GPIO0_113 */
			J721E_IOPAD(0x1cc, PIN_OUTPUT, 7) /* (AB5) SPI0_D0.GPIO0_114 */
			J721E_IOPAD(0x1d0, PIN_OUTPUT, 7) /* (AA3) SPI0_D1.GPIO0_115 */
			J721E_IOPAD(0x1e4, PIN_OUTPUT, 7) /* (Y2) SPI1_D1.GPIO0_120 */
			J721E_IOPAD(0x29c, PIN_OUTPUT, 7) /* (AC3) MLB0_MLBDP.GPIO1_32 */
			J721E_IOPAD(0x2a8, PIN_OUTPUT, 7) /* (AE2) MLB0_MLBCN.GPIO1_35 */
		>;
	};

The pinmux is already configured to GPIO1_32

root@j7-evm:~# cat /sys/kernel/debug/pinctrl/11c000.pinctrl-pinctrl-single/pins | grep 11c29c
pin 167 (PIN167) 0:? 11c29c 00000007 pinctrl-single 
root@j7-evm:~# cat /sys/kernel/debug/pinctrl/11c000.pinctrl-pinctrl-single/pinmux-pins | grep 167
pin 167 (PIN167): nvidia-ctl-gpios (GPIO UNCLAIMED) function nvctl-main-pins-default group nvctl-main-pins-default

The GPIO1_32 cannot be set to high or low by write reg,we measured the voltage and it remained around 0.6v

root@j7-evm:~# devmem2 0x00601044 w 0x03
/dev/mem opened.
Memory mapped at address 0xffffa2283000.
Read at address  0x00601044 (0xffffa2283044): 0x00000001
Write at address 0x00601044 (0xffffa2283044): 0x00000003, readback 0x00000003
root@j7-evm:~# devmem2 0x00601040 w 0x01
/dev/mem opened.
Memory mapped at address 0xffff8be7e000.
Read at address  0x00601040 (0xffff8be7e040): 0x00000000
Write at address 0x00601040 (0xffff8be7e040): 0x00000001, readback 0x00000001

  • We are using TDA4VM-Q1, the sdk version is "ti-processor-sdk-linux-j7-evm-08_06_01_02", we have encountered a problem,when we configure the AC23 BALL to GPIO1_32 pinmux mode, it cannot be set to high or low output.

    Data Sheet: https://www.ti.com/lit/ds/symlink/tda4vm.pdf?ts=1730083313173&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTDA4VM

    The ball AC23 does not map to GPIO1_32.

    AC3 maps to 

    So can you check the value of 0x00011C2A0? Using devmem2 in Linux or md command in U-Boot.

    - Keerthy

  • sorry,i typed wrong,the ball is AC3.

    root@j7-evm:~# devmem2 0x00011C2A0
    /dev/mem opened.
    Memory mapped at address 0xffffb2008000.
    Read at address  0x0011C2A0 (0xffffb20082a0): 0x00000007
    root@j7-evm:~# devmem2 0x00011C29c
    /dev/mem opened.
    Memory mapped at address 0xffffa351a000.
    Read at address  0x0011C29C (0xffffa351a29c): 0x00000007

  • Okay. Understood.

    Please try below:

    devmem2 0x00011C2A0 w 0x40007

    The bit18 needs to be set to physically change the state of GPIO pins.

    - Keerthy

  • Addr "0x00011C2A0" is mapped to "PADCONFIG168", AC3 is map to "PADCONFIG167", does it correct?

    root@j7-evm:~# devmem2 0x00011C2A0
    /dev/mem opened.
    Memory mapped at address 0xffffbac9e000.
    Read at address  0x0011C2A0 (0xffffbac9e2a0): 0x00000007
    root@j7-evm:~# devmem2 0x00011C2A0 w 0x40007
    /dev/mem opened.
    Memory mapped at address 0xffffa1876000.
    Read at address  0x0011C2A0 (0xffffa18762a0): 0x00000007
    Write at address 0x0011C2A0 (0xffffa18762a0): 0x00040007, readback 0x00040007
    root@j7-evm:~# devmem2 0x00011C29C
    /dev/mem opened.
    Memory mapped at address 0xffff971c7000.
    Read at address  0x0011C29C (0xffff971c729c): 0x00000007
    root@j7-evm:~# devmem2 0x00011C29C w 0x40007
    /dev/mem opened.
    Memory mapped at address 0xffffa34ea000.
    Read at address  0x0011C29C (0xffffa34ea29c): 0x00000007
    Write at address 0x0011C29C (0xffffa34ea29c): 0x00040007, readback 0x00040007
    root@j7-evm:~# devmem2 0x00601044 w 0x03
    /dev/mem opened.
    Memory mapped at address 0xffff9c65d000.
    Read at address  0x00601044 (0xffff9c65d044): 0x00000001
    Write at address 0x00601044 (0xffff9c65d044): 0x00000003, readback 0x00000003
    root@j7-evm:~# devmem2 0x00601040 w 0x01
    /dev/mem opened.
    Memory mapped at address 0xffff9590e000.
    Read at address  0x00601040 (0xffff9590e040): 0x00000000
    Write at address 0x00601040 (0xffff9590e040): 0x00000001, readback 0x00000001

  • Are you able to see the physical toggle now with 0x40007 written to:

    - Keerthy

  • The bit18 needs to be set to physically change the state of GPIO pins.

    These pads are different.

    So bit18 is a don't care / reserved.

    So setting the GPIO mode is good enough.

    Looping in our HW expert.

    - Keerthy

  • root@j7-evm:~# devmem2 0x11c29c
    /dev/mem opened.
    Memory mapped at address 0xffff9db56000.
    Read at address  0x0011C29C (0xffff9db5629c): 0x00000007

    The register value seems like normal, but when i measured the physical voltage,it has always been 0.68V.

    BTW, this issue occurred during the migration of the 08_06 version SDK, while the original 08_00 version SDK had no problem.

  • Are you using TI's EVM, TI's Starter Kit, or custom hardware?  The 0.68V is certainly not a normal voltage for a digital signal level.

  • We use custom hardware, the same board has issues with the SDK in version 08_06, but there are no issues with the SDK in version 08_00,and the GPIO1_33 has the same issue.

  • Can you clarify the connection on the custom board?  What external circuitry is connected to this pin?