Переглянути джерело

[usb] Allow USB device IDs to include arbitrary driver-specific data

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 8 роки тому
джерело
коміт
fb8c52de9b
2 змінених файлів з 9 додано та 3 видалено
  1. 5
    3
      src/drivers/bus/usb.c
  2. 4
    0
      src/include/ipxe/usb.h

+ 5
- 3
src/drivers/bus/usb.c Переглянути файл

@@ -1186,6 +1186,11 @@ static int usb_probe ( struct usb_function *func,
1186 1186
 		return -ENOENT;
1187 1187
 	}
1188 1188
 
1189
+	/* Record driver */
1190
+	func->driver = driver;
1191
+	func->id = id;
1192
+	func->dev.driver_name = id->name;
1193
+
1189 1194
 	/* Probe driver */
1190 1195
 	if ( ( rc = driver->probe ( func, config ) ) != 0 ) {
1191 1196
 		DBGC ( usb, "USB %s failed to probe driver %s: %s\n",
@@ -1193,9 +1198,6 @@ static int usb_probe ( struct usb_function *func,
1193 1198
 		return rc;
1194 1199
 	}
1195 1200
 
1196
-	/* Record driver */
1197
-	func->driver = driver;
1198
-	func->dev.driver_name = id->name;
1199 1201
 	return 0;
1200 1202
 }
1201 1203
 

+ 4
- 0
src/include/ipxe/usb.h Переглянути файл

@@ -662,6 +662,8 @@ struct usb_function {
662 662
 	struct usb_driver *driver;
663 663
 	/** Driver private data */
664 664
 	void *priv;
665
+	/** Driver device ID */
666
+	struct usb_device_id *id;
665 667
 
666 668
 	/** List of interface numbers
667 669
 	 *
@@ -1308,6 +1310,8 @@ struct usb_device_id {
1308 1310
 	uint16_t vendor;
1309 1311
 	/** Product ID */
1310 1312
 	uint16_t product;
1313
+	/** Arbitrary driver data */
1314
+	unsigned long driver_data;
1311 1315
 };
1312 1316
 
1313 1317
 /** Match-anything ID */

Завантаження…
Відмінити
Зберегти