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?