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.

TDA4VH-Q1: Specific GPIOs not working: possible conflict with RGMII

Part Number: TDA4VH-Q1
Other Parts Discussed in Thread: TDA4VH

Tool/software:

Hello,

We're developing custom PCB based on TDA4VH and experienced some issues related to  GPIOs, specifically :
WKUP_GPIO_51
WKUP_GPIO_50
WKUP_GPIO_62
WKUP_GPIO_48

 

we want to use them as GPIOs only, but cannot drive them or read correct values from them (always 0 when multimeter shows high). 

Other GPIOs from this pmx like:
WKUP_GPIO_47
WKUP_GPIO_44
WKUP_GPIO_43

works correctly.

Our suspicion is that RGMII is somehow initialized during boot-up sequence and  somehow blocking access to GPIOs (but only RX for some reason). We base our assumptions on the fact that boot from RGMII is possible and reading RGMII base register is possible:

Read at address  0x46000000 (0xffffadeda000): 0x6BA02102

For more debug info, there is WKUP_PADCONFIG register content:

 

WKUP_GPIO0_51
/dev/mem opened.
Memory mapped at address 0xffffb77ad000.
Read at address  0x4301C094 (0xffffb77ad094): 0x00050007
WKUP_GPIO0_50
/dev/mem opened.
Memory mapped at address 0xffff82dba000.
Read at address  0x4301C090 (0xffff82dba090): 0x00050007
WKUP_GPIO_62
/dev/mem opened.
Memory mapped at address 0xffffa8369000.
Read at address  0x4301C08C (0xffffa836908c): 0x00050007
WKUP_GPIO_48
/dev/mem opened.
Memory mapped at address 0xffff95fa9000.
Read at address  0x4301C088 (0xffff95fa9088): 0x00050007

Relevant part of Linux DTS:

 

 

&wkup_pmx2 {
   status = "okay";
   wkup_pmx2_gpio_pins_default: wkup_pmx2_gpio-default-pins {
       pinctrl-single,pins = <
           J784S4_WKUP_IOPAD(0x000, PIN_INPUT, 7) /* (C38) MCU_RGMII1_TX_CTL.WKUP_GPIO0_40 */
           J784S4_WKUP_IOPAD(0x004, PIN_OUTPUT, 7) /* (C37) MCU_RGMII1_RX_CTL.WKUP_GPIO0_41 */
           J784S4_WKUP_IOPAD(0x008, PIN_INPUT, 7) /* (E38) MCU_RGMII1_TD3.WKUP_GPIO0_42 */
           J784S4_WKUP_IOPAD(0x00c, PIN_OUTPUT, 7) /* (E37) MCU_RGMII1_TD2.WKUP_GPIO0_43 */
           J784S4_WKUP_IOPAD(0x010, PIN_OUTPUT, 7) /* (D38) MCU_RGMII1_TD1.WKUP_GPIO0_44 */
           J784S4_WKUP_IOPAD(0x014, PIN_INPUT, 7) /* (D37) MCU_RGMII1_TD0.WKUP_GPIO0_45 */
           J784S4_WKUP_IOPAD(0x018, PIN_INPUT_PULLUP, 7) /* (E36) MCU_RGMII1_TXC.WKUP_GPIO0_46 */
           J784S4_WKUP_IOPAD(0x01c, PIN_INPUT, 7) /* (B37) MCU_RGMII1_RXC.WKUP_GPIO0_47 */
           J784S4_WKUP_IOPAD(0x020, PIN_OUTPUT, 7) /* (D36) MCU_RGMII1_RD3.WKUP_GPIO0_48 */
           J784S4_WKUP_IOPAD(0x028, PIN_INPUT, 7) /* (B36) MCU_RGMII1_RD1.WKUP_GPIO0_50 */
           J784S4_WKUP_IOPAD(0x02c, PIN_OUTPUT, 7) /* (A35) MCU_RGMII1_RD0.WKUP_GPIO0_51 */
           J784S4_WKUP_IOPAD(0x030, PIN_OUTPUT, 7) /* (B35) MCU_MDIO0_MDIO.WKUP_GPIO0_52 */
           J784S4_WKUP_IOPAD(0x024, PIN_INPUT, 7) /* (C36) MCU_RGMII1_RD2.WKUP_GPIO0_62 */
       >;
   };

 

TI-Linux version is 9.02.
libgpiod is used for setting and reading, it does not report any errors, works with other GPIOs. 


Is scenario described above possible? If not, what could be possible root cause?