* [PATCH] Bluetooth: btusb: Add support for Qualcomm Atheros composite chip 3006 @ 2011-11-08 8:38 Yao, Costa 2011-11-09 7:48 ` Marcel Holtmann 0 siblings, 1 reply; 6+ messages in thread From: Yao, Costa @ 2011-11-08 8:38 UTC (permalink / raw) To: Marcel Holtmann, padovan@profusion.mobi, linux-bluetooth@vger.kernel.org QVIzMDA2IGlzIGEgY29tcG9zaXRlIGRldmljZSwgYW5kIGludGVyZmFjZSAwIGlzIHVzZWQgZm9y IGhpZCBmdW5jdGlvbiwgbm90IGZvciBibHVldG9vdGggZnVuY3Rpb24uDQpXZSBzaG91bGQgbWFr ZSB0aGUgZm9sbG93aW5nIGNoYW5nZXM6DQoxIEJsYWNrbGlzdCBBUjMwMDYgUElEL1ZJRCBpbiBi dHVzYl90YWJsZQ0KMiBBZGQgY29tcG9zaXRlX2RldmljZV90YWJsZSBpbiBidHVzYi5jIHRvIHJl Z2lzdGVyIGNvbXBvc2l0ZSBkZXZpY2UNCjMgRm9yIEFSMzAwNiBjb21wb3NpdGUgZGV2aWNlLCBp bnRlcmZhY2UgMyBpcyB1c2VkIGZvciBkYXRhLT5pc29jDQoNClNpZ25lZC1vZmYtYnk6IENvc3Rh IFlhbyA8Y3F5YW9AcWNhLnF1YWxjb21tLmNvbT4NCi0tLQ0KIGRyaXZlcnMvYmx1ZXRvb3RoL2J0 dXNiLmMgfCAgIDM3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCiAxIGZp bGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2JsdWV0b290aC9idHVzYi5jIGIvZHJpdmVycy9ibHVldG9vdGgvYnR1c2Iu Yw0KaW5kZXggOWRiMjQ3Ni4uZDMwNmRlYyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvYmx1ZXRvb3Ro L2J0dXNiLmMNCisrKyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2J0dXNiLmMNCkBAIC01NSw2ICs1NSw3 IEBAIHN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBidHVzYl9kcml2ZXI7DQogI2RlZmluZSBCVFVT Ql9CUk9LRU5fSVNPQwkweDIwDQogI2RlZmluZSBCVFVTQl9XUk9OR19TQ09fTVRVCTB4NDANCiAj ZGVmaW5lIEJUVVNCX0FUSDMwMTIJCTB4ODANCisjZGVmaW5lIEJUVVNCX0FUSDMwMDYJCTB4MDEw MA0KIA0KIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBidHVzYl90YWJsZVtdID0gew0KIAkv KiBHZW5lcmljIEJsdWV0b290aCBVU0IgZGV2aWNlICovDQpAQCAtMTAwLDYgKzEwMSw5IEBAIHN0 YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBidHVzYl90YWJsZVtdID0gew0KIAkvKiBDYW55b24g Q04tQlRVMSB3aXRoIEhJRCBpbnRlcmZhY2VzICovDQogCXsgVVNCX0RFVklDRSgweDBjMTAsIDB4 MDAwMCkgfSwNCiANCisJLyogUXVhbGNvbW0gQXRoZXJvcyB3aXRoIEhJRCBpbnRlcmZhY2VzICov DQorCXsgVVNCX0RFVklDRSgweDBjZjMsIDB4MzAwNikgfSwNCisNCiAJeyB9CS8qIFRlcm1pbmF0 aW5nIGVudHJ5ICovDQogfTsNCiANCkBAIC0xMjIsNiArMTI2LDcgQEAgc3RhdGljIHN0cnVjdCB1 c2JfZGV2aWNlX2lkIGJsYWNrbGlzdF90YWJsZVtdID0gew0KIA0KIAkvKiBBdGhlcm9zIDMwMTIg d2l0aCBzZmxhc2ggZmlybXdhcmUgKi8NCiAJeyBVU0JfREVWSUNFKDB4MGNmMywgMHgzMDA0KSwg LmRyaXZlcl9pbmZvID0gQlRVU0JfQVRIMzAxMiB9LA0KKwl7IFVTQl9ERVZJQ0UoMHgwY2YzLCAw eDMwMDYpLCAuZHJpdmVyX2luZm8gPSBCVFVTQl9BVEgzMDA2IH0sDQogDQogCS8qIEF0aGVyb3Mg QVI1QkJVMTIgd2l0aCBzZmxhc2ggZmlybXdhcmUgKi8NCiAJeyBVU0JfREVWSUNFKDB4MDQ4OSwg MHhlMDJjKSwgLmRyaXZlcl9pbmZvID0gQlRVU0JfSUdOT1JFIH0sDQpAQCAtMTc5LDYgKzE4NCwx OCBAQCBzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgYmxhY2tsaXN0X3RhYmxlW10gPSB7DQog CXsgfQkvKiBUZXJtaW5hdGluZyBlbnRyeSAqLw0KIH07DQogDQorLyoNCisgKiBGb3IgY29tcG9z aXRlIGRldmljZSwgaW50ZXJmYWNlIDAgbWF5IGJlIG5vdCBmb3IgYmx1ZXRvb3RoIGZ1bmN0aW9u Lg0KKyAqIEl0IGlzIGJldHRlciB0byBsZXQgdGhlIHZlbmRvciBjb2RlIHRvIGhhbmRsZSB0aGlz IHNpdHVhdGlvbi4NCisgKiBTbywgd2UgdXNlIGNvbXBvc2l0ZV9kZXZpY2VfdGFibGUgdG8gcmVj b3JkIHRoZSBjb21wb3NpdGUgZGV2aWNlcy4NCisgKi8NCitzdGF0aWMgc3RydWN0IHVzYl9kZXZp Y2VfaWQgY29tcG9zaXRlX2RldmljZV90YWJsZVtdID0gew0KKwkvKiBRdWFsY29tbSBBdGhlcm9z IGNvbXBvc2l0ZSBkZXZpY2UgMzAwNiAqLw0KKwl7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDMwMDYp IH0sDQorDQorCXsgfQkvKiBUZXJtaW5hdGluZyBlbnRyeSAqLw0KK307DQorDQogI2RlZmluZSBC VFVTQl9NQVhfSVNPQ19GUkFNRVMJMTANCiANCiAjZGVmaW5lIEJUVVNCX0lOVFJfUlVOTklORwkw DQpAQCAtOTEyLDEzICs5MjksMjUgQEAgc3RhdGljIGludCBidHVzYl9wcm9iZShzdHJ1Y3QgdXNi X2ludGVyZmFjZSAqaW50ZiwNCiAJc3RydWN0IGJ0dXNiX2RhdGEgKmRhdGE7DQogCXN0cnVjdCBo Y2lfZGV2ICpoZGV2Ow0KIAlpbnQgaSwgZXJyOw0KKwljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9p ZCAqbWF0Y2hfY29tcF9kZXY7DQogDQogCUJUX0RCRygiaW50ZiAlcCBpZCAlcCIsIGludGYsIGlk KTsNCiANCisJLyogRm9yIGNvbXBvc2l0ZSBkZXZpY2UNCisJKiBpdCBtYXkgbm90IHRoZSBjYXNl IHRoYXQgaW50ZXJmYWNlIDAgaXMgZm9yIGJsdWV0b290aCBmdW5jdGlvbi4NCisJKi8NCisJbWF0 Y2hfY29tcF9kZXYgPSB1c2JfbWF0Y2hfaWQoaW50ZiwgY29tcG9zaXRlX2RldmljZV90YWJsZSk7 DQorCWlmIChtYXRjaF9jb21wX2Rldikgew0KKwkJaWYgKGludGYtPmN1cl9hbHRzZXR0aW5nLT5k ZXNjLmJJbnRlcmZhY2VOdW1iZXIgIT0gMikNCisJCQlyZXR1cm4gLUVOT0RFVjsNCisJCWdvdG8g bWF0Y2hfaWQ7DQorCX0NCisNCiAJLyogaW50ZXJmYWNlIG51bWJlcnMgYXJlIGhhcmRjb2RlZCBp biB0aGUgc3BlYyAqLw0KIAlpZiAoaW50Zi0+Y3VyX2FsdHNldHRpbmctPmRlc2MuYkludGVyZmFj ZU51bWJlciAhPSAwKQ0KIAkJcmV0dXJuIC1FTk9ERVY7DQogDQorbWF0Y2hfaWQ6DQogCWlmICgh aWQtPmRyaXZlcl9pbmZvKSB7DQogCQljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqbWF0Y2g7 DQogCQltYXRjaCA9IHVzYl9tYXRjaF9pZChpbnRmLCBibGFja2xpc3RfdGFibGUpOw0KQEAgLTkz OCw3ICs5NjcsOCBAQCBzdGF0aWMgaW50IGJ0dXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNl ICppbnRmLA0KIAlpZiAoaWdub3JlX3NuaWZmZXIgJiYgaWQtPmRyaXZlcl9pbmZvICYgQlRVU0Jf U05JRkZFUikNCiAJCXJldHVybiAtRU5PREVWOw0KIA0KLQlpZiAoaWQtPmRyaXZlcl9pbmZvICYg QlRVU0JfQVRIMzAxMikgew0KKwlpZiAoKGlkLT5kcml2ZXJfaW5mbyAmIEJUVVNCX0FUSDMwMTIp IHx8DQorCQkJCShpZC0+ZHJpdmVyX2luZm8gJiBCVFVTQl9BVEgzMDA2KSkgew0KIAkJc3RydWN0 IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpOw0KIA0KIAkJLyog T2xkIGZpcm13YXJlIHdvdWxkIG90aGVyd2lzZSBsZXQgYXRoM2sgZHJpdmVyIGxvYWQNCkBAIC0x MDYyLDYgKzEwOTIsMTEgQEAgc3RhdGljIGludCBidHVzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVy ZmFjZSAqaW50ZiwNCiAJCX0NCiAJfQ0KIA0KKwlpZiAoaWQtPmRyaXZlcl9pbmZvICYgQlRVU0Jf QVRIMzAwNikgew0KKwkJQlRfRVJSKCJoYXJkY29kZWQ6IEludGVyZmFjZSAzIik7DQorCQlkYXRh LT5pc29jID0gdXNiX2lmbnVtX3RvX2lmKGRhdGEtPnVkZXYsIDMpOw0KKwl9DQorDQogCWlmIChk YXRhLT5pc29jKSB7DQogCQllcnIgPSB1c2JfZHJpdmVyX2NsYWltX2ludGVyZmFjZSgmYnR1c2Jf ZHJpdmVyLA0KIAkJCQkJCQlkYXRhLT5pc29jLCBkYXRhKTsNCi0tIA0KMS43LjQuMQ0K ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Bluetooth: btusb: Add support for Qualcomm Atheros composite chip 3006 2011-11-08 8:38 [PATCH] Bluetooth: btusb: Add support for Qualcomm Atheros composite chip 3006 Yao, Costa @ 2011-11-09 7:48 ` Marcel Holtmann 2011-11-09 11:30 ` Yao, Costa 0 siblings, 1 reply; 6+ messages in thread From: Marcel Holtmann @ 2011-11-09 7:48 UTC (permalink / raw) To: Yao, Costa; +Cc: padovan@profusion.mobi, linux-bluetooth@vger.kernel.org Hi Costa, > AR3006 is a composite device, and interface 0 is used for hid function, not for bluetooth function. > We should make the following changes: > 1 Blacklist AR3006 PID/VID in btusb_table > 2 Add composite_device_table in btusb.c to register composite device > 3 For AR3006 composite device, interface 3 is used for data->isoc > > Signed-off-by: Costa Yao <cqyao@qca.qualcomm.com> > --- > drivers/bluetooth/btusb.c | 37 ++++++++++++++++++++++++++++++++++++- > 1 files changed, 36 insertions(+), 1 deletions(-) > > diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c > index 9db2476..d306dec 100644 > --- a/drivers/bluetooth/btusb.c > +++ b/drivers/bluetooth/btusb.c > @@ -55,6 +55,7 @@ static struct usb_driver btusb_driver; > #define BTUSB_BROKEN_ISOC 0x20 > #define BTUSB_WRONG_SCO_MTU 0x40 > #define BTUSB_ATH3012 0x80 > +#define BTUSB_ATH3006 0x0100 > > static struct usb_device_id btusb_table[] = { > /* Generic Bluetooth USB device */ > @@ -100,6 +101,9 @@ static struct usb_device_id btusb_table[] = { > /* Canyon CN-BTU1 with HID interfaces */ > { USB_DEVICE(0x0c10, 0x0000) }, > > + /* Qualcomm Atheros with HID interfaces */ > + { USB_DEVICE(0x0cf3, 0x3006) }, > + > { } /* Terminating entry */ > }; > > @@ -122,6 +126,7 @@ static struct usb_device_id blacklist_table[] = { > > /* Atheros 3012 with sflash firmware */ > { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 }, > + { USB_DEVICE(0x0cf3, 0x3006), .driver_info = BTUSB_ATH3006 }, > > /* Atheros AR5BBU12 with sflash firmware */ > { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE }, > @@ -179,6 +184,18 @@ static struct usb_device_id blacklist_table[] = { > { } /* Terminating entry */ > }; I do not understand why the device has to be in both tables. That makes no sense to me. > +/* > + * For composite device, interface 0 may be not for bluetooth function. > + * It is better to let the vendor code to handle this situation. > + * So, we use composite_device_table to record the composite devices. > + */ > +static struct usb_device_id composite_device_table[] = { > + /* Qualcomm Atheros composite device 3006 */ > + { USB_DEVICE(0x0cf3, 0x3006) }, > + > + { } /* Terminating entry */ > +}; > + And again, another 3rd table with the same entry. Why do you need this? > #define BTUSB_MAX_ISOC_FRAMES 10 > > #define BTUSB_INTR_RUNNING 0 > @@ -912,13 +929,25 @@ static int btusb_probe(struct usb_interface *intf, > struct btusb_data *data; > struct hci_dev *hdev; > int i, err; > + const struct usb_device_id *match_comp_dev; > > BT_DBG("intf %p id %p", intf, id); > > + /* For composite device > + * it may not the case that interface 0 is for bluetooth function. > + */ > + match_comp_dev = usb_match_id(intf, composite_device_table); > + if (match_comp_dev) { > + if (intf->cur_altsetting->desc.bInterfaceNumber != 2) > + return -ENODEV; > + goto match_id; > + } > + So seriously, this can be done via the main table and .driver_info. The composite table is total waste. > /* interface numbers are hardcoded in the spec */ > if (intf->cur_altsetting->desc.bInterfaceNumber != 0) > return -ENODEV; > > +match_id: I do not like this forward jump. > if (!id->driver_info) { > const struct usb_device_id *match; > match = usb_match_id(intf, blacklist_table); > @@ -938,7 +967,8 @@ static int btusb_probe(struct usb_interface *intf, > if (ignore_sniffer && id->driver_info & BTUSB_SNIFFER) > return -ENODEV; > > - if (id->driver_info & BTUSB_ATH3012) { > + if ((id->driver_info & BTUSB_ATH3012) || > + (id->driver_info & BTUSB_ATH3006)) { > struct usb_device *udev = interface_to_usbdev(intf); > > /* Old firmware would otherwise let ath3k driver load > @@ -1062,6 +1092,11 @@ static int btusb_probe(struct usb_interface *intf, > } > } > > + if (id->driver_info & BTUSB_ATH3006) { > + BT_ERR("hardcoded: Interface 3"); > + data->isoc = usb_ifnum_to_if(data->udev, 3); > + } > + > if (data->isoc) { > err = usb_driver_claim_interface(&btusb_driver, > data->isoc, data); Actually I am more and more thinking that something is done here way too complicated. Please post the /proc/bus/usb/devices content for this device before and after firmware got loaded. Regards Marcel ^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH] Bluetooth: btusb: Add support for Qualcomm Atheros composite chip 3006 2011-11-09 7:48 ` Marcel Holtmann @ 2011-11-09 11:30 ` Yao, Costa 2011-11-09 14:41 ` Marcel Holtmann 0 siblings, 1 reply; 6+ messages in thread From: Yao, Costa @ 2011-11-09 11:30 UTC (permalink / raw) To: Marcel Holtmann Cc: padovan@profusion.mobi, linux-bluetooth@vger.kernel.org, Fan, Hong, Wu, Frank, Chen, Jack, Chang, Robert, Wang, Tom, Liu, Haijun, QCA.Mgr.Haijun.Liu-All SGkgTWFyY2VsLA0KICAgDQpGb3IgeW91ciBmaXJzdCBjb21tZW50LCANClllcywgd2UgY2FuIGp1 c3QgYWRkIGRldmljZSB3aXRoIC5kcml2ZXJfaW5mbyBpbiBidHVzYl90YWJsZSwgbm90IGluIGJs YWNrbGlzdF90YWJsZS4NCg0KRm9yIHlvdXIgb3RoZXIgY29tbWVudHMsDQpBcyB0aGUgZGV2aWNl IGhhcyA0IFVTQiBpbnRlcmZhY2VzIGFuZCBpbnRlcmZhY2UgMiBpcyBmb3IgQmx1ZXRvb3RoIGZ1 bmN0aW9uLiBXZSBuZWVkIHRvIGJ5cGFzcyB0aGUgSUYgc3RhdGUgaW4gYnR1c2IuYyBhcyBmb2xs b3c6DQogICAgICBpZiAoaW50Zi0+Y3VyX2FsdHNldHRpbmctPmRlc2MuYkludGVyZmFjZU51YmVy ICE9MCkNCiAgICAgIHJldHVybiAtRU5PREVWOw0KICAgDQpTbyB3ZSB1c2UgYSBjb21wb3NpdGVf ZGV2aWNlX3RhYmxlIG1hdGNoaW5nIG1lY2hhbmlzbSBhbmQgdXNlIGZvcndhcmQganVtcCB0byBi eXBhc3MgdGhlIGJJbnRlcmZhY2VOdW1iZXIgY2hlY2suDQpBbmQgb3RoZXIgdmVuZG9ycyBhbHNv IGNhbiBhZGQgdGhlaXIgY29tcG9zaXRlIGRldmljZSBpbiB0aGUgY29tcG9zaXRlX2RldmljZV90 YWJsZSB0byBieXBhc3MgdGhlIGNoZWNrLg0KDQpCZXN0IHdpc2hlcywNCkNvc3RhIHlhbw0KDQog ICANCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IE1hcmNlbCBIb2x0bWFubiBb bWFpbHRvOm1hcmNlbEBob2x0bWFubi5vcmddIA0KU2VudDogMjAxMeW5tDEx5pyIOeaXpSAxNTo0 OQ0KVG86IFlhbywgQ29zdGENCkNjOiBwYWRvdmFuQHByb2Z1c2lvbi5tb2JpOyBsaW51eC1ibHVl dG9vdGhAdmdlci5rZXJuZWwub3JnDQpTdWJqZWN0OiBSZTogW1BBVENIXSBCbHVldG9vdGg6IGJ0 dXNiOiBBZGQgc3VwcG9ydCBmb3IgUXVhbGNvbW0gQXRoZXJvcyBjb21wb3NpdGUgY2hpcCAzMDA2 DQoNCkhpIENvc3RhLA0KDQo+IEFSMzAwNiBpcyBhIGNvbXBvc2l0ZSBkZXZpY2UsIGFuZCBpbnRl cmZhY2UgMCBpcyB1c2VkIGZvciBoaWQgZnVuY3Rpb24sIG5vdCBmb3IgYmx1ZXRvb3RoIGZ1bmN0 aW9uLg0KPiBXZSBzaG91bGQgbWFrZSB0aGUgZm9sbG93aW5nIGNoYW5nZXM6DQo+IDEgQmxhY2ts aXN0IEFSMzAwNiBQSUQvVklEIGluIGJ0dXNiX3RhYmxlDQo+IDIgQWRkIGNvbXBvc2l0ZV9kZXZp Y2VfdGFibGUgaW4gYnR1c2IuYyB0byByZWdpc3RlciBjb21wb3NpdGUgZGV2aWNlDQo+IDMgRm9y IEFSMzAwNiBjb21wb3NpdGUgZGV2aWNlLCBpbnRlcmZhY2UgMyBpcyB1c2VkIGZvciBkYXRhLT5p c29jDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBDb3N0YSBZYW8gPGNxeWFvQHFjYS5xdWFsY29tbS5j b20+DQo+IC0tLQ0KPiAgZHJpdmVycy9ibHVldG9vdGgvYnR1c2IuYyB8ICAgMzcgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLQ0KPiAgMSBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmx1 ZXRvb3RoL2J0dXNiLmMgYi9kcml2ZXJzL2JsdWV0b290aC9idHVzYi5jIA0KPiBpbmRleCA5ZGIy NDc2Li5kMzA2ZGVjIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2JsdWV0b290aC9idHVzYi5jDQo+ ICsrKyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2J0dXNiLmMNCj4gQEAgLTU1LDYgKzU1LDcgQEAgc3Rh dGljIHN0cnVjdCB1c2JfZHJpdmVyIGJ0dXNiX2RyaXZlcjsNCj4gICNkZWZpbmUgQlRVU0JfQlJP S0VOX0lTT0MJMHgyMA0KPiAgI2RlZmluZSBCVFVTQl9XUk9OR19TQ09fTVRVCTB4NDANCj4gICNk ZWZpbmUgQlRVU0JfQVRIMzAxMgkJMHg4MA0KPiArI2RlZmluZSBCVFVTQl9BVEgzMDA2CQkweDAx MDANCj4gIA0KPiAgc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2lkIGJ0dXNiX3RhYmxlW10gPSB7 DQo+ICAJLyogR2VuZXJpYyBCbHVldG9vdGggVVNCIGRldmljZSAqLw0KPiBAQCAtMTAwLDYgKzEw MSw5IEBAIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBidHVzYl90YWJsZVtdID0gew0KPiAg CS8qIENhbnlvbiBDTi1CVFUxIHdpdGggSElEIGludGVyZmFjZXMgKi8NCj4gIAl7IFVTQl9ERVZJ Q0UoMHgwYzEwLCAweDAwMDApIH0sDQo+ICANCj4gKwkvKiBRdWFsY29tbSBBdGhlcm9zIHdpdGgg SElEIGludGVyZmFjZXMgKi8NCj4gKwl7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDMwMDYpIH0sDQo+ ICsNCj4gIAl7IH0JLyogVGVybWluYXRpbmcgZW50cnkgKi8NCj4gIH07DQo+ICANCj4gQEAgLTEy Miw2ICsxMjYsNyBAQCBzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgYmxhY2tsaXN0X3RhYmxl W10gPSB7DQo+ICANCj4gIAkvKiBBdGhlcm9zIDMwMTIgd2l0aCBzZmxhc2ggZmlybXdhcmUgKi8N Cj4gIAl7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDMwMDQpLCAuZHJpdmVyX2luZm8gPSBCVFVTQl9B VEgzMDEyIH0sDQo+ICsJeyBVU0JfREVWSUNFKDB4MGNmMywgMHgzMDA2KSwgLmRyaXZlcl9pbmZv ID0gQlRVU0JfQVRIMzAwNiB9LA0KPiAgDQo+ICAJLyogQXRoZXJvcyBBUjVCQlUxMiB3aXRoIHNm bGFzaCBmaXJtd2FyZSAqLw0KPiAgCXsgVVNCX0RFVklDRSgweDA0ODksIDB4ZTAyYyksIC5kcml2 ZXJfaW5mbyA9IEJUVVNCX0lHTk9SRSB9LCBAQCANCj4gLTE3OSw2ICsxODQsMTggQEAgc3RhdGlj IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGJsYWNrbGlzdF90YWJsZVtdID0gew0KPiAgCXsgfQkvKiBU ZXJtaW5hdGluZyBlbnRyeSAqLw0KPiAgfTsNCg0KSSBkbyBub3QgdW5kZXJzdGFuZCB3aHkgdGhl IGRldmljZSBoYXMgdG8gYmUgaW4gYm90aCB0YWJsZXMuIFRoYXQgbWFrZXMgbm8gc2Vuc2UgdG8g bWUuDQogDQo+ICsvKg0KPiArICogRm9yIGNvbXBvc2l0ZSBkZXZpY2UsIGludGVyZmFjZSAwIG1h eSBiZSBub3QgZm9yIGJsdWV0b290aCBmdW5jdGlvbi4NCj4gKyAqIEl0IGlzIGJldHRlciB0byBs ZXQgdGhlIHZlbmRvciBjb2RlIHRvIGhhbmRsZSB0aGlzIHNpdHVhdGlvbi4NCj4gKyAqIFNvLCB3 ZSB1c2UgY29tcG9zaXRlX2RldmljZV90YWJsZSB0byByZWNvcmQgdGhlIGNvbXBvc2l0ZSBkZXZp Y2VzLg0KPiArICovDQo+ICtzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgY29tcG9zaXRlX2Rl dmljZV90YWJsZVtdID0gew0KPiArCS8qIFF1YWxjb21tIEF0aGVyb3MgY29tcG9zaXRlIGRldmlj ZSAzMDA2ICovDQo+ICsJeyBVU0JfREVWSUNFKDB4MGNmMywgMHgzMDA2KSB9LA0KPiArDQo+ICsJ eyB9CS8qIFRlcm1pbmF0aW5nIGVudHJ5ICovDQo+ICt9Ow0KPiArDQoNCkFuZCBhZ2FpbiwgYW5v dGhlciAzcmQgdGFibGUgd2l0aCB0aGUgc2FtZSBlbnRyeS4gV2h5IGRvIHlvdSBuZWVkIHRoaXM/ DQoNCj4gICNkZWZpbmUgQlRVU0JfTUFYX0lTT0NfRlJBTUVTCTEwDQo+ICANCj4gICNkZWZpbmUg QlRVU0JfSU5UUl9SVU5OSU5HCTANCj4gQEAgLTkxMiwxMyArOTI5LDI1IEBAIHN0YXRpYyBpbnQg YnR1c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsDQo+ICAJc3RydWN0IGJ0dXNi X2RhdGEgKmRhdGE7DQo+ICAJc3RydWN0IGhjaV9kZXYgKmhkZXY7DQo+ICAJaW50IGksIGVycjsN Cj4gKwljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqbWF0Y2hfY29tcF9kZXY7DQo+ICANCj4g IAlCVF9EQkcoImludGYgJXAgaWQgJXAiLCBpbnRmLCBpZCk7DQo+ICANCj4gKwkvKiBGb3IgY29t cG9zaXRlIGRldmljZQ0KPiArCSogaXQgbWF5IG5vdCB0aGUgY2FzZSB0aGF0IGludGVyZmFjZSAw IGlzIGZvciBibHVldG9vdGggZnVuY3Rpb24uDQo+ICsJKi8NCj4gKwltYXRjaF9jb21wX2RldiA9 IHVzYl9tYXRjaF9pZChpbnRmLCBjb21wb3NpdGVfZGV2aWNlX3RhYmxlKTsNCj4gKwlpZiAobWF0 Y2hfY29tcF9kZXYpIHsNCj4gKwkJaWYgKGludGYtPmN1cl9hbHRzZXR0aW5nLT5kZXNjLmJJbnRl cmZhY2VOdW1iZXIgIT0gMikNCj4gKwkJCXJldHVybiAtRU5PREVWOw0KPiArCQlnb3RvIG1hdGNo X2lkOw0KPiArCX0NCj4gKw0KDQpTbyBzZXJpb3VzbHksIHRoaXMgY2FuIGJlIGRvbmUgdmlhIHRo ZSBtYWluIHRhYmxlIGFuZCAuZHJpdmVyX2luZm8uIFRoZSBjb21wb3NpdGUgdGFibGUgaXMgdG90 YWwgd2FzdGUuDQoNCj4gIAkvKiBpbnRlcmZhY2UgbnVtYmVycyBhcmUgaGFyZGNvZGVkIGluIHRo ZSBzcGVjICovDQo+ICAJaWYgKGludGYtPmN1cl9hbHRzZXR0aW5nLT5kZXNjLmJJbnRlcmZhY2VO dW1iZXIgIT0gMCkNCj4gIAkJcmV0dXJuIC1FTk9ERVY7DQo+ICANCj4gK21hdGNoX2lkOg0KDQpJ IGRvIG5vdCBsaWtlIHRoaXMgZm9yd2FyZCBqdW1wLg0KDQo+ICAJaWYgKCFpZC0+ZHJpdmVyX2lu Zm8pIHsNCj4gIAkJY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKm1hdGNoOw0KPiAgCQltYXRj aCA9IHVzYl9tYXRjaF9pZChpbnRmLCBibGFja2xpc3RfdGFibGUpOyBAQCAtOTM4LDcgKzk2Nyw4 IEBAIA0KPiBzdGF0aWMgaW50IGJ0dXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRm LA0KPiAgCWlmIChpZ25vcmVfc25pZmZlciAmJiBpZC0+ZHJpdmVyX2luZm8gJiBCVFVTQl9TTklG RkVSKQ0KPiAgCQlyZXR1cm4gLUVOT0RFVjsNCj4gIA0KPiAtCWlmIChpZC0+ZHJpdmVyX2luZm8g JiBCVFVTQl9BVEgzMDEyKSB7DQo+ICsJaWYgKChpZC0+ZHJpdmVyX2luZm8gJiBCVFVTQl9BVEgz MDEyKSB8fA0KPiArCQkJCShpZC0+ZHJpdmVyX2luZm8gJiBCVFVTQl9BVEgzMDA2KSkgew0KPiAg CQlzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7DQo+ ICANCj4gIAkJLyogT2xkIGZpcm13YXJlIHdvdWxkIG90aGVyd2lzZSBsZXQgYXRoM2sgZHJpdmVy IGxvYWQgQEAgLTEwNjIsNiANCj4gKzEwOTIsMTEgQEAgc3RhdGljIGludCBidHVzYl9wcm9iZShz dHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwNCj4gIAkJfQ0KPiAgCX0NCj4gIA0KPiArCWlmIChp ZC0+ZHJpdmVyX2luZm8gJiBCVFVTQl9BVEgzMDA2KSB7DQo+ICsJCUJUX0VSUigiaGFyZGNvZGVk OiBJbnRlcmZhY2UgMyIpOw0KPiArCQlkYXRhLT5pc29jID0gdXNiX2lmbnVtX3RvX2lmKGRhdGEt PnVkZXYsIDMpOw0KPiArCX0NCj4gKw0KPiAgCWlmIChkYXRhLT5pc29jKSB7DQo+ICAJCWVyciA9 IHVzYl9kcml2ZXJfY2xhaW1faW50ZXJmYWNlKCZidHVzYl9kcml2ZXIsDQo+ICAJCQkJCQkJZGF0 YS0+aXNvYywgZGF0YSk7DQoNCkFjdHVhbGx5IEkgYW0gbW9yZSBhbmQgbW9yZSB0aGlua2luZyB0 aGF0IHNvbWV0aGluZyBpcyBkb25lIGhlcmUgd2F5IHRvbyBjb21wbGljYXRlZC4gUGxlYXNlIHBv c3QgdGhlIC9wcm9jL2J1cy91c2IvZGV2aWNlcyBjb250ZW50IGZvciB0aGlzIGRldmljZSBiZWZv cmUgYW5kIGFmdGVyIGZpcm13YXJlIGdvdCBsb2FkZWQuDQoNClJlZ2FyZHMNCg0KTWFyY2VsDQoN Cg0K ^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH] Bluetooth: btusb: Add support for Qualcomm Atheros composite chip 3006 2011-11-09 11:30 ` Yao, Costa @ 2011-11-09 14:41 ` Marcel Holtmann 2011-11-10 4:50 ` Yao, Costa 0 siblings, 1 reply; 6+ messages in thread From: Marcel Holtmann @ 2011-11-09 14:41 UTC (permalink / raw) To: Yao, Costa Cc: padovan@profusion.mobi, linux-bluetooth@vger.kernel.org, Fan, Hong, Wu, Frank, Chen, Jack, Chang, Robert, Wang, Tom, Liu, Haijun, QCA.Mgr.Haijun.Liu-All Hi Costa, please do not top post on this mailing list. Otherwise I am just ignoring your emails from the next time. > For your first comment, > Yes, we can just add device with .driver_info in btusb_table, not in blacklist_table. > > For your other comments, > As the device has 4 USB interfaces and interface 2 is for Bluetooth function. We need to bypass the IF state in btusb.c as follow: > if (intf->cur_altsetting->desc.bInterfaceNuber !=0) > return -ENODEV; > > So we use a composite_device_table matching mechanism and use forward jump to bypass the bInterfaceNumber check. > And other vendors also can add their composite device in the composite_device_table to bypass the check. And this can also be done via the .driver_info to select what interfaces to expect. So please get rid of the composite table. And post the content of /proc/bus/usb/devices so that I see how your enpoints do look like. Regards Marcel ^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH] Bluetooth: btusb: Add support for Qualcomm Atheros composite chip 3006 2011-11-09 14:41 ` Marcel Holtmann @ 2011-11-10 4:50 ` Yao, Costa 2011-11-10 6:53 ` Marcel Holtmann 0 siblings, 1 reply; 6+ messages in thread From: Yao, Costa @ 2011-11-10 4:50 UTC (permalink / raw) To: Marcel Holtmann Cc: padovan@profusion.mobi, linux-bluetooth@vger.kernel.org, Fan, Hong, Wu, Frank, Chen, Jack, Chang, Robert, Wang, Tom, Liu, Haijun, QCA.Mgr.Haijun.Liu-All SGkgTWFyY2VsLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1hcmNl bCBIb2x0bWFubiBbbWFpbHRvOm1hcmNlbEBob2x0bWFubi5vcmddDQo+IFNlbnQ6IDIwMTHlubQx MeaciDnml6UgMjI6NDINCj4gVG86IFlhbywgQ29zdGENCj4gQ2M6IHBhZG92YW5AcHJvZnVzaW9u Lm1vYmk7IGxpbnV4LWJsdWV0b290aEB2Z2VyLmtlcm5lbC5vcmc7IEZhbiwgSG9uZzsgV3UsDQo+ IEZyYW5rOyBDaGVuLCBKYWNrOyBDaGFuZywgUm9iZXJ0OyBXYW5nLCBUb207IExpdSwgSGFpanVu Ow0KPiBRQ0EuTWdyLkhhaWp1bi5MaXUtQWxsDQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0hdIEJsdWV0 b290aDogYnR1c2I6IEFkZCBzdXBwb3J0IGZvciBRdWFsY29tbSBBdGhlcm9zDQo+IGNvbXBvc2l0 ZSBjaGlwIDMwMDYNCj4gDQo+IEhpIENvc3RhLA0KPiANCj4gcGxlYXNlIGRvIG5vdCB0b3AgcG9z dCBvbiB0aGlzIG1haWxpbmcgbGlzdC4gT3RoZXJ3aXNlIEkgYW0ganVzdCBpZ25vcmluZyB5b3Vy DQo+IGVtYWlscyBmcm9tIHRoZSBuZXh0IHRpbWUuDQo+IA0KPiA+IEZvciB5b3VyIGZpcnN0IGNv bW1lbnQsDQo+ID4gWWVzLCB3ZSBjYW4ganVzdCBhZGQgZGV2aWNlIHdpdGggLmRyaXZlcl9pbmZv IGluIGJ0dXNiX3RhYmxlLCBub3QgaW4NCj4gYmxhY2tsaXN0X3RhYmxlLg0KPiA+DQo+ID4gRm9y IHlvdXIgb3RoZXIgY29tbWVudHMsDQo+ID4gQXMgdGhlIGRldmljZSBoYXMgNCBVU0IgaW50ZXJm YWNlcyBhbmQgaW50ZXJmYWNlIDIgaXMgZm9yIEJsdWV0b290aCBmdW5jdGlvbi4NCj4gV2UgbmVl ZCB0byBieXBhc3MgdGhlIElGIHN0YXRlIGluIGJ0dXNiLmMgYXMgZm9sbG93Og0KPiA+ICAgICAg IGlmIChpbnRmLT5jdXJfYWx0c2V0dGluZy0+ZGVzYy5iSW50ZXJmYWNlTnViZXIgIT0wKQ0KPiA+ ICAgICAgIHJldHVybiAtRU5PREVWOw0KPiA+DQo+ID4gU28gd2UgdXNlIGEgY29tcG9zaXRlX2Rl dmljZV90YWJsZSBtYXRjaGluZyBtZWNoYW5pc20gYW5kIHVzZSBmb3J3YXJkDQo+IGp1bXAgdG8g YnlwYXNzIHRoZSBiSW50ZXJmYWNlTnVtYmVyIGNoZWNrLg0KPiA+IEFuZCBvdGhlciB2ZW5kb3Jz IGFsc28gY2FuIGFkZCB0aGVpciBjb21wb3NpdGUgZGV2aWNlIGluIHRoZQ0KPiBjb21wb3NpdGVf ZGV2aWNlX3RhYmxlIHRvIGJ5cGFzcyB0aGUgY2hlY2suDQo+IA0KPiBBbmQgdGhpcyBjYW4gYWxz byBiZSBkb25lIHZpYSB0aGUgLmRyaXZlcl9pbmZvIHRvIHNlbGVjdCB3aGF0IGludGVyZmFjZXMg dG8NCj4gZXhwZWN0LiBTbyBwbGVhc2UgZ2V0IHJpZCBvZiB0aGUgY29tcG9zaXRlIHRhYmxlLg0K PiANCj4gQW5kIHBvc3QgdGhlIGNvbnRlbnQgb2YgL3Byb2MvYnVzL3VzYi9kZXZpY2VzIHNvIHRo YXQgSSBzZWUgaG93IHlvdXIgZW5wb2ludHMNCj4gZG8gbG9vayBsaWtlLg0KPiANClRoZXJlIGlz IG5vIC9wcm9jL2J1cy91c2IgZGlyZWN0b3J5IG9uIG15IFVidW50dSAxMS4wNC4gQW5kIHVuZGVy IGRpcmVjdG9yeSAvc3lzL2J1cy91c2IvZGV2aWNlcy91c2I2LzYtMSwgdGhlcmUgYXJlIHRoZSBk ZXZpY2UgcmVsYXRlZCBmaWxlcywgc3VjaCBhcyA2LTE6MS4wICwgNi0xOjEuMSwgNi0xOjEuMiBh bmQgNi0xOjEuMy4NCjYtMToxLjAgaXMgZGlyZWN0b3J5IGZvciBpbnRlcmZhY2UgMCwgYW5kIGNv bnRhaW5zIGVwXzg0LiA2LTE6MS4xIGlzIGRpcmVjdG9yeSBmb3IgaW50ZXJmYWNlIDEsIGFuZCBj b250YWlucyBlcF84NS4gNi0xOjEuMiBpcyBkaXJlY3RvcnkgZm9yIGludGVyZmFjZSAyLCBhbmQg Y29udGFpbnMgZXBfODMgYW5kIGVwXzAzLg0KNi0xOjEuMyBpcyBkaXJlY3RvcnkgZm9yIGludGVy ZmFjZSAzLCBhbmQgY29udGFpbnMgZXBfODEgYW5kIGVwXzAyLg0KDQpCZWxvdyBpcyB0aGUgb3V0 cHV0IGJ5IGxzdXNiIC12Og0KQnVzIDAwNiBEZXZpY2UgMDAzOiBJRCAwY2YzOjMwMDYgQXRoZXJv cyBDb21tdW5pY2F0aW9ucywgSW5jLiANCkRldmljZSBEZXNjcmlwdG9yOg0KICBiTGVuZ3RoICAg ICAgICAgICAgICAgIDE4DQogIGJEZXNjcmlwdG9yVHlwZSAgICAgICAgIDENCiAgYmNkVVNCICAg ICAgICAgICAgICAgMS4xMA0KICBiRGV2aWNlQ2xhc3MgICAgICAgICAgMjM5IE1pc2NlbGxhbmVv dXMgRGV2aWNlDQogIGJEZXZpY2VTdWJDbGFzcyAgICAgICAgIDIgPw0KICBiRGV2aWNlUHJvdG9j b2wgICAgICAgICAxIEludGVyZmFjZSBBc3NvY2lhdGlvbg0KICBiTWF4UGFja2V0U2l6ZTAgICAg ICAgIDY0DQogIGlkVmVuZG9yICAgICAgICAgICAweDBjZjMgQXRoZXJvcyBDb21tdW5pY2F0aW9u cywgSW5jLg0KICBpZFByb2R1Y3QgICAgICAgICAgMHgzMDA2IA0KICBiY2REZXZpY2UgICAgICAg ICAgICAwLjAyDQogIGlNYW51ZmFjdHVyZXIgICAgICAgICAgIDAgDQogIGlQcm9kdWN0ICAgICAg ICAgICAgICAgIDAgDQogIGlTZXJpYWwgICAgICAgICAgICAgICAgIDAgDQogIGJOdW1Db25maWd1 cmF0aW9ucyAgICAgIDENCiAgQ29uZmlndXJhdGlvbiBEZXNjcmlwdG9yOg0KICAgIGJMZW5ndGgg ICAgICAgICAgICAgICAgIDkNCiAgICBiRGVzY3JpcHRvclR5cGUgICAgICAgICAyDQogICAgd1Rv dGFsTGVuZ3RoICAgICAgICAgIDIzNQ0KICAgIGJOdW1JbnRlcmZhY2VzICAgICAgICAgIDQNCiAg ICBiQ29uZmlndXJhdGlvblZhbHVlICAgICAxDQogICAgaUNvbmZpZ3VyYXRpb24gICAgICAgICAg NCBCVCBIQ0kNCiAgICBibUF0dHJpYnV0ZXMgICAgICAgICAweGUwDQogICAgICBTZWxmIFBvd2Vy ZWQNCiAgICAgIFJlbW90ZSBXYWtldXANCiAgICBNYXhQb3dlciAgICAgICAgICAgICAgMTAwbUEN CiAgICBJbnRlcmZhY2UgRGVzY3JpcHRvcjoNCiAgICAgIGJMZW5ndGggICAgICAgICAgICAgICAg IDkNCiAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgICAgIDQNCiAgICAgIGJJbnRlcmZhY2VOdW1i ZXIgICAgICAgIDANCiAgICAgIGJBbHRlcm5hdGVTZXR0aW5nICAgICAgIDANCiAgICAgIGJOdW1F bmRwb2ludHMgICAgICAgICAgIDENCiAgICAgIGJJbnRlcmZhY2VDbGFzcyAgICAgICAgIDMgSHVt YW4gSW50ZXJmYWNlIERldmljZQ0KICAgICAgYkludGVyZmFjZVN1YkNsYXNzICAgICAgMSBCb290 IEludGVyZmFjZSBTdWJjbGFzcw0KICAgICAgYkludGVyZmFjZVByb3RvY29sICAgICAgMSBLZXli b2FyZA0KICAgICAgaUludGVyZmFjZSAgICAgICAgICAgICAgMCANCiAgICAgICAgSElEIERldmlj ZSBEZXNjcmlwdG9yOg0KICAgICAgICAgIGJMZW5ndGggICAgICAgICAgICAgICAgIDkNCiAgICAg ICAgICBiRGVzY3JpcHRvclR5cGUgICAgICAgIDMzDQogICAgICAgICAgYmNkSElEICAgICAgICAg ICAgICAgMS4xMA0KICAgICAgICAgIGJDb3VudHJ5Q29kZSAgICAgICAgICAgIDAgTm90IHN1cHBv cnRlZA0KICAgICAgICAgIGJOdW1EZXNjcmlwdG9ycyAgICAgICAgIDENCiAgICAgICAgICBiRGVz Y3JpcHRvclR5cGUgICAgICAgIDM0IFJlcG9ydA0KICAgICAgICAgIHdEZXNjcmlwdG9yTGVuZ3Ro ICAgICAgNjUNCiAgICAgICAgIFJlcG9ydCBEZXNjcmlwdG9yczogDQogICAgICAgICAgICoqIFVO QVZBSUxBQkxFICoqDQogICAgICBFbmRwb2ludCBEZXNjcmlwdG9yOg0KICAgICAgICBiTGVuZ3Ro ICAgICAgICAgICAgICAgICA3DQogICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgICAgIDUNCiAg ICAgICAgYkVuZHBvaW50QWRkcmVzcyAgICAgMHg4NCAgRVAgNCBJTg0KICAgICAgICBibUF0dHJp YnV0ZXMgICAgICAgICAgICAzDQogICAgICAgICAgVHJhbnNmZXIgVHlwZSAgICAgICAgICAgIElu dGVycnVwdA0KICAgICAgICAgIFN5bmNoIFR5cGUgICAgICAgICAgICAgICBOb25lDQogICAgICAg ICAgVXNhZ2UgVHlwZSAgICAgICAgICAgICAgIERhdGENCiAgICAgICAgd01heFBhY2tldFNpemUg ICAgIDB4MDAwOCAgMXggOCBieXRlcw0KICAgICAgICBiSW50ZXJ2YWwgICAgICAgICAgICAgICAx DQogICAgSW50ZXJmYWNlIERlc2NyaXB0b3I6DQogICAgICBiTGVuZ3RoICAgICAgICAgICAgICAg ICA5DQogICAgICBiRGVzY3JpcHRvclR5cGUgICAgICAgICA0DQogICAgICBiSW50ZXJmYWNlTnVt YmVyICAgICAgICAxDQogICAgICBiQWx0ZXJuYXRlU2V0dGluZyAgICAgICAwDQogICAgICBiTnVt RW5kcG9pbnRzICAgICAgICAgICAxDQogICAgICBiSW50ZXJmYWNlQ2xhc3MgICAgICAgICAzIEh1 bWFuIEludGVyZmFjZSBEZXZpY2UNCiAgICAgIGJJbnRlcmZhY2VTdWJDbGFzcyAgICAgIDEgQm9v dCBJbnRlcmZhY2UgU3ViY2xhc3MNCiAgICAgIGJJbnRlcmZhY2VQcm90b2NvbCAgICAgIDIgTW91 c2UNCiAgICAgIGlJbnRlcmZhY2UgICAgICAgICAgICAgIDAgDQogICAgICAgIEhJRCBEZXZpY2Ug RGVzY3JpcHRvcjoNCiAgICAgICAgICBiTGVuZ3RoICAgICAgICAgICAgICAgICA5DQogICAgICAg ICAgYkRlc2NyaXB0b3JUeXBlICAgICAgICAzMw0KICAgICAgICAgIGJjZEhJRCAgICAgICAgICAg ICAgIDEuMTANCiAgICAgICAgICBiQ291bnRyeUNvZGUgICAgICAgICAgICAwIE5vdCBzdXBwb3J0 ZWQNCiAgICAgICAgICBiTnVtRGVzY3JpcHRvcnMgICAgICAgICAxDQogICAgICAgICAgYkRlc2Ny aXB0b3JUeXBlICAgICAgICAzNCBSZXBvcnQNCiAgICAgICAgICB3RGVzY3JpcHRvckxlbmd0aCAg ICAgIDUyDQogICAgICAgICBSZXBvcnQgRGVzY3JpcHRvcnM6IA0KICAgICAgICAgICAqKiBVTkFW QUlMQUJMRSAqKg0KICAgICAgRW5kcG9pbnQgRGVzY3JpcHRvcjoNCiAgICAgICAgYkxlbmd0aCAg ICAgICAgICAgICAgICAgNw0KICAgICAgICBiRGVzY3JpcHRvclR5cGUgICAgICAgICA1DQogICAg ICAgIGJFbmRwb2ludEFkZHJlc3MgICAgIDB4ODUgIEVQIDUgSU4NCiAgICAgICAgYm1BdHRyaWJ1 dGVzICAgICAgICAgICAgMw0KICAgICAgICAgIFRyYW5zZmVyIFR5cGUgICAgICAgICAgICBJbnRl cnJ1cHQNCiAgICAgICAgICBTeW5jaCBUeXBlICAgICAgICAgICAgICAgTm9uZQ0KICAgICAgICAg IFVzYWdlIFR5cGUgICAgICAgICAgICAgICBEYXRhDQogICAgICAgIHdNYXhQYWNrZXRTaXplICAg ICAweDAwMDQgIDF4IDQgYnl0ZXMNCiAgICAgICAgYkludGVydmFsICAgICAgICAgICAgICAgMQ0K ICAgIEludGVyZmFjZSBBc3NvY2lhdGlvbjoNCiAgICAgIGJMZW5ndGggICAgICAgICAgICAgICAg IDgNCiAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgICAgMTENCiAgICAgIGJGaXJzdEludGVyZmFj ZSAgICAgICAgIDINCiAgICAgIGJJbnRlcmZhY2VDb3VudCAgICAgICAgIDINCiAgICAgIGJGdW5j dGlvbkNsYXNzICAgICAgICAyMjQgV2lyZWxlc3MNCiAgICAgIGJGdW5jdGlvblN1YkNsYXNzICAg ICAgIDEgUmFkaW8gRnJlcXVlbmN5DQogICAgICBiRnVuY3Rpb25Qcm90b2NvbCAgICAgICAxIEJs dWV0b290aA0KICAgICAgaUZ1bmN0aW9uICAgICAgICAgICAgICAgMiBCbHVldG9vdGggVVNCIEhv c3QgQ29udHJvbGxlcg0KICAgIEludGVyZmFjZSBEZXNjcmlwdG9yOg0KICAgICAgYkxlbmd0aCAg ICAgICAgICAgICAgICAgOQ0KICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAgICAgNA0KICAgICAg YkludGVyZmFjZU51bWJlciAgICAgICAgMg0KICAgICAgYkFsdGVybmF0ZVNldHRpbmcgICAgICAg MA0KICAgICAgYk51bUVuZHBvaW50cyAgICAgICAgICAgMw0KICAgICAgYkludGVyZmFjZUNsYXNz ICAgICAgIDIyNCBXaXJlbGVzcw0KICAgICAgYkludGVyZmFjZVN1YkNsYXNzICAgICAgMSBSYWRp byBGcmVxdWVuY3kNCiAgICAgIGJJbnRlcmZhY2VQcm90b2NvbCAgICAgIDEgQmx1ZXRvb3RoDQog ICAgICBpSW50ZXJmYWNlICAgICAgICAgICAgICAwIA0KICAgICAgRW5kcG9pbnQgRGVzY3JpcHRv cjoNCiAgICAgICAgYkxlbmd0aCAgICAgICAgICAgICAgICAgNw0KICAgICAgICBiRGVzY3JpcHRv clR5cGUgICAgICAgICA1DQogICAgICAgIGJFbmRwb2ludEFkZHJlc3MgICAgIDB4ODEgIEVQIDEg SU4NCiAgICAgICAgYm1BdHRyaWJ1dGVzICAgICAgICAgICAgMw0KICAgICAgICAgIFRyYW5zZmVy IFR5cGUgICAgICAgICAgICBJbnRlcnJ1cHQNCiAgICAgICAgICBTeW5jaCBUeXBlICAgICAgICAg ICAgICAgTm9uZQ0KICAgICAgICAgIFVzYWdlIFR5cGUgICAgICAgICAgICAgICBEYXRhDQogICAg ICAgIHdNYXhQYWNrZXRTaXplICAgICAweDAwMTAgIDF4IDE2IGJ5dGVzDQogICAgICAgIGJJbnRl cnZhbCAgICAgICAgICAgICAgIDENCiAgICAgIEVuZHBvaW50IERlc2NyaXB0b3I6DQogICAgICAg IGJMZW5ndGggICAgICAgICAgICAgICAgIDcNCiAgICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAg ICAgNQ0KICAgICAgICBiRW5kcG9pbnRBZGRyZXNzICAgICAweDgyICBFUCAyIElODQogICAgICAg IGJtQXR0cmlidXRlcyAgICAgICAgICAgIDINCiAgICAgICAgICBUcmFuc2ZlciBUeXBlICAgICAg ICAgICAgQnVsaw0KICAgICAgICAgIFN5bmNoIFR5cGUgICAgICAgICAgICAgICBOb25lDQogICAg ICAgICAgVXNhZ2UgVHlwZSAgICAgICAgICAgICAgIERhdGENCiAgICAgICAgd01heFBhY2tldFNp emUgICAgIDB4MDA0MCAgMXggNjQgYnl0ZXMNCiAgICAgICAgYkludGVydmFsICAgICAgICAgICAg ICAgMQ0KICAgICAgRW5kcG9pbnQgRGVzY3JpcHRvcjoNCiAgICAgICAgYkxlbmd0aCAgICAgICAg ICAgICAgICAgNw0KICAgICAgICBiRGVzY3JpcHRvclR5cGUgICAgICAgICA1DQogICAgICAgIGJF bmRwb2ludEFkZHJlc3MgICAgIDB4MDIgIEVQIDIgT1VUDQogICAgICAgIGJtQXR0cmlidXRlcyAg ICAgICAgICAgIDINCiAgICAgICAgICBUcmFuc2ZlciBUeXBlICAgICAgICAgICAgQnVsaw0KICAg ICAgICAgIFN5bmNoIFR5cGUgICAgICAgICAgICAgICBOb25lDQogICAgICAgICAgVXNhZ2UgVHlw ZSAgICAgICAgICAgICAgIERhdGENCiAgICAgICAgd01heFBhY2tldFNpemUgICAgIDB4MDA0MCAg MXggNjQgYnl0ZXMNCiAgICAgICAgYkludGVydmFsICAgICAgICAgICAgICAgMQ0KICAgIEludGVy ZmFjZSBEZXNjcmlwdG9yOg0KICAgICAgYkxlbmd0aCAgICAgICAgICAgICAgICAgOQ0KICAgICAg YkRlc2NyaXB0b3JUeXBlICAgICAgICAgNA0KICAgICAgYkludGVyZmFjZU51bWJlciAgICAgICAg Mw0KICAgICAgYkFsdGVybmF0ZVNldHRpbmcgICAgICAgMA0KICAgICAgYk51bUVuZHBvaW50cyAg ICAgICAgICAgMg0KICAgICAgYkludGVyZmFjZUNsYXNzICAgICAgIDIyNCBXaXJlbGVzcw0KICAg ICAgYkludGVyZmFjZVN1YkNsYXNzICAgICAgMSBSYWRpbyBGcmVxdWVuY3kNCiAgICAgIGJJbnRl cmZhY2VQcm90b2NvbCAgICAgIDEgQmx1ZXRvb3RoDQogICAgICBpSW50ZXJmYWNlICAgICAgICAg ICAgICAwIA0KICAgICAgRW5kcG9pbnQgRGVzY3JpcHRvcjoNCiAgICAgICAgYkxlbmd0aCAgICAg ICAgICAgICAgICAgNw0KICAgICAgICBiRGVzY3JpcHRvclR5cGUgICAgICAgICA1DQogICAgICAg IGJFbmRwb2ludEFkZHJlc3MgICAgIDB4ODMgIEVQIDMgSU4NCiAgICAgICAgYm1BdHRyaWJ1dGVz ICAgICAgICAgICAgMQ0KICAgICAgICAgIFRyYW5zZmVyIFR5cGUgICAgICAgICAgICBJc29jaHJv bm91cw0KICAgICAgICAgIFN5bmNoIFR5cGUgICAgICAgICAgICAgICBOb25lDQogICAgICAgICAg VXNhZ2UgVHlwZSAgICAgICAgICAgICAgIERhdGENCiAgICAgICAgd01heFBhY2tldFNpemUgICAg IDB4MDAwMCAgMXggMCBieXRlcw0KICAgICAgICBiSW50ZXJ2YWwgICAgICAgICAgICAgICAxDQog ICAgICBFbmRwb2ludCBEZXNjcmlwdG9yOg0KICAgICAgICBiTGVuZ3RoICAgICAgICAgICAgICAg ICA3DQogICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgICAgIDUNCiAgICAgICAgYkVuZHBvaW50 QWRkcmVzcyAgICAgMHgwMyAgRVAgMyBPVVQNCiAgICAgICAgYm1BdHRyaWJ1dGVzICAgICAgICAg ICAgMQ0KICAgICAgICAgIFRyYW5zZmVyIFR5cGUgICAgICAgICAgICBJc29jaHJvbm91cw0KICAg ICAgICAgIFN5bmNoIFR5cGUgICAgICAgICAgICAgICBOb25lDQogICAgICAgICAgVXNhZ2UgVHlw ZSAgICAgICAgICAgICAgIERhdGENCiAgICAgICAgd01heFBhY2tldFNpemUgICAgIDB4MDAwMCAg MXggMCBieXRlcw0KICAgICAgICBiSW50ZXJ2YWwgICAgICAgICAgICAgICAxDQogICAgSW50ZXJm YWNlIERlc2NyaXB0b3I6DQogICAgICBiTGVuZ3RoICAgICAgICAgICAgICAgICA5DQogICAgICBi RGVzY3JpcHRvclR5cGUgICAgICAgICA0DQogICAgICBiSW50ZXJmYWNlTnVtYmVyICAgICAgICAz DQogICAgICBiQWx0ZXJuYXRlU2V0dGluZyAgICAgICAxDQogICAgICBiTnVtRW5kcG9pbnRzICAg ICAgICAgICAyDQogICAgICBiSW50ZXJmYWNlQ2xhc3MgICAgICAgMjI0IFdpcmVsZXNzDQogICAg ICBiSW50ZXJmYWNlU3ViQ2xhc3MgICAgICAxIFJhZGlvIEZyZXF1ZW5jeQ0KICAgICAgYkludGVy ZmFjZVByb3RvY29sICAgICAgMSBCbHVldG9vdGgNCiAgICAgIGlJbnRlcmZhY2UgICAgICAgICAg ICAgIDAgDQogICAgICBFbmRwb2ludCBEZXNjcmlwdG9yOg0KICAgICAgICBiTGVuZ3RoICAgICAg ICAgICAgICAgICA3DQogICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgICAgIDUNCiAgICAgICAg YkVuZHBvaW50QWRkcmVzcyAgICAgMHg4MyAgRVAgMyBJTg0KICAgICAgICBibUF0dHJpYnV0ZXMg ICAgICAgICAgICAxDQogICAgICAgICAgVHJhbnNmZXIgVHlwZSAgICAgICAgICAgIElzb2Nocm9u b3VzDQogICAgICAgICAgU3luY2ggVHlwZSAgICAgICAgICAgICAgIE5vbmUNCiAgICAgICAgICBV c2FnZSBUeXBlICAgICAgICAgICAgICAgRGF0YQ0KICAgICAgICB3TWF4UGFja2V0U2l6ZSAgICAg MHgwMDA5ICAxeCA5IGJ5dGVzDQogICAgICAgIGJJbnRlcnZhbCAgICAgICAgICAgICAgIDENCiAg ICAgIEVuZHBvaW50IERlc2NyaXB0b3I6DQogICAgICAgIGJMZW5ndGggICAgICAgICAgICAgICAg IDcNCiAgICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAgICAgNQ0KICAgICAgICBiRW5kcG9pbnRB ZGRyZXNzICAgICAweDAzICBFUCAzIE9VVA0KICAgICAgICBibUF0dHJpYnV0ZXMgICAgICAgICAg ICAxDQogICAgICAgICAgVHJhbnNmZXIgVHlwZSAgICAgICAgICAgIElzb2Nocm9ub3VzDQogICAg ICAgICAgU3luY2ggVHlwZSAgICAgICAgICAgICAgIE5vbmUNCiAgICAgICAgICBVc2FnZSBUeXBl ICAgICAgICAgICAgICAgRGF0YQ0KICAgICAgICB3TWF4UGFja2V0U2l6ZSAgICAgMHgwMDA5ICAx eCA5IGJ5dGVzDQogICAgICAgIGJJbnRlcnZhbCAgICAgICAgICAgICAgIDENCiAgICBJbnRlcmZh Y2UgRGVzY3JpcHRvcjoNCiAgICAgIGJMZW5ndGggICAgICAgICAgICAgICAgIDkNCiAgICAgIGJE ZXNjcmlwdG9yVHlwZSAgICAgICAgIDQNCiAgICAgIGJJbnRlcmZhY2VOdW1iZXIgICAgICAgIDMN CiAgICAgIGJBbHRlcm5hdGVTZXR0aW5nICAgICAgIDINCiAgICAgIGJOdW1FbmRwb2ludHMgICAg ICAgICAgIDINCiAgICAgIGJJbnRlcmZhY2VDbGFzcyAgICAgICAyMjQgV2lyZWxlc3MNCiAgICAg IGJJbnRlcmZhY2VTdWJDbGFzcyAgICAgIDEgUmFkaW8gRnJlcXVlbmN5DQogICAgICBiSW50ZXJm YWNlUHJvdG9jb2wgICAgICAxIEJsdWV0b290aA0KICAgICAgaUludGVyZmFjZSAgICAgICAgICAg ICAgMCANCiAgICAgIEVuZHBvaW50IERlc2NyaXB0b3I6DQogICAgICAgIGJMZW5ndGggICAgICAg ICAgICAgICAgIDcNCiAgICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAgICAgNQ0KICAgICAgICBi RW5kcG9pbnRBZGRyZXNzICAgICAweDgzICBFUCAzIElODQogICAgICAgIGJtQXR0cmlidXRlcyAg ICAgICAgICAgIDENCiAgICAgICAgICBUcmFuc2ZlciBUeXBlICAgICAgICAgICAgSXNvY2hyb25v dXMNCiAgICAgICAgICBTeW5jaCBUeXBlICAgICAgICAgICAgICAgTm9uZQ0KICAgICAgICAgIFVz YWdlIFR5cGUgICAgICAgICAgICAgICBEYXRhDQogICAgICAgIHdNYXhQYWNrZXRTaXplICAgICAw eDAwMTEgIDF4IDE3IGJ5dGVzDQogICAgICAgIGJJbnRlcnZhbCAgICAgICAgICAgICAgIDENCiAg ICAgIEVuZHBvaW50IERlc2NyaXB0b3I6DQogICAgICAgIGJMZW5ndGggICAgICAgICAgICAgICAg IDcNCiAgICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAgICAgNQ0KICAgICAgICBiRW5kcG9pbnRB ZGRyZXNzICAgICAweDAzICBFUCAzIE9VVA0KICAgICAgICBibUF0dHJpYnV0ZXMgICAgICAgICAg ICAxDQogICAgICAgICAgVHJhbnNmZXIgVHlwZSAgICAgICAgICAgIElzb2Nocm9ub3VzDQogICAg ICAgICAgU3luY2ggVHlwZSAgICAgICAgICAgICAgIE5vbmUNCiAgICAgICAgICBVc2FnZSBUeXBl ICAgICAgICAgICAgICAgRGF0YQ0KICAgICAgICB3TWF4UGFja2V0U2l6ZSAgICAgMHgwMDExICAx eCAxNyBieXRlcw0KICAgICAgICBiSW50ZXJ2YWwgICAgICAgICAgICAgICAxDQogICAgSW50ZXJm YWNlIERlc2NyaXB0b3I6DQogICAgICBiTGVuZ3RoICAgICAgICAgICAgICAgICA5DQogICAgICBi RGVzY3JpcHRvclR5cGUgICAgICAgICA0DQogICAgICBiSW50ZXJmYWNlTnVtYmVyICAgICAgICAz DQogICAgICBiQWx0ZXJuYXRlU2V0dGluZyAgICAgICAzDQogICAgICBiTnVtRW5kcG9pbnRzICAg ICAgICAgICAyDQogICAgICBiSW50ZXJmYWNlQ2xhc3MgICAgICAgMjI0IFdpcmVsZXNzDQogICAg ICBiSW50ZXJmYWNlU3ViQ2xhc3MgICAgICAxIFJhZGlvIEZyZXF1ZW5jeQ0KICAgICAgYkludGVy ZmFjZVByb3RvY29sICAgICAgMSBCbHVldG9vdGgNCiAgICAgIGlJbnRlcmZhY2UgICAgICAgICAg ICAgIDAgDQogICAgICBFbmRwb2ludCBEZXNjcmlwdG9yOg0KICAgICAgICBiTGVuZ3RoICAgICAg ICAgICAgICAgICA3DQogICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgICAgIDUNCiAgICAgICAg YkVuZHBvaW50QWRkcmVzcyAgICAgMHg4MyAgRVAgMyBJTg0KICAgICAgICBibUF0dHJpYnV0ZXMg ICAgICAgICAgICAxDQogICAgICAgICAgVHJhbnNmZXIgVHlwZSAgICAgICAgICAgIElzb2Nocm9u b3VzDQogICAgICAgICAgU3luY2ggVHlwZSAgICAgICAgICAgICAgIE5vbmUNCiAgICAgICAgICBV c2FnZSBUeXBlICAgICAgICAgICAgICAgRGF0YQ0KICAgICAgICB3TWF4UGFja2V0U2l6ZSAgICAg MHgwMDE5ICAxeCAyNSBieXRlcw0KICAgICAgICBiSW50ZXJ2YWwgICAgICAgICAgICAgICAxDQog ICAgICBFbmRwb2ludCBEZXNjcmlwdG9yOg0KICAgICAgICBiTGVuZ3RoICAgICAgICAgICAgICAg ICA3DQogICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgICAgIDUNCiAgICAgICAgYkVuZHBvaW50 QWRkcmVzcyAgICAgMHgwMyAgRVAgMyBPVVQNCiAgICAgICAgYm1BdHRyaWJ1dGVzICAgICAgICAg ICAgMQ0KICAgICAgICAgIFRyYW5zZmVyIFR5cGUgICAgICAgICAgICBJc29jaHJvbm91cw0KICAg ICAgICAgIFN5bmNoIFR5cGUgICAgICAgICAgICAgICBOb25lDQogICAgICAgICAgVXNhZ2UgVHlw ZSAgICAgICAgICAgICAgIERhdGENCiAgICAgICAgd01heFBhY2tldFNpemUgICAgIDB4MDAxOSAg MXggMjUgYnl0ZXMNCiAgICAgICAgYkludGVydmFsICAgICAgICAgICAgICAgMQ0KICAgIEludGVy ZmFjZSBEZXNjcmlwdG9yOg0KICAgICAgYkxlbmd0aCAgICAgICAgICAgICAgICAgOQ0KICAgICAg YkRlc2NyaXB0b3JUeXBlICAgICAgICAgNA0KICAgICAgYkludGVyZmFjZU51bWJlciAgICAgICAg Mw0KICAgICAgYkFsdGVybmF0ZVNldHRpbmcgICAgICAgNA0KICAgICAgYk51bUVuZHBvaW50cyAg ICAgICAgICAgMg0KICAgICAgYkludGVyZmFjZUNsYXNzICAgICAgIDIyNCBXaXJlbGVzcw0KICAg ICAgYkludGVyZmFjZVN1YkNsYXNzICAgICAgMSBSYWRpbyBGcmVxdWVuY3kNCiAgICAgIGJJbnRl cmZhY2VQcm90b2NvbCAgICAgIDEgQmx1ZXRvb3RoDQogICAgICBpSW50ZXJmYWNlICAgICAgICAg ICAgICAwIA0KICAgICAgRW5kcG9pbnQgRGVzY3JpcHRvcjoNCiAgICAgICAgYkxlbmd0aCAgICAg ICAgICAgICAgICAgNw0KICAgICAgICBiRGVzY3JpcHRvclR5cGUgICAgICAgICA1DQogICAgICAg IGJFbmRwb2ludEFkZHJlc3MgICAgIDB4ODMgIEVQIDMgSU4NCiAgICAgICAgYm1BdHRyaWJ1dGVz ICAgICAgICAgICAgMQ0KICAgICAgICAgIFRyYW5zZmVyIFR5cGUgICAgICAgICAgICBJc29jaHJv bm91cw0KICAgICAgICAgIFN5bmNoIFR5cGUgICAgICAgICAgICAgICBOb25lDQogICAgICAgICAg VXNhZ2UgVHlwZSAgICAgICAgICAgICAgIERhdGENCiAgICAgICAgd01heFBhY2tldFNpemUgICAg IDB4MDAyMSAgMXggMzMgYnl0ZXMNCiAgICAgICAgYkludGVydmFsICAgICAgICAgICAgICAgMQ0K ICAgICAgRW5kcG9pbnQgRGVzY3JpcHRvcjoNCiAgICAgICAgYkxlbmd0aCAgICAgICAgICAgICAg ICAgNw0KICAgICAgICBiRGVzY3JpcHRvclR5cGUgICAgICAgICA1DQogICAgICAgIGJFbmRwb2lu dEFkZHJlc3MgICAgIDB4MDMgIEVQIDMgT1VUDQogICAgICAgIGJtQXR0cmlidXRlcyAgICAgICAg ICAgIDENCiAgICAgICAgICBUcmFuc2ZlciBUeXBlICAgICAgICAgICAgSXNvY2hyb25vdXMNCiAg ICAgICAgICBTeW5jaCBUeXBlICAgICAgICAgICAgICAgTm9uZQ0KICAgICAgICAgIFVzYWdlIFR5 cGUgICAgICAgICAgICAgICBEYXRhDQogICAgICAgIHdNYXhQYWNrZXRTaXplICAgICAweDAwMjEg IDF4IDMzIGJ5dGVzDQogICAgICAgIGJJbnRlcnZhbCAgICAgICAgICAgICAgIDENCiAgICBJbnRl cmZhY2UgRGVzY3JpcHRvcjoNCiAgICAgIGJMZW5ndGggICAgICAgICAgICAgICAgIDkNCiAgICAg IGJEZXNjcmlwdG9yVHlwZSAgICAgICAgIDQNCiAgICAgIGJJbnRlcmZhY2VOdW1iZXIgICAgICAg IDMNCiAgICAgIGJBbHRlcm5hdGVTZXR0aW5nICAgICAgIDUNCiAgICAgIGJOdW1FbmRwb2ludHMg ICAgICAgICAgIDINCiAgICAgIGJJbnRlcmZhY2VDbGFzcyAgICAgICAyMjQgV2lyZWxlc3MNCiAg ICAgIGJJbnRlcmZhY2VTdWJDbGFzcyAgICAgIDEgUmFkaW8gRnJlcXVlbmN5DQogICAgICBiSW50 ZXJmYWNlUHJvdG9jb2wgICAgICAxIEJsdWV0b290aA0KICAgICAgaUludGVyZmFjZSAgICAgICAg ICAgICAgMCANCiAgICAgIEVuZHBvaW50IERlc2NyaXB0b3I6DQogICAgICAgIGJMZW5ndGggICAg ICAgICAgICAgICAgIDcNCiAgICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAgICAgNQ0KICAgICAg ICBiRW5kcG9pbnRBZGRyZXNzICAgICAweDgzICBFUCAzIElODQogICAgICAgIGJtQXR0cmlidXRl cyAgICAgICAgICAgIDENCiAgICAgICAgICBUcmFuc2ZlciBUeXBlICAgICAgICAgICAgSXNvY2hy b25vdXMNCiAgICAgICAgICBTeW5jaCBUeXBlICAgICAgICAgICAgICAgTm9uZQ0KICAgICAgICAg IFVzYWdlIFR5cGUgICAgICAgICAgICAgICBEYXRhDQogICAgICAgIHdNYXhQYWNrZXRTaXplICAg ICAweDAwMzEgIDF4IDQ5IGJ5dGVzDQogICAgICAgIGJJbnRlcnZhbCAgICAgICAgICAgICAgIDEN CiAgICAgIEVuZHBvaW50IERlc2NyaXB0b3I6DQogICAgICAgIGJMZW5ndGggICAgICAgICAgICAg ICAgIDcNCiAgICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAgICAgNQ0KICAgICAgICBiRW5kcG9p bnRBZGRyZXNzICAgICAweDAzICBFUCAzIE9VVA0KICAgICAgICBibUF0dHJpYnV0ZXMgICAgICAg ICAgICAxDQogICAgICAgICAgVHJhbnNmZXIgVHlwZSAgICAgICAgICAgIElzb2Nocm9ub3VzDQog ICAgICAgICAgU3luY2ggVHlwZSAgICAgICAgICAgICAgIE5vbmUNCiAgICAgICAgICBVc2FnZSBU eXBlICAgICAgICAgICAgICAgRGF0YQ0KICAgICAgICB3TWF4UGFja2V0U2l6ZSAgICAgMHgwMDMx ICAxeCA0OSBieXRlcw0KICAgICAgICBiSW50ZXJ2YWwgICAgICAgICAgICAgICAxDQpEZXZpY2Ug U3RhdHVzOiAgICAgMHgwMDAzDQogIFNlbGYgUG93ZXJlZA0KICBSZW1vdGUgV2FrZXVwIEVuYWJs ZWQNCg0KPiBSZWdhcmRzDQo+IA0KPiBNYXJjZWwNCj4gDQoNCkJlc3Qgd2lzaGVzLA0KQ29zdGEg WWFvDQo= ^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH] Bluetooth: btusb: Add support for Qualcomm Atheros composite chip 3006 2011-11-10 4:50 ` Yao, Costa @ 2011-11-10 6:53 ` Marcel Holtmann 0 siblings, 0 replies; 6+ messages in thread From: Marcel Holtmann @ 2011-11-10 6:53 UTC (permalink / raw) To: Yao, Costa Cc: padovan@profusion.mobi, linux-bluetooth@vger.kernel.org, Fan, Hong, Wu, Frank, Chen, Jack, Chang, Robert, Wang, Tom, Liu, Haijun, QCA.Mgr.Haijun.Liu-All Hi Costa, > > > For your first comment, > > > Yes, we can just add device with .driver_info in btusb_table, not in > > blacklist_table. > > > > > > For your other comments, > > > As the device has 4 USB interfaces and interface 2 is for Bluetooth function. > > We need to bypass the IF state in btusb.c as follow: > > > if (intf->cur_altsetting->desc.bInterfaceNuber !=0) > > > return -ENODEV; > > > > > > So we use a composite_device_table matching mechanism and use forward > > jump to bypass the bInterfaceNumber check. > > > And other vendors also can add their composite device in the > > composite_device_table to bypass the check. > > > > And this can also be done via the .driver_info to select what interfaces to > > expect. So please get rid of the composite table. > > > > And post the content of /proc/bus/usb/devices so that I see how your enpoints > > do look like. > > > There is no /proc/bus/usb directory on my Ubuntu 11.04. And under directory /sys/bus/usb/devices/usb6/6-1, there are the device related files, such as 6-1:1.0 , 6-1:1.1, 6-1:1.2 and 6-1:1.3. I prefer that output or the output of the usb-devices script from usbutils package. It is a lot easier to read. So I briefly looked through the descriptor table list. Seems like the interface endpoints are using correct Bluetooth generic interface class numbers. So we could just fix the enumeration logic to look for these. The only real trick part is that btusb has to claim two interfaces. The ACL + events one and the SCO one, but nothing is really stopping you from using USB_DEVICE_AND_INTERFACE_INFO or USB_INTERFACE_INFO. Maybe we should be doing that anyway since more and more devices are kinda trying to squeeze more and more interface into a single device descriptor. And then just look for the first interface and then try to find the second interface. T: Bus=01 Lev=02 Prnt=02 Port=03 Cnt=01 Dev#= 95 Spd=12 MxCh= 0 D: Ver= 2.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=0a5c ProdID=217f Rev=03.60 S: Manufacturer=Broadcom Corp S: Product=Broadcom Bluetooth Device C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none) This is my local Bluetooth adapter in my laptop for example. This works fine since the device descriptor using the e0:01:01, but not all Bluetooth adapters are doing this anymore. So if we would instead match for the interface descriptor e0:01:01 and once matched look for the second one to find the SCO interface we could just have a more generic driver in the first place. It also pretty easy from the endpoints (existence of the interrupt) if we have the main interface or the SCO interface. Care to send a patch for doing this change? Regards Marcel ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-11-10 6:53 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-11-08 8:38 [PATCH] Bluetooth: btusb: Add support for Qualcomm Atheros composite chip 3006 Yao, Costa 2011-11-09 7:48 ` Marcel Holtmann 2011-11-09 11:30 ` Yao, Costa 2011-11-09 14:41 ` Marcel Holtmann 2011-11-10 4:50 ` Yao, Costa 2011-11-10 6:53 ` Marcel Holtmann
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).