From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kishon Vijay Abraham I Subject: Re: [PATCH v2] extcon: Split out extcon header file for consumer and provider device Date: Mon, 23 Oct 2017 10:35:54 +0530 Message-ID: References: <1507630671-23536-1-git-send-email-cw00.choi@samsung.com> <59DEE429.2000608@samsung.com> <59E6B90F.8000808@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <59E6B90F.8000808@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Chanwoo Choi Cc: balbi@kernel.org, linux-usb@vger.kernel.org, heiko@sntech.de, b.zolnierkie@samsung.com, gregkh@linuxfoundation.org, yoshihiro.shimoda.uh@renesas.com, linux-pm@vger.kernel.org, sre@kernel.org, krzk@kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, wens@csie.org, myungjoo.ham@samsung.com, chanwoo@kernel.org, maxime.ripard@free-electrons.com, lee.jones@linaro.org, linux-arm-kernel@lists.infradead.org List-Id: linux-pm@vger.kernel.org CgpPbiBXZWRuZXNkYXkgMTggT2N0b2JlciAyMDE3IDA3OjQ0IEFNLCBDaGFud29vIENob2kgd3Jv dGU6Cj4gR2VudGx5IFBpbmcuCj4gCj4gRGVhciBLaXNob24sCj4gCj4gQ291bGQgeW91IHBsZWFz ZSByZXZpZXcgdGhpcyBwYXRjaCBmb3IgJ2RyaXZlcnMvcGh5LyonPwoKc29ycnkgZm9yIHRoZSBk ZWxheS4uIGhlcmUgaXQgaXMKCkFja2VkLWJ5OiBLaXNob24gVmlqYXkgQWJyYWhhbSBJIDxraXNo b25AdGkuY29tPgo+IAo+IFJlZ2FyZHMsCj4gQ2hhbndvbyBDaG9pCj4gCj4gT24gMjAxN+uFhCAx MOyblCAxMuydvCAxMjo0MCwgQ2hhbndvbyBDaG9pIHdyb3RlOgo+PiBEZWFyIEtpc2hvbiwKPj4K Pj4gQ291bGQgeW91IHBsZWFzZSByZXZpZXcgdGhpcyBwYXRjaD8KPj4gQWZ0ZXIgdGhhdCwgSSds bCBtYWtlIHRoZSBpbW11dGFibGUgYnJhbmQgYW5kIHRoZW4gc2VuZCB0aGUgcHVsbCByZXF1ZXN0 Cj4+IGZvciBwb3dlcl9zdXBwbHksIG1mZCwgcGh5LCB1c2IgYW5kIGV4dGNvbiBmcmFtZXdvcmsu Cj4+Cj4+IE9uIDIwMTfrhYQgMTDsm5QgMTDsnbwgMTk6MTcsIENoYW53b28gQ2hvaSB3cm90ZToK Pj4+IFRoZSBleHRjb24gaGFzIHR3byB0eXBlIG9mIGV4dGNvbiBkZXZpY2VzIGFzIGZvbGxvd2lu Zy4KPj4+IC0gJ2V4dGNvbiBwcm92aWRlciBkZWl2Y2UnIGFkZHMgbmV3IGV4dGNvbiBkZXZpY2Ug YW5kIGRldGVjdCB0aGUKPj4+ICAgIHN0YXRlL3Byb3BlcnRpZXMgb2YgZXh0ZXJuYWwgY29ubmVj dG9yLiBBbHNvLCBpdCBub3RpZmllcyB0aGUKPj4+ICAgIHN0YXRlL3Byb3BlcnRpZXMgdG8gdGhl IGV4dGNvbiBjb25zdW1lciBkZXZpY2UuCj4+PiAtICdleHRjb24gY29uc3VtZXIgZGV2aWNlJyBn ZXRzIHRoZSBjaGFuZ2Ugc3RhdGUvcHJvcGVydGllcwo+Pj4gICAgZnJvbSBleHRjb24gcHJvdmlk ZXIgZGV2aWNlLgo+Pj4gUHJpb3IgdG8gdGhhdCwgaW5jbHVkZS9saW51eC9leHRjb24uaCBjb250 YWlucyBhbGwgZXhwb3J0ZWQgQVBJIGZvcgo+Pj4gYm90aCBwcm92aWRlciBhbmQgY29uc3VtZXIg ZGV2aWNlIGRyaXZlci4gVG8gY2xhcmlmeSB0aGUgbWVhbmluZyBvZgo+Pj4gaGVhZGVyIGZpbGUg YW5kIHRvIHJlbW92ZSB0aGUgd3JvbmcgdXNlLWNhc2Ugb24gY29uc3VtZXIgZGV2aWNlLAo+Pj4g dGhpcyBwYXRjaCBzZXBhcmF0ZXMgaW50byBleHRjb24uaCBhbmQgZXh0Y29uLXByb3ZpZGVyLmgu Cj4+Pgo+Pj4gW0Rlc2NyaXB0aW9uIGZvciBpbmNsdWRlL2xpbnV4L3tleHRjb24uaHxleHRjb24t cHJvdmlkZXIuaH1dCj4+PiAtIGV4dGNvbi5oIGluY2x1ZGVzIHRoZSBleHRjb24gQVBJIGFuZCBk YXRhIHN0cnVjdHVyZSBmb3IgZXh0Y29uIGNvbnN1bWVyCj4+PiAgIGRldmljZSBkcml2ZXIuIFRo aXMgaGVhZGVyIGZpbGUgY29udGFpbnMgdGhlIGZvbGxvd2luZyBBUElzOgo+Pj4gICA6IFJlZ2lz dGVyL3VucmVnaXN0ZXIgdGhlIG5vdGlmaWVyIHRvIGNhdGNoIHRoZSBjaGFuZ2Ugb2YgZXh0Y29u IGRldmljZQo+Pj4gICA6IEdldCB0aGUgZXh0Y29uIGRldmljZSBpbnN0YW5jZQo+Pj4gICA6IEdl dCB0aGUgZXh0Y29uIGRldmljZSBuYW1lCj4+PiAgIDogR2V0IHRoZSBzdGF0ZSBvZiBlYWNoIGV4 dGVybmFsIGNvbm5lY3Rvcgo+Pj4gICA6IEdldCB0aGUgcHJvcGVydHkgdmFsdWUgb2YgZWFjaCBl eHRlcm5hbCBjb25uZWN0b3IKPj4+ICAgOiBHZXQgdGhlIHByb3BlcnR5IGNhcGFiaWxpdHkgb2Yg ZWFjaCBleHRlcm5hbCBjb25uZWN0b3IKPj4+Cj4+PiAtIGV4dGNvbi1wcm92aWRlci5oIGluY2x1 ZGVzIHRoZSBleHRjb24gQVBJIGFuZCBkYXRhIHN0cnVjdHVyZSBmb3IgZXh0Y29uCj4+PiAgIHBy b3ZpZGVyIGRldmljZSBkcml2ZXIuIFRoaXMgaGVhZGVyIGZpbGUgY29udGFpbnMgdGhlIGZvbGxv d2luZyBBUElzOgo+Pj4gICA6IEluY2x1ZGUgJ2luY2x1ZGUvbGludXgvZXh0Y29uLmgnCj4+PiAg IDogQWxsb2NhdGUgdGhlIG1lbW9yeSBmb3IgZXh0Y29uIGRldmljZSBpbnN0YW5jZQo+Pj4gICA6 IFJlZ2lzdGVyL3VucmVnaXN0ZXIgZXh0Y29uIGRldmljZQo+Pj4gICA6IFNldCB0aGUgc3RhdGUg b2YgZWFjaCBleHRlcm5hbCBjb25uZWN0b3IKPj4+ICAgOiBTZXQgdGhlIHByb3BlcnR5IHZhbHVl IG9mIGVhY2ggZXh0ZXJuYWwgY29ubmVjdG9yCj4+PiAgIDogU2V0IHRoZSBwcm9wZXJ0eSBjYXBh YmlsaXR5IG9mIGVhY2ggZXh0ZXJuYWwgY29ubmVjdG9yCj4+Pgo+Pj4gQ2M6IEZlbGlwZSBCYWxi aSA8YmFsYmlAa2VybmVsLm9yZz4KPj4+IENjOiBLaXNob24gVmlqYXkgQWJyYWhhbSBJIDxraXNo b25AdGkuY29tPgo+Pj4gQ2M6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRh dGlvbi5vcmc+Cj4+PiBBY2tlZC1ieTogU2ViYXN0aWFuIFJlaWNoZWwgPHNlYmFzdGlhbi5yZWlj aGVsQGNvbGxhYm9yYS5jby51az4KPj4+IEFja2VkLWJ5OiBDaGVuLVl1IFRzYWkgPHdlbnNAY3Np ZS5vcmc+Cj4+PiBBY2tlZC1ieTogQ2hhcmxlcyBLZWVwYXggPGNrZWVwYXhAb3BlbnNvdXJjZS5j aXJydXMuY29tPgo+Pj4gQWNrZWQtYnk6IExlZSBKb25lcyA8bGVlLmpvbmVzQGxpbmFyby5vcmc+ Cj4+PiBTaWduZWQtb2ZmLWJ5OiBDaGFud29vIENob2kgPGN3MDAuY2hvaUBzYW1zdW5nLmNvbT4K Pj4+IC0tLQo+Pj4gQ2hhbmdlcyBmcm9tIHYxOgo+Pj4gLSBEb24ndCB0b3VjaCBkcml2ZXJzL3Vz Yi9yZW5lc2FzX3VzYmhzL2NvbW1vbi5oLgo+Pj4gLSBBZGQgYWNrZWQtYnkgZnJvbSBTZWJhc3Rp YW4gUmVpY2hlbCAoZm9yIGRyaXZlcnMvcG93ZXIvc3VwcGx5LykKPj4+IC0gQWRkIGFja2VkLWJ5 IGZyb20gQ2hlbi1ZdSBUc2FpIChmb3IgcGh5LXN1bjRpLXVzYi5jICYgZXh0Y29uLWF4cDI4OC5j KQo+Pj4gLSBBZGQgYWNrZWQtYnkgZnJvbSBDaGFybGVzIEtlZXBheCAoZm9yIGRyaXZlcnMvZXh0 Y29uL2V4dGNvbi1hcml6b25hLmMpCj4+PiAtIEFkZCBhY2tlZC1ieSBmcm9tIExlZSBKb25lcyAo Zm8gaW5jbHVkZS9saW51eC9tZmQvcGFsbWFzLmgpCj4+Pgo+Pj4gIGRyaXZlcnMvZXh0Y29uL2V4 dGNvbi1hZGMtamFjay5jICAgICAgICAgICAgICB8ICAgMiArLQo+Pj4gIGRyaXZlcnMvZXh0Y29u L2V4dGNvbi1hcml6b25hLmMgICAgICAgICAgICAgICB8ICAgMiArLQo+Pj4gIGRyaXZlcnMvZXh0 Y29uL2V4dGNvbi1heHAyODguYyAgICAgICAgICAgICAgICB8ICAgMiArLQo+Pj4gIGRyaXZlcnMv ZXh0Y29uL2V4dGNvbi1ncGlvLmMgICAgICAgICAgICAgICAgICB8ICAgMiArLQo+Pj4gIGRyaXZl cnMvZXh0Y29uL2V4dGNvbi1pbnRlbC1jaHQtd2MuYyAgICAgICAgICB8ICAgMiArLQo+Pj4gIGRy aXZlcnMvZXh0Y29uL2V4dGNvbi1pbnRlbC1pbnQzNDk2LmMgICAgICAgICB8ICAgMiArLQo+Pj4g IGRyaXZlcnMvZXh0Y29uL2V4dGNvbi1tYXgxNDU3Ny5jICAgICAgICAgICAgICB8ICAgMiArLQo+ Pj4gIGRyaXZlcnMvZXh0Y29uL2V4dGNvbi1tYXgzMzU1LmMgICAgICAgICAgICAgICB8ICAgMiAr LQo+Pj4gIGRyaXZlcnMvZXh0Y29uL2V4dGNvbi1tYXg3NzY5My5jICAgICAgICAgICAgICB8ICAg MiArLQo+Pj4gIGRyaXZlcnMvZXh0Y29uL2V4dGNvbi1tYXg3Nzg0My5jICAgICAgICAgICAgICB8 ICAgMiArLQo+Pj4gIGRyaXZlcnMvZXh0Y29uL2V4dGNvbi1tYXg4OTk3LmMgICAgICAgICAgICAg ICB8ICAgMiArLQo+Pj4gIGRyaXZlcnMvZXh0Y29uL2V4dGNvbi1xY29tLXNwbWktbWlzYy5jICAg ICAgICB8ICAgMiArLQo+Pj4gIGRyaXZlcnMvZXh0Y29uL2V4dGNvbi1ydDg5NzNhLmMgICAgICAg ICAgICAgICB8ICAgMiArLQo+Pj4gIGRyaXZlcnMvZXh0Y29uL2V4dGNvbi1zbTU1MDIuYyAgICAg ICAgICAgICAgICB8ICAgMiArLQo+Pj4gIGRyaXZlcnMvZXh0Y29uL2V4dGNvbi11c2ItZ3Bpby5j ICAgICAgICAgICAgICB8ICAgMiArLQo+Pj4gIGRyaXZlcnMvZXh0Y29uL2V4dGNvbi11c2JjLWNy b3MtZWMuYyAgICAgICAgICB8ICAgMiArLQo+Pj4gIGRyaXZlcnMvZXh0Y29uL2V4dGNvbi5oICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQo+Pj4gIGRyaXZlcnMvcGh5L2FsbHdpbm5lci9w aHktc3VuNGktdXNiLmMgICAgICAgICB8ICAgMiArLQo+Pj4gIGRyaXZlcnMvcGh5L2Jyb2FkY29t L3BoeS1iY20tbnMyLXVzYmRyZC5jICAgICB8ICAgMiArLQo+Pj4gIGRyaXZlcnMvcGh5L3JlbmVz YXMvcGh5LXJjYXItZ2VuMy11c2IyLmMgICAgICB8ICAgMiArLQo+Pj4gIGRyaXZlcnMvcGh5L3Jv Y2tjaGlwL3BoeS1yb2NrY2hpcC1pbm5vLXVzYjIuYyB8ICAgMiArLQo+Pj4gIGRyaXZlcnMvcG93 ZXIvc3VwcGx5L3Fjb21fc21iYi5jICAgICAgICAgICAgICB8ICAgMiArLQo+Pj4gIGRyaXZlcnMv dXNiL2dhZGdldC91ZGMvcmVuZXNhc191c2IzLmMgICAgICAgICB8ICAgMiArLQo+Pj4gIGRyaXZl cnMvdXNiL3BoeS9waHktdGFodm8uYyAgICAgICAgICAgICAgICAgICB8ICAgMiArLQo+Pj4gIGlu Y2x1ZGUvbGludXgvZXh0Y29uLXByb3ZpZGVyLmggICAgICAgICAgICAgICB8IDE0MiArKysrKysr KysrKysrKysrKysrKysrKysrKwo+Pj4gIGluY2x1ZGUvbGludXgvZXh0Y29uLmggICAgICAgICAg ICAgICAgICAgICAgICB8IDEwOSArLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4gIGluY2x1ZGUvbGlu dXgvbWZkL3BhbG1hcy5oICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQo+Pj4gIDI3IGZpbGVz IGNoYW5nZWQsIDE3MiBpbnNlcnRpb25zKCspLCAxMjkgZGVsZXRpb25zKC0pCj4+PiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvZXh0Y29uLXByb3ZpZGVyLmgKPj4+Cj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9leHRjb24vZXh0Y29uLWFkYy1qYWNrLmMgYi9kcml2ZXJzL2V4dGNv bi9leHRjb24tYWRjLWphY2suYwo+Pj4gaW5kZXggNmY2NTM3YWIwYTc5Li4zODc3ZDg2Yzc0NmEg MTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2V4dGNvbi9leHRjb24tYWRjLWphY2suYwo+Pj4gKysr IGIvZHJpdmVycy9leHRjb24vZXh0Y29uLWFkYy1qYWNrLmMKPj4+IEBAIC0yNiw3ICsyNiw3IEBA Cj4+PiAgI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9p aW8vY29uc3VtZXIuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvZXh0Y29uL2V4dGNvbi1hZGMtamFj ay5oPgo+Pj4gLSNpbmNsdWRlIDxsaW51eC9leHRjb24uaD4KPj4+ICsjaW5jbHVkZSA8bGludXgv ZXh0Y29uLXByb3ZpZGVyLmg+Cj4+PiAgCj4+PiAgLyoqCj4+PiAgICogc3RydWN0IGFkY19qYWNr X2RhdGEgLSBpbnRlcm5hbCBkYXRhIGZvciBhZGNfamFjayBkZXZpY2UgZHJpdmVyCj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9leHRjb24vZXh0Y29uLWFyaXpvbmEuYyBiL2RyaXZlcnMvZXh0Y29u L2V4dGNvbi1hcml6b25hLmMKPj4+IGluZGV4IGY4NGRhNGExNzcyNC4uZGEwZTliYzQyNjJmIDEw MDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9leHRjb24vZXh0Y29uLWFyaXpvbmEuYwo+Pj4gKysrIGIv ZHJpdmVycy9leHRjb24vZXh0Y29uLWFyaXpvbmEuYwo+Pj4gQEAgLTI3LDcgKzI3LDcgQEAKPj4+ ICAjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9wcm9w ZXJ0eS5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KPj4+IC0j aW5jbHVkZSA8bGludXgvZXh0Y29uLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi1wcm92 aWRlci5oPgo+Pj4gIAo+Pj4gICNpbmNsdWRlIDxzb3VuZC9zb2MuaD4KPj4+ICAKPj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2V4dGNvbi9leHRjb24tYXhwMjg4LmMgYi9kcml2ZXJzL2V4dGNvbi9l eHRjb24tYXhwMjg4LmMKPj4+IGluZGV4IGY0ZmQwM2U1OGUzNy4uOTgxZmJhNTZiYzE4IDEwMDY0 NAo+Pj4gLS0tIGEvZHJpdmVycy9leHRjb24vZXh0Y29uLWF4cDI4OC5jCj4+PiArKysgYi9kcml2 ZXJzL2V4dGNvbi9leHRjb24tYXhwMjg4LmMKPj4+IEBAIC0yMiw3ICsyMiw3IEBACj4+PiAgI2lu Y2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9wcm9w ZXJ0eS5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9ub3RpZmllci5oPgo+Pj4gLSNpbmNsdWRlIDxs aW51eC9leHRjb24uaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvZXh0Y29uLXByb3ZpZGVyLmg+Cj4+ PiAgI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9ncGlvLmg+ Cj4+PiAgI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KPj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2V4dGNvbi9leHRjb24tZ3Bpby5jIGIvZHJpdmVycy9leHRjb24vZXh0Y29uLWdwaW8u Ywo+Pj4gaW5kZXggZWJlZDIyZjIyZDc1Li5hYjc3MGFkY2NhN2UgMTAwNjQ0Cj4+PiAtLS0gYS9k cml2ZXJzL2V4dGNvbi9leHRjb24tZ3Bpby5jCj4+PiArKysgYi9kcml2ZXJzL2V4dGNvbi9leHRj b24tZ3Bpby5jCj4+PiBAQCAtMTcsNyArMTcsNyBAQAo+Pj4gICAqIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4+PiAgICovCj4+PiAgCj4+PiAtI2luY2x1ZGUg PGxpbnV4L2V4dGNvbi5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9leHRjb24tcHJvdmlkZXIuaD4K Pj4+ICAjaW5jbHVkZSA8bGludXgvZXh0Y29uL2V4dGNvbi1ncGlvLmg+Cj4+PiAgI2luY2x1ZGUg PGxpbnV4L2dwaW8uaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgo+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZXh0Y29uL2V4dGNvbi1pbnRlbC1jaHQtd2MuYyBiL2RyaXZl cnMvZXh0Y29uL2V4dGNvbi1pbnRlbC1jaHQtd2MuYwo+Pj4gaW5kZXggOTFhMDAyMzA3NGFmLi43 YzRiYzhjNDRjM2YgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2V4dGNvbi9leHRjb24taW50ZWwt Y2h0LXdjLmMKPj4+ICsrKyBiL2RyaXZlcnMvZXh0Y29uL2V4dGNvbi1pbnRlbC1jaHQtd2MuYwo+ Pj4gQEAgLTE1LDcgKzE1LDcgQEAKPj4+ICAgKiBtb3JlIGRldGFpbHMuCj4+PiAgICovCj4+PiAg Cj4+PiAtI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9leHRj b24tcHJvdmlkZXIuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4+PiAgI2lu Y2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9tZmQvaW50ZWxfc29j X3BtaWMuaD4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2V4dGNvbi9leHRjb24taW50ZWwtaW50 MzQ5Ni5jIGIvZHJpdmVycy9leHRjb24vZXh0Y29uLWludGVsLWludDM0OTYuYwo+Pj4gaW5kZXgg MWE0NWU3NDU3MTdkLi5jODY5MWI1YTljYjAgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2V4dGNv bi9leHRjb24taW50ZWwtaW50MzQ5Ni5jCj4+PiArKysgYi9kcml2ZXJzL2V4dGNvbi9leHRjb24t aW50ZWwtaW50MzQ5Ni5jCj4+PiBAQCAtMTksNyArMTksNyBAQAo+Pj4gICAqLwo+Pj4gIAo+Pj4g ICNpbmNsdWRlIDxsaW51eC9hY3BpLmg+Cj4+PiAtI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi5oPgo+ Pj4gKyNpbmNsdWRlIDxsaW51eC9leHRjb24tcHJvdmlkZXIuaD4KPj4+ICAjaW5jbHVkZSA8bGlu dXgvZ3Bpby5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPj4+ICAjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9leHRjb24vZXh0Y29u LW1heDE0NTc3LmMgYi9kcml2ZXJzL2V4dGNvbi9leHRjb24tbWF4MTQ1NzcuYwo+Pj4gaW5kZXgg ZjY0MTRiN2ZhNWJjLi42YzJjOTk5NmViNzEgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2V4dGNv bi9leHRjb24tbWF4MTQ1NzcuYwo+Pj4gKysrIGIvZHJpdmVycy9leHRjb24vZXh0Y29uLW1heDE0 NTc3LmMKPj4+IEBAIC0yMyw3ICsyMyw3IEBACj4+PiAgI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3Jt X2RldmljZS5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9tZmQvbWF4MTQ1NzcuaD4KPj4+ICAjaW5j bHVkZSA8bGludXgvbWZkL21heDE0NTc3LXByaXZhdGUuaD4KPj4+IC0jaW5jbHVkZSA8bGludXgv ZXh0Y29uLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi1wcm92aWRlci5oPgo+Pj4gIAo+ Pj4gICNkZWZpbmUJREVMQVlfTVNfREVGQVVMVAkJMTcwMDAJCS8qIHVuaXQ6IG1pbGxpc2Vjb25k ICovCj4+PiAgCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9leHRjb24vZXh0Y29uLW1heDMzNTUu YyBiL2RyaXZlcnMvZXh0Y29uL2V4dGNvbi1tYXgzMzU1LmMKPj4+IGluZGV4IDUzM2UxNmE5NTJi OC4uMGFhNDEwODM2ZjRlIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9leHRjb24vZXh0Y29uLW1h eDMzNTUuYwo+Pj4gKysrIGIvZHJpdmVycy9leHRjb24vZXh0Y29uLW1heDMzNTUuYwo+Pj4gQEAg LTksNyArOSw3IEBACj4+PiAgICogbWF5IGJlIGNvcGllZCwgZGlzdHJpYnV0ZWQsIGFuZCBtb2Rp ZmllZCB1bmRlciB0aG9zZSB0ZXJtcy4KPj4+ICAgKi8KPj4+ICAKPj4+IC0jaW5jbHVkZSA8bGlu dXgvZXh0Y29uLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi1wcm92aWRlci5oPgo+Pj4g ICNpbmNsdWRlIDxsaW51eC9ncGlvLmg+Cj4+PiAgI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3Vt ZXIuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9leHRjb24vZXh0Y29uLW1heDc3NjkzLmMgYi9kcml2ZXJzL2V4dGNvbi9leHRjb24t bWF4Nzc2OTMuYwo+Pj4gaW5kZXggN2E1ODU2ODA5MDQ3Li42NDM0MTEwNjZhZDkgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL2V4dGNvbi9leHRjb24tbWF4Nzc2OTMuYwo+Pj4gKysrIGIvZHJpdmVy cy9leHRjb24vZXh0Y29uLW1heDc3NjkzLmMKPj4+IEBAIC0yNiw3ICsyNiw3IEBACj4+PiAgI2lu Y2x1ZGUgPGxpbnV4L21mZC9tYXg3NzY5My5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9tZmQvbWF4 Nzc2OTMtY29tbW9uLmg+Cj4+PiAgI2luY2x1ZGUgPGxpbnV4L21mZC9tYXg3NzY5My1wcml2YXRl Lmg+Cj4+PiAtI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9l eHRjb24tcHJvdmlkZXIuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4+PiAgI2lu Y2x1ZGUgPGxpbnV4L2lycWRvbWFpbi5oPgo+Pj4gIAo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv ZXh0Y29uL2V4dGNvbi1tYXg3Nzg0My5jIGIvZHJpdmVycy9leHRjb24vZXh0Y29uLW1heDc3ODQz LmMKPj4+IGluZGV4IDZlNzIyZDU1MmNmMS4uMjhmMjUxZmYwZmEyIDEwMDY0NAo+Pj4gLS0tIGEv ZHJpdmVycy9leHRjb24vZXh0Y29uLW1heDc3ODQzLmMKPj4+ICsrKyBiL2RyaXZlcnMvZXh0Y29u L2V4dGNvbi1tYXg3Nzg0My5jCj4+PiBAQCAtMTEsNyArMTEsNyBAQAo+Pj4gICAqIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4+PiAgICovCj4+PiAgCj4+PiAtI2luY2x1ZGUg PGxpbnV4L2V4dGNvbi5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9leHRjb24tcHJvdmlkZXIuaD4K Pj4+ICAjaW5jbHVkZSA8bGludXgvaTJjLmg+Cj4+PiAgI2luY2x1ZGUgPGxpbnV4L2ludGVycnVw dC5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2V4dGNvbi9leHRjb24tbWF4ODk5Ny5jIGIvZHJpdmVycy9leHRjb24vZXh0Y29uLW1heDg5 OTcuYwo+Pj4gaW5kZXggNGEwNjEyZmI5YzA3Li44MTUyNzkwZDcyZTEgMTAwNjQ0Cj4+PiAtLS0g YS9kcml2ZXJzL2V4dGNvbi9leHRjb24tbWF4ODk5Ny5jCj4+PiArKysgYi9kcml2ZXJzL2V4dGNv bi9leHRjb24tbWF4ODk5Ny5jCj4+PiBAQCAtMjUsNyArMjUsNyBAQAo+Pj4gICNpbmNsdWRlIDxs aW51eC9rb2JqZWN0Lmg+Cj4+PiAgI2luY2x1ZGUgPGxpbnV4L21mZC9tYXg4OTk3Lmg+Cj4+PiAg I2luY2x1ZGUgPGxpbnV4L21mZC9tYXg4OTk3LXByaXZhdGUuaD4KPj4+IC0jaW5jbHVkZSA8bGlu dXgvZXh0Y29uLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi1wcm92aWRlci5oPgo+Pj4g ICNpbmNsdWRlIDxsaW51eC9pcnFkb21haW4uaD4KPj4+ICAKPj4+ICAjZGVmaW5lCURFVl9OQU1F CQkJIm1heDg5OTctbXVpYyIKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2V4dGNvbi9leHRjb24t cWNvbS1zcG1pLW1pc2MuYyBiL2RyaXZlcnMvZXh0Y29uL2V4dGNvbi1xY29tLXNwbWktbWlzYy5j Cj4+PiBpbmRleCBiOGNkZTA5NmE4MDguLjY2MGJiZjE2M2JmNSAxMDA2NDQKPj4+IC0tLSBhL2Ry aXZlcnMvZXh0Y29uL2V4dGNvbi1xY29tLXNwbWktbWlzYy5jCj4+PiArKysgYi9kcml2ZXJzL2V4 dGNvbi9leHRjb24tcWNvbS1zcG1pLW1pc2MuYwo+Pj4gQEAgLTE1LDcgKzE1LDcgQEAKPj4+ICAg KiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+Pj4gICAqLwo+ Pj4gIAo+Pj4gLSNpbmNsdWRlIDxsaW51eC9leHRjb24uaD4KPj4+ICsjaW5jbHVkZSA8bGludXgv ZXh0Y29uLXByb3ZpZGVyLmg+Cj4+PiAgI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KPj4+ICAjaW5j bHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4+PiAgI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZXh0Y29uL2V4dGNvbi1ydDg5NzNhLmMgYi9kcml2ZXJz L2V4dGNvbi9leHRjb24tcnQ4OTczYS5jCj4+PiBpbmRleCBlYWEzNTVlN2Q5ZTQuLmUwNTliZDVm MjA0MSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZXh0Y29uL2V4dGNvbi1ydDg5NzNhLmMKPj4+ ICsrKyBiL2RyaXZlcnMvZXh0Y29uL2V4dGNvbi1ydDg5NzNhLmMKPj4+IEBAIC0yMCw3ICsyMCw3 IEBACj4+PiAgI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+Pj4gICNpbmNsdWRl IDxsaW51eC9yZWdtYXAuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+Pj4gLSNpbmNs dWRlIDxsaW51eC9leHRjb24uaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvZXh0Y29uLXByb3ZpZGVy Lmg+Cj4+PiAgCj4+PiAgI2luY2x1ZGUgImV4dGNvbi1ydDg5NzNhLmgiCj4+PiAgCj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9leHRjb24vZXh0Y29uLXNtNTUwMi5jIGIvZHJpdmVycy9leHRjb24v ZXh0Y29uLXNtNTUwMi5jCj4+PiBpbmRleCAxMDZlZjAyOTdiNTMuLjBjZmI1YTNlZmRmNiAxMDA2 NDQKPj4+IC0tLSBhL2RyaXZlcnMvZXh0Y29uL2V4dGNvbi1zbTU1MDIuYwo+Pj4gKysrIGIvZHJp dmVycy9leHRjb24vZXh0Y29uLXNtNTUwMi5jCj4+PiBAQCAtMTksNyArMTksNyBAQAo+Pj4gICNp bmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvcmVn bWFwLmg+Cj4+PiAgI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPj4+IC0jaW5jbHVkZSA8bGludXgv ZXh0Y29uLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi1wcm92aWRlci5oPgo+Pj4gIAo+ Pj4gICNpbmNsdWRlICJleHRjb24tc201NTAyLmgiCj4+PiAgCj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9leHRjb24vZXh0Y29uLXVzYi1ncGlvLmMgYi9kcml2ZXJzL2V4dGNvbi9leHRjb24tdXNi LWdwaW8uYwo+Pj4gaW5kZXggOWM5MjViMDViN2FhLi41Mzc2Mjg2NGE5ZjcgMTAwNjQ0Cj4+PiAt LS0gYS9kcml2ZXJzL2V4dGNvbi9leHRjb24tdXNiLWdwaW8uYwo+Pj4gKysrIGIvZHJpdmVycy9l eHRjb24vZXh0Y29uLXVzYi1ncGlvLmMKPj4+IEBAIC0xNCw3ICsxNCw3IEBACj4+PiAgICogR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPj4+ICAgKi8KPj4+ICAK Pj4+IC0jaW5jbHVkZSA8bGludXgvZXh0Y29uLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2V4dGNv bi1wcm92aWRlci5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9ncGlvLmg+Cj4+PiAgI2luY2x1ZGUg PGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgo+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZXh0Y29uL2V4dGNvbi11c2JjLWNyb3MtZWMuYyBiL2RyaXZl cnMvZXh0Y29uL2V4dGNvbi11c2JjLWNyb3MtZWMuYwo+Pj4gaW5kZXggNTk4OTU2ZjFkY2FlLi42 MTg3ZjczMWIyOWQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2V4dGNvbi9leHRjb24tdXNiYy1j cm9zLWVjLmMKPj4+ICsrKyBiL2RyaXZlcnMvZXh0Y29uL2V4dGNvbi11c2JjLWNyb3MtZWMuYwo+ Pj4gQEAgLTE0LDcgKzE0LDcgQEAKPj4+ICAgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgo+Pj4gICAqLwo+Pj4gIAo+Pj4gLSNpbmNsdWRlIDxsaW51eC9leHRj b24uaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvZXh0Y29uLXByb3ZpZGVyLmg+Cj4+PiAgI2luY2x1 ZGUgPGxpbnV4L2tlcm5lbC5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9tZmQvY3Jvc19lYy5oPgo+ Pj4gICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2V4 dGNvbi9leHRjb24uaCBiL2RyaXZlcnMvZXh0Y29uL2V4dGNvbi5oCj4+PiBpbmRleCBkZGRkZGNm YTA1ODcuLmNjMWI0MzZlYjY2YSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZXh0Y29uL2V4dGNv bi5oCj4+PiArKysgYi9kcml2ZXJzL2V4dGNvbi9leHRjb24uaAo+Pj4gQEAgLTEsNyArMSw3IEBA Cj4+PiAgI2lmbmRlZiBfX0xJTlVYX0VYVENPTl9JTlRFUk5BTF9IX18KPj4+ICAjZGVmaW5lIF9f TElOVVhfRVhUQ09OX0lOVEVSTkFMX0hfXwo+Pj4gIAo+Pj4gLSNpbmNsdWRlIDxsaW51eC9leHRj b24uaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvZXh0Y29uLXByb3ZpZGVyLmg+Cj4+PiAgCj4+PiAg LyoqCj4+PiAgICogc3RydWN0IGV4dGNvbl9kZXYgLSBBbiBleHRjb24gZGV2aWNlIHJlcHJlc2Vu dHMgb25lIGV4dGVybmFsIGNvbm5lY3Rvci4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9h bGx3aW5uZXIvcGh5LXN1bjRpLXVzYi5jIGIvZHJpdmVycy9waHkvYWxsd2lubmVyL3BoeS1zdW40 aS11c2IuYwo+Pj4gaW5kZXggMTE2MWUxMWZiM2NmLi5lZjM0Zjk3ZjIxNGIgMTAwNjQ0Cj4+PiAt LS0gYS9kcml2ZXJzL3BoeS9hbGx3aW5uZXIvcGh5LXN1bjRpLXVzYi5jCj4+PiArKysgYi9kcml2 ZXJzL3BoeS9hbGx3aW5uZXIvcGh5LXN1bjRpLXVzYi5jCj4+PiBAQCAtMjQsNyArMjQsNyBAQAo+ Pj4gICNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4K Pj4+ICAjaW5jbHVkZSA8bGludXgvZXJyLmg+Cj4+PiAtI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi5o Pgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9leHRjb24tcHJvdmlkZXIuaD4KPj4+ICAjaW5jbHVkZSA8 bGludXgvaW8uaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4+PiAgI2luY2x1 ZGUgPGxpbnV4L2tlcm5lbC5oPgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2Jyb2FkY29t L3BoeS1iY20tbnMyLXVzYmRyZC5jIGIvZHJpdmVycy9waHkvYnJvYWRjb20vcGh5LWJjbS1uczIt dXNiZHJkLmMKPj4+IGluZGV4IGQwOTlhMGM4Y2VlNS4uN2NlZWE1YWUyNzA0IDEwMDY0NAo+Pj4g LS0tIGEvZHJpdmVycy9waHkvYnJvYWRjb20vcGh5LWJjbS1uczItdXNiZHJkLmMKPj4+ICsrKyBi L2RyaXZlcnMvcGh5L2Jyb2FkY29tL3BoeS1iY20tbnMyLXVzYmRyZC5jCj4+PiBAQCAtMTIsNyAr MTIsNyBAQAo+Pj4gICAqLwo+Pj4gIAo+Pj4gICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+Pj4g LSNpbmNsdWRlIDxsaW51eC9leHRjb24uaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvZXh0Y29uLXBy b3ZpZGVyLmg+Cj4+PiAgI2luY2x1ZGUgPGxpbnV4L2dwaW8uaD4KPj4+ICAjaW5jbHVkZSA8bGlu dXgvZ3Bpby9jb25zdW1lci5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9waHkvcmVuZXNhcy9waHktcmNhci1nZW4zLXVzYjIuYyBiL2RyaXZl cnMvcGh5L3JlbmVzYXMvcGh5LXJjYXItZ2VuMy11c2IyLmMKPj4+IGluZGV4IDU0YzM0Mjk4YTAw MC4uYjMzZTI5OTRjY2NlIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9waHkvcmVuZXNhcy9waHkt cmNhci1nZW4zLXVzYjIuYwo+Pj4gKysrIGIvZHJpdmVycy9waHkvcmVuZXNhcy9waHktcmNhci1n ZW4zLXVzYjIuYwo+Pj4gQEAgLTEyLDcgKzEyLDcgQEAKPj4+ICAgKiBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPj4+ICAgKi8KPj4+ICAKPj4+IC0jaW5jbHVkZSA8 bGludXgvZXh0Y29uLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi1wcm92aWRlci5oPgo+ Pj4gICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvaW8u aD4KPj4+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLWlubm8tdXNiMi5jIGIvZHJpdmVycy9waHkvcm9j a2NoaXAvcGh5LXJvY2tjaGlwLWlubm8tdXNiMi5jCj4+PiBpbmRleCBlZTdjZTVlZTUzZjkuLjUw NDlkYWM3OWJkMCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2Nr Y2hpcC1pbm5vLXVzYjIuYwo+Pj4gKysrIGIvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tj aGlwLWlubm8tdXNiMi5jCj4+PiBAQCAtMTcsNyArMTcsNyBAQAo+Pj4gICNpbmNsdWRlIDxsaW51 eC9jbGsuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+Cj4+PiAgI2luY2x1 ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4+PiAtI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi5oPgo+Pj4gKyNp bmNsdWRlIDxsaW51eC9leHRjb24tcHJvdmlkZXIuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvaW50 ZXJydXB0Lmg+Cj4+PiAgI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4+PiAgI2luY2x1ZGUgPGxpbnV4 L2dwaW8vY29uc3VtZXIuaD4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL3N1cHBseS9x Y29tX3NtYmIuYyBiL2RyaXZlcnMvcG93ZXIvc3VwcGx5L3Fjb21fc21iYi5jCj4+PiBpbmRleCBm NmEwZDI0NTczMWQuLjExZGU2OTFiOWE3MSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvcG93ZXIv c3VwcGx5L3Fjb21fc21iYi5jCj4+PiArKysgYi9kcml2ZXJzL3Bvd2VyL3N1cHBseS9xY29tX3Nt YmIuYwo+Pj4gQEAgLTM0LDcgKzM0LDcgQEAKPj4+ICAjaW5jbHVkZSA8bGludXgvcG93ZXJfc3Vw cGx5Lmg+Cj4+PiAgI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+Pj4gICNpbmNsdWRlIDxsaW51 eC9zbGFiLmg+Cj4+PiAtI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi5oPgo+Pj4gKyNpbmNsdWRlIDxs aW51eC9leHRjb24tcHJvdmlkZXIuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2Ry aXZlci5oPgo+Pj4gIAo+Pj4gICNkZWZpbmUgU01CQl9DSEdfVk1BWAkJMHgwNDAKPj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL3JlbmVzYXNfdXNiMy5jIGIvZHJpdmVycy91 c2IvZ2FkZ2V0L3VkYy9yZW5lc2FzX3VzYjMuYwo+Pj4gaW5kZXggZGYzN2MxZTZlOWQ1Li44YjRk MDUxZmRiZWQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL3JlbmVzYXNf dXNiMy5jCj4+PiArKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL3JlbmVzYXNfdXNiMy5jCj4+ PiBAQCAtMTIsNyArMTIsNyBAQAo+Pj4gICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+Pj4gICNp bmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9lcnIuaD4K Pj4+IC0jaW5jbHVkZSA8bGludXgvZXh0Y29uLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2V4dGNv bi1wcm92aWRlci5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPj4+ICAjaW5j bHVkZSA8bGludXgvaW8uaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy91c2IvcGh5L3BoeS10YWh2by5jIGIvZHJpdmVycy91c2IvcGh5L3Bo eS10YWh2by5jCj4+PiBpbmRleCA4YmFiZDMxOGMwZWQuLjM1NGU4Yzk4YWYwNSAxMDA2NDQKPj4+ IC0tLSBhL2RyaXZlcnMvdXNiL3BoeS9waHktdGFodm8uYwo+Pj4gKysrIGIvZHJpdmVycy91c2Iv cGh5L3BoeS10YWh2by5jCj4+PiBAQCAtMjMsNyArMjMsNyBAQAo+Pj4gICNpbmNsdWRlIDxsaW51 eC9pby5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgv dXNiLmg+Cj4+PiAtI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51 eC9leHRjb24tcHJvdmlkZXIuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4+PiAg I2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC91c2Ivb3RnLmg+ Cj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9leHRjb24tcHJvdmlkZXIuaCBiL2luY2x1 ZGUvbGludXgvZXh0Y29uLXByb3ZpZGVyLmgKPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+PiBp bmRleCAwMDAwMDAwMDAwMDAuLjJmZWNhNTg4MWZhNwo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysr IGIvaW5jbHVkZS9saW51eC9leHRjb24tcHJvdmlkZXIuaAo+Pj4gQEAgLTAsMCArMSwxNDIgQEAK Pj4+ICsvKgo+Pj4gKyAqIEV4dGVybmFsIENvbm5lY3RvciAoZXh0Y29uKSBmcmFtZXdvcmsKPj4+ ICsgKiAtIGxpbnV4L2luY2x1ZGUvbGludXgvZXh0Y29uLXByb3ZpZGVyLmggZm9yIGV4dGNvbiBw cm92aWRlciBkZXZpY2UgZHJpdmVyLgo+Pj4gKyAqCj4+PiArICogQ29weXJpZ2h0IChDKSAyMDE3 IFNhbXN1bmcgRWxlY3Ryb25pY3MKPj4+ICsgKiBBdXRob3I6IENoYW53b28gQ2hvaSA8Y3cwMC5j aG9pQHNhbXN1bmcuY29tPgo+Pj4gKyAqCj4+PiArICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNl ZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwo+Pj4gKyAqIExpY2Vu c2UgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgYW5kCj4+PiArICogbWF5IGJlIGNvcGllZCwgZGlzdHJpYnV0ZWQsIGFuZCBtb2RpZmllZCB1 bmRlciB0aG9zZSB0ZXJtcy4KPj4+ICsgKgo+Pj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+Pj4gKyAqIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4+ PiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQo+Pj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCj4+PiArICovCj4+PiArCj4+PiArI2lmbmRlZiBfX0xJTlVYX0VYVENPTl9QUk9WSURF Ul9IX18KPj4+ICsjZGVmaW5lIF9fTElOVVhfRVhUQ09OX1BST1ZJREVSX0hfXwo+Pj4gKwo+Pj4g KyNpbmNsdWRlIDxsaW51eC9leHRjb24uaD4KPj4+ICsKPj4+ICtzdHJ1Y3QgZXh0Y29uX2RldjsK Pj4+ICsKPj4+ICsjaWYgSVNfRU5BQkxFRChDT05GSUdfRVhUQ09OKQo+Pj4gKwo+Pj4gKy8qIEZv bGxvd2luZyBBUElzIHJlZ2lzdGVyL3VucmVnaXN0ZXIgdGhlIGV4dGNvbiBkZXZpY2UuICovCj4+ PiArZXh0ZXJuIGludCBleHRjb25fZGV2X3JlZ2lzdGVyKHN0cnVjdCBleHRjb25fZGV2ICplZGV2 KTsKPj4+ICtleHRlcm4gdm9pZCBleHRjb25fZGV2X3VucmVnaXN0ZXIoc3RydWN0IGV4dGNvbl9k ZXYgKmVkZXYpOwo+Pj4gK2V4dGVybiBpbnQgZGV2bV9leHRjb25fZGV2X3JlZ2lzdGVyKHN0cnVj dCBkZXZpY2UgKmRldiwKPj4+ICsJCQkJc3RydWN0IGV4dGNvbl9kZXYgKmVkZXYpOwo+Pj4gK2V4 dGVybiB2b2lkIGRldm1fZXh0Y29uX2Rldl91bnJlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwK Pj4+ICsJCQkJc3RydWN0IGV4dGNvbl9kZXYgKmVkZXYpOwo+Pj4gKwo+Pj4gKy8qIEZvbGxvd2lu ZyBBUElzIGFsbG9jYXRlL2ZyZWUgdGhlIG1lbW9yeSBvZiB0aGUgZXh0Y29uIGRldmljZS4gKi8K Pj4+ICtleHRlcm4gc3RydWN0IGV4dGNvbl9kZXYgKmV4dGNvbl9kZXZfYWxsb2NhdGUoY29uc3Qg dW5zaWduZWQgaW50ICpjYWJsZSk7Cj4+PiArZXh0ZXJuIHZvaWQgZXh0Y29uX2Rldl9mcmVlKHN0 cnVjdCBleHRjb25fZGV2ICplZGV2KTsKPj4+ICtleHRlcm4gc3RydWN0IGV4dGNvbl9kZXYgKmRl dm1fZXh0Y29uX2Rldl9hbGxvY2F0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4+PiArCQkJCWNvbnN0 IHVuc2lnbmVkIGludCAqY2FibGUpOwo+Pj4gK2V4dGVybiB2b2lkIGRldm1fZXh0Y29uX2Rldl9m cmVlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGV4dGNvbl9kZXYgKmVkZXYpOwo+Pj4gKwo+ Pj4gKy8qIFN5bmNocm9uaXplIHRoZSBzdGF0ZSBhbmQgcHJvcGVydHkgdmFsdWUgZm9yIGVhY2gg ZXh0ZXJuYWwgY29ubmVjdG9yLiAqLwo+Pj4gK2V4dGVybiBpbnQgZXh0Y29uX3N5bmMoc3RydWN0 IGV4dGNvbl9kZXYgKmVkZXYsIHVuc2lnbmVkIGludCBpZCk7Cj4+PiArCj4+PiArLyoKPj4+ICsg KiBGb2xsb3dpbmcgQVBJcyBzZXQgdGhlIGNvbm5lY3RlZCBzdGF0ZSBvZiBlYWNoIGV4dGVybmFs IGNvbm5lY3Rvci4KPj4+ICsgKiBUaGUgJ2lkJyBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGRlZmlu ZWQgZXh0ZXJuYWwgY29ubmVjdG9yLgo+Pj4gKyAqLwo+Pj4gK2V4dGVybiBpbnQgZXh0Y29uX3Nl dF9zdGF0ZShzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldiwgdW5zaWduZWQgaW50IGlkLAo+Pj4gKwkJ CQlib29sIHN0YXRlKTsKPj4+ICtleHRlcm4gaW50IGV4dGNvbl9zZXRfc3RhdGVfc3luYyhzdHJ1 Y3QgZXh0Y29uX2RldiAqZWRldiwgdW5zaWduZWQgaW50IGlkLAo+Pj4gKwkJCQlib29sIHN0YXRl KTsKPj4+ICsKPj4+ICsvKgo+Pj4gKyAqIEZvbGxvd2luZyBBUElzIHNldCB0aGUgcHJvcGVydHkg b2YgZWFjaCBleHRlcm5hbCBjb25uZWN0b3IuCj4+PiArICogVGhlICdpZCcgYXJndW1lbnQgaW5k aWNhdGVzIHRoZSBkZWZpbmVkIGV4dGVybmFsIGNvbm5lY3Rvcgo+Pj4gKyAqIGFuZCB0aGUgJ3By b3AnIGluZGljYXRlcyB0aGUgZXh0Y29uIHByb3BlcnR5Lgo+Pj4gKyAqCj4+PiArICogQW5kIGV4 dGNvbl9zZXRfcHJvcGVydHlfY2FwYWJpbGl0eSgpIHNldCB0aGUgY2FwYWJpbGl0eSBvZiB0aGUg cHJvcGVydHkKPj4+ICsgKiBmb3IgZWFjaCBleHRlcm5hbCBjb25uZWN0b3IuIFRoZXkgYXJlIHVz ZWQgdG8gc2V0IHRoZSBjYXBhYmlsaXR5IG9mIHRoZQo+Pj4gKyAqIHByb3BlcnR5IG9mIGVhY2gg ZXh0ZXJuYWwgY29ubmVjdG9yIGJhc2VkIG9uIHRoZSBpZCBhbmQgcHJvcGVydHkuCj4+PiArICov Cj4+PiArZXh0ZXJuIGludCBleHRjb25fc2V0X3Byb3BlcnR5KHN0cnVjdCBleHRjb25fZGV2ICpl ZGV2LCB1bnNpZ25lZCBpbnQgaWQsCj4+PiArCQkJCXVuc2lnbmVkIGludCBwcm9wLAo+Pj4gKwkJ CQl1bmlvbiBleHRjb25fcHJvcGVydHlfdmFsdWUgcHJvcF92YWwpOwo+Pj4gK2V4dGVybiBpbnQg ZXh0Y29uX3NldF9wcm9wZXJ0eV9zeW5jKHN0cnVjdCBleHRjb25fZGV2ICplZGV2LCB1bnNpZ25l ZCBpbnQgaWQsCj4+PiArCQkJCXVuc2lnbmVkIGludCBwcm9wLAo+Pj4gKwkJCQl1bmlvbiBleHRj b25fcHJvcGVydHlfdmFsdWUgcHJvcF92YWwpOwo+Pj4gK2V4dGVybiBpbnQgZXh0Y29uX3NldF9w cm9wZXJ0eV9jYXBhYmlsaXR5KHN0cnVjdCBleHRjb25fZGV2ICplZGV2LAo+Pj4gKwkJCQl1bnNp Z25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwcm9wKTsKPj4+ICsKPj4+ICsjZWxzZSAvKiBDT05G SUdfRVhUQ09OICovCj4+PiArc3RhdGljIGlubGluZSBpbnQgZXh0Y29uX2Rldl9yZWdpc3Rlcihz dHJ1Y3QgZXh0Y29uX2RldiAqZWRldikKPj4+ICt7Cj4+PiArCXJldHVybiAwOwo+Pj4gK30KPj4+ ICsKPj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgZXh0Y29uX2Rldl91bnJlZ2lzdGVyKHN0cnVjdCBl eHRjb25fZGV2ICplZGV2KSB7IH0KPj4+ICsKPj4+ICtzdGF0aWMgaW5saW5lIGludCBkZXZtX2V4 dGNvbl9kZXZfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LAo+Pj4gKwkJCQlzdHJ1Y3QgZXh0 Y29uX2RldiAqZWRldikKPj4+ICt7Cj4+PiArCXJldHVybiAtRUlOVkFMOwo+Pj4gK30KPj4+ICsK Pj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgZGV2bV9leHRjb25fZGV2X3VucmVnaXN0ZXIoc3RydWN0 IGRldmljZSAqZGV2LAo+Pj4gKwkJCQlzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldikgeyB9Cj4+PiAr Cj4+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgZXh0Y29uX2RldiAqZXh0Y29uX2Rldl9hbGxvY2F0 ZShjb25zdCB1bnNpZ25lZCBpbnQgKmNhYmxlKQo+Pj4gK3sKPj4+ICsJcmV0dXJuIEVSUl9QVFIo LUVOT1NZUyk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBleHRjb25fZGV2 X2ZyZWUoc3RydWN0IGV4dGNvbl9kZXYgKmVkZXYpIHsgfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbmxp bmUgc3RydWN0IGV4dGNvbl9kZXYgKmRldm1fZXh0Y29uX2Rldl9hbGxvY2F0ZShzdHJ1Y3QgZGV2 aWNlICpkZXYsCj4+PiArCQkJCWNvbnN0IHVuc2lnbmVkIGludCAqY2FibGUpCj4+PiArewo+Pj4g KwlyZXR1cm4gRVJSX1BUUigtRU5PU1lTKTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGlubGlu ZSB2b2lkIGRldm1fZXh0Y29uX2Rldl9mcmVlKHN0cnVjdCBleHRjb25fZGV2ICplZGV2KSB7IH0K Pj4+ICsKPj4+ICsKPj4+ICtzdGF0aWMgaW5saW5lIGludCBleHRjb25fc2V0X3N0YXRlKHN0cnVj dCBleHRjb25fZGV2ICplZGV2LCB1bnNpZ25lZCBpbnQgaWQsCj4+PiArCQkJCWJvb2wgc3RhdGUp Cj4+PiArewo+Pj4gKwlyZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGlubGluZSBp bnQgZXh0Y29uX3NldF9zdGF0ZV9zeW5jKHN0cnVjdCBleHRjb25fZGV2ICplZGV2LCB1bnNpZ25l ZCBpbnQgaWQsCj4+PiArCQkJCWJvb2wgc3RhdGUpCj4+PiArewo+Pj4gKwlyZXR1cm4gMDsKPj4+ ICt9Cj4+PiArCj4+PiArc3RhdGljIGlubGluZSBpbnQgZXh0Y29uX3N5bmMoc3RydWN0IGV4dGNv bl9kZXYgKmVkZXYsIHVuc2lnbmVkIGludCBpZCkKPj4+ICt7Cj4+PiArCXJldHVybiAwOwo+Pj4g K30KPj4+ICsKPj4+ICtzdGF0aWMgaW5saW5lIGludCBleHRjb25fc2V0X3Byb3BlcnR5KHN0cnVj dCBleHRjb25fZGV2ICplZGV2LCB1bnNpZ25lZCBpbnQgaWQsCj4+PiArCQkJCXVuc2lnbmVkIGlu dCBwcm9wLAo+Pj4gKwkJCQl1bmlvbiBleHRjb25fcHJvcGVydHlfdmFsdWUgcHJvcF92YWwpCj4+ PiArewo+Pj4gKwlyZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGlubGluZSBpbnQg ZXh0Y29uX3NldF9wcm9wZXJ0eV9zeW5jKHN0cnVjdCBleHRjb25fZGV2ICplZGV2LAo+Pj4gKwkJ CQl1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwcm9wLAo+Pj4gKwkJCQl1bmlvbiBleHRj b25fcHJvcGVydHlfdmFsdWUgcHJvcF92YWwpCj4+PiArewo+Pj4gKwlyZXR1cm4gMDsKPj4+ICt9 Cj4+PiArCj4+PiArc3RhdGljIGlubGluZSBpbnQgZXh0Y29uX3NldF9wcm9wZXJ0eV9jYXBhYmls aXR5KHN0cnVjdCBleHRjb25fZGV2ICplZGV2LAo+Pj4gKwkJCQl1bnNpZ25lZCBpbnQgaWQsIHVu c2lnbmVkIGludCBwcm9wKQo+Pj4gK3sKPj4+ICsJcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKyNlbmRp ZiAvKiBDT05GSUdfRVhUQ09OICovCj4+PiArI2VuZGlmIC8qIF9fTElOVVhfRVhUQ09OX1BST1ZJ REVSX0hfXyAqLwo+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXh0Y29uLmggYi9pbmNs dWRlL2xpbnV4L2V4dGNvbi5oCj4+PiBpbmRleCA3NDRkNjBjYTgwYzMuLjZkOTRlODJjOGFkOSAx MDA2NDQKPj4+IC0tLSBhL2luY2x1ZGUvbGludXgvZXh0Y29uLmgKPj4+ICsrKyBiL2luY2x1ZGUv bGludXgvZXh0Y29uLmgKPj4+IEBAIC0xLDUgKzEsNiBAQAo+Pj4gIC8qCj4+PiAgICogRXh0ZXJu YWwgQ29ubmVjdG9yIChleHRjb24pIGZyYW1ld29yawo+Pj4gKyAqIC0gbGludXgvaW5jbHVkZS9s aW51eC9leHRjb24uaCBmb3IgZXh0Y29uIGNvbnN1bWVyIGRldmljZSBkcml2ZXIuCj4+PiAgICoK Pj4+ICAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgU2Ftc3VuZyBFbGVjdHJvbmljcwo+Pj4gICAqIEF1 dGhvcjogQ2hhbndvbyBDaG9pIDxjdzAwLmNob2lAc2Ftc3VuZy5jb20+Cj4+PiBAQCAtMTcwLDYx ICsxNzEsMjkgQEAKPj4+ICAJaW50IGludHZhbDsJLyogdHlwZSA6IGludGVnZXIgKGludHZhbCkg Ki8KPj4+ICB9Owo+Pj4gIAo+Pj4gLXN0cnVjdCBleHRjb25fY2FibGU7Cj4+PiAgc3RydWN0IGV4 dGNvbl9kZXY7Cj4+PiAgCj4+PiAgI2lmIElTX0VOQUJMRUQoQ09ORklHX0VYVENPTikKPj4+IC0K Pj4+IC0vKiBGb2xsb3dpbmcgQVBJcyByZWdpc3Rlci91bnJlZ2lzdGVyIHRoZSBleHRjb24gZGV2 aWNlLiAqLwo+Pj4gLWV4dGVybiBpbnQgZXh0Y29uX2Rldl9yZWdpc3RlcihzdHJ1Y3QgZXh0Y29u X2RldiAqZWRldik7Cj4+PiAtZXh0ZXJuIHZvaWQgZXh0Y29uX2Rldl91bnJlZ2lzdGVyKHN0cnVj dCBleHRjb25fZGV2ICplZGV2KTsKPj4+IC1leHRlcm4gaW50IGRldm1fZXh0Y29uX2Rldl9yZWdp c3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsCj4+PiAtCQkJCXN0cnVjdCBleHRjb25fZGV2ICplZGV2 KTsKPj4+IC1leHRlcm4gdm9pZCBkZXZtX2V4dGNvbl9kZXZfdW5yZWdpc3RlcihzdHJ1Y3QgZGV2 aWNlICpkZXYsCj4+PiAtCQkJCXN0cnVjdCBleHRjb25fZGV2ICplZGV2KTsKPj4+IC0KPj4+IC0v KiBGb2xsb3dpbmcgQVBJcyBhbGxvY2F0ZS9mcmVlIHRoZSBtZW1vcnkgb2YgdGhlIGV4dGNvbiBk ZXZpY2UuICovCj4+PiAtZXh0ZXJuIHN0cnVjdCBleHRjb25fZGV2ICpleHRjb25fZGV2X2FsbG9j YXRlKGNvbnN0IHVuc2lnbmVkIGludCAqY2FibGUpOwo+Pj4gLWV4dGVybiB2b2lkIGV4dGNvbl9k ZXZfZnJlZShzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldik7Cj4+PiAtZXh0ZXJuIHN0cnVjdCBleHRj b25fZGV2ICpkZXZtX2V4dGNvbl9kZXZfYWxsb2NhdGUoc3RydWN0IGRldmljZSAqZGV2LAo+Pj4g LQkJCQljb25zdCB1bnNpZ25lZCBpbnQgKmNhYmxlKTsKPj4+IC1leHRlcm4gdm9pZCBkZXZtX2V4 dGNvbl9kZXZfZnJlZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBleHRjb25fZGV2ICplZGV2 KTsKPj4+IC0KPj4+IC0vKiBTeW5jaHJvbml6ZSB0aGUgc3RhdGUgYW5kIHByb3BlcnR5IHZhbHVl IGZvciBlYWNoIGV4dGVybmFsIGNvbm5lY3Rvci4gKi8KPj4+IC1leHRlcm4gaW50IGV4dGNvbl9z eW5jKHN0cnVjdCBleHRjb25fZGV2ICplZGV2LCB1bnNpZ25lZCBpbnQgaWQpOwo+Pj4gLQo+Pj4g IC8qCj4+PiAtICogRm9sbG93aW5nIEFQSXMgZ2V0L3NldCB0aGUgY29ubmVjdGVkIHN0YXRlIG9m IGVhY2ggZXh0ZXJuYWwgY29ubmVjdG9yLgo+Pj4gKyAqIEZvbGxvd2luZyBBUElzIGdldCB0aGUg Y29ubmVjdGVkIHN0YXRlIG9mIGVhY2ggZXh0ZXJuYWwgY29ubmVjdG9yLgo+Pj4gICAqIFRoZSAn aWQnIGFyZ3VtZW50IGluZGljYXRlcyB0aGUgZGVmaW5lZCBleHRlcm5hbCBjb25uZWN0b3IuCj4+ PiAgICovCj4+PiAgZXh0ZXJuIGludCBleHRjb25fZ2V0X3N0YXRlKHN0cnVjdCBleHRjb25fZGV2 ICplZGV2LCB1bnNpZ25lZCBpbnQgaWQpOwo+Pj4gLWV4dGVybiBpbnQgZXh0Y29uX3NldF9zdGF0 ZShzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldiwgdW5zaWduZWQgaW50IGlkLAo+Pj4gLQkJCQlib29s IHN0YXRlKTsKPj4+IC1leHRlcm4gaW50IGV4dGNvbl9zZXRfc3RhdGVfc3luYyhzdHJ1Y3QgZXh0 Y29uX2RldiAqZWRldiwgdW5zaWduZWQgaW50IGlkLAo+Pj4gLQkJCQlib29sIHN0YXRlKTsKPj4+ ICAKPj4+ICAvKgo+Pj4gLSAqIEZvbGxvd2luZyBBUElzIGdldC9zZXQgdGhlIHByb3BlcnR5IG9m IGVhY2ggZXh0ZXJuYWwgY29ubmVjdG9yLgo+Pj4gKyAqIEZvbGxvd2luZyBBUElzIGdldCB0aGUg cHJvcGVydHkgb2YgZWFjaCBleHRlcm5hbCBjb25uZWN0b3IuCj4+PiAgICogVGhlICdpZCcgYXJn dW1lbnQgaW5kaWNhdGVzIHRoZSBkZWZpbmVkIGV4dGVybmFsIGNvbm5lY3Rvcgo+Pj4gICAqIGFu ZCB0aGUgJ3Byb3AnIGluZGljYXRlcyB0aGUgZXh0Y29uIHByb3BlcnR5Lgo+Pj4gICAqCj4+PiAt ICogQW5kIGV4dGNvbl9nZXQvc2V0X3Byb3BlcnR5X2NhcGFiaWxpdHkoKSBzZXQgdGhlIGNhcGFi aWxpdHkgb2YgdGhlIHByb3BlcnR5Cj4+PiAtICogZm9yIGVhY2ggZXh0ZXJuYWwgY29ubmVjdG9y LiBUaGV5IGFyZSB1c2VkIHRvIHNldCB0aGUgY2FwYWJpbGl0eSBvZiB0aGUKPj4+ICsgKiBBbmQg ZXh0Y29uX2dldF9wcm9wZXJ0eV9jYXBhYmlsaXR5KCkgZ2V0IHRoZSBjYXBhYmlsaXR5IG9mIHRo ZSBwcm9wZXJ0eQo+Pj4gKyAqIGZvciBlYWNoIGV4dGVybmFsIGNvbm5lY3Rvci4gVGhleSBhcmUg dXNlZCB0byBnZXQgdGhlIGNhcGFiaWxpdHkgb2YgdGhlCj4+PiAgICogcHJvcGVydHkgb2YgZWFj aCBleHRlcm5hbCBjb25uZWN0b3IgYmFzZWQgb24gdGhlIGlkIGFuZCBwcm9wZXJ0eS4KPj4+ICAg Ki8KPj4+ICBleHRlcm4gaW50IGV4dGNvbl9nZXRfcHJvcGVydHkoc3RydWN0IGV4dGNvbl9kZXYg KmVkZXYsIHVuc2lnbmVkIGludCBpZCwKPj4+ICAJCQkJdW5zaWduZWQgaW50IHByb3AsCj4+PiAg CQkJCXVuaW9uIGV4dGNvbl9wcm9wZXJ0eV92YWx1ZSAqcHJvcF92YWwpOwo+Pj4gLWV4dGVybiBp bnQgZXh0Y29uX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldiwgdW5zaWduZWQg aW50IGlkLAo+Pj4gLQkJCQl1bnNpZ25lZCBpbnQgcHJvcCwKPj4+IC0JCQkJdW5pb24gZXh0Y29u X3Byb3BlcnR5X3ZhbHVlIHByb3BfdmFsKTsKPj4+IC1leHRlcm4gaW50IGV4dGNvbl9zZXRfcHJv cGVydHlfc3luYyhzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldiwgdW5zaWduZWQgaW50IGlkLAo+Pj4g LQkJCQl1bnNpZ25lZCBpbnQgcHJvcCwKPj4+IC0JCQkJdW5pb24gZXh0Y29uX3Byb3BlcnR5X3Zh bHVlIHByb3BfdmFsKTsKPj4+ICBleHRlcm4gaW50IGV4dGNvbl9nZXRfcHJvcGVydHlfY2FwYWJp bGl0eShzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldiwKPj4+ICAJCQkJdW5zaWduZWQgaW50IGlkLCB1 bnNpZ25lZCBpbnQgcHJvcCk7Cj4+PiAtZXh0ZXJuIGludCBleHRjb25fc2V0X3Byb3BlcnR5X2Nh cGFiaWxpdHkoc3RydWN0IGV4dGNvbl9kZXYgKmVkZXYsCj4+PiAtCQkJCXVuc2lnbmVkIGludCBp ZCwgdW5zaWduZWQgaW50IHByb3ApOwo+Pj4gIAo+Pj4gIC8qCj4+PiAgICogRm9sbG93aW5nIEFQ SXMgcmVnaXN0ZXIgdGhlIG5vdGlmaWVyIGJsb2NrIGluIG9yZGVyIHRvIGRldGVjdAo+Pj4gQEAg LTI2OCw3OSArMjM3LDE3IEBAIGV4dGVybiBzdHJ1Y3QgZXh0Y29uX2RldiAqZXh0Y29uX2dldF9l ZGV2X2J5X3BoYW5kbGUoc3RydWN0IGRldmljZSAqZGV2LAo+Pj4gIGV4dGVybiBjb25zdCBjaGFy ICpleHRjb25fZ2V0X2VkZXZfbmFtZShzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldik7Cj4+PiAgCj4+ PiAgI2Vsc2UgLyogQ09ORklHX0VYVENPTiAqLwo+Pj4gLXN0YXRpYyBpbmxpbmUgaW50IGV4dGNv bl9kZXZfcmVnaXN0ZXIoc3RydWN0IGV4dGNvbl9kZXYgKmVkZXYpCj4+PiAtewo+Pj4gLQlyZXR1 cm4gMDsKPj4+IC19Cj4+PiAtCj4+PiAtc3RhdGljIGlubGluZSB2b2lkIGV4dGNvbl9kZXZfdW5y ZWdpc3RlcihzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldikgeyB9Cj4+PiAtCj4+PiAtc3RhdGljIGlu bGluZSBpbnQgZGV2bV9leHRjb25fZGV2X3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwKPj4+ IC0JCQkJc3RydWN0IGV4dGNvbl9kZXYgKmVkZXYpCj4+PiAtewo+Pj4gLQlyZXR1cm4gLUVJTlZB TDsKPj4+IC19Cj4+PiAtCj4+PiAtc3RhdGljIGlubGluZSB2b2lkIGRldm1fZXh0Y29uX2Rldl91 bnJlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwKPj4+IC0JCQkJc3RydWN0IGV4dGNvbl9kZXYg KmVkZXYpIHsgfQo+Pj4gLQo+Pj4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IGV4dGNvbl9kZXYgKmV4 dGNvbl9kZXZfYWxsb2NhdGUoY29uc3QgdW5zaWduZWQgaW50ICpjYWJsZSkKPj4+IC17Cj4+PiAt CXJldHVybiBFUlJfUFRSKC1FTk9TWVMpOwo+Pj4gLX0KPj4+IC0KPj4+IC1zdGF0aWMgaW5saW5l IHZvaWQgZXh0Y29uX2Rldl9mcmVlKHN0cnVjdCBleHRjb25fZGV2ICplZGV2KSB7IH0KPj4+IC0K Pj4+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBleHRjb25fZGV2ICpkZXZtX2V4dGNvbl9kZXZfYWxs b2NhdGUoc3RydWN0IGRldmljZSAqZGV2LAo+Pj4gLQkJCQljb25zdCB1bnNpZ25lZCBpbnQgKmNh YmxlKQo+Pj4gLXsKPj4+IC0JcmV0dXJuIEVSUl9QVFIoLUVOT1NZUyk7Cj4+PiAtfQo+Pj4gLQo+ Pj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBkZXZtX2V4dGNvbl9kZXZfZnJlZShzdHJ1Y3QgZXh0Y29u X2RldiAqZWRldikgeyB9Cj4+PiAtCj4+PiAtCj4+PiAgc3RhdGljIGlubGluZSBpbnQgZXh0Y29u X2dldF9zdGF0ZShzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldiwgdW5zaWduZWQgaW50IGlkKQo+Pj4g IHsKPj4+ICAJcmV0dXJuIDA7Cj4+PiAgfQo+Pj4gIAo+Pj4gLXN0YXRpYyBpbmxpbmUgaW50IGV4 dGNvbl9zZXRfc3RhdGUoc3RydWN0IGV4dGNvbl9kZXYgKmVkZXYsIHVuc2lnbmVkIGludCBpZCwK Pj4+IC0JCQkJYm9vbCBzdGF0ZSkKPj4+IC17Cj4+PiAtCXJldHVybiAwOwo+Pj4gLX0KPj4+IC0K Pj4+IC1zdGF0aWMgaW5saW5lIGludCBleHRjb25fc2V0X3N0YXRlX3N5bmMoc3RydWN0IGV4dGNv bl9kZXYgKmVkZXYsIHVuc2lnbmVkIGludCBpZCwKPj4+IC0JCQkJYm9vbCBzdGF0ZSkKPj4+IC17 Cj4+PiAtCXJldHVybiAwOwo+Pj4gLX0KPj4+IC0KPj4+IC1zdGF0aWMgaW5saW5lIGludCBleHRj b25fc3luYyhzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldiwgdW5zaWduZWQgaW50IGlkKQo+Pj4gLXsK Pj4+IC0JcmV0dXJuIDA7Cj4+PiAtfQo+Pj4gLQo+Pj4gIHN0YXRpYyBpbmxpbmUgaW50IGV4dGNv bl9nZXRfcHJvcGVydHkoc3RydWN0IGV4dGNvbl9kZXYgKmVkZXYsIHVuc2lnbmVkIGludCBpZCwK Pj4+ICAJCQkJdW5zaWduZWQgaW50IHByb3AsCj4+PiAgCQkJCXVuaW9uIGV4dGNvbl9wcm9wZXJ0 eV92YWx1ZSAqcHJvcF92YWwpCj4+PiAgewo+Pj4gIAlyZXR1cm4gMDsKPj4+ICB9Cj4+PiAtc3Rh dGljIGlubGluZSBpbnQgZXh0Y29uX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZXh0Y29uX2RldiAqZWRl diwgdW5zaWduZWQgaW50IGlkLAo+Pj4gLQkJCQl1bnNpZ25lZCBpbnQgcHJvcCwKPj4+IC0JCQkJ dW5pb24gZXh0Y29uX3Byb3BlcnR5X3ZhbHVlIHByb3BfdmFsKQo+Pj4gLXsKPj4+IC0JcmV0dXJu IDA7Cj4+PiAtfQo+Pj4gLQo+Pj4gLXN0YXRpYyBpbmxpbmUgaW50IGV4dGNvbl9zZXRfcHJvcGVy dHlfc3luYyhzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldiwKPj4+IC0JCQkJdW5zaWduZWQgaW50IGlk LCB1bnNpZ25lZCBpbnQgcHJvcCwKPj4+IC0JCQkJdW5pb24gZXh0Y29uX3Byb3BlcnR5X3ZhbHVl IHByb3BfdmFsKQo+Pj4gLXsKPj4+IC0JcmV0dXJuIDA7Cj4+PiAtfQo+Pj4gIAo+Pj4gIHN0YXRp YyBpbmxpbmUgaW50IGV4dGNvbl9nZXRfcHJvcGVydHlfY2FwYWJpbGl0eShzdHJ1Y3QgZXh0Y29u X2RldiAqZWRldiwKPj4+ICAJCQkJdW5zaWduZWQgaW50IGlkLCB1bnNpZ25lZCBpbnQgcHJvcCkK Pj4+IEBAIC0zNDgsMTIgKzI1NSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGV4dGNvbl9nZXRfcHJv cGVydHlfY2FwYWJpbGl0eShzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldiwKPj4+ICAJcmV0dXJuIDA7 Cj4+PiAgfQo+Pj4gIAo+Pj4gLXN0YXRpYyBpbmxpbmUgaW50IGV4dGNvbl9zZXRfcHJvcGVydHlf Y2FwYWJpbGl0eShzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldiwKPj4+IC0JCQkJdW5zaWduZWQgaW50 IGlkLCB1bnNpZ25lZCBpbnQgcHJvcCkKPj4+IC17Cj4+PiAtCXJldHVybiAwOwo+Pj4gLX0KPj4+ IC0KPj4+ICBzdGF0aWMgaW5saW5lIGludCBleHRjb25fcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0 IGV4dGNvbl9kZXYgKmVkZXYsCj4+PiAgCQkJCXVuc2lnbmVkIGludCBpZCwgc3RydWN0IG5vdGlm aWVyX2Jsb2NrICpuYikKPj4+ICB7Cj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tZmQv cGFsbWFzLmggYi9pbmNsdWRlL2xpbnV4L21mZC9wYWxtYXMuaAo+Pj4gaW5kZXggNmRlYzQzODI2 MzAzLi4zYzg1NjhhYTgyYTUgMTAwNjQ0Cj4+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L21mZC9wYWxt YXMuaAo+Pj4gKysrIGIvaW5jbHVkZS9saW51eC9tZmQvcGFsbWFzLmgKPj4+IEBAIC0yMCw3ICsy MCw3IEBACj4+PiAgI2luY2x1ZGUgPGxpbnV4L2xlZHMuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgv cmVnbWFwLmg+Cj4+PiAgI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9kcml2ZXIuaD4KPj4+IC0j aW5jbHVkZSA8bGludXgvZXh0Y29uLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi1wcm92 aWRlci5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9vZl9ncGlvLmg+Cj4+PiAgI2luY2x1ZGUgPGxp bnV4L3VzYi9waHlfY29tcGFuaW9uLmg+Cj4+PiAgCj4+Pgo+Pgo+PgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5n IGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Return-Path: From: Kishon Vijay Abraham I Subject: Re: [PATCH v2] extcon: Split out extcon header file for consumer and provider device To: Chanwoo Choi References: <1507630671-23536-1-git-send-email-cw00.choi@samsung.com> <59DEE429.2000608@samsung.com> <59E6B90F.8000808@samsung.com> CC: , , , , , , , , , , , , , , , , , Message-ID: Date: Mon, 23 Oct 2017 10:35:54 +0530 MIME-Version: 1.0 In-Reply-To: <59E6B90F.8000808@samsung.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: On Wednesday 18 October 2017 07:44 AM, Chanwoo Choi wrote: > Gently Ping. > > Dear Kishon, > > Could you please review this patch for 'drivers/phy/*'? sorry for the delay.. here it is Acked-by: Kishon Vijay Abraham I > > Regards, > Chanwoo Choi > > On 2017년 10월 12일 12:40, Chanwoo Choi wrote: >> Dear Kishon, >> >> Could you please review this patch? >> After that, I'll make the immutable brand and then send the pull request >> for power_supply, mfd, phy, usb and extcon framework. >> >> On 2017년 10월 10일 19:17, Chanwoo Choi wrote: >>> The extcon has two type of extcon devices as following. >>> - 'extcon provider deivce' adds new extcon device and detect the >>> state/properties of external connector. Also, it notifies the >>> state/properties to the extcon consumer device. >>> - 'extcon consumer device' gets the change state/properties >>> from extcon provider device. >>> Prior to that, include/linux/extcon.h contains all exported API for >>> both provider and consumer device driver. To clarify the meaning of >>> header file and to remove the wrong use-case on consumer device, >>> this patch separates into extcon.h and extcon-provider.h. >>> >>> [Description for include/linux/{extcon.h|extcon-provider.h}] >>> - extcon.h includes the extcon API and data structure for extcon consumer >>> device driver. This header file contains the following APIs: >>> : Register/unregister the notifier to catch the change of extcon device >>> : Get the extcon device instance >>> : Get the extcon device name >>> : Get the state of each external connector >>> : Get the property value of each external connector >>> : Get the property capability of each external connector >>> >>> - extcon-provider.h includes the extcon API and data structure for extcon >>> provider device driver. This header file contains the following APIs: >>> : Include 'include/linux/extcon.h' >>> : Allocate the memory for extcon device instance >>> : Register/unregister extcon device >>> : Set the state of each external connector >>> : Set the property value of each external connector >>> : Set the property capability of each external connector >>> >>> Cc: Felipe Balbi >>> Cc: Kishon Vijay Abraham I >>> Cc: Greg Kroah-Hartman >>> Acked-by: Sebastian Reichel >>> Acked-by: Chen-Yu Tsai >>> Acked-by: Charles Keepax >>> Acked-by: Lee Jones >>> Signed-off-by: Chanwoo Choi >>> --- >>> Changes from v1: >>> - Don't touch drivers/usb/renesas_usbhs/common.h. >>> - Add acked-by from Sebastian Reichel (for drivers/power/supply/) >>> - Add acked-by from Chen-Yu Tsai (for phy-sun4i-usb.c & extcon-axp288.c) >>> - Add acked-by from Charles Keepax (for drivers/extcon/extcon-arizona.c) >>> - Add acked-by from Lee Jones (fo include/linux/mfd/palmas.h) >>> >>> drivers/extcon/extcon-adc-jack.c | 2 +- >>> drivers/extcon/extcon-arizona.c | 2 +- >>> drivers/extcon/extcon-axp288.c | 2 +- >>> drivers/extcon/extcon-gpio.c | 2 +- >>> drivers/extcon/extcon-intel-cht-wc.c | 2 +- >>> drivers/extcon/extcon-intel-int3496.c | 2 +- >>> drivers/extcon/extcon-max14577.c | 2 +- >>> drivers/extcon/extcon-max3355.c | 2 +- >>> drivers/extcon/extcon-max77693.c | 2 +- >>> drivers/extcon/extcon-max77843.c | 2 +- >>> drivers/extcon/extcon-max8997.c | 2 +- >>> drivers/extcon/extcon-qcom-spmi-misc.c | 2 +- >>> drivers/extcon/extcon-rt8973a.c | 2 +- >>> drivers/extcon/extcon-sm5502.c | 2 +- >>> drivers/extcon/extcon-usb-gpio.c | 2 +- >>> drivers/extcon/extcon-usbc-cros-ec.c | 2 +- >>> drivers/extcon/extcon.h | 2 +- >>> drivers/phy/allwinner/phy-sun4i-usb.c | 2 +- >>> drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c | 2 +- >>> drivers/phy/renesas/phy-rcar-gen3-usb2.c | 2 +- >>> drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 2 +- >>> drivers/power/supply/qcom_smbb.c | 2 +- >>> drivers/usb/gadget/udc/renesas_usb3.c | 2 +- >>> drivers/usb/phy/phy-tahvo.c | 2 +- >>> include/linux/extcon-provider.h | 142 ++++++++++++++++++++++++++ >>> include/linux/extcon.h | 109 +------------------- >>> include/linux/mfd/palmas.h | 2 +- >>> 27 files changed, 172 insertions(+), 129 deletions(-) >>> create mode 100644 include/linux/extcon-provider.h >>> >>> diff --git a/drivers/extcon/extcon-adc-jack.c b/drivers/extcon/extcon-adc-jack.c >>> index 6f6537ab0a79..3877d86c746a 100644 >>> --- a/drivers/extcon/extcon-adc-jack.c >>> +++ b/drivers/extcon/extcon-adc-jack.c >>> @@ -26,7 +26,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> >>> /** >>> * struct adc_jack_data - internal data for adc_jack device driver >>> diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c >>> index f84da4a17724..da0e9bc4262f 100644 >>> --- a/drivers/extcon/extcon-arizona.c >>> +++ b/drivers/extcon/extcon-arizona.c >>> @@ -27,7 +27,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> >>> #include >>> >>> diff --git a/drivers/extcon/extcon-axp288.c b/drivers/extcon/extcon-axp288.c >>> index f4fd03e58e37..981fba56bc18 100644 >>> --- a/drivers/extcon/extcon-axp288.c >>> +++ b/drivers/extcon/extcon-axp288.c >>> @@ -22,7 +22,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-gpio.c b/drivers/extcon/extcon-gpio.c >>> index ebed22f22d75..ab770adcca7e 100644 >>> --- a/drivers/extcon/extcon-gpio.c >>> +++ b/drivers/extcon/extcon-gpio.c >>> @@ -17,7 +17,7 @@ >>> * GNU General Public License for more details. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-intel-cht-wc.c b/drivers/extcon/extcon-intel-cht-wc.c >>> index 91a0023074af..7c4bc8c44c3f 100644 >>> --- a/drivers/extcon/extcon-intel-cht-wc.c >>> +++ b/drivers/extcon/extcon-intel-cht-wc.c >>> @@ -15,7 +15,7 @@ >>> * more details. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-intel-int3496.c b/drivers/extcon/extcon-intel-int3496.c >>> index 1a45e745717d..c8691b5a9cb0 100644 >>> --- a/drivers/extcon/extcon-intel-int3496.c >>> +++ b/drivers/extcon/extcon-intel-int3496.c >>> @@ -19,7 +19,7 @@ >>> */ >>> >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-max14577.c b/drivers/extcon/extcon-max14577.c >>> index f6414b7fa5bc..6c2c9996eb71 100644 >>> --- a/drivers/extcon/extcon-max14577.c >>> +++ b/drivers/extcon/extcon-max14577.c >>> @@ -23,7 +23,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> >>> #define DELAY_MS_DEFAULT 17000 /* unit: millisecond */ >>> >>> diff --git a/drivers/extcon/extcon-max3355.c b/drivers/extcon/extcon-max3355.c >>> index 533e16a952b8..0aa410836f4e 100644 >>> --- a/drivers/extcon/extcon-max3355.c >>> +++ b/drivers/extcon/extcon-max3355.c >>> @@ -9,7 +9,7 @@ >>> * may be copied, distributed, and modified under those terms. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-max77693.c b/drivers/extcon/extcon-max77693.c >>> index 7a5856809047..643411066ad9 100644 >>> --- a/drivers/extcon/extcon-max77693.c >>> +++ b/drivers/extcon/extcon-max77693.c >>> @@ -26,7 +26,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> >>> diff --git a/drivers/extcon/extcon-max77843.c b/drivers/extcon/extcon-max77843.c >>> index 6e722d552cf1..28f251ff0fa2 100644 >>> --- a/drivers/extcon/extcon-max77843.c >>> +++ b/drivers/extcon/extcon-max77843.c >>> @@ -11,7 +11,7 @@ >>> * (at your option) any later version. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-max8997.c b/drivers/extcon/extcon-max8997.c >>> index 4a0612fb9c07..8152790d72e1 100644 >>> --- a/drivers/extcon/extcon-max8997.c >>> +++ b/drivers/extcon/extcon-max8997.c >>> @@ -25,7 +25,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> >>> #define DEV_NAME "max8997-muic" >>> diff --git a/drivers/extcon/extcon-qcom-spmi-misc.c b/drivers/extcon/extcon-qcom-spmi-misc.c >>> index b8cde096a808..660bbf163bf5 100644 >>> --- a/drivers/extcon/extcon-qcom-spmi-misc.c >>> +++ b/drivers/extcon/extcon-qcom-spmi-misc.c >>> @@ -15,7 +15,7 @@ >>> * GNU General Public License for more details. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-rt8973a.c b/drivers/extcon/extcon-rt8973a.c >>> index eaa355e7d9e4..e059bd5f2041 100644 >>> --- a/drivers/extcon/extcon-rt8973a.c >>> +++ b/drivers/extcon/extcon-rt8973a.c >>> @@ -20,7 +20,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> >>> #include "extcon-rt8973a.h" >>> >>> diff --git a/drivers/extcon/extcon-sm5502.c b/drivers/extcon/extcon-sm5502.c >>> index 106ef0297b53..0cfb5a3efdf6 100644 >>> --- a/drivers/extcon/extcon-sm5502.c >>> +++ b/drivers/extcon/extcon-sm5502.c >>> @@ -19,7 +19,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> >>> #include "extcon-sm5502.h" >>> >>> diff --git a/drivers/extcon/extcon-usb-gpio.c b/drivers/extcon/extcon-usb-gpio.c >>> index 9c925b05b7aa..53762864a9f7 100644 >>> --- a/drivers/extcon/extcon-usb-gpio.c >>> +++ b/drivers/extcon/extcon-usb-gpio.c >>> @@ -14,7 +14,7 @@ >>> * GNU General Public License for more details. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-usbc-cros-ec.c b/drivers/extcon/extcon-usbc-cros-ec.c >>> index 598956f1dcae..6187f731b29d 100644 >>> --- a/drivers/extcon/extcon-usbc-cros-ec.c >>> +++ b/drivers/extcon/extcon-usbc-cros-ec.c >>> @@ -14,7 +14,7 @@ >>> * GNU General Public License for more details. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon.h b/drivers/extcon/extcon.h >>> index dddddcfa0587..cc1b436eb66a 100644 >>> --- a/drivers/extcon/extcon.h >>> +++ b/drivers/extcon/extcon.h >>> @@ -1,7 +1,7 @@ >>> #ifndef __LINUX_EXTCON_INTERNAL_H__ >>> #define __LINUX_EXTCON_INTERNAL_H__ >>> >>> -#include >>> +#include >>> >>> /** >>> * struct extcon_dev - An extcon device represents one external connector. >>> diff --git a/drivers/phy/allwinner/phy-sun4i-usb.c b/drivers/phy/allwinner/phy-sun4i-usb.c >>> index 1161e11fb3cf..ef34f97f214b 100644 >>> --- a/drivers/phy/allwinner/phy-sun4i-usb.c >>> +++ b/drivers/phy/allwinner/phy-sun4i-usb.c >>> @@ -24,7 +24,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c b/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c >>> index d099a0c8cee5..7ceea5ae2704 100644 >>> --- a/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c >>> +++ b/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c >>> @@ -12,7 +12,7 @@ >>> */ >>> >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c >>> index 54c34298a000..b33e2994ccce 100644 >>> --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c >>> +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c >>> @@ -12,7 +12,7 @@ >>> * published by the Free Software Foundation. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c >>> index ee7ce5ee53f9..5049dac79bd0 100644 >>> --- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c >>> +++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c >>> @@ -17,7 +17,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/power/supply/qcom_smbb.c b/drivers/power/supply/qcom_smbb.c >>> index f6a0d245731d..11de691b9a71 100644 >>> --- a/drivers/power/supply/qcom_smbb.c >>> +++ b/drivers/power/supply/qcom_smbb.c >>> @@ -34,7 +34,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> >>> #define SMBB_CHG_VMAX 0x040 >>> diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c >>> index df37c1e6e9d5..8b4d051fdbed 100644 >>> --- a/drivers/usb/gadget/udc/renesas_usb3.c >>> +++ b/drivers/usb/gadget/udc/renesas_usb3.c >>> @@ -12,7 +12,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/usb/phy/phy-tahvo.c b/drivers/usb/phy/phy-tahvo.c >>> index 8babd318c0ed..354e8c98af05 100644 >>> --- a/drivers/usb/phy/phy-tahvo.c >>> +++ b/drivers/usb/phy/phy-tahvo.c >>> @@ -23,7 +23,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/include/linux/extcon-provider.h b/include/linux/extcon-provider.h >>> new file mode 100644 >>> index 000000000000..2feca5881fa7 >>> --- /dev/null >>> +++ b/include/linux/extcon-provider.h >>> @@ -0,0 +1,142 @@ >>> +/* >>> + * External Connector (extcon) framework >>> + * - linux/include/linux/extcon-provider.h for extcon provider device driver. >>> + * >>> + * Copyright (C) 2017 Samsung Electronics >>> + * Author: Chanwoo Choi >>> + * >>> + * This software is licensed under the terms of the GNU General Public >>> + * License version 2, as published by the Free Software Foundation, and >>> + * may be copied, distributed, and modified under those terms. >>> + * >>> + * This program is distributed in the hope that it will be useful, >>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >>> + * GNU General Public License for more details. >>> + */ >>> + >>> +#ifndef __LINUX_EXTCON_PROVIDER_H__ >>> +#define __LINUX_EXTCON_PROVIDER_H__ >>> + >>> +#include >>> + >>> +struct extcon_dev; >>> + >>> +#if IS_ENABLED(CONFIG_EXTCON) >>> + >>> +/* Following APIs register/unregister the extcon device. */ >>> +extern int extcon_dev_register(struct extcon_dev *edev); >>> +extern void extcon_dev_unregister(struct extcon_dev *edev); >>> +extern int devm_extcon_dev_register(struct device *dev, >>> + struct extcon_dev *edev); >>> +extern void devm_extcon_dev_unregister(struct device *dev, >>> + struct extcon_dev *edev); >>> + >>> +/* Following APIs allocate/free the memory of the extcon device. */ >>> +extern struct extcon_dev *extcon_dev_allocate(const unsigned int *cable); >>> +extern void extcon_dev_free(struct extcon_dev *edev); >>> +extern struct extcon_dev *devm_extcon_dev_allocate(struct device *dev, >>> + const unsigned int *cable); >>> +extern void devm_extcon_dev_free(struct device *dev, struct extcon_dev *edev); >>> + >>> +/* Synchronize the state and property value for each external connector. */ >>> +extern int extcon_sync(struct extcon_dev *edev, unsigned int id); >>> + >>> +/* >>> + * Following APIs set the connected state of each external connector. >>> + * The 'id' argument indicates the defined external connector. >>> + */ >>> +extern int extcon_set_state(struct extcon_dev *edev, unsigned int id, >>> + bool state); >>> +extern int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, >>> + bool state); >>> + >>> +/* >>> + * Following APIs set the property of each external connector. >>> + * The 'id' argument indicates the defined external connector >>> + * and the 'prop' indicates the extcon property. >>> + * >>> + * And extcon_set_property_capability() set the capability of the property >>> + * for each external connector. They are used to set the capability of the >>> + * property of each external connector based on the id and property. >>> + */ >>> +extern int extcon_set_property(struct extcon_dev *edev, unsigned int id, >>> + unsigned int prop, >>> + union extcon_property_value prop_val); >>> +extern int extcon_set_property_sync(struct extcon_dev *edev, unsigned int id, >>> + unsigned int prop, >>> + union extcon_property_value prop_val); >>> +extern int extcon_set_property_capability(struct extcon_dev *edev, >>> + unsigned int id, unsigned int prop); >>> + >>> +#else /* CONFIG_EXTCON */ >>> +static inline int extcon_dev_register(struct extcon_dev *edev) >>> +{ >>> + return 0; >>> +} >>> + >>> +static inline void extcon_dev_unregister(struct extcon_dev *edev) { } >>> + >>> +static inline int devm_extcon_dev_register(struct device *dev, >>> + struct extcon_dev *edev) >>> +{ >>> + return -EINVAL; >>> +} >>> + >>> +static inline void devm_extcon_dev_unregister(struct device *dev, >>> + struct extcon_dev *edev) { } >>> + >>> +static inline struct extcon_dev *extcon_dev_allocate(const unsigned int *cable) >>> +{ >>> + return ERR_PTR(-ENOSYS); >>> +} >>> + >>> +static inline void extcon_dev_free(struct extcon_dev *edev) { } >>> + >>> +static inline struct extcon_dev *devm_extcon_dev_allocate(struct device *dev, >>> + const unsigned int *cable) >>> +{ >>> + return ERR_PTR(-ENOSYS); >>> +} >>> + >>> +static inline void devm_extcon_dev_free(struct extcon_dev *edev) { } >>> + >>> + >>> +static inline int extcon_set_state(struct extcon_dev *edev, unsigned int id, >>> + bool state) >>> +{ >>> + return 0; >>> +} >>> + >>> +static inline int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, >>> + bool state) >>> +{ >>> + return 0; >>> +} >>> + >>> +static inline int extcon_sync(struct extcon_dev *edev, unsigned int id) >>> +{ >>> + return 0; >>> +} >>> + >>> +static inline int extcon_set_property(struct extcon_dev *edev, unsigned int id, >>> + unsigned int prop, >>> + union extcon_property_value prop_val) >>> +{ >>> + return 0; >>> +} >>> + >>> +static inline int extcon_set_property_sync(struct extcon_dev *edev, >>> + unsigned int id, unsigned int prop, >>> + union extcon_property_value prop_val) >>> +{ >>> + return 0; >>> +} >>> + >>> +static inline int extcon_set_property_capability(struct extcon_dev *edev, >>> + unsigned int id, unsigned int prop) >>> +{ >>> + return 0; >>> +} >>> +#endif /* CONFIG_EXTCON */ >>> +#endif /* __LINUX_EXTCON_PROVIDER_H__ */ >>> diff --git a/include/linux/extcon.h b/include/linux/extcon.h >>> index 744d60ca80c3..6d94e82c8ad9 100644 >>> --- a/include/linux/extcon.h >>> +++ b/include/linux/extcon.h >>> @@ -1,5 +1,6 @@ >>> /* >>> * External Connector (extcon) framework >>> + * - linux/include/linux/extcon.h for extcon consumer device driver. >>> * >>> * Copyright (C) 2015 Samsung Electronics >>> * Author: Chanwoo Choi >>> @@ -170,61 +171,29 @@ >>> int intval; /* type : integer (intval) */ >>> }; >>> >>> -struct extcon_cable; >>> struct extcon_dev; >>> >>> #if IS_ENABLED(CONFIG_EXTCON) >>> - >>> -/* Following APIs register/unregister the extcon device. */ >>> -extern int extcon_dev_register(struct extcon_dev *edev); >>> -extern void extcon_dev_unregister(struct extcon_dev *edev); >>> -extern int devm_extcon_dev_register(struct device *dev, >>> - struct extcon_dev *edev); >>> -extern void devm_extcon_dev_unregister(struct device *dev, >>> - struct extcon_dev *edev); >>> - >>> -/* Following APIs allocate/free the memory of the extcon device. */ >>> -extern struct extcon_dev *extcon_dev_allocate(const unsigned int *cable); >>> -extern void extcon_dev_free(struct extcon_dev *edev); >>> -extern struct extcon_dev *devm_extcon_dev_allocate(struct device *dev, >>> - const unsigned int *cable); >>> -extern void devm_extcon_dev_free(struct device *dev, struct extcon_dev *edev); >>> - >>> -/* Synchronize the state and property value for each external connector. */ >>> -extern int extcon_sync(struct extcon_dev *edev, unsigned int id); >>> - >>> /* >>> - * Following APIs get/set the connected state of each external connector. >>> + * Following APIs get the connected state of each external connector. >>> * The 'id' argument indicates the defined external connector. >>> */ >>> extern int extcon_get_state(struct extcon_dev *edev, unsigned int id); >>> -extern int extcon_set_state(struct extcon_dev *edev, unsigned int id, >>> - bool state); >>> -extern int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, >>> - bool state); >>> >>> /* >>> - * Following APIs get/set the property of each external connector. >>> + * Following APIs get the property of each external connector. >>> * The 'id' argument indicates the defined external connector >>> * and the 'prop' indicates the extcon property. >>> * >>> - * And extcon_get/set_property_capability() set the capability of the property >>> - * for each external connector. They are used to set the capability of the >>> + * And extcon_get_property_capability() get the capability of the property >>> + * for each external connector. They are used to get the capability of the >>> * property of each external connector based on the id and property. >>> */ >>> extern int extcon_get_property(struct extcon_dev *edev, unsigned int id, >>> unsigned int prop, >>> union extcon_property_value *prop_val); >>> -extern int extcon_set_property(struct extcon_dev *edev, unsigned int id, >>> - unsigned int prop, >>> - union extcon_property_value prop_val); >>> -extern int extcon_set_property_sync(struct extcon_dev *edev, unsigned int id, >>> - unsigned int prop, >>> - union extcon_property_value prop_val); >>> extern int extcon_get_property_capability(struct extcon_dev *edev, >>> unsigned int id, unsigned int prop); >>> -extern int extcon_set_property_capability(struct extcon_dev *edev, >>> - unsigned int id, unsigned int prop); >>> >>> /* >>> * Following APIs register the notifier block in order to detect >>> @@ -268,79 +237,17 @@ extern struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev, >>> extern const char *extcon_get_edev_name(struct extcon_dev *edev); >>> >>> #else /* CONFIG_EXTCON */ >>> -static inline int extcon_dev_register(struct extcon_dev *edev) >>> -{ >>> - return 0; >>> -} >>> - >>> -static inline void extcon_dev_unregister(struct extcon_dev *edev) { } >>> - >>> -static inline int devm_extcon_dev_register(struct device *dev, >>> - struct extcon_dev *edev) >>> -{ >>> - return -EINVAL; >>> -} >>> - >>> -static inline void devm_extcon_dev_unregister(struct device *dev, >>> - struct extcon_dev *edev) { } >>> - >>> -static inline struct extcon_dev *extcon_dev_allocate(const unsigned int *cable) >>> -{ >>> - return ERR_PTR(-ENOSYS); >>> -} >>> - >>> -static inline void extcon_dev_free(struct extcon_dev *edev) { } >>> - >>> -static inline struct extcon_dev *devm_extcon_dev_allocate(struct device *dev, >>> - const unsigned int *cable) >>> -{ >>> - return ERR_PTR(-ENOSYS); >>> -} >>> - >>> -static inline void devm_extcon_dev_free(struct extcon_dev *edev) { } >>> - >>> - >>> static inline int extcon_get_state(struct extcon_dev *edev, unsigned int id) >>> { >>> return 0; >>> } >>> >>> -static inline int extcon_set_state(struct extcon_dev *edev, unsigned int id, >>> - bool state) >>> -{ >>> - return 0; >>> -} >>> - >>> -static inline int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, >>> - bool state) >>> -{ >>> - return 0; >>> -} >>> - >>> -static inline int extcon_sync(struct extcon_dev *edev, unsigned int id) >>> -{ >>> - return 0; >>> -} >>> - >>> static inline int extcon_get_property(struct extcon_dev *edev, unsigned int id, >>> unsigned int prop, >>> union extcon_property_value *prop_val) >>> { >>> return 0; >>> } >>> -static inline int extcon_set_property(struct extcon_dev *edev, unsigned int id, >>> - unsigned int prop, >>> - union extcon_property_value prop_val) >>> -{ >>> - return 0; >>> -} >>> - >>> -static inline int extcon_set_property_sync(struct extcon_dev *edev, >>> - unsigned int id, unsigned int prop, >>> - union extcon_property_value prop_val) >>> -{ >>> - return 0; >>> -} >>> >>> static inline int extcon_get_property_capability(struct extcon_dev *edev, >>> unsigned int id, unsigned int prop) >>> @@ -348,12 +255,6 @@ static inline int extcon_get_property_capability(struct extcon_dev *edev, >>> return 0; >>> } >>> >>> -static inline int extcon_set_property_capability(struct extcon_dev *edev, >>> - unsigned int id, unsigned int prop) >>> -{ >>> - return 0; >>> -} >>> - >>> static inline int extcon_register_notifier(struct extcon_dev *edev, >>> unsigned int id, struct notifier_block *nb) >>> { >>> diff --git a/include/linux/mfd/palmas.h b/include/linux/mfd/palmas.h >>> index 6dec43826303..3c8568aa82a5 100644 >>> --- a/include/linux/mfd/palmas.h >>> +++ b/include/linux/mfd/palmas.h >>> @@ -20,7 +20,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> >>> >> >> From mboxrd@z Thu Jan 1 00:00:00 1970 From: kishon@ti.com (Kishon Vijay Abraham I) Date: Mon, 23 Oct 2017 10:35:54 +0530 Subject: [PATCH v2] extcon: Split out extcon header file for consumer and provider device In-Reply-To: <59E6B90F.8000808@samsung.com> References: <1507630671-23536-1-git-send-email-cw00.choi@samsung.com> <59DEE429.2000608@samsung.com> <59E6B90F.8000808@samsung.com> Message-ID: To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Wednesday 18 October 2017 07:44 AM, Chanwoo Choi wrote: > Gently Ping. > > Dear Kishon, > > Could you please review this patch for 'drivers/phy/*'? sorry for the delay.. here it is Acked-by: Kishon Vijay Abraham I > > Regards, > Chanwoo Choi > > On 2017? 10? 12? 12:40, Chanwoo Choi wrote: >> Dear Kishon, >> >> Could you please review this patch? >> After that, I'll make the immutable brand and then send the pull request >> for power_supply, mfd, phy, usb and extcon framework. >> >> On 2017? 10? 10? 19:17, Chanwoo Choi wrote: >>> The extcon has two type of extcon devices as following. >>> - 'extcon provider deivce' adds new extcon device and detect the >>> state/properties of external connector. Also, it notifies the >>> state/properties to the extcon consumer device. >>> - 'extcon consumer device' gets the change state/properties >>> from extcon provider device. >>> Prior to that, include/linux/extcon.h contains all exported API for >>> both provider and consumer device driver. To clarify the meaning of >>> header file and to remove the wrong use-case on consumer device, >>> this patch separates into extcon.h and extcon-provider.h. >>> >>> [Description for include/linux/{extcon.h|extcon-provider.h}] >>> - extcon.h includes the extcon API and data structure for extcon consumer >>> device driver. This header file contains the following APIs: >>> : Register/unregister the notifier to catch the change of extcon device >>> : Get the extcon device instance >>> : Get the extcon device name >>> : Get the state of each external connector >>> : Get the property value of each external connector >>> : Get the property capability of each external connector >>> >>> - extcon-provider.h includes the extcon API and data structure for extcon >>> provider device driver. This header file contains the following APIs: >>> : Include 'include/linux/extcon.h' >>> : Allocate the memory for extcon device instance >>> : Register/unregister extcon device >>> : Set the state of each external connector >>> : Set the property value of each external connector >>> : Set the property capability of each external connector >>> >>> Cc: Felipe Balbi >>> Cc: Kishon Vijay Abraham I >>> Cc: Greg Kroah-Hartman >>> Acked-by: Sebastian Reichel >>> Acked-by: Chen-Yu Tsai >>> Acked-by: Charles Keepax >>> Acked-by: Lee Jones >>> Signed-off-by: Chanwoo Choi >>> --- >>> Changes from v1: >>> - Don't touch drivers/usb/renesas_usbhs/common.h. >>> - Add acked-by from Sebastian Reichel (for drivers/power/supply/) >>> - Add acked-by from Chen-Yu Tsai (for phy-sun4i-usb.c & extcon-axp288.c) >>> - Add acked-by from Charles Keepax (for drivers/extcon/extcon-arizona.c) >>> - Add acked-by from Lee Jones (fo include/linux/mfd/palmas.h) >>> >>> drivers/extcon/extcon-adc-jack.c | 2 +- >>> drivers/extcon/extcon-arizona.c | 2 +- >>> drivers/extcon/extcon-axp288.c | 2 +- >>> drivers/extcon/extcon-gpio.c | 2 +- >>> drivers/extcon/extcon-intel-cht-wc.c | 2 +- >>> drivers/extcon/extcon-intel-int3496.c | 2 +- >>> drivers/extcon/extcon-max14577.c | 2 +- >>> drivers/extcon/extcon-max3355.c | 2 +- >>> drivers/extcon/extcon-max77693.c | 2 +- >>> drivers/extcon/extcon-max77843.c | 2 +- >>> drivers/extcon/extcon-max8997.c | 2 +- >>> drivers/extcon/extcon-qcom-spmi-misc.c | 2 +- >>> drivers/extcon/extcon-rt8973a.c | 2 +- >>> drivers/extcon/extcon-sm5502.c | 2 +- >>> drivers/extcon/extcon-usb-gpio.c | 2 +- >>> drivers/extcon/extcon-usbc-cros-ec.c | 2 +- >>> drivers/extcon/extcon.h | 2 +- >>> drivers/phy/allwinner/phy-sun4i-usb.c | 2 +- >>> drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c | 2 +- >>> drivers/phy/renesas/phy-rcar-gen3-usb2.c | 2 +- >>> drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 2 +- >>> drivers/power/supply/qcom_smbb.c | 2 +- >>> drivers/usb/gadget/udc/renesas_usb3.c | 2 +- >>> drivers/usb/phy/phy-tahvo.c | 2 +- >>> include/linux/extcon-provider.h | 142 ++++++++++++++++++++++++++ >>> include/linux/extcon.h | 109 +------------------- >>> include/linux/mfd/palmas.h | 2 +- >>> 27 files changed, 172 insertions(+), 129 deletions(-) >>> create mode 100644 include/linux/extcon-provider.h >>> >>> diff --git a/drivers/extcon/extcon-adc-jack.c b/drivers/extcon/extcon-adc-jack.c >>> index 6f6537ab0a79..3877d86c746a 100644 >>> --- a/drivers/extcon/extcon-adc-jack.c >>> +++ b/drivers/extcon/extcon-adc-jack.c >>> @@ -26,7 +26,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> >>> /** >>> * struct adc_jack_data - internal data for adc_jack device driver >>> diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c >>> index f84da4a17724..da0e9bc4262f 100644 >>> --- a/drivers/extcon/extcon-arizona.c >>> +++ b/drivers/extcon/extcon-arizona.c >>> @@ -27,7 +27,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> >>> #include >>> >>> diff --git a/drivers/extcon/extcon-axp288.c b/drivers/extcon/extcon-axp288.c >>> index f4fd03e58e37..981fba56bc18 100644 >>> --- a/drivers/extcon/extcon-axp288.c >>> +++ b/drivers/extcon/extcon-axp288.c >>> @@ -22,7 +22,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-gpio.c b/drivers/extcon/extcon-gpio.c >>> index ebed22f22d75..ab770adcca7e 100644 >>> --- a/drivers/extcon/extcon-gpio.c >>> +++ b/drivers/extcon/extcon-gpio.c >>> @@ -17,7 +17,7 @@ >>> * GNU General Public License for more details. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-intel-cht-wc.c b/drivers/extcon/extcon-intel-cht-wc.c >>> index 91a0023074af..7c4bc8c44c3f 100644 >>> --- a/drivers/extcon/extcon-intel-cht-wc.c >>> +++ b/drivers/extcon/extcon-intel-cht-wc.c >>> @@ -15,7 +15,7 @@ >>> * more details. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-intel-int3496.c b/drivers/extcon/extcon-intel-int3496.c >>> index 1a45e745717d..c8691b5a9cb0 100644 >>> --- a/drivers/extcon/extcon-intel-int3496.c >>> +++ b/drivers/extcon/extcon-intel-int3496.c >>> @@ -19,7 +19,7 @@ >>> */ >>> >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-max14577.c b/drivers/extcon/extcon-max14577.c >>> index f6414b7fa5bc..6c2c9996eb71 100644 >>> --- a/drivers/extcon/extcon-max14577.c >>> +++ b/drivers/extcon/extcon-max14577.c >>> @@ -23,7 +23,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> >>> #define DELAY_MS_DEFAULT 17000 /* unit: millisecond */ >>> >>> diff --git a/drivers/extcon/extcon-max3355.c b/drivers/extcon/extcon-max3355.c >>> index 533e16a952b8..0aa410836f4e 100644 >>> --- a/drivers/extcon/extcon-max3355.c >>> +++ b/drivers/extcon/extcon-max3355.c >>> @@ -9,7 +9,7 @@ >>> * may be copied, distributed, and modified under those terms. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-max77693.c b/drivers/extcon/extcon-max77693.c >>> index 7a5856809047..643411066ad9 100644 >>> --- a/drivers/extcon/extcon-max77693.c >>> +++ b/drivers/extcon/extcon-max77693.c >>> @@ -26,7 +26,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> >>> diff --git a/drivers/extcon/extcon-max77843.c b/drivers/extcon/extcon-max77843.c >>> index 6e722d552cf1..28f251ff0fa2 100644 >>> --- a/drivers/extcon/extcon-max77843.c >>> +++ b/drivers/extcon/extcon-max77843.c >>> @@ -11,7 +11,7 @@ >>> * (at your option) any later version. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-max8997.c b/drivers/extcon/extcon-max8997.c >>> index 4a0612fb9c07..8152790d72e1 100644 >>> --- a/drivers/extcon/extcon-max8997.c >>> +++ b/drivers/extcon/extcon-max8997.c >>> @@ -25,7 +25,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> >>> #define DEV_NAME "max8997-muic" >>> diff --git a/drivers/extcon/extcon-qcom-spmi-misc.c b/drivers/extcon/extcon-qcom-spmi-misc.c >>> index b8cde096a808..660bbf163bf5 100644 >>> --- a/drivers/extcon/extcon-qcom-spmi-misc.c >>> +++ b/drivers/extcon/extcon-qcom-spmi-misc.c >>> @@ -15,7 +15,7 @@ >>> * GNU General Public License for more details. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-rt8973a.c b/drivers/extcon/extcon-rt8973a.c >>> index eaa355e7d9e4..e059bd5f2041 100644 >>> --- a/drivers/extcon/extcon-rt8973a.c >>> +++ b/drivers/extcon/extcon-rt8973a.c >>> @@ -20,7 +20,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> >>> #include "extcon-rt8973a.h" >>> >>> diff --git a/drivers/extcon/extcon-sm5502.c b/drivers/extcon/extcon-sm5502.c >>> index 106ef0297b53..0cfb5a3efdf6 100644 >>> --- a/drivers/extcon/extcon-sm5502.c >>> +++ b/drivers/extcon/extcon-sm5502.c >>> @@ -19,7 +19,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> >>> #include "extcon-sm5502.h" >>> >>> diff --git a/drivers/extcon/extcon-usb-gpio.c b/drivers/extcon/extcon-usb-gpio.c >>> index 9c925b05b7aa..53762864a9f7 100644 >>> --- a/drivers/extcon/extcon-usb-gpio.c >>> +++ b/drivers/extcon/extcon-usb-gpio.c >>> @@ -14,7 +14,7 @@ >>> * GNU General Public License for more details. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon-usbc-cros-ec.c b/drivers/extcon/extcon-usbc-cros-ec.c >>> index 598956f1dcae..6187f731b29d 100644 >>> --- a/drivers/extcon/extcon-usbc-cros-ec.c >>> +++ b/drivers/extcon/extcon-usbc-cros-ec.c >>> @@ -14,7 +14,7 @@ >>> * GNU General Public License for more details. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/extcon/extcon.h b/drivers/extcon/extcon.h >>> index dddddcfa0587..cc1b436eb66a 100644 >>> --- a/drivers/extcon/extcon.h >>> +++ b/drivers/extcon/extcon.h >>> @@ -1,7 +1,7 @@ >>> #ifndef __LINUX_EXTCON_INTERNAL_H__ >>> #define __LINUX_EXTCON_INTERNAL_H__ >>> >>> -#include >>> +#include >>> >>> /** >>> * struct extcon_dev - An extcon device represents one external connector. >>> diff --git a/drivers/phy/allwinner/phy-sun4i-usb.c b/drivers/phy/allwinner/phy-sun4i-usb.c >>> index 1161e11fb3cf..ef34f97f214b 100644 >>> --- a/drivers/phy/allwinner/phy-sun4i-usb.c >>> +++ b/drivers/phy/allwinner/phy-sun4i-usb.c >>> @@ -24,7 +24,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c b/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c >>> index d099a0c8cee5..7ceea5ae2704 100644 >>> --- a/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c >>> +++ b/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c >>> @@ -12,7 +12,7 @@ >>> */ >>> >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c >>> index 54c34298a000..b33e2994ccce 100644 >>> --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c >>> +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c >>> @@ -12,7 +12,7 @@ >>> * published by the Free Software Foundation. >>> */ >>> >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c >>> index ee7ce5ee53f9..5049dac79bd0 100644 >>> --- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c >>> +++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c >>> @@ -17,7 +17,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/power/supply/qcom_smbb.c b/drivers/power/supply/qcom_smbb.c >>> index f6a0d245731d..11de691b9a71 100644 >>> --- a/drivers/power/supply/qcom_smbb.c >>> +++ b/drivers/power/supply/qcom_smbb.c >>> @@ -34,7 +34,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> >>> #define SMBB_CHG_VMAX 0x040 >>> diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c >>> index df37c1e6e9d5..8b4d051fdbed 100644 >>> --- a/drivers/usb/gadget/udc/renesas_usb3.c >>> +++ b/drivers/usb/gadget/udc/renesas_usb3.c >>> @@ -12,7 +12,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/drivers/usb/phy/phy-tahvo.c b/drivers/usb/phy/phy-tahvo.c >>> index 8babd318c0ed..354e8c98af05 100644 >>> --- a/drivers/usb/phy/phy-tahvo.c >>> +++ b/drivers/usb/phy/phy-tahvo.c >>> @@ -23,7 +23,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> #include >>> diff --git a/include/linux/extcon-provider.h b/include/linux/extcon-provider.h >>> new file mode 100644 >>> index 000000000000..2feca5881fa7 >>> --- /dev/null >>> +++ b/include/linux/extcon-provider.h >>> @@ -0,0 +1,142 @@ >>> +/* >>> + * External Connector (extcon) framework >>> + * - linux/include/linux/extcon-provider.h for extcon provider device driver. >>> + * >>> + * Copyright (C) 2017 Samsung Electronics >>> + * Author: Chanwoo Choi >>> + * >>> + * This software is licensed under the terms of the GNU General Public >>> + * License version 2, as published by the Free Software Foundation, and >>> + * may be copied, distributed, and modified under those terms. >>> + * >>> + * This program is distributed in the hope that it will be useful, >>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >>> + * GNU General Public License for more details. >>> + */ >>> + >>> +#ifndef __LINUX_EXTCON_PROVIDER_H__ >>> +#define __LINUX_EXTCON_PROVIDER_H__ >>> + >>> +#include >>> + >>> +struct extcon_dev; >>> + >>> +#if IS_ENABLED(CONFIG_EXTCON) >>> + >>> +/* Following APIs register/unregister the extcon device. */ >>> +extern int extcon_dev_register(struct extcon_dev *edev); >>> +extern void extcon_dev_unregister(struct extcon_dev *edev); >>> +extern int devm_extcon_dev_register(struct device *dev, >>> + struct extcon_dev *edev); >>> +extern void devm_extcon_dev_unregister(struct device *dev, >>> + struct extcon_dev *edev); >>> + >>> +/* Following APIs allocate/free the memory of the extcon device. */ >>> +extern struct extcon_dev *extcon_dev_allocate(const unsigned int *cable); >>> +extern void extcon_dev_free(struct extcon_dev *edev); >>> +extern struct extcon_dev *devm_extcon_dev_allocate(struct device *dev, >>> + const unsigned int *cable); >>> +extern void devm_extcon_dev_free(struct device *dev, struct extcon_dev *edev); >>> + >>> +/* Synchronize the state and property value for each external connector. */ >>> +extern int extcon_sync(struct extcon_dev *edev, unsigned int id); >>> + >>> +/* >>> + * Following APIs set the connected state of each external connector. >>> + * The 'id' argument indicates the defined external connector. >>> + */ >>> +extern int extcon_set_state(struct extcon_dev *edev, unsigned int id, >>> + bool state); >>> +extern int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, >>> + bool state); >>> + >>> +/* >>> + * Following APIs set the property of each external connector. >>> + * The 'id' argument indicates the defined external connector >>> + * and the 'prop' indicates the extcon property. >>> + * >>> + * And extcon_set_property_capability() set the capability of the property >>> + * for each external connector. They are used to set the capability of the >>> + * property of each external connector based on the id and property. >>> + */ >>> +extern int extcon_set_property(struct extcon_dev *edev, unsigned int id, >>> + unsigned int prop, >>> + union extcon_property_value prop_val); >>> +extern int extcon_set_property_sync(struct extcon_dev *edev, unsigned int id, >>> + unsigned int prop, >>> + union extcon_property_value prop_val); >>> +extern int extcon_set_property_capability(struct extcon_dev *edev, >>> + unsigned int id, unsigned int prop); >>> + >>> +#else /* CONFIG_EXTCON */ >>> +static inline int extcon_dev_register(struct extcon_dev *edev) >>> +{ >>> + return 0; >>> +} >>> + >>> +static inline void extcon_dev_unregister(struct extcon_dev *edev) { } >>> + >>> +static inline int devm_extcon_dev_register(struct device *dev, >>> + struct extcon_dev *edev) >>> +{ >>> + return -EINVAL; >>> +} >>> + >>> +static inline void devm_extcon_dev_unregister(struct device *dev, >>> + struct extcon_dev *edev) { } >>> + >>> +static inline struct extcon_dev *extcon_dev_allocate(const unsigned int *cable) >>> +{ >>> + return ERR_PTR(-ENOSYS); >>> +} >>> + >>> +static inline void extcon_dev_free(struct extcon_dev *edev) { } >>> + >>> +static inline struct extcon_dev *devm_extcon_dev_allocate(struct device *dev, >>> + const unsigned int *cable) >>> +{ >>> + return ERR_PTR(-ENOSYS); >>> +} >>> + >>> +static inline void devm_extcon_dev_free(struct extcon_dev *edev) { } >>> + >>> + >>> +static inline int extcon_set_state(struct extcon_dev *edev, unsigned int id, >>> + bool state) >>> +{ >>> + return 0; >>> +} >>> + >>> +static inline int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, >>> + bool state) >>> +{ >>> + return 0; >>> +} >>> + >>> +static inline int extcon_sync(struct extcon_dev *edev, unsigned int id) >>> +{ >>> + return 0; >>> +} >>> + >>> +static inline int extcon_set_property(struct extcon_dev *edev, unsigned int id, >>> + unsigned int prop, >>> + union extcon_property_value prop_val) >>> +{ >>> + return 0; >>> +} >>> + >>> +static inline int extcon_set_property_sync(struct extcon_dev *edev, >>> + unsigned int id, unsigned int prop, >>> + union extcon_property_value prop_val) >>> +{ >>> + return 0; >>> +} >>> + >>> +static inline int extcon_set_property_capability(struct extcon_dev *edev, >>> + unsigned int id, unsigned int prop) >>> +{ >>> + return 0; >>> +} >>> +#endif /* CONFIG_EXTCON */ >>> +#endif /* __LINUX_EXTCON_PROVIDER_H__ */ >>> diff --git a/include/linux/extcon.h b/include/linux/extcon.h >>> index 744d60ca80c3..6d94e82c8ad9 100644 >>> --- a/include/linux/extcon.h >>> +++ b/include/linux/extcon.h >>> @@ -1,5 +1,6 @@ >>> /* >>> * External Connector (extcon) framework >>> + * - linux/include/linux/extcon.h for extcon consumer device driver. >>> * >>> * Copyright (C) 2015 Samsung Electronics >>> * Author: Chanwoo Choi >>> @@ -170,61 +171,29 @@ >>> int intval; /* type : integer (intval) */ >>> }; >>> >>> -struct extcon_cable; >>> struct extcon_dev; >>> >>> #if IS_ENABLED(CONFIG_EXTCON) >>> - >>> -/* Following APIs register/unregister the extcon device. */ >>> -extern int extcon_dev_register(struct extcon_dev *edev); >>> -extern void extcon_dev_unregister(struct extcon_dev *edev); >>> -extern int devm_extcon_dev_register(struct device *dev, >>> - struct extcon_dev *edev); >>> -extern void devm_extcon_dev_unregister(struct device *dev, >>> - struct extcon_dev *edev); >>> - >>> -/* Following APIs allocate/free the memory of the extcon device. */ >>> -extern struct extcon_dev *extcon_dev_allocate(const unsigned int *cable); >>> -extern void extcon_dev_free(struct extcon_dev *edev); >>> -extern struct extcon_dev *devm_extcon_dev_allocate(struct device *dev, >>> - const unsigned int *cable); >>> -extern void devm_extcon_dev_free(struct device *dev, struct extcon_dev *edev); >>> - >>> -/* Synchronize the state and property value for each external connector. */ >>> -extern int extcon_sync(struct extcon_dev *edev, unsigned int id); >>> - >>> /* >>> - * Following APIs get/set the connected state of each external connector. >>> + * Following APIs get the connected state of each external connector. >>> * The 'id' argument indicates the defined external connector. >>> */ >>> extern int extcon_get_state(struct extcon_dev *edev, unsigned int id); >>> -extern int extcon_set_state(struct extcon_dev *edev, unsigned int id, >>> - bool state); >>> -extern int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, >>> - bool state); >>> >>> /* >>> - * Following APIs get/set the property of each external connector. >>> + * Following APIs get the property of each external connector. >>> * The 'id' argument indicates the defined external connector >>> * and the 'prop' indicates the extcon property. >>> * >>> - * And extcon_get/set_property_capability() set the capability of the property >>> - * for each external connector. They are used to set the capability of the >>> + * And extcon_get_property_capability() get the capability of the property >>> + * for each external connector. They are used to get the capability of the >>> * property of each external connector based on the id and property. >>> */ >>> extern int extcon_get_property(struct extcon_dev *edev, unsigned int id, >>> unsigned int prop, >>> union extcon_property_value *prop_val); >>> -extern int extcon_set_property(struct extcon_dev *edev, unsigned int id, >>> - unsigned int prop, >>> - union extcon_property_value prop_val); >>> -extern int extcon_set_property_sync(struct extcon_dev *edev, unsigned int id, >>> - unsigned int prop, >>> - union extcon_property_value prop_val); >>> extern int extcon_get_property_capability(struct extcon_dev *edev, >>> unsigned int id, unsigned int prop); >>> -extern int extcon_set_property_capability(struct extcon_dev *edev, >>> - unsigned int id, unsigned int prop); >>> >>> /* >>> * Following APIs register the notifier block in order to detect >>> @@ -268,79 +237,17 @@ extern struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev, >>> extern const char *extcon_get_edev_name(struct extcon_dev *edev); >>> >>> #else /* CONFIG_EXTCON */ >>> -static inline int extcon_dev_register(struct extcon_dev *edev) >>> -{ >>> - return 0; >>> -} >>> - >>> -static inline void extcon_dev_unregister(struct extcon_dev *edev) { } >>> - >>> -static inline int devm_extcon_dev_register(struct device *dev, >>> - struct extcon_dev *edev) >>> -{ >>> - return -EINVAL; >>> -} >>> - >>> -static inline void devm_extcon_dev_unregister(struct device *dev, >>> - struct extcon_dev *edev) { } >>> - >>> -static inline struct extcon_dev *extcon_dev_allocate(const unsigned int *cable) >>> -{ >>> - return ERR_PTR(-ENOSYS); >>> -} >>> - >>> -static inline void extcon_dev_free(struct extcon_dev *edev) { } >>> - >>> -static inline struct extcon_dev *devm_extcon_dev_allocate(struct device *dev, >>> - const unsigned int *cable) >>> -{ >>> - return ERR_PTR(-ENOSYS); >>> -} >>> - >>> -static inline void devm_extcon_dev_free(struct extcon_dev *edev) { } >>> - >>> - >>> static inline int extcon_get_state(struct extcon_dev *edev, unsigned int id) >>> { >>> return 0; >>> } >>> >>> -static inline int extcon_set_state(struct extcon_dev *edev, unsigned int id, >>> - bool state) >>> -{ >>> - return 0; >>> -} >>> - >>> -static inline int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, >>> - bool state) >>> -{ >>> - return 0; >>> -} >>> - >>> -static inline int extcon_sync(struct extcon_dev *edev, unsigned int id) >>> -{ >>> - return 0; >>> -} >>> - >>> static inline int extcon_get_property(struct extcon_dev *edev, unsigned int id, >>> unsigned int prop, >>> union extcon_property_value *prop_val) >>> { >>> return 0; >>> } >>> -static inline int extcon_set_property(struct extcon_dev *edev, unsigned int id, >>> - unsigned int prop, >>> - union extcon_property_value prop_val) >>> -{ >>> - return 0; >>> -} >>> - >>> -static inline int extcon_set_property_sync(struct extcon_dev *edev, >>> - unsigned int id, unsigned int prop, >>> - union extcon_property_value prop_val) >>> -{ >>> - return 0; >>> -} >>> >>> static inline int extcon_get_property_capability(struct extcon_dev *edev, >>> unsigned int id, unsigned int prop) >>> @@ -348,12 +255,6 @@ static inline int extcon_get_property_capability(struct extcon_dev *edev, >>> return 0; >>> } >>> >>> -static inline int extcon_set_property_capability(struct extcon_dev *edev, >>> - unsigned int id, unsigned int prop) >>> -{ >>> - return 0; >>> -} >>> - >>> static inline int extcon_register_notifier(struct extcon_dev *edev, >>> unsigned int id, struct notifier_block *nb) >>> { >>> diff --git a/include/linux/mfd/palmas.h b/include/linux/mfd/palmas.h >>> index 6dec43826303..3c8568aa82a5 100644 >>> --- a/include/linux/mfd/palmas.h >>> +++ b/include/linux/mfd/palmas.h >>> @@ -20,7 +20,7 @@ >>> #include >>> #include >>> #include >>> -#include >>> +#include >>> #include >>> #include >>> >>> >> >>