Browse Source

Icarus AMU enable the UART

Kano 12 years ago
parent
commit
a7425c6c1b
2 changed files with 12 additions and 0 deletions
  1. 10 0
      driver-icarus.c
  2. 2 0
      usbutils.h

+ 10 - 0
driver-icarus.c

@@ -364,6 +364,16 @@ static void icarus_initialise(struct cgpu_info *icarus, int baud)
 		case IDENT_AMU:
 			nmsleep(20);
 
+			// Enable the UART
+			transfer(icarus, CP210X_TYPE_OUT, CP210X_REQUEST_IFC_ENABLE,
+				 CP210X_VALUE_UART_ENABLE,
+				 icarus->usbdev->found->interface, C_PURGETX);
+
+			if (icarus->usbinfo.nodev)
+				return;
+
+			nmsleep(20);
+
 			// Set data control
 			transfer(icarus, CP210X_TYPE_OUT, CP210X_REQUEST_DATA, CP210X_VALUE_DATA,
 				 icarus->usbdev->found->interface, C_SETDATA);

+ 2 - 0
usbutils.h

@@ -68,9 +68,11 @@
 // For 0x10c4:0xea60 USB cp210x chip - AMU
 #define CP210X_TYPE_OUT 0x41
 
+#define CP210X_REQUEST_IFC_ENABLE 0x00
 #define CP210X_REQUEST_DATA 0x07
 #define CP210X_REQUEST_BAUD 0x1e
 
+#define CP210X_VALUE_UART_ENABLE 0x0001
 #define CP210X_VALUE_DATA 0x0303
 #define CP210X_DATA_BAUD 0x0001c200