From mboxrd@z Thu Jan 1 00:00:00 1970 From: CK Hu Subject: Re: [PATCH 06/18] drm/mediatek: add mmsys private data for ddp path config Date: Wed, 26 Dec 2018 14:01:29 +0800 Message-ID: <1545804089.14496.30.camel@mtksdaap41> References: <1545638931-24938-1-git-send-email-yongqiang.niu@mediatek.com> <1545638931-24938-7-git-send-email-yongqiang.niu@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1545638931-24938-7-git-send-email-yongqiang.niu@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Yongqiang Niu Cc: Mark Rutland , devicetree@vger.kernel.org, David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Rob Herring , linux-mediatek@lists.infradead.org, Matthias Brugger , linux-arm-kernel@lists.infradead.org List-Id: linux-mediatek@lists.infradead.org SGksIFlvbmdxaWFuZzoKCk9uIE1vbiwgMjAxOC0xMi0yNCBhdCAxNjowOCArMDgwMCwgWW9uZ3Fp YW5nIE5pdSB3cm90ZToKPiBUaGlzIHBhdGNoIGFkZCBtbXN5cyBwcml2YXRlIGRhdGEgZm9yIGRk cCBwYXRoIGNvbmZpZwoKRGVzY3JpYmUgV0hZIGRvIHRoaXMuCgo+IAo+IFNpZ25lZC1vZmYtYnk6 IFlvbmdxaWFuZyBOaXUgPHlvbmdxaWFuZy5uaXVAbWVkaWF0ZWsuY29tPgo+IC0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9jcnRjLmMgfCAgIDQgKysKPiAgZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmMgIHwgMTAyICsrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcC5oICB8 ICAxMCArKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jICB8ICAx MSArKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oICB8ICAgNCAr Kwo+ICA1IGZpbGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5j IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5jCj4gaW5kZXggOTJlY2I5 Yi4uYTVhZjRiZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Ry bV9jcnRjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9jcnRjLmMK PiBAQCAtNTAsNiArNTAsNyBAQCBzdHJ1Y3QgbXRrX2RybV9jcnRjIHsKPiAgCWJvb2wJCQkJcGVu ZGluZ19wbGFuZXM7Cj4gIAo+ICAJdm9pZCBfX2lvbWVtCQkJKmNvbmZpZ19yZWdzOwo+ICsJY29u c3Qgc3RydWN0IG10a19tbXN5c19yZWdfZGF0YSAqbW1zeXNfcmVnX2RhdGE7Cj4gIAlzdHJ1Y3Qg bXRrX2Rpc3BfbXV0ZXgJCSptdXRleDsKPiAgCXVuc2lnbmVkIGludAkJCWRkcF9jb21wX25yOwo+ ICAJc3RydWN0IG10a19kZHBfY29tcAkJKipkZHBfY29tcDsKPiBAQCAtMjcxLDYgKzI3Miw3IEBA IHN0YXRpYyBpbnQgbXRrX2NydGNfZGRwX2h3X2luaXQoc3RydWN0IG10a19kcm1fY3J0YyAqbXRr X2NydGMpCj4gIAlEUk1fREVCVUdfRFJJVkVSKCJtZWRpYXRla19kZHBfZGRwX3BhdGhfc2V0dXBc biIpOwo+ICAJZm9yIChpID0gMDsgaSA8IG10a19jcnRjLT5kZHBfY29tcF9uciAtIDE7IGkrKykg ewo+ICAJCW10a19kZHBfYWRkX2NvbXBfdG9fcGF0aChtdGtfY3J0Yy0+Y29uZmlnX3JlZ3MsCj4g KwkJCQkJIG10a19jcnRjLT5tbXN5c19yZWdfZGF0YSwKPiAgCQkJCQkgbXRrX2NydGMtPmRkcF9j b21wW2ldLT5pZCwKPiAgCQkJCQkgbXRrX2NydGMtPmRkcF9jb21wW2kgKyAxXS0+aWQpOwo+ICAJ CW10a19kaXNwX211dGV4X2FkZF9jb21wKG10a19jcnRjLT5tdXRleCwKPiBAQCAtMzE5LDYgKzMy MSw3IEBAIHN0YXRpYyB2b2lkIG10a19jcnRjX2RkcF9od19maW5pKHN0cnVjdCBtdGtfZHJtX2Ny dGMgKm10a19jcnRjKQo+ICAJbXRrX2Rpc3BfbXV0ZXhfZGlzYWJsZShtdGtfY3J0Yy0+bXV0ZXgp Owo+ICAJZm9yIChpID0gMDsgaSA8IG10a19jcnRjLT5kZHBfY29tcF9uciAtIDE7IGkrKykgewo+ ICAJCW10a19kZHBfcmVtb3ZlX2NvbXBfZnJvbV9wYXRoKG10a19jcnRjLT5jb25maWdfcmVncywK PiArCQkJCQkgICAgICBtdGtfY3J0Yy0+bW1zeXNfcmVnX2RhdGEsCj4gIAkJCQkJICAgICAgbXRr X2NydGMtPmRkcF9jb21wW2ldLT5pZCwKPiAgCQkJCQkgICAgICBtdGtfY3J0Yy0+ZGRwX2NvbXBb aSArIDFdLT5pZCk7Cj4gIAkJbXRrX2Rpc3BfbXV0ZXhfcmVtb3ZlX2NvbXAobXRrX2NydGMtPm11 dGV4LAo+IEBAIC01NjEsNiArNTY0LDcgQEAgaW50IG10a19kcm1fY3J0Y19jcmVhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRybV9kZXYsCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAo+ICAJbXRrX2Ny dGMtPmNvbmZpZ19yZWdzID0gcHJpdi0+Y29uZmlnX3JlZ3M7Cj4gKwltdGtfY3J0Yy0+bW1zeXNf cmVnX2RhdGEgPSBwcml2LT5yZWdfZGF0YTsKPiAgCW10a19jcnRjLT5kZHBfY29tcF9uciA9IHBh dGhfbGVuOwo+ICAJbXRrX2NydGMtPmRkcF9jb21wID0gZGV2bV9rbWFsbG9jX2FycmF5KGRldiwg bXRrX2NydGMtPmRkcF9jb21wX25yLAo+ICAJCQkJCQlzaXplb2YoKm10a19jcnRjLT5kZHBfY29t cCksCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcC5j IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmMKPiBpbmRleCA2MGNmZGU3 Li40YmUzYzExIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJt X2RkcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmMKPiBA QCAtMTQ1LDYgKzE0NSwxNyBAQAo+ICAjZGVmaW5lIERQSV9TRUxfSU5fQkxTCQkJMHgwCj4gICNk ZWZpbmUgRFNJX1NFTF9JTl9SRE1BCQkJMHgxCj4gIAo+ICsjZGVmaW5lIERJU1BfUkVHX09WTDBf TU9VVF9FTihkYXRhKQkJKChkYXRhKS0+b3ZsMF9tb3V0X2VuKQo+ICsjZGVmaW5lIERJU1BfUkVH X0RQSTBfU0VMX0lOKGRhdGEpCQkoKGRhdGEpLT5kcGkwX3NlbF9pbikKPiArI2RlZmluZSBESVNQ X1JFR19EUEkwX1NFTF9JTl9SRE1BMShkYXRhKQkoKGRhdGEpLT5kcGkwX3NlbF9pbl9yZG1hMSkK PiArI2RlZmluZSBESVNQX1JFR19EU0kwX1NFTF9JTihkYXRhKQkJKChkYXRhKS0+ZHNpMF9zZWxf aW4pCj4gKyNkZWZpbmUgRElTUF9SRUdfRFNJMF9TRUxfSU5fUkRNQTEoZGF0YSkJKChkYXRhKS0+ ZHNpMF9zZWxfaW5fcmRtYTEpCj4gKyNkZWZpbmUgRElTUF9SRUdfUkRNQTBfU09VVF9TRUxfSU4o ZGF0YSkJKChkYXRhKS0+cmRtYTBfc291dF9zZWxfaW4pCj4gKyNkZWZpbmUgRElTUF9SRUdfUkRN QTBfU09VVF9DT0xPUjAoZGF0YSkJKChkYXRhKS0+cmRtYTBfc291dF9jb2xvcjApCj4gKyNkZWZp bmUgRElTUF9SRUdfUkRNQTFfU09VVF9TRUxfSU4oZGF0YSkJKChkYXRhKS0+cmRtYTFfc291dF9z ZWxfaW4pCj4gKyNkZWZpbmUgRElTUF9SRUdfUkRNQTFfU09VVF9EUEkwKGRhdGEpCQkoKGRhdGEp LT5yZG1hMV9zb3V0X2RwaTApCj4gKyNkZWZpbmUgRElTUF9SRUdfUkRNQTFfU09VVF9EU0kwKGRh dGEpCQkoKGRhdGEpLT5yZG1hMV9zb3V0X2RzaTApCj4gKwo+ICBzdHJ1Y3QgbXRrX2Rpc3BfbXV0 ZXggewo+ICAJaW50IGlkOwo+ICAJYm9vbCBjbGFpbWVkOwo+IEBAIC0xNzYsNiArMTg3LDE5IEBA IHN0cnVjdCBtdGtfZGRwIHsKPiAgCWNvbnN0IHN0cnVjdCBtdGtfZGRwX2RhdGEJKmRhdGE7Cj4g IH07Cj4gIAo+ICtzdHJ1Y3QgbXRrX21tc3lzX3JlZ19kYXRhIHsKPiArCXVuc2lnbmVkIGludCBv dmwwX21vdXRfZW47Cj4gKwl1bnNpZ25lZCBpbnQgcmRtYTBfc291dF9zZWxfaW47Cj4gKwl1bnNp Z25lZCBpbnQgcmRtYTBfc291dF9jb2xvcjA7Cj4gKwl1bnNpZ25lZCBpbnQgcmRtYTFfc291dF9z ZWxfaW47Cj4gKwl1bnNpZ25lZCBpbnQgcmRtYTFfc291dF9kcGkwOwo+ICsJdW5zaWduZWQgaW50 IHJkbWExX3NvdXRfZHNpMDsKPiArCXVuc2lnbmVkIGludCBkcGkwX3NlbF9pbjsKPiArCXVuc2ln bmVkIGludCBkcGkwX3NlbF9pbl9yZG1hMTsKPiArCXVuc2lnbmVkIGludCBkc2kwX3NlbF9pbjsK PiArCXVuc2lnbmVkIGludCBkc2kwX3NlbF9pbl9yZG1hMTsKCkkgd291bGQgbGlrZSB1c2UgJ3Uz MicgZm9yIHRoZXNlIHZhcmlhYmxlcy4KCj4gK307Cj4gKwo+ICBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgaW50IG10MjcwMV9tdXRleF9tb2RbRERQX0NPTVBPTkVOVF9JRF9NQVhdID0gewo+ICAJW0RE UF9DT01QT05FTlRfQkxTXSA9IE1UMjcwMV9NVVRFWF9NT0RfRElTUF9CTFMsCj4gIAlbRERQX0NP TVBPTkVOVF9DT0xPUjBdID0gTVQyNzAxX01VVEVYX01PRF9ESVNQX0NPTE9SLAo+IEBAIC0yNjgs MTcgKzI5MiwzNCBAQCBzdHJ1Y3QgbXRrX2RkcCB7Cj4gIAkubXV0ZXhfc29mX3JlZyA9IE1UMjcw MV9ESVNQX01VVEVYMF9TT0YwLAo+ICB9Owo+ICAKPiAtc3RhdGljIHVuc2lnbmVkIGludCBtdGtf ZGRwX21vdXRfZW4oZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLAo+ICtjb25zdCBzdHJ1Y3QgbXRr X21tc3lzX3JlZ19kYXRhIG10MjcwMV9tbXN5c19yZWdfZGF0YSA9IHsKPiArCS5vdmwwX21vdXRf ZW4gPSBESVNQX1JFR19DT05GSUdfRElTUF9PVkxfTU9VVF9FTiwKPiArCS5kc2kwX3NlbF9pbiA9 IERJU1BfUkVHX0NPTkZJR19EU0lfU0VMLAo+ICsJLmRzaTBfc2VsX2luX3JkbWExID0gRFNJX1NF TF9JTl9SRE1BLAo+ICt9Owo+ICsKPiArY29uc3Qgc3RydWN0IG10a19tbXN5c19yZWdfZGF0YSBt dDgxNzNfbW1zeXNfcmVnX2RhdGEgPSB7Cj4gKwkub3ZsMF9tb3V0X2VuID0gRElTUF9SRUdfQ09O RklHX0RJU1BfT1ZMMF9NT1VUX0VOLAo+ICsJLnJkbWExX3NvdXRfc2VsX2luID0gRElTUF9SRUdf Q09ORklHX0RJU1BfUkRNQTFfU09VVF9FTiwKPiArCS5yZG1hMV9zb3V0X2RwaTAgPSBSRE1BMV9T T1VUX0RQSTAsCj4gKwkuZHBpMF9zZWxfaW4gPSBESVNQX1JFR19DT05GSUdfRFBJX1NFTF9JTiwK PiArCS5kcGkwX3NlbF9pbl9yZG1hMSA9IERQSTBfU0VMX0lOX1JETUExLAo+ICsJLmRzaTBfc2Vs X2luID0gRElTUF9SRUdfQ09ORklHX0RTSUVfU0VMX0lOLAo+ICsJLmRzaTBfc2VsX2luX3JkbWEx ID0gRFNJMF9TRUxfSU5fUkRNQTEsCj4gK307Cj4gKwo+ICtzdGF0aWMgdW5zaWduZWQgaW50IG10 a19kZHBfbW91dF9lbihjb25zdCBzdHJ1Y3QgbXRrX21tc3lzX3JlZ19kYXRhICpkYXRhLAo+ICsJ CQkJICAgIGVudW0gbXRrX2RkcF9jb21wX2lkIGN1ciwKPiAgCQkJCSAgICBlbnVtIG10a19kZHBf Y29tcF9pZCBuZXh0LAo+ICAJCQkJICAgIHVuc2lnbmVkIGludCAqYWRkcikKPiAgewo+ICAJdW5z aWduZWQgaW50IHZhbHVlOwo+ICAKPiAgCWlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9PVkwwICYm IG5leHQgPT0gRERQX0NPTVBPTkVOVF9DT0xPUjApIHsKPiAtCQkqYWRkciA9IERJU1BfUkVHX0NP TkZJR19ESVNQX09WTDBfTU9VVF9FTjsKPiArCQkqYWRkciA9IERJU1BfUkVHX09WTDBfTU9VVF9F TihkYXRhKTsKPiAgCQl2YWx1ZSA9IE9WTDBfTU9VVF9FTl9DT0xPUjA7Cj4gIAl9IGVsc2UgaWYg KGN1ciA9PSBERFBfQ09NUE9ORU5UX09WTDAgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX1JETUEw KSB7Cj4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9PVkxfTU9VVF9FTjsKPiArCQkq YWRkciA9IERJU1BfUkVHX09WTDBfTU9VVF9FTihkYXRhKTsKPiAgCQl2YWx1ZSA9IE9WTF9NT1VU X0VOX1JETUE7Cj4gIAl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX09EMCAmJiBuZXh0 ID09IEREUF9DT01QT05FTlRfUkRNQTApIHsKPiAgCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19E SVNQX09EX01PVVRfRU47Cj4gQEAgLTMwMiw3ICszNDMsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50 IG10a19kZHBfbW91dF9lbihlbnVtIG10a19kZHBfY29tcF9pZCBjdXIsCj4gIAlyZXR1cm4gdmFs dWU7Cj4gIH0KPiAgCj4gLXN0YXRpYyB1bnNpZ25lZCBpbnQgbXRrX2RkcF9zZWxfaW4oZW51bSBt dGtfZGRwX2NvbXBfaWQgY3VyLAo+ICtzdGF0aWMgdW5zaWduZWQgaW50IG10a19kZHBfc2VsX2lu KGNvbnN0IHN0cnVjdCBtdGtfbW1zeXNfcmVnX2RhdGEgKmRhdGEsCj4gKwkJCQkgICBlbnVtIG10 a19kZHBfY29tcF9pZCBjdXIsCj4gIAkJCQkgICBlbnVtIG10a19kZHBfY29tcF9pZCBuZXh0LAo+ ICAJCQkJICAgdW5zaWduZWQgaW50ICphZGRyKQo+ICB7Cj4gQEAgLTMxMiwxNCArMzU0LDE0IEBA IHN0YXRpYyB1bnNpZ25lZCBpbnQgbXRrX2RkcF9zZWxfaW4oZW51bSBtdGtfZGRwX2NvbXBfaWQg Y3VyLAo+ICAJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfQ09MT1IwX1NFTF9JTjsKPiAg CQl2YWx1ZSA9IENPTE9SMF9TRUxfSU5fT1ZMMDsKPiAgCX0gZWxzZSBpZiAoY3VyID09IEREUF9D T01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQSTApIHsKPiAtCQkqYWRk ciA9IERJU1BfUkVHX0NPTkZJR19EUElfU0VMX0lOOwo+IC0JCXZhbHVlID0gRFBJMF9TRUxfSU5f UkRNQTE7Cj4gKwkJKmFkZHIgPSBESVNQX1JFR19EUEkwX1NFTF9JTihkYXRhKTsKPiArCQl2YWx1 ZSA9IERJU1BfUkVHX0RQSTBfU0VMX0lOX1JETUExKGRhdGEpOwo+ICAJfSBlbHNlIGlmIChjdXIg PT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFBJMSkgewo+ ICAJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RQSV9TRUxfSU47Cj4gIAkJdmFsdWUgPSBEUEkx X1NFTF9JTl9SRE1BMTsKPiAgCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTEg JiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTApIHsKPiAtCQkqYWRkciA9IERJU1BfUkVHX0NP TkZJR19EU0lFX1NFTF9JTjsKPiAtCQl2YWx1ZSA9IERTSTBfU0VMX0lOX1JETUExOwo+ICsJCSph ZGRyID0gRElTUF9SRUdfRFNJMF9TRUxfSU4oZGF0YSk7Cj4gKwkJdmFsdWUgPSBESVNQX1JFR19E U0kwX1NFTF9JTl9SRE1BMShkYXRhKTsKPiAgCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05F TlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTEpIHsKPiAgCQkqYWRkciA9IERJ U1BfUkVHX0NPTkZJR19EU0lPX1NFTF9JTjsKPiAgCQl2YWx1ZSA9IERTSTFfU0VMX0lOX1JETUEx Owo+IEBAIC0zNjAsNyArNDAyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBtdGtfZGRwX3NlbF9p bihlbnVtIG10a19kZHBfY29tcF9pZCBjdXIsCj4gIAlyZXR1cm4gdmFsdWU7Cj4gIH0KPiAgCj4g LXN0YXRpYyB1bnNpZ25lZCBpbnQgbXRrX2RkcF9zb3V0X3NlbCh2b2lkIF9faW9tZW0gKmNvbmZp Z19yZWdzLAo+ICtzdGF0aWMgdW5zaWduZWQgaW50IG10a19kZHBfc291dF9zZWwoY29uc3Qgc3Ry dWN0IG10a19tbXN5c19yZWdfZGF0YSAqZGF0YSwKPiAgCQkJCSAgICAgZW51bSBtdGtfZGRwX2Nv bXBfaWQgY3VyLAo+ICAJCQkJICAgICBlbnVtIG10a19kZHBfY29tcF9pZCBuZXh0LAo+ICAJCQkJ ICAgICB1bnNpZ25lZCBpbnQgKmFkZHIpCj4gQEAgLTM3Myw5ICs0MTUsNiBAQCBzdGF0aWMgdW5z aWduZWQgaW50IG10a19kZHBfc291dF9zZWwodm9pZCBfX2lvbWVtICpjb25maWdfcmVncywKPiAg CX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfQkxTICYmIG5leHQgPT0gRERQX0NPTVBP TkVOVF9EUEkwKSB7Cj4gIAkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfT1VUX1NFTDsKPiAgCQl2 YWx1ZSA9IEJMU19UT19EUElfUkRNQTFfVE9fRFNJOwo+IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQ X0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMCkgewo+IC0JCSph ZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSV9TRUw7Cj4gLQkJdmFsdWUgPSBEU0lfU0VMX0lOX1JE TUE7Cj4gIAl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEwICYmIG5leHQgPT0g RERQX0NPTVBPTkVOVF9EUEkwKSB7Cj4gIAkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9S RE1BMF9TT1VUX0VOOwo+ICAJCXZhbHVlID0gUkRNQTBfU09VVF9EUEkwOwo+IEBAIC00MDEsOCAr NDQwLDggQEAgc3RhdGljIHVuc2lnbmVkIGludCBtdGtfZGRwX3NvdXRfc2VsKHZvaWQgX19pb21l bSAqY29uZmlnX3JlZ3MsCj4gIAkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMV9T T1VUX0VOOwo+ICAJCXZhbHVlID0gUkRNQTFfU09VVF9EU0kzOwo+ICAJfSBlbHNlIGlmIChjdXIg PT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFBJMCkgewo+ IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09VVF9FTjsKPiAtCQl2YWx1 ZSA9IFJETUExX1NPVVRfRFBJMDsKPiArCQkqYWRkciA9IERJU1BfUkVHX1JETUExX1NPVVRfU0VM X0lOKGRhdGEpOwo+ICsJCXZhbHVlID0gRElTUF9SRUdfUkRNQTFfU09VVF9EUEkwKGRhdGEpOwo+ ICAJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9D T01QT05FTlRfRFBJMSkgewo+ICAJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFf U09VVF9FTjsKPiAgCQl2YWx1ZSA9IFJETUExX1NPVVRfRFBJMTsKPiBAQCAtNDI5LDIyICs0Njgs MjMgQEAgc3RhdGljIHVuc2lnbmVkIGludCBtdGtfZGRwX3NvdXRfc2VsKHZvaWQgX19pb21lbSAq Y29uZmlnX3JlZ3MsCj4gIH0KPiAgCj4gIHZvaWQgbXRrX2RkcF9hZGRfY29tcF90b19wYXRoKHZv aWQgX19pb21lbSAqY29uZmlnX3JlZ3MsCj4gKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBtdGtfbW1z eXNfcmVnX2RhdGEgKnJlZ19kYXRhLAo+ICAJCQkgICAgICBlbnVtIG10a19kZHBfY29tcF9pZCBj dXIsCj4gIAkJCSAgICAgIGVudW0gbXRrX2RkcF9jb21wX2lkIG5leHQpCj4gIHsKPiAgCXVuc2ln bmVkIGludCBhZGRyLCB2YWx1ZSwgcmVnOwo+ICAKPiAtCXZhbHVlID0gbXRrX2RkcF9tb3V0X2Vu KGN1ciwgbmV4dCwgJmFkZHIpOwo+ICsJdmFsdWUgPSBtdGtfZGRwX21vdXRfZW4ocmVnX2RhdGEs IGN1ciwgbmV4dCwgJmFkZHIpOwo+ICAJaWYgKHZhbHVlKSB7Cj4gIAkJcmVnID0gcmVhZGxfcmVs YXhlZChjb25maWdfcmVncyArIGFkZHIpIHwgdmFsdWU7Cj4gIAkJd3JpdGVsX3JlbGF4ZWQocmVn LCBjb25maWdfcmVncyArIGFkZHIpOwo+ICAJfQo+ICAKPiAtCXZhbHVlID0gbXRrX2RkcF9zb3V0 X3NlbChjdXIsIG5leHQsICZhZGRyKTsKPiArCXZhbHVlID0gbXRrX2RkcF9zb3V0X3NlbChyZWdf ZGF0YSwgY3VyLCBuZXh0LCAmYWRkcik7Cj4gIAlpZiAodmFsdWUpCj4gIAkJd3JpdGVsX3JlbGF4 ZWQodmFsdWUsIGNvbmZpZ19yZWdzICsgYWRkcik7Cj4gIAo+IC0JdmFsdWUgPSBtdGtfZGRwX3Nl bF9pbihjdXIsIG5leHQsICZhZGRyKTsKPiArCXZhbHVlID0gbXRrX2RkcF9zZWxfaW4ocmVnX2Rh dGEsIGN1ciwgbmV4dCwgJmFkZHIpOwo+ICAJaWYgKHZhbHVlKSB7Cj4gIAkJcmVnID0gcmVhZGxf cmVsYXhlZChjb25maWdfcmVncyArIGFkZHIpIHwgdmFsdWU7Cj4gIAkJd3JpdGVsX3JlbGF4ZWQo cmVnLCBjb25maWdfcmVncyArIGFkZHIpOwo+IEBAIC00NTIsMjQgKzQ5Miw0OCBAQCB2b2lkIG10 a19kZHBfYWRkX2NvbXBfdG9fcGF0aCh2b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdzLAo+ICB9Cj4g IAo+ICB2b2lkIG10a19kZHBfcmVtb3ZlX2NvbXBfZnJvbV9wYXRoKHZvaWQgX19pb21lbSAqY29u ZmlnX3JlZ3MsCj4gKwkJCQkgICBjb25zdCBzdHJ1Y3QgbXRrX21tc3lzX3JlZ19kYXRhICpyZWdf ZGF0YSwKPiAgCQkJCSAgIGVudW0gbXRrX2RkcF9jb21wX2lkIGN1ciwKPiAgCQkJCSAgIGVudW0g bXRrX2RkcF9jb21wX2lkIG5leHQpCj4gIHsKPiAgCXVuc2lnbmVkIGludCBhZGRyLCB2YWx1ZSwg cmVnOwo+ICAKPiAtCXZhbHVlID0gbXRrX2RkcF9tb3V0X2VuKGN1ciwgbmV4dCwgJmFkZHIpOwo+ ICsJdmFsdWUgPSBtdGtfZGRwX21vdXRfZW4ocmVnX2RhdGEsIGN1ciwgbmV4dCwgJmFkZHIpOwo+ ICAJaWYgKHZhbHVlKSB7Cj4gIAkJcmVnID0gcmVhZGxfcmVsYXhlZChjb25maWdfcmVncyArIGFk ZHIpICYgfnZhbHVlOwo+ICAJCXdyaXRlbF9yZWxheGVkKHJlZywgY29uZmlnX3JlZ3MgKyBhZGRy KTsKPiAgCX0KPiAgCj4gLQl2YWx1ZSA9IG10a19kZHBfc2VsX2luKGN1ciwgbmV4dCwgJmFkZHIp Owo+ICsJdmFsdWUgPSBtdGtfZGRwX3NlbF9pbihyZWdfZGF0YSwgY3VyLCBuZXh0LCAmYWRkcik7 Cj4gIAlpZiAodmFsdWUpIHsKPiAgCQlyZWcgPSByZWFkbF9yZWxheGVkKGNvbmZpZ19yZWdzICsg YWRkcikgJiB+dmFsdWU7Cj4gIAkJd3JpdGVsX3JlbGF4ZWQocmVnLCBjb25maWdfcmVncyArIGFk ZHIpOwo+ICAJfQo+ICB9Cj4gIAo+ICtjb25zdCBzdHJ1Y3QgbXRrX21tc3lzX3JlZ19kYXRhICpt dGtfZGRwX2dldF9tbXN5c19kYXRhKGVudW0gbXRrX21tc3lzX2lkIGlkKQo+ICt7Cj4gKwljb25z dCBzdHJ1Y3QgbXRrX21tc3lzX3JlZ19kYXRhICpkYXRhID0gTlVMTDsKPiArCj4gKwlzd2l0Y2gg KGlkKSB7Cj4gKwljYXNlIE1NU1lTX01UMjcwMToKPiArCQlkYXRhID0gJm10MjcwMV9tbXN5c19y ZWdfZGF0YTsKPiArCQlicmVhazsKPiArCWNhc2UgTU1TWVNfTVQyNzEyOgo+ICsJCWRhdGEgPSAm bXQ4MTczX21tc3lzX3JlZ19kYXRhOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBNTVNZU19NVDgxNzM6 Cj4gKwkJZGF0YSA9ICZtdDgxNzNfbW1zeXNfcmVnX2RhdGE7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZh dWx0Ogo+ICsJCXByX2luZm8oIm10ayBkcm0gbm90IHN1cHBvcnQgbW1zeXMgaWQgJWRcbiIsCj4g KwkJCWlkKTsKPiArCQlicmVhazsKPiArCX0KPiArCj4gKwlyZXR1cm4gZGF0YTsKPiArfQo+ICsK PiAgc3RydWN0IG10a19kaXNwX211dGV4ICptdGtfZGlzcF9tdXRleF9nZXQoc3RydWN0IGRldmlj ZSAqZGV2LCB1bnNpZ25lZCBpbnQgaWQpCj4gIHsKPiAgCXN0cnVjdCBtdGtfZGRwICpkZHAgPSBk ZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19kcm1fZGRwLmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHAu aAo+IGluZGV4IGY5YTc5OTEuLmVkMmI3MDIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kcm1fZGRwLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RybV9kZHAuaAo+IEBAIC0xOSwxMSArMTksMjEgQEAKPiAgc3RydWN0IHJlZ21hcDsKPiAg c3RydWN0IGRldmljZTsKPiAgc3RydWN0IG10a19kaXNwX211dGV4Owo+ICtzdHJ1Y3QgbXRrX21t c3lzX3JlZ19kYXRhOwo+ICtlbnVtIG10a19tbXN5c19pZCB7Cj4gKwlNTVNZU19NVDI3MDEsCj4g KwlNTVNZU19NVDI3MTIsCj4gKwlNTVNZU19NVDgxNzMsCj4gKwlNTVNZU19NQVgsCj4gK307Cj4g IAo+ICtjb25zdCBzdHJ1Y3QgbXRrX21tc3lzX3JlZ19kYXRhICptdGtfZGRwX2dldF9tbXN5c19k YXRhKGVudW0gbXRrX21tc3lzX2lkIGlkKTsKPiAgdm9pZCBtdGtfZGRwX2FkZF9jb21wX3RvX3Bh dGgodm9pZCBfX2lvbWVtICpjb25maWdfcmVncywKPiArCQkJICAgICAgY29uc3Qgc3RydWN0IG10 a19tbXN5c19yZWdfZGF0YSAqcmVnX2RhdGEsCj4gIAkJCSAgICAgIGVudW0gbXRrX2RkcF9jb21w X2lkIGN1ciwKPiAgCQkJICAgICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgbmV4dCk7Cj4gIHZvaWQg bXRrX2RkcF9yZW1vdmVfY29tcF9mcm9tX3BhdGgodm9pZCBfX2lvbWVtICpjb25maWdfcmVncywK PiArCQkJCSAgIGNvbnN0IHN0cnVjdCBtdGtfbW1zeXNfcmVnX2RhdGEgKnJlZ19kYXRhLAo+ICAJ CQkJICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLAo+ICAJCQkJICAgZW51bSBtdGtfZGRwX2Nv bXBfaWQgbmV4dCk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCj4g aW5kZXggNjQyMmU5OS4uYmU2YjE0MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvbXRrX2RybV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf ZHJtX2Rydi5jCj4gQEAgLTE5Niw2ICsxOTYsNyBAQCBzdGF0aWMgaW50IG10a19hdG9taWNfY29t bWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCj4gIAkubWFpbl9sZW4gPSBBUlJBWV9TSVpFKG10 MjcwMV9tdGtfZGRwX21haW4pLAo+ICAJLmV4dF9wYXRoID0gbXQyNzAxX210a19kZHBfZXh0LAo+ ICAJLmV4dF9sZW4gPSBBUlJBWV9TSVpFKG10MjcwMV9tdGtfZGRwX2V4dCksCj4gKwkubW1zeXNf aWQgPSBNTVNZU19NVDI3MDEsCj4gIAkuc2hhZG93X3JlZ2lzdGVyID0gdHJ1ZSwKPiAgfTsKPiAg Cj4gQEAgLTIwNiw2ICsyMDcsNyBAQCBzdGF0aWMgaW50IG10a19hdG9taWNfY29tbWl0KHN0cnVj dCBkcm1fZGV2aWNlICpkcm0sCj4gIAkuZXh0X2xlbiA9IEFSUkFZX1NJWkUobXQyNzEyX210a19k ZHBfZXh0KSwKPiAgCS50aGlyZF9wYXRoID0gbXQyNzEyX210a19kZHBfdGhpcmQsCj4gIAkudGhp cmRfbGVuID0gQVJSQVlfU0laRShtdDI3MTJfbXRrX2RkcF90aGlyZCksCj4gKwkubW1zeXNfaWQg PSBNTVNZU19NVDI3MTIsCj4gIH07Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19tbXN5 c19kcml2ZXJfZGF0YSBtdDgxNzNfbW1zeXNfZHJpdmVyX2RhdGEgPSB7Cj4gQEAgLTIxMyw2ICsy MTUsNyBAQCBzdGF0aWMgaW50IG10a19hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpk cm0sCj4gIAkubWFpbl9sZW4gPSBBUlJBWV9TSVpFKG10ODE3M19tdGtfZGRwX21haW4pLAo+ICAJ LmV4dF9wYXRoID0gbXQ4MTczX210a19kZHBfZXh0LAo+ICAJLmV4dF9sZW4gPSBBUlJBWV9TSVpF KG10ODE3M19tdGtfZGRwX2V4dCksCj4gKwkubW1zeXNfaWQgPSBNTVNZU19NVDgxNzMsCj4gIH07 Cj4gIAo+ICBzdGF0aWMgaW50IG10a19kcm1fa21zX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRy bSkKPiBAQCAtNDYxLDYgKzQ2NCwxNCBAQCBzdGF0aWMgaW50IG10a19kcm1fcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCUlOSVRfV09SSygmcHJpdmF0ZS0+Y29tbWl0Lndv cmssIG10a19hdG9taWNfd29yayk7Cj4gIAlwcml2YXRlLT5kYXRhID0gb2ZfZGV2aWNlX2dldF9t YXRjaF9kYXRhKGRldik7Cj4gIAo+ICsJcHJpdmF0ZS0+cmVnX2RhdGEgPSBtdGtfZGRwX2dldF9t bXN5c19kYXRhKHByaXZhdGUtPmRhdGEtPm1tc3lzX2lkKTsKPiArCWlmIChJU19FUlIocHJpdmF0 ZS0+cmVnX2RhdGEpKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUihwcml2YXRlLT5jb25maWdfcmVncyk7 Cj4gKwkJcHJfaW5mbygiRmFpbGVkIHRvIGdldCBtbXN5cyByZWdpc3RlciBkYXRhOiAlZFxuIiwK PiArCQkJcmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiAgCW1lbSA9IHBsYXRmb3Jt X2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4gIAlwcml2YXRlLT5jb25m aWdfcmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIG1lbSk7Cj4gIAlpZiAoSVNfRVJS KHByaXZhdGUtPmNvbmZpZ19yZWdzKSkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2RybV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJt X2Rydi5oCj4gaW5kZXggZWNjMDBjYS4uMTFkZTdmOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHJtX2Rydi5oCj4gQEAgLTE1LDYgKzE1LDcgQEAKPiAgI2RlZmluZSBNVEtfRFJN X0RSVl9ICj4gIAo+ICAjaW5jbHVkZSA8bGludXgvaW8uaD4KPiArI2luY2x1ZGUgIm10a19kcm1f ZGRwLmgiCj4gICNpbmNsdWRlICJtdGtfZHJtX2RkcF9jb21wLmgiCj4gIAo+ICAjZGVmaW5lIE1B WF9DUlRDCTMKPiBAQCAtMzYsNiArMzcsOCBAQCBzdHJ1Y3QgbXRrX21tc3lzX2RyaXZlcl9kYXRh IHsKPiAgCWNvbnN0IGVudW0gbXRrX2RkcF9jb21wX2lkICp0aGlyZF9wYXRoOwo+ICAJdW5zaWdu ZWQgaW50IHRoaXJkX2xlbjsKPiAgCj4gKwllbnVtIG10a19tbXN5c19pZCBtbXN5c19pZDsKPiAr Cj4gIAlib29sIHNoYWRvd19yZWdpc3RlcjsKPiAgfTsKPiAgCj4gQEAgLTQ4LDYgKzUxLDcgQEAg c3RydWN0IG10a19kcm1fcHJpdmF0ZSB7Cj4gIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm11dGV4X25v ZGU7Cj4gIAlzdHJ1Y3QgZGV2aWNlICptdXRleF9kZXY7Cj4gIAl2b2lkIF9faW9tZW0gKmNvbmZp Z19yZWdzOwo+ICsJY29uc3Qgc3RydWN0IG10a19tbXN5c19yZWdfZGF0YSAqcmVnX2RhdGE7CgpX aHkgbm90IG1vdmUgcmVnX2RhdGEgaW50byBkYXRhPyBCb3RoIGNvdWxkIGJlIGdvdCBieQpvZl9k ZXZpY2VfZ2V0X21hdGNoX2RhdGEoKS4KClJlZ2FyZHMsCkNLCgo+ICAJc3RydWN0IGRldmljZV9u b2RlICpjb21wX25vZGVbRERQX0NPTVBPTkVOVF9JRF9NQVhdOwo+ICAJc3RydWN0IG10a19kZHBf Y29tcCAqZGRwX2NvbXBbRERQX0NPTVBPTkVOVF9JRF9NQVhdOwo+ICAJY29uc3Qgc3RydWN0IG10 a19tbXN5c19kcml2ZXJfZGF0YSAqZGF0YTsKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.5 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4D674C43387 for ; Wed, 26 Dec 2018 06:02:03 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 16AAD214D8 for ; Wed, 26 Dec 2018 06:02:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="MOQeCHIi" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 16AAD214D8 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=8I4WinUtt+AjLB70yc1BjMKrp567jQvVF5p5YOlGzyc=; b=MOQeCHIivWLoX1 zoTQCpBU8bWphR7NyelvE1RmFwcpGAZNGwzEK3LpRxGuSOsTcfqiT2qFChVhcd24oksoCYWY/vhsD o16WF5RASF/PygQcTRedTQqkniuE7U3yXAb2c4qZHwq7UlWjTjI4t9Ohu9fuUPZp7VV87aH7q8+4L /y6cwcVgnQN9vIXJXKYBS1M6Fv+tE50MNOQQwsgpekDyeCGPS2TI3Vyo4siJF41Rf9+yNqdJ6n/6L OaqAQjT+gTprbUpc/VItL7b6FciM6HLzB3T8hW1rj++VE2hzTnoEO2jq20N2N+CBqdTpBatumXAUz gXoTV9NnfMasyfoU2FVA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gc2GX-0002Gs-Br; Wed, 26 Dec 2018 06:02:01 +0000 Received: from [1.203.163.81] (helo=mailgw02.mediatek.com) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gc2GQ-0002G5-RG; Wed, 26 Dec 2018 06:01:59 +0000 X-UUID: c410a71c6ef7489f876e7bf218a04686-20181226 X-UUID: c410a71c6ef7489f876e7bf218a04686-20181226 Received: from mtkcas35.mediatek.inc [(172.27.4.250)] by mailgw02.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLS) with ESMTP id 179064635; Wed, 26 Dec 2018 14:01:36 +0800 Received: from mtkcas09.mediatek.inc (172.21.101.178) by MTKMBS31N2.mediatek.inc (172.27.4.87) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 26 Dec 2018 14:01:32 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas09.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Wed, 26 Dec 2018 14:01:32 +0800 Message-ID: <1545804089.14496.30.camel@mtksdaap41> Subject: Re: [PATCH 06/18] drm/mediatek: add mmsys private data for ddp path config From: CK Hu To: Yongqiang Niu Date: Wed, 26 Dec 2018 14:01:29 +0800 In-Reply-To: <1545638931-24938-7-git-send-email-yongqiang.niu@mediatek.com> References: <1545638931-24938-1-git-send-email-yongqiang.niu@mediatek.com> <1545638931-24938-7-git-send-email-yongqiang.niu@mediatek.com> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181225_220155_677144_5EFB14ED X-CRM114-Status: GOOD ( 19.12 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , devicetree@vger.kernel.org, David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Rob Herring , linux-mediatek@lists.infradead.org, Philipp Zabel , Matthias Brugger , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi, Yongqiang: On Mon, 2018-12-24 at 16:08 +0800, Yongqiang Niu wrote: > This patch add mmsys private data for ddp path config Describe WHY do this. > > Signed-off-by: Yongqiang Niu > --- > drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 4 ++ > drivers/gpu/drm/mediatek/mtk_drm_ddp.c | 102 ++++++++++++++++++++++++++------ > drivers/gpu/drm/mediatek/mtk_drm_ddp.h | 10 ++++ > drivers/gpu/drm/mediatek/mtk_drm_drv.c | 11 ++++ > drivers/gpu/drm/mediatek/mtk_drm_drv.h | 4 ++ > 5 files changed, 112 insertions(+), 19 deletions(-) > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > index 92ecb9b..a5af4be 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > @@ -50,6 +50,7 @@ struct mtk_drm_crtc { > bool pending_planes; > > void __iomem *config_regs; > + const struct mtk_mmsys_reg_data *mmsys_reg_data; > struct mtk_disp_mutex *mutex; > unsigned int ddp_comp_nr; > struct mtk_ddp_comp **ddp_comp; > @@ -271,6 +272,7 @@ static int mtk_crtc_ddp_hw_init(struct mtk_drm_crtc *mtk_crtc) > DRM_DEBUG_DRIVER("mediatek_ddp_ddp_path_setup\n"); > for (i = 0; i < mtk_crtc->ddp_comp_nr - 1; i++) { > mtk_ddp_add_comp_to_path(mtk_crtc->config_regs, > + mtk_crtc->mmsys_reg_data, > mtk_crtc->ddp_comp[i]->id, > mtk_crtc->ddp_comp[i + 1]->id); > mtk_disp_mutex_add_comp(mtk_crtc->mutex, > @@ -319,6 +321,7 @@ static void mtk_crtc_ddp_hw_fini(struct mtk_drm_crtc *mtk_crtc) > mtk_disp_mutex_disable(mtk_crtc->mutex); > for (i = 0; i < mtk_crtc->ddp_comp_nr - 1; i++) { > mtk_ddp_remove_comp_from_path(mtk_crtc->config_regs, > + mtk_crtc->mmsys_reg_data, > mtk_crtc->ddp_comp[i]->id, > mtk_crtc->ddp_comp[i + 1]->id); > mtk_disp_mutex_remove_comp(mtk_crtc->mutex, > @@ -561,6 +564,7 @@ int mtk_drm_crtc_create(struct drm_device *drm_dev, > return -ENOMEM; > > mtk_crtc->config_regs = priv->config_regs; > + mtk_crtc->mmsys_reg_data = priv->reg_data; > mtk_crtc->ddp_comp_nr = path_len; > mtk_crtc->ddp_comp = devm_kmalloc_array(dev, mtk_crtc->ddp_comp_nr, > sizeof(*mtk_crtc->ddp_comp), > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp.c b/drivers/gpu/drm/mediatek/mtk_drm_ddp.c > index 60cfde7..4be3c11 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp.c > @@ -145,6 +145,17 @@ > #define DPI_SEL_IN_BLS 0x0 > #define DSI_SEL_IN_RDMA 0x1 > > +#define DISP_REG_OVL0_MOUT_EN(data) ((data)->ovl0_mout_en) > +#define DISP_REG_DPI0_SEL_IN(data) ((data)->dpi0_sel_in) > +#define DISP_REG_DPI0_SEL_IN_RDMA1(data) ((data)->dpi0_sel_in_rdma1) > +#define DISP_REG_DSI0_SEL_IN(data) ((data)->dsi0_sel_in) > +#define DISP_REG_DSI0_SEL_IN_RDMA1(data) ((data)->dsi0_sel_in_rdma1) > +#define DISP_REG_RDMA0_SOUT_SEL_IN(data) ((data)->rdma0_sout_sel_in) > +#define DISP_REG_RDMA0_SOUT_COLOR0(data) ((data)->rdma0_sout_color0) > +#define DISP_REG_RDMA1_SOUT_SEL_IN(data) ((data)->rdma1_sout_sel_in) > +#define DISP_REG_RDMA1_SOUT_DPI0(data) ((data)->rdma1_sout_dpi0) > +#define DISP_REG_RDMA1_SOUT_DSI0(data) ((data)->rdma1_sout_dsi0) > + > struct mtk_disp_mutex { > int id; > bool claimed; > @@ -176,6 +187,19 @@ struct mtk_ddp { > const struct mtk_ddp_data *data; > }; > > +struct mtk_mmsys_reg_data { > + unsigned int ovl0_mout_en; > + unsigned int rdma0_sout_sel_in; > + unsigned int rdma0_sout_color0; > + unsigned int rdma1_sout_sel_in; > + unsigned int rdma1_sout_dpi0; > + unsigned int rdma1_sout_dsi0; > + unsigned int dpi0_sel_in; > + unsigned int dpi0_sel_in_rdma1; > + unsigned int dsi0_sel_in; > + unsigned int dsi0_sel_in_rdma1; I would like use 'u32' for these variables. > +}; > + > static const unsigned int mt2701_mutex_mod[DDP_COMPONENT_ID_MAX] = { > [DDP_COMPONENT_BLS] = MT2701_MUTEX_MOD_DISP_BLS, > [DDP_COMPONENT_COLOR0] = MT2701_MUTEX_MOD_DISP_COLOR, > @@ -268,17 +292,34 @@ struct mtk_ddp { > .mutex_sof_reg = MT2701_DISP_MUTEX0_SOF0, > }; > > -static unsigned int mtk_ddp_mout_en(enum mtk_ddp_comp_id cur, > +const struct mtk_mmsys_reg_data mt2701_mmsys_reg_data = { > + .ovl0_mout_en = DISP_REG_CONFIG_DISP_OVL_MOUT_EN, > + .dsi0_sel_in = DISP_REG_CONFIG_DSI_SEL, > + .dsi0_sel_in_rdma1 = DSI_SEL_IN_RDMA, > +}; > + > +const struct mtk_mmsys_reg_data mt8173_mmsys_reg_data = { > + .ovl0_mout_en = DISP_REG_CONFIG_DISP_OVL0_MOUT_EN, > + .rdma1_sout_sel_in = DISP_REG_CONFIG_DISP_RDMA1_SOUT_EN, > + .rdma1_sout_dpi0 = RDMA1_SOUT_DPI0, > + .dpi0_sel_in = DISP_REG_CONFIG_DPI_SEL_IN, > + .dpi0_sel_in_rdma1 = DPI0_SEL_IN_RDMA1, > + .dsi0_sel_in = DISP_REG_CONFIG_DSIE_SEL_IN, > + .dsi0_sel_in_rdma1 = DSI0_SEL_IN_RDMA1, > +}; > + > +static unsigned int mtk_ddp_mout_en(const struct mtk_mmsys_reg_data *data, > + enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next, > unsigned int *addr) > { > unsigned int value; > > if (cur == DDP_COMPONENT_OVL0 && next == DDP_COMPONENT_COLOR0) { > - *addr = DISP_REG_CONFIG_DISP_OVL0_MOUT_EN; > + *addr = DISP_REG_OVL0_MOUT_EN(data); > value = OVL0_MOUT_EN_COLOR0; > } else if (cur == DDP_COMPONENT_OVL0 && next == DDP_COMPONENT_RDMA0) { > - *addr = DISP_REG_CONFIG_DISP_OVL_MOUT_EN; > + *addr = DISP_REG_OVL0_MOUT_EN(data); > value = OVL_MOUT_EN_RDMA; > } else if (cur == DDP_COMPONENT_OD0 && next == DDP_COMPONENT_RDMA0) { > *addr = DISP_REG_CONFIG_DISP_OD_MOUT_EN; > @@ -302,7 +343,8 @@ static unsigned int mtk_ddp_mout_en(enum mtk_ddp_comp_id cur, > return value; > } > > -static unsigned int mtk_ddp_sel_in(enum mtk_ddp_comp_id cur, > +static unsigned int mtk_ddp_sel_in(const struct mtk_mmsys_reg_data *data, > + enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next, > unsigned int *addr) > { > @@ -312,14 +354,14 @@ static unsigned int mtk_ddp_sel_in(enum mtk_ddp_comp_id cur, > *addr = DISP_REG_CONFIG_DISP_COLOR0_SEL_IN; > value = COLOR0_SEL_IN_OVL0; > } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DPI0) { > - *addr = DISP_REG_CONFIG_DPI_SEL_IN; > - value = DPI0_SEL_IN_RDMA1; > + *addr = DISP_REG_DPI0_SEL_IN(data); > + value = DISP_REG_DPI0_SEL_IN_RDMA1(data); > } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DPI1) { > *addr = DISP_REG_CONFIG_DPI_SEL_IN; > value = DPI1_SEL_IN_RDMA1; > } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DSI0) { > - *addr = DISP_REG_CONFIG_DSIE_SEL_IN; > - value = DSI0_SEL_IN_RDMA1; > + *addr = DISP_REG_DSI0_SEL_IN(data); > + value = DISP_REG_DSI0_SEL_IN_RDMA1(data); > } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DSI1) { > *addr = DISP_REG_CONFIG_DSIO_SEL_IN; > value = DSI1_SEL_IN_RDMA1; > @@ -360,7 +402,7 @@ static unsigned int mtk_ddp_sel_in(enum mtk_ddp_comp_id cur, > return value; > } > > -static unsigned int mtk_ddp_sout_sel(void __iomem *config_regs, > +static unsigned int mtk_ddp_sout_sel(const struct mtk_mmsys_reg_data *data, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next, > unsigned int *addr) > @@ -373,9 +415,6 @@ static unsigned int mtk_ddp_sout_sel(void __iomem *config_regs, > } else if (cur == DDP_COMPONENT_BLS && next == DDP_COMPONENT_DPI0) { > *addr = DISP_REG_CONFIG_OUT_SEL; > value = BLS_TO_DPI_RDMA1_TO_DSI; > - } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DSI0) { > - *addr = DISP_REG_CONFIG_DSI_SEL; > - value = DSI_SEL_IN_RDMA; > } else if (cur == DDP_COMPONENT_RDMA0 && next == DDP_COMPONENT_DPI0) { > *addr = DISP_REG_CONFIG_DISP_RDMA0_SOUT_EN; > value = RDMA0_SOUT_DPI0; > @@ -401,8 +440,8 @@ static unsigned int mtk_ddp_sout_sel(void __iomem *config_regs, > *addr = DISP_REG_CONFIG_DISP_RDMA1_SOUT_EN; > value = RDMA1_SOUT_DSI3; > } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DPI0) { > - *addr = DISP_REG_CONFIG_DISP_RDMA1_SOUT_EN; > - value = RDMA1_SOUT_DPI0; > + *addr = DISP_REG_RDMA1_SOUT_SEL_IN(data); > + value = DISP_REG_RDMA1_SOUT_DPI0(data); > } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DPI1) { > *addr = DISP_REG_CONFIG_DISP_RDMA1_SOUT_EN; > value = RDMA1_SOUT_DPI1; > @@ -429,22 +468,23 @@ static unsigned int mtk_ddp_sout_sel(void __iomem *config_regs, > } > > void mtk_ddp_add_comp_to_path(void __iomem *config_regs, > + const struct mtk_mmsys_reg_data *reg_data, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next) > { > unsigned int addr, value, reg; > > - value = mtk_ddp_mout_en(cur, next, &addr); > + value = mtk_ddp_mout_en(reg_data, cur, next, &addr); > if (value) { > reg = readl_relaxed(config_regs + addr) | value; > writel_relaxed(reg, config_regs + addr); > } > > - value = mtk_ddp_sout_sel(cur, next, &addr); > + value = mtk_ddp_sout_sel(reg_data, cur, next, &addr); > if (value) > writel_relaxed(value, config_regs + addr); > > - value = mtk_ddp_sel_in(cur, next, &addr); > + value = mtk_ddp_sel_in(reg_data, cur, next, &addr); > if (value) { > reg = readl_relaxed(config_regs + addr) | value; > writel_relaxed(reg, config_regs + addr); > @@ -452,24 +492,48 @@ void mtk_ddp_add_comp_to_path(void __iomem *config_regs, > } > > void mtk_ddp_remove_comp_from_path(void __iomem *config_regs, > + const struct mtk_mmsys_reg_data *reg_data, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next) > { > unsigned int addr, value, reg; > > - value = mtk_ddp_mout_en(cur, next, &addr); > + value = mtk_ddp_mout_en(reg_data, cur, next, &addr); > if (value) { > reg = readl_relaxed(config_regs + addr) & ~value; > writel_relaxed(reg, config_regs + addr); > } > > - value = mtk_ddp_sel_in(cur, next, &addr); > + value = mtk_ddp_sel_in(reg_data, cur, next, &addr); > if (value) { > reg = readl_relaxed(config_regs + addr) & ~value; > writel_relaxed(reg, config_regs + addr); > } > } > > +const struct mtk_mmsys_reg_data *mtk_ddp_get_mmsys_data(enum mtk_mmsys_id id) > +{ > + const struct mtk_mmsys_reg_data *data = NULL; > + > + switch (id) { > + case MMSYS_MT2701: > + data = &mt2701_mmsys_reg_data; > + break; > + case MMSYS_MT2712: > + data = &mt8173_mmsys_reg_data; > + break; > + case MMSYS_MT8173: > + data = &mt8173_mmsys_reg_data; > + break; > + default: > + pr_info("mtk drm not support mmsys id %d\n", > + id); > + break; > + } > + > + return data; > +} > + > struct mtk_disp_mutex *mtk_disp_mutex_get(struct device *dev, unsigned int id) > { > struct mtk_ddp *ddp = dev_get_drvdata(dev); > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp.h b/drivers/gpu/drm/mediatek/mtk_drm_ddp.h > index f9a7991..ed2b702 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp.h > @@ -19,11 +19,21 @@ > struct regmap; > struct device; > struct mtk_disp_mutex; > +struct mtk_mmsys_reg_data; > +enum mtk_mmsys_id { > + MMSYS_MT2701, > + MMSYS_MT2712, > + MMSYS_MT8173, > + MMSYS_MAX, > +}; > > +const struct mtk_mmsys_reg_data *mtk_ddp_get_mmsys_data(enum mtk_mmsys_id id); > void mtk_ddp_add_comp_to_path(void __iomem *config_regs, > + const struct mtk_mmsys_reg_data *reg_data, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next); > void mtk_ddp_remove_comp_from_path(void __iomem *config_regs, > + const struct mtk_mmsys_reg_data *reg_data, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next); > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c > index 6422e99..be6b142 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c > @@ -196,6 +196,7 @@ static int mtk_atomic_commit(struct drm_device *drm, > .main_len = ARRAY_SIZE(mt2701_mtk_ddp_main), > .ext_path = mt2701_mtk_ddp_ext, > .ext_len = ARRAY_SIZE(mt2701_mtk_ddp_ext), > + .mmsys_id = MMSYS_MT2701, > .shadow_register = true, > }; > > @@ -206,6 +207,7 @@ static int mtk_atomic_commit(struct drm_device *drm, > .ext_len = ARRAY_SIZE(mt2712_mtk_ddp_ext), > .third_path = mt2712_mtk_ddp_third, > .third_len = ARRAY_SIZE(mt2712_mtk_ddp_third), > + .mmsys_id = MMSYS_MT2712, > }; > > static const struct mtk_mmsys_driver_data mt8173_mmsys_driver_data = { > @@ -213,6 +215,7 @@ static int mtk_atomic_commit(struct drm_device *drm, > .main_len = ARRAY_SIZE(mt8173_mtk_ddp_main), > .ext_path = mt8173_mtk_ddp_ext, > .ext_len = ARRAY_SIZE(mt8173_mtk_ddp_ext), > + .mmsys_id = MMSYS_MT8173, > }; > > static int mtk_drm_kms_init(struct drm_device *drm) > @@ -461,6 +464,14 @@ static int mtk_drm_probe(struct platform_device *pdev) > INIT_WORK(&private->commit.work, mtk_atomic_work); > private->data = of_device_get_match_data(dev); > > + private->reg_data = mtk_ddp_get_mmsys_data(private->data->mmsys_id); > + if (IS_ERR(private->reg_data)) { > + ret = PTR_ERR(private->config_regs); > + pr_info("Failed to get mmsys register data: %d\n", > + ret); > + return ret; > + } > + > mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); > private->config_regs = devm_ioremap_resource(dev, mem); > if (IS_ERR(private->config_regs)) { > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.h b/drivers/gpu/drm/mediatek/mtk_drm_drv.h > index ecc00ca..11de7f8 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.h > @@ -15,6 +15,7 @@ > #define MTK_DRM_DRV_H > > #include > +#include "mtk_drm_ddp.h" > #include "mtk_drm_ddp_comp.h" > > #define MAX_CRTC 3 > @@ -36,6 +37,8 @@ struct mtk_mmsys_driver_data { > const enum mtk_ddp_comp_id *third_path; > unsigned int third_len; > > + enum mtk_mmsys_id mmsys_id; > + > bool shadow_register; > }; > > @@ -48,6 +51,7 @@ struct mtk_drm_private { > struct device_node *mutex_node; > struct device *mutex_dev; > void __iomem *config_regs; > + const struct mtk_mmsys_reg_data *reg_data; Why not move reg_data into data? Both could be got by of_device_get_match_data(). Regards, CK > struct device_node *comp_node[DDP_COMPONENT_ID_MAX]; > struct mtk_ddp_comp *ddp_comp[DDP_COMPONENT_ID_MAX]; > const struct mtk_mmsys_driver_data *data; _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel