Module Name:    src
Committed By:   christos
Date:           Sat Oct  6 14:37:41 UTC 2012

Modified Files:
        src/sys/dev/usb: ubt.c usbdevs

Log Message:
recognize apple bluetooth adapter in MacBook Air. (Ryo Onodera)


To generate a diff of this commit:
cvs rdiff -u -r1.48 -r1.49 src/sys/dev/usb/ubt.c
cvs rdiff -u -r1.629 -r1.630 src/sys/dev/usb/usbdevs

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/usb/ubt.c
diff -u src/sys/dev/usb/ubt.c:1.48 src/sys/dev/usb/ubt.c:1.49
--- src/sys/dev/usb/ubt.c:1.48	Sat Jun  2 17:36:45 2012
+++ src/sys/dev/usb/ubt.c	Sat Oct  6 10:37:41 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: ubt.c,v 1.48 2012/06/02 21:36:45 dsl Exp $	*/
+/*	$NetBSD: ubt.c,v 1.49 2012/10/06 14:37:41 christos Exp $	*/
 
 /*-
  * Copyright (c) 2006 Itronix Inc.
@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ubt.c,v 1.48 2012/06/02 21:36:45 dsl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ubt.c,v 1.49 2012/10/06 14:37:41 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
@@ -305,26 +305,34 @@ static int ubt_sysctl_config(SYSCTLFN_PR
 static void ubt_abortdealloc(struct ubt_softc *);
 
 /*
- * Match against the whole device, since we want to take
- * both interfaces. If a device should be ignored then add
+ * To match or ignore forcibly, add
  *
- *	{ VendorID, ProductID }
+ *	{ { VendorID, ProductID } , UMATCH_VENDOR_PRODUCT|UMATCH_NONE }
  *
- * to the ubt_ignore list.
+ * to the ubt_dev list.
  */
-static const struct usb_devno ubt_ignore[] = {
-	{ USB_VENDOR_BROADCOM, USB_PRODUCT_BROADCOM_BCM2033NF },
+const struct ubt_devno {
+	struct usb_devno	devno;
+	int			match;
+} ubt_dev[] = {
+	{ { USB_VENDOR_BROADCOM, USB_PRODUCT_BROADCOM_BCM2033NF },
+	  UMATCH_NONE },
+	{ { USB_VENDOR_APPLE, USB_PRODUCT_APPLE_BLUETOOTH_HOST_C },
+	  UMATCH_VENDOR_PRODUCT },
 };
+#define ubt_lookup(vendor, product) \
+	((const struct ubt_devno *)usb_lookup(ubt_dev, vendor, product))
 
 int 
 ubt_match(device_t parent, cfdata_t match, void *aux)
 {
 	struct usb_attach_arg *uaa = aux;
+	const struct ubt_devno *dev;
 
 	DPRINTFN(50, "ubt_match\n");
 
-	if (usb_lookup(ubt_ignore, uaa->vendor, uaa->product))
-		return UMATCH_NONE;
+	if ((dev = ubt_lookup(uaa->vendor, uaa->product)) != NULL)
+		return dev->match;
 
 	if (uaa->class == UDCLASS_WIRELESS
 	    && uaa->subclass == UDSUBCLASS_RF

Index: src/sys/dev/usb/usbdevs
diff -u src/sys/dev/usb/usbdevs:1.629 src/sys/dev/usb/usbdevs:1.630
--- src/sys/dev/usb/usbdevs:1.629	Fri Oct  5 18:04:56 2012
+++ src/sys/dev/usb/usbdevs	Sat Oct  6 10:37:41 2012
@@ -1,4 +1,4 @@
-$NetBSD: usbdevs,v 1.629 2012/10/05 22:04:56 khorben Exp $
+$NetBSD: usbdevs,v 1.630 2012/10/06 14:37:41 christos Exp $
 
 /*
  * Copyright (c) 1998-2004 The NetBSD Foundation, Inc.
@@ -843,6 +843,7 @@ product APPLE IPHONE_3GS	0x1294	iPhone 3
 product APPLE IPAD		0x129a	Apple iPad
 product APPLE ETHERNET		0x1402	Apple USB to Ethernet
 product APPLE BLUETOOTH2	0x8205	Bluetooth
+product APPLE BLUETOOTH_HOST_C	0x821f	Bluetooth USB Host Controller
 product APPLE BLUETOOTH		0x8300	Bluetooth
 
 /* ArkMicroChips products */

Reply via email to