USB: dwc_otg_310: pcd: don't set cnak when setup stage
authorFeng Mingli <fml@rock-chips.com>
Tue, 23 May 2017 05:51:48 +0000 (13:51 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Wed, 24 May 2017 09:40:00 +0000 (17:40 +0800)
commite3c52e0bbf72e977fc947e7ae5e4aa53342e4827
tree3f78e47c7abbb25372003ffefa282fc0504112e7
parent53253d953f3797cc4ed07628fe82f86f1b20061c
USB: dwc_otg_310: pcd: don't set cnak when setup stage

Refer dwc2 databook and programming, the controller automatic
receive SETUP packet to the receive FIFO and respond to Host
ACK whether ep enabled or not. The core internally set the IN
NAK and OUT NAK bits when SETUP packet was received in order
to software process SETUP packet and transition to the next
stage.

If software has not enabled ep before the Host send the SETUP
packet, set enable ep and cnak at the same time the Host send
DATA OUT packet. Then dwc2 controller write the setup data to
the memory and disable ep, respond ACK to the Host DATA OUT
packet. The Host transition to the status stage, but we lost
the DATA OUT packet. So don't set cnak when setup stage, the
dwc2 controller respond NAK to the Host DATA OUT packet, the
Host resend ping packet and DATA OUT packet.

TEST=set gadget work as usb audio and connect to ubuntu(rk3036)

Change-Id: Id791c44baf3d363a975ceaeb7d1c879c9703ce1d
Signed-off-by: Feng Mingli <fml@rock-chips.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
drivers/usb/dwc_otg_310/dwc_otg_pcd_intr.c