RE: [PATCH] Bluetooth: ath3k: Add supports for Qualcomm Atheros 3012 composite chip
From: Yao, Costa <hidden>
Date: 2011-11-21 02:13:21
MSBVc2UgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8gdG8gZG8gZGV2aWNlIG1hdGNoaW5n IHdpdGggUElEL1ZJRCAweDMwMDYvMHgwY2YzLg0KMiBEZWxldGUgZGVzYy5iSW50ZXJmYWNlTnVt YmVyICE9IDAgY2hlY2suDQozIERvd25sb2FkIGZpcm13YXJlIHRvIGhhcmR3YXJlIGZvciBQSUQ9 MHgzMDA2DQoNClNpZ25lZC1vZmYtYnk6IENvc3RhIFlhbyA8Y3F5YW9AcWNhLnF1YWxjb21tLmNv bT4NCi0tLQ0KIGRyaXZlcnMvYmx1ZXRvb3RoL2F0aDNrLmMgfCAgIDY5ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQ0KIDEgZmlsZXMgY2hhbmdlZCwgNjMgaW5z ZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmx1ZXRv b3RoL2F0aDNrLmMgYi9kcml2ZXJzL2JsdWV0b290aC9hdGgzay5jDQppbmRleCAxNjIyNzcyLi43 N2YwNDBkIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvYXRoM2suYw0KKysrIGIvZHJp dmVycy9ibHVldG9vdGgvYXRoM2suYw0KQEAgLTQwLDYgKzQwLDcgQEANCiANCiAjZGVmaW5lIEFU SDNLX01PREVfTUFTSwkJCQkweDNGDQogI2RlZmluZSBBVEgzS19OT1JNQUxfTU9ERQkJCTB4MEUN CisjZGVmaW5lIEFUSDNLX1BSRUJPT1RfTU9ERQkJCTB4MEQNCiANCiAjZGVmaW5lIEFUSDNLX1BB VENIX1VQREFURQkJCTB4ODANCiAjZGVmaW5lIEFUSDNLX1NZU0NGR19VUERBVEUJCQkweDQwDQpA QCAtNDksNiArNTAsOSBAQA0KICNkZWZpbmUgQVRIM0tfWFRBTF9GUkVRXzE5UDIJCQkweDAyDQog I2RlZmluZSBBVEgzS19OQU1FX0xFTgkJCQkweEZGDQogDQorI2RlZmluZSBBVEgzS18zMDEyCQkw eDgwDQorI2RlZmluZSBBVEgzS18zMDA2CQkweDAxMDANCisNCiBzdHJ1Y3QgYXRoM2tfdmVyc2lv biB7DQogCXVuc2lnbmVkIGludAlyb21fdmVyc2lvbjsNCiAJdW5zaWduZWQgaW50CWJ1aWxkX3Zl cnNpb247DQpAQCAtNzEsNiArNzUsNyBAQCBzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgYXRo M2tfdGFibGVbXSA9IHsNCiANCiAJLyogQXRoZXJvcyBBUjMwMTIgd2l0aCBzZmxhc2ggZmlybXdh cmUqLw0KIAl7IFVTQl9ERVZJQ0UoMHgwQ0YzLCAweDMwMDQpIH0sDQorCXsgVVNCX0RFVklDRV9B TkRfSU5URVJGQUNFX0lORk8oMHgwQ0YzLCAweDMwMDYsIDB4ZTAsIDB4MDEsIDB4MDEpIH0sDQog DQogCS8qIEF0aGVyb3MgQVI1QkJVMTIgd2l0aCBzZmxhc2ggZmlybXdhcmUgKi8NCiAJeyBVU0Jf REVWSUNFKDB4MDQ4OSwgMHhFMDJDKSB9LA0KQEAgLTgwLDEzICs4NSwxMyBAQCBzdGF0aWMgc3Ry dWN0IHVzYl9kZXZpY2VfaWQgYXRoM2tfdGFibGVbXSA9IHsNCiANCiBNT0RVTEVfREVWSUNFX1RB QkxFKHVzYiwgYXRoM2tfdGFibGUpOw0KIA0KLSNkZWZpbmUgQlRVU0JfQVRIMzAxMgkJMHg4MA0K IC8qIFRoaXMgdGFibGUgaXMgdG8gbG9hZCBwYXRjaCBhbmQgc3lzY29uZmlnIGZpbGVzDQogICog Zm9yIEFSMzAxMiAqLw0KIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGgza19ibGlzdF90 YmxbXSA9IHsNCiANCiAJLyogQXRoZXJvcyBBUjMwMTIgd2l0aCBzZmxhc2ggZmlybXdhcmUqLw0K LQl7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDMwMDQpLCAuZHJpdmVyX2luZm8gPSBCVFVTQl9BVEgz MDEyIH0sDQorCXsgVVNCX0RFVklDRSgweDBjZjMsIDB4MzAwNCksIC5kcml2ZXJfaW5mbyA9IEFU SDNLXzMwMTIgfSwNCisJeyBVU0JfREVWSUNFKDB4MENGMywgMHgzMDA2KSwgLmRyaXZlcl9pbmZv ID0gQVRIM0tfMzAwNiB9LA0KIA0KIAl7IH0JLyogVGVybWluYXRpbmcgZW50cnkgKi8NCiB9Ow0K QEAgLTM1NSw2ICszNjAsNTIgQEAgc3RhdGljIGludCBhdGgza19sb2FkX3N5c2NmZyhzdHJ1Y3Qg dXNiX2RldmljZSAqdWRldikNCiAJcmV0dXJuIHJldDsNCiB9DQogDQorc3RhdGljIGludCBhdGgz a19kb3dubG9hZF8zMDA2KHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2KQ0KK3sNCisJaW50IHJldDsN CisJdW5zaWduZWQgY2hhciBmd19zdGF0ZTsNCisNCisJaWYgKGxlMTZfdG9fY3B1KHVkZXYtPmRl c2NyaXB0b3IuYmNkRGV2aWNlKSA+IDB4MDAwMSkgew0KKwkJQlRfRVJSKCJhdGgza19wcm9iZTog dWRldi0+ZGVzY3JpcHRvci5iY2REZXZpY2UiKTsNCisJCXJldHVybiAtRU5PREVWOw0KKwl9DQor DQorCXJldCA9IGF0aDNrX2dldF9zdGF0ZSh1ZGV2LCAmZndfc3RhdGUpOw0KKwlpZiAocmV0IDwg MCkgew0KKwkJQlRfRVJSKCJhdGgza19wcm9iZTogYXRoM2tfZ2V0X3N0YXRlIGVyciIpOw0KKwkJ cmV0dXJuIHJldDsNCisJfQ0KKw0KKwlpZiAoKGZ3X3N0YXRlICYgQVRIM0tfTU9ERV9NQVNLKSA9 PSBBVEgzS19QUkVCT09UX01PREUpIHsNCisJCUJUX0VSUigiYXRoM2tfcHJvYmU6IGZpcm13YXJl IGFyZSBpbiBwcmVib290IG1vZGUgbm93Iik7DQorCQlCVF9FUlIoImF0aDNrX3Byb2JlOiB0cnkg dG8gc3dpdGNoIHRvIE5vcm1hbCBNb2RlIik7DQorCQlyZXQgPSBhdGgza19zZXRfbm9ybWFsX21v ZGUodWRldik7DQorCQlpZiAocmV0IDwgMCkgew0KKwkJCUJUX0VSUigiYXRoM2tfcHJvYmU6IHNl dCBub3JtYWwgbW9kZSBmYWlsZWQiKTsNCisJCQlyZXR1cm4gcmV0Ow0KKwkJfQ0KKwl9DQorDQor CS8qIE5vdGUgd2Ugc2hvdWxkIHdhaXQgZm9yIGEgd2hpbGUgKi8NCisJbWRlbGF5KDEwMCk7DQor CXJldCA9IGF0aDNrX2xvYWRfcGF0Y2godWRldik7DQorCWlmIChyZXQgPCAwKSB7DQorCQlCVF9F UlIoImF0aDNrX3Byb2JlOiBMb2FkIHBhdGNoIGZpbGUgZmFpbGVkIik7DQorCQlyZXR1cm4gcmV0 Ow0KKwl9DQorCXJldCA9IGF0aDNrX2xvYWRfc3lzY2ZnKHVkZXYpOw0KKwlpZiAocmV0IDwgMCkg ew0KKwkJQlRfRVJSKCJhdGgza19wcm9iZTogTG9hZCBzeXNjb25maWcgZmlsZSBmYWlsZWQiKTsN CisJCXJldHVybiByZXQ7DQorCX0NCisJcmV0ID0gYXRoM2tfc3dpdGNoX3BpZCh1ZGV2KTsNCisJ aWYgKHJldCA8IDApIHsNCisJCUJUX0VSUigiYXRoM2tfcHJvYmU6IHN3aXRjaCBwaWQgZmFpbGVk Iik7DQorCQlyZXR1cm4gcmV0Ow0KKwl9DQorCXJldHVybiAwOw0KK30NCisNCiBzdGF0aWMgaW50 IGF0aDNrX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLA0KIAkJCWNvbnN0IHN0cnVj dCB1c2JfZGV2aWNlX2lkICppZCkNCiB7DQpAQCAtMzY0LDkgKzQxNSw2IEBAIHN0YXRpYyBpbnQg YXRoM2tfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsDQogDQogCUJUX0RCRygiaW50 ZiAlcCBpZCAlcCIsIGludGYsIGlkKTsNCiANCi0JaWYgKGludGYtPmN1cl9hbHRzZXR0aW5nLT5k ZXNjLmJJbnRlcmZhY2VOdW1iZXIgIT0gMCkNCi0JCXJldHVybiAtRU5PREVWOw0KLQ0KIAkvKiBt YXRjaCBkZXZpY2UgSUQgaW4gYXRoM2sgYmxhY2tsaXN0IHRhYmxlICovDQogCWlmICghaWQtPmRy aXZlcl9pbmZvKSB7DQogCQljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqbWF0Y2g7DQpAQCAt Mzc2LDcgKzQyNCw3IEBAIHN0YXRpYyBpbnQgYXRoM2tfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZh Y2UgKmludGYsDQogCX0NCiANCiAJLyogbG9hZCBwYXRjaCBhbmQgc3lzY29uZmlnIGZpbGVzIGZv ciBBUjMwMTIgKi8NCi0JaWYgKGlkLT5kcml2ZXJfaW5mbyAmIEJUVVNCX0FUSDMwMTIpIHsNCisJ aWYgKGlkLT5kcml2ZXJfaW5mbyAmIEFUSDNLXzMwMTIpIHsNCiANCiAJCS8qIE5ldyBmaXJtd2Fy ZSB3aXRoIHBhdGNoIGFuZCBzeXNjb25maWcgZmlsZXMgYWxyZWFkeSBsb2FkZWQgKi8NCiAJCWlm IChsZTE2X3RvX2NwdSh1ZGV2LT5kZXNjcmlwdG9yLmJjZERldmljZSkgPiAweDAwMDEpDQpAQCAt NDAxLDYgKzQ0OSwxNSBAQCBzdGF0aWMgaW50IGF0aDNrX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJm YWNlICppbnRmLA0KIAkJcmV0dXJuIDA7DQogCX0NCiANCisJaWYgKGlkLT5kcml2ZXJfaW5mbyAm IEFUSDNLXzMwMDYpIHsNCisJCXJldCA9IGF0aDNrX2Rvd25sb2FkXzMwMDYodWRldik7DQorCQlp ZiAocmV0IDwgMCkgew0KKwkJCUJUX0VSUigiYXRoM2tfcHJvYmU6IGRvd25sb2FkXzMwMDYgZmFp bGVkIik7DQorCQkJcmV0dXJuIHJldDsNCisJCX0NCisJCXJldHVybiAwOw0KKwl9DQorDQogCXJl dCA9IHJlcXVlc3RfZmlybXdhcmUoJmZpcm13YXJlLCBBVEgzS19GSVJNV0FSRSwgJnVkZXYtPmRl dik7DQogCWlmIChyZXQgPCAwKSB7DQogCQlpZiAocmV0ID09IC1FTk9FTlQpDQotLSANCjEuNy40 LjENCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBsaW51eC1ibHVldG9v dGgtb3duZXJAdmdlci5rZXJuZWwub3JnDQo+IFttYWlsdG86bGludXgtYmx1ZXRvb3RoLW93bmVy QHZnZXIua2VybmVsLm9yZ10gT24gQmVoYWxmIE9mIE1hcmNlbCBIb2x0bWFubg0KPiBTZW50OiAy MDEx5bm0MTHmnIgxOOaXpSAyMDowNw0KPiBUbzogWWFvLCBDb3N0YQ0KPiBDYzogcGFkb3ZhbkBw cm9mdXNpb24ubW9iaTsgbGludXgtYmx1ZXRvb3RoQHZnZXIua2VybmVsLm9yZw0KPiBTdWJqZWN0 OiBSZTogW1BBVENIXSBCbHVldG9vdGg6IGF0aDNrOiBBZGQgc3VwcG9ydHMgZm9yIFF1YWxjb21t IEF0aGVyb3NlDQo+IDMwMTIgY29tcG9zaXRlIGNoaXANCj4gDQo+IEhpIENvc3RhLA0KPiANCj4g PiAxIFVzZSBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTyB0byBkbyBkZXZpY2UgbWF0Y2hp bmcgd2l0aA0KPiBQSUQvVklEIDB4MzAwNi8weDBjZjMuDQo+ID4gMiBEZWxldGUgZGVzYy5iSW50 ZXJmYWNlTnVtYmVyICE9IDAgY2hlY2suDQo+ID4gMyBBZGQgZnVuY3Rpb24gYXRoM2tfZG93bmxv YWRfMzAwNiB0byBkb3dubG9hZCBmaXJtd2FyZSB0byBoYXJkd2FyZQ0KPiA+IGZvciAweDMwMDYN Cj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IENvc3RhIFlhbyA8Y3F5YW9AcWNhLnF1YWxjb21tLmNv bT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9ibHVldG9vdGgvYXRoM2suYyB8ICAgNjUNCj4gKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tDQo+ID4gIDEgZmlsZXMg Y2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2JsdWV0b290aC9hdGgzay5jIGIvZHJpdmVycy9ibHVldG9vdGgvYXRo M2suYw0KPiA+IGluZGV4IDE2MjI3NzIuLmIzOGNkMTYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVy cy9ibHVldG9vdGgvYXRoM2suYw0KPiA+ICsrKyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2F0aDNrLmMN Cj4gPiBAQCAtNDAsNiArNDAsNyBAQA0KPiA+DQo+ID4gICNkZWZpbmUgQVRIM0tfTU9ERV9NQVNL CQkJCTB4M0YNCj4gPiAgI2RlZmluZSBBVEgzS19OT1JNQUxfTU9ERQkJCTB4MEUNCj4gPiArI2Rl ZmluZSBBVEgzS19QUkVCT09UX01PREUJCQkweDBEDQo+ID4NCj4gPiAgI2RlZmluZSBBVEgzS19Q QVRDSF9VUERBVEUJCQkweDgwDQo+ID4gICNkZWZpbmUgQVRIM0tfU1lTQ0ZHX1VQREFURQkJCTB4 NDANCj4gPiBAQCAtNDksNiArNTAsOSBAQA0KPiA+ICAjZGVmaW5lIEFUSDNLX1hUQUxfRlJFUV8x OVAyCQkJMHgwMg0KPiA+ICAjZGVmaW5lIEFUSDNLX05BTUVfTEVOCQkJCTB4RkYNCj4gPg0KPiA+ ICsjZGVmaW5lIEJUVVNCX0FUSDMwMTIJCTB4ODANCj4gPiArI2RlZmluZSBCVFVTQl9BVEgzMDA2 CQkweDAxMDANCj4gPiArDQo+IA0KPiB0aGlzIGlzIGF0aDNrLmMgc3BlY2lmaWMuIFNvIGRvIG5v dCB1c2UgQlRVU0JfIHByZWZ1eC4NCj4gDQo+ID4gIHN0cnVjdCBhdGgza192ZXJzaW9uIHsNCj4g PiAgCXVuc2lnbmVkIGludAlyb21fdmVyc2lvbjsNCj4gPiAgCXVuc2lnbmVkIGludAlidWlsZF92 ZXJzaW9uOw0KPiA+IEBAIC03MSw2ICs3NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9p ZCBhdGgza190YWJsZVtdID0gew0KPiA+DQo+ID4gIAkvKiBBdGhlcm9zIEFSMzAxMiB3aXRoIHNm bGFzaCBmaXJtd2FyZSovDQo+ID4gIAl7IFVTQl9ERVZJQ0UoMHgwQ0YzLCAweDMwMDQpIH0sDQo+ ID4gKwl7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MENGMywgMHgzMDA2LCAweGUw LCAweDAxLA0KPiAweDAxKSB9LA0KPiA+DQo+ID4gIAkvKiBBdGhlcm9zIEFSNUJCVTEyIHdpdGgg c2ZsYXNoIGZpcm13YXJlICovDQo+ID4gIAl7IFVTQl9ERVZJQ0UoMHgwNDg5LCAweEUwMkMpIH0s DQo+ID4gQEAgLTgwLDEzICs4NSwxMyBAQCBzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgYXRo M2tfdGFibGVbXSA9IHsNCj4gPg0KPiA+ICBNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgYXRoM2tf dGFibGUpOw0KPiA+DQo+ID4gLSNkZWZpbmUgQlRVU0JfQVRIMzAxMgkJMHg4MA0KPiA+ICAvKiBU aGlzIHRhYmxlIGlzIHRvIGxvYWQgcGF0Y2ggYW5kIHN5c2NvbmZpZyBmaWxlcw0KPiA+ICAgKiBm b3IgQVIzMDEyICovDQo+ID4gIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGgza19ibGlz dF90YmxbXSA9IHsNCj4gPg0KPiA+ICAJLyogQXRoZXJvcyBBUjMwMTIgd2l0aCBzZmxhc2ggZmly bXdhcmUqLw0KPiA+ICAJeyBVU0JfREVWSUNFKDB4MGNmMywgMHgzMDA0KSwgLmRyaXZlcl9pbmZv ID0gQlRVU0JfQVRIMzAxMiB9LA0KPiA+ICsJeyBVU0JfREVWSUNFKDB4MENGMywgMHgzMDA2KSwg LmRyaXZlcl9pbmZvID0gQlRVU0JfQVRIMzAwNiB9LA0KPiA+DQo+ID4gIAl7IH0JLyogVGVybWlu YXRpbmcgZW50cnkgKi8NCj4gPiAgfTsNCj4gPiBAQCAtMzU1LDYgKzM2MCw1MiBAQCBzdGF0aWMg aW50IGF0aDNrX2xvYWRfc3lzY2ZnKHN0cnVjdCB1c2JfZGV2aWNlDQo+ICp1ZGV2KQ0KPiA+ICAJ cmV0dXJuIHJldDsNCj4gPiAgfQ0KPiA+DQo+ID4gK3N0YXRpYyBpbnQgYXRoM2tfZG93bmxvYWRf MzAwNihzdHJ1Y3QgdXNiX2RldmljZSAqdWRldikgew0KPiA+ICsJaW50IHJldDsNCj4gPiArCXVu c2lnbmVkIGNoYXIgZndfc3RhdGU7DQo+ID4gKw0KPiA+ICsJaWYgKGxlMTZfdG9fY3B1KHVkZXYt PmRlc2NyaXB0b3IuYmNkRGV2aWNlKSA+IDB4MDAwMSkgew0KPiA+ICsJCUJUX0VSUigiYXRoM2tf cHJvYmU6IHVkZXYtPmRlc2NyaXB0b3IuYmNkRGV2aWNlIik7DQo+ID4gKwkJcmV0dXJuIC1FTk9E RVY7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0ID0gYXRoM2tfZ2V0X3N0YXRlKHVkZXYsICZm d19zdGF0ZSk7DQo+ID4gKwlpZiAocmV0IDwgMCkgew0KPiA+ICsJCUJUX0VSUigiYXRoM2tfcHJv YmU6IGF0aDNrX2dldF9zdGF0ZSBlcnIiKTsNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsJfQ0K PiA+ICsNCj4gPiArCWlmICgoZndfc3RhdGUgJiBBVEgzS19NT0RFX01BU0spID09IEFUSDNLX1BS RUJPT1RfTU9ERSkgew0KPiA+ICsJCUJUX0VSUigiYXRoM2tfcHJvYmU6IGZpcm13YXJlIGFyZSBp biBwcmVib290IG1vZGUgbm93Iik7DQo+ID4gKwkJQlRfRVJSKCJhdGgza19wcm9iZTogdHJ5IHRv IHN3aXRjaCB0byBOb3JtYWwgTW9kZSIpOw0KPiA+ICsJCXJldCA9IGF0aDNrX3NldF9ub3JtYWxf bW9kZSh1ZGV2KTsNCj4gPiArCQlpZiAocmV0IDwgMCkgew0KPiA+ICsJCQlCVF9FUlIoImF0aDNr X3Byb2JlOiBzZXQgbm9ybWFsIG1vZGUgZmFpbGVkIik7DQo+ID4gKwkJCXJldHVybiByZXQ7DQo+ ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIE5vdGUgd2Ugc2hvdWxkIHdhaXQgZm9y IGEgd2hpbGUgKi8NCj4gPiArCW1kZWxheSgxMDApOw0KPiA+ICsJcmV0ID0gYXRoM2tfbG9hZF9w YXRjaCh1ZGV2KTsNCj4gPiArCWlmIChyZXQgPCAwKSB7DQo+ID4gKwkJQlRfRVJSKCJhdGgza19w cm9iZTogTG9hZCBwYXRjaCBmaWxlIGZhaWxlZCIpOw0KPiA+ICsJCXJldHVybiByZXQ7DQo+ID4g Kwl9DQo+ID4gKwlyZXQgPSBhdGgza19sb2FkX3N5c2NmZyh1ZGV2KTsNCj4gPiArCWlmIChyZXQg PCAwKSB7DQo+ID4gKwkJQlRfRVJSKCJhdGgza19wcm9iZTogTG9hZCBzeXNjb25maWcgZmlsZSBm YWlsZWQiKTsNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsJfQ0KPiA+ICsJcmV0ID0gYXRoM2tf c3dpdGNoX3BpZCh1ZGV2KTsNCj4gPiArCWlmIChyZXQgPCAwKSB7DQo+ID4gKwkJQlRfRVJSKCJh dGgza19wcm9iZTogc3dpdGNoIHBpZCBmYWlsZWQiKTsNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ ICsJfQ0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyBpbnQgYXRo M2tfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsDQo+ID4gIAkJCWNvbnN0IHN0cnVj dCB1c2JfZGV2aWNlX2lkICppZCkNCj4gPiAgew0KPiA+IEBAIC0zNjQsOSArNDE1LDYgQEAgc3Rh dGljIGludCBhdGgza19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwNCj4gPg0KPiA+ ICAJQlRfREJHKCJpbnRmICVwIGlkICVwIiwgaW50ZiwgaWQpOw0KPiA+DQo+ID4gLQlpZiAoaW50 Zi0+Y3VyX2FsdHNldHRpbmctPmRlc2MuYkludGVyZmFjZU51bWJlciAhPSAwKQ0KPiA+IC0JCXJl dHVybiAtRU5PREVWOw0KPiA+IC0NCj4gPiAgCS8qIG1hdGNoIGRldmljZSBJRCBpbiBhdGgzayBi bGFja2xpc3QgdGFibGUgKi8NCj4gPiAgCWlmICghaWQtPmRyaXZlcl9pbmZvKSB7DQo+ID4gIAkJ Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKm1hdGNoOw0KPiA+IEBAIC00MDEsNiArNDQ5LDE1 IEBAIHN0YXRpYyBpbnQgYXRoM2tfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsDQo+ ID4gIAkJcmV0dXJuIDA7DQo+ID4gIAl9DQo+ID4NCj4gPiArCWlmIChpZC0+ZHJpdmVyX2luZm8g JiBCVFVTQl9BVEgzMDA2KSB7DQo+ID4gKwkJcmV0ID0gYXRoM2tfZG93bmxvYWRfMzAwNih1ZGV2 KTsNCj4gPiArCQlpZiAocmV0IDwgMCkgew0KPiA+ICsJCQlCVF9FUlIoImF0aDNrX3Byb2JlOiBk b3dubG9hZF8zMDA2IGZhaWxlZCIpOw0KPiA+ICsJCQlyZXR1cm4gcmV0Ow0KPiA+ICsJCX0NCj4g PiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4gPiArDQo+ID4gIAlyZXQgPSByZXF1ZXN0X2Zpcm13 YXJlKCZmaXJtd2FyZSwgQVRIM0tfRklSTVdBUkUsICZ1ZGV2LT5kZXYpOw0KPiA+ICAJaWYgKHJl dCA8IDApIHsNCj4gPiAgCQlpZiAocmV0ID09IC1FTk9FTlQpDQo+IA0KPiBUaGUgcmVzdCBpcyBm aW5lIHdpdGggbWUuDQo+IA0KPiBSZWdhcmRzDQo+IA0KPiBNYXJjZWwNCj4gDQo+IA0KPiAtLQ0K PiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3Jp YmUgbGludXgtYmx1ZXRvb3RoIiBpbiB0aGUNCj4gYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jk b21vQHZnZXIua2VybmVsLm9yZyBNb3JlIG1ham9yZG9tbyBpbmZvIGF0DQo+IGh0dHA6Ly92Z2Vy Lmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbA0K