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.

Pinmux pullup on HPDET in dm814x

Hi,

I have a custom board which requires me to put a pull-up on HDMI_HPDET.  I have the pinmux utility output specified to do this:

MUX_VAL(PINCNTL116, (IEN | IPU | FCN8 )) /* GP1[22] */\

And, at the end of ti8148_evm_init() (in board-ti8148evm.c), my value is still there.  I.e., *fa1409bc = 0x060010

But, by the time I hit the linux prompt, someone has taken away my pull-up:

# cat /sys/kernel/debug/omap_mux/gpmc_a_23_mux0
name: gpmc_a_23_mux0.hdmi_hpd_mux0 (0x481409bc/0x9bc = 0x40010), b NA, t NA
mode: OMAP_PIN_OUTPUT | OMAP_MUX_MODE0
signals: gpmc_a_23_mux0 | NA | spi2_sclk_mux0 | NA | hdmi_hpd_mux0 | NA | timer5_mux2 | gpio1_18_mux0

Does anyone happen to know where this occurs?  I've spent all day adding printk's to omap mux functions, and have not been able to figure it out.

Dan -

  • Hi Dan,
     
    Check if there is a pinmux section in the kernel. If there is one, it overwrites the u-boot values.
  • Biser,

    I found it.  The HPDET pinmux is being overwritten in drivers/video/ti81xx/ti81xxhdmi/hdmi.c, in ti814x_enable_ddc_pinmux():

    temp = 0xe0002;
    __raw_writel(temp, (base+0x0934));
    temp = 0xe0002;
    __raw_writel(temp, (base+0x0938));
    temp = 0x60010;
    __raw_writel(temp, (base+0x09b8));
    temp = 0x40010;
    __raw_writel(temp, (base+0x09bc));

    They were elusive because these functions circumvent the omap_mux functions.  When I disable these, then my u-boot settings are conserved.

    Thanks,

    Dan -