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.

AM3358: Device tree file enables some pull-ups (or pull-downs) on pins that already has external pull-ups connected to them

Part Number: AM3358

Hello Support,

1. Why does the am335x-bone-common.dtsi file for the BBB initialize the MDIO_DATA with its internal pull-up enabled knowing that an external 1.5K pull-up resistor (R119) is already connected to the node where MDIO_DATA is connected? 

The initialization we found is the following:

AM33XX_IOPAD(0x948, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */

 

And the schematic shows the following:

...and same happens with other interfaces, for example, the MMC0 interface (micro-sd) where all the data bus pins have external 10K pull-ups resistors and, however, the device tree enables all the internal pull-ups for those pins:

pinctrl-single,pins = <
AM33XX_IOPAD(0x960, PIN_INPUT | MUX_MODE7) /* spio0_cs1.gpio0_6 */
AM33XX_IOPAD(0x8fc, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_dat0.mmc0_dat0 */
AM33XX_IOPAD(0x8f8, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_dat1.mmc0_dat1 */
AM33XX_IOPAD(0x8f4, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_dat2.mmc0_dat2 */
AM33XX_IOPAD(0x8f0, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_dat3.mmc0_dat3 */
AM33XX_IOPAD(0x904, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_cmd.mmc0_cmd */
AM33XX_IOPAD(0x900, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_clk.mmc0_clk */
AM33XX_IOPAD(0x9a0, PIN_INPUT | MUX_MODE4) /* mcasp0_aclkr.mmc0_sdwp */
>;

2. For the same interface (MMC0 interface micro-sd), since the CMD pin for a micro-sd card is always an input.... why does the MMC0_CMD pin is not initialized as an output pin in the dtsi file?

AM33XX_IOPAD(0x904, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_cmd.mmc0_cmd */

Thanks in advance,

  • Hi Juan,

    Juan Gabriel Aldana Jaramillo said:
    1. Why does the am335x-bone-common.dtsi file for the BBB initialize the MDIO_DATA with its internal pull-up enabled knowing that an external 1.5K pull-up resistor (R119) is already connected to the node where MDIO_DATA is connected? 

    Having both (internal and external) pullup options should not  be an issue. In some cases mdio_data internal pullup resistor might be too weak, thus BBB designers  added external pullup.

    Juan Gabriel Aldana Jaramillo said:
    the MMC0 interface (micro-sd) where all the data bus pins have external 10K pull-ups resistors and, however, the device tree enables all the internal pull-ups for those pins:

    Pullup resistors are provided on the signals to increase the rise times of the signals to overcome PCB capacitance.

    Juan Gabriel Aldana Jaramillo said:

    2. For the same interface (MMC0 interface micro-sd), since the CMD pin for a micro-sd card is always an input.... why does the MMC0_CMD pin is not initialized as an output pin in the dtsi file?

    AM33XX_IOPAD(0x904, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc0_cmd.mmc0_cmd */

    MMC_CMD - This pin is used for two-way communication between the connected card and the MMC/SD/SDIO controller. The MMC/SD/SDIO controller transmits commands to the card and the memory card drives responses to the commands on this pin.

    When you make AM335x device pin an input (PIN_INPUT_PULLUP), you are making it I/O, it is not input only. Check also AM335x TRM (ch 18 MMC) regarding mmc_clk signal, it is output only, but is made I/O (PIN_INPUT_PULLUP) for retiming.

    Regards,
    Pavel