Просмотр исходного кода

usb: unbreak the data0/1 flipping logic

Mistake: don't clear the bit for non-selected endpoints (or no
endpoint) except on reset.
H. Peter Anvin 3 лет назад
Родитель
Сommit
41bd97f3b3

BIN
fpga/output_files/max80.jic


BIN
fpga/output_files/max80.pof


+ 13 - 9
fpga/usb/usb_serial/src_v/usbf_device_core.sv

@@ -822,15 +822,19 @@ module usbf_device_core
 	  in_data_bit_q  <= 'b0;
        end
      else
-       begin
-	  out_data_bit_q <= 'b0;
-	  in_data_bit_q  <= 'b0;
-	  if ((token_ep_w < endpoints) && ~usb_rst_w)
-	    begin
-	       out_data_bit_q[token_ep_w] <= new_out_bit_r;
-	       in_data_bit_q [token_ep_w] <= new_in_bit_r;
-	    end
-       end // else: !if(rst_i)
+       if (usb_rst_w)
+	 begin
+	    out_data_bit_q <= 'b0;
+	    in_data_bit_q  <= 'b0;
+	 end
+       else
+	 begin
+	    if ((token_ep_w < endpoints) && ~usb_rst_w)
+	      begin
+		 out_data_bit_q[token_ep_w] <= new_out_bit_r;
+		 in_data_bit_q [token_ep_w] <= new_in_bit_r;
+	      end
+	 end // else: !if(rst_i)
 
    assign out_data_bit_r = out_data_bit_q[token_ep_w];
    assign in_data_bit_r  = in_data_bit_q [token_ep_w];