Received: by 2002:ac0:950c:0:0:0:0:0 with SMTP id f12csp2812202imc; Wed, 13 Mar 2019 01:48:07 -0700 (PDT) X-Google-Smtp-Source: APXvYqzHB/g5WvF/JJiPTWYD0ePOOnNXCAJz+zLszJVJekvoS7hqiqXBdt9xbFu8JB+e23hUD0E4 X-Received: by 2002:a17:902:282b:: with SMTP id e40mr44549767plb.111.1552466887526; Wed, 13 Mar 2019 01:48:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552466887; cv=none; d=google.com; s=arc-20160816; b=igovXfFMR18tt5Bn0k9Df3l9IZn0ct6TGRDHZcD87QYRCHqKMaCk6JNKfY+gkybPk8 Mq3nC8SI4kxuOS2pln8kIvAjK1pIsZhtd9gDPiCXSFeIgH7Lq04jxO6k/l6SdF/n/pz6 SsDKMWu9mdrsbWcNL91ISTGv+ChyY24gkhE3JQdlB7zwS/Jl6yToTgMOZ2xno2NC8EJY Y6Y94GgzZu78qqNk8s5YTuJM5Ezo8Qncn1GDX6ilelQwR9KCKTBrG8KeayaYq4vqO6lh FybsdnlURWM/it1opwhUDP55+X3d2cn7mk8rPuxAmOPGnG3+qB9YcsDzsDvZSfZmKAJ9 ePLw== 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=8cAtAUvElS3GnoFis/eLt9GOTU8tZNP4NsNqzV/eMEg=; b=MTiWEvDnWtz0o9T2HNHwnNEQ6GvYcv1PLU01xduWBiTxc+ySbHNtOcL5uZHv42jUbz 1exfiZ7faa9DQ7nks/FsGQpOPvkBPS6+FqlxSIBcurz17Z0vDvOzn07YCrzWSkRfWUli 1ODgAyfNriWcHvAj0jey/FLrAjORtICwiWiV7bQcNv1A98oFQA+Dexap5k5BaQ2yEAW5 apCh/fMKuTN0Ins5CzQC4Isa82UlrKwyNzzgC6+nyaFwx8y4jDvUvIRoaGEdPpeqZ3Yt d+lMdZbveJAZU62Tg8YTre5erRty8+SD1z+cSDNWXpoh0j+4U+Fj+zTAyyc1VcGf0kaF nseA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector1 header.b=PZSPP67I; 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=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l63si9810141pfj.53.2019.03.13.01.47.51; Wed, 13 Mar 2019 01:48:07 -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=@nxp.com header.s=selector1 header.b=PZSPP67I; 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=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727059AbfCMIr1 (ORCPT + 99 others); Wed, 13 Mar 2019 04:47:27 -0400 Received: from mail-eopbgr00074.outbound.protection.outlook.com ([40.107.0.74]:36022 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726629AbfCMIr0 (ORCPT ); Wed, 13 Mar 2019 04:47:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8cAtAUvElS3GnoFis/eLt9GOTU8tZNP4NsNqzV/eMEg=; b=PZSPP67IrWs3yxBqbYYnU8eQ73Wd/XU8wNQaMq2Atwvb/NdVCBTDNCkV7RsRKNtVHeuA5/HXb7crQEp6b2prIyDF1X8vNZFi/02bGwb78r5dIx5OlhYuRqznr/P2slwpk3q1x0Ys6kUGeDjRCah2BHReyQrg+F5zNe5DYsKIox0= Received: from AM6PR0402MB3911.eurprd04.prod.outlook.com (52.133.30.10) by AM6PR0402MB3574.eurprd04.prod.outlook.com (52.133.20.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1709.13; Wed, 13 Mar 2019 08:47:16 +0000 Received: from AM6PR0402MB3911.eurprd04.prod.outlook.com ([fe80::e052:f2d5:93f2:5f52]) by AM6PR0402MB3911.eurprd04.prod.outlook.com ([fe80::e052:f2d5:93f2:5f52%4]) with mapi id 15.20.1686.021; Wed, 13 Mar 2019 08:47:16 +0000 From: Anson Huang To: =?utf-8?B?VXdlIEtsZWluZS1Lw7ZuaWc=?= CC: "thierry.reding@gmail.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "kernel@pengutronix.de" , "festevam@gmail.com" , "linux@armlinux.org.uk" , "stefan@agner.ch" , "otavio@ossystems.com.br" , Leonard Crestez , "schnitzeltony@gmail.com" , "jan.tuerk@emtrion.com" , Robin Gong , "linux-pwm@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , dl-linux-imx Subject: RE: [PATCH 2/5] pwm: Add i.MX TPM PWM driver support Thread-Topic: [PATCH 2/5] pwm: Add i.MX TPM PWM driver support Thread-Index: AQHU19pRLIP7E/b7ake3rSFDebhjp6YGKWAAgALvrwCAACXPAIAAARQg Date: Wed, 13 Mar 2019 08:47:16 +0000 Message-ID: References: <1552288273-31028-1-git-send-email-Anson.Huang@nxp.com> <1552288273-31028-3-git-send-email-Anson.Huang@nxp.com> <20190311092644.a2x53zgxv2iseqao@pengutronix.de> <20190313083226.qgnldzd6pc3arooc@pengutronix.de> In-Reply-To: <20190313083226.qgnldzd6pc3arooc@pengutronix.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=anson.huang@nxp.com; x-originating-ip: [119.31.174.66] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d744e4dc-6b07-40c8-ad8f-08d6a7907efd x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);SRVR:AM6PR0402MB3574; x-ms-traffictypediagnostic: AM6PR0402MB3574: x-ms-exchange-purlcount: 2 x-microsoft-antispam-prvs: x-forefront-prvs: 09752BC779 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(376002)(366004)(346002)(396003)(39860400002)(136003)(189003)(199004)(13464003)(476003)(486006)(93886005)(6306002)(9686003)(25786009)(55016002)(229853002)(99286004)(14454004)(6246003)(316002)(54906003)(66066001)(33656002)(446003)(11346002)(6436002)(186003)(74316002)(26005)(53546011)(6506007)(53936002)(478600001)(966005)(97736004)(7416002)(45080400002)(14444005)(256004)(102836004)(6916009)(76176011)(8676002)(81156014)(68736007)(4326008)(8936002)(7736002)(305945005)(3846002)(7696005)(6116002)(44832011)(81166006)(2906002)(86362001)(30864003)(106356001)(71190400001)(71200400001)(105586002)(66574012)(5660300002)(52536013);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR0402MB3574;H:AM6PR0402MB3911.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 1eoUlZ5/7OrUsN8MWdtqb7AW4wZya5rTj0JToKbDmPPvjyQl4nB5UbgiAVwpsyP5FiK3Wu8mjFfvKvdWkaVul5bNesuEMPHna6qch5ShbEznURMjRjJFv/Z8IhXjwyIeM+TRI9acRtJLEmErZPjksIliwF46WmfbrNaosZAvvt+2/OcgPHaja3Fk/YfXZgrc71wYa1+6TLnQIyLPZYdDGvUoHo/Gzi0i1zal5t4YdV2VA7ZC/K2nyGQyYdwE6ZRFW9FnYS5sO0LWrdVDZ1E84qs9cuCpnOZsUQAxtepmUErrau6JVbvrW98AmVDL8+NKC2w6xEb+R6MeCL93+EDsa5BL1BMwmFXvEC+EXQXhUuJMyENwKkhd+bvZwKbqlXwp4fR0ADsiqJfOCfg/Q6jOXjydLMq29FulTu4paaQKeZE= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d744e4dc-6b07-40c8-ad8f-08d6a7907efd X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Mar 2019 08:47:16.5726 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR0402MB3574 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGksIFV3ZQ0KDQpCZXN0IFJlZ2FyZHMhDQpBbnNvbiBIdWFuZw0KDQo+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+IEZyb206IFV3ZSBLbGVpbmUtS8O2bmlnIFttYWlsdG86dS5rbGVpbmUt a29lbmlnQHBlbmd1dHJvbml4LmRlXQ0KPiBTZW50OiAyMDE55bm0M+aciDEz5pelIDE2OjMyDQo+ IFRvOiBBbnNvbiBIdWFuZyA8YW5zb24uaHVhbmdAbnhwLmNvbT4NCj4gQ2M6IHRoaWVycnkucmVk aW5nQGdtYWlsLmNvbTsgcm9iaCtkdEBrZXJuZWwub3JnOyBtYXJrLnJ1dGxhbmRAYXJtLmNvbTsN Cj4gc2hhd25ndW9Aa2VybmVsLm9yZzsgcy5oYXVlckBwZW5ndXRyb25peC5kZTsga2VybmVsQHBl bmd1dHJvbml4LmRlOw0KPiBmZXN0ZXZhbUBnbWFpbC5jb207IGxpbnV4QGFybWxpbnV4Lm9yZy51 azsgc3RlZmFuQGFnbmVyLmNoOw0KPiBvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icjsgTGVvbmFyZCBD cmVzdGV6IDxsZW9uYXJkLmNyZXN0ZXpAbnhwLmNvbT47DQo+IHNjaG5pdHplbHRvbnlAZ21haWwu Y29tOyBqYW4udHVlcmtAZW10cmlvbi5jb207IFJvYmluIEdvbmcNCj4gPHlpYmluLmdvbmdAbnhw LmNvbT47IGxpbnV4LXB3bUB2Z2VyLmtlcm5lbC5vcmc7DQo+IGRldmljZXRyZWVAdmdlci5rZXJu ZWwub3JnOyBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7IGxpbnV4LQ0KPiBr ZXJuZWxAdmdlci5rZXJuZWwub3JnOyBkbC1saW51eC1pbXggPGxpbnV4LWlteEBueHAuY29tPg0K PiBTdWJqZWN0OiBSZTogW1BBVENIIDIvNV0gcHdtOiBBZGQgaS5NWCBUUE0gUFdNIGRyaXZlciBz dXBwb3J0DQo+IA0KPiBIZWxsbywNCj4gDQo+IE9uIFdlZCwgTWFyIDEzLCAyMDE5IGF0IDA3OjI4 OjI0QU0gKzAwMDAsIEFuc29uIEh1YW5nIHdyb3RlOg0KPiA+ID4gT24gTW9uLCBNYXIgMTEsIDIw MTkgYXQgMDc6MTY6MTZBTSArMDAwMCwgQW5zb24gSHVhbmcgd3JvdGU6DQo+ID4gPiA+ICsNCj4g PiA+ID4gIGNvbmZpZyBQV01fSlo0NzQwDQo+ID4gPiA+ICAJdHJpc3RhdGUgIkluZ2VuaWMgSlo0 N3h4IFBXTSBzdXBwb3J0Ig0KPiA+ID4gPiAgCWRlcGVuZHMgb24gTUFDSF9JTkdFTklDDQo+ID4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3B3bS9NYWtlZmlsZSBiL2RyaXZlcnMvcHdtL01ha2Vm aWxlIGluZGV4DQo+ID4gPiA+IDljNjc2YTAuLjY0ZTAzNmMgMTAwNjQ0DQo+ID4gPiA+IC0tLSBh L2RyaXZlcnMvcHdtL01ha2VmaWxlDQo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvcHdtL01ha2VmaWxl DQo+ID4gPiA+IEBAIC0xOCw2ICsxOCw3IEBAIG9iai0kKENPTkZJR19QV01fRlNMX0ZUTSkJKz0g cHdtLWZzbC0NCj4gZnRtLm8NCj4gPiA+ID4gIG9iai0kKENPTkZJR19QV01fSElCVlQpCQkrPSBw d20taGlidnQubw0KPiA+ID4gPiAgb2JqLSQoQ09ORklHX1BXTV9JTUcpCQkrPSBwd20taW1nLm8N Cj4gPiA+ID4gIG9iai0kKENPTkZJR19QV01fSU1YKQkJKz0gcHdtLWlteC5vDQo+ID4gPiA+ICtv YmotJChDT05GSUdfUFdNX0lNWF9UUE0pCSs9IHB3bS1pbXgtdHBtLm8NCj4gPiA+ID4gIG9iai0k KENPTkZJR19QV01fSlo0NzQwKQkrPSBwd20tano0NzQwLm8NCj4gPiA+ID4gIG9iai0kKENPTkZJ R19QV01fTFAzOTQzKQkrPSBwd20tbHAzOTQzLm8NCj4gPiA+ID4gIG9iai0kKENPTkZJR19QV01f TFBDMThYWF9TQ1QpCSs9IHB3bS1scGMxOHh4LXNjdC5vDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3B3bS9wd20taW14LXRwbS5jIGIvZHJpdmVycy9wd20vcHdtLWlteC0NCj4gdHBtLmMN Cj4gPiA+IG5ldw0KPiA+ID4gPiBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4IDAwMDAwMDAuLmE1MzI1 NmENCj4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiArKysgYi9kcml2ZXJzL3B3bS9wd20t aW14LXRwbS5jDQo+ID4gPiA+IEBAIC0wLDAgKzEsMjc3IEBADQo+ID4gPiA+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ID4gPiArLyoNCj4gPiA+ID4gKyAqIENvcHly aWdodCAyMDE4LTIwMTkgTlhQLg0KPiA+ID4gPiArICovDQo+ID4gPg0KPiA+ID4gUGxlYXNlIGFk ZCBhIGxpbmsgdG8gdGhlIHJlZmVyZW5jZSBtYW51YWwgdG8gdGhlIGhlYWRlci4NCj4gPg0KPiA+ IEkgY2hlY2tlZCB0aGUgTlhQIHdlYnNpdGUsIGxvb2tzIGxpa2UgaS5NWDdVTFAgcmVmZXJlbmNl IG1hbnVhbCBpcyBOT1QNCj4gPiBwdWJsaXNoZWQgeWV0LCBzaG91bGQgYmUgcHVibGlzaGVkIHZl cnkgc29vbi4NCj4gDQo+IG9rLg0KPiANCj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9iaXRvcHMu aD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxs aW51eC9lcnIuaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9pby5oPg0KPiA+ID4gPiArI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+DQo+ ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPg0KPiA+ID4gPiArI2luY2x1ZGUg PGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPiAjaW5jbHVkZSA8bGludXgvcHdtLmg+DQo+ID4gPiA+ ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KPiA+ID4gPiArDQo+ID4gPiA+ICsjZGVmaW5lIFRQ TV9HTE9CQUwJMHg4DQo+ID4gPiA+ICsjZGVmaW5lIFRQTV9TQwkJMHgxMA0KPiA+ID4gPiArI2Rl ZmluZSBUUE1fQ05UCQkweDE0DQo+ID4gPiA+ICsjZGVmaW5lIFRQTV9NT0QJCTB4MTgNCj4gPiA+ ID4gKyNkZWZpbmUgVFBNX0MwU0MJMHgyMA0KPiA+ID4gPiArI2RlZmluZSBUUE1fQzBWCQkweDI0 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNkZWZpbmUgU0NfQ01PRAkJMw0KPiA+ID4NCj4gPiA+IFRo aXMgc2VlbXMgdG8gYmUgYW4gb2Zmc2V0LCB3aHkgbm90IGRlZmluaW5nIGl0IGFzIEJJVCgzKSBp bnN0ZWFkPw0KPiA+DQo+ID4gU0NfQ01PRCBmaWVsZCBhcyAyIGJpdHMsIEkgd2lsbCB1c2UgYmVs b3cgaW4gVjIgcGF0Y2ggc2V0Og0KPiA+DQo+ID4gI2RlZmluZSBUUE1fU0NfQ01PRF9TSElGVCAg ICAgICAzDQo+ID4gI2RlZmluZSBUUE1fU0NfQ01PRF9NQVNLICAgICAgICAoMHgzIDw8IFRQTV9T Q19DTU9EX1NISUZUKQ0KPiANCj4gSSBzdWdnZXN0DQo+IA0KPiAJI2RlZmluZSBQV01fSU1YX1RQ TV9TQ19DTU9ECUdFTk1BU0soMSwgMCkNCj4gDQo+IGluc3RlYWQuIFNlZSBpbmNsdWRlL2xpbnV4 L2JpdGZpZWxkLmggZm9yIGRldGFpbHMuDQo+IEFsc28gbm90ZSB0aGF0ICJUUE0iIGlzbid0IGEg Z3JlYXQgcHJlZml4IGdpdmVuIHRoYXQgd2UgaGF2ZToNCj4gDQo+IAkkIGdpdCBscy1maWxlcyB8 IGdyZXAgLWMgdHBtDQo+IAk4Mg0KPiANCj4gLiBFdmVuIHRob3VnaCBQV01fSU1YX1RQTSBpcyBs b25nZXIgSSB0aGluayBpdCdzIHdvcnRoIHRoZSBleHRyYSBieXRlcy4NCj4gVGhlbiBpZiB5b3Ug dXNlIHB3bV9pbXhfdHBtIGFscyBwcmVmaXggZm9yIHlvdXIgZnVuY3Rpb24gaXQncyBvYnZpb3Vz IHRoYXQNCj4gdGhleSBhbGwgYmVsb25nIHRvZ2V0aGVyLiBGb3IgZXh0cmEgY3JlZGl0cyBhbHNv IGFkYXB0IHRoZSBkcml2ZXIgbmFtZSB0bw0KPiBtYXRjaC4NCg0KT0ssIEkgd2lsbCBpbXByb3Zl IGl0IGFjY29yZGluZ2x5Lg0KDQo+IA0KPiA+ID4gPiArCQlyZXQgPSBjbGtfcHJlcGFyZV9lbmFi bGUodHBtLT5jbGspOw0KPiA+ID4gPiArCQlpZiAocmV0KSB7DQo+ID4gPiA+ICsJCQlkZXZfZXJy KGNoaXAtPmRldiwNCj4gPiA+ID4gKwkJCQkiZmFpbGVkIHRvIHByZXBhcmUgb3IgZW5hYmxlIGNs ayAlZFxuIiwgcmV0KTsNCj4gPiA+ID4gKwkJCXJldHVybiByZXQ7DQo+ID4gPiA+ICsJCX0NCj4g PiA+ID4gKwl9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwl2YWwgPSByZWFkbCh0cG0tPmJhc2UgKyBU UE1fU0MpOw0KPiA+ID4gPiArCXZhbCAmPSB+VFBNX1NDX1BTX01BU0s7DQo+ID4gPiA+ICsJdmFs IHw9IGRpdjsNCj4gPiA+ID4gKwl3cml0ZWwodmFsLCB0cG0tPmJhc2UgKyBUUE1fU0MpOw0KPiA+ ID4NCj4gPiA+IElmIHRoZSB1bml0IHJhbiB3aXRoIChzYXkpIGRpdiA9PSA1IGFuZCBhIGhpZ2gg ZHV0eSBjeWNsZSBiZWZvcmUgYW5kDQo+ID4gPiBmb3IgdGhlIG5ldyBjb25maWd1cmF0aW9uIHlv dSBuZWVkIGRpdiA9PSA2IHdpdGggYSBsb3cgZHV0eSBjeWNsZSwNCj4gPiA+IGNhbiBpdCBoYXBw ZW4gaGVyZSB0aGF0IHRoZSBvdXRwdXQgdXNlcyB0aGUgbmV3IGRpdiB2YWx1ZSBhbHJlYWR5IHdp dGgNCj4gdGhlIGhpZ2ggZHV0eSBjeWNsZT8NCj4gPiA+IElmIHNvLCB0aGlzIGlzIGJhZC4NCj4g Pg0KPiA+IEFzIHRoZSBUUE0gY291bnRlciBpcyBzaGFyZWQgYmV0d2VlbiAyIGNoYW5uZWxzLCBz byBJIHdpbGwgbWFrZSB0aGlzDQo+ID4gcHJlc2NhbGUgc2V0dGluZyB0byBiZSBpbml0aWFsaXpl ZCBPTkxZIG9uY2UsIE9OTFkgZmlyc3QgY2hhbm5lbCB3aWxsDQo+ID4gY29uZmlnIGl0LCB0aGlz IG1ha2VzIHRoaW5ncyBzaW1wbGUgYW5kIHRoZSBvdGhlciBjaGFubmVsIHNob3VsZCB1c2UNCj4g PiBzYW1lIHByZXNjYWxlIHZhbHVlIGFzIGZpcnN0IGNoYW5uZWwgYW5kIE9OTFkgYWRqdXN0IGl0 cyBvd24gZHV0eSBjeWNsZSBhbmQNCj4gcG9sYXJpdHkgZXRjLi4NCj4gDQo+IFNvIHRoZSB0d28g Y2hhbm5lbHMgaGF2ZSB0byBzaGFyZSB0aGUgcGVyaW9kIGxlbmd0aD8gSWYgc28gcGxlYXNlIG5v dGUgdGhpcyBpbg0KPiB0aGUgaGVhZGVyIG9mIHRoZSBkcml2ZXIgbGlrZSBpdCB3YXMgZG9uZSBp bg0KPiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJs PWh0dHBzJTNBJTJGJTJGd3cNCj4gdy5zcGluaWNzLm5ldCUyRmxpc3RzJTJGbGludXgtDQo+IHB3 bSUyRm1zZzA5MTQ5Lmh0bWwmYW1wO2RhdGE9MDIlN0MwMSU3Q2Fuc29uLmh1YW5nJTQwbnhwLmNv bQ0KPiAlN0NmNTE4NzMxMWFjNzM0YWNiOTdmNzA4ZDZhNzhlNzcwYyU3QzY4NmVhMWQzYmMyYjRj NmZhOTJjZDk5YzVjMw0KPiAwMTYzNSU3QzAlN0MwJTdDNjM2ODgwNjI3NjU4NDU0Mzc0JmFtcDtz ZGF0YT1iZ0JSWFZBQlpKeE5sS3V3DQo+IERaNUo3R3RRQTFjdm1NZmhIdmxFekhsZGJTSSUzRCZh bXA7cmVzZXJ2ZWQ9MCAoc2VhcmNoIGZvcg0KPiAiTGltaXRhdGlvbnMiKS4gWW91IGFsc28gbmVl ZCBzb21lIGxvZ2ljIHRvIGFzc2VydCB0aGF0IHNldHRpbmcgdGhlIDJuZA0KPiBjaGFubmVsIGRv ZXNuJ3QgbW9kaWZ5IHRoZSBmaXJzdCAoaWYgdGhlIGZpcnN0IGlzIGluIHVzZSkuDQo+IA0KDQpP SywgSSB3aWxsIGFkZCBsaW1pdGF0aW9ucyBhdCB0b3Agb2YgZmlsZS4NCg0KPiA+ID4gPiArCXBl cmlvZF9jeWNsZXMgPSBjOw0KPiA+ID4gPiArCWMgKj0gZHV0eV9uczsNCj4gPiA+ID4gKwlkb19k aXYoYywgcGVyaW9kX25zKTsNCj4gPiA+ID4gKwlkdXR5X2N5Y2xlcyA9IGM7DQo+ID4gPiA+ICsN Cj4gPiA+ID4gKwl3cml0ZWwocGVyaW9kX2N5Y2xlcyAmIFRQTV9NT0RfTU9EX01BU0ssIHRwbS0+ YmFzZSArDQo+ID4gPiBUUE1fTU9EKTsNCj4gPiA+DQo+ID4gPiBEb24ndCB5b3UgbmVlZCB0byBh ZGQgcHdtLT5od3B3bSAqIFRQTV9DSG5fQUREUl9PRkZTRVQgdG8gdGhlDQo+ID4gPiByZWdpc3Rl ciBvZmZzZXQgaGVyZT8gQW5kIGlmIG5vdCwgSSBhc3N1bWUgdGhpcyBhZmZlY3RzIHRoZSBvdGhl cg0KPiA+ID4gUFdNcyBwcm92aWRlZCBieSB0aGlzIGhhcmR3YXJlIHVuaXQgd2hpY2ggaXMgYmFk Lg0KPiA+DQo+ID4gVGhlIE1PRCByZWdpc3RlciBpcyBzaGFyZWQgYmV0d2VlbiBkaWZmZXJlbnQg Y2hhbm5lbHMsIE9OTFkgMSByZWdpc3Rlcg0KPiB0aGVyZS4NCj4gPiBUaGlzIHJlZ2lzdGVyIHdp bGwgYmUgc2FtZSBhcyBTQywgT05MWSBjb25maWd1cmVkIE9OQ0UgYnkgZmlyc3QgY2hhbm5lbC4N Cj4gPg0KPiA+ID4NCj4gPiA+ID4gKwl3cml0ZWwoZHV0eV9jeWNsZXMgJiBUUE1fTU9EX01PRF9N QVNLLCB0cG0tPmJhc2UgKw0KPiA+ID4gPiArCSAgICAgICBUUE1fQzBWICsgcHdtLT5od3B3bSAq IFRQTV9DSG5fQUREUl9PRkZTRVQpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJLyogaWYgcHdtIGlz IG5vdCBlbmFibGVkLCBkaXNhYmxlIGNsayBhZnRlciBzZXR0aW5nICovDQo+ID4gPiA+ICsJaWYg KCFwd21faXNfZW5hYmxlZChwd20pKQ0KPiA+ID4gPiArCQljbGtfZGlzYWJsZV91bnByZXBhcmUo dHBtLT5jbGspOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJcmV0dXJuIDA7DQo+ID4gPiA+ICt9DQo+ ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBpbnQgdHBtX3B3bV9lbmFibGUoc3RydWN0IHB3bV9j aGlwICpjaGlwLCBzdHJ1Y3QNCj4gPiA+ID4gK3B3bV9kZXZpY2UNCj4gPiA+ID4gKypwd20pIHsN Cj4gPiA+ID4gKwlzdHJ1Y3QgdHBtX3B3bV9jaGlwICp0cG0gPSB0b190cG1fcHdtX2NoaXAoY2hp cCk7DQo+ID4gPiA+ICsJaW50IHJldDsNCj4gPiA+ID4gKwl1MzIgdmFsOw0KPiA+ID4gPiArDQo+ ID4gPiA+ICsJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHRwbS0+Y2xrKTsNCj4gPiA+ID4gKwlp ZiAocmV0KSB7DQo+ID4gPiA+ICsJCWRldl9lcnIoY2hpcC0+ZGV2LA0KPiA+ID4gPiArCQkJImZh aWxlZCB0byBwcmVwYXJlIG9yIGVuYWJsZSBjbGsgJWRcbiIsIHJldCk7DQo+ID4gPiA+ICsJCXJl dHVybiByZXQ7DQo+ID4gPiA+ICsJfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsJLyoNCj4gPiA+ID4g KwkgKiBUbyBlbmFibGUgYSB0cG0gY2hhbm5lbCwgQ1BXTVMgPSAwLCBNU25COk1TbkEgPSAweDAs DQo+ID4gPiA+ICsJICogZm9yIFRQTSBub3JtYWwgcG9sYXJpdHkgRUxTbkI6RUxTbkEgPSAyYicx MCwNCj4gPiA+ID4gKwkgKiBpbnZlcnNlIEVMU25COkVMU25BID0gMmInMDENCj4gPiA+ID4gKwkg Ki8NCj4gPiA+ID4gKwl2YWwgPSByZWFkbCh0cG0tPmJhc2UgKyBUUE1fQzBTQyArIHB3bS0+aHdw d20gKg0KPiA+ID4gPiArVFBNX0NIbl9BRERSX09GRlNFVCk7DQo+IA0KPiBZb3UgY291bGQgbWFr ZSBpdCBvYnZpb3VzIHdoaWNoIGNoYW5uZWxzIGFyZSBzaGFyZWQgYW5kIHdoaWNoIGhhdmUgb25l DQo+IGluc3RhbmNlIHBlciBwd20gYnkgZG9pbmc6DQo+IA0KPiAJI2RlZmluZSBQV01fSU1YX1RQ TV9DMFNDKGh3aWQpCSgweDIwICsgaHdpZCAqIDQpDQoNCkxvb2tzIGdvb2QsIEkgd2lsbCB1c2Ug bWFjcm8gdG8gaW1wcm92ZSBpdC4NCg0KPiANCj4gPiA+ID4gKwl2YWwgfD0gcHdtLT5zdGF0ZS5w b2xhcml0eSA/IEVMU25BIDogRUxTbkI7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwl3cml0ZWwodmFs LCB0cG0tPmJhc2UgKyBUUE1fQzBTQyArIHB3bS0+aHdwd20gKg0KPiA+ID4gPiArVFBNX0NIbl9B RERSX09GRlNFVCk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwkvKiBzdGFydCB0aGUgY291bnRlciAq Lw0KPiA+ID4gPiArCXZhbCA9IHJlYWRsKHRwbS0+YmFzZSArIFRQTV9TQyk7DQo+ID4gPiA+ICsJ dmFsIHw9IDB4MSA8PCBTQ19DTU9EOw0KPiA+ID4gPiArCXdyaXRlbCh2YWwsIHRwbS0+YmFzZSAr IFRQTV9TQyk7DQo+ID4gPg0KPiA+ID4gSWYgdHBtX3B3bV9lbmFibGUgaXMgY2FsbGVkIGZvciB0 aGUgZmlyc3QgUFdNIHByb3ZpZGVkIGJ5IHRoZQ0KPiA+ID4gaGFyZHdhcmUsIGhvdyBkb2VzIHRo aXMgd3JpdGVsIGFmZmVjdCB0aGUgc2Vjb25kIG9uZT8NCj4gPg0KPiA+IEkgd2lsbCBtYWtlIHRo ZSBUUE0gY291bnRlciBlbmFibGVkIGZvciBldmVyeSBjaGFubmVsIGVuYWJsZWQsIGlmIE9OTFkN Cj4gPiBkaXNhYmxlZCB3aGVuIGJvdGggY2hhbm5lbHMgYXJlIGRpc2FibGVkLg0KPiANCj4gU28g eW91IGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQ6DQo+IA0KPiAgLSBpZiB5b3UgZGlzYWJsZSBvbmUg Y2hhbm5lbCB3aGlsZSB0aGUgb3RoZXIgaXMgc3RpbGwgcnVubmluZywganVzdCBzZXQNCj4gICAg dGhlIGR1dHkgY3ljbGUgdG8gemVybyB0byBub3QgaW50ZXJmZXJlIHdpdGggdGhlIG90aGVyDQo+ ICAtIGlmIHlvdSBlbmFibGUgb25lIGNoYW5uZWwgd2hpbGUgdGhlIG90aGVyIGlzIHN0aWxsIG9m Zi91bnVzZWQsIG1ha2UNCj4gICAgc3VyZSB0aGF0IG90aGVyIGNoYW5uZWwgZG9lc24ndCBzdGFy dCB0byB3aWdnbGUuDQoNCk9OTFkgc2V0dGluZyBkdXR5IGN5Y2xlIGlzIE5PVCBlbm91Z2ggSSB0 aGluaywgSSBzYXcgdGhlIC5jb25maWcgd2lsbCBiZSBjYWxsZWQNCmFuZCBkdXR5IGN5Y2xlIGlz IGNvbmZpZ3VyZWQsIE9OQ0UgZHV0eSBjeWNsZSBpcyBjb25maWd1cmVkLCB0aGUgUFdNIGNoYW5u ZWwNCndpbGwgc3RhcnQgb3V0cHV0IHNpZ25hbHMsIHRoZSBUUE0gaGFyZHdhcmUgaGFzIHBvbGFy aXR5IHNldHRpbmcgcmVnaXN0ZXIsIHdoZW4NCnRoZXkgYXJlIGNsZWFyLCB0aGUgY2hhbm5lbCB3 aWxsIGJlIGRpc2FibGVkLCBzbyBiZWxvdyBpcyB3aGF0IEkgZGlkIGluIFYyOg0KDQppZiBvbmUg Y2hhbm5lbCBpcyBkaXNhYmxlZCwgdGhlIHBvbGFyaXR5IHdpbGwgYmUgc2V0IHRvIDAgdG8gZGlz YWJsZSB0aGUgY2hhbm5lbCwgYW5kDQp0aGUgY29uZmlnIHdpbGwgYmUgc2F2ZWQuIEFuZCBjb25m aWcgd2lsbCBiZSByZXN0b3JlZCBpZiBjaGFubmVsIGdvdCBlbmFibGVkIGFnYWluLg0KQW5kIGlm IGFsbCBjaGFubmVscyBhcmUgZGlzYWJsZWQsIHRoZSBUUE0gY291bnRlciB3aWxsIGJlIHN0b3Bw ZWQsIGlmIGFueSBjaGFubmVsDQppcyBhY3RpdmUsIFRQTSBjb3VudGVyIHdpbGwgcmVtYWluIHJ1 bm5pbmcuDQoNCj4gDQo+ID4gPiA+ICsJcmV0dXJuIDA7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsN Cj4gPiA+ID4gK3N0YXRpYyBpbnQgdHBtX3B3bV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikgew0KPiA+ID4gPiArCXN0cnVjdCB0cG1fcHdtX2NoaXAgKnRwbSA9IHBsYXRmb3Jt X2dldF9kcnZkYXRhKHBkZXYpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJcmV0dXJuIHB3bWNoaXBf cmVtb3ZlKCZ0cG0tPmNoaXApOyB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBpbnQgX19t YXliZV91bnVzZWQgdHBtX3B3bV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikgew0KPiA+ID4g PiArCXN0cnVjdCB0cG1fcHdtX2NoaXAgKnRwbSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHRwbS0+Y2xrKTsNCj4gPiA+ DQo+ID4gPiBJZiB0aGUgUFdNIGlzIGluIHVzZSwgaXQgc2hvdWxkbid0IHN0b3Agb24gc3VzcGVu ZC4NCj4gPg0KPiA+IEkgdGhpbmsgUFdNIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHN1c3BlbmQs IGlmIGEgZGV2aWNlIGlzIHN1c3BlbmRlZCwNCj4gPiBidXQgUFdNIGlzIHN0aWxsIGVuYWJsZWQs IHdlIHdpbGwgc2VlIGJhY2tsaWdodCBpcyBlbmFibGVkLiBUaGlzIGlzDQo+ID4gd2VpcmQuIFVu bGVzcyB0aGUgYmFja2xpZ2h0IGRyaXZlciB3aWxsIGd1YXJhbnRlZSB0aGF0IHB3bSBpcyBkaXNh YmxlZA0KPiBiZWZvcmUgc3VzcGVuZD8NCj4gDQo+IE5vLCBvbiBzdXNwZW5kIGl0J3MgdGhlIHJl c3BvbnNpYmlsaXR5IG9mIHRoZSBiYWNrbGlnaHQgZHJpdmVyIHRvIGRpc2FibGUgdGhlDQo+IHB3 bS4gT3RoZXJ3aXNlIHRoZSBQV00gY2hhbmdlcyBpdHMgYmVoYXZpb3VyIHdpdGhvdXQgdGhlIGNv bnN1bWVyJ3MNCj4gY29uc2VudCB3aGljaCBkZXBlbmRpbmcgb24gdGhlIHB1cnBvc2Ugb2YgdGhl IFBXTSBpcyBiYWQuDQoNClNvLCBwd20ncyBjb25zdW1lciB3aWxsIGRpc2FibGUgdGhlIFBXTSBj aGFubmVsIHdoZW4gc3VzcGVuZCwgc2luY2UgdGhlIFBXTQ0KY2xvY2sgaXMgZW5hYmxlZCBhZnRl ciBwcm9iZWQgYW5kIGtlcHQgYWx3YXlzIGVuYWJsZWQsIHRoZW4gZGlzYWJsZSBpdCBpbiBQV00g ZHJpdmVyDQphbHNvIG1ha2Ugc2Vuc2U/IEFzIGFsbCBjb25zdW1lcnMgd2lsbCBkaXNhYmxlIHRo ZSBQV00gY2hhbm5lbHMgYmVmb3JlIFBXTSBkcml2ZXINCnN1c3BlbmQ/DQoNCk1ha2luZyBjbG9j ayBQV00gY2xvY2sgYWx3YXlzIGVuYWJsZWQgYWZ0ZXIgcHJvYmVkIGlzIHRvIG1ha2UgcmVnaXN0 ZXIgd3JpdGUvcmVhZCBzaW1wbGUsDQpvdGhlcndpc2UsIHdlIGhhdmUgdG8gYWRkIGNoZWNrIGFu ZCB0aW1lb3V0IGZvciBldmVyeSBUUE0gcmVnaXN0ZXIgd3JpdGUsIGlmIGVuYWJsZSB0aGUgY2xv Y2ssDQpkbyByZWdpc3RlciB3cml0ZSBhbmQgZGlzYWJsZSB0aGUgY2xvY2sgaW1tZWRpYXRlbHks IEkgc2F3IHJlZ2lzdGVyIHZhbHVlIGlzIE5PVCBjaGFuZ2VkIGF0IGFsbCwNCkkgZ3Vlc3MgdGhl IFRQTSBjbG9jayBpcyB0b28gc2xvdyBjb21wYXJlZCB3aXRoIEFSTSBjbG9jay4gDQoNCkNhbiB5 b3UgcmV2aWV3IHRoZSBWMiBwYXRjaCBzZXQgYW5kIHByb3ZpZGUgY29tbWVudHMsIHRoZW4gSSB3 aWxsIGZpeCB0aGVtIHRvZ2V0aGVyIGFuZCBzZW5kaW5nDQpBIFYzLg0KDQpUaGFua3MuDQpBbnNv bg0KDQo+IA0KPiBCZXN0IHJlZ2FyZHMNCj4gVXdlDQo+IA0KPiAtLQ0KPiBQZW5ndXRyb25peCBl LksuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVd2UgS2xlaW5lLUvDtm5pZyAgICAgICAg ICAgIHwNCj4gSW5kdXN0cmlhbCBMaW51eCBTb2x1dGlvbnMgICAgICAgICAgICAgICAgIHwNCj4g aHR0cHM6Ly9lbWVhMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRw JTNBJTJGJTJGd3cNCj4gdy5wZW5ndXRyb25peC5kZSUyRiZhbXA7ZGF0YT0wMiU3QzAxJTdDYW5z b24uaHVhbmclNDBueHAuY29tJTcNCj4gQ2Y1MTg3MzExYWM3MzRhY2I5N2Y3MDhkNmE3OGU3NzBj JTdDNjg2ZWExZDNiYzJiNGM2ZmE5MmNkOTljNWMzMDENCj4gNjM1JTdDMCU3QzAlN0M2MzY4ODA2 Mjc2NTg0NTQzNzQmYW1wO3NkYXRhPXJwQSUyRjE5bmpUaWFZS2NUVHMNCj4gTXd6ZXhwVG5VN3dn NWoyUFZqV0M0T3VPZEUlM0QmYW1wO3Jlc2VydmVkPTAgIHwNCg==