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 16:46:53 +0530 Message-ID: <20170926111650.GA7624@meghana-HP-Pavilion-Notebook> References: <20170922150935.GA15912@meghana-HP-Pavilion-Notebook> <3dd313c8-daa7-a395-183c-c2dfac4dd4b4@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pf0-x243.google.com (mail-pf0-x243.google.com [IPv6:2607:f8b0:400e:c00::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9AA856E1E2 for ; Tue, 26 Sep 2017 11:17:03 +0000 (UTC) Received: by mail-pf0-x243.google.com with SMTP id h4so4887345pfk.0 for ; Tue, 26 Sep 2017 04:17:03 -0700 (PDT) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= , Daniel Vetter , outreachy-kernel , Sean Paul , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBTZXAgMjUsIDIwMTcgYXQgMDY6MzE6NThQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IAo+IERlbiAyNS4wOS4yMDE3IDE2LjU2LCBza3JldiBOb3JhbGYgVHLDuG5uZXM6 Cj4gPkhpIE1lZ2hhbmEsCj4gPgo+ID4KPiA+RGVuIDIyLjA5LjIwMTcgMTcuMDksIHNrcmV2IE1l Z2hhbmEgTWFkaHlhc3RoYToKPiA+Pk1vdmUgYmFja2xpZ2h0IGhlbHBlcnMgZnJvbSB0aW55ZHJt LWhlbHBlcnMuYyB0bwo+ID4+dGlueWRybS1iYWNrbGlnaHQuYy4gVGhpcyBpcyBiZWNhdXNlIGl0 IGlzIG9yZ2FuaXphdGlvbmFsbHkKPiA+PnNpbXBsZXIgdG8gdW5kZXJzdGFuZCBhbmQgYWR2YW50 YWdlb3VzIHRvIGdyb3VwIGZ1bmN0aW9ucwo+ID4+cGVyZm9ybWluZyBhIHNpbWlsYXIgZnVuY3Rp b24gdG8gYSBzZXBhcmF0ZSBmaWxlIGFzIG9wcG9zZWQgdG8KPiA+PmhhdmluZyBvbmUgaGVscGVy IGZpbGUgd2l0aCBoZXRlcmVnZW5vdXMgaGVscGVyIGZ1bmN0aW9ucy4KPiA+Pgo+ID4+U2lnbmVk LW9mZi1ieTogTWVnaGFuYSBNYWRoeWFzdGhhIDxtZWdoYW5hLm1hZGh5YXN0aGFAZ21haWwuY29t Pgo+ID4+LS0tCj4gPgo+ID5JIGRvbid0IHRoaW5rIHRoZXJlIGlzIG11Y2ggZ2FpbiBpbiBqdXN0 IG1vdmluZyB0aGUgY29kZSBsaWtlIHRoaXMuCj4gPgo+ID5UaGUgaWRlYSBpcyB0byBhZGQgYSBk cm1fYmFja2xpZ2h0IGhlbHBlciB0aGF0IGNhbiBiZSB1c2VmdWwgZm9yIGFsbAo+ID5EUk0gZHJp dmVycyB0aGF0IHVzZSB0aGUgYmFja2xpZ2h0IHN1YnN5c3RlbS4KClllcyBJIGFncmVlLiBUaGF0 IGRlZmluaXRlbHkgbWFrZXMgbW9yZSBzZW5zZS4KPiAKPiBUaGUgZnVsbCBwYXRoIHRvIHRoYXQg aGVscGVyIHdvdWxkIGJlOgo+IGRyaXZlcnMvZ3B1L2RybS9kcm1fYmFja2xpZ2h0LmMKPiAKPiA+ VGhpcyBpcyB3aGF0IHRoZSBUT0RPIHNheXM6Cj4gPmh0dHBzOi8vZHJpLmZyZWVkZXNrdG9wLm9y Zy9kb2NzL2RybS9ncHUvdG9kby5odG1sI3Rpbnlkcm0KPiA+Cj4gPi0gYmFja2xpZ2h0IGhlbHBl cnMsIHByb2JhYmx5IGJlc3QgdG8gcHV0IHRoZW0gaW50byBhIG5ldyBkcm1fYmFja2xpZ2h0LmMu Cj4gPsKgIFRoaXMgaXMgYmVjYXVzZSBkcml2ZXJzL3ZpZGVvIGlzIGRlLWZhY3RvIHVubWFpbnRh aW5lZC4gV2UgY291bGQgYWxzbwo+ID7CoCBtb3ZlIGRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0IHRv IGRyaXZlcnMvZ3B1L2JhY2tsaWdodCBhbmQgdGFrZSBpdCBhbGwKPiA+wqAgb3ZlciB3aXRoaW4g ZHJtLW1pc2MsIGJ1dCB0aGF04oCZcyBtb3JlIHdvcmsuCj4gPgo+ID5UaGVyZSBpcyBhbHNvIHRo aXMgZGlzY3Vzc2lvbiB0byB0YWtlIGludG8gYWNjb3VudDoKPiA+S01TIGJhY2tsaWdodCBBQkkg cHJvcG9zaXRpb24KPiA+aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvZHJp LWRldmVsLzIwMTctRmVicnVhcnkvMTMzMjA2Lmh0bWwKPiA+Cj4gPgo+ID5JIGRvbid0IHJlbWVt YmVyIHdoYXQgY2FtZSBvdXQgb2YgdGhhdCBkaXNjdXNzaW9uLgo+ID4KPiA+Tm9yYWxmLgoKQWZ0 ZXIgaGF2aW5nIGRpc2N1c3NlZCB0aGlzIHdpdGggRGFuaWVsIG9uIHRoZSAjZHJpLWRldmVsIGly YyBjaGFubmVsLCAKaGVyZSBhcmUgc29tZSBvZiB0aGUgcG9pbnRzIHN1Z2dlc3RlZC4KCkRhbmll bCBzdWdnZXN0ZWQgdGhhdCBJIGZpcnN0IGxvb2sgaW50byB0aGUgdXNhZ2Ugb2Ygc2hhcmVkIGJh Y2tsaWdodApoZWxwZXJzIGluIGRybSAoc3BlY2lmaWNhbGx5IGJhY2tsaWdodF91cGRhdGVfc3Rh dHVzIHRvIGJlZ2luIHdpdGgpLiBUaGUgaWRlYQp3YXMgdG8gc2VlIHdoZXRoZXIgdGhlcmUgaXMg YW55IHBhdHRlcm4gaW4gdXNhZ2UgYW5kL29yIGNvZGUgZHVwaWNhdGlvbi4KSWYgdGhlcmUgaXMs IHRoZW4gdGhlIG5leHQgc3RlcCB3b3VsZCBiZSB0byB3cml0ZSBoZWxwZXIgZnVuY3Rpb25zIHdo aWNoCmNhbiBiZSB1c2VkIGJ5IG90aGVyIGRyaXZlcnMgKGFuZCBub3QganVzdCB0aW55ZHJtKS4g CgpUbyBzdGFydCB3aXRoLCBJIHdlbnQgdGhyb3VnaCB0aGUgaW5zdGFuY2VzIG9mIGJhY2tsaWdo dF91cGRhdGVfc3RhdHVzCmluIHRoZSBkcm0gY29kZSwgYW5kIG1hZGUgdGhlIGZvbGxvd2luZyBv YnNlcnZhdGlvbnMobW9zdCBvZiB0aGVtIGFyZQp2ZXJ5IHNpbXBsZS9uYWl2ZSBvYnNlcnZhdGlv bnMpLgoKLSBiYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyBpcyB1c3VhbGx5IGNhbGxlZCBpbiBiYWNr bGlnaHQgaW5pdCAoYW5kCiAgc29tZXRpbWVzIGV4aXQpIGZ1bmN0aW9ucyBvZiB0aGUgZHJpdmVy cyBqdXN0IGFmdGVyIHRoZSBkZXZpY2UgaXMgcmVnaXN0ZXJlZC4KICBTbyBiYWNrbGlnaHRfdXBk YXRlX3N0YXR1cyBpcyBjYWxsZWQgd2l0aCB0aGUgcmVnaXN0ZXJlZCBkZXZpY2UgYXMgdGhlCiAg cGFyYW1ldGVyLgoKSGVyZSBhcmUgdGhlIGZvbGxvd2luZyBjYXNlcyBvZiBwcm9wZXJ0aWVzIGNo YW5nZWQvc2V0IGJlZm9yZSAKYmFja2xpZ2h0X3VwZGF0ZV9zdGF0dXMgaXMgY2FsbGVkLgoKLSBD QVNFIDE6IEJyaWdodG5lc3MgaXMgY2hhbmdlZCAoZWl0aGVyIGEgbWFjcm8gQlJJR0hUTkVTU19N QVhfTEVWRUwgMTAwCiAgaXMgZGVmaW5lZCBvciBpdCBpcyBtYW51YWxseSBzZXQpIFRoaXMgaGFw cGVucyBpbiB0aGUgZm9sbG93aW5nIGZpbGVzOgoKICBnbWE1MDAvY2R2X2RldmljZS5jLCBnbWE1 MDAvbWRmbGRfZGV2aWNlLmMsIGdtYTUwMC9vYWt0cmFpbF9kZXZpY2UuYywKICBnbWE1MDAvcHNi X2RldmljZS5jLCBub3ZlYXUvbm92ZWF1X2JhY2tsaWdodC5jKGhlcmUgYnJpZ2h0bmVzcyBpcyBk ZXRlcm1pbmVkIGJ5IGZ1Y3Rpb24KICBzdGF0aWMgaW50IG52NTBfZ2V0X2ludGVuc2l0eSkKCi0g Q0FTRSAyOiBQb3dlciBwcm9wZXJ0eSBpcyBzZXQgKHRvIEZCX0JMQU5LX1VOQkxBTksgbW9zdGx5 KQogIFRoaXMgaGFwcGVucyBpbiB0aGUgZm9sbG93aW5nIGZpbGVzOgoKICBvbWFwZHJtL2Rpc3Bs YXlzL3BhbmVsLWRwaS5jLCBwYW5lbC9wYW5lbC1pbm5vbHV4LXAwNzl6Y2EuYywKICBwYW5lbC9w YW5lbC1qZGktbHQwNzBtZTA1MDAwLmMsIHBhbmVsL3BhbmVsLXNoYXJwLWxxMTAxcjFzeDAxLmMs IAogIHBhbmVsL3BhbmVsLXNoYXJwLWxzMDQzdDFsZTAxLmMsIHRpbGNkYy90aWxjZGNfcGFuZWwu YwogIAotIENBU0UgMzogU3RhdGUgaXMgc2V0CiAgVGhpcyBoYXBwZW5zIGluIHRoZSBmb2xsb3dp bmcgZmlsZXM6CgogIHRpbnlkcm0vdGlueWRybS1oZWxwZXJzLmMKCi0gQ0FTRSA0OiBQb3dlciBh bmQgYnJpZ2h0bmVzcyBwcm9wZXJ0aWVzIGFyZSBzZXQKICBUaGlzIGhhcHBlbnMgaW4gdGhlIGZv bGxvd2luZyBmaWxlczoKCiAgYXRvbWJpb3NfZW5jb2RlcnMuYywgcmFkZW9uL3JhZGVvbl9sZWdh Y3lfZW5jb2RlcnMuYywgCiAgc2htb2JpbGUvc2htb2JfZHJtX2JhY2tsaWdodC5jCgotIENBU0Ug NTogUG93ZXIgYW5kIHRoZSBzdGF0ZSBwcm9wZXJ0aWVzIGFyZSBzZXQKICBUaGlzIGhhcHBlbnMg aW4gdGhlIGZvbGxvd2luZyBmaWxlczoKCiAgcGFuZWwvcGFuZWwtbHZkcy5jLCBwYW5lbC9wYW5l bC1wYW5hc29uaWMtdnZ4MTBmMDM0bjAwLmMsCiAgcGFuZWwvcGFuZWwtc2ltcGxlLmMsIHBhbmVs L3BhbmVsLXNpdHJvbml4LXN0Nzc4OXYuYwoKUGxlYXNlIGxldCBtZSBrbm93IGlmIEkgYW0gd3Jv bmcgLyBtaXNzZWQgc29tZXRoaW5nLiBBcyBmb3IgbmV4dCBzdGVwcywKd291bGRuJ3QgaXQgYmUg YW4gb3ZlcmtpbGwgdG8gaGF2ZSBhIHNlcGFyYXRlIGhlbHBlciBmdW5jdGlvbiBmb3IgZWFjaApv ZiB0aGVzZSBjYXNlcyA/IFBlcmhhcHMgYSBnZW5lcmljIGhlbHBlciBmdW5jdGlvbiB3aGljaCB3 b3VsZCBzb21laG93CmFkZHJlc3MgdGhlc2UgY2FzZXMgd291bGQgYmUgbW9yZSBhcHByb3ByaWF0 ZSA/IFRoYW5rIHlvdSBmb3IgeW91cgp0aW1lL3BhdGllbmNlLgoKLU1lZ2hhbmEKCj4gPj5DaGFu Z2VzIGluIHYyOgo+ID4+wqAgLUltcHJvdmVkIGNvbW1pdCBtZXNzYWdlIGJ5IGV4cGxhaW5pbmcg d2h5IHRoZSBjaGFuZ2VzIHdlcmUgbWFkZS4KPiA+Pgo+ID4+wqAgZHJpdmVycy9ncHUvZHJtL3Rp bnlkcm0vY29yZS9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArLQo+ID4+ wqAgZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vY29yZS90aW55ZHJtLWJhY2tsaWdodC5jIHwgMTAz Cj4gPj4rKysrKysrKysrKysrKysrKysrKysrKwo+ID4+wqAgZHJpdmVycy9ncHUvZHJtL3Rpbnlk cm0vY29yZS90aW55ZHJtLWhlbHBlcnMuY8KgwqAgfMKgIDk0Cj4gPj4tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiA+PsKgIGRyaXZlcnMvZ3B1L2RybS90aW55ZHJtL21pMDI4M3F0LmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+ID4+wqAgZHJpdmVycy9ncHUvZHJtL3Rpbnlk cm0vbWlwaS1kYmkuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArCj4gPj7C oCBpbmNsdWRlL2RybS90aW55ZHJtL3Rpbnlkcm0tYmFja2xpZ2h0LmjCoMKgwqDCoMKgwqDCoMKg wqAgfMKgIDE4ICsrKysKPiA+PsKgIDYgZmlsZXMgY2hhbmdlZCwgMTI0IGluc2VydGlvbnMoKyks IDk1IGRlbGV0aW9ucygtKQo+ID4+wqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS90aW55ZHJtL2NvcmUvdGlueWRybS1iYWNrbGlnaHQuYwo+ID4+wqAgY3JlYXRlIG1vZGUgMTAw NjQ0IGluY2x1ZGUvZHJtL3Rpbnlkcm0vdGlueWRybS1iYWNrbGlnaHQuaAo+ID4+Cj4gPj5kaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vY29yZS9NYWtlZmlsZQo+ID4+Yi9kcml2 ZXJzL2dwdS9kcm0vdGlueWRybS9jb3JlL01ha2VmaWxlCj4gPj5pbmRleCBmYjIyMWU2Li4zODlj YTdhIDEwMDY0NAo+ID4+LS0tIGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vY29yZS9NYWtlZmls ZQo+ID4+KysrIGIvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vY29yZS9NYWtlZmlsZQo+ID4+QEAg LTEsMyArMSwzIEBACj4gPj4tdGlueWRybS15IDo9IHRpbnlkcm0tY29yZS5vIHRpbnlkcm0tcGlw ZS5vIHRpbnlkcm0taGVscGVycy5vCj4gPj4rdGlueWRybS15IDo9IHRpbnlkcm0tY29yZS5vIHRp bnlkcm0tcGlwZS5vIHRpbnlkcm0tYmFja2xpZ2h0Lm8KPiA+PnRpbnlkcm0taGVscGVycy5vCj4g Pj7CoCDCoCBvYmotJChDT05GSUdfRFJNX1RJTllEUk0pICs9IHRpbnlkcm0ubwo+ID4+ZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL2NvcmUvdGlueWRybS1iYWNrbGlnaHQuYwo+ ID4+Yi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9jb3JlL3Rpbnlkcm0tYmFja2xpZ2h0LmMKPiA+ Pm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPj5pbmRleCAwMDAwMDAwLi5kYzZmMTdkCj4gPj4tLS0g L2Rldi9udWxsCj4gPj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9jb3JlL3Rpbnlkcm0t YmFja2xpZ2h0LmMKPiA+PkBAIC0wLDAgKzEsMTAzIEBACj4gPj4rI2luY2x1ZGUgPGxpbnV4L2Jh Y2tsaWdodC5oPgo+ID4+KyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+Cj4gPj4rI2luY2x1ZGUg PGxpbnV4L3BtLmg+Cj4gPj4rI2luY2x1ZGUgPGxpbnV4L3N3YWIuaD4KPiA+PisKPiA+PisjaW5j bHVkZSA8ZHJtL3Rpbnlkcm0vdGlueWRybS5oPgo+ID4+KyNpbmNsdWRlIDxkcm0vdGlueWRybS90 aW55ZHJtLWJhY2tsaWdodC5oPgo+ID4+Kwo+ID4+Ky8qKgo+ID4+KyAqIHRpbnlkcm1fb2ZfZmlu ZF9iYWNrbGlnaHQgLSBGaW5kIGJhY2tsaWdodCBkZXZpY2UgaW4gZGV2aWNlLXRyZWUKPiA+Pisg KiBAZGV2OiBEZXZpY2UKPiA+PisgKgo+ID4+KyAqIFRoaXMgZnVuY3Rpb24gbG9va3MgZm9yIGEg RFQgbm9kZSBwb2ludGVkIHRvIGJ5IGEgcHJvcGVydHkgbmFtZWQKPiA+PidiYWNrbGlnaHQnCj4g Pj4rICogYW5kIHVzZXMgb2ZfZmluZF9iYWNrbGlnaHRfYnlfbm9kZSgpIHRvIGdldCB0aGUgYmFj a2xpZ2h0IGRldmljZS4KPiA+PisgKiBBZGRpdGlvbmFsbHkgaWYgdGhlIGJyaWdodG5lc3MgcHJv cGVydHkgaXMgemVybywgaXQgaXMgc2V0IHRvCj4gPj4rICogbWF4X2JyaWdodG5lc3MuCj4gPj4r ICoKPiA+PisgKiBSZXR1cm5zOgo+ID4+KyAqIE5VTEwgaWYgdGhlcmUncyBubyBiYWNrbGlnaHQg cHJvcGVydHkuCj4gPj4rICogRXJyb3IgcG9pbnRlciAtRVBST0JFX0RFRkVSIGlmIHRoZSBEVCBu b2RlIGlzIGZvdW5kLCBidXQgbm8KPiA+PmJhY2tsaWdodCBkZXZpY2UKPiA+PisgKiBpcyBmb3Vu ZC4KPiA+PisgKiBJZiB0aGUgYmFja2xpZ2h0IGRldmljZSBpcyBmb3VuZCwgYSBwb2ludGVyIHRv IHRoZSBzdHJ1Y3R1cmUgaXMKPiA+PnJldHVybmVkLgo+ID4+KyAqLwo+ID4+Kwo+ID4+K3N0cnVj dCBiYWNrbGlnaHRfZGV2aWNlICp0aW55ZHJtX29mX2ZpbmRfYmFja2xpZ2h0KHN0cnVjdCBkZXZp Y2UgKmRldikKPiA+Pit7Cj4gPj4rwqDCoMKgIHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiYWNr bGlnaHQ7Cj4gPj4rwqDCoMKgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7Cj4gPj4rCj4gPj4rwqDC oMKgIG5wID0gb2ZfcGFyc2VfcGhhbmRsZShkZXYtPm9mX25vZGUsICJiYWNrbGlnaHQiLCAwKTsK PiA+PivCoMKgwqAgaWYgKCFucCkKPiA+PivCoMKgwqDCoMKgwqDCoCByZXR1cm4gTlVMTDsKPiA+ PisKPiA+PivCoMKgwqAgYmFja2xpZ2h0ID0gb2ZfZmluZF9iYWNrbGlnaHRfYnlfbm9kZShucCk7 Cj4gPj4rwqDCoMKgIG9mX25vZGVfcHV0KG5wKTsKPiA+PisKPiA+PivCoMKgwqAgaWYgKCFiYWNr bGlnaHQpCj4gPj4rwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7 Cj4gPj4rCj4gPj4rwqDCoMKgIGlmICghYmFja2xpZ2h0LT5wcm9wcy5icmlnaHRuZXNzKSB7Cj4g Pj4rwqDCoMKgwqDCoMKgwqAgYmFja2xpZ2h0LT5wcm9wcy5icmlnaHRuZXNzID0gYmFja2xpZ2h0 LT5wcm9wcy5tYXhfYnJpZ2h0bmVzczsKPiA+PivCoMKgwqDCoMKgwqDCoCBEUk1fREVCVUdfS01T KCJCYWNrbGlnaHQgYnJpZ2h0bmVzcyBzZXQgdG8gJWRcbiIsCj4gPj4rwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBiYWNrbGlnaHQtPnByb3BzLmJyaWdodG5lc3MpOwo+ID4+K8Kg wqDCoCB9Cj4gPj4rCj4gPj4rwqDCoMKgIHJldHVybiBiYWNrbGlnaHQ7Cj4gPj4rfQo+ID4+K0VY UE9SVF9TWU1CT0wodGlueWRybV9vZl9maW5kX2JhY2tsaWdodCk7Cj4gPj4rCj4gPj4rLyoqCj4g Pj4rICogdGlueWRybV9lbmFibGVfYmFja2xpZ2h0IC0gRW5hYmxlIGJhY2tsaWdodCBoZWxwZXIK PiA+PisgKiBAYmFja2xpZ2h0OiBCYWNrbGlnaHQgZGV2aWNlCj4gPj4rICoKPiA+PisgKiBSZXR1 cm5zOgo+ID4+KyAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWls dXJlLgo+ID4+KyAqLwo+ID4+K2ludCB0aW55ZHJtX2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGJh Y2tsaWdodF9kZXZpY2UgKmJhY2tsaWdodCkKPiA+Pit7Cj4gPj4rwqDCoMKgIHVuc2lnbmVkIGlu dCBvbGRfc3RhdGU7Cj4gPj4rwqDCoMKgIGludCByZXQ7Cj4gPj4rCj4gPj4rwqDCoMKgIGlmICgh YmFja2xpZ2h0KQo+ID4+K8KgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+ID4+Kwo+ID4+K8KgwqDC oCBvbGRfc3RhdGUgPSBiYWNrbGlnaHQtPnByb3BzLnN0YXRlOwo+ID4+K8KgwqDCoCBiYWNrbGln aHQtPnByb3BzLnN0YXRlICY9IH5CTF9DT1JFX0ZCQkxBTks7Cj4gPj4rwqDCoMKgIERSTV9ERUJV R19LTVMoIkJhY2tsaWdodCBzdGF0ZTogMHgleCAtPiAweCV4XG4iLCBvbGRfc3RhdGUsCj4gPj4r wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmFja2xpZ2h0LT5wcm9wcy5zdGF0ZSk7Cj4gPj4r Cj4gPj4rwqDCoMKgIHJldCA9IGJhY2tsaWdodF91cGRhdGVfc3RhdHVzKGJhY2tsaWdodCk7Cj4g Pj4rwqDCoMKgIGlmIChyZXQpCj4gPj4rwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJGYWlsZWQg dG8gZW5hYmxlIGJhY2tsaWdodCAlZFxuIiwgcmV0KTsKPiA+PisKPiA+PivCoMKgwqAgcmV0dXJu IHJldDsKPiA+Pit9Cj4gPj4rRVhQT1JUX1NZTUJPTCh0aW55ZHJtX2VuYWJsZV9iYWNrbGlnaHQp Owo+ID4+Kwo+ID4+Ky8qKgo+ID4+KyAqIHRpbnlkcm1fZGlzYWJsZV9iYWNrbGlnaHQgLSBEaXNh YmxlIGJhY2tsaWdodCBoZWxwZXIKPiA+PisgKiBAYmFja2xpZ2h0OiBCYWNrbGlnaHQgZGV2aWNl Cj4gPj4rICoKPiA+PisgKiBSZXR1cm5zOgo+ID4+KyAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRp dmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ID4+KyAqLwo+ID4+K2ludCB0aW55ZHJtX2Rpc2Fi bGVfYmFja2xpZ2h0KHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiYWNrbGlnaHQpCj4gPj4rewo+ ID4+K8KgwqDCoCB1bnNpZ25lZCBpbnQgb2xkX3N0YXRlOwo+ID4+K8KgwqDCoCBpbnQgcmV0Owo+ ID4+Kwo+ID4+K8KgwqDCoCBpZiAoIWJhY2tsaWdodCkKPiA+PivCoMKgwqDCoMKgwqDCoCByZXR1 cm4gMDsKPiA+PisKPiA+PivCoMKgwqAgb2xkX3N0YXRlID0gYmFja2xpZ2h0LT5wcm9wcy5zdGF0 ZTsKPiA+PivCoMKgwqAgYmFja2xpZ2h0LT5wcm9wcy5zdGF0ZSB8PSBCTF9DT1JFX0ZCQkxBTks7 Cj4gPj4rwqDCoMKgIERSTV9ERUJVR19LTVMoIkJhY2tsaWdodCBzdGF0ZTogMHgleCAtPiAweCV4 XG4iLCBvbGRfc3RhdGUsCj4gPj4rwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmFja2xpZ2h0 LT5wcm9wcy5zdGF0ZSk7Cj4gPj4rwqDCoMKgIHJldCA9IGJhY2tsaWdodF91cGRhdGVfc3RhdHVz KGJhY2tsaWdodCk7Cj4gPj4rwqDCoMKgIGlmIChyZXQpCj4gPj4rwqDCoMKgwqDCoMKgwqAgRFJN X0VSUk9SKCJGYWlsZWQgdG8gZGlzYWJsZSBiYWNrbGlnaHQgJWRcbiIsIHJldCk7Cj4gPj4rCj4g Pj4rwqDCoMKgIHJldHVybiByZXQ7Cj4gPj4rfQo+ID4+K0VYUE9SVF9TWU1CT0wodGlueWRybV9k aXNhYmxlX2JhY2tsaWdodCk7Cj4gPj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlk cm0vY29yZS90aW55ZHJtLWhlbHBlcnMuYwo+ID4+Yi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9j b3JlL3Rpbnlkcm0taGVscGVycy5jCj4gPj5pbmRleCBiZDZjY2UwLi5lZThhZDhjIDEwMDY0NAo+ ID4+LS0tIGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vY29yZS90aW55ZHJtLWhlbHBlcnMuYwo+ ID4+KysrIGIvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vY29yZS90aW55ZHJtLWhlbHBlcnMuYwo+ ID4+QEAgLTIzNiwxMDAgKzIzNiw2IEBAIHZvaWQgdGlueWRybV94cmdiODg4OF90b19ncmF5OCh1 OCAqZHN0LCB2b2lkCj4gPj4qdmFkZHIsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ID4+ wqAgfQo+ID4+wqAgRVhQT1JUX1NZTUJPTCh0aW55ZHJtX3hyZ2I4ODg4X3RvX2dyYXk4KTsKPiA+ PsKgIC0vKioKPiA+Pi0gKiB0aW55ZHJtX29mX2ZpbmRfYmFja2xpZ2h0IC0gRmluZCBiYWNrbGln aHQgZGV2aWNlIGluIGRldmljZS10cmVlCj4gPj4tICogQGRldjogRGV2aWNlCj4gPj4tICoKPiA+ Pi0gKiBUaGlzIGZ1bmN0aW9uIGxvb2tzIGZvciBhIERUIG5vZGUgcG9pbnRlZCB0byBieSBhIHBy b3BlcnR5IG5hbWVkCj4gPj4nYmFja2xpZ2h0Jwo+ID4+LSAqIGFuZCB1c2VzIG9mX2ZpbmRfYmFj a2xpZ2h0X2J5X25vZGUoKSB0byBnZXQgdGhlIGJhY2tsaWdodCBkZXZpY2UuCj4gPj4tICogQWRk aXRpb25hbGx5IGlmIHRoZSBicmlnaHRuZXNzIHByb3BlcnR5IGlzIHplcm8sIGl0IGlzIHNldCB0 bwo+ID4+LSAqIG1heF9icmlnaHRuZXNzLgo+ID4+LSAqCj4gPj4tICogUmV0dXJuczoKPiA+Pi0g KiBOVUxMIGlmIHRoZXJlJ3Mgbm8gYmFja2xpZ2h0IHByb3BlcnR5Lgo+ID4+LSAqIEVycm9yIHBv aW50ZXIgLUVQUk9CRV9ERUZFUiBpZiB0aGUgRFQgbm9kZSBpcyBmb3VuZCwgYnV0IG5vCj4gPj5i YWNrbGlnaHQgZGV2aWNlCj4gPj4tICogaXMgZm91bmQuCj4gPj4tICogSWYgdGhlIGJhY2tsaWdo dCBkZXZpY2UgaXMgZm91bmQsIGEgcG9pbnRlciB0byB0aGUgc3RydWN0dXJlIGlzCj4gPj5yZXR1 cm5lZC4KPiA+Pi0gKi8KPiA+Pi1zdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqdGlueWRybV9vZl9m aW5kX2JhY2tsaWdodChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gPj4tewo+ID4+LcKgwqDCoCBzdHJ1 Y3QgYmFja2xpZ2h0X2RldmljZSAqYmFja2xpZ2h0Owo+ID4+LcKgwqDCoCBzdHJ1Y3QgZGV2aWNl X25vZGUgKm5wOwo+ID4+LQo+ID4+LcKgwqDCoCBucCA9IG9mX3BhcnNlX3BoYW5kbGUoZGV2LT5v Zl9ub2RlLCAiYmFja2xpZ2h0IiwgMCk7Cj4gPj4twqDCoMKgIGlmICghbnApCj4gPj4twqDCoMKg wqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4gPj4tCj4gPj4twqDCoMKgIGJhY2tsaWdodCA9IG9mX2Zp bmRfYmFja2xpZ2h0X2J5X25vZGUobnApOwo+ID4+LcKgwqDCoCBvZl9ub2RlX3B1dChucCk7Cj4g Pj4tCj4gPj4twqDCoMKgIGlmICghYmFja2xpZ2h0KQo+ID4+LcKgwqDCoMKgwqDCoMKgIHJldHVy biBFUlJfUFRSKC1FUFJPQkVfREVGRVIpOwo+ID4+LQo+ID4+LcKgwqDCoCBpZiAoIWJhY2tsaWdo dC0+cHJvcHMuYnJpZ2h0bmVzcykgewo+ID4+LcKgwqDCoMKgwqDCoMKgIGJhY2tsaWdodC0+cHJv cHMuYnJpZ2h0bmVzcyA9IGJhY2tsaWdodC0+cHJvcHMubWF4X2JyaWdodG5lc3M7Cj4gPj4twqDC oMKgwqDCoMKgwqAgRFJNX0RFQlVHX0tNUygiQmFja2xpZ2h0IGJyaWdodG5lc3Mgc2V0IHRvICVk XG4iLAo+ID4+LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmFja2xpZ2h0LT5w cm9wcy5icmlnaHRuZXNzKTsKPiA+Pi3CoMKgwqAgfQo+ID4+LQo+ID4+LcKgwqDCoCByZXR1cm4g YmFja2xpZ2h0Owo+ID4+LX0KPiA+Pi1FWFBPUlRfU1lNQk9MKHRpbnlkcm1fb2ZfZmluZF9iYWNr bGlnaHQpOwo+ID4+LQo+ID4+LS8qKgo+ID4+LSAqIHRpbnlkcm1fZW5hYmxlX2JhY2tsaWdodCAt IEVuYWJsZSBiYWNrbGlnaHQgaGVscGVyCj4gPj4tICogQGJhY2tsaWdodDogQmFja2xpZ2h0IGRl dmljZQo+ID4+LSAqCj4gPj4tICogUmV0dXJuczoKPiA+Pi0gKiBaZXJvIG9uIHN1Y2Nlc3MsIG5l Z2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiA+Pi0gKi8KPiA+Pi1pbnQgdGlueWRybV9l bmFibGVfYmFja2xpZ2h0KHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiYWNrbGlnaHQpCj4gPj4t ewo+ID4+LcKgwqDCoCB1bnNpZ25lZCBpbnQgb2xkX3N0YXRlOwo+ID4+LcKgwqDCoCBpbnQgcmV0 Owo+ID4+LQo+ID4+LcKgwqDCoCBpZiAoIWJhY2tsaWdodCkKPiA+Pi3CoMKgwqDCoMKgwqDCoCBy ZXR1cm4gMDsKPiA+Pi0KPiA+Pi3CoMKgwqAgb2xkX3N0YXRlID0gYmFja2xpZ2h0LT5wcm9wcy5z dGF0ZTsKPiA+Pi3CoMKgwqAgYmFja2xpZ2h0LT5wcm9wcy5zdGF0ZSAmPSB+QkxfQ09SRV9GQkJM QU5LOwo+ID4+LcKgwqDCoCBEUk1fREVCVUdfS01TKCJCYWNrbGlnaHQgc3RhdGU6IDB4JXggLT4g MHgleFxuIiwgb2xkX3N0YXRlLAo+ID4+LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJhY2ts aWdodC0+cHJvcHMuc3RhdGUpOwo+ID4+LQo+ID4+LcKgwqDCoCByZXQgPSBiYWNrbGlnaHRfdXBk YXRlX3N0YXR1cyhiYWNrbGlnaHQpOwo+ID4+LcKgwqDCoCBpZiAocmV0KQo+ID4+LcKgwqDCoMKg wqDCoMKgIERSTV9FUlJPUigiRmFpbGVkIHRvIGVuYWJsZSBiYWNrbGlnaHQgJWRcbiIsIHJldCk7 Cj4gPj4tCj4gPj4twqDCoMKgIHJldHVybiByZXQ7Cj4gPj4tfQo+ID4+LUVYUE9SVF9TWU1CT0wo dGlueWRybV9lbmFibGVfYmFja2xpZ2h0KTsKPiA+Pi0KPiA+Pi0vKioKPiA+Pi0gKiB0aW55ZHJt X2Rpc2FibGVfYmFja2xpZ2h0IC0gRGlzYWJsZSBiYWNrbGlnaHQgaGVscGVyCj4gPj4tICogQGJh Y2tsaWdodDogQmFja2xpZ2h0IGRldmljZQo+ID4+LSAqCj4gPj4tICogUmV0dXJuczoKPiA+Pi0g KiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiA+Pi0g Ki8KPiA+Pi1pbnQgdGlueWRybV9kaXNhYmxlX2JhY2tsaWdodChzdHJ1Y3QgYmFja2xpZ2h0X2Rl dmljZSAqYmFja2xpZ2h0KQo+ID4+LXsKPiA+Pi3CoMKgwqAgdW5zaWduZWQgaW50IG9sZF9zdGF0 ZTsKPiA+Pi3CoMKgwqAgaW50IHJldDsKPiA+Pi0KPiA+Pi3CoMKgwqAgaWYgKCFiYWNrbGlnaHQp Cj4gPj4twqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4gPj4tCj4gPj4twqDCoMKgIG9sZF9zdGF0 ZSA9IGJhY2tsaWdodC0+cHJvcHMuc3RhdGU7Cj4gPj4twqDCoMKgIGJhY2tsaWdodC0+cHJvcHMu c3RhdGUgfD0gQkxfQ09SRV9GQkJMQU5LOwo+ID4+LcKgwqDCoCBEUk1fREVCVUdfS01TKCJCYWNr bGlnaHQgc3RhdGU6IDB4JXggLT4gMHgleFxuIiwgb2xkX3N0YXRlLAo+ID4+LcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGJhY2tsaWdodC0+cHJvcHMuc3RhdGUpOwo+ID4+LcKgwqDCoCByZXQg PSBiYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhiYWNrbGlnaHQpOwo+ID4+LcKgwqDCoCBpZiAocmV0 KQo+ID4+LcKgwqDCoMKgwqDCoMKgIERSTV9FUlJPUigiRmFpbGVkIHRvIGRpc2FibGUgYmFja2xp Z2h0ICVkXG4iLCByZXQpOwo+ID4+LQo+ID4+LcKgwqDCoCByZXR1cm4gcmV0Owo+ID4+LX0KPiA+ Pi1FWFBPUlRfU1lNQk9MKHRpbnlkcm1fZGlzYWJsZV9iYWNrbGlnaHQpOwo+ID4+wqAgwqAgI2lm IElTX0VOQUJMRUQoQ09ORklHX1NQSSkKPiA+PsKgIGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdGlueWRybS9taTAyODNxdC5jCj4gPj5iL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL21pMDI4 M3F0LmMKPiA+PmluZGV4IDdlNWJiN2QuLmMxNjFkNDUgMTAwNjQ0Cj4gPj4tLS0gYS9kcml2ZXJz L2dwdS9kcm0vdGlueWRybS9taTAyODNxdC5jCj4gPj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlu eWRybS9taTAyODNxdC5jCj4gPj5AQCAtMTIsNiArMTIsNyBAQAo+ID4+wqAgI2luY2x1ZGUgPGRy bS90aW55ZHJtL2lsaTkzNDEuaD4KPiA+PsKgICNpbmNsdWRlIDxkcm0vdGlueWRybS9taXBpLWRi aS5oPgo+ID4+wqAgI2luY2x1ZGUgPGRybS90aW55ZHJtL3Rpbnlkcm0taGVscGVycy5oPgo+ID4+ KyNpbmNsdWRlIDxkcm0vdGlueWRybS90aW55ZHJtLWJhY2tsaWdodC5oPgo+ID4+wqAgI2luY2x1 ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gPj7CoCAjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5o Pgo+ID4+wqAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4+ZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS90aW55ZHJtL21pcGktZGJpLmMKPiA+PmIvZHJpdmVycy9ncHUvZHJtL3Rpbnlk cm0vbWlwaS1kYmkuYwo+ID4+aW5kZXggMmNhZWFiYy4uZGM4NGYyNiAxMDA2NDQKPiA+Pi0tLSBh L2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL21pcGktZGJpLmMKPiA+PisrKyBiL2RyaXZlcnMvZ3B1 L2RybS90aW55ZHJtL21pcGktZGJpLmMKPiA+PkBAIC0xMSw2ICsxMSw3IEBACj4gPj7CoCDCoCAj aW5jbHVkZSA8ZHJtL3Rpbnlkcm0vbWlwaS1kYmkuaD4KPiA+PsKgICNpbmNsdWRlIDxkcm0vdGlu eWRybS90aW55ZHJtLWhlbHBlcnMuaD4KPiA+PisjaW5jbHVkZSA8ZHJtL3Rpbnlkcm0vdGlueWRy bS1iYWNrbGlnaHQuaD4KPiA+PsKgICNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+Cj4gPj7CoCAj aW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgo+ID4+wqAgI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29u c3VtZXIuaD4KPiA+PmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS90aW55ZHJtL3Rpbnlkcm0tYmFj a2xpZ2h0LmgKPiA+PmIvaW5jbHVkZS9kcm0vdGlueWRybS90aW55ZHJtLWJhY2tsaWdodC5oCj4g Pj5uZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4+aW5kZXggMDAwMDAwMC4uNmE3YjZkNQo+ID4+LS0t IC9kZXYvbnVsbAo+ID4+KysrIGIvaW5jbHVkZS9kcm0vdGlueWRybS90aW55ZHJtLWJhY2tsaWdo dC5oCj4gPj5AQCAtMCwwICsxLDE4IEBACj4gPj4rLyoKPiA+PisgKiBDb3B5cmlnaHQgKEMpIDIw MTYgTm9yYWxmIFRyw7hubmVzCj4gPj4rICoKPiA+PisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ID4+KyAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Cj4gPj4rICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiA+PisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgo+ID4+KyAqLwo+ID4+Kwo+ID4+KyNpZm5kZWYgX19MSU5VWF9USU5ZRFJN X0JBQ0tMSUdIVF9ICj4gPj4rI2RlZmluZSBfX0xJTlVYX1RJTllEUk1fQkFDS0xJR0hUX0gKPiA+ PisKPiA+PitzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZTsKPiA+PitzdHJ1Y3QgYmFja2xpZ2h0X2Rl dmljZSAqdGlueWRybV9vZl9maW5kX2JhY2tsaWdodChzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ID4+ K2ludCB0aW55ZHJtX2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJh Y2tsaWdodCk7Cj4gPj4raW50IHRpbnlkcm1fZGlzYWJsZV9iYWNrbGlnaHQoc3RydWN0IGJhY2ts aWdodF9kZXZpY2UgKmJhY2tsaWdodCk7Cj4gPj4rCj4gPj4rI2VuZGlmIC8qIF9fTElOVVhfVElO WURSTV9CQUNLTElHSFRfSCAqLwo+ID4KPiA+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiA+ZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+ID5kcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4gPgo+IApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6468555141619384320 X-Received: by 10.157.51.145 with SMTP id u17mr1059602otc.38.1506424623962; Tue, 26 Sep 2017 04:17:03 -0700 (PDT) X-BeenThere: outreachy-kernel@googlegroups.com Received: by 10.129.75.213 with SMTP id y204ls1569759ywa.16.gmail; Tue, 26 Sep 2017 04:17:03 -0700 (PDT) X-Received: by 10.13.228.132 with SMTP id n126mr6530913ywe.197.1506424623229; Tue, 26 Sep 2017 04:17:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506424623; cv=none; d=google.com; s=arc-20160816; b=ZmAOzGp1DrJsPBspi7MXwi7KAlUfnBPkF258Qkcjew5ENH0fCz/KP/o6xQpDbl6v99 i8O1p8S5s2nhC/h1dWuOr3FFyG/lQSYueNGhACllYVcadK63Jw78Yl85RiSv11BPD0SX 0jj7W3odw/xF0ikQv9Qs2VgOSvFrEVd4LBDHh7pfnkdwjIdJNr5PXsdc2EupglbRjEpQ thIq/u8azfolTLdFIeXRR/F/RITgsNwKcLCTMm3TjcDG2mpp7nukk5Od/TwoQVyRbUNT mm+2BSZTbDdECk9PhPE5FRYq5YPigPKn27qCXM4WLFz7qMMk+Tg0bQJPujh5rOxAAIak 4wVQ== 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=7VxaQVQ40dzz43S83YjV0ktxO7/ynkROthrOUTUZZ/E=; b=g9h6VYZ7MFyL3fzTPtwlTzePm6NG4wectzDE6Ervpg+4newJV1+Hysg09Jg/8RUAZj qX1fQexiQDm5Smw2RoXzlHWgF/OgmnkSF896FI77AysoTSt8haS6bjEqnVanz+hgOVb0 jUbiie90TtZdTk0r3PFCQdWZi9DV3INbQXpYwzyOatBhQPCSHdU4TN3N/dzKVoDQT7pc pmlSz9UzmptNG84RIaZ8kT+P4ObNAetykMTZmAlCGNnvNEJupu5PQVOe3f1fVVlgRWcf yXAT7yANCwMhg37K+IavE3OgBtEm5KPQOkPcuYdPEdcNFCIct53SR3b3v1NvPzYmPAZc s8gQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=mkUJx4Df; spf=pass (google.com: domain of meghana.madhyastha@gmail.com designates 2607:f8b0:400e:c00::242 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-pf0-x242.google.com (mail-pf0-x242.google.com. [2607:f8b0:400e:c00::242]) by gmr-mx.google.com with ESMTPS id f189si616915pfa.1.2017.09.26.04.17.03 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Sep 2017 04:17:03 -0700 (PDT) Received-SPF: pass (google.com: domain of meghana.madhyastha@gmail.com designates 2607:f8b0:400e:c00::242 as permitted sender) client-ip=2607:f8b0:400e:c00::242; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=mkUJx4Df; spf=pass (google.com: domain of meghana.madhyastha@gmail.com designates 2607:f8b0:400e:c00::242 as permitted sender) smtp.mailfrom=meghana.madhyastha@gmail.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: by mail-pf0-x242.google.com with SMTP id f84so4879938pfj.3 for ; Tue, 26 Sep 2017 04:17:03 -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=7VxaQVQ40dzz43S83YjV0ktxO7/ynkROthrOUTUZZ/E=; b=mkUJx4DfNNAyvQ2+jMZy5vVBqxiXT9LV4C8rXhDViuxa7JGK09pBFRA/r8X69VqYd6 r+N85sba7fBy+VmNX+nIghg0aBUb/zpY1YNCYfSFnV6IEf8KzmzjoyjEjHzT2TEBDRUG 4DfIm3/A/q3/dOi2s6EX/FO4pyHQfv+HaRmnoHcXvep+f2pni6fCFN1amllC2m9pVpMB deGDp3LQhwSU+tdCLupnMIIBXDe4WC2NaR6hQY1VJ5mzk8+vyHUz22ZgxhUUOoyetjOt EE2f4fn/d0ZOHC+EA4UeULTURx6uhSzbOhbykEsjssPRoOp2kNXM6szd4CuIytAi3IH/ eytA== 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=7VxaQVQ40dzz43S83YjV0ktxO7/ynkROthrOUTUZZ/E=; b=O/eBn5xYFlAdQgXKkbYJ9gic6c7Nevhp5iqzdgvxpbywMf9PlAUVAyF+G9s3CFC71H c9mHeqgwBK5flO4ADzR+yr5QWzikLem4sVbWygLzYI4yNS15laoa8ehZtTagFLxh9RYQ kEiXuep6aahu/ES4wpArv500M8OEdtI0kNNE7ssTXIdqgTGPAhExirl0vZlGijY8JO/p LlInojS7xAd94TjwEz59DFIIzYFzlfrDjoQFlvYBZ9jRlUmI2hTWTFUtRQitw6OxpHci iMxrHOTdWckvtlufusd+XX/amiJ4xgnO5rAxbTiLtN4ECapTNlsWpuS3/frKx+kzYk3X xceQ== X-Gm-Message-State: AHPjjUi2ijWqNWGQOKu1swqdqlaCmIixsrmzemhviMHYUggBFc647nH9 S/Ux6s3/gaOv2SyjfizZ5BXE6579 X-Google-Smtp-Source: AOwi7QCo63eiWUI3myR+2gc8RkG2Uq90FECjaYmXy6na4v0201BNvtSqRd4bS8d0k6NnAw4IapYvrg== X-Received: by 10.98.71.198 with SMTP id p67mr10347516pfi.15.1506424622803; Tue, 26 Sep 2017 04:17:02 -0700 (PDT) Return-Path: Received: from meghana-HP-Pavilion-Notebook ([122.171.83.22]) by smtp.gmail.com with ESMTPSA id j13sm15931639pfk.107.2017.09.26.04.16.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Sep 2017 04:17:01 -0700 (PDT) Date: Tue, 26 Sep 2017 16:46:53 +0530 From: Meghana Madhyastha To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= , Daniel Vetter , outreachy-kernel , Sean Paul , dri-devel@lists.freedesktop.org Subject: Re: [PATCH v2] drm/tinydrm: Move backlight helpers to a separate file Message-ID: <20170926111650.GA7624@meghana-HP-Pavilion-Notebook> References: <20170922150935.GA15912@meghana-HP-Pavilion-Notebook> <3dd313c8-daa7-a395-183c-c2dfac4dd4b4@tronnes.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) 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. -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 > > >