Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp251238pxa; Wed, 12 Aug 2020 00:33:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzqSQNf6ZNMHYmmtDhNg2hLmRwVY1JRQIR8kwwx0obZXWrsgYXOBbqaRrDH66bhvcw8WXF1 X-Received: by 2002:a17:906:8d8:: with SMTP id o24mr29487997eje.384.1597217603103; Wed, 12 Aug 2020 00:33:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597217603; cv=none; d=google.com; s=arc-20160816; b=n0QlN7O5rCM0aMpDRIhUqP5dfhHEXZRNlrKLZObiq4UsQ44IA70W4MoGCJAla8O5dS svWaVeqMva6B+3i63w5QCwWCglv3WwNw4CkbSqCaqYC6pVRRZEogvD5WHj0f37tJ13m2 DEKzIbqBPLUXaBbh9GpS3v3OC6D7dt0EjnNbT88v/QKSFayKLpXSSjq50+duYVhbaw1q 0M7/5PGSQx3gT9zU9pfQS/euVfNWl273XBsOwvi4kzspYjs0O9kMRs3HjNHFPm7U1oac CKwZJS/Z1vhG5T7oW2Za3wfZIpgq6xwafUAlhz2+gLd8FoSQIs4vjBBfJgt1JPmtBkBz 8b5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :dkim-signature; bh=2f2b1fQK5k9viNAfZ6b5HGQYyZyp/SEvBXD6QVEm6VM=; b=hVTKxqgJu1h4Xoke7aTlsIVNIYabhlMeytUkP4i1EkDNabB3GIoCzrtxz/gf5ArIMk IFs+t9slEVL+l1+X9KogqCtL3lqoPQ6XESG4qZVZLmnjsD2k54wCr9kTQIxG1vAWtjQ0 nw3E7yT9egysc+6yjJ/5KVhEOMNmkJhs7GKFmMLH3ACImGKNJLjQIpPAD+sjjTkd/AgO lBToQMktBBuET6XwU4kwVB5PlKzgO5AiHnwsdi44Xhzme9MD8aYwlsZwEPwvqYyi3/t/ ABgZ3bAxzJhe3/UdcuVozqSlR0PKzO2NhIiZ3XFWkX62kdp9472Cx3xYpgYqrY9zMZV7 mkPg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=JZcT24Hh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bt2si600518ejb.597.2020.08.12.00.32.59; Wed, 12 Aug 2020 00:33:23 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=JZcT24Hh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726734AbgHLHaY (ORCPT + 99 others); Wed, 12 Aug 2020 03:30:24 -0400 Received: from Mailgw01.mediatek.com ([1.203.163.78]:10725 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726182AbgHLHaX (ORCPT ); Wed, 12 Aug 2020 03:30:23 -0400 X-UUID: be8b77c0b9314ee790102ea5f77c3127-20200812 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=2f2b1fQK5k9viNAfZ6b5HGQYyZyp/SEvBXD6QVEm6VM=; b=JZcT24Hh5miQrUaDH1vUIsfgoB4qGVSOhlghs9vfnUKUa0Ja36aldiZISaE50Q3F7NmBKvxAdVCX4a9Tmbm763nPDk1kDb4MAD53EnoPD7/Ki8nXN1FOQbVwklzk3fNo0uhLRqbLwOext6HScR6b8fRq//5iB1e+fFu3zuQJmOI=; X-UUID: be8b77c0b9314ee790102ea5f77c3127-20200812 Received: from mtkcas32.mediatek.inc [(172.27.4.253)] by mailgw01.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLS) with ESMTP id 672401171; Wed, 12 Aug 2020 15:30:08 +0800 Received: from MTKCAS32.mediatek.inc (172.27.4.184) by MTKMBS31N2.mediatek.inc (172.27.4.87) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 12 Aug 2020 15:30:06 +0800 Received: from [10.17.3.153] (10.17.3.153) by MTKCAS32.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 12 Aug 2020 15:30:05 +0800 Message-ID: <1597217353.23246.45.camel@mhfsdcap03> Subject: Re: [PATCH v2 1/2] ASoC: mediatek: mt6359: add codec driver From: Jiaxin Yu To: Mark Brown CC: , , , , , , , , , , Date: Wed, 12 Aug 2020 15:29:13 +0800 In-Reply-To: <20200810185933.GI6438@sirena.org.uk> References: <1597028754-7732-1-git-send-email-jiaxin.yu@mediatek.com> <1597028754-7732-2-git-send-email-jiaxin.yu@mediatek.com> <20200810185933.GI6438@sirena.org.uk> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: 88F3FBB46F83E01A2B8413515E7631FBCEBB150A4347EE5EB913520D28AC67AE2000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gTW9uLCAyMDIwLTA4LTEwIGF0IDE5OjU5ICswMTAwLCBNYXJrIEJyb3duIHdyb3RlOg0KPiBP biBNb24sIEF1ZyAxMCwgMjAyMCBhdCAxMTowNTo1M0FNICswODAwLCBKaWF4aW4gWXUgd3JvdGU6 DQo+IA0KPiA+ICt2b2lkIG10NjM1OV9zZXRfcGxheWJhY2tfZ3BpbyhzdHJ1Y3Qgc25kX3NvY19j b21wb25lbnQgKmNtcG50KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnByaXYg PSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQo+IA0KPiA+ICt2b2lkIG10 NjM1OV9yZXNldF9wbGF5YmFja19ncGlvKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQp DQo+ID4gK3sNCj4gPiArCXN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdiA9IHNuZF9zb2NfY29tcG9u ZW50X2dldF9kcnZkYXRhKGNtcG50KTsNCj4gDQo+ID4gK3ZvaWQgbXQ2MzU5X3NldF9jYXB0dXJl X2dwaW8oc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudCkNCj4gPiArew0KPiANCj4gPiAr dm9pZCBtdDYzNTlfcmVzZXRfY2FwdHVyZV9ncGlvKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAq Y21wbnQpDQo+ID4gK3sNCj4gDQo+IFdoYXQgYXJlIHRoZXNlLCBzaG91bGQgdGhleSBub3QgYmUg bWFuYWdlZCB0aHJvdWdoIGdwaW9saWIgYW5kL29yDQo+IHBpbmN0cmw/DQoNClRoZXNlIGFyZSB0 aGUgZnVuY3Rpb25zIHRoYXQgY29udHJvbCB0aGUgbXV4IG9mIGlucHV0IG9yIG91dHB1dA0Kc2ln bmFsLiBJIHJlZmVyIHRvIHRoZSBvdGhlciBjb2RlYyBkcml2ZXJzLCBtb3N0IG9mIHRoZW0gYXJl IG1hbmlwdWxhdGUNCnRoZSByZWdzIGluIHRoZWlyIGNvZGVjIGRyaXZlcnMgYWxzby4gTWF5YmUg aXQncyBlYXNpZXIgdG8gY29udHJvbD8NCg0KPiA+ICsvKiB1c2Ugb25seSB3aGVuIGRvaW5nIG10 a2FpZiBjYWxpYnJhaXRvbiBhdCB0aGUgYm9vdCB0aW1lICovDQo+ID4gK3N0YXRpYyBpbnQgbXQ2 MzU5X3NldF9kY3hvKHN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdiwgYm9vbCBlbmFibGUpDQo+ID4g K3sNCj4gPiArCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9EQ1hPX0NX MTIsDQo+ID4gKwkJCSAgIDB4MSA8PCBSR19YT19BVURJT19FTl9NX1NGVCwNCj4gPiArCQkJICAg KGVuYWJsZSA/IDEgOiAwKSA8PCBSR19YT19BVURJT19FTl9NX1NGVCk7DQo+ID4gKwlyZXR1cm4g MDsNCj4gDQo+IEVpdGhlciBkb24ndCBoYXZlIGEgcmV0dXJuIHZhbHVlIG9yIHVzZSB0aGUgcmVz dWx0IG9mDQo+IHJlZ21hcF91cGRhdGVfYml0cygpLiAgVGhlcmUncyBzaW1pbGFyIGlzc3VlcyB3 aXRoIHNvbWUgb3RoZXIgZnVuY3Rpb25zDQo+IGluIGhlcmUuDQo+IA0KDQpZZXMsIEkgd2lsbCBy ZWZpbmUgdGhlbS4NCg0KPiA+ICtpbnQgbXQ2MzU5X210a2FpZl9jYWxpYnJhdGlvbl9lbmFibGUo c3RydWN0IHNuZF9zb2NfcGNtX3J1bnRpbWUgKnJ0ZCkNCj4gPiArew0KPiANCj4gPiArRVhQT1JU X1NZTUJPTF9HUEwobXQ2MzU5X210a2FpZl9jYWxpYnJhdGlvbl9lbmFibGUpOw0KPiANCj4gV2h5 IGlzIHRoaXMgZXhwb3J0ZWQ/DQo+IA0KDQpUaGlzIGZ1bmN0aW9uIGlzIGV4cG9ydGVkIHRvIG1h Y2hpbmUgZHJpdmVyIHRvIGRvIGNhbGlicmF0aW9uIHdoZW4NCnJlZ2lzdGVyaW5nLiBUaGUgaW50 ZXJmYWNlIGJldHdlZW4gTVQ2MzU5IGFuZCBNVEsgU29DIGlzIGEgc3BlY2lhbA0KaW50ZXJmYWNl IHRoYXQgbmFtZWQgTVRLQUlGLiBUaGVyZWZvcmUsIGlmIE1UNjM1OSBpcyB0byBiZSB1c2VkDQpu b3JtYWxseSwgaXQgbmVlZHMgdG8gcmVseSBvbiB0aGUgcGxhdGZvcm0gZm9yIGNhbGlicmF0aW9u IHdoZW4NCnJlZ2lzdGVyaW5nLg0KDQo+ID4gK3N0YXRpYyB2b2lkIGhwX2F1eF9mZWVkYmFja19s b29wX2dhaW5fcmFtcChzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnByaXYsIGJvb2wgdXApDQo+ID4gK3sN Cj4gPiArCWludCBpID0gMCwgc3RhZ2UgPSAwOw0KPiA+ICsNCj4gPiArCS8qIFJlZHVjZSBIUCBh dXggZmVlZGJhY2sgbG9vcCBnYWluIHN0ZXAgYnkgc3RlcCAqLw0KPiA+ICsJZm9yIChpID0gMDsg aSA8PSAweGY7IGkrKykgew0KPiA+ICsJCXN0YWdlID0gdXAgPyBpIDogMHhmIC0gaTsNCj4gDQo+ IFBsZWFzZSB3cml0ZSBub3JtYWwgY29uZGl0aW9uYWwgc3RhdGVtZW50cywgaXQgaGVscHMgbGVn aWJpbGl0eS4NCj4gDQoNCi8qIEluY3JlYXNlL1JlZHVjZSBIUCBhdXggZmVlZGJhY2sgbG9vcCBn YWluIHN0ZXAgYnkgc3RlcCAqLw0KVGhpcyBpcyB0byBwcmV2ZW50IHN1ZGRlbiBjaGFuZ2VzIGlu IHZvbHVtZS4NCg0KPiA+ICtzdGF0aWMgaW50IG10NjM1OV9wdXRfdm9sc3coc3RydWN0IHNuZF9r Y29udHJvbCAqa2NvbnRyb2wsDQo+ID4gKwkJCSAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVl ICp1Y29udHJvbCkNCj4gPiArew0KPiA+ICsJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21w b25lbnQgPQ0KPiA+ICsJCQlzbmRfc29jX2tjb250cm9sX2NvbXBvbmVudChrY29udHJvbCk7DQo+ ID4gKwlzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2 ZGF0YShjb21wb25lbnQpOw0KPiA+ICsJc3RydWN0IHNvY19taXhlcl9jb250cm9sICptYyA9DQo+ ID4gKwkJCShzdHJ1Y3Qgc29jX21peGVyX2NvbnRyb2wgKilrY29udHJvbC0+cHJpdmF0ZV92YWx1 ZTsNCj4gPiArCXVuc2lnbmVkIGludCByZWc7DQo+ID4gKwlpbnQgaW5kZXggPSB1Y29udHJvbC0+ dmFsdWUuaW50ZWdlci52YWx1ZVswXTsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJcmV0 ID0gc25kX3NvY19wdXRfdm9sc3coa2NvbnRyb2wsIHVjb250cm9sKTsNCj4gPiArCWlmIChyZXQg PCAwKQ0KPiA+ICsJCXJldHVybiByZXQ7DQo+IA0KPiBTbyB3ZSBtYWtlIHRoZSB2b2x1bWUgY2hh bmdlIGFjdHVhbGx5IHRha2UgZWZmZWN0Li4uDQo+IA0KPiA+ICsJc3dpdGNoIChtYy0+cmVnKSB7 DQo+ID4gKwljYXNlIE1UNjM1OV9aQ0RfQ09OMjoNCj4gPiArCQlyZWdtYXBfcmVhZChwcml2LT5y ZWdtYXAsIE1UNjM1OV9aQ0RfQ09OMiwgJnJlZyk7DQo+ID4gKwkJcHJpdi0+YW5hX2dhaW5bQVVE SU9fQU5BTE9HX1ZPTFVNRV9IUE9VVExdID0NCj4gPiArCQkJKHJlZyA+PiBSR19BVURIUExHQUlO X1NGVCkgJiBSR19BVURIUExHQUlOX01BU0s7DQo+ID4gKwkJcHJpdi0+YW5hX2dhaW5bQVVESU9f QU5BTE9HX1ZPTFVNRV9IUE9VVFJdID0NCj4gPiArCQkJKHJlZyA+PiBSR19BVURIUFJHQUlOX1NG VCkgJiBSR19BVURIUFJHQUlOX01BU0s7DQo+ID4gKwkJYnJlYWs7DQo+IA0KPiAuLnRoZW4gcmVh ZCB0aGUgdmFsdWUgdGhhdCB3YXMgc2V0IGFuZCBzdG9yZSBpdCBlbHNld2hlcmUuICBXaGF0J3MN Cj4gZ29pbmcgb24gaGVyZT8NCj4gDQoNCkJlY2F1c2Ugd2UgY2FuIGFkanVzdCB0aGUgdm9sdW1l IGF0IHR3byBwb2ludHMsIGJlZm9yZSBhbmQgZHVyaW5nIHRoZQ0KcGxheWJhY2sgb3IgY2FwdHVy ZS4gSW4gYWRkaXRpb24sIHdlIHdpbGwgZG8gdm9sdW1lIHJhbXAgd2hlbiBvcGVuaW5nDQp0aGUg ZHJpdmVyLiBJZiB3ZSBzZXQgdGhlIHZvbHVtZSBiZWZvcmUgb3BlbmluZyB0aGUgZHJpdmVyLCB3 ZSBuZWVkIGdldA0KdGhlIHZhbHVlIHRvIGRvIHZvbHVtZSByYW1wIGR1cmluZyBvcGVuaW5nIHRo ZSBkcml2ZXIuDQoNCj4gPiArLypIUCBNVVggKi8NCj4gPiArc3RhdGljIGNvbnN0IGNoYXIgKiBj b25zdCBocF9pbl9tdXhfbWFwW10gPSB7DQo+ID4gKwkiT3BlbiIsDQo+ID4gKwkiTG91ZFNQSyBQ bGF5YmFjayIsDQo+ID4gKwkiQXVkaW8gUGxheWJhY2siLA0KPiA+ICsJIlRlc3QgTW9kZSIsDQo+ ID4gKwkiSFAgSW1wZWRhbmNlIiwNCj4gPiArCSJ1bmRlZmluZWQxIiwNCj4gPiArCSJ1bmRlZmlu ZWQyIiwNCj4gPiArCSJ1bmRlZmluZWQzIiwNCj4gPiArfTsNCj4gDQo+IFdoeSBleHBvc2UgdW5k ZWZpbmVkIChhbmQgcHJlc3VtYWJseSBvdXQgb2Ygc3BlYykgdmFsdWVzIHRvIHVzZXJzcGFjZT8N Cj4gDQoNClJlbW92ZWQgdGhlbS4NCg0KPiA+ICtzdGF0aWMgaW50IG10X2Nsa3NxX2V2ZW50KHN0 cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3LA0KPiA+ICsJCQkgIHN0cnVjdCBzbmRfa2NvbnRy b2wgKmtjb250cm9sLA0KPiA+ICsJCQkgIGludCBldmVudCkNCj4gPiArew0KPiA+ICsJc3RydWN0 IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudCA9IHNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ ZGFwbSk7DQo+ID4gKwlzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVu dF9nZXRfZHJ2ZGF0YShjbXBudCk7DQo+ID4gKw0KPiA+ICsJZGV2X2RiZyhwcml2LT5kZXYsICIl cygpLCBldmVudCA9IDB4JXhcbiIsIF9fZnVuY19fLCBldmVudCk7DQo+ID4gKw0KPiA+ICsJc3dp dGNoIChldmVudCkgew0KPiA+ICsJY2FzZSBTTkRfU09DX0RBUE1fUFJFX1BNVToNCj4gPiArCQkv KiBhdWRpbyBjbGsgc291cmNlIGZyb20gaW50ZXJuYWwgZGN4byAqLw0KPiA+ICsJCXJlZ21hcF91 cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURFTkNfQU5BX0NPTjIzLA0KPiA+ICsJ CQkJICAgUkdfQ0xLU1FfSU5fU0VMX1RFU1RfTUFTS19TRlQsDQo+ID4gKwkJCQkgICAweDApOw0K PiANCj4gVGhpcyBhbHNvIGFwcGVhcmVkIHRvIGJlIGNvbnRyb2xsZWQgaW4gX3NldF9jbGtzZXEo KSAtIGFyZSB3ZSBzdXJlIHRoYXQNCj4gdGhpbmdzIGNvdWxkbid0IGdldCBjb25mdXNlZCBhYm91 dCB0aGUgc3RhdGU/DQo+IA0KDQpfc2V0X2Nsa3NlcSgpIHdpbGwgb25seSBiZSBydW4gYXQgdGhl IHRpbWUgb2YgbXRrYWlmIGNhbGlicmFpdG9uLCBhbmQNCnRoZSBjYWxpYnJhdGlvbiBvbmx5IHJ1 biBvbmNlIHdoZW4gdGhlIGNvZGVjIGRyaXZlciBwcm9iZS4gU28gaXQgd29uJ3QNCmdldCBjb25m dXNlZCBhYm91dCB0aGUgc3RhdGUuIEJ1dCBpdCByZWFsbHkgb25seSBuZWVkcyB0byBiZSBzZXQg dXAgb25jZQ0KYXQgbXQ2MzU5X2NvZGVjX2luaXRfcmVnKCkuIEkgd2lsbCByZW1vdmUgdGhlIHVu bmVjZXNhcnkgc2V0dGluZ3MuDQoNCj4gPiArCS8qIEhQIGRhbXAgY2lyY3VpdCBlbmFibGUgKi8N Cj4gPiArCS8qRW5hYmxlIEhQUk4vSFBMTiBvdXRwdXQgNEsgdG8gVkNNICovDQo+IA0KPiBTcGFj ZXMgYXJvdW5kIHRoZSAvKiAqLw0KPiANCg0KU29ycnksIGZpeGVkIGl0Lg0KDQo+ID4gK3N0YXRp YyBpbnQgbXRfaHBfZXZlbnQoc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsDQo+ID4gKwkJ ICAgICAgIHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KPiA+ICsJCSAgICAgICBpbnQg ZXZlbnQpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQgPSBz bmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KPiA+ICsJc3RydWN0IG10NjM1OV9w cml2ICpwcml2ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KPiA+ICsJ dW5zaWduZWQgaW50IG11eCA9IGRhcG1fa2NvbnRyb2xfZ2V0X3ZhbHVlKHctPmtjb250cm9sc1sw XSk7DQo+ID4gKwlpbnQgZGV2aWNlID0gREVWSUNFX0hQOw0KPiA+ICsNCj4gPiArCWRldl9kYmco cHJpdi0+ZGV2LCAiJXMoKSwgZXZlbnQgMHgleCwgZGV2X2NvdW50ZXJbREVWX0hQXSAlZCwgbXV4 ICV1XG4iLA0KPiA+ICsJCV9fZnVuY19fLCBldmVudCwgcHJpdi0+ZGV2X2NvdW50ZXJbZGV2aWNl XSwgbXV4KTsNCj4gPiArDQo+ID4gKwlzd2l0Y2ggKGV2ZW50KSB7DQo+ID4gKwljYXNlIFNORF9T T0NfREFQTV9QUkVfUE1VOg0KPiA+ICsJCXByaXYtPmRldl9jb3VudGVyW2RldmljZV0rKzsNCj4g PiArCQlpZiAocHJpdi0+ZGV2X2NvdW50ZXJbZGV2aWNlXSA+IDEpDQo+ID4gKwkJCWJyZWFrOwkv KiBhbHJlYWR5IGVuYWJsZWQsIGRvIG5vdGhpbmcgKi8NCj4gPiArCQllbHNlIGlmIChwcml2LT5k ZXZfY291bnRlcltkZXZpY2VdIDw9IDApDQo+IA0KPiBXaHkgYXJlIHdlIGRvaW5nIGFkZGl0aW9u YWwgcmVmY291bnRpbmcgb24gdG9wIG9mIHdoYXQgREFQTSBpcyBkb2luZz8NCj4gVGhpcyBzZWVt cyBsaWtlIHRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCBvbmUgd2lkZ2V0IHJlcHJlc2VudGluZyB0 aGUNCj4gc2hhcmVkIGJpdHMgb2YgdGhlIGF1ZGlvIHBhdGguDQo+IA0KDQpXZSBoYXZlICJIUEwg TXV4IiBhbmQgIkhQUiBNdXgiLCB0aGVyZSB3aWxsIGJlIHR3byBwYXRocyBlbmFibGVkIHdoZW4N CnBsYXliYWNrIHRocm91aCBIUC4gQnV0IGFjdHVhbGx5IHRoZXkgc2hhcmUgdGhlIHNhbWUgY29u dHJvbCBzZXF1ZW5jZXMuDQpTbyBpbiBvcmRlciB0byBwcmV2ZW50IHNldHRpbmcgaXQgb25lIG1v cmUgdGltZSB3ZSBkbyBhZGRpdGlvbmFsDQpyZWZjb3V0aW5nLg0KDQoNCj4gPiArI2RlZmluZSBN VDYzNTlfRk9STUFUUyAoU05EUlZfUENNX0ZNVEJJVF9TMTZfTEUgfCBTTkRSVl9QQ01fRk1UQklU X1MxNl9CRSB8XA0KPiA+ICsJCQlTTkRSVl9QQ01fRk1UQklUX1UxNl9MRSB8IFNORFJWX1BDTV9G TVRCSVRfVTE2X0JFIHxcDQo+ID4gKwkJCVNORFJWX1BDTV9GTVRCSVRfUzI0X0xFIHwgU05EUlZf UENNX0ZNVEJJVF9TMjRfQkUgfFwNCj4gPiArCQkJU05EUlZfUENNX0ZNVEJJVF9VMjRfTEUgfCBT TkRSVl9QQ01fRk1UQklUX1UyNF9CRSB8XA0KPiA+ICsJCQlTTkRSVl9QQ01fRk1UQklUX1MzMl9M RSB8IFNORFJWX1BDTV9GTVRCSVRfUzMyX0JFIHxcDQo+ID4gKwkJCVNORFJWX1BDTV9GTVRCSVRf VTMyX0xFIHwgU05EUlZfUENNX0ZNVEJJVF9VMzJfQkUpDQo+IA0KPiBUaGUgZHJpdmVyIGRvZXNu J3QgYXBwZWFyIHRvIGNvbmZpZ3VyZSBhbnl0aGluZyBleGNlcHQgdGhlIHNhbXBsZSByYXRlIC0N Cj4gaG93IGFyZSBhbGwgdGhlc2UgZm9ybWF0cyBzdXBwb3J0ZWQ/DQo+IA0KDQpUaGUgaW50ZXJm YWNlIGJldHdlZW4gTVQ2MzU5IGFuZCBNVEsgU29DIGlzIGEgc3BlY2lhbCBpbnRlcmZhY2UgdGhh dA0KbmFtZWQgTVRLQUlGLiBCZWNhdXNlIG9mIGl0cyB1bmlxdWUgaGFyZHdhcmUgc2V0dGluZ3Ms IGl0IHJlYWxseSBkb2Vzbid0DQp0byBzZXQgZm9ybWF0IGFyZ3VtZW50LiBUaGUgY2FwYWJpbGl0 eSBvZiBwY20gZHJpdmVyIG1haW5seSBkZXBlbmRzIG9uDQpjcHUtZGFpIGRyaXZlciB0byBsaW1p dC4NCg0KPiA+ICsJLyogaHAgZ2FpbiBjdGwgZGVmYXVsdCBjaG9vc2UgWkNEICovDQo+ID4gKwlw cml2LT5ocF9nYWluX2N0bCA9IEhQX0dBSU5fQ1RMX1pDRDsNCj4gPiArCWhwX2dhaW5fY3RsX3Nl bGVjdChwcml2LCBwcml2LT5ocF9nYWluX2N0bCk7DQo+IA0KPiBXaHkgbm90IHVzZSB0aGUgaGFy ZHdhcmUgZGVmYXVsdD8NCj4gDQoNCldlIGhhdmUgdHdvIHdheXMgdG8gY29udHJvbCB0aGUgdm9s dW1lLCB0aGVyZSBpcyB0byBzZWxlY3QgWkNELiBCZWNhdXNlDQp0aGUgb3RoZXIgb25lIGl0IG5v dCBvZnRlbiB1c2VkLCBaQ0QgaXMgdXNlZCBieSBkZWZhdWx0LiANCg0KPiA+ICsJbXQ2MzU5X2Nv ZGVjX2luaXRfcmVnKGNtcG50KTsNCj4gPiArDQo+ID4gKwlwcml2LT5hbmFfZ2FpbltBVURJT19B TkFMT0dfVk9MVU1FX0hQT1VUTF0gPSA4Ow0KPiA+ICsJcHJpdi0+YW5hX2dhaW5bQVVESU9fQU5B TE9HX1ZPTFVNRV9IUE9VVFJdID0gODsNCj4gPiArCXByaXYtPmFuYV9nYWluW0FVRElPX0FOQUxP R19WT0xVTUVfTUlDQU1QMV0gPSAzOw0KPiA+ICsJcHJpdi0+YW5hX2dhaW5bQVVESU9fQU5BTE9H X1ZPTFVNRV9NSUNBTVAyXSA9IDM7DQo+ID4gKwlwcml2LT5hbmFfZ2FpbltBVURJT19BTkFMT0df Vk9MVU1FX01JQ0FNUDNdID0gMzsNCj4gDQo+IFNhbWUgaGVyZS4NCj4gDQoNClJlbW92ZWQgdGhl bS4NCg0KPiA+ICsJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShwcml2LT5hdmRkX3JlZyk7DQo+ID4g KwlpZiAocmV0KSB7DQo+ID4gKwkJZGV2X2Vycihwcml2LT5kZXYsICIlcygpLCBmYWlsZWQgdG8g ZW5hYmxlIHJlZ3VsYXRvciFcbiIsDQo+ID4gKwkJCV9fZnVuY19fKTsNCj4gPiArCQlyZXR1cm4g cmV0Ow0KPiA+ICsJfQ0KPiANCj4gUGVyaGFwcyBtYWtlIHRoaXMgYSBEQVBNIHdpZGdldD8NCj4g DQoNCiJ2YXVkMTgiIG5lZWRzIHRvIGJlIGFsd2F5cyBvbiBzbyB3ZSBlbmFibGUgaXQgd2hlbiBj b2RlYyBwcm9iZS4NCg0KPiA+ICsJcHJpdi0+YXZkZF9yZWcgPSBkZXZtX3JlZ3VsYXRvcl9nZXQo JnBkZXYtPmRldiwgInZhdWQxOCIpOw0KPiA+ICsJaWYgKElTX0VSUihwcml2LT5hdmRkX3JlZykp IHsNCj4gPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICIlcygpLCBoYXZlIG5vIHZhdWQxOCBzdXBw bHkiLCBfX2Z1bmNfXyk7DQo+ID4gKwkJcmV0dXJuIFBUUl9FUlIocHJpdi0+YXZkZF9yZWcpOw0K PiA+ICsJfQ0KPiANCj4gSXQncyBiZXR0ZXIgdG8gcHJpbnQgZXJyb3IgY29kZXMgdG8gaGVscCBw ZW9wbGUgZGVidWdnaW5nIHByb2JsZW1zLg0KPiANCg0KWWVzLCBJIHdpbGwgcHJpbnQgdGhlIGVy cm9yIGNvZGVzLg0KDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10NjM1 OV9vZl9tYXRjaFtdID0gew0KPiA+ICsJey5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10NjM1OS1z b3VuZCIsfSwNCj4gPiArCXt9DQo+ID4gK307DQo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2Ys IG10NjM1OV9vZl9tYXRjaCk7DQo+IA0KPiBXZSBkb24ndCBuZWVkIGEgY29tcGF0aWJsZSBoZXJl LCB3ZSBrbm93IHRoYXQgdGhpcyBkZXZpY2UgaXMgaGVyZSBzaW5jZQ0KPiBpdCdzIHBhcnQgb2Yg dGhlIHBhcmVudCBkZXZpY2UgYW5kIGlzbid0IHNvbWV0aGluZyB0aGF0IG1pZ2h0IGFwcGVhciBp bg0KPiBhbm90aGVyIGRldmljZS4gIFRoaXMgaXMgcmVmbGVjdGluZyB0aGUgTGludXggZHJpdmVy IG1vZGVsLCBub3QgdGhlDQo+IGhhcmR3YXJlLg0KDQpSZW1vdmVkIHRoZW0uDQo=