From mboxrd@z Thu Jan 1 00:00:00 1970 From: Meghana Madhyastha Subject: Re: [PATCH v2] drm/tinydrm: Move backlight helpers to a separate file Date: Tue, 26 Sep 2017 18:19:18 +0530 Message-ID: <20170926124915.GA9756@meghana-HP-Pavilion-Notebook> References: <20170922150935.GA15912@meghana-HP-Pavilion-Notebook> <3dd313c8-daa7-a395-183c-c2dfac4dd4b4@tronnes.org> <20170926111650.GA7624@meghana-HP-Pavilion-Notebook> <20170926113214.ahxqmqspsd3olu73@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg0-x242.google.com (mail-pg0-x242.google.com [IPv6:2607:f8b0:400e:c05::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 704D86E0A8 for ; Tue, 26 Sep 2017 12:49:26 +0000 (UTC) Received: by mail-pg0-x242.google.com with SMTP id u18so6726854pgo.1 for ; Tue, 26 Sep 2017 05:49:26 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20170926113214.ahxqmqspsd3olu73@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , Noralf =?iso-8859-1?Q?Tr=F8nnes?= , dri-devel@lists.freedesktop.org, outreachy-kernel , seanpaul@chromium.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBTZXAgMjYsIDIwMTcgYXQgMDE6MzI6MTVQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUdWUsIFNlcCAyNiwgMjAxNyBhdCAwNDo0Njo1M1BNICswNTMwLCBNZWdoYW5h IE1hZGh5YXN0aGEgd3JvdGU6Cj4gPiBPbiBNb24sIFNlcCAyNSwgMjAxNyBhdCAwNjozMTo1OFBN ICswMjAwLCBOb3JhbGYgVHLDuG5uZXMgd3JvdGU6Cj4gPiA+IAo+ID4gPiBEZW4gMjUuMDkuMjAx NyAxNi41Niwgc2tyZXYgTm9yYWxmIFRyw7hubmVzOgo+ID4gPiA+SGkgTWVnaGFuYSwKPiA+ID4g Pgo+ID4gPiA+Cj4gPiA+ID5EZW4gMjIuMDkuMjAxNyAxNy4wOSwgc2tyZXYgTWVnaGFuYSBNYWRo eWFzdGhhOgo+ID4gPiA+Pk1vdmUgYmFja2xpZ2h0IGhlbHBlcnMgZnJvbSB0aW55ZHJtLWhlbHBl cnMuYyB0bwo+ID4gPiA+PnRpbnlkcm0tYmFja2xpZ2h0LmMuIFRoaXMgaXMgYmVjYXVzZSBpdCBp cyBvcmdhbml6YXRpb25hbGx5Cj4gPiA+ID4+c2ltcGxlciB0byB1bmRlcnN0YW5kIGFuZCBhZHZh bnRhZ2VvdXMgdG8gZ3JvdXAgZnVuY3Rpb25zCj4gPiA+ID4+cGVyZm9ybWluZyBhIHNpbWlsYXIg ZnVuY3Rpb24gdG8gYSBzZXBhcmF0ZSBmaWxlIGFzIG9wcG9zZWQgdG8KPiA+ID4gPj5oYXZpbmcg b25lIGhlbHBlciBmaWxlIHdpdGggaGV0ZXJlZ2Vub3VzIGhlbHBlciBmdW5jdGlvbnMuCj4gPiA+ ID4+Cj4gPiA+ID4+U2lnbmVkLW9mZi1ieTogTWVnaGFuYSBNYWRoeWFzdGhhIDxtZWdoYW5hLm1h ZGh5YXN0aGFAZ21haWwuY29tPgo+ID4gPiA+Pi0tLQo+ID4gPiA+Cj4gPiA+ID5JIGRvbid0IHRo aW5rIHRoZXJlIGlzIG11Y2ggZ2FpbiBpbiBqdXN0IG1vdmluZyB0aGUgY29kZSBsaWtlIHRoaXMu Cj4gPiA+ID4KPiA+ID4gPlRoZSBpZGVhIGlzIHRvIGFkZCBhIGRybV9iYWNrbGlnaHQgaGVscGVy IHRoYXQgY2FuIGJlIHVzZWZ1bCBmb3IgYWxsCj4gPiA+ID5EUk0gZHJpdmVycyB0aGF0IHVzZSB0 aGUgYmFja2xpZ2h0IHN1YnN5c3RlbS4KPiA+IAo+ID4gWWVzIEkgYWdyZWUuIFRoYXQgZGVmaW5p dGVseSBtYWtlcyBtb3JlIHNlbnNlLgo+ID4gPiAKPiA+ID4gVGhlIGZ1bGwgcGF0aCB0byB0aGF0 IGhlbHBlciB3b3VsZCBiZToKPiA+ID4gZHJpdmVycy9ncHUvZHJtL2RybV9iYWNrbGlnaHQuYwo+ ID4gPiAKPiA+ID4gPlRoaXMgaXMgd2hhdCB0aGUgVE9ETyBzYXlzOgo+ID4gPiA+aHR0cHM6Ly9k cmkuZnJlZWRlc2t0b3Aub3JnL2RvY3MvZHJtL2dwdS90b2RvLmh0bWwjdGlueWRybQo+ID4gPiA+ Cj4gPiA+ID4tIGJhY2tsaWdodCBoZWxwZXJzLCBwcm9iYWJseSBiZXN0IHRvIHB1dCB0aGVtIGlu dG8gYSBuZXcgZHJtX2JhY2tsaWdodC5jLgo+ID4gPiA+wqAgVGhpcyBpcyBiZWNhdXNlIGRyaXZl cnMvdmlkZW8gaXMgZGUtZmFjdG8gdW5tYWludGFpbmVkLiBXZSBjb3VsZCBhbHNvCj4gPiA+ID7C oCBtb3ZlIGRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0IHRvIGRyaXZlcnMvZ3B1L2JhY2tsaWdodCBh bmQgdGFrZSBpdCBhbGwKPiA+ID4gPsKgIG92ZXIgd2l0aGluIGRybS1taXNjLCBidXQgdGhhdOKA mXMgbW9yZSB3b3JrLgo+ID4gPiA+Cj4gPiA+ID5UaGVyZSBpcyBhbHNvIHRoaXMgZGlzY3Vzc2lv biB0byB0YWtlIGludG8gYWNjb3VudDoKPiA+ID4gPktNUyBiYWNrbGlnaHQgQUJJIHByb3Bvc2l0 aW9uCj4gPiA+ID5odHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9kcmktZGV2 ZWwvMjAxNy1GZWJydWFyeS8xMzMyMDYuaHRtbAo+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPkkgZG9u J3QgcmVtZW1iZXIgd2hhdCBjYW1lIG91dCBvZiB0aGF0IGRpc2N1c3Npb24uCj4gPiA+ID4KPiA+ ID4gPk5vcmFsZi4KPiA+IAo+ID4gQWZ0ZXIgaGF2aW5nIGRpc2N1c3NlZCB0aGlzIHdpdGggRGFu aWVsIG9uIHRoZSAjZHJpLWRldmVsIGlyYyBjaGFubmVsLCAKPiA+IGhlcmUgYXJlIHNvbWUgb2Yg dGhlIHBvaW50cyBzdWdnZXN0ZWQuCj4gPiAKPiA+IERhbmllbCBzdWdnZXN0ZWQgdGhhdCBJIGZp cnN0IGxvb2sgaW50byB0aGUgdXNhZ2Ugb2Ygc2hhcmVkIGJhY2tsaWdodAo+ID4gaGVscGVycyBp biBkcm0gKHNwZWNpZmljYWxseSBiYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyB0byBiZWdpbiB3aXRo KS4gVGhlIGlkZWEKPiA+IHdhcyB0byBzZWUgd2hldGhlciB0aGVyZSBpcyBhbnkgcGF0dGVybiBp biB1c2FnZSBhbmQvb3IgY29kZSBkdXBpY2F0aW9uLgo+ID4gSWYgdGhlcmUgaXMsIHRoZW4gdGhl IG5leHQgc3RlcCB3b3VsZCBiZSB0byB3cml0ZSBoZWxwZXIgZnVuY3Rpb25zIHdoaWNoCj4gPiBj YW4gYmUgdXNlZCBieSBvdGhlciBkcml2ZXJzIChhbmQgbm90IGp1c3QgdGlueWRybSkuIAo+ID4g Cj4gPiBUbyBzdGFydCB3aXRoLCBJIHdlbnQgdGhyb3VnaCB0aGUgaW5zdGFuY2VzIG9mIGJhY2ts aWdodF91cGRhdGVfc3RhdHVzCj4gPiBpbiB0aGUgZHJtIGNvZGUsIGFuZCBtYWRlIHRoZSBmb2xs b3dpbmcgb2JzZXJ2YXRpb25zKG1vc3Qgb2YgdGhlbSBhcmUKPiA+IHZlcnkgc2ltcGxlL25haXZl IG9ic2VydmF0aW9ucykuCj4gPiAKPiA+IC0gYmFja2xpZ2h0X3VwZGF0ZV9zdGF0dXMgaXMgdXN1 YWxseSBjYWxsZWQgaW4gYmFja2xpZ2h0IGluaXQgKGFuZAo+ID4gICBzb21ldGltZXMgZXhpdCkg ZnVuY3Rpb25zIG9mIHRoZSBkcml2ZXJzIGp1c3QgYWZ0ZXIgdGhlIGRldmljZSBpcyByZWdpc3Rl cmVkLgo+ID4gICBTbyBiYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyBpcyBjYWxsZWQgd2l0aCB0aGUg cmVnaXN0ZXJlZCBkZXZpY2UgYXMgdGhlCj4gPiAgIHBhcmFtZXRlci4KPiA+IAo+ID4gSGVyZSBh cmUgdGhlIGZvbGxvd2luZyBjYXNlcyBvZiBwcm9wZXJ0aWVzIGNoYW5nZWQvc2V0IGJlZm9yZSAK PiA+IGJhY2tsaWdodF91cGRhdGVfc3RhdHVzIGlzIGNhbGxlZC4KPiA+IAo+ID4gLSBDQVNFIDE6 IEJyaWdodG5lc3MgaXMgY2hhbmdlZCAoZWl0aGVyIGEgbWFjcm8gQlJJR0hUTkVTU19NQVhfTEVW RUwgMTAwCj4gPiAgIGlzIGRlZmluZWQgb3IgaXQgaXMgbWFudWFsbHkgc2V0KSBUaGlzIGhhcHBl bnMgaW4gdGhlIGZvbGxvd2luZyBmaWxlczoKPiA+IAo+ID4gICBnbWE1MDAvY2R2X2RldmljZS5j LCBnbWE1MDAvbWRmbGRfZGV2aWNlLmMsIGdtYTUwMC9vYWt0cmFpbF9kZXZpY2UuYywKPiA+ICAg Z21hNTAwL3BzYl9kZXZpY2UuYywgbm92ZWF1L25vdmVhdV9iYWNrbGlnaHQuYyhoZXJlIGJyaWdo dG5lc3MgaXMgZGV0ZXJtaW5lZCBieSBmdWN0aW9uCj4gPiAgIHN0YXRpYyBpbnQgbnY1MF9nZXRf aW50ZW5zaXR5KQo+ID4gCj4gPiAtIENBU0UgMjogUG93ZXIgcHJvcGVydHkgaXMgc2V0ICh0byBG Ql9CTEFOS19VTkJMQU5LIG1vc3RseSkKPiA+ICAgVGhpcyBoYXBwZW5zIGluIHRoZSBmb2xsb3dp bmcgZmlsZXM6Cj4gPiAKPiA+ICAgb21hcGRybS9kaXNwbGF5cy9wYW5lbC1kcGkuYywgcGFuZWwv cGFuZWwtaW5ub2x1eC1wMDc5emNhLmMsCj4gPiAgIHBhbmVsL3BhbmVsLWpkaS1sdDA3MG1lMDUw MDAuYywgcGFuZWwvcGFuZWwtc2hhcnAtbHExMDFyMXN4MDEuYywgCj4gPiAgIHBhbmVsL3BhbmVs LXNoYXJwLWxzMDQzdDFsZTAxLmMsIHRpbGNkYy90aWxjZGNfcGFuZWwuYwo+ID4gICAKPiA+IC0g Q0FTRSAzOiBTdGF0ZSBpcyBzZXQKPiA+ICAgVGhpcyBoYXBwZW5zIGluIHRoZSBmb2xsb3dpbmcg ZmlsZXM6Cj4gPiAKPiA+ICAgdGlueWRybS90aW55ZHJtLWhlbHBlcnMuYwo+ID4gCj4gPiAtIENB U0UgNDogUG93ZXIgYW5kIGJyaWdodG5lc3MgcHJvcGVydGllcyBhcmUgc2V0Cj4gPiAgIFRoaXMg aGFwcGVucyBpbiB0aGUgZm9sbG93aW5nIGZpbGVzOgo+ID4gCj4gPiAgIGF0b21iaW9zX2VuY29k ZXJzLmMsIHJhZGVvbi9yYWRlb25fbGVnYWN5X2VuY29kZXJzLmMsIAo+ID4gICBzaG1vYmlsZS9z aG1vYl9kcm1fYmFja2xpZ2h0LmMKPiA+IAo+ID4gLSBDQVNFIDU6IFBvd2VyIGFuZCB0aGUgc3Rh dGUgcHJvcGVydGllcyBhcmUgc2V0Cj4gPiAgIFRoaXMgaGFwcGVucyBpbiB0aGUgZm9sbG93aW5n IGZpbGVzOgo+ID4gCj4gPiAgIHBhbmVsL3BhbmVsLWx2ZHMuYywgcGFuZWwvcGFuZWwtcGFuYXNv bmljLXZ2eDEwZjAzNG4wMC5jLAo+ID4gICBwYW5lbC9wYW5lbC1zaW1wbGUuYywgcGFuZWwvcGFu ZWwtc2l0cm9uaXgtc3Q3Nzg5di5jCj4gPiAKPiA+IFBsZWFzZSBsZXQgbWUga25vdyBpZiBJIGFt IHdyb25nIC8gbWlzc2VkIHNvbWV0aGluZy4gQXMgZm9yIG5leHQgc3RlcHMsCj4gPiB3b3VsZG4n dCBpdCBiZSBhbiBvdmVya2lsbCB0byBoYXZlIGEgc2VwYXJhdGUgaGVscGVyIGZ1bmN0aW9uIGZv ciBlYWNoCj4gPiBvZiB0aGVzZSBjYXNlcyA/IFBlcmhhcHMgYSBnZW5lcmljIGhlbHBlciBmdW5j dGlvbiB3aGljaCB3b3VsZCBzb21laG93Cj4gPiBhZGRyZXNzIHRoZXNlIGNhc2VzIHdvdWxkIGJl IG1vcmUgYXBwcm9wcmlhdGUgPyBUaGFuayB5b3UgZm9yIHlvdXIKPiA+IHRpbWUvcGF0aWVuY2Uu Cj4gCj4gSSBzdXNwZWN0IHRoYXQgYSBsb3Qgb2YgdGhlc2UgY29tYmluYXRpb25zIGFyZSBqdXN0 IHBsYWluIHdyb25nLCBidXQKPiBoYXBwZW4gdG8ga2luZGEgd29yayB3aXRoIHRoZSBjb21iaW5h dGlvbiBvZiBncHUgZHJpdmVyIGFuZCBiYWNrbGlnaHQKPiBkcml2ZXIgdGhleSdyZSB1c2VkIG9u LiB0YmggSSBoYXZlIG5vIGlkZWEgd2hpY2ggb25lIGlzIHRoZSBjb3JyZWN0Cj4gdmVyc2lvbiBm b3IgZW5hYmxpbmcgYSBiYWNrbGlnaHQgY29ycmVjdGx5IC4uLgoKU28gZG9lcyB0aGlzIG1lYW4g dGhhdCBkaWZmZXJlbnQgZGV2aWNlcyByZXF1aXJlIGRpZmZlcmVudCBjb21iaW5hdGlvbnMKaW4g b3JkZXIgdG8gZW5hYmxlIGEgYmFja2xpZ2h0ID8gSXMgaXQgd3Jvbmcgb3IgaXMgaXQganVzdCB0 aGF0IGl0CmRlcGVuZHMgb24gdGhlIGdwdSBkcml2ZXIgPwoKPiBTbyBkZWZpbml0ZWx5IGEgZ29v ZCB0YXNrIHRvIHJlZmFjdG9yIHRoaXMgaW50byBhIHByb3BlciBoZWxwZXIsIGJ1dCBsb29rcwo+ IGEgbG90IG1vcmUgaW52b2x2ZWQgdGhhbiBhdCBmaXJzdCBzaWdodC4KClllcyBpdCBkb2VzIGxv b2sgbW9yZSBpbnZvbHZlZCB0aGFuIGl0IGRpZCBpbml0aWFsbHkuIFdvdWxkIGEgZ29vZApzdGFy dGluZyBwb2ludCBiZSB0aGVuIHRvIHRyeSB0byBmaW5kIG91dCBpZiB0aGVyZSBpcyBvbmUgY29t bW9uCmNvbWJpbmF0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gZW5hYmxlIGFueSBiYWNrbGlnaHQg ZGV2aWNlIG9mIGFueSBncHUKZHJpdmVyID8gIAoKPiBEbyB5b3UgaGF2ZSBhbnkgb2YgdGhlIGhh cmR3YXJlIHN1cHBvcnRlZCBieSBhbnkgb2YgdGhlc2UgZHJpdmVycz8gbHNtb2QKPiBhbmQgdGhl biBjb21wYXJpbmcgd2l0aCB0aGUgbW9kdWxlcyB5b3UncmUgYnVpbGRpbmcgaW4geW91ciBvd24g dHJlZQo+IHNob3VsZCBoZWxwIHlvdSBmaWd1cmUgdGhpcyBvdXQuCj4gLURhbmllbAoKSSBkb24n dCBoYXZlIGFsbCBvZiB0aGUgaGFyZHdhcmUuIEhvd2V2ZXIsIHNvbWUgb2YgdGhlIG1vZHVsZXMg c3VjaCBhcwpyYWRlb24sIGFtZGdwdSBhbmQgZ21hNTAwIGRyaXZlcnMgd2VyZSBzdWNjZXNzZnVs bHkgbG9hZGVkIHNvIG15IHN5c3RlbQpzdXBwb3J0cyBzb21lIG9mIHRoZSBoYXJkd2FyZS4KCi1N ZWdoYW5hCgo+ID4gCj4gPiAtTWVnaGFuYQo+ID4gCj4gPiA+ID4+Q2hhbmdlcyBpbiB2MjoKPiA+ ID4gPj7CoCAtSW1wcm92ZWQgY29tbWl0IG1lc3NhZ2UgYnkgZXhwbGFpbmluZyB3aHkgdGhlIGNo YW5nZXMgd2VyZSBtYWRlLgo+ID4gPiA+Pgo+ID4gPiA+PsKgIGRyaXZlcnMvZ3B1L2RybS90aW55 ZHJtL2NvcmUvTWFrZWZpbGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDIgKy0KPiA+ID4g Pj7CoCBkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9jb3JlL3Rpbnlkcm0tYmFja2xpZ2h0LmMgfCAx MDMKPiA+ID4gPj4rKysrKysrKysrKysrKysrKysrKysrKwo+ID4gPiA+PsKgIGRyaXZlcnMvZ3B1 L2RybS90aW55ZHJtL2NvcmUvdGlueWRybS1oZWxwZXJzLmPCoMKgIHzCoCA5NAo+ID4gPiA+Pi0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gPiA+PsKgIGRyaXZlcnMvZ3B1L2RybS90aW55ZHJtL21p MDI4M3F0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+ID4gPiA+PsKg IGRyaXZlcnMvZ3B1L2RybS90aW55ZHJtL21pcGktZGJpLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHzCoMKgIDEgKwo+ID4gPiA+PsKgIGluY2x1ZGUvZHJtL3Rpbnlkcm0vdGlueWRybS1i YWNrbGlnaHQuaMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTggKysrKwo+ID4gPiA+PsKgIDYgZmls ZXMgY2hhbmdlZCwgMTI0IGluc2VydGlvbnMoKyksIDk1IGRlbGV0aW9ucygtKQo+ID4gPiA+PsKg IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9jb3JlL3Rpbnlkcm0t YmFja2xpZ2h0LmMKPiA+ID4gPj7CoCBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vdGlu eWRybS90aW55ZHJtLWJhY2tsaWdodC5oCj4gPiA+ID4+Cj4gPiA+ID4+ZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS90aW55ZHJtL2NvcmUvTWFrZWZpbGUKPiA+ID4gPj5iL2RyaXZlcnMvZ3B1 L2RybS90aW55ZHJtL2NvcmUvTWFrZWZpbGUKPiA+ID4gPj5pbmRleCBmYjIyMWU2Li4zODljYTdh IDEwMDY0NAo+ID4gPiA+Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL2NvcmUvTWFrZWZp bGUKPiA+ID4gPj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9jb3JlL01ha2VmaWxlCj4g PiA+ID4+QEAgLTEsMyArMSwzIEBACj4gPiA+ID4+LXRpbnlkcm0teSA6PSB0aW55ZHJtLWNvcmUu byB0aW55ZHJtLXBpcGUubyB0aW55ZHJtLWhlbHBlcnMubwo+ID4gPiA+Pit0aW55ZHJtLXkgOj0g dGlueWRybS1jb3JlLm8gdGlueWRybS1waXBlLm8gdGlueWRybS1iYWNrbGlnaHQubwo+ID4gPiA+ PnRpbnlkcm0taGVscGVycy5vCj4gPiA+ID4+wqAgwqAgb2JqLSQoQ09ORklHX0RSTV9USU5ZRFJN KSArPSB0aW55ZHJtLm8KPiA+ID4gPj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlk cm0vY29yZS90aW55ZHJtLWJhY2tsaWdodC5jCj4gPiA+ID4+Yi9kcml2ZXJzL2dwdS9kcm0vdGlu eWRybS9jb3JlL3Rpbnlkcm0tYmFja2xpZ2h0LmMKPiA+ID4gPj5uZXcgZmlsZSBtb2RlIDEwMDY0 NAo+ID4gPiA+PmluZGV4IDAwMDAwMDAuLmRjNmYxN2QKPiA+ID4gPj4tLS0gL2Rldi9udWxsCj4g PiA+ID4+KysrIGIvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vY29yZS90aW55ZHJtLWJhY2tsaWdo dC5jCj4gPiA+ID4+QEAgLTAsMCArMSwxMDMgQEAKPiA+ID4gPj4rI2luY2x1ZGUgPGxpbnV4L2Jh Y2tsaWdodC5oPgo+ID4gPiA+PisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgo+ID4gPiA+Pisj aW5jbHVkZSA8bGludXgvcG0uaD4KPiA+ID4gPj4rI2luY2x1ZGUgPGxpbnV4L3N3YWIuaD4KPiA+ ID4gPj4rCj4gPiA+ID4+KyNpbmNsdWRlIDxkcm0vdGlueWRybS90aW55ZHJtLmg+Cj4gPiA+ID4+ KyNpbmNsdWRlIDxkcm0vdGlueWRybS90aW55ZHJtLWJhY2tsaWdodC5oPgo+ID4gPiA+PisKPiA+ ID4gPj4rLyoqCj4gPiA+ID4+KyAqIHRpbnlkcm1fb2ZfZmluZF9iYWNrbGlnaHQgLSBGaW5kIGJh Y2tsaWdodCBkZXZpY2UgaW4gZGV2aWNlLXRyZWUKPiA+ID4gPj4rICogQGRldjogRGV2aWNlCj4g PiA+ID4+KyAqCj4gPiA+ID4+KyAqIFRoaXMgZnVuY3Rpb24gbG9va3MgZm9yIGEgRFQgbm9kZSBw b2ludGVkIHRvIGJ5IGEgcHJvcGVydHkgbmFtZWQKPiA+ID4gPj4nYmFja2xpZ2h0Jwo+ID4gPiA+ PisgKiBhbmQgdXNlcyBvZl9maW5kX2JhY2tsaWdodF9ieV9ub2RlKCkgdG8gZ2V0IHRoZSBiYWNr bGlnaHQgZGV2aWNlLgo+ID4gPiA+PisgKiBBZGRpdGlvbmFsbHkgaWYgdGhlIGJyaWdodG5lc3Mg cHJvcGVydHkgaXMgemVybywgaXQgaXMgc2V0IHRvCj4gPiA+ID4+KyAqIG1heF9icmlnaHRuZXNz Lgo+ID4gPiA+PisgKgo+ID4gPiA+PisgKiBSZXR1cm5zOgo+ID4gPiA+PisgKiBOVUxMIGlmIHRo ZXJlJ3Mgbm8gYmFja2xpZ2h0IHByb3BlcnR5Lgo+ID4gPiA+PisgKiBFcnJvciBwb2ludGVyIC1F UFJPQkVfREVGRVIgaWYgdGhlIERUIG5vZGUgaXMgZm91bmQsIGJ1dCBubwo+ID4gPiA+PmJhY2ts aWdodCBkZXZpY2UKPiA+ID4gPj4rICogaXMgZm91bmQuCj4gPiA+ID4+KyAqIElmIHRoZSBiYWNr bGlnaHQgZGV2aWNlIGlzIGZvdW5kLCBhIHBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZSBpcwo+ID4g PiA+PnJldHVybmVkLgo+ID4gPiA+PisgKi8KPiA+ID4gPj4rCj4gPiA+ID4+K3N0cnVjdCBiYWNr bGlnaHRfZGV2aWNlICp0aW55ZHJtX29mX2ZpbmRfYmFja2xpZ2h0KHN0cnVjdCBkZXZpY2UgKmRl dikKPiA+ID4gPj4rewo+ID4gPiA+PivCoMKgwqAgc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJh Y2tsaWdodDsKPiA+ID4gPj4rwqDCoMKgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7Cj4gPiA+ID4+ Kwo+ID4gPiA+PivCoMKgwqAgbnAgPSBvZl9wYXJzZV9waGFuZGxlKGRldi0+b2Zfbm9kZSwgImJh Y2tsaWdodCIsIDApOwo+ID4gPiA+PivCoMKgwqAgaWYgKCFucCkKPiA+ID4gPj4rwqDCoMKgwqDC oMKgwqAgcmV0dXJuIE5VTEw7Cj4gPiA+ID4+Kwo+ID4gPiA+PivCoMKgwqAgYmFja2xpZ2h0ID0g b2ZfZmluZF9iYWNrbGlnaHRfYnlfbm9kZShucCk7Cj4gPiA+ID4+K8KgwqDCoCBvZl9ub2RlX3B1 dChucCk7Cj4gPiA+ID4+Kwo+ID4gPiA+PivCoMKgwqAgaWYgKCFiYWNrbGlnaHQpCj4gPiA+ID4+ K8KgwqDCoMKgwqDCoMKgIHJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpOwo+ID4gPiA+PisK PiA+ID4gPj4rwqDCoMKgIGlmICghYmFja2xpZ2h0LT5wcm9wcy5icmlnaHRuZXNzKSB7Cj4gPiA+ ID4+K8KgwqDCoMKgwqDCoMKgIGJhY2tsaWdodC0+cHJvcHMuYnJpZ2h0bmVzcyA9IGJhY2tsaWdo dC0+cHJvcHMubWF4X2JyaWdodG5lc3M7Cj4gPiA+ID4+K8KgwqDCoMKgwqDCoMKgIERSTV9ERUJV R19LTVMoIkJhY2tsaWdodCBicmlnaHRuZXNzIHNldCB0byAlZFxuIiwKPiA+ID4gPj4rwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiYWNrbGlnaHQtPnByb3BzLmJyaWdodG5lc3Mp Owo+ID4gPiA+PivCoMKgwqAgfQo+ID4gPiA+PisKPiA+ID4gPj4rwqDCoMKgIHJldHVybiBiYWNr bGlnaHQ7Cj4gPiA+ID4+K30KPiA+ID4gPj4rRVhQT1JUX1NZTUJPTCh0aW55ZHJtX29mX2ZpbmRf YmFja2xpZ2h0KTsKPiA+ID4gPj4rCj4gPiA+ID4+Ky8qKgo+ID4gPiA+PisgKiB0aW55ZHJtX2Vu YWJsZV9iYWNrbGlnaHQgLSBFbmFibGUgYmFja2xpZ2h0IGhlbHBlcgo+ID4gPiA+PisgKiBAYmFj a2xpZ2h0OiBCYWNrbGlnaHQgZGV2aWNlCj4gPiA+ID4+KyAqCj4gPiA+ID4+KyAqIFJldHVybnM6 Cj4gPiA+ID4+KyAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWls dXJlLgo+ID4gPiA+PisgKi8KPiA+ID4gPj4raW50IHRpbnlkcm1fZW5hYmxlX2JhY2tsaWdodChz dHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmFja2xpZ2h0KQo+ID4gPiA+Pit7Cj4gPiA+ID4+K8Kg wqDCoCB1bnNpZ25lZCBpbnQgb2xkX3N0YXRlOwo+ID4gPiA+PivCoMKgwqAgaW50IHJldDsKPiA+ ID4gPj4rCj4gPiA+ID4+K8KgwqDCoCBpZiAoIWJhY2tsaWdodCkKPiA+ID4gPj4rwqDCoMKgwqDC oMKgwqAgcmV0dXJuIDA7Cj4gPiA+ID4+Kwo+ID4gPiA+PivCoMKgwqAgb2xkX3N0YXRlID0gYmFj a2xpZ2h0LT5wcm9wcy5zdGF0ZTsKPiA+ID4gPj4rwqDCoMKgIGJhY2tsaWdodC0+cHJvcHMuc3Rh dGUgJj0gfkJMX0NPUkVfRkJCTEFOSzsKPiA+ID4gPj4rwqDCoMKgIERSTV9ERUJVR19LTVMoIkJh Y2tsaWdodCBzdGF0ZTogMHgleCAtPiAweCV4XG4iLCBvbGRfc3RhdGUsCj4gPiA+ID4+K8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJhY2tsaWdodC0+cHJvcHMuc3RhdGUpOwo+ID4gPiA+PisK PiA+ID4gPj4rwqDCoMKgIHJldCA9IGJhY2tsaWdodF91cGRhdGVfc3RhdHVzKGJhY2tsaWdodCk7 Cj4gPiA+ID4+K8KgwqDCoCBpZiAocmV0KQo+ID4gPiA+PivCoMKgwqDCoMKgwqDCoCBEUk1fRVJS T1IoIkZhaWxlZCB0byBlbmFibGUgYmFja2xpZ2h0ICVkXG4iLCByZXQpOwo+ID4gPiA+PisKPiA+ ID4gPj4rwqDCoMKgIHJldHVybiByZXQ7Cj4gPiA+ID4+K30KPiA+ID4gPj4rRVhQT1JUX1NZTUJP TCh0aW55ZHJtX2VuYWJsZV9iYWNrbGlnaHQpOwo+ID4gPiA+PisKPiA+ID4gPj4rLyoqCj4gPiA+ ID4+KyAqIHRpbnlkcm1fZGlzYWJsZV9iYWNrbGlnaHQgLSBEaXNhYmxlIGJhY2tsaWdodCBoZWxw ZXIKPiA+ID4gPj4rICogQGJhY2tsaWdodDogQmFja2xpZ2h0IGRldmljZQo+ID4gPiA+PisgKgo+ ID4gPiA+PisgKiBSZXR1cm5zOgo+ID4gPiA+PisgKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZl IGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiA+ID4gPj4rICovCj4gPiA+ID4+K2ludCB0aW55ZHJt X2Rpc2FibGVfYmFja2xpZ2h0KHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiYWNrbGlnaHQpCj4g PiA+ID4+K3sKPiA+ID4gPj4rwqDCoMKgIHVuc2lnbmVkIGludCBvbGRfc3RhdGU7Cj4gPiA+ID4+ K8KgwqDCoCBpbnQgcmV0Owo+ID4gPiA+PisKPiA+ID4gPj4rwqDCoMKgIGlmICghYmFja2xpZ2h0 KQo+ID4gPiA+PivCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPiA+ID4gPj4rCj4gPiA+ID4+K8Kg wqDCoCBvbGRfc3RhdGUgPSBiYWNrbGlnaHQtPnByb3BzLnN0YXRlOwo+ID4gPiA+PivCoMKgwqAg YmFja2xpZ2h0LT5wcm9wcy5zdGF0ZSB8PSBCTF9DT1JFX0ZCQkxBTks7Cj4gPiA+ID4+K8KgwqDC oCBEUk1fREVCVUdfS01TKCJCYWNrbGlnaHQgc3RhdGU6IDB4JXggLT4gMHgleFxuIiwgb2xkX3N0 YXRlLAo+ID4gPiA+PivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiYWNrbGlnaHQtPnByb3Bz LnN0YXRlKTsKPiA+ID4gPj4rwqDCoMKgIHJldCA9IGJhY2tsaWdodF91cGRhdGVfc3RhdHVzKGJh Y2tsaWdodCk7Cj4gPiA+ID4+K8KgwqDCoCBpZiAocmV0KQo+ID4gPiA+PivCoMKgwqDCoMKgwqDC oCBEUk1fRVJST1IoIkZhaWxlZCB0byBkaXNhYmxlIGJhY2tsaWdodCAlZFxuIiwgcmV0KTsKPiA+ ID4gPj4rCj4gPiA+ID4+K8KgwqDCoCByZXR1cm4gcmV0Owo+ID4gPiA+Pit9Cj4gPiA+ID4+K0VY UE9SVF9TWU1CT0wodGlueWRybV9kaXNhYmxlX2JhY2tsaWdodCk7Cj4gPiA+ID4+ZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL2NvcmUvdGlueWRybS1oZWxwZXJzLmMKPiA+ID4g Pj5iL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL2NvcmUvdGlueWRybS1oZWxwZXJzLmMKPiA+ID4g Pj5pbmRleCBiZDZjY2UwLi5lZThhZDhjIDEwMDY0NAo+ID4gPiA+Pi0tLSBhL2RyaXZlcnMvZ3B1 L2RybS90aW55ZHJtL2NvcmUvdGlueWRybS1oZWxwZXJzLmMKPiA+ID4gPj4rKysgYi9kcml2ZXJz L2dwdS9kcm0vdGlueWRybS9jb3JlL3Rpbnlkcm0taGVscGVycy5jCj4gPiA+ID4+QEAgLTIzNiwx MDAgKzIzNiw2IEBAIHZvaWQgdGlueWRybV94cmdiODg4OF90b19ncmF5OCh1OCAqZHN0LCB2b2lk Cj4gPiA+ID4+KnZhZGRyLCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+ID4gPj7CoCB9 Cj4gPiA+ID4+wqAgRVhQT1JUX1NZTUJPTCh0aW55ZHJtX3hyZ2I4ODg4X3RvX2dyYXk4KTsKPiA+ ID4gPj7CoCAtLyoqCj4gPiA+ID4+LSAqIHRpbnlkcm1fb2ZfZmluZF9iYWNrbGlnaHQgLSBGaW5k IGJhY2tsaWdodCBkZXZpY2UgaW4gZGV2aWNlLXRyZWUKPiA+ID4gPj4tICogQGRldjogRGV2aWNl Cj4gPiA+ID4+LSAqCj4gPiA+ID4+LSAqIFRoaXMgZnVuY3Rpb24gbG9va3MgZm9yIGEgRFQgbm9k ZSBwb2ludGVkIHRvIGJ5IGEgcHJvcGVydHkgbmFtZWQKPiA+ID4gPj4nYmFja2xpZ2h0Jwo+ID4g PiA+Pi0gKiBhbmQgdXNlcyBvZl9maW5kX2JhY2tsaWdodF9ieV9ub2RlKCkgdG8gZ2V0IHRoZSBi YWNrbGlnaHQgZGV2aWNlLgo+ID4gPiA+Pi0gKiBBZGRpdGlvbmFsbHkgaWYgdGhlIGJyaWdodG5l c3MgcHJvcGVydHkgaXMgemVybywgaXQgaXMgc2V0IHRvCj4gPiA+ID4+LSAqIG1heF9icmlnaHRu ZXNzLgo+ID4gPiA+Pi0gKgo+ID4gPiA+Pi0gKiBSZXR1cm5zOgo+ID4gPiA+Pi0gKiBOVUxMIGlm IHRoZXJlJ3Mgbm8gYmFja2xpZ2h0IHByb3BlcnR5Lgo+ID4gPiA+Pi0gKiBFcnJvciBwb2ludGVy IC1FUFJPQkVfREVGRVIgaWYgdGhlIERUIG5vZGUgaXMgZm91bmQsIGJ1dCBubwo+ID4gPiA+PmJh Y2tsaWdodCBkZXZpY2UKPiA+ID4gPj4tICogaXMgZm91bmQuCj4gPiA+ID4+LSAqIElmIHRoZSBi YWNrbGlnaHQgZGV2aWNlIGlzIGZvdW5kLCBhIHBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZSBpcwo+ ID4gPiA+PnJldHVybmVkLgo+ID4gPiA+Pi0gKi8KPiA+ID4gPj4tc3RydWN0IGJhY2tsaWdodF9k ZXZpY2UgKnRpbnlkcm1fb2ZfZmluZF9iYWNrbGlnaHQoc3RydWN0IGRldmljZSAqZGV2KQo+ID4g PiA+Pi17Cj4gPiA+ID4+LcKgwqDCoCBzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmFja2xpZ2h0 Owo+ID4gPiA+Pi3CoMKgwqAgc3RydWN0IGRldmljZV9ub2RlICpucDsKPiA+ID4gPj4tCj4gPiA+ ID4+LcKgwqDCoCBucCA9IG9mX3BhcnNlX3BoYW5kbGUoZGV2LT5vZl9ub2RlLCAiYmFja2xpZ2h0 IiwgMCk7Cj4gPiA+ID4+LcKgwqDCoCBpZiAoIW5wKQo+ID4gPiA+Pi3CoMKgwqDCoMKgwqDCoCBy ZXR1cm4gTlVMTDsKPiA+ID4gPj4tCj4gPiA+ID4+LcKgwqDCoCBiYWNrbGlnaHQgPSBvZl9maW5k X2JhY2tsaWdodF9ieV9ub2RlKG5wKTsKPiA+ID4gPj4twqDCoMKgIG9mX25vZGVfcHV0KG5wKTsK PiA+ID4gPj4tCj4gPiA+ID4+LcKgwqDCoCBpZiAoIWJhY2tsaWdodCkKPiA+ID4gPj4twqDCoMKg wqDCoMKgwqAgcmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7Cj4gPiA+ID4+LQo+ID4gPiA+ Pi3CoMKgwqAgaWYgKCFiYWNrbGlnaHQtPnByb3BzLmJyaWdodG5lc3MpIHsKPiA+ID4gPj4twqDC oMKgwqDCoMKgwqAgYmFja2xpZ2h0LT5wcm9wcy5icmlnaHRuZXNzID0gYmFja2xpZ2h0LT5wcm9w cy5tYXhfYnJpZ2h0bmVzczsKPiA+ID4gPj4twqDCoMKgwqDCoMKgwqAgRFJNX0RFQlVHX0tNUygi QmFja2xpZ2h0IGJyaWdodG5lc3Mgc2V0IHRvICVkXG4iLAo+ID4gPiA+Pi3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJhY2tsaWdodC0+cHJvcHMuYnJpZ2h0bmVzcyk7Cj4gPiA+ ID4+LcKgwqDCoCB9Cj4gPiA+ID4+LQo+ID4gPiA+Pi3CoMKgwqAgcmV0dXJuIGJhY2tsaWdodDsK PiA+ID4gPj4tfQo+ID4gPiA+Pi1FWFBPUlRfU1lNQk9MKHRpbnlkcm1fb2ZfZmluZF9iYWNrbGln aHQpOwo+ID4gPiA+Pi0KPiA+ID4gPj4tLyoqCj4gPiA+ID4+LSAqIHRpbnlkcm1fZW5hYmxlX2Jh Y2tsaWdodCAtIEVuYWJsZSBiYWNrbGlnaHQgaGVscGVyCj4gPiA+ID4+LSAqIEBiYWNrbGlnaHQ6 IEJhY2tsaWdodCBkZXZpY2UKPiA+ID4gPj4tICoKPiA+ID4gPj4tICogUmV0dXJuczoKPiA+ID4g Pj4tICogWmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4g PiA+ID4+LSAqLwo+ID4gPiA+Pi1pbnQgdGlueWRybV9lbmFibGVfYmFja2xpZ2h0KHN0cnVjdCBi YWNrbGlnaHRfZGV2aWNlICpiYWNrbGlnaHQpCj4gPiA+ID4+LXsKPiA+ID4gPj4twqDCoMKgIHVu c2lnbmVkIGludCBvbGRfc3RhdGU7Cj4gPiA+ID4+LcKgwqDCoCBpbnQgcmV0Owo+ID4gPiA+Pi0K PiA+ID4gPj4twqDCoMKgIGlmICghYmFja2xpZ2h0KQo+ID4gPiA+Pi3CoMKgwqDCoMKgwqDCoCBy ZXR1cm4gMDsKPiA+ID4gPj4tCj4gPiA+ID4+LcKgwqDCoCBvbGRfc3RhdGUgPSBiYWNrbGlnaHQt PnByb3BzLnN0YXRlOwo+ID4gPiA+Pi3CoMKgwqAgYmFja2xpZ2h0LT5wcm9wcy5zdGF0ZSAmPSB+ QkxfQ09SRV9GQkJMQU5LOwo+ID4gPiA+Pi3CoMKgwqAgRFJNX0RFQlVHX0tNUygiQmFja2xpZ2h0 IHN0YXRlOiAweCV4IC0+IDB4JXhcbiIsIG9sZF9zdGF0ZSwKPiA+ID4gPj4twqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgYmFja2xpZ2h0LT5wcm9wcy5zdGF0ZSk7Cj4gPiA+ID4+LQo+ID4gPiA+ Pi3CoMKgwqAgcmV0ID0gYmFja2xpZ2h0X3VwZGF0ZV9zdGF0dXMoYmFja2xpZ2h0KTsKPiA+ID4g Pj4twqDCoMKgIGlmIChyZXQpCj4gPiA+ID4+LcKgwqDCoMKgwqDCoMKgIERSTV9FUlJPUigiRmFp bGVkIHRvIGVuYWJsZSBiYWNrbGlnaHQgJWRcbiIsIHJldCk7Cj4gPiA+ID4+LQo+ID4gPiA+Pi3C oMKgwqAgcmV0dXJuIHJldDsKPiA+ID4gPj4tfQo+ID4gPiA+Pi1FWFBPUlRfU1lNQk9MKHRpbnlk cm1fZW5hYmxlX2JhY2tsaWdodCk7Cj4gPiA+ID4+LQo+ID4gPiA+Pi0vKioKPiA+ID4gPj4tICog dGlueWRybV9kaXNhYmxlX2JhY2tsaWdodCAtIERpc2FibGUgYmFja2xpZ2h0IGhlbHBlcgo+ID4g PiA+Pi0gKiBAYmFja2xpZ2h0OiBCYWNrbGlnaHQgZGV2aWNlCj4gPiA+ID4+LSAqCj4gPiA+ID4+ LSAqIFJldHVybnM6Cj4gPiA+ID4+LSAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3Ig Y29kZSBvbiBmYWlsdXJlLgo+ID4gPiA+Pi0gKi8KPiA+ID4gPj4taW50IHRpbnlkcm1fZGlzYWJs ZV9iYWNrbGlnaHQoc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJhY2tsaWdodCkKPiA+ID4gPj4t ewo+ID4gPiA+Pi3CoMKgwqAgdW5zaWduZWQgaW50IG9sZF9zdGF0ZTsKPiA+ID4gPj4twqDCoMKg IGludCByZXQ7Cj4gPiA+ID4+LQo+ID4gPiA+Pi3CoMKgwqAgaWYgKCFiYWNrbGlnaHQpCj4gPiA+ ID4+LcKgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+ID4gPiA+Pi0KPiA+ID4gPj4twqDCoMKgIG9s ZF9zdGF0ZSA9IGJhY2tsaWdodC0+cHJvcHMuc3RhdGU7Cj4gPiA+ID4+LcKgwqDCoCBiYWNrbGln aHQtPnByb3BzLnN0YXRlIHw9IEJMX0NPUkVfRkJCTEFOSzsKPiA+ID4gPj4twqDCoMKgIERSTV9E RUJVR19LTVMoIkJhY2tsaWdodCBzdGF0ZTogMHgleCAtPiAweCV4XG4iLCBvbGRfc3RhdGUsCj4g PiA+ID4+LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJhY2tsaWdodC0+cHJvcHMuc3RhdGUp Owo+ID4gPiA+Pi3CoMKgwqAgcmV0ID0gYmFja2xpZ2h0X3VwZGF0ZV9zdGF0dXMoYmFja2xpZ2h0 KTsKPiA+ID4gPj4twqDCoMKgIGlmIChyZXQpCj4gPiA+ID4+LcKgwqDCoMKgwqDCoMKgIERSTV9F UlJPUigiRmFpbGVkIHRvIGRpc2FibGUgYmFja2xpZ2h0ICVkXG4iLCByZXQpOwo+ID4gPiA+Pi0K PiA+ID4gPj4twqDCoMKgIHJldHVybiByZXQ7Cj4gPiA+ID4+LX0KPiA+ID4gPj4tRVhQT1JUX1NZ TUJPTCh0aW55ZHJtX2Rpc2FibGVfYmFja2xpZ2h0KTsKPiA+ID4gPj7CoCDCoCAjaWYgSVNfRU5B QkxFRChDT05GSUdfU1BJKQo+ID4gPiA+PsKgIGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dGlueWRybS9taTAyODNxdC5jCj4gPiA+ID4+Yi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9taTAy ODNxdC5jCj4gPiA+ID4+aW5kZXggN2U1YmI3ZC4uYzE2MWQ0NSAxMDA2NDQKPiA+ID4gPj4tLS0g YS9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9taTAyODNxdC5jCj4gPiA+ID4+KysrIGIvZHJpdmVy cy9ncHUvZHJtL3Rpbnlkcm0vbWkwMjgzcXQuYwo+ID4gPiA+PkBAIC0xMiw2ICsxMiw3IEBACj4g PiA+ID4+wqAgI2luY2x1ZGUgPGRybS90aW55ZHJtL2lsaTkzNDEuaD4KPiA+ID4gPj7CoCAjaW5j bHVkZSA8ZHJtL3Rpbnlkcm0vbWlwaS1kYmkuaD4KPiA+ID4gPj7CoCAjaW5jbHVkZSA8ZHJtL3Rp bnlkcm0vdGlueWRybS1oZWxwZXJzLmg+Cj4gPiA+ID4+KyNpbmNsdWRlIDxkcm0vdGlueWRybS90 aW55ZHJtLWJhY2tsaWdodC5oPgo+ID4gPiA+PsKgICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ ID4gPiA+PsKgICNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+Cj4gPiA+ID4+wqAgI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4gPiA+PmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdGlueWRybS9taXBpLWRiaS5jCj4gPiA+ID4+Yi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9t aXBpLWRiaS5jCj4gPiA+ID4+aW5kZXggMmNhZWFiYy4uZGM4NGYyNiAxMDA2NDQKPiA+ID4gPj4t LS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9taXBpLWRiaS5jCj4gPiA+ID4+KysrIGIvZHJp dmVycy9ncHUvZHJtL3Rpbnlkcm0vbWlwaS1kYmkuYwo+ID4gPiA+PkBAIC0xMSw2ICsxMSw3IEBA Cj4gPiA+ID4+wqAgwqAgI2luY2x1ZGUgPGRybS90aW55ZHJtL21pcGktZGJpLmg+Cj4gPiA+ID4+ wqAgI2luY2x1ZGUgPGRybS90aW55ZHJtL3Rpbnlkcm0taGVscGVycy5oPgo+ID4gPiA+PisjaW5j bHVkZSA8ZHJtL3Rpbnlkcm0vdGlueWRybS1iYWNrbGlnaHQuaD4KPiA+ID4gPj7CoCAjaW5jbHVk ZSA8bGludXgvZGVidWdmcy5oPgo+ID4gPiA+PsKgICNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+ Cj4gPiA+ID4+wqAgI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KPiA+ID4gPj5kaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vdGlueWRybS90aW55ZHJtLWJhY2tsaWdodC5oCj4gPiA+ID4+ Yi9pbmNsdWRlL2RybS90aW55ZHJtL3Rpbnlkcm0tYmFja2xpZ2h0LmgKPiA+ID4gPj5uZXcgZmls ZSBtb2RlIDEwMDY0NAo+ID4gPiA+PmluZGV4IDAwMDAwMDAuLjZhN2I2ZDUKPiA+ID4gPj4tLS0g L2Rldi9udWxsCj4gPiA+ID4+KysrIGIvaW5jbHVkZS9kcm0vdGlueWRybS90aW55ZHJtLWJhY2ts aWdodC5oCj4gPiA+ID4+QEAgLTAsMCArMSwxOCBAQAo+ID4gPiA+PisvKgo+ID4gPiA+PisgKiBD b3B5cmlnaHQgKEMpIDIwMTYgTm9yYWxmIFRyw7hubmVzCj4gPiA+ID4+KyAqCj4gPiA+ID4+KyAq IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Cj4gPiA+ID4+KyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cj4gPiA+ID4+KyAqIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y Cj4gPiA+ID4+KyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gPiA+ID4+ KyAqLwo+ID4gPiA+PisKPiA+ID4gPj4rI2lmbmRlZiBfX0xJTlVYX1RJTllEUk1fQkFDS0xJR0hU X0gKPiA+ID4gPj4rI2RlZmluZSBfX0xJTlVYX1RJTllEUk1fQkFDS0xJR0hUX0gKPiA+ID4gPj4r Cj4gPiA+ID4+K3N0cnVjdCBiYWNrbGlnaHRfZGV2aWNlOwo+ID4gPiA+PitzdHJ1Y3QgYmFja2xp Z2h0X2RldmljZSAqdGlueWRybV9vZl9maW5kX2JhY2tsaWdodChzdHJ1Y3QgZGV2aWNlICpkZXYp Owo+ID4gPiA+PitpbnQgdGlueWRybV9lbmFibGVfYmFja2xpZ2h0KHN0cnVjdCBiYWNrbGlnaHRf ZGV2aWNlICpiYWNrbGlnaHQpOwo+ID4gPiA+PitpbnQgdGlueWRybV9kaXNhYmxlX2JhY2tsaWdo dChzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmFja2xpZ2h0KTsKPiA+ID4gPj4rCj4gPiA+ID4+ KyNlbmRpZiAvKiBfX0xJTlVYX1RJTllEUk1fQkFDS0xJR0hUX0ggKi8KPiA+ID4gPgo+ID4gPiA+ X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gPmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+ID4gPmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPiA+ID4gPmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCj4gPiA+ID4KPiA+ID4gCj4gCj4gLS0gCj4gRGFuaWVsIFZldHRlcgo+IFNvZnR3 YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+IGh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6468555141619384320 X-Received: by 10.101.85.68 with SMTP id t4mr6856969pgr.4.1506430166849; Tue, 26 Sep 2017 05:49:26 -0700 (PDT) X-BeenThere: outreachy-kernel@googlegroups.com Received: by 10.200.35.203 with SMTP id r11ls4976283qtr.10.gmail; Tue, 26 Sep 2017 05:49:26 -0700 (PDT) X-Received: by 10.55.66.69 with SMTP id p66mr5324809qka.17.1506430166178; Tue, 26 Sep 2017 05:49:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506430166; cv=none; d=google.com; s=arc-20160816; b=N5WODE+71G+4nvO8rE2Sy/AkMoaXEM6gVqhrnuZTAeF/V/RChLouG7nYTaJU9pTcaj 4enstWdEhU+DTzgA2DuSycUWLTGnUht9Yy31ABsQgRav5Lu8Edyi0bMS88itQdok6OM8 3OndZanZRwP3f2mhH93cXTmv+xv/jSilFETR5HxcuKYp2gEqPWBd14khIEAGw15XH9As uUJL9+3H0rdgAwjnobRkqv4ac03srLP304kr+/ItYLPErLhWEu/3OMOIT1670wr6G665 nDJKYqUO8cu3ckHSfBI8SDJcnz1aHlnkiMVV3RH7rmqI4Zi/MDjZT2e3xF3Fck6Ch3w4 UdPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=user-agent:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:to :from:date:dkim-signature:arc-authentication-results; bh=5ifMarwy14ewc2kca8hesqTdEQU1CBH3B3PTyrhbBrc=; b=qjO2SHTkogkb0khZE7TbDd8oORog8+cVC6xydD1YySyYGglWbokoF8oib4+3xa2rsU +YAD9Eb/oESeJDGuXkS7kBgn8HBhPuUlTDybcDfvNk2yECS0xlU6pkc5ksfISrBpjiom 15+wkfZFha2mqdZQLCxR9ufNQT5cBMEjlnZVWetto2ZY4Bmx37iLm/CcBYFRUoY2s/eQ affYcOYfn2zVcJ4xC8M0ubxN6TLYBLskYQLNPjym8sazuyOiR3mHCsxT2hGub3D5jB3e QjC1xel1v+IUH4a871F7x43TJnKvRaMgq6Fx7jBbV9oZpKH6qYHdXSuc4zw9+D8ZvUs8 a1jA== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=irFX3muT; spf=pass (google.com: domain of meghana.madhyastha@gmail.com designates 2607:f8b0:400e:c05::244 as permitted sender) smtp.mailfrom=meghana.madhyastha@gmail.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from mail-pg0-x244.google.com (mail-pg0-x244.google.com. [2607:f8b0:400e:c05::244]) by gmr-mx.google.com with ESMTPS id f189si633080pfa.1.2017.09.26.05.49.26 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Sep 2017 05:49:26 -0700 (PDT) Received-SPF: pass (google.com: domain of meghana.madhyastha@gmail.com designates 2607:f8b0:400e:c05::244 as permitted sender) client-ip=2607:f8b0:400e:c05::244; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=irFX3muT; spf=pass (google.com: domain of meghana.madhyastha@gmail.com designates 2607:f8b0:400e:c05::244 as permitted sender) smtp.mailfrom=meghana.madhyastha@gmail.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: by mail-pg0-x244.google.com with SMTP id m30so6717619pgn.5 for ; Tue, 26 Sep 2017 05:49:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=5ifMarwy14ewc2kca8hesqTdEQU1CBH3B3PTyrhbBrc=; b=irFX3muTdtKAXOmo5/YQVDMwhlnkarRx1tqDL80sYQ5joyrHPI2dQBpSEKuzNY7VNW WP3iNfnutscK6Hp0xHb8MYyhPBOVfnYkh3OAT0MVCFjVLxhiqFnHcX2xpBCVN0/Pbov4 v1HxtYipbv6qzl5aOu0PF67UKV6YVYu4RYQboN+MfhLgfpq6/84E3dxgehH01rx/igg4 5CkESUS/GesDwZsVULftf35qyGbkJDmTm3TBLKYY/rYehDotfU94WnXao50VQNhhSTKq M87KKcFhInPsiDL7cYQQCEa0WWQYLiMYFZrYBp5+zijp/W2FGb35NRDW3sVa1/kl6WwJ /plQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=5ifMarwy14ewc2kca8hesqTdEQU1CBH3B3PTyrhbBrc=; b=ebtgG+dV5RWgYbHNUIi03MgkVAfEMNOyGVnvUcDIJRmnZK8gYvPh6djIh0CsMEHrOA xdhKhknOQxpY9Yma8d9nxyLjigFSNV8vrTsfW08Wb+4gwMaoMKCW8tj0woDkHt/5Ci4B YHrkbEYZrNNQV9mh5E6FJsG7ekEi7JMgNGor740Pkfgy2qZOhIPd5Fh2lpp6kg3cGMXD 6LktLHyZYN9c97MI9R4V1BffNuA8FETKTyh1qmGGnmxG+GT0h8FRonkm80ctsqdbiB/5 wmtDHWe1uy6UX5jZ28+yLaGsOwIRE5EZ3+NSgLSkPPDBaR2efzLCug3BlJdaEA4KHziK b9dA== X-Gm-Message-State: AHPjjUh7R0C5hjJ8L03HOn7SDd7oZpN0KHk6Ik7bOqQBe4MG40+2csqV pP+ILgRfxCfxAVPd/qeAoRA= X-Google-Smtp-Source: AOwi7QCII3uV0q/cc93xPIgdJ10sRvq7wy3Ey90PtAUuTSY1V72wshP/Z2xqhgMOdrTJjMpD2F8lHg== X-Received: by 10.98.212.26 with SMTP id a26mr10576734pfh.333.1506430165695; Tue, 26 Sep 2017 05:49:25 -0700 (PDT) Return-Path: Received: from meghana-HP-Pavilion-Notebook ([122.171.83.22]) by smtp.gmail.com with ESMTPSA id s62sm17261889pfe.91.2017.09.26.05.49.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Sep 2017 05:49:24 -0700 (PDT) Date: Tue, 26 Sep 2017 18:19:18 +0530 From: Meghana Madhyastha To: Daniel Vetter , Noralf =?iso-8859-1?Q?Tr=F8nnes?= , dri-devel@lists.freedesktop.org, outreachy-kernel , seanpaul@chromium.org Subject: Re: [PATCH v2] drm/tinydrm: Move backlight helpers to a separate file Message-ID: <20170926124915.GA9756@meghana-HP-Pavilion-Notebook> References: <20170922150935.GA15912@meghana-HP-Pavilion-Notebook> <3dd313c8-daa7-a395-183c-c2dfac4dd4b4@tronnes.org> <20170926111650.GA7624@meghana-HP-Pavilion-Notebook> <20170926113214.ahxqmqspsd3olu73@phenom.ffwll.local> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20170926113214.ahxqmqspsd3olu73@phenom.ffwll.local> User-Agent: Mutt/1.5.24 (2015-08-30) On Tue, Sep 26, 2017 at 01:32:15PM +0200, Daniel Vetter wrote: > On Tue, Sep 26, 2017 at 04:46:53PM +0530, Meghana Madhyastha wrote: > > On Mon, Sep 25, 2017 at 06:31:58PM +0200, Noralf Trønnes wrote: > > > > > > Den 25.09.2017 16.56, skrev Noralf Trønnes: > > > >Hi Meghana, > > > > > > > > > > > >Den 22.09.2017 17.09, skrev Meghana Madhyastha: > > > >>Move backlight helpers from tinydrm-helpers.c to > > > >>tinydrm-backlight.c. This is because it is organizationally > > > >>simpler to understand and advantageous to group functions > > > >>performing a similar function to a separate file as opposed to > > > >>having one helper file with heteregenous helper functions. > > > >> > > > >>Signed-off-by: Meghana Madhyastha > > > >>--- > > > > > > > >I don't think there is much gain in just moving the code like this. > > > > > > > >The idea is to add a drm_backlight helper that can be useful for all > > > >DRM drivers that use the backlight subsystem. > > > > Yes I agree. That definitely makes more sense. > > > > > > The full path to that helper would be: > > > drivers/gpu/drm/drm_backlight.c > > > > > > >This is what the TODO says: > > > >https://dri.freedesktop.org/docs/drm/gpu/todo.html#tinydrm > > > > > > > >- backlight helpers, probably best to put them into a new drm_backlight.c. > > > >  This is because drivers/video is de-facto unmaintained. We could also > > > >  move drivers/video/backlight to drivers/gpu/backlight and take it all > > > >  over within drm-misc, but that’s more work. > > > > > > > >There is also this discussion to take into account: > > > >KMS backlight ABI proposition > > > >https://lists.freedesktop.org/archives/dri-devel/2017-February/133206.html > > > > > > > > > > > >I don't remember what came out of that discussion. > > > > > > > >Noralf. > > > > After having discussed this with Daniel on the #dri-devel irc channel, > > here are some of the points suggested. > > > > Daniel suggested that I first look into the usage of shared backlight > > helpers in drm (specifically backlight_update_status to begin with). The idea > > was to see whether there is any pattern in usage and/or code dupication. > > If there is, then the next step would be to write helper functions which > > can be used by other drivers (and not just tinydrm). > > > > To start with, I went through the instances of backlight_update_status > > in the drm code, and made the following observations(most of them are > > very simple/naive observations). > > > > - backlight_update_status is usually called in backlight init (and > > sometimes exit) functions of the drivers just after the device is registered. > > So backlight_update_status is called with the registered device as the > > parameter. > > > > Here are the following cases of properties changed/set before > > backlight_update_status is called. > > > > - CASE 1: Brightness is changed (either a macro BRIGHTNESS_MAX_LEVEL 100 > > is defined or it is manually set) This happens in the following files: > > > > gma500/cdv_device.c, gma500/mdfld_device.c, gma500/oaktrail_device.c, > > gma500/psb_device.c, noveau/noveau_backlight.c(here brightness is determined by fuction > > static int nv50_get_intensity) > > > > - CASE 2: Power property is set (to FB_BLANK_UNBLANK mostly) > > This happens in the following files: > > > > omapdrm/displays/panel-dpi.c, panel/panel-innolux-p079zca.c, > > panel/panel-jdi-lt070me05000.c, panel/panel-sharp-lq101r1sx01.c, > > panel/panel-sharp-ls043t1le01.c, tilcdc/tilcdc_panel.c > > > > - CASE 3: State is set > > This happens in the following files: > > > > tinydrm/tinydrm-helpers.c > > > > - CASE 4: Power and brightness properties are set > > This happens in the following files: > > > > atombios_encoders.c, radeon/radeon_legacy_encoders.c, > > shmobile/shmob_drm_backlight.c > > > > - CASE 5: Power and the state properties are set > > This happens in the following files: > > > > panel/panel-lvds.c, panel/panel-panasonic-vvx10f034n00.c, > > panel/panel-simple.c, panel/panel-sitronix-st7789v.c > > > > Please let me know if I am wrong / missed something. As for next steps, > > wouldn't it be an overkill to have a separate helper function for each > > of these cases ? Perhaps a generic helper function which would somehow > > address these cases would be more appropriate ? Thank you for your > > time/patience. > > I suspect that a lot of these combinations are just plain wrong, but > happen to kinda work with the combination of gpu driver and backlight > driver they're used on. tbh I have no idea which one is the correct > version for enabling a backlight correctly ... So does this mean that different devices require different combinations in order to enable a backlight ? Is it wrong or is it just that it depends on the gpu driver ? > So definitely a good task to refactor this into a proper helper, but looks > a lot more involved than at first sight. Yes it does look more involved than it did initially. Would a good starting point be then to try to find out if there is one common combination that can be used to enable any backlight device of any gpu driver ? > Do you have any of the hardware supported by any of these drivers? lsmod > and then comparing with the modules you're building in your own tree > should help you figure this out. > -Daniel I don't have all of the hardware. However, some of the modules such as radeon, amdgpu and gma500 drivers were successfully loaded so my system supports some of the hardware. -Meghana > > > > -Meghana > > > > > >>Changes in v2: > > > >>  -Improved commit message by explaining why the changes were made. > > > >> > > > >>  drivers/gpu/drm/tinydrm/core/Makefile            |   2 +- > > > >>  drivers/gpu/drm/tinydrm/core/tinydrm-backlight.c | 103 > > > >>+++++++++++++++++++++++ > > > >>  drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c   |  94 > > > >>--------------------- > > > >>  drivers/gpu/drm/tinydrm/mi0283qt.c               |   1 + > > > >>  drivers/gpu/drm/tinydrm/mipi-dbi.c               |   1 + > > > >>  include/drm/tinydrm/tinydrm-backlight.h          |  18 ++++ > > > >>  6 files changed, 124 insertions(+), 95 deletions(-) > > > >>  create mode 100644 drivers/gpu/drm/tinydrm/core/tinydrm-backlight.c > > > >>  create mode 100644 include/drm/tinydrm/tinydrm-backlight.h > > > >> > > > >>diff --git a/drivers/gpu/drm/tinydrm/core/Makefile > > > >>b/drivers/gpu/drm/tinydrm/core/Makefile > > > >>index fb221e6..389ca7a 100644 > > > >>--- a/drivers/gpu/drm/tinydrm/core/Makefile > > > >>+++ b/drivers/gpu/drm/tinydrm/core/Makefile > > > >>@@ -1,3 +1,3 @@ > > > >>-tinydrm-y := tinydrm-core.o tinydrm-pipe.o tinydrm-helpers.o > > > >>+tinydrm-y := tinydrm-core.o tinydrm-pipe.o tinydrm-backlight.o > > > >>tinydrm-helpers.o > > > >>    obj-$(CONFIG_DRM_TINYDRM) += tinydrm.o > > > >>diff --git a/drivers/gpu/drm/tinydrm/core/tinydrm-backlight.c > > > >>b/drivers/gpu/drm/tinydrm/core/tinydrm-backlight.c > > > >>new file mode 100644 > > > >>index 0000000..dc6f17d > > > >>--- /dev/null > > > >>+++ b/drivers/gpu/drm/tinydrm/core/tinydrm-backlight.c > > > >>@@ -0,0 +1,103 @@ > > > >>+#include > > > >>+#include > > > >>+#include > > > >>+#include > > > >>+ > > > >>+#include > > > >>+#include > > > >>+ > > > >>+/** > > > >>+ * tinydrm_of_find_backlight - Find backlight device in device-tree > > > >>+ * @dev: Device > > > >>+ * > > > >>+ * This function looks for a DT node pointed to by a property named > > > >>'backlight' > > > >>+ * and uses of_find_backlight_by_node() to get the backlight device. > > > >>+ * Additionally if the brightness property is zero, it is set to > > > >>+ * max_brightness. > > > >>+ * > > > >>+ * Returns: > > > >>+ * NULL if there's no backlight property. > > > >>+ * Error pointer -EPROBE_DEFER if the DT node is found, but no > > > >>backlight device > > > >>+ * is found. > > > >>+ * If the backlight device is found, a pointer to the structure is > > > >>returned. > > > >>+ */ > > > >>+ > > > >>+struct backlight_device *tinydrm_of_find_backlight(struct device *dev) > > > >>+{ > > > >>+    struct backlight_device *backlight; > > > >>+    struct device_node *np; > > > >>+ > > > >>+    np = of_parse_phandle(dev->of_node, "backlight", 0); > > > >>+    if (!np) > > > >>+        return NULL; > > > >>+ > > > >>+    backlight = of_find_backlight_by_node(np); > > > >>+    of_node_put(np); > > > >>+ > > > >>+    if (!backlight) > > > >>+        return ERR_PTR(-EPROBE_DEFER); > > > >>+ > > > >>+    if (!backlight->props.brightness) { > > > >>+        backlight->props.brightness = backlight->props.max_brightness; > > > >>+        DRM_DEBUG_KMS("Backlight brightness set to %d\n", > > > >>+                  backlight->props.brightness); > > > >>+    } > > > >>+ > > > >>+    return backlight; > > > >>+} > > > >>+EXPORT_SYMBOL(tinydrm_of_find_backlight); > > > >>+ > > > >>+/** > > > >>+ * tinydrm_enable_backlight - Enable backlight helper > > > >>+ * @backlight: Backlight device > > > >>+ * > > > >>+ * Returns: > > > >>+ * Zero on success, negative error code on failure. > > > >>+ */ > > > >>+int tinydrm_enable_backlight(struct backlight_device *backlight) > > > >>+{ > > > >>+    unsigned int old_state; > > > >>+    int ret; > > > >>+ > > > >>+    if (!backlight) > > > >>+        return 0; > > > >>+ > > > >>+    old_state = backlight->props.state; > > > >>+    backlight->props.state &= ~BL_CORE_FBBLANK; > > > >>+    DRM_DEBUG_KMS("Backlight state: 0x%x -> 0x%x\n", old_state, > > > >>+              backlight->props.state); > > > >>+ > > > >>+    ret = backlight_update_status(backlight); > > > >>+    if (ret) > > > >>+        DRM_ERROR("Failed to enable backlight %d\n", ret); > > > >>+ > > > >>+    return ret; > > > >>+} > > > >>+EXPORT_SYMBOL(tinydrm_enable_backlight); > > > >>+ > > > >>+/** > > > >>+ * tinydrm_disable_backlight - Disable backlight helper > > > >>+ * @backlight: Backlight device > > > >>+ * > > > >>+ * Returns: > > > >>+ * Zero on success, negative error code on failure. > > > >>+ */ > > > >>+int tinydrm_disable_backlight(struct backlight_device *backlight) > > > >>+{ > > > >>+    unsigned int old_state; > > > >>+    int ret; > > > >>+ > > > >>+    if (!backlight) > > > >>+        return 0; > > > >>+ > > > >>+    old_state = backlight->props.state; > > > >>+    backlight->props.state |= BL_CORE_FBBLANK; > > > >>+    DRM_DEBUG_KMS("Backlight state: 0x%x -> 0x%x\n", old_state, > > > >>+              backlight->props.state); > > > >>+    ret = backlight_update_status(backlight); > > > >>+    if (ret) > > > >>+        DRM_ERROR("Failed to disable backlight %d\n", ret); > > > >>+ > > > >>+    return ret; > > > >>+} > > > >>+EXPORT_SYMBOL(tinydrm_disable_backlight); > > > >>diff --git a/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c > > > >>b/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c > > > >>index bd6cce0..ee8ad8c 100644 > > > >>--- a/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c > > > >>+++ b/drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c > > > >>@@ -236,100 +236,6 @@ void tinydrm_xrgb8888_to_gray8(u8 *dst, void > > > >>*vaddr, struct drm_framebuffer *fb, > > > >>  } > > > >>  EXPORT_SYMBOL(tinydrm_xrgb8888_to_gray8); > > > >>  -/** > > > >>- * tinydrm_of_find_backlight - Find backlight device in device-tree > > > >>- * @dev: Device > > > >>- * > > > >>- * This function looks for a DT node pointed to by a property named > > > >>'backlight' > > > >>- * and uses of_find_backlight_by_node() to get the backlight device. > > > >>- * Additionally if the brightness property is zero, it is set to > > > >>- * max_brightness. > > > >>- * > > > >>- * Returns: > > > >>- * NULL if there's no backlight property. > > > >>- * Error pointer -EPROBE_DEFER if the DT node is found, but no > > > >>backlight device > > > >>- * is found. > > > >>- * If the backlight device is found, a pointer to the structure is > > > >>returned. > > > >>- */ > > > >>-struct backlight_device *tinydrm_of_find_backlight(struct device *dev) > > > >>-{ > > > >>-    struct backlight_device *backlight; > > > >>-    struct device_node *np; > > > >>- > > > >>-    np = of_parse_phandle(dev->of_node, "backlight", 0); > > > >>-    if (!np) > > > >>-        return NULL; > > > >>- > > > >>-    backlight = of_find_backlight_by_node(np); > > > >>-    of_node_put(np); > > > >>- > > > >>-    if (!backlight) > > > >>-        return ERR_PTR(-EPROBE_DEFER); > > > >>- > > > >>-    if (!backlight->props.brightness) { > > > >>-        backlight->props.brightness = backlight->props.max_brightness; > > > >>-        DRM_DEBUG_KMS("Backlight brightness set to %d\n", > > > >>-                  backlight->props.brightness); > > > >>-    } > > > >>- > > > >>-    return backlight; > > > >>-} > > > >>-EXPORT_SYMBOL(tinydrm_of_find_backlight); > > > >>- > > > >>-/** > > > >>- * tinydrm_enable_backlight - Enable backlight helper > > > >>- * @backlight: Backlight device > > > >>- * > > > >>- * Returns: > > > >>- * Zero on success, negative error code on failure. > > > >>- */ > > > >>-int tinydrm_enable_backlight(struct backlight_device *backlight) > > > >>-{ > > > >>-    unsigned int old_state; > > > >>-    int ret; > > > >>- > > > >>-    if (!backlight) > > > >>-        return 0; > > > >>- > > > >>-    old_state = backlight->props.state; > > > >>-    backlight->props.state &= ~BL_CORE_FBBLANK; > > > >>-    DRM_DEBUG_KMS("Backlight state: 0x%x -> 0x%x\n", old_state, > > > >>-              backlight->props.state); > > > >>- > > > >>-    ret = backlight_update_status(backlight); > > > >>-    if (ret) > > > >>-        DRM_ERROR("Failed to enable backlight %d\n", ret); > > > >>- > > > >>-    return ret; > > > >>-} > > > >>-EXPORT_SYMBOL(tinydrm_enable_backlight); > > > >>- > > > >>-/** > > > >>- * tinydrm_disable_backlight - Disable backlight helper > > > >>- * @backlight: Backlight device > > > >>- * > > > >>- * Returns: > > > >>- * Zero on success, negative error code on failure. > > > >>- */ > > > >>-int tinydrm_disable_backlight(struct backlight_device *backlight) > > > >>-{ > > > >>-    unsigned int old_state; > > > >>-    int ret; > > > >>- > > > >>-    if (!backlight) > > > >>-        return 0; > > > >>- > > > >>-    old_state = backlight->props.state; > > > >>-    backlight->props.state |= BL_CORE_FBBLANK; > > > >>-    DRM_DEBUG_KMS("Backlight state: 0x%x -> 0x%x\n", old_state, > > > >>-              backlight->props.state); > > > >>-    ret = backlight_update_status(backlight); > > > >>-    if (ret) > > > >>-        DRM_ERROR("Failed to disable backlight %d\n", ret); > > > >>- > > > >>-    return ret; > > > >>-} > > > >>-EXPORT_SYMBOL(tinydrm_disable_backlight); > > > >>    #if IS_ENABLED(CONFIG_SPI) > > > >>  diff --git a/drivers/gpu/drm/tinydrm/mi0283qt.c > > > >>b/drivers/gpu/drm/tinydrm/mi0283qt.c > > > >>index 7e5bb7d..c161d45 100644 > > > >>--- a/drivers/gpu/drm/tinydrm/mi0283qt.c > > > >>+++ b/drivers/gpu/drm/tinydrm/mi0283qt.c > > > >>@@ -12,6 +12,7 @@ > > > >>  #include > > > >>  #include > > > >>  #include > > > >>+#include > > > >>  #include > > > >>  #include > > > >>  #include > > > >>diff --git a/drivers/gpu/drm/tinydrm/mipi-dbi.c > > > >>b/drivers/gpu/drm/tinydrm/mipi-dbi.c > > > >>index 2caeabc..dc84f26 100644 > > > >>--- a/drivers/gpu/drm/tinydrm/mipi-dbi.c > > > >>+++ b/drivers/gpu/drm/tinydrm/mipi-dbi.c > > > >>@@ -11,6 +11,7 @@ > > > >>    #include > > > >>  #include > > > >>+#include > > > >>  #include > > > >>  #include > > > >>  #include > > > >>diff --git a/include/drm/tinydrm/tinydrm-backlight.h > > > >>b/include/drm/tinydrm/tinydrm-backlight.h > > > >>new file mode 100644 > > > >>index 0000000..6a7b6d5 > > > >>--- /dev/null > > > >>+++ b/include/drm/tinydrm/tinydrm-backlight.h > > > >>@@ -0,0 +1,18 @@ > > > >>+/* > > > >>+ * Copyright (C) 2016 Noralf Trønnes > > > >>+ * > > > >>+ * This program is free software; you can redistribute it and/or modify > > > >>+ * it under the terms of the GNU General Public License as published by > > > >>+ * the Free Software Foundation; either version 2 of the License, or > > > >>+ * (at your option) any later version. > > > >>+ */ > > > >>+ > > > >>+#ifndef __LINUX_TINYDRM_BACKLIGHT_H > > > >>+#define __LINUX_TINYDRM_BACKLIGHT_H > > > >>+ > > > >>+struct backlight_device; > > > >>+struct backlight_device *tinydrm_of_find_backlight(struct device *dev); > > > >>+int tinydrm_enable_backlight(struct backlight_device *backlight); > > > >>+int tinydrm_disable_backlight(struct backlight_device *backlight); > > > >>+ > > > >>+#endif /* __LINUX_TINYDRM_BACKLIGHT_H */ > > > > > > > >_______________________________________________ > > > >dri-devel mailing list > > > >dri-devel@lists.freedesktop.org > > > >https://lists.freedesktop.org/mailman/listinfo/dri-devel > > > > > > > > > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch