AnsweredAssumed Answered

IMX6 usb host port error and no response on OTG port

Question asked by j b on Aug 1, 2014
Latest reply on Aug 14, 2014 by j b

I have two usb ports, a usb-standard A port and a usb-mini port, on my custom board, neither of which are working properly.  My custom board has an IMX6Q and is based on the sabresd platform.

 

When I plug a usb stick into the usb-standard port I get the following output on dmesg:

ehci_fsl_bus_resume begins, Host 1

ehci_fsl_bus_resume ends, Host 1

usb 2-1: new high speed USB device number 10 using fsl-ehci

usb 2-1: device descriptor read/64, error -71

usb 2-1: device descriptor read/64, error -71

usb 2-1: new high speed USB device number 11 using fsl-ehci

usb 2-1: device descriptor read/64, error -71

usb 2-1: device descriptor read/64, error -71

usb 2-1: new high speed USB device number 12 using fsl-ehci

usb 2-1: device not accepting address 12, error -71

usb 2-1: new high speed USB device number 13 using fsl-ehci

usb 2-1: device not accepting address 13, error -71

hub 2-0:1.0: unable to enumerate USB device on port 1

ehci_fsl_bus_suspend begins, Host 1

ehci_fsl_bus_suspend ends, Host 1

 

Plugging a host device, like a computer, into the OTG usb mini port.  I get no response at all.

 

---------------------------------------------------------------------------------------------------------------------------------------------------

Here is my initialization code:

 

I've defined these pads for driving the usb-standard A port:

MX6Q_PAD_GPIO_0__GPIO_1_0                       /*USB_H1_PWR*/

MX6Q_PAD_GPIO_3__USBOH3_USBH1_OC      /*USB_H1_OC*/

 

I've defined these pads for driving the usb-mini port:

MX6Q_PAD_GPIO_1__USBOTG_ID                         /*USB_OTG_ID*/

MX6Q_PAD_KEY_COL4__USBOH3_USBOTG_OC   /*USB_OTG_OC*/

MX6Q_PAD_KEY_ROW4__GPIO_4_15                    /*USB_OTG_PWR*/

 

Here is my usb initialization function:

 

#define USB_OTG_PWR      IMX_GPIO_NR(4, 15)

#define USB_H1_PWR         IMX_GPIO_NR(1, 0)

 

static void imx6q_dtra3_usbotg_vbus(bool on) {

  if (on)

     gpio_set_value(USB_OTG_PWR, 1);

  else

     gpio_set_value(USB_OTG_PWR, 0);

}

 

static void imx6q_dtra3_host1_vbus(bool on) {

  if (on)

     gpio_set_value(USB_H1_PWR, 1);

  else

     gpio_set_value(USB_H1_PWR, 0);

}

 

static void __init imx6q_dtra3_init_usb(void) {

  int ret = 0;

  imx_otg_base = MX6_IO_ADDRESS(MX6Q_USB_OTG_BASE_ADDR);

  ret = gpio_request(USB_OTG_PWR, "usb-pwr");

  if (ret) {

       pr_err("failed to get GPIO USB_OTG_PWR: %d\n", ret);

       return;

  }

  gpio_direction_output(USB_OTG_PWR, 0);

  

  /* keep USB host1 VBUS always on */

  ret = gpio_request(USB_H1_PWR, "usb-h1-pwr");

  if (ret) {

       pr_err("failed to get GPIO USB_H1_PWR: %d\n", ret);

       return;

  }

  gpio_direction_output(USB_H1_PWR, 1);

  mxc_iomux_set_gpr_register(1, 13, 1, 1);

 

  mx6_set_otghost_vbus_func(imx6q_dtra3_usbotg_vbus);

  mx6_set_host1_vbus_func(imx6q_dtra3_host1_vbus);

}

--------------------------------------------------------------------------------------------------------------------------------------


Here is the output of cat /proc/driver/isp1504_otg

Freescale USB OTG Driver

fsl_usb2_otg version: $Revision: 1.55 $

OTGSC reg: 01042120

PORTSC reg: 1cd01000

USBMODE reg: 00000013

USBCMD reg: 00010004

USBSTS reg: 00001088

OTG state: UNDEFINED

a_bus_req: 1

b_bus_req: 0

a_bus_resume: 0

a_bus_suspend: 0

a_conn: 0

a_sess_vld: 0

a_srp_det: 0

a_vbus_vld: 0

b_bus_resume: 0

b_bus_suspend: 0

b_conn: 0

b_se0_srp: 0

b_sess_end: 0

b_sess_vld: 0

id: 1

-------------------------------------------------------------------------------------------------------------------------------------------

Here is my kernel start-up log:

 

U-Boot 2009.08 (Jul 30 2014 - 08:50:28)

 

CPU: Freescale i.MX6 family TO1.2 at 792 MHz

Thermal sensor with ratio = 185

Temperature:   31 C, calibration data 0x5954e57d

mx6q pll1: 792MHz

mx6q pll2: 528MHz

mx6q pll3: 480MHz

mx6q pll8: 50MHz

ipg clock     : 66000000Hz

ipg per clock : 66000000Hz

uart clock    : 80000000Hz

cspi clock    : 60000000Hz

ahb clock     : 132000000Hz

axi clock   : 264000000Hz

emi_slow clock: 132000000Hz

ddr clock     : 528000000Hz

usdhc1 clock  : 198000000Hz

usdhc2 clock  : 198000000Hz

usdhc3 clock  : 198000000Hz

usdhc4 clock  : 198000000Hz

nfc clock     : 24000000Hz

Board: i.MX6Q-DTRA-3: DTRA3 Board: 0x63e12 [WDOG]

Boot Device: SD (2)

I2C:   ready

DRAM:   1 GB

MMC:   FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3

In:    serial

Out:   serial

Err:   serial

i2c: I2C3 SDA is low, start i2c recovery...

I2C3 Recovery failed, I2C1 SDA still low!!!

Net:   got MAC address from IIM: 00:00:00:00:00:00

enet_board_init: reset phy

FEC0 [PRIME]

Hit any key to stop autoboot:  0

mmc1 is current device

 

 

MMC read: dev # 1, block # 2048, count 8192 ... 8192 blocks read: OK

## Booting kernel from Legacy Image at 10800000 ...

   Image Name:   Linux-3.0.35-2508-g54750ff

   Image Type:   ARM Linux Kernel Image (uncompressed)

   Data Size:    3952880 Bytes =  3.8 MB

   Load Address: 10008000

   Entry Point:  10008000

   Verifying Checksum ... OK

   Loading Kernel Image ... OK

OK

 

 

Starting kernel ...

 

 

Linux version 3.0.35-2508-g54750ff (jbert@claws) (gcc version 4.6.2 20110630 (prerelease) (Freescale MAD -- Linaro 2011.07 -- Built at 2011/08/10 09:20) ) #55 SMP PREEMPT Fri Aug 1 15:37:56 PDT 2014

CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d

CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache

Machine: PARC DTRA3  based on 6Quad Sabre-SD Board

Ignoring unrecognised tag 0x54410008

Memory policy: ECC disabled, Data cache writealloc

CPU identified as i.MX6Q, silicon rev 1.2

PERCPU: Embedded 7 pages/cpu @8c008000 s5440 r8192 d15040 u32768

Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 194560

Kernel command line: maxcpus=1 console=ttymxc0,115200 root=/dev/mmcblk1p1 rw rootwait

PID hash table entries: 4096 (order: 2, 16384 bytes)

Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)

Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)

Memory: 512MB 256MB = 768MB total

Memory: 765572k/765572k available, 283004k reserved, 0K highmem

Virtual kernel memory layout:

    vector  : 0xffff0000 - 0xffff1000   (   4 kB)

    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)

    DMA     : 0xf4600000 - 0xffe00000   ( 184 MB)

    vmalloc : 0xc0800000 - 0xf2000000   ( 792 MB)

    lowmem  : 0x80000000 - 0xc0000000   (1024 MB)

    pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)

    modules : 0x7f000000 - 0x7fe00000   (  14 MB)

      .init : 0x80008000 - 0x8003e000   ( 216 kB)

      .text : 0x8003e000 - 0x80abca18   (10747 kB)

      .data : 0x80abe000 - 0x80b23280   ( 405 kB)

       .bss : 0x80b232a4 - 0x80b7184c   ( 314 kB)

SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=4, Nodes=1

Preemptible hierarchical RCU implementation.

NR_IRQS:624

MXC GPIO hardware

sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms

arm_max_freq=1GHz

MXC_Early serial console at MMIO 0x2020000 (options '115200')

bootconsole [ttymxc0] enabled

Console: colour dummy device 80x30

Calibrating delay loop... 1581.05 BogoMIPS (lpj=7905280)

pid_max: default: 32768 minimum: 301

Mount-cache hash table entries: 512

CPU: Testing write buffer coherency: ok

hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available

Brought up 1 CPUs

SMP: Total of 1 processors activated (1581.05 BogoMIPS).

print_constraints: dummy:

NET: Registered protocol family 16

print_constraints: vddpu: 725 <--> 1300 mV at 700 mV fast normal

print_constraints: vddcore: 725 <--> 1300 mV at 1150 mV fast normal

print_constraints: vddsoc: 725 <--> 1300 mV at 1200 mV fast normal

print_constraints: vdd2p5: 2000 <--> 2775 mV at 2400 mV fast normal

print_constraints: vdd1p1: 800 <--> 1400 mV at 1100 mV fast normal

print_constraints: vdd3p0: 2625 <--> 3400 mV at 3000 mV fast normal

***********************INIT USB********************

Power down KEY_ROW4: USB_OTG_PWR

Power up GPIO_0: USB_H1_PWR

hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.

hw-breakpoint: 1 breakpoint(s) reserved for watchpoint single-step.

hw-breakpoint: maximum watchpoint size is 4 bytes.

L310 cache controller enabled

l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x02070000, Cache size: 1048576 B

bio: create slab <bio-0> at 0

mxs-dma mxs-dma-apbh: initialized

print_constraints: vmmc: 3300 mV

vgaarb: loaded

SCSI subsystem initialized

spi_imx imx6q-ecspi.0: probed

usbcore: registered new interface driver usbfs

usbcore: registered new interface driver hub

usbcore: registered new device driver usb

Freescale USB OTG Driver loaded, $Revision: 1.55 $

MIPI CSI2 driver module loaded

Advanced Linux Sound Architecture Driver Version 1.0.24.

Bluetooth: Core ver 2.16

NET: Registered protocol family 31

Bluetooth: HCI device and connection manager initialized

Bluetooth: HCI socket layer initialized

Bluetooth: L2CAP socket layer initialized

Bluetooth: SCO socket layer initialized

i2c-core: driver [max17135] using legacy suspend method

i2c-core: driver [max17135] using legacy resume method

Switching to clocksource mxc_timer1

cfg80211: Calling CRDA to update world regulatory domain

NET: Registered protocol family 2

IP route cache hash table entries: 32768 (order: 5, 131072 bytes)

TCP established hash table entries: 131072 (order: 8, 1048576 bytes)

TCP bind hash table entries: 65536 (order: 7, 786432 bytes)

TCP: Hash tables configured (established 131072 bind 65536)

TCP reno registered

UDP hash table entries: 512 (order: 2, 16384 bytes)

UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)

NET: Registered protocol family 1

RPC: Registered named UNIX socket transport module.

RPC: Registered udp transport module.

RPC: Registered tcp transport module.

RPC: Registered tcp NFSv4.1 backchannel transport module.

PMU: registered new PMU device of type 0

Static Power Management for Freescale i.MX6

wait mode is enabled for i.MX6

cpaddr = c0880000 suspend_iram_base=c0828000

PM driver module loaded

IMX usb wakeup probe

add wake up source irq 75

IMX usb wakeup probe

cpu regulator mode:ldo_enable

i.MXC CPU frequency driver

JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.

msgmni has been set to 1495

alg: No test for stdrng (krng)

io scheduler noop registered

io scheduler deadline registered

io scheduler cfq registered (default)

MIPI DSI driver module loaded

imx-sdma imx-sdma: loaded firmware 1.1

imx-sdma imx-sdma: initialized

Serial: IMX driver

imx-uart.0: ttymxc0 at MMIO 0x2020000 (irq = 58) is a IMX

console [ttymxc0] enabled, bootconsole disabled

console [ttymxc0] enabled, bootconsole disabled

loop: module loaded

m25p80 spi0.0: found m25p32, expected sst25vf016b

m25p80 spi0.0: m25p32 (4096 Kbytes)

Creating 2 MTD partitions on "m25p80":

0x000000000000-0x000000100000 : "bootloader"

0x000000100000-0x000000400000 : "kernel"

GPMI NAND driver registered. (IMX)

vcan: Virtual CAN interface driver

CAN device driver interface

flexcan netdevice driver

FEC Ethernet Driver

fec_enet_mii_bus: probed

ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver

fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller

fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 1

fsl-ehci fsl-ehci.0: irq 75, io base 0x02184000

fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00

hub 1-0:1.0: USB hub found

hub 1-0:1.0: 1 port detected

add wake up source irq 72

Power up GPIO_0: USB_H1_PWR

fsl-ehci fsl-ehci.1: Freescale On-Chip EHCI Host Controller

fsl-ehci fsl-ehci.1: new USB bus registered, assigned bus number 2

fsl-ehci fsl-ehci.1: irq 72, io base 0x02184200

fsl-ehci fsl-ehci.1: USB 2.0 started, EHCI 1.00

hub 2-0:1.0: USB hub found

hub 2-0:1.0: 1 port detected

Initializing USB Mass Storage driver...

usbcore: registered new interface driver usb-storage

USB Mass Storage support registered.

ARC USBOTG Device Controller driver (1 August 2005)

mousedev: PS/2 mouse device common for all mice

i2c-core: driver [isl29023] using legacy suspend method

i2c-core: driver [isl29023] using legacy resume method

snvs_rtc snvs_rtc.0: rtc core: registered snvs_rtc as rtc0

i2c /dev entries driver

Linux video capture interface: v2.00

i2c-core: driver [mag3110] using legacy suspend method

i2c-core: driver [mag3110] using legacy resume method

imx2-wdt imx2-wdt.0: IMX2+ Watchdog Timer enabled. timeout=60s (nowayout=1)

Bluetooth: Virtual HCI driver ver 1.3

Bluetooth: HCI UART driver ver 2.2

Bluetooth: HCIATH3K protocol initialized

Bluetooth: Generic Bluetooth USB driver ver 0.6

usbcore: registered new interface driver btusb

sdhci: Secure Digital Host Controller Interface driver

sdhci: Copyright(c) Pierre Ossman

mmc0: SDHCI controller on platform [sdhci-esdhc-imx.3] using DMA

mmc1: SDHCI controller on platform [sdhci-esdhc-imx.1] using DMA

mmc2: SDHCI controller on platform [sdhci-esdhc-imx.2] using DMA

mxc_vdoa mxc_vdoa: i.MX Video Data Order Adapter(VDOA) driver probed

VPU initialized

Thermal calibration data is 0x5954e57d

Thermal sensor with ratio = 185

Anatop Thermal registered as thermal_zone0

anatop_thermal_probe: default cooling device is cpufreq!

usbcore: registered new interface driver usbhid

usbhid: USB HID core driver

usbcore: registered new interface driver snd-usb-audio

Cirrus Logic CS42888 ALSA SoC Codec Driver

i2c-core: driver [cs42888] using legacy suspend method

i2c-core: driver [cs42888] using legacy resume method

imx_3stack asoc driver

Initialize HDMI-audio failed. Load HDMI-video first!

ALSA device list:

  No soundcards found.

NET: Registered protocol family 26

TCP cubic registered

NET: Registered protocol family 17

can: controller area network core (rev 20090105 abi 8)

NET: Registered protocol family 29

can: raw protocol (rev 20090105)

can: broadcast manager protocol (rev 20090105 t)

Bluetooth: RFCOMM TTY layer initialized

Bluetooth: RFCOMM socket layer initialized

Bluetooth: RFCOMM ver 1.11

Bluetooth: BNEP (Ethernet Emulation) ver 1.3

Bluetooth: BNEP filters: protocol multicast

Bluetooth: HIDP (Human Interface Emulation) ver 1.2

lib80211: common routines for IEEE802.11 drivers

VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4

Bus freq driver module loaded

Bus freq driver Enabled

mxc_dvfs_core_probe

DVFS driver module loaded

snvs_rtc snvs_rtc.0: setting system clock to 1970-01-01 00:00:00 UTC (0)

Waiting for root device /dev/mmcblk1p1...

mmc0: new high speed DDR MMC card at address 0001

mmcblk0: mmc0:0001 MMC64G 30.2 GiB

mmcblk0boot0: mmc0:0001 MMC64G partition 1 2.00 MiB

mmcblk0boot1: mmc0:0001 MMC64G partition 2 2.00 MiB

mmcblk0: p1

mmcblk0boot1: unknown partition table

mmcblk0boot0: unknown partition table

mmc1: new high speed SDHC card at address 0007

mmcblk1: mmc1:0007 SD08G 7.42 GiB

mmcblk1: p1

EXT3-fs: barriers not enabled

kjournald starting.  Commit interval 5 seconds

EXT3-fs (mmcblk1p1): using internal journal

EXT3-fs (mmcblk1p1): mounted filesystem with writeback data mode

VFS: Mounted root (ext3 filesystem) on device 179:25.

Power down KEY_ROW4: USB_OTG_PWR

Freeing init memory: 216K

starting pid 1304, tty '': '/etc/rc.d/rcS'

Mounting /proc and /sys

Starting the hotplug events dispatcher udevd

Synthesizing initial hotplug evenudevd (1313): /proc/1313/oom_adj is deprecated, please use /proc/1313/oom_score_adj instead.

ts

Setting the hostname to dtra_3

Mounting filesystems

mount: sysfs already mounted or /sys busy

mount: according to mtab, /sys is already mounted on /sys

mount: mount point /proc/bus/usb does not exist

Starting syslogd and klogd

Running sysctl

Setting up networking on loopback device:

Setting up networking on eth0:

udhcpc (v1.20.2) started

eth0: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=1:01, irq=-1)

Sending discover...

Sending discover...

Sending discover...

No lease, forking to background

starting pid 2343, tty '': '/etc/rc.d/rc_gpu.S'

/etc/rc.d/rc_gpu.S: line 6: /sys/module/galcore/parameters/gpu3DMinClock: No such file or directory

starting pid 2349, tty '': '/etc/rc.d/rc_mxc.S'

 

 

arm-none-linux-gnueabi-gcc (Freescale MAD -- Linaro 2011.07 -- Built at 2011/08/10 09:20) 4.6.2 20110630 (prerelease)

root filesystem built on Wed, 02 Jul 2014 14:39:19 -0700

Freescale Semiconductor, Inc.

Outcomes