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 = <®_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š
Solved! Go to Solution.
Unfortunately the PWM pins cannot provide 5V. The wording on the datasheet may be misinterpreted as it does not provide enough information on this feature.
“PMU Generates USB-Host 5-V from Li-Ion battery (using PWM).”
http://cache.freescale.com/files/32bit/doc/data_sheet/IMX28CEC.pdf
This means that the PWM pins may be used to feed a switching circuitry or switching regulator to provide the 5V required by the USB-Host. However, we do not have an application note or example of this implementation.
I apologize for the confusion.
Unfortunately the PWM pins cannot provide 5V. The wording on the datasheet may be misinterpreted as it does not provide enough information on this feature.
“PMU Generates USB-Host 5-V from Li-Ion battery (using PWM).”
http://cache.freescale.com/files/32bit/doc/data_sheet/IMX28CEC.pdf
This means that the PWM pins may be used to feed a switching circuitry or switching regulator to provide the 5V required by the USB-Host. However, we do not have an application note or example of this implementation.
I apologize for the confusion.
Thank you for your answer. After doing some research on my own I've came to the same conclusion. This is highly unfortunate.
Regards,
Gordan Markuš