Question on USB host (EHCI) on Beagleboard

I am runing ThreadX from Expresslogic on the beagleboard XM. I need to access the EHCI controller.
I have a EHCI driver, all I need now is to configure the power ad GPIO to turn on power to the EHCI
and the internal hub.
Question 1. How to turn on 1.8 to VAUX2 ? There is no description how to address VAUX2 on the TPS65950 chip.
I assume it is through I2C but at what address, what message ?
Question 2 When VAUX2 is set to 1.8V, is the power to the hub automatically turned on ?


Did you look at the datasheet for the TPS65950?

Power to the HUB is not automatically turned on.


Hi, yes I did. My main problem right now is configuring the I2C to set VAUX2 to 1.8V.
But right now, I cannot even enable any of the I2C, even by accessing directly the I2C registers through TI’s Code Composer.
Remember we are starting with a bare RTOS, not Linux so I may be missing something at the low level bsp.

Did you make sure the pin muxing was set correctly?


Pin muxing ?
Not sure what you are referring to. Can you please elaborate ?
Or are you referring to this :

/* Set clock register for I2C1. */
*((ULONG *) CM_ICLKEN1_CORE) |= 1 << 15;

*((ULONG *) CM_FCLKEN1_CORE) |= 1 << 15);


Oh. Every pin on the processor can be 8 different signals. IF you don’t have the signal you want connected, pin muxing, then it is not connected to that pin.

I suggest you take a few minutes and read the Technical Reference Manual for the processor. It has an explanation there.


Thanks. Do you think it would be a lot easier if there was something in the documentation of the BeagleBoard that explicitly shows what the pin mux should be for powering up the EHCI ? Which is exactly what I a am asking.

I suppose. But that is in the TRM for the processor, the schematic symbol, and the software that runs on the board. I am not anxious to rewrite those two sources into another document. Makes for a lot of redundant work when you consider I would need to do that for every single pin used on the board.


These are the GPIOS I initialized :

/* Initialize GPIOs /
GPIO5: 31,30,29,28,22,21,15,14,13,12

  • GPIO6: 23,10,08,02,01 /
    (REG32(GPIO5_BASE+GPIO_OE))) = ~(PIN31|PIN30|PIN29|PIN28|PIN22|PIN21|PIN15|PIN14|PIN13|PIN12);
    (*(REG32(GPIO6_BASE+GPIO_OE))) = ~(PIN23|PIN10|PIN8|PIN2|PIN1);

Is there anything else on the BeagleBoard to be done ?

The reality is that this all works in the code that ships with the board. So nothing else should be required.

Make sure that the HUB is powered on. Page 10 of the schematic. Controlled via LEDA of the PMIC. Page 6 of the schematic.


Gerald, that was my original question. How to turn on LEDA on the PMIC. We don’t use any of Linux code. So I need to initialize a specific GPIO (I guess) to enable that LEDA. Question is which one.

It is not a GPIO on the processor. You talk to the PMIC over I2C. Look at the TPS65950 datasheet for the register and its address in the TPS65950 datasheet.