Received: by 2002:a25:f815:0:0:0:0:0 with SMTP id u21csp3358180ybd; Tue, 25 Jun 2019 00:56:20 -0700 (PDT) X-Google-Smtp-Source: APXvYqwNT6wDS2NmVE/5Kydxcp4GsxAYb91VsvU4/tJy/4RKpJ2mLit2Zb543ko0NHv2NrNg3fBG X-Received: by 2002:a63:6ec6:: with SMTP id j189mr15145629pgc.168.1561449380024; Tue, 25 Jun 2019 00:56:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561449380; cv=none; d=google.com; s=arc-20160816; b=XZs2BJpMlH/Qk3p6FL/n7xkQwDizujn6lfaznRcDdfR57irXtGBhNDO5zBM3EkS/FK cVSSlFL28qNnxeo4OmTa+QCOozF47KALs7a0/dX7D9wxOeTo2qSpVxLRn5WYVqxNhQof ROt6l6xBbWH61JhkhNITclVw4b+mx/p0Bk5Qi3X3zjDeYQQ/iq9+vcqc64dJ+rh9Fwv/ yPcmNHXi82p/rpqprPGOxBtiFE9z1RHJ+mFvlJLOUvZlDpo4Xc/HmM2WRWVKTfSCrEcE TlKcVU8ZS0NWZaqFnAOt41A1uVZGTdzL6hFHLFCmGLJSmvvZU+CF88qMBetcnSdpiCpw LUdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=KxFY9FFtPp2Oc06t8dNQ4Sc83o+ecTZNPFSLh8StZao=; b=GkZZprv69jDyjAFOU7IuTXXHhqVf27iyinrXRtNbkURXEsrdNtbj0Sg34JxtoboQQA ZfN62ckz+R+6f8lyinlWOv5ulLl3MREfO+EqmAuHCo6m9qT+eyOpj0XNvDk3Lu/NwKDg M9HKrhvaugYz2OrR/mDn1lFQc8GDhnAH3HmkvMv1BbiPtVzdLAd5muAkBkrL2KwZwy2g Zdyw/VClLsNx7+XR43N+KM5+S4fm/d6DVLsPKQtpTj3r7Jqt9HeQLjfj9ckBb9XBmkto OQ9+OjqSEJAqGzyCW49PqE2mpfnRbSSi0ie7T7dndpwzXnWIHcA0QhHJ4ugTJKc88QXi qLQQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@toradex.com header.s=selector1 header.b=Zl6qnbqt; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=toradex.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q2si8834865plr.425.2019.06.25.00.56.04; Tue, 25 Jun 2019 00:56:20 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@toradex.com header.s=selector1 header.b=Zl6qnbqt; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=toradex.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729631AbfFYHuG (ORCPT + 99 others); Tue, 25 Jun 2019 03:50:06 -0400 Received: from mail-eopbgr140105.outbound.protection.outlook.com ([40.107.14.105]:31334 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729493AbfFYHuF (ORCPT ); Tue, 25 Jun 2019 03:50:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=toradex.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KxFY9FFtPp2Oc06t8dNQ4Sc83o+ecTZNPFSLh8StZao=; b=Zl6qnbqtlGZInjf42AE5UyVNbPxgT7Cl6vdWW6kOpS+L9Ol5wOcxSpPINd/gyrNHnmBzGDZibOsK4H7RG0bcg3Z99go3kVmXpYH1tyNC9Mq+3q80jewixoI6RlfBkob0HXBBUG8uf4yeW9ng2stIbJD3sHIay0Tj0EELaIf58Qc= Received: from AM6PR05MB6535.eurprd05.prod.outlook.com (20.179.18.16) by AM6PR05MB5352.eurprd05.prod.outlook.com (20.177.197.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.13; Tue, 25 Jun 2019 07:49:56 +0000 Received: from AM6PR05MB6535.eurprd05.prod.outlook.com ([fe80::2c23:fdba:9ce4:7397]) by AM6PR05MB6535.eurprd05.prod.outlook.com ([fe80::2c23:fdba:9ce4:7397%7]) with mapi id 15.20.2008.007; Tue, 25 Jun 2019 07:49:56 +0000 From: Oleksandr Suvorov To: Fabio Estevam CC: "linux-kernel@vger.kernel.org" , "alsa-devel@alsa-project.org" , Marcel Ziswiler , Igor Opaniuk , Oleksandr Suvorov , Jaroslav Kysela , Mark Brown , Takashi Iwai , Liam Girdwood Subject: [PATCH v2 6/6] ASoC: sgtl5000: Improve VAG power and mute control Thread-Topic: [PATCH v2 6/6] ASoC: sgtl5000: Improve VAG power and mute control Thread-Index: AQHVKyqUql0vzju0UkSHkCtX1cvVEg== Date: Tue, 25 Jun 2019 07:49:55 +0000 Message-ID: <20190625074937.2621-7-oleksandr.suvorov@toradex.com> References: <20190625074937.2621-1-oleksandr.suvorov@toradex.com> In-Reply-To: <20190625074937.2621-1-oleksandr.suvorov@toradex.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM0PR06CA0080.eurprd06.prod.outlook.com (2603:10a6:208:fa::21) To AM6PR05MB6535.eurprd05.prod.outlook.com (2603:10a6:20b:71::16) authentication-results: spf=none (sender IP is ) smtp.mailfrom=oleksandr.suvorov@toradex.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [194.105.145.90] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: db2b49b0-66a4-4cf3-3fe8-08d6f941b6ee x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);SRVR:AM6PR05MB5352; x-ms-traffictypediagnostic: AM6PR05MB5352: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 0079056367 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(346002)(396003)(136003)(39850400004)(376002)(199004)(189003)(26005)(5660300002)(1076003)(54906003)(71190400001)(1411001)(71200400001)(2906002)(36756003)(305945005)(86362001)(53936002)(6486002)(8676002)(478600001)(6512007)(25786009)(50226002)(14454004)(6436002)(6116002)(3846002)(7736002)(316002)(68736007)(44832011)(486006)(476003)(2616005)(66556008)(81166006)(4326008)(6916009)(256004)(66476007)(81156014)(64756008)(66446008)(8936002)(66946007)(73956011)(14444005)(386003)(102836004)(6506007)(52116002)(11346002)(446003)(76176011)(99286004)(186003)(66066001);DIR:OUT;SFP:1102;SCL:1;SRVR:AM6PR05MB5352;H:AM6PR05MB6535.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: toradex.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: fh69sYwzs+ldoR7MrDlolLqEk4Csuq88k98xfSJxGnriMEHZ61qv5Iv1VxheREF0OiuEnf1gurPSuFYe5wgEfWFPVY4UTLv0+NGVLzTkXEH9kVyGL6C0DYRQPzOgIEDLqYN6PfNBJjDl0pIpmYuhvR92mqmDA+8lNT/iDcDhL2aJ27gVMH342/KOXTBScR6L2IBu+Qjm2fVxNkDtiE8RPmDW07+6A3aUfWi6WE3nvaW0/BpG/C1v+D6PU2rP/Af2pbdJxM8/4790AEgFYGtPJcjceKZ+61R60CTBRLApw6ohdShNzovZxyTcM4VQUVm9zj/nKEV0hvd77Eld3zXDBQ44S/+grp5AV80TiyQ1WIDCLwnhyBW+Lv1nqliGGCJiQWxDiVxfG2XIx2gHq1ZnGKk7xZC8eO2uX0T6yHLfc9I= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: toradex.com X-MS-Exchange-CrossTenant-Network-Message-Id: db2b49b0-66a4-4cf3-3fe8-08d6f941b6ee X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 07:49:55.8760 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d9995866-0d9b-4251-8315-093f062abab4 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: oleksandr.suvorov@toradex.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB5352 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Q2hhbmdlIFZBRyBwb3dlciBvbi9vZmYgY29udHJvbCBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2lu ZyBhbGdvcml0aG06DQotIHR1cm4gVkFHIHBvd2VyIE9OIG9uIHRoZSAxc3QgaW5jb21pbmcgZXZl bnQuDQotIGtlZXAgaXQgT04gaWYgdGhlcmUgaXMgYW55IGFjdGl2ZSBWQUcgY29uc3VtZXIgKEFE Qy9EQUMvSFAvTGluZS1JbikuDQotIHR1cm4gVkFHIHBvd2VyIE9GRiB3aGVuIHRoZXJlIGlzIHRo ZSBsYXRlc3QgY29uc3VtZXIncyBwcmUtZG93biBldmVudA0KICBjb21lLg0KLSBhbHdheXMgZGVs YXkgYWZ0ZXIgVkFHIHBvd2VyIE9GRiB0byBhdm9pZCBwb3AuDQotIGRlbGF5IGFmdGVyIFZBRyBw b3dlciBPTiBpZiB0aGUgaW5pdGlhdGl2ZSBjb25zdW1lciBpcyBMaW5lLUluLCB0aGlzDQogIHBy ZXZlbnRzIHBvcCBkdXJpbmcgbGluZS1pbiBtdXhpbmcuDQoNCkFsc28sIGFjY29yZGluZyB0byB0 aGUgbWFudWFsLCB0byBhdm9pZCBhbnkgcG9wcy9jbGlja3MsDQp0aGUgb3V0cHV0cyBzaG91bGQg YmUgbXV0ZWQgZHVyaW5nIGlucHV0L291dHB1dA0Kcm91dGluZyBjaGFuZ2VzLg0KDQpTaWduZWQt b2ZmLWJ5OiBPbGVrc2FuZHIgU3V2b3JvdiA8b2xla3NhbmRyLnN1dm9yb3ZAdG9yYWRleC5jb20+ DQotLS0NCg0KIHNvdW5kL3NvYy9jb2RlY3Mvc2d0bDUwMDAuYyB8IDIyNyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0NCiAxIGZpbGUgY2hhbmdlZCwgMTk1IGluc2VydGlvbnMo KyksIDMyIGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9zZ3Rs NTAwMC5jIGIvc291bmQvc29jL2NvZGVjcy9zZ3RsNTAwMC5jDQppbmRleCBlZTFlNGJmNjEzMjI3 Li5hY2ZiZDVjZGY5MzZlIDEwMDY0NA0KLS0tIGEvc291bmQvc29jL2NvZGVjcy9zZ3RsNTAwMC5j DQorKysgYi9zb3VuZC9zb2MvY29kZWNzL3NndGw1MDAwLmMNCkBAIC0zMSw2ICszMSwxMyBAQA0K ICNkZWZpbmUgU0dUTDUwMDBfREFQX1JFR19PRkZTRVQJMHgwMTAwDQogI2RlZmluZSBTR1RMNTAw MF9NQVhfUkVHX09GRlNFVAkweDAxM0ENCiANCisvKiBEZWxheSBmb3IgdGhlIFZBRyByYW1wIHVw ICovDQorI2RlZmluZSBTR1RMNTAwMF9WQUdfUE9XRVJVUF9ERUxBWSA1MDAgLyogbXMgKi8NCisv KiBEZWxheSBmb3IgdGhlIFZBRyByYW1wIGRvd24gKi8NCisjZGVmaW5lIFNHVEw1MDAwX1ZBR19Q T1dFUkRPV05fREVMQVkgNTAwIC8qIG1zICovDQorDQorI2RlZmluZSBTR1RMNTAwMF9PVVRQVVRT X01VVEUgKFNHVEw1MDAwX0hQX01VVEUgfCBTR1RMNTAwMF9MSU5FX09VVF9NVVRFKQ0KKw0KIC8q IGRlZmF1bHQgdmFsdWUgb2Ygc2d0bDUwMDAgcmVnaXN0ZXJzICovDQogc3RhdGljIGNvbnN0IHN0 cnVjdCByZWdfZGVmYXVsdCBzZ3RsNTAwMF9yZWdfZGVmYXVsdHNbXSA9IHsNCiAJeyBTR1RMNTAw MF9DSElQX0RJR19QT1dFUiwJCTB4MDAwMCB9LA0KQEAgLTEyMyw2ICsxMzAsMTggQEAgZW51bSAg ew0KIAlJMlNfU0NMS19TVFJFTkdUSF9ISUdILA0KIH07DQogDQorZW51bSB7DQorCUhQX1BPV0VS X0VWRU5ULA0KKwlEQUNfUE9XRVJfRVZFTlQsDQorCUFEQ19QT1dFUl9FVkVOVA0KK307DQorDQor c3RydWN0IHNndGw1MDAwX211dGVfc3RhdGUgew0KKwl1MTYgaHBfZXZlbnQ7DQorCXUxNiBkYWNf ZXZlbnQ7DQorCXUxNiBhZGNfZXZlbnQ7DQorfTsNCisNCiAvKiBzZ3RsNTAwMCBwcml2YXRlIHN0 cnVjdHVyZSBpbiBjb2RlYyAqLw0KIHN0cnVjdCBzZ3RsNTAwMF9wcml2IHsNCiAJaW50IHN5c2Ns azsJLyogc3lzY2xrIHJhdGUgKi8NCkBAIC0xMzcsOCArMTU2LDEwOSBAQCBzdHJ1Y3Qgc2d0bDUw MDBfcHJpdiB7DQogCXU4IG1pY2JpYXNfdm9sdGFnZTsNCiAJdTggbHJjbGtfc3RyZW5ndGg7DQog CXU4IHNjbGtfc3RyZW5ndGg7DQorCXN0cnVjdCBzZ3RsNTAwMF9tdXRlX3N0YXRlIG11dGVfc3Rh dGU7DQogfTsNCiANCitzdGF0aWMgaW5saW5lIGludCBocF9zZWxfaW5wdXQoc3RydWN0IHNuZF9z b2NfY29tcG9uZW50ICpjb21wb25lbnQpDQorew0KKwlyZXR1cm4gKHNuZF9zb2NfY29tcG9uZW50 X3JlYWQzMihjb21wb25lbnQsIFNHVEw1MDAwX0NISVBfQU5BX0NUUkwpICYNCisJCVNHVEw1MDAw X0hQX1NFTF9NQVNLKSA+PiBTR1RMNTAwMF9IUF9TRUxfU0hJRlQ7DQorfQ0KKw0KK3N0YXRpYyBp bmxpbmUgdTE2IG11dGVfb3V0cHV0KHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50 LA0KKwkJCSAgICAgIHUxNiBtdXRlX21hc2spDQorew0KKwl1MTYgbXV0ZV9yZWcgPSBzbmRfc29j X2NvbXBvbmVudF9yZWFkMzIoY29tcG9uZW50LA0KKwkJCQkJICAgICAgU0dUTDUwMDBfQ0hJUF9B TkFfQ1RSTCk7DQorDQorCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwg U0dUTDUwMDBfQ0hJUF9BTkFfQ1RSTCwNCisJCQkgICAgbXV0ZV9tYXNrLCBtdXRlX21hc2spOw0K KwlyZXR1cm4gbXV0ZV9yZWc7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgdm9pZCByZXN0b3JlX291 dHB1dChzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCwNCisJCQkJICB1MTYgbXV0 ZV9tYXNrLCB1MTYgbXV0ZV9yZWcpDQorew0KKwlzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0 cyhjb21wb25lbnQsIFNHVEw1MDAwX0NISVBfQU5BX0NUUkwsDQorCQltdXRlX21hc2ssIG11dGVf cmVnKTsNCit9DQorDQorc3RhdGljIHZvaWQgdmFnX3Bvd2VyX29uKHN0cnVjdCBzbmRfc29jX2Nv bXBvbmVudCAqY29tcG9uZW50LCB1MzIgc291cmNlKQ0KK3sNCisJaWYgKHNuZF9zb2NfY29tcG9u ZW50X3JlYWQzMihjb21wb25lbnQsIFNHVEw1MDAwX0NISVBfQU5BX1BPV0VSKSAmDQorCSAgICBT R1RMNTAwMF9WQUdfUE9XRVJVUCkNCisJCXJldHVybjsNCisNCisJc25kX3NvY19jb21wb25lbnRf dXBkYXRlX2JpdHMoY29tcG9uZW50LCBTR1RMNTAwMF9DSElQX0FOQV9QT1dFUiwNCisJCQkgICAg U0dUTDUwMDBfVkFHX1BPV0VSVVAsIFNHVEw1MDAwX1ZBR19QT1dFUlVQKTsNCisNCisJLyogV2hl biBWQUcgcG93ZXJpbmcgb24gdG8gZ2V0IGxvY2FsIGxvb3AgZnJvbSBMaW5lLUluLCB0aGUgc2xl ZXANCisJICogaXMgcmVxdWlyZWQgdG8gYXZvaWQgbG91ZCBwb3AuDQorCSAqLw0KKwlpZiAoaHBf c2VsX2lucHV0KGNvbXBvbmVudCkgPT0gU0dUTDUwMDBfSFBfU0VMX0xJTkVfSU4gJiYNCisJICAg IHNvdXJjZSA9PSBIUF9QT1dFUl9FVkVOVCkNCisJCW1zbGVlcChTR1RMNTAwMF9WQUdfUE9XRVJV UF9ERUxBWSk7DQorfQ0KKw0KK3N0YXRpYyBpbnQgdmFnX3Bvd2VyX2NvbnN1bWVycyhzdHJ1Y3Qg c25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCwNCisJCQkgICAgICAgdTE2IGFuYV9wd3JfcmVn LCB1MzIgc291cmNlKQ0KK3sNCisJaW50IGNvbnN1bWVycyA9IDA7DQorDQorCS8qIGNvdW50IGRh Yy9hZGMgY29uc3VtZXJzIHVuY29uZGl0aW9uYWwgKi8NCisJaWYgKGFuYV9wd3JfcmVnICYgU0dU TDUwMDBfREFDX1BPV0VSVVApDQorCQljb25zdW1lcnMrKzsNCisJaWYgKGFuYV9wd3JfcmVnICYg U0dUTDUwMDBfQURDX1BPV0VSVVApDQorCQljb25zdW1lcnMrKzsNCisNCisJLyoNCisJICogSWYg dGhlIGV2ZW50IGNvbWVzIGZyb20gSFAgYW5kIExpbmUtSW4gaXMgc2VsZWN0ZWQsDQorCSAqIGN1 cnJlbnQgYWN0aW9uIGlzICdEQUMgdG8gYmUgcG93ZXJlZCBkb3duJy4NCisJICogQXMgSFBfUE9X RVJVUCBpcyBub3Qgc2V0IHdoZW4gSFAgbXV4ZWQgdG8gbGluZS1pbiwNCisJICogd2UgbmVlZCB0 byBrZWVwIFZBRyBwb3dlciBPTi4NCisJICovDQorCWlmIChzb3VyY2UgPT0gSFBfUE9XRVJfRVZF TlQpIHsNCisJCWlmIChocF9zZWxfaW5wdXQoY29tcG9uZW50KSA9PSBTR1RMNTAwMF9IUF9TRUxf TElORV9JTikNCisJCQljb25zdW1lcnMrKzsNCisJfSBlbHNlIHsNCisJCWlmIChhbmFfcHdyX3Jl ZyAmIFNHVEw1MDAwX0hQX1BPV0VSVVApDQorCQkJY29uc3VtZXJzKys7DQorCX0NCisNCisJcmV0 dXJuIGNvbnN1bWVyczsNCit9DQorDQorc3RhdGljIHZvaWQgdmFnX3Bvd2VyX29mZihzdHJ1Y3Qg c25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCwgdTMyIHNvdXJjZSkNCit7DQorCXUxNiBhbmFf cHdyID0gc25kX3NvY19jb21wb25lbnRfcmVhZDMyKGNvbXBvbmVudCwNCisJCQkJCSAgICAgU0dU TDUwMDBfQ0hJUF9BTkFfUE9XRVIpOw0KKw0KKwlpZiAoIShhbmFfcHdyICYgU0dUTDUwMDBfVkFH X1BPV0VSVVApKQ0KKwkJcmV0dXJuOw0KKw0KKwkvKg0KKwkgKiBUaGlzIGZ1bmN0aW9uIGNhbGxz IHdoZW4gYW55IG9mIFZBRyBwb3dlciBjb25zdW1lcnMgaXMgZGlzYXBwZWFyaW5nLg0KKwkgKiBU aHVzLCBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGNvbnN1bWVyIGF0IHRoZSBtb21lbnQsIGFz IG1pbmltdW0NCisJICogb25lIGNvbnN1bWVyIHdpbGwgZGVmaW5pdGVseSBzdGF5IGFmdGVyIHRo ZSBlbmQgb2YgdGhlIGN1cnJlbnQNCisJICogZXZlbnQuDQorCSAqIERvbid0IGNsZWFyIFZBR19Q T1dFUlVQIGlmIDIgb3IgbW9yZSBjb25zdW1lcnMgb2YgVkFHIHByZXNlbnQ6DQorCSAqIC0gTElO RV9JTiAoZm9yIEhQIGV2ZW50cykgLyBIUCAoZm9yIERBQy9BREMgZXZlbnRzKQ0KKwkgKiAtIERB Qw0KKwkgKiAtIEFEQw0KKwkgKiAodGhlIGN1cnJlbnQgY29uc3VtZXIgaXMgZGlzYXBwZWFyaW5n IHJpZ2h0IG5vdykNCisJICovDQorCWlmICh2YWdfcG93ZXJfY29uc3VtZXJzKGNvbXBvbmVudCwg YW5hX3B3ciwgc291cmNlKSA+PSAyKQ0KKwkJcmV0dXJuOw0KKw0KKwlzbmRfc29jX2NvbXBvbmVu dF91cGRhdGVfYml0cyhjb21wb25lbnQsIFNHVEw1MDAwX0NISVBfQU5BX1BPV0VSLA0KKwkJU0dU TDUwMDBfVkFHX1BPV0VSVVAsIDApOw0KKwkvKiBJbiBwb3dlciBkb3duIGNhc2UsIHdlIG5lZWQg d2FpdCA0MDAtMTAwMCBtcw0KKwkgKiB3aGVuIFZBRyBmdWxseSByYW1wZWQgZG93bi4NCisJICog QXMgbG9uZ2VyIHdlIHdhaXQsIGFzIHNtYWxsZXIgcG9wIHdlJ3ZlIGdvdC4NCisJICovDQorCW1z bGVlcChTR1RMNTAwMF9WQUdfUE9XRVJET1dOX0RFTEFZKTsNCit9DQorDQogLyoNCiAgKiBtaWNf YmlhcyBwb3dlciBvbi9vZmYgc2hhcmUgdGhlIHNhbWUgcmVnaXN0ZXIgYml0cyB3aXRoDQogICog b3V0cHV0IGltcGVkYW5jZSBvZiBtaWMgYmlhcywgd2hlbiBwb3dlciBvbiBtaWMgYmlhcywgd2UN CkBAIC0xNzAsNDAgKzI5MCw3OSBAQCBzdGF0aWMgaW50IG1pY19iaWFzX2V2ZW50KHN0cnVjdCBz bmRfc29jX2RhcG1fd2lkZ2V0ICp3LA0KIAlyZXR1cm4gMDsNCiB9DQogDQotLyoNCi0gKiBBcyBt YW51YWwgZGVzY3JpYmVkLCBBREMvREFDIG9ubHkgd29ya3Mgd2hlbiBWQUcgcG93ZXJ1cCwNCi0g KiBTbyBlbmFibGVkIFZBRyBiZWZvcmUgQURDL0RBQyB1cC4NCi0gKiBJbiBwb3dlciBkb3duIGNh c2UsIHdlIG5lZWQgd2FpdCA0MDBtcyB3aGVuIHZhZyBmdWxseSByYW1wZWQgZG93bi4NCi0gKi8N Ci1zdGF0aWMgaW50IHBvd2VyX3ZhZ19ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAq dywNCi0Jc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsIGludCBldmVudCkNCitzdGF0aWMg dm9pZCB2YWdfYW5kX211dGVfY29udHJvbChzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBv bmVudCwNCisJCQkJIGludCBldmVudCwgaW50IGV2ZW50X3NvdXJjZSwNCisJCQkJIHUxNiBtdXRl X21hc2ssIHUxNiAqbXV0ZV9yZWcpDQogew0KLQlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNv bXBvbmVudCA9IHNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7DQotCWNvbnN0IHUz MiBtYXNrID0gU0dUTDUwMDBfREFDX1BPV0VSVVAgfCBTR1RMNTAwMF9BRENfUE9XRVJVUDsNCi0N CiAJc3dpdGNoIChldmVudCkgew0KLQljYXNlIFNORF9TT0NfREFQTV9QT1NUX1BNVToNCi0JCXNu ZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgU0dUTDUwMDBfQ0hJUF9BTkFf UE9XRVIsDQotCQkJU0dUTDUwMDBfVkFHX1BPV0VSVVAsIFNHVEw1MDAwX1ZBR19QT1dFUlVQKTsN Ci0JCW1zbGVlcCg0MDApOw0KKwljYXNlIFNORF9TT0NfREFQTV9QUkVfUE1VOg0KKwkJKm11dGVf cmVnID0gbXV0ZV9vdXRwdXQoY29tcG9uZW50LCBtdXRlX21hc2spOw0KKwkJYnJlYWs7DQorCWNh c2UgU05EX1NPQ19EQVBNX1BPU1RfUE1VOg0KKwkJdmFnX3Bvd2VyX29uKGNvbXBvbmVudCwgZXZl bnRfc291cmNlKTsNCisJCXJlc3RvcmVfb3V0cHV0KGNvbXBvbmVudCwgbXV0ZV9tYXNrLCAqbXV0 ZV9yZWcpOw0KIAkJYnJlYWs7DQotDQogCWNhc2UgU05EX1NPQ19EQVBNX1BSRV9QTUQ6DQotCQkv Kg0KLQkJICogRG9uJ3QgY2xlYXIgVkFHX1BPV0VSVVAsIHdoZW4gYm90aCBEQUMgYW5kIEFEQyBh cmUNCi0JCSAqIG9wZXJhdGlvbmFsIHRvIHByZXZlbnQgaW5hZHZlcnRlbnRseSBzdGFydmluZyB0 aGUNCi0JCSAqIG90aGVyIG9uZSBvZiB0aGVtLg0KLQkJICovDQotCQlpZiAoKHNuZF9zb2NfY29t cG9uZW50X3JlYWQzMihjb21wb25lbnQsIFNHVEw1MDAwX0NISVBfQU5BX1BPV0VSKSAmDQotCQkJ CW1hc2spICE9IG1hc2spIHsNCi0JCQlzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21w b25lbnQsIFNHVEw1MDAwX0NISVBfQU5BX1BPV0VSLA0KLQkJCQlTR1RMNTAwMF9WQUdfUE9XRVJV UCwgMCk7DQotCQkJbXNsZWVwKDQwMCk7DQotCQl9DQorCQkqbXV0ZV9yZWcgPSBtdXRlX291dHB1 dChjb21wb25lbnQsIG11dGVfbWFzayk7DQorCQl2YWdfcG93ZXJfb2ZmKGNvbXBvbmVudCwgZXZl bnRfc291cmNlKTsNCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NUX1BNRDoNCisJ CXJlc3RvcmVfb3V0cHV0KGNvbXBvbmVudCwgbXV0ZV9tYXNrLCAqbXV0ZV9yZWcpOw0KIAkJYnJl YWs7DQogCWRlZmF1bHQ6DQogCQlicmVhazsNCiAJfQ0KK30NCisNCisvKg0KKyAqIE11dGUgSGVh ZHBob25lIHdoZW4gcG93ZXIgaXQgdXAvZG93bi4NCisgKiBDb250cm9sIFZBRyBwb3dlciBvbiBI UCBwb3dlciBwYXRoLg0KKyAqLw0KK3N0YXRpYyBpbnQgaGVhZHBob25lX3BnYV9ldmVudChzdHJ1 Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywNCisJc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRy b2wsIGludCBldmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50 ID0NCisJCXNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7DQorCXN0cnVjdCBzZ3Rs NTAwMF9wcml2ICpzZ3RsNTAwMCA9DQorCQlzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShj b21wb25lbnQpOw0KKw0KKwl2YWdfYW5kX211dGVfY29udHJvbChjb21wb25lbnQsIGV2ZW50LCBI UF9QT1dFUl9FVkVOVCwNCisJCQkgICAgIFNHVEw1MDAwX0hQX01VVEUsDQorCQkJICAgICAmc2d0 bDUwMDAtPm11dGVfc3RhdGUuaHBfZXZlbnQpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyog QXMgbWFudWFsIGRlc2NyaWJlcywgQURDL0RBQyBwb3dlcmluZyB1cC9kb3duIHJlcXVpcmVzDQor ICogdG8gbXV0ZSBvdXRwdXRzIHRvIGF2b2lkIHBvcHMuDQorICogQ29udHJvbCBWQUcgcG93ZXIg b24gQURDL0RBQyBwb3dlciBwYXRoLg0KKyAqLw0KK3N0YXRpYyBpbnQgYWRjX3VwZG93bl9kZXBv cChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywNCisJc3RydWN0IHNuZF9rY29udHJvbCAq a2NvbnRyb2wsIGludCBldmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29t cG9uZW50ID0NCisJCXNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7DQorCXN0cnVj dCBzZ3RsNTAwMF9wcml2ICpzZ3RsNTAwMCA9DQorCQlzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2 ZGF0YShjb21wb25lbnQpOw0KKw0KKwl2YWdfYW5kX211dGVfY29udHJvbChjb21wb25lbnQsIGV2 ZW50LCBBRENfUE9XRVJfRVZFTlQsDQorCQkJICAgICBTR1RMNTAwMF9PVVRQVVRTX01VVEUsDQor CQkJICAgICAmc2d0bDUwMDAtPm11dGVfc3RhdGUuYWRjX2V2ZW50KTsNCisNCisJcmV0dXJuIDA7 DQorfQ0KKw0KK3N0YXRpYyBpbnQgZGFjX3VwZG93bl9kZXBvcChzdHJ1Y3Qgc25kX3NvY19kYXBt X3dpZGdldCAqdywNCisJc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsIGludCBldmVudCkN Cit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0NCisJCXNuZF9zb2Nf ZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7DQorCXN0cnVjdCBzZ3RsNTAwMF9wcml2ICpzZ3Rs NTAwMCA9DQorCQlzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOw0KKw0K Kwl2YWdfYW5kX211dGVfY29udHJvbChjb21wb25lbnQsIGV2ZW50LCBEQUNfUE9XRVJfRVZFTlQs DQorCQkJICAgICBTR1RMNTAwMF9PVVRQVVRTX01VVEUsDQorCQkJICAgICAmc2d0bDUwMDAtPm11 dGVfc3RhdGUuZGFjX2V2ZW50KTsNCiANCiAJcmV0dXJuIDA7DQogfQ0KQEAgLTI4MCw3ICs0Mzks MTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0IHNndGw1MDAwX2Rh cG1fd2lkZ2V0c1tdID0gew0KIAkJCSAgICBtaWNfYmlhc19ldmVudCwNCiAJCQkgICAgU05EX1NP Q19EQVBNX1BPU1RfUE1VIHwgU05EX1NPQ19EQVBNX1BSRV9QTUQpLA0KIA0KLQlTTkRfU09DX0RB UE1fUEdBKCJIUCIsIFNHVEw1MDAwX0NISVBfQU5BX1BPV0VSLCA0LCAwLCBOVUxMLCAwKSwNCisJ U05EX1NPQ19EQVBNX1BHQV9FKCJIUCIsIFNHVEw1MDAwX0NISVBfQU5BX1BPV0VSLCA0LCAwLCBO VUxMLCAwLA0KKwkJCSAgIGhlYWRwaG9uZV9wZ2FfZXZlbnQsDQorCQkJICAgU05EX1NPQ19EQVBN X1BSRV9QT1NUX1BNVSB8DQorCQkJICAgU05EX1NPQ19EQVBNX1BSRV9QT1NUX1BNRCksDQogCVNO RF9TT0NfREFQTV9QR0EoIkxPIiwgU0dUTDUwMDBfQ0hJUF9BTkFfUE9XRVIsIDAsIDAsIE5VTEws IDApLA0KIA0KIAlTTkRfU09DX0RBUE1fTVVYKCJDYXB0dXJlIE11eCIsIFNORF9TT0NfTk9QTSwg MCwgMCwgJmFkY19tdXgpLA0KQEAgLTMwMSwxMSArNDYzLDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3Qgc25kX3NvY19kYXBtX3dpZGdldCBzZ3RsNTAwMF9kYXBtX3dpZGdldHNbXSA9IHsNCiAJCQkJ MCwgU0dUTDUwMDBfQ0hJUF9ESUdfUE9XRVIsDQogCQkJCTEsIDApLA0KIA0KLQlTTkRfU09DX0RB UE1fQURDKCJBREMiLCAiQ2FwdHVyZSIsIFNHVEw1MDAwX0NISVBfQU5BX1BPV0VSLCAxLCAwKSwN Ci0JU05EX1NPQ19EQVBNX0RBQygiREFDIiwgIlBsYXliYWNrIiwgU0dUTDUwMDBfQ0hJUF9BTkFf UE9XRVIsIDMsIDApLA0KLQ0KLQlTTkRfU09DX0RBUE1fUFJFKCJWQUdfUE9XRVJfUFJFIiwgcG93 ZXJfdmFnX2V2ZW50KSwNCi0JU05EX1NPQ19EQVBNX1BPU1QoIlZBR19QT1dFUl9QT1NUIiwgcG93 ZXJfdmFnX2V2ZW50KSwNCisJU05EX1NPQ19EQVBNX0FEQ19FKCJBREMiLCAiQ2FwdHVyZSIsIFNH VEw1MDAwX0NISVBfQU5BX1BPV0VSLCAxLCAwLA0KKwkJCSAgIGFkY191cGRvd25fZGVwb3AsIFNO RF9TT0NfREFQTV9QUkVfUE9TVF9QTVUgfA0KKwkJCSAgIFNORF9TT0NfREFQTV9QUkVfUE9TVF9Q TUQpLA0KKwlTTkRfU09DX0RBUE1fREFDX0UoIkRBQyIsICJQbGF5YmFjayIsIFNHVEw1MDAwX0NI SVBfQU5BX1BPV0VSLCAzLCAwLA0KKwkJCSAgIGRhY191cGRvd25fZGVwb3AsIFNORF9TT0NfREFQ TV9QUkVfUE9TVF9QTVUgfA0KKwkJCSAgIFNORF9TT0NfREFQTV9QUkVfUE9TVF9QTUQpLA0KIH07 DQogDQogLyogcm91dGVzIGZvciBzZ3RsNTAwMCAqLw0KLS0gDQoyLjIwLjENCg0K