Hi, I'm using a mostly unmodified older version of the dwc2 driver in NetBSD taken from git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git Import latest dwc2 sources commit 192cb07f7928e8cb09a9851e6c0f7478baa3bc6d Author: John Youn <John.Youn@xxxxxxxxxxxx <mailto:John.Youn@xxxxxxxxxxxx>> Date: Mon Jan 11 16:32:28 2016 -0800 and it would appear that the hardware isn't handling the device NAKs in DMA mode. I understand from the code that in DMA mode the NAKs should be handled in hardware and not generate interrupts. Is this the case? Any pointers? Thanks, Nick dwctwo0: dwc2_hc_init() dwctwo0: DMA enabled dwctwo0: desc DMA disabled dwctwo0: set HCINTMSK to 00000006 dwctwo0: set HAINTMSK to 00000080 dwctwo0: set GINTMSK to f3000806 dwctwo0: set HCCHAR(7) to 00881200 dwctwo0: dwc2_hc_init: Channel 7 dwctwo0: Dev Addr: 2 dwctwo0: Ep Num: 2 dwctwo0: Is In: 0 dwctwo0: Is Low Speed: 0 dwctwo0: Ep Type: 2 dwctwo0: Max Pkt: 512 dwctwo0: Queue non-periodic transactions dwctwo0: NP Tx Req Queue Space Avail (before queue): 8 dwctwo0: NP Tx FIFO Space Avail (before queue): 912 dwctwo0: dwc2_hc_start_transfer() dwctwo0: ping, DMA dwctwo0: no split dwctwo0: Wrote 80401000 to HCTSIZ(7) dwctwo0: dwc2_hc_start_transfer: Channel 7 dwctwo0: Xfer Size: 4096 dwctwo0: Num Pkts: 8 dwctwo0: Start PID: 0 dwctwo0: Multi Cnt: 1 dwctwo0: Wrote 80981200 to HCCHAR(7) dwctwo0: --Host Channel Interrupt--, Channel 7 dwctwo0: hcint 0x00000012, hcintmsk 0x00000002, hcint&hcintmsk 0x00000002 dwctwo0: --Host Channel 7 Interrupt: Channel Halted-- dwctwo0: --Host Channel 7 Interrupt: DMA Channel Halted-- dwctwo0: --Host Channel 7 Interrupt: NAK Received-- dwctwo0: DWC_otg: dwc2_update_urb_state_abn: OUT, channel 7 dwctwo0: chan->start_pkt_count 8 dwctwo0: hctsiz.pktcnt 8 dwctwo0: chan->max_packet 512 dwctwo0: bytes_transferred 0 dwctwo0: urb->actual_length 0 dwctwo0: urb->transfer_buffer_length 4096 dwctwo0: dwc2_halt_channel() dwctwo0: DMA enabled dwctwo0: dwc2_release_channel: channel 7, halt_status 4 dwctwo0: dwc2_deactivate_qh(0xffffffff8d046808,0xffffffff8cf6bce0,0) dwctwo0: dwc2_hcd_qh_deactivate() dwctwo0: dwc2_hcd_qh_unlink() dwctwo0: dwc2_hcd_qh_add() dwctwo0: dwc2_assign_and_init_hc(0xffffffff8d046808,0xffffffff8cf6bce0) dwctwo0: dwc2_hc_init() dwctwo0: DMA enabled dwctwo0: desc DMA disabled dwctwo0: set HCINTMSK to 00000006 dwctwo0: set HAINTMSK to 00000001 dwctwo0: set GINTMSK to f3000806 dwctwo0: set HCCHAR(0) to 00881200 dwctwo0: dwc2_hc_init: Channel 0 dwctwo0: Dev Addr: 2 dwctwo0: Ep Num: 2 dwctwo0: Is In: 0 dwctwo0: Is Low Speed: 0 dwctwo0: Ep Type: 2 dwctwo0: Max Pkt: 512 dwctwo0: Queue non-periodic transactions dwctwo0: NP Tx Req Queue Space Avail (before queue): 8 dwctwo0: NP Tx FIFO Space Avail (before queue): 912 dwctwo0: dwc2_hc_start_transfer() dwctwo0: ping, DMA dwctwo0: no split dwctwo0: Wrote 80401000 to HCTSIZ(0) dwctwo0: dwc2_hc_start_transfer: Channel 0 dwctwo0: Xfer Size: 4096 dwctwo0: Num Pkts: 8 dwctwo0: Start PID: 0 dwctwo0: Multi Cnt: 1 dwctwo0: Wrote 80981200 to HCCHAR(0) dwctwo0: --Host Channel Interrupt--, Channel 0 dwctwo0: hcint 0x00000012, hcintmsk 0x00000002, hcint&hcintmsk 0x00000002 dwctwo0: --Host Channel 0 Interrupt: Channel Halted-- dwctwo0: --Host Channel 0 Interrupt: DMA Channel Halted-- dwctwo0: --Host Channel 0 Interrupt: NAK Received-- dwctwo0: DWC_otg: dwc2_update_urb_state_abn: OUT, channel 0 dwctwo0: chan->start_pkt_count 8 dwctwo0: hctsiz.pktcnt 8 dwctwo0: chan->max_packet 512 dwctwo0: bytes_transferred 0 dwctwo0: urb->actual_length 0 dwctwo0: urb->transfer_buffer_length 4096 dwctwo0: dwc2_halt_channel() dwctwo0: DMA enabled dwctwo0: dwc2_release_channel: channel 0, halt_status 4 dwctwo0: dwc2_deactivate_qh(0xffffffff8d046808,0xffffffff8cf6bce0,0) dwctwo0: dwc2_hcd_qh_deactivate() dwctwo0: dwc2_hcd_qh_unlink() dwctwo0: dwc2_hcd_qh_add() dwctwo0: dwc2_assign_and_init_hc(0xffffffff8d046808,0xffffffff8cf6bce0) dwctwo0: dwc2_hc_init()
dwctwo0: Core Release: 2.65a (snpsid=4f54265a) dwctwo0: hwcfg1=00000000 dwctwo0: hwcfg2=7a8dd04a dwctwo0: hwcfg3=07200ce8 dwctwo0: hwcfg4=08344024 dwctwo0: grxfsiz=00000720 dwctwo0: Forcing mode to host dwctwo0: gnptxfsiz=07200720 dwctwo0: hptxfsiz=01000e40 dwctwo0: Detected values from hardware: dwctwo0: op_mode=2 dwctwo0: arch=1 dwctwo0: dma_desc_enable=0 dwctwo0: power_optimized=0 dwctwo0: i2c_enable=0 dwctwo0: hs_phy_type=1 dwctwo0: fs_phy_type=0 dwctwo0: utmi_phy_data_width=1 dwctwo0: num_dev_ep=4 dwctwo0: num_dev_perio_in_ep=4 dwctwo0: host_channels=8 dwctwo0: max_transfer_size=65535 dwctwo0: max_packet_count=1023 dwctwo0: nperio_tx_q_depth=0x4 dwctwo0: host_perio_tx_q_depth=0x4 dwctwo0: dev_token_q_depth=0x1e dwctwo0: enable_dynamic_fifo=1 dwctwo0: en_multiple_tx_fifo=0 dwctwo0: total_fifo_size=1824 dwctwo0: host_rx_fifo_size=1824 dwctwo0: host_nperio_tx_fifo_size=1824 dwctwo0: host_perio_tx_fifo_size=256 dwctwo0: dwctwo0: dwc2_set_parameters() dwctwo0: Setting dma_desc_fs_enable to 0 dwctwo0: Setting external_id_pin_ctl to 0 dwctwo0: Setting hibernation to 0 dwctwo0: DWC OTG HCD INIT dwctwo0: hcfg=00000000 dwctwo0: dwc2_core_init(0xffffffff8d046808) dwctwo0: HS UTMI+ PHY selected dwctwo0: External DMA Mode dwctwo0: dma_enable:1 dma_desc_enable:0 dwctwo0: Using Buffer DMA mode dwctwo0: OTG VER PARAM: 0 dwctwo0: Host Mode dwctwo0: DWC OTG HCD START dwctwo0: dwc2_core_host_init(0xffffffff8d046808) dwctwo0: Initializing HCFG.FSLSPClkSel to 00000000 dwctwo0: initial grxfsiz=00000720 dwctwo0: new grxfsiz=000001c8 dwctwo0: initial gnptxfsiz=07200720 dwctwo0: new gnptxfsiz=039001c8 dwctwo0: initial hptxfsiz=01000e40 dwctwo0: new hptxfsiz=01000558 dwctwo0: Flush Tx FIFO 16 dwctwo0: dwc2_flush_rx_fifo() dwctwo0: dwc2_core_host_init: Halt channel 0 dwctwo0: dwc2_core_host_init: Halt channel 1 dwctwo0: dwc2_core_host_init: Halt channel 2 dwctwo0: dwc2_core_host_init: Halt channel 3 dwctwo0: dwc2_core_host_init: Halt channel 4 dwctwo0: dwc2_core_host_init: Halt channel 5 dwctwo0: dwc2_core_host_init: Halt channel 6 dwctwo0: dwc2_core_host_init: Halt channel 7 dwctwo0: Init: Port Power? op_state=1 dwctwo0: Init: Power Port (0) dwctwo0: dwc2_enable_host_interrupts() dwctwo0: dwctwo0: ************************************************************ dwctwo0: HCD State: dwctwo0: Num channels: 8 dwctwo0: Channel 0: dwctwo0: dev_addr: 0, ep_num: 0, ep_is_in: 0 dwctwo0: speed: 0 dwctwo0: ep_type: 0 dwctwo0: max_packet: 0 dwctwo0: data_pid_start: 0 dwctwo0: multi_count: 0 dwctwo0: xfer_started: 0 dwctwo0: xfer_buf: 0x0 dwctwo0: xfer_dma: 00000000 dwctwo0: xfer_len: 0 dwctwo0: xfer_count: 0 dwctwo0: halt_on_queue: 0 dwctwo0: halt_pending: 0 dwctwo0: halt_status: 0 dwctwo0: do_split: 0 dwctwo0: complete_split: 0 dwctwo0: hub_addr: 0 dwctwo0: hub_port: 0 dwctwo0: xact_pos: 0 dwctwo0: requests: 0 dwctwo0: qh: 0x0 dwctwo0: Channel 1: dwctwo0: dev_addr: 0, ep_num: 0, ep_is_in: 0 dwctwo0: speed: 0 dwctwo0: ep_type: 0 dwctwo0: max_packet: 0 dwctwo0: data_pid_start: 0 dwctwo0: multi_count: 0 dwctwo0: xfer_started: 0 dwctwo0: xfer_buf: 0x0 dwctwo0: xfer_dma: 00000000 dwctwo0: xfer_len: 0 dwctwo0: xfer_count: 0 dwctwo0: halt_on_queue: 0 dwctwo0: halt_pending: 0 dwctwo0: halt_status: 0 dwctwo0: do_split: 0 dwctwo0: complete_split: 0 dwctwo0: hub_addr: 0 dwctwo0: hub_port: 0 dwctwo0: xact_pos: 0 dwctwo0: requests: 0 dwctwo0: qh: 0x0 dwctwo0: Channel 2: dwctwo0: dev_addr: 0, ep_num: 0, ep_is_in: 0 dwctwo0: speed: 0 dwctwo0: ep_type: 0 dwctwo0: max_packet: 0 dwctwo0: data_pid_start: 0 dwctwo0: multi_count: 0 dwctwo0: xfer_started: 0 dwctwo0: xfer_buf: 0x0 dwctwo0: xfer_dma: 00000000 dwctwo0: xfer_len: 0 dwctwo0: xfer_count: 0 dwctwo0: halt_on_queue: 0 dwctwo0: halt_pending: 0 dwctwo0: halt_status: 0 dwctwo0: do_split: 0 dwctwo0: complete_split: 0 dwctwo0: hub_addr: 0 dwctwo0: hub_port: 0 dwctwo0: xact_pos: 0 dwctwo0: requests: 0 dwctwo0: qh: 0x0 dwctwo0: Channel 3: dwctwo0: dev_addr: 0, ep_num: 0, ep_is_in: 0 dwctwo0: speed: 0 dwctwo0: ep_type: 0 dwctwo0: max_packet: 0 dwctwo0: data_pid_start: 0 dwctwo0: multi_count: 0 dwctwo0: xfer_started: 0 dwctwo0: xfer_buf: 0x0 dwctwo0: xfer_dma: 00000000 dwctwo0: xfer_len: 0 dwctwo0: xfer_count: 0 dwctwo0: halt_on_queue: 0 dwctwo0: halt_pending: 0 dwctwo0: halt_status: 0 dwctwo0: do_split: 0 dwctwo0: complete_split: 0 dwctwo0: hub_addr: 0 dwctwo0: hub_port: 0 dwctwo0: xact_pos: 0 dwctwo0: requests: 0 dwctwo0: qh: 0x0 dwctwo0: Channel 4: dwctwo0: dev_addr: 0, ep_num: 0, ep_is_in: 0 dwctwo0: speed: 0 dwctwo0: ep_type: 0 dwctwo0: max_packet: 0 dwctwo0: data_pid_start: 0 dwctwo0: multi_count: 0 dwctwo0: xfer_started: 0 dwctwo0: xfer_buf: 0x0 dwctwo0: xfer_dma: 00000000 dwctwo0: xfer_len: 0 dwctwo0: xfer_count: 0 dwctwo0: halt_on_queue: 0 dwctwo0: halt_pending: 0 dwctwo0: halt_status: 0 dwctwo0: do_split: 0 dwctwo0: complete_split: 0 dwctwo0: hub_addr: 0 dwctwo0: hub_port: 0 dwctwo0: xact_pos: 0 dwctwo0: requests: 0 dwctwo0: qh: 0x0 dwctwo0: Channel 5: dwctwo0: dev_addr: 0, ep_num: 0, ep_is_in: 0 dwctwo0: speed: 0 dwctwo0: ep_type: 0 dwctwo0: max_packet: 0 dwctwo0: data_pid_start: 0 dwctwo0: multi_count: 0 dwctwo0: xfer_started: 0 dwctwo0: xfer_buf: 0x0 dwctwo0: xfer_dma: 00000000 dwctwo0: xfer_len: 0 dwctwo0: xfer_count: 0 dwctwo0: halt_on_queue: 0 dwctwo0: halt_pending: 0 dwctwo0: halt_status: 0 dwctwo0: do_split: 0 dwctwo0: complete_split: 0 dwctwo0: hub_addr: 0 dwctwo0: hub_port: 0 dwctwo0: xact_pos: 0 dwctwo0: requests: 0 dwctwo0: qh: 0x0 dwctwo0: Channel 6: dwctwo0: dev_addr: 0, ep_num: 0, ep_is_in: 0 dwctwo0: speed: 0 dwctwo0: ep_type: 0 dwctwo0: max_packet: 0 dwctwo0: data_pid_start: 0 dwctwo0: multi_count: 0 dwctwo0: xfer_started: 0 dwctwo0: xfer_buf: 0x0 dwctwo0: xfer_dma: 00000000 dwctwo0: xfer_len: 0 dwctwo0: xfer_count: 0 dwctwo0: halt_on_queue: 0 dwctwo0: halt_pending: 0 dwctwo0: halt_status: 0 dwctwo0: do_split: 0 dwctwo0: complete_split: 0 dwctwo0: hub_addr: 0 dwctwo0: hub_port: 0 dwctwo0: xact_pos: 0 dwctwo0: requests: 0 dwctwo0: qh: 0x0 dwctwo0: Channel 7: dwctwo0: dev_addr: 0, ep_num: 0, ep_is_in: 0 dwctwo0: speed: 0 dwctwo0: ep_type: 0 dwctwo0: max_packet: 0 dwctwo0: data_pid_start: 0 dwctwo0: multi_count: 0 dwctwo0: xfer_started: 0 dwctwo0: xfer_buf: 0x0 dwctwo0: xfer_dma: 00000000 dwctwo0: xfer_len: 0 dwctwo0: xfer_count: 0 dwctwo0: halt_on_queue: 0 dwctwo0: halt_pending: 0 dwctwo0: halt_status: 0 dwctwo0: do_split: 0 dwctwo0: complete_split: 0 dwctwo0: hub_addr: 0 dwctwo0: hub_port: 0 dwctwo0: xact_pos: 0 dwctwo0: requests: 0 dwctwo0: qh: 0x0 dwctwo0: non_periodic_channels: 0 dwctwo0: periodic_channels: 0 dwctwo0: periodic_usecs: 0 dwctwo0: NP Tx Req Queue Space Avail: 8 dwctwo0: NP Tx FIFO Space Avail: 912 dwctwo0: P Tx Req Queue Space Avail: 8 dwctwo0: P Tx FIFO Space Avail: 256 dwctwo0: Core Global Registers dwctwo0: GOTGCTL @0x00000000 : 0x001C0000 dwctwo0: GOTGINT @0x00000004 : 0x00000000 dwctwo0: GAHBCFG @0x00000008 : 0x00000020 dwctwo0: GUSBCFG @0x0000000C : 0x00001408 dwctwo0: GRSTCTL @0x00000010 : 0x80000000 dwctwo0: GINTSTS @0x00000014 : 0x05000021 dwctwo0: GINTMSK @0x00000018 : 0xF3000806 dwctwo0: GRXSTSR @0x0000001C : 0x6304370D dwctwo0: GRXFSIZ @0x00000024 : 0x000001C8 dwctwo0: GNPTXFSIZ @0x00000028 : 0x039001C8 dwctwo0: GNPTXSTS @0x0000002C : 0x07080390 dwctwo0: GI2CCTL @0x00000030 : 0x00000000 dwctwo0: GPVNDCTL @0x00000034 : 0x00000000 dwctwo0: GGPIO @0x00000038 : 0x00000000 dwctwo0: GUID @0x0000003C : 0x00000000 dwctwo0: GSNPSID @0x00000040 : 0x4F54265A dwctwo0: GHWCFG1 @0x00000044 : 0x00000000 dwctwo0: GHWCFG2 @0x00000048 : 0x7A8DD04A dwctwo0: GHWCFG3 @0x0000004C : 0x07200CE8 dwctwo0: GHWCFG4 @0x00000050 : 0x08344024 dwctwo0: GLPMCFG @0x00000054 : 0x00000000 dwctwo0: GPWRDN @0x00000058 : 0x00000000 dwctwo0: GDFIFOCFG @0x0000005C : 0x00000000 dwctwo0: HPTXFSIZ @0x00000100 : 0x01000558 dwctwo0: PCGCTL @0x00000E00 : 0x00000000 dwctwo0: Host Global Registers dwctwo0: HCFG @0x00000400 : 0x00000000 dwctwo0: HFIR @0x00000404 : 0x0000EA60 dwctwo0: HFNUM @0x00000408 : 0xEA603FFF dwctwo0: HPTXSTS @0x00000410 : 0x00080100 dwctwo0: HAINT @0x00000414 : 0x00000000 dwctwo0: HAINTMSK @0x00000418 : 0x00000000 dwctwo0: HPRT0 @0x00000440 : 0x00021403 dwctwo0: Host Channel 0 Specific Registers dwctwo0: HCCHAR @0x00000500 : 0x00000000 dwctwo0: HCSPLT @0x00000504 : 0x00000000 dwctwo0: HCINT @0x00000508 : 0x00000002 dwctwo0: HCINTMSK @0x0000050C : 0x00000000 dwctwo0: HCTSIZ @0x00000510 : 0x00000000 dwctwo0: HCDMA @0x00000514 : 0x00000000 dwctwo0: Host Channel 1 Specific Registers dwctwo0: HCCHAR @0x00000520 : 0x00000000 dwctwo0: HCSPLT @0x00000524 : 0x00000000 dwctwo0: HCINT @0x00000528 : 0x00000002 dwctwo0: HCINTMSK @0x0000052C : 0x00000000 dwctwo0: HCTSIZ @0x00000530 : 0x00000000 dwctwo0: HCDMA @0x00000534 : 0x00000000 dwctwo0: Host Channel 2 Specific Registers dwctwo0: HCCHAR @0x00000540 : 0x00000000 dwctwo0: HCSPLT @0x00000544 : 0x00000000 dwctwo0: HCINT @0x00000548 : 0x00000002 dwctwo0: HCINTMSK @0x0000054C : 0x00000000 dwctwo0: HCTSIZ @0x00000550 : 0x00000000 dwctwo0: HCDMA @0x00000554 : 0x00000000 dwctwo0: Host Channel 3 Specific Registers dwctwo0: HCCHAR @0x00000560 : 0x00000000 dwctwo0: HCSPLT @0x00000564 : 0x00000000 dwctwo0: HCINT @0x00000568 : 0x00000002 dwctwo0: HCINTMSK @0x0000056C : 0x00000000 dwctwo0: HCTSIZ @0x00000570 : 0x00000000 dwctwo0: HCDMA @0x00000574 : 0x00000000 dwctwo0: Host Channel 4 Specific Registers dwctwo0: HCCHAR @0x00000580 : 0x00000000 dwctwo0: HCSPLT @0x00000584 : 0x00000000 dwctwo0: HCINT @0x00000588 : 0x00000002 dwctwo0: HCINTMSK @0x0000058C : 0x00000000 dwctwo0: HCTSIZ @0x00000590 : 0x00000000 dwctwo0: HCDMA @0x00000594 : 0x00000000 dwctwo0: Host Channel 5 Specific Registers dwctwo0: HCCHAR @0x000005A0 : 0x00000000 dwctwo0: HCSPLT @0x000005A4 : 0x00000000 dwctwo0: HCINT @0x000005A8 : 0x00000002 dwctwo0: HCINTMSK @0x000005AC : 0x00000000 dwctwo0: HCTSIZ @0x000005B0 : 0x00000000 dwctwo0: HCDMA @0x000005B4 : 0x00000000 dwctwo0: Host Channel 6 Specific Registers dwctwo0: HCCHAR @0x000005C0 : 0x00000000 dwctwo0: HCSPLT @0x000005C4 : 0x00000000 dwctwo0: HCINT @0x000005C8 : 0x00000002 dwctwo0: HCINTMSK @0x000005CC : 0x00000000 dwctwo0: HCTSIZ @0x000005D0 : 0x00000000 dwctwo0: HCDMA @0x000005D4 : 0x00000000 dwctwo0: Host Channel 7 Specific Registers dwctwo0: HCCHAR @0x000005E0 : 0x00000000 dwctwo0: HCSPLT @0x000005E4 : 0x00000000 dwctwo0: HCINT @0x000005E8 : 0x00000002 dwctwo0: HCINTMSK @0x000005EC : 0x00000000 dwctwo0: HCTSIZ @0x000005F0 : 0x00000000 dwctwo0: HCDMA @0x000005F4 : 0x00000000 dwctwo0: ************************************************************ dwctwo0: