Browse Source

usbutils - allow the driver to change which_intinfo

Kano 12 years ago
parent
commit
24858de6de
2 changed files with 22 additions and 0 deletions
  1. 21 0
      usbutils.c
  2. 1 0
      usbutils.h

+ 21 - 0
usbutils.c

@@ -3132,6 +3132,27 @@ int usb_interface(struct cgpu_info *cgpu)
 	return interface;
 }
 
+bool usb_set_interface(struct cgpu_info *cgpu, int interface)
+{
+	bool succeed = false;
+	int pstate;
+
+	if (interface >= 0) {
+		DEVLOCK(cgpu, pstate);
+
+		if (cgpu->usbdev) {
+			if (interface < cgpu->usbdev->found->intinfo_count) {
+				USBIF(cgpu->usbdev) = interface;
+				succeed = true;
+			}
+		}
+
+		DEVUNLOCK(cgpu, pstate);
+	}
+
+	return succeed;
+}
+
 enum sub_ident usb_ident(struct cgpu_info *cgpu)
 {
 	enum sub_ident ident = IDENT_UNK;

+ 1 - 0
usbutils.h

@@ -355,6 +355,7 @@ void usb_set_cps(struct cgpu_info *cgpu, int cps);
 void usb_enable_cps(struct cgpu_info *cgpu);
 void usb_disable_cps(struct cgpu_info *cgpu);
 int usb_interface(struct cgpu_info *cgpu);
+bool usb_set_interface(struct cgpu_info *cgpu, int interface);
 enum sub_ident usb_ident(struct cgpu_info *cgpu);
 void usb_set_pps(struct cgpu_info *cgpu, uint16_t PrefPacketSize);
 void usb_set_dev_start(struct cgpu_info *cgpu);