Fwd: dwc2 and ping protocol

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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:


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux