AnsweredAssumed Answered

i.MX28 5V0 voltage regulator powering an USB interface (GPIO pin)

Question asked by Gordan Markus on May 28, 2014
Latest reply on Jun 1, 2014 by Gordan Markus

Hello,

 

I'm currently experiencing issues trying to use one of i.MX28 GPIO pins to produce a 5V output (using a voltage regulator) in order to power an USB interface (a camera board to be precise). This is a custom board and the USB power pin in question is GPIO3_28 (MX28_PAD_PWM3__GPIO_3_28) and the over-current pin is connected to GPIO3_18 (MX28_PAD_PWM2__USB1_OVERCURRENT). The kernel in question is 3.14-rc5

 

The device tree definitions vital to this issue are the following:

 

PIN DEFINITIONS:

 

pinctrl@80018000 {

  pinctrl-names = "default";

  pinctrl-0 = <&hog_pins_a>;


hog_pins_a: hog@0 {

  reg = <0>;

  fsl,pinmux-ids = <

       0x2053 /* MX28_PAD_SSP0_DATA5__GPIO_2_5 */

       0x2063 /* MX28_PAD_SSP0_DATA6__GPIO_2_6 */

       0x2073 /* MX28_PAD_SSP0_DATA7__GPIO_2_7 */

       0x3043 /* MX28_PAD_AUART1_RX__GPIO_3_4 */

       0x3053 /* MX28_PAD_AUART1_TX__GPIO_3_5 */

       0x31c3  /* MX28_PAD_PWM3__GPIO_3_28 */    

       >;

  fsl,drive-strength = <MXS_DRIVE_4mA>;

  fsl,voltage = <MXS_VOLTAGE_HIGH>;

  fsl,pull-up = <MXS_PULL_DISABLE>;

  };

 

usbphy1_pins: usbphy1-pins {

  fsl,pinmux-ids = <

       MX28_PAD_PWM2__USB1_OVERCURRENT

  >;

  fsl,drive-strength = <MXS_DRIVE_12mA>;

  fsl,voltage = <MXS_VOLTAGE_HIGH>;

  fsl,pull-up = <MXS_PULL_DISABLE>;

  };

 

USBPHY DEFINITON:

 

usbphy1: usbphy@8007e000 {

  pinctrl-names = "default";

  pinctrl-0 = <&usbphy1_pins>;

  status = "okay";

  };

 

USB DEFINITION:

 

usb1: usb@80090000 {

  vbus-supply = <&reg_usb1_vbus>;

  dr_mode = "host";

  disable-over-current;

  status = "okay";

  };

 

REGULATOR DEFINITION:

 

reg_usb1_vbus: usb1_vbus {

  compatible = "regulator-fixed";

  regulator-name = "usb1_vbus";

  regulator-min-microvolt = <5000000>;

  regulator-max-microvolt = <5000000>;

  gpio = <&gpio3 28 0>;

  enable-active-high;

  };

 

IFCONFIG:

(usb0 -> ../../devices/soc0/80080000.ahb/80090000.usb/ci_hdrc.1/usb2/2-1/2-1:1.0/net/usb0)

 

usb0   Link encap:Ethernet  HWaddr 8A:D8:73:29:3F:F5

          inet addr:172.16.245.114  Bcast:172.16.255.255  Mask:255.255.0.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:18 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:0 (0.0 B)  TX bytes:3919 (3.8 KiB)

 

The USB device is recognized (ci_hdrc device) but the voltage that I measure is 3V3 and not 5V0.  Maybe I am overlooking the bindings from USB/PHY driver to the regulator. I would gladly appreciate any help with this issue.

 

Regards,

 

Gordan Markuš

Outcomes