Return-Path: From: =?gb2312?B?s8LR3sa8?= To: Marcel Holtmann , Larry Finger CC: Daniel Drake , "Gustavo F. Padovan" , Johan Hedberg , "Linux Bluetooth mailing list" Subject: =?gb2312?B?tPC4tDogW1BBVENIIHYyXSBCbHVldG9vdGg6IGJ0dXNiOiBBZGQgUmVhbHRl?==?gb2312?Q?k_8723/8761_support?= Date: Thu, 3 Jul 2014 09:28:54 +0000 Message-ID: <54F70642BAB21D4498E1AA3EFE3D519A45FBED07@rsex2.realsil.com.cn> References: <1404218878-14218-1-git-send-email-drake@endlessm.com> <16AC594D-6B3C-4CB6-B951-0763F3E4E27A@holtmann.org> <53B2D160.4010306@lwfinger.net> In-Reply-To: Content-Type: multipart/related; boundary="_004_54F70642BAB21D4498E1AA3EFE3D519A45FBED07rsex2realsilcom_"; type="multipart/alternative" MIME-Version: 1.0 List-ID: --_004_54F70642BAB21D4498E1AA3EFE3D519A45FBED07rsex2realsilcom_ Content-Type: multipart/alternative; boundary="_000_54F70642BAB21D4498E1AA3EFE3D519A45FBED07rsex2realsilcom_" --_000_54F70642BAB21D4498E1AA3EFE3D519A45FBED07rsex2realsilcom_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGkgTGFycnksDQoNCjEuICBSVEwgdnMgUlRLICwgaXQgaXMgb2sgdG8gdXNlICJydGwgIiB0byBj b21wbHkgd2l0aCB3aWZpIGRyaXZlcnMNCg0KDQoNCjIuIGZpcm13YXJlIHRhYmxlLCB3aGVuIG1v ZHVsZSBpcyBwb3dlcmVkIG9uIHRoZSBkZWZhdWx0IExNUCB2ZXJzaW9ucyBhcmUgZGlmZmVyZW50 LiBBZnRlciBkb3dubG9hZCBmaXJtd2FyZSAsdGhlIExNUCB2ZXJzaW9uIHdpbGwgY2hhbmdlIHRv IGZpcm13YXJlIHZlcnNpb24uDQoNCltjaWQ6aW1hZ2UwMDMuanBnQDAxQ0Y5NkU0LjQzNDA0OEIw XQ0KbW9kdWxlDQoNCkxNUCBTdWJ2ZXJzaW9uDQoNCkhDSSBSZXZpc2lvbg0KDQpSVEw4NzIzQQ0K DQowWDEyMDANCg0KMFgwMDBCDQoNClJUTDg3MjNCDQoNCjBYODcyMw0KDQowWDAwMEINCg0KUlRM ODc2MUENCg0KMFg4NzYxDQoNCjBYMDAwQQ0KDQpSVEw4ODIxQQ0KDQowWDg4MjENCg0KMFgwMDBB DQoNCg0KODcyM0EvODcyM0IvODgyMUEgYXJlIGNvbWJvIG1vZHVsZXMgYm90aCB3aXRoIHdpZmkg YW5kIEJsdWV0b290aDsNCjg3NjFBIGlzIEJsdWV0b290aCBvbmx5IGNoaXAsIGJ1dCBjYW4gYmUg dXNlZCB0byB3aXRoIHdpZmkgODgxMi84MTkyLCBhbmQgd2lsbCB1c2UgZGlmZmVyZW50IGJsdWV0 b290aCBmaXJtd2FyZSBmb3IgZWFjaCBjb21iaW5hdGlvbi4NClRoaXMgY2FuIG9ubHkgYmUgZGlz dGluZ3Vpc2hlZCBieSBwaWRzLg0KSSB0aGluayBpdCBpcyBPSyB0byBvbmx5IHN1cHBvcnQgODcy M0EgJjg3MjNCIGFuZCBsZWF2ZSBvdGhlcnMgZm9yIG5leHQgdGltZSBkcml2ZXIgdXBkYXRlLg0K DQoNCjIuICAgICBJIHJlYWQgdGhlIGNvZGVzIGluIGtlcm5lbCAzLjEzICwgc29tZSBjb21wYW5p ZXMgc3VjaCBhcyBJbnRlbCBhZGQgc2V0dXAgZnVuY3Rpb24gZm9yIHRoZWlyIG1vZHVsZXMgaW4g Z2VuZXJhbCBidHVzYiBkcml2ZXIgOyAgd2hpbGUgc29tZSBwcm92aWRlIGFub3RoZXIgZHJpdmVy IGFuZCBzZXQgQlRVU0JfSUdOT1JFIGluIGJ0dXNiX3Byb2JlLCBob3cgY2FuIGl0IHdvcmsgZm9y IHRoZWlyIHByaXZhdGUgZHJpdmVyIG9ubHkgZG93bmxvYWQgZmlybXdhcmUgYW5kIGRvIG5vdCBj YWxsIGFueSBmdW5jdGlvbnMgb2YgYmx1ZXogaGNpIGxheWVyID8NCg0KDQoNCg0KDQoNCg0KQ2hh bXBpb24NCg0KRXh0OjYzMjUNCg0KDQoNCg0KDQotLS0tLdPKvP7Urbz+LS0tLS0NCreivP7Iyzog TWFyY2VsIEhvbHRtYW5uIFttYWlsdG86bWFyY2VsQGhvbHRtYW5uLm9yZ10NCreiy83KsbzkOiAy MDE0xOo31MIxyNUgMjM6MjcNCsrVvP7IyzogTGFycnkgRmluZ2VyDQqzrcvNOiBEYW5pZWwgRHJh a2U7IEd1c3Rhdm8gRi4gUGFkb3ZhbjsgSm9oYW4gSGVkYmVyZzsgTGludXggQmx1ZXRvb3RoIG1h aWxpbmcgbGlzdDsgs8LR3sa8DQrW98ziOiBSZTogW1BBVENIIHYyXSBCbHVldG9vdGg6IGJ0dXNi OiBBZGQgUmVhbHRlayA4NzIzLzg3NjEgc3VwcG9ydA0KDQoNCg0KSGkgTGFycnksDQoNCg0KDQo+ Pj4gICAgICAgICAuZHJpdmVyX2luZm8gPSBCVFVTQl9SVEsgfCBCVFVTQl9SVEwuLi4NCg0KPj4+ DQoNCj4+PiBUaGUgdGhpbmsgd2l0aCBSVEwgdnMgUlRLIGlzIG5vdyBjb25mdXNpbmcgbWUgZXZl biBtb3JlLiBTbyB3aGF0IGFyZSB0aGUgb2ZmaWNpYWwgbW9kZWwgbnVtYmVycyBmcm9tIFJlYWx0 ZWsgYW55d2F5LiBNYXliZSB3ZSBzaG91bGQgc3RhcnQgdXNpbmcgdGhlbSBub3cgYW5kIG5vdCBi b3RoZXIgY2FycnlpbmcgYXJvdW5kIHNvbWUgbGVnYWN5IGZyb20gdGhlIEV0aGVybmV0IG9yIFdp RmkgZHJpdmVycy4NCg0KPj4NCg0KPj4gVGhlIHByb2R1Y3QgY29kZXMgYXJlIFJUTHh4eHggc28g cGVyaGFwcyBJIHdpbGwgdXBkYXRlIGl0IHRvIHVzZSAncnRsJw0KDQo+PiBpbnN0ZWFkIG9mICdy dGsnIGV2ZXJ5d2hlcmUuIFRoYXQgJ3J0aycganVzdCBjYW1lIGZyb20gdGhlIHZlbmRvcg0KDQo+ PiBkcml2ZXIuIE1heWJlIExhcnJ5IGhhcyBzb21lIGtub3dsZWRnZSBvZiB0aGUgY29udmVudGlv bnMgaGVyZS4NCg0KPg0KDQo+IFRoZSBSZWFsdGVrIGRyaXZlcnMgZm9yIHdpZmkgZGV2aWNlcyBh bGwgdXNlICJydGwiIGFzIHRoZSBhYmJyZXZpYXRpb24uIEFzIEkgaGFkIG5vdCBtYWRlIG1hbnkg Y2hhbmdlcyB0byB0aGUgdmVuZG9yLXN1cHBsaWVkIGRyaXZlciBmb3IgQlQsIEkgaGFkIG5vdCB3 b3JyaWVkIGFib3V0IHN1Y2ggZGV0YWlsczsgaG93ZXZlciwgSSBkbyB0aGluayB0aGF0ICJydGwi IHNob3VsZCBiZSB1c2VkIGhlcmUuDQoNCg0KDQp0aGF0IGlzIGZpbmUgd2l0aCBtZSBhcyB3ZWxs LiBMZXRzIGp1c3QgdXNlICJydGwiIGluIHRoZSBkcml2ZXIuDQoNCg0KDQo+Pj4gVGhlcmUgaXMg YWxzbyBubyBnZW5lcmljIHZlbmRvciBjb21tYW5kIHRoYXQgd2UgY2FuIHJ1biBmaXJzdCB0byBn ZXQgdGhlIG1vZGVsIGluZm9ybWF0aW9uPyBEbyB3ZSByZWFsbHkgbmVlZCB0byB1c2UgVVNCIHZl bmRvciBhbmQgcHJvZHVjdCBpZHMgdG8gcGljayB0aGUgcmlnaHQgb25lLiBJIHBlcnNvbmFsbHkg aGF0ZSB1c2luZyB2ZW5kb3IgYW5kIHByb2R1Y3QgaWRzLg0KDQo+Pg0KDQo+PiBJJ20gbm8gZXhw ZXJ0IG9uIHRoaXMgaGFyZHdhcmUsIGp1c3QgaGFwcGVuZWQgdG8gcmVjZWl2ZSBvbmUNCg0KPj4g aW5zdGFuY2UsIGFuZCB0aGVuIGZvdW5kIHRoZSB2ZW5kb3IgZHJpdmVyIG9uIExhcnJ5J3MgZ2l0 aHViLiBUaGUNCg0KPj4gdmVuZG9yIGRyaXZlciB1c2VzIFVTQiBJRHMgZm9yIHRoaXMgcHVycG9z ZSwgYW5kIEkgZG9uJ3QgaGF2ZSBhbnkNCg0KPj4gZXh0cmEgaW5zaWdodCAobm9yIGFjY2VzcyB0 byBvdGhlciBkZXZpY2VzKS4NCg0KPg0KDQo+IEFsbCBJIGtub3cgYWJvdXQgdGhpcyBpc3N1ZSBp cyB0aGF0IHRoZSB1bm1vZGlmaWVkIGJ0dXNiIHdpbGwgbG9hZCB3aGVuIG9uZSAgb25lIG9mIHRo ZSBSZWFsdGVrIEJUIGRldmljZXMgaXMgcHJlc2VudCwgdGh1cyB0aGVyZSBpcyBzb21lIGdlbmVy aWMgcmVjb2duaXRpb24uIFRoZSBkcml2ZXIgc2hvdWxkIHNob3VsZCBiZSBhYmxlIHRvIHVzZSB0 aGF0OyBob3dldmVyLCBpdCB3aWxsIHN0aWxsIG5lZWQgdG8gYmUgYWJsZSB0byBkaWZmZXJlbnRp YXRlIGFtb25nIHRoZSB2YXJpb3VzIFJlYWx0ZWsgZGV2aWNlcy4gTXkgdm90ZSBpcyB0byBrZWVw IHRoZSBVU0IgSUQgaW5mb3JtYXRpb24uDQoNCg0KDQpUaGUgZ2VuZXJpYyByZWNvZ25pdGlvbiBp cyBkb25lIG9uIHRoZSBpbnRlcmZhY2UgbGV2ZWwuDQoNCg0KDQpJOiogSWYjPSAwIEFsdD0gMCAj RVBzPSAzIENscz1lMCh3bGNvbikgU3ViPTAxIFByb3Q9MDEgRHJpdmVyPWJ0dXNiDQoNCg0KDQpC bHVldG9vdGggVVNCIGRldmljZXMgaGF2ZSBhIHN0YW5kYXJkIGNsYXNzIGRlc2NyaXB0b3IgZm9y IHRoaXMuIFdlIGFsbG93IGZvciBhIHNldHVwIHN0YWdlIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBk dXJpbmcgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRldmljZS4gU28gdGhhdCBhbGwgd29ya3Mgbmlj ZWx5LiBZb3UganVzdCBoYXZlIHRvIGFzc2lnbiB0aGUgcmlnaHQgc2V0dXAgY2FsbGJhY2sgZm9y IHRoaXMuDQoNCg0KDQo+PiBIb3dldmVyLCBJIGp1c3Qgbm90aWNlZCB0aGF0IHdlIG9ubHkgaGF2 ZSAyIG9mIHRoZSA3IG1haW4gZmlybXdhcmUNCg0KPj4gZmlsZXMgYXZhaWxhYmxlLiBMYXJyeSwg ZG8geW91IGhhdmUgYWxsIG9mIHRoZSBvbmVzIG1lbnRpb25lZCBpbiB0aGUNCg0KPj4gZHJpdmVy PyBlLmcuIG9uZXMgbGlrZSBydGw4NzYxYXc4MTkyZXVfZncgYXJlIG1pc3NpbmcgZnJvbSB5b3Vy IHJlcG8uDQoNCj4+DQoNCj4+IEdvb2dsaW5nIGFyb3VuZCwgaXQgbG9va3MgbGlrZSB0aGVzZSBv dGhlciBkZXZpY2VzIGFyZSByZWFsbHkgbm90DQoNCj4+IGNvbW1vbiwgbWF5YmUgd2Ugc2hvdWxk IGp1c3QgcmVkdWNlIGl0IHRvIFJUTDg3MjNBIGFuZCBSVEw4NzIzQg0KDQo+PiBzdXBwb3J0LCBl c3BlY2lhbGx5IGlmIHdlIGRvbid0IGhhdmUgZmlybXdhcmUgZm9yIHRoZSBvdGhlcnMuIFRoZXJl DQoNCj4+IGlzIG9ubHkgMSB0eXBlIG9mIGZpcm13YXJlIGZvciBlYWNoIHZhcmlhbnQgdGhlcmUs IHRoZSBjb2RlIHdvdWxkIGJlDQoNCj4+IHNpbXBsZXIsIG5vIG5lZWQgZm9yIFZJRC9QSUQgbG9v a3VwLiBUaGF0IHdvdWxkIGJlIGVub3VnaCB0byBtYWtlIG1lDQoNCj4+IGhhcHB5LCBwbHVzIGFs bCB0aGUgcGVvcGxlIGZpbGluZyBpc3N1ZXMgb24gTGFycnkncyBnaXRodWIuDQoNCj4NCg0KPiBM b29raW5nIGF0IHRoZSBmaXJtd2FyZSB0YWJsZSwNCg0KPg0KDQo+ICt9IHJ0a19md190YWJsZVtd ID0gew0KDQo+ICsgICB7IEJUVVNCX1JUTDg3MjNBLCBST01fTE1QXzg3MjNhLCAicnRsODcyM2Ff ZnciLCAicnRsODcyM2FfY29uZmlnIiB9LA0KDQo+ICsgICB7IEJUVVNCX1JUTDg3MjNCLCBST01f TE1QXzg3MjNiLCAicnRsODcyM2JfZnciLCAicnRsODcyM2JfY29uZmlnIiB9LA0KDQo+ICsgICB7 IEJUVVNCX1JUTDg3NjFBVSwgUk9NX0xNUF84NzYxYSwgInJ0bDg3NjFhdV9mdyIsICJydGw4NzYx YV9jb25maWciIH0sDQoNCj4gKyAgIHsgQlRVU0JfUlRMODc2MUFXXzgxOTJFVSwgUk9NX0xNUF84 NzYxYSwgInJ0bDg3NjFhdzgxOTJldV9mdyIsICJydGw4NzYxYV9jb25maWciIH0sDQoNCj4gKyAg IHsgQlRVU0JfUlRMODc2MUFVXzgxOTJFRSwgUk9NX0xNUF84NzYxYSwgInJ0bDg3NjFhdTgxOTJl ZV9mdyIsICJydGw4NzYxYV9jb25maWciIH0sDQoNCj4gKyAgIHsgQlRVU0JfUlRMODc2MUFVXzg4 MTJBRSwgUk9NX0xNUF84NzYxYSwgInJ0bDg3NjFhdTg4MTJhZV9mdyIsICJydGw4NzYxYV9jb25m aWciIH0sDQoNCj4gKyAgIHsgQlRVU0JfUlRMODgyMUEsIFJPTV9MTVBfODgyMWEsICJydGw4ODIx YV9mdyIsICJydGw4ODIxYV9jb25maWciIH0sDQoNCj4gK307DQoNCj4NCg0KPiBUaGUgUlRMODgx MkFFLCBSVEw4ODIxQUUsIGFuZCBSVEw4MTkyRUUgZGV2aWNlcyBhcmUgbm90IHRoYXQgcmFyZS4g VGhlIHdpZmkgZHJpdmVycyBmb3IgdGhvc2UgZGV2aWNlcyBoYXZlIGJlZW4gYWRkZWQgaW4gdGhl IGxhc3QgY291cGxlIG9mIGtlcm5lbCBjeWNsZXMuIEkgd2lsbCBiZSBjb250YWN0aW5nIFJlYWx0 ZWsgdG8gZ2V0IGNvcGllcyBvZiB0aG9zZSBmaXJtd2FyZSBmaWxlcy4gSSBkbyBub3Qga25vdyBh Ym91dCB0aGUgUlRMODE5MkVVIG9yIHRoZSBSVEw4NzYxQVUuIEkgaGF2ZSBub3QgcnVuIGFjcm9z cyB0aG9zZSBVU0IgZGV2aWNlcyB5ZXQuDQoNCj4NCg0KPiBCVFcsIEkgYWRkZWQgbXkgY29udGFj dCBhdCBSZWFsdGVrIHRvIHRoZSBDYyBsaXN0Lg0KDQoNCg0KQ2FuIHNvbWVvbmUgcGxlYXNlIHNl bmQgYSBjb3B5IChwcml2YXRlIGlmIG5lZWRlZCkgb2YgdGhlIFJlYWx0ZWsgdmVuZG9yIHNwZWNp ZmljIGNvbW1hbmRzLiBJIGxpa2UgdG8gcmVhZCB0aHJvdWdoIHRoYXQgb25lIGFuZCBzZWUgd2hh dCB3ZSBjYW4gZG8gbWFrZSB0aGlzIHNtb290aC4NCg0KDQoNCj4+IE9ubHkgY2F2ZWF0IHRoZXJl IGlzIHRoYXQgc29tZW9uZSBtaWdodCBwdXNoIHVzIHRvIHJldHVybiB0byB0aGUNCg0KPj4gUlRM ODc2MSBtZXNzIChkaWZmZXJlbnQgZmlybXdhcmUgZm9yIGRpZmZlcmVudCBWSUQvUElEKSBzb21l IGRheS4NCg0KPg0KDQo+IEkgYW0gY2VydGFpbiB0aGF0IFJlYWx0ZWsgc2VwYXJhdGVkIHRoZXNl IGRldmljZXMgZm9yIGEgcmVhc29uLCB3aGljaCBpcyB3aHkgSSBmYXZvciBrZWVwaW5nIFZJRC9Q SUQuDQoNCj4NCg0KPiBQbGVhc2UgZG8gbm90IGJlIGhhc3R5IGluIHBvc3RpbmcgbmV3IHZlcnNp b25zLiBZb3UgaGFkIFYyIGluIG15IG1haWxib3ggYmVmb3JlIEkgaGFkIGV2ZW4gZ290dGVuIGEg Y2hhbmNlIHRvIHNlZSBWMS4gUmVtZW1iZXIgdGhhdCB3ZSBsaXZlIGluIGRpZmZlcmVudCB0aW1l IHpvbmVzLg0KDQoNCg0KV2UgY2FuIGV2ZW4ga2VlcCBkaWZmZXJlbnQgc2V0dXAgY2FsbGJhY2tz IGZvciBkaWZmZXJlbnQgbW9kZWxzLCBidXQgSSBmaXJzdCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hh dCB0aGUgZGlmZmVyZW5jZSBhcmUuIEhvd2V2ZXIgSSBhbSBhbGwgZm9yIHRoZSBjYXNlIHRoYXQg d2UgZG8gbm90IGhhdmUgdGhlIGZpcm13YXJlLCB3ZSBkbyBub3QgYm90aGVyIHN1cHBvcnRpbmcg aXQuIEZpcm13YXJlIHNob3VsZCBiZSBpbiBsaW51eC1maXJtd2FyZSBmb3IgYWxsIHN1cHBvcnRl ZCBoYXJkd2FyZS4NCg0KDQoNClJlZ2FyZHMNCg0KDQoNCk1hcmNlbA0KDQoNCg== --_000_54F70642BAB21D4498E1AA3EFE3D519A45FBED07rsex2realsilcom_ Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable

Hi Larry,<= /p>

1.  RTL vs RTK , it is = ok to use "rtl " to comply with wifi drivers

 

2. firmware table, when module is powered on the default LMP versions are d= ifferent. After download firmware ,the LMP version will change to firmware = version.

 

module

LMP Subversion

HCI Revision

RTL8723A

0X1200

0X000B

RTL8723B

0X8723

0X000B

RTL8761A

0X8761

0X000A

RTL8821A

0X8821

0X000A

 <= /p>

8723A/8723B/8821A are com= bo modules both with wifi and Bluetooth;

8761A is Bluetooth only c= hip, but can be used to with wifi 8812/8192, and will use different bluetoo= th firmware for each combination.

This can only be distingu= ished by pids.

I think it is OK to only = support 8723A &8723B and leave others for next time driver update.=

 <= /p>

2.     I= read the codes in kernel 3.13 , some companies such as Intel add setup fun= ction for their modules in general btusb driver ;  while some provide = another driver and set BTUSB_IGNORE in btusb_probe, how can it work for their private driver only download firmware and do not call any f= unctions of bluez hci layer ?

 

 

 

Champion

Ext:6325

 

 

-----=D3=CA=BC=FE=D4=AD=BC=FE-----
=B7=A2=BC=FE=C8=CB: Marcel Holtmann [mailto:marcel@holtmann.org]
=B7=A2=CB=CD=CA=B1=BC=E4
: 2014=C4=EA7=D4=C21=C8=D5 23:27
=CA=D5=BC=FE=C8=CB: Larry Finger
=B3=AD=CB=CD: Daniel Drake; Gustavo F. Padovan; Johan Hedberg; Linux Bluet= ooth mailing list; =B3=C2=D1=DE=C6=BC
=D6=F7=CC=E2: Re: [PATCH v2] Bluetooth: btusb: Add Realtek 8723/8761 suppo= rt

 

Hi Larry,<= /p>

 

>>>  &nbs= p;      .driver_info =3D BTUSB_RTK | BTUSB_RTL...<= o:p>

>>>

>>> The think with = RTL vs RTK is now confusing me even more. So what are the official model nu= mbers from Realtek anyway. Maybe we should start using them now and not bot= her carrying around some legacy from the Ethernet or WiFi drivers.

>> <= /p>

>> The product codes a= re RTLxxxx so perhaps I will update it to use 'rtl'

>> instead of 'rtk' ev= erywhere. That 'rtk' just came from the vendor

>> driver. Maybe Larry= has some knowledge of the conventions here.

>

> The Realtek drivers for= wifi devices all use "rtl" as the abbreviation. As I had not mad= e many changes to the vendor-supplied driver for BT, I had not worried abou= t such details; however, I do think that "rtl" should be used here.

 

that is fine with me as well= . Lets just use "rtl" in the driver.

 

>>> There is also n= o generic vendor command that we can run first to get the model information= ? Do we really need to use USB vendor and product ids to pick the right one= . I personally hate using vendor and product ids.

>> <= /p>

>> I'm no expert on th= is hardware, just happened to receive one

>> instance, and then = found the vendor driver on Larry's github. The

>> vendor driver uses = USB IDs for this purpose, and I don't have any

>> extra insight (nor = access to other devices).

>

> All I know about this i= ssue is that the unmodified btusb will load when one  one of the Realt= ek BT devices is present, thus there is some generic recognition. The drive= r should should be able to use that; however, it will still need to be able to differentiate among the various Realtek d= evices. My vote is to keep the USB ID information.

 

The generic recognition is d= one on the interface level.

 

I:* If#=3D 0 Alt=3D 0 #EPs= =3D 3 Cls=3De0(wlcon) Sub=3D01 Prot=3D01 Driver=3Dbtusb

 

Bluetooth USB devices have a= standard class descriptor for this. We allow for a setup stage that will b= e executed during initialization of the device. So that all works nicely. Y= ou just have to assign the right setup callback for this.

 

>> However, I just not= iced that we only have 2 of the 7 main firmware

>> files available. La= rry, do you have all of the ones mentioned in the

>> driver? e.g. ones l= ike rtl8761aw8192eu_fw are missing from your repo.

>> <= /p>

>> Googling around, it= looks like these other devices are really not

>> common, maybe we sh= ould just reduce it to RTL8723A and RTL8723B

>> support, especially= if we don't have firmware for the others. There

>> is only 1 type of f= irmware for each variant there, the code would be

>> simpler, no need fo= r VID/PID lookup. That would be enough to make me

>> happy, plus all the= people filing issues on Larry's github.

>

> Looking at the firmware= table,

>

> +} rtk_fw_table[] = =3D {

> +   { BTU= SB_RTL8723A, ROM_LMP_8723a, "rtl8723a_fw", "rtl8723a_config&= quot; },

> +   { BTU= SB_RTL8723B, ROM_LMP_8723b, "rtl8723b_fw", "rtl8723b_config&= quot; },

> +   { BTU= SB_RTL8761AU, ROM_LMP_8761a, "rtl8761au_fw", "rtl8761a_confi= g" },

> +   { BTU= SB_RTL8761AW_8192EU, ROM_LMP_8761a, "rtl8761aw8192eu_fw", "r= tl8761a_config" },

> +   { BTU= SB_RTL8761AU_8192EE, ROM_LMP_8761a, "rtl8761au8192ee_fw", "r= tl8761a_config" },

> +   { BTU= SB_RTL8761AU_8812AE, ROM_LMP_8761a, "rtl8761au8812ae_fw", "r= tl8761a_config" },

> +   { BTU= SB_RTL8821A, ROM_LMP_8821a, "rtl8821a_fw", "rtl8821a_config&= quot; },

> +};

>

> The RTL8812AE, RTL8821A= E, and RTL8192EE devices are not that rare. The wifi drivers for those devi= ces have been added in the last couple of kernel cycles. I will be contacti= ng Realtek to get copies of those firmware files. I do not know about the RTL8192EU or the RTL8761AU. I have not run = across those USB devices yet.

>

> BTW, I added my contact= at Realtek to the Cc list.

 

Can someone please send a co= py (private if needed) of the Realtek vendor specific commands. I like to r= ead through that one and see what we can do make this smooth.

 

>> Only caveat there i= s that someone might push us to return to the

>> RTL8761 mess (diffe= rent firmware for different VID/PID) some day.

>

> I am certain that Realt= ek separated these devices for a reason, which is why I favor keeping VID/P= ID.

>

> Please do not be hasty = in posting new versions. You had V2 in my mailbox before I had even gotten = a chance to see V1. Remember that we live in different time zones.

 

We can even keep different s= etup callbacks for different models, but I first need to understand what th= e difference are. However I am all for the case that we do not have the fir= mware, we do not bother supporting it. Firmware should be in linux-firmware for all supported hardware.

 

Regards

 

Marcel

 

--_000_54F70642BAB21D4498E1AA3EFE3D519A45FBED07rsex2realsilcom_-- --_004_54F70642BAB21D4498E1AA3EFE3D519A45FBED07rsex2realsilcom_ Content-Type: image/jpeg; name="image003.jpg" Content-Description: image003.jpg Content-Disposition: inline; filename="image003.jpg"; size=12169; creation-date="Thu, 03 Jul 2014 09:28:54 GMT"; modification-date="Thu, 03 Jul 2014 09:28:54 GMT" Content-ID: Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAoHBwkHBgoJCAkLCwoMDxkQDw4ODx4WFxIZJCAmJSMg IyIoLTkwKCo2KyIjMkQyNjs9QEBAJjBGS0U+Sjk/QD3/2wBDAQsLCw8NDx0QEB09KSMpPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT3/wAARCAClAeQDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD1fVNU XTFg/wBHmuJJ5PLRIioOdpY8sQOimqf/AAkM/wD0Br7/AL+Q/wDxdHiH/j70j/r6b/0TJSVtTpqS uznq1XB2Qv8AwkM//QGvv+/kP/xdH/CQz/8AQGvv+/kP/wAXSUVfsYmf1iQv/CQz/wDQGvv+/kP/ AMXR/wAJDP8A9Aa+/wC/kP8A8XSUUexiH1iQv/CQz/8AQGvv+/kP/wAXR/wkM/8A0Br7/v5D/wDF 0lFHsYh9YkL/AMJDP/0Br7/v5D/8XR/wkM//AEBr7/v5D/8AF0lFHsYh9YkL/wAJDP8A9Aa+/wC/ kP8A8XR/wkM//QGvv+/kP/xdJRR7GIfWJC/8JDP/ANAa+/7+Q/8AxdH/AAkM/wD0Br7/AL+Q/wDx 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 AAHT/CgaBpAII0uxBHQi3T/CiigDQooooA//2Q== --_004_54F70642BAB21D4498E1AA3EFE3D519A45FBED07rsex2realsilcom_--