From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH] drm/bridge/synopsis: stop clobbering drvdata Date: Tue, 09 Jan 2018 15:37:29 +0200 Message-ID: <2473674.qmHiHju6p6@avalon> References: <20171128010538.119114-1-briannorris@chromium.org> <348421ad-a6f5-0943-f38d-d9a6de60e32e@st.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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: Philippe CORNU Cc: "hl@rock-chips.com" , "linux-rockchip@lists.infradead.org" , David Airlie , Brian Norris , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , Yannick FERTRE , Nickey Yang , "mka@chromium.org" , Vincent ABRIOU List-Id: linux-rockchip.vger.kernel.org SGkgUGhpbGlwcGUsCgpPbiBUdWVzZGF5LCA5IEphbnVhcnkgMjAxOCAxNTowMTowMiBFRVQgUGhp bGlwcGUgQ09STlUgd3JvdGU6Cj4gSGkgQXJjaGl0LCBBbmRyemVqICYgTGF1cmVudCwKPiAKPiBS ZWdhcmRpbmcgdGhpcyBwYXRjaCBmcm9tIEJyaWFuLCBJIHRoaW5rIGl0IGNvdWxkIGJlIG5pY2Ug dG8gbWVyZ2UgaXQgCj4gKDF4QWNrZWQtYnksIDJ4UmV2aWV3ZWQtYnkpLgo+IAo+IENvdWxkIHlv dSBwbGVhc2UgaGF2ZSBhIGxvb2s/Cj4gCj4gT25seSB0aGUgc21hbGwgInR5cG8iIGluIHRoZSBo ZWFkbGluZSBuZWVkcyB0byBiZSBjaGFuZ2VkLgo+IAo+IE1hbnkgdGhhbmtzLAoKSSd2ZSBqdXN0 IHJlcGxpZWQgdG8gQnJpYW4gaW4gdGhpcyBtYWlsIHRocmVhZC4gU29ycnkgZm9yIHRoZSBkZWxh eSwgaXQgCnNsaXBwZWQgdGhyb3VnaCB0aGUgY3JhY2tzLiBUaGFuayB5b3UgZm9yIHBpbmdpbmcg bWUuCgo+IE9uIDExLzI4LzIwMTcgMTA6MzQgQU0sIFBoaWxpcHBlIENPUk5VIHdyb3RlOgo+IAo+ ID4gSGkgQnJpYW4sCj4gPiAKPiA+IE9uIDExLzI4LzIwMTcgMDI6MDUgQU0sIEJyaWFuIE5vcnJp cyB3cm90ZToKPiA+IAo+ID4+IEJyaWRnZSBkcml2ZXJzL2hlbHBlcnMgc2hvdWxkbid0IGJlIGNs b2JiZXJpbmcgdGhlIGRydmRhdGEsIHNpbmNlIGEKPiA+PiBwYXJlbnQgZHJpdmVyIG1pZ2h0IG5l ZWQgdG8gb3duIHRoaXMuIEluc3RlYWQsIGxldCdzIHJldHVybiBvdXIKPiA+PiAnZHdfbWlwaV9k c2knIG9iamVjdCBhbmQgaGF2ZSBjYWxsZXJzIHBhc3MgdGhhdCBiYWNrIHRvIHVzIGZvciByZW1v dmFsLgo+ID4gCj4gPiAKPiA+IEFuZCBtYW55IHRoYW5rcyBmb3IgdGhpcyBjbGVhbnVwLgo+ID4g KHBsZWFzZSB1cGRhdGUgdGhlIGhlYWRsaW5lIHdpdGggInN5bm9wc3lzIikKPiA+IAo+ID4gU3Vj Y2Vzc2Z1bGx5IHRlc3RlZCBvbiBzdG0uCj4gPiAKPiA+IEFja2VkLWJ5OiBQaGlsaXBwZSBDb3Ju dSA8cGhpbGlwcGUuY29ybnVAc3QuY29tPgo+ID4gCj4gPiBNYW55IHRoYW5rcywKPiA+IFBoaWxp cHBlIDotKQo+ID4gCj4gPj4KPiA+Pgo+ID4+IFNpZ25lZC1vZmYtYnk6IEJyaWFuIE5vcnJpcyA8 YnJpYW5ub3JyaXNAY2hyb21pdW0ub3JnPgo+ID4+IC0tLQo+ID4+ICAgZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9zeW5vcHN5cy9kdy1taXBpLWRzaS5jIHwgMzYgCj4gPj4gKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tCj4gPj4gICBkcml2ZXJzL2dwdS9kcm0vc3RtL2R3X21pcGlfZHNpLXN0bS5j ICAgICAgICAgfCAxNCArKysrKysrLS0tLQo+ID4+ICAgaW5jbHVkZS9kcm0vYnJpZGdlL2R3X21p cGlfZHNpLmggICAgICAgICAgICAgIHwgMTcgKysrKysrKystLS0tLQo+ID4+ICAgMyBmaWxlcyBj aGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKPiA+Pgo+ID4+Cj4gPj4K PiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1taXBp LWRzaS5jIAo+ID4+IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1taXBpLWRz aS5jCj4gPj4gaW5kZXggZDljY2E0ZmQ2NmVjLi5jMzljN2RjZTIwZWQgMTAwNjQ0Cj4gPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1taXBpLWRzaS5jCj4gPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1taXBpLWRzaS5jCj4gPj4gQEAg LTkyMiw4ICs5MjIsNiBAQCBfX2R3X21pcGlfZHNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYsCj4gPj4gICAgICAgZHNpLT5icmlkZ2Uub2Zfbm9kZSA9IHBkZXYtPmRldi5vZl9u b2RlOwo+ID4+ICAgI2VuZGlmCj4gPj4gLSAgICBkZXZfc2V0X2RydmRhdGEoZGV2LCBkc2kpOwo+ ID4+IC0KPiA+PiAgICAgICByZXR1cm4gZHNpOwo+ID4+ICAgfQo+ID4+IEBAIC05MzUsMjMgKzkz MywxNiBAQCBzdGF0aWMgdm9pZCBfX2R3X21pcGlfZHNpX3JlbW92ZShzdHJ1Y3QgCj4gPj4gZHdf bWlwaV9kc2kgKmRzaSkKPiA+PiAgIC8qCj4gPj4gICAgKiBQcm9iZS9yZW1vdmUgQVBJLCB1c2Vk IGZyb20gcGxhdGZvcm1zIGJhc2VkIG9uIHRoZSBEUk0gYnJpZGdlIEFQSS4KPiA+PiAgICAqLwo+ ID4+IC1pbnQgZHdfbWlwaV9kc2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwK PiA+PiAtICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHdfbWlwaV9kc2lfcGxhdF9kYXRhICpw bGF0X2RhdGEpCj4gPj4gK3N0cnVjdCBkd19taXBpX2RzaSAqCj4gPj4gK2R3X21pcGlfZHNpX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4gPj4gKyAgICAgICAgICBjb25zdCBz dHJ1Y3QgZHdfbWlwaV9kc2lfcGxhdF9kYXRhICpwbGF0X2RhdGEpCj4gPj4gICB7Cj4gPj4gLSAg ICBzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaTsKPiA+PiAtCj4gPj4gLSAgICBkc2kgPSBfX2R3X21p cGlfZHNpX3Byb2JlKHBkZXYsIHBsYXRfZGF0YSk7Cj4gPj4gLSAgICBpZiAoSVNfRVJSKGRzaSkp Cj4gPj4gLSAgICAgICAgcmV0dXJuIFBUUl9FUlIoZHNpKTsKPiA+PiAtCj4gPj4gLSAgICByZXR1 cm4gMDsKPiA+PiArICAgIHJldHVybiBfX2R3X21pcGlfZHNpX3Byb2JlKHBkZXYsIHBsYXRfZGF0 YSk7Cj4gPj4gICB9Cj4gPj4gICBFWFBPUlRfU1lNQk9MX0dQTChkd19taXBpX2RzaV9wcm9iZSk7 Cj4gPj4gLXZvaWQgZHdfbWlwaV9kc2lfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCj4gPj4gK3ZvaWQgZHdfbWlwaV9kc2lfcmVtb3ZlKHN0cnVjdCBkd19taXBpX2RzaSAqZHNp KQo+ID4+ICAgewo+ID4+IC0gICAgc3RydWN0IGR3X21pcGlfZHNpICpkc2kgPSBwbGF0Zm9ybV9n ZXRfZHJ2ZGF0YShwZGV2KTsKPiA+PiAtCj4gPj4gICAgICAgbWlwaV9kc2lfaG9zdF91bnJlZ2lz dGVyKCZkc2ktPmRzaV9ob3N0KTsKPiA+PiAgICAgICBfX2R3X21pcGlfZHNpX3JlbW92ZShkc2kp Owo+ID4+IEBAIC05NjEsMzEgKzk1MiwzMCBAQCBFWFBPUlRfU1lNQk9MX0dQTChkd19taXBpX2Rz aV9yZW1vdmUpOwo+ID4+ICAgLyoKPiA+PiAgICAqIEJpbmQvdW5iaW5kIEFQSSwgdXNlZCBmcm9t IHBsYXRmb3JtcyBiYXNlZCBvbiB0aGUgY29tcG9uZW50IAo+ID4+IGZyYW1ld29yay4KPiA+PiAg ICAqLwo+ID4+IC1pbnQgZHdfbWlwaV9kc2lfYmluZChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2LCBzdHJ1Y3QgZHJtX2VuY29kZXIgCj4gPj4gKmVuY29kZXIsCj4gPj4gLSAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgZHdfbWlwaV9kc2lfcGxhdF9kYXRhICpwbGF0X2RhdGEpCj4gPj4gK3N0 cnVjdCBkd19taXBpX2RzaSAqCj4gPj4gK2R3X21pcGlfZHNpX2JpbmQoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldiwgc3RydWN0IGRybV9lbmNvZGVyIAo+ID4+ICplbmNvZGVyLAo+ID4+ICsg ICAgICAgICBjb25zdCBzdHJ1Y3QgZHdfbWlwaV9kc2lfcGxhdF9kYXRhICpwbGF0X2RhdGEpCj4g Pj4gICB7Cj4gPj4gICAgICAgc3RydWN0IGR3X21pcGlfZHNpICpkc2k7Cj4gPj4gICAgICAgaW50 IHJldDsKPiA+PiAgICAgICBkc2kgPSBfX2R3X21pcGlfZHNpX3Byb2JlKHBkZXYsIHBsYXRfZGF0 YSk7Cj4gPj4gICAgICAgaWYgKElTX0VSUihkc2kpKQo+ID4+IC0gICAgICAgIHJldHVybiBQVFJf RVJSKGRzaSk7Cj4gPj4gKyAgICAgICAgcmV0dXJuIGRzaTsKPiA+PiAgICAgICByZXQgPSBkcm1f YnJpZGdlX2F0dGFjaChlbmNvZGVyLCAmZHNpLT5icmlkZ2UsIE5VTEwpOwo+ID4+ICAgICAgIGlm IChyZXQpIHsKPiA+PiAtICAgICAgICBkd19taXBpX2RzaV9yZW1vdmUocGRldik7Cj4gPj4gKyAg ICAgICAgZHdfbWlwaV9kc2lfcmVtb3ZlKGRzaSk7Cj4gPj4gICAgICAgICAgIERSTV9FUlJPUigi RmFpbGVkIHRvIGluaXRpYWxpemUgYnJpZGdlIHdpdGggZHJtXG4iKTsKPiA+PiAtICAgICAgICBy ZXR1cm4gcmV0Owo+ID4+ICsgICAgICAgIHJldHVybiBFUlJfUFRSKHJldCk7Cj4gPj4gICAgICAg fQo+ID4+IC0gICAgcmV0dXJuIDA7Cj4gPj4gKyAgICByZXR1cm4gZHNpOwo+ID4+ICAgfQo+ID4+ ICAgRVhQT1JUX1NZTUJPTF9HUEwoZHdfbWlwaV9kc2lfYmluZCk7Cj4gPj4gLXZvaWQgZHdfbWlw aV9kc2lfdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+PiArdm9pZCBkd19taXBpX2RzaV91 bmJpbmQoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpCj4gPj4gICB7Cj4gPj4gLSAgICBzdHJ1Y3Qg ZHdfbWlwaV9kc2kgKmRzaSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ID4+IC0KPiA+PiAgICAg ICBfX2R3X21pcGlfZHNpX3JlbW92ZShkc2kpOwo+ID4+ICAgfQo+ID4+ICAgRVhQT1JUX1NZTUJP TF9HUEwoZHdfbWlwaV9kc2lfdW5iaW5kKTsKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3N0bS9kd19taXBpX2RzaS1zdG0uYyAKPiA+PiBiL2RyaXZlcnMvZ3B1L2RybS9zdG0vZHdf bWlwaV9kc2ktc3RtLmMKPiA+PiBpbmRleCBlNWI2MzEwMjQwZmUuLjdlZDBlZjdmNmVjMiAxMDA2 NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vc3RtL2R3X21pcGlfZHNpLXN0bS5jCj4gPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3N0bS9kd19taXBpX2RzaS1zdG0uYwo+ID4+IEBAIC02Niw2 ICs2Niw3IEBAIGVudW0gZHNpX2NvbG9yIHsKPiA+PiAgIHN0cnVjdCBkd19taXBpX2RzaV9zdG0g ewo+ID4+ICAgICAgIHZvaWQgX19pb21lbSAqYmFzZTsKPiA+PiAgICAgICBzdHJ1Y3QgY2xrICpw bGxyZWZfY2xrOwo+ID4+ICsgICAgc3RydWN0IGR3X21pcGlfZHNpICpkc2k7Cj4gPj4gICB9Owo+ ID4+ICAgc3RhdGljIGlubGluZSB2b2lkIGRzaV93cml0ZShzdHJ1Y3QgZHdfbWlwaV9kc2lfc3Rt ICpkc2ksIHUzMiByZWcsIAo+ID4+IHUzMiB2YWwpCj4gPj4gQEAgLTMxOCwyMSArMzE5LDI0IEBA IHN0YXRpYyBpbnQgZHdfbWlwaV9kc2lfc3RtX3Byb2JlKHN0cnVjdCAKPiA+PiBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpCj4gPj4gICAgICAgZHdfbWlwaV9kc2lfc3RtX3BsYXRfZGF0YS5iYXNlID0g ZHNpLT5iYXNlOwo+ID4+ICAgICAgIGR3X21pcGlfZHNpX3N0bV9wbGF0X2RhdGEucHJpdl9kYXRh ID0gZHNpOwo+ID4+IC0gICAgcmV0ID0gZHdfbWlwaV9kc2lfcHJvYmUocGRldiwgJmR3X21pcGlf ZHNpX3N0bV9wbGF0X2RhdGEpOwo+ID4+IC0gICAgaWYgKHJldCkgewo+ID4+ICsgICAgcGxhdGZv cm1fc2V0X2RydmRhdGEocGRldiwgZHNpKTsKPiA+PiArCj4gPj4gKyAgICBkc2ktPmRzaSA9IGR3 X21pcGlfZHNpX3Byb2JlKHBkZXYsICZkd19taXBpX2RzaV9zdG1fcGxhdF9kYXRhKTsKPiA+PiAr ICAgIGlmIChJU19FUlIoZHNpLT5kc2kpKSB7Cj4gPj4gICAgICAgICAgIERSTV9FUlJPUigiRmFp bGVkIHRvIGluaXRpYWxpemUgbWlwaSBkc2kgaG9zdFxuIik7Cj4gPj4gICAgICAgICAgIGNsa19k aXNhYmxlX3VucHJlcGFyZShkc2ktPnBsbHJlZl9jbGspOwo+ID4+ICsgICAgICAgIHJldHVybiBQ VFJfRVJSKGRzaS0+ZHNpKTsKPiA+PiAgICAgICB9Cj4gPj4gLSAgICByZXR1cm4gcmV0Owo+ID4+ ICsgICAgcmV0dXJuIDA7Cj4gPj4gICB9Cj4gPj4gICBzdGF0aWMgaW50IGR3X21pcGlfZHNpX3N0 bV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+PiAgIHsKPiA+PiAtICAg IHN0cnVjdCBkd19taXBpX2RzaV9zdG0gKmRzaSA9IGR3X21pcGlfZHNpX3N0bV9wbGF0X2RhdGEu cHJpdl9kYXRhOwo+ID4+ICsgICAgc3RydWN0IGR3X21pcGlfZHNpX3N0bSAqZHNpID0gcGxhdGZv cm1fZ2V0X2RydmRhdGEocGRldik7Cj4gPj4gICAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRz aS0+cGxscmVmX2Nsayk7Cj4gPj4gLSAgICBkd19taXBpX2RzaV9yZW1vdmUocGRldik7Cj4gPj4g KyAgICBkd19taXBpX2RzaV9yZW1vdmUoZHNpLT5kc2kpOwo+ID4+ICAgICAgIHJldHVybiAwOwo+ ID4+ICAgfQo+ID4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9icmlkZ2UvZHdfbWlwaV9kc2ku aCAKPiA+PiBiL2luY2x1ZGUvZHJtL2JyaWRnZS9kd19taXBpX2RzaS5oCj4gPj4gaW5kZXggOWIz MGZlYzMwMmM4Li5kOWM2ZDU0OWY5NzEgMTAwNjQ0Cj4gPj4gLS0tIGEvaW5jbHVkZS9kcm0vYnJp ZGdlL2R3X21pcGlfZHNpLmgKPiA+PiArKysgYi9pbmNsdWRlL2RybS9icmlkZ2UvZHdfbWlwaV9k c2kuaAo+ID4+IEBAIC0xMCw2ICsxMCw4IEBACj4gPj4gICAjaWZuZGVmIF9fRFdfTUlQSV9EU0lf Xwo+ID4+ICAgI2RlZmluZSBfX0RXX01JUElfRFNJX18KPiA+PiArc3RydWN0IGR3X21pcGlfZHNp Owo+ID4+ICsKPiA+PiAgIHN0cnVjdCBkd19taXBpX2RzaV9waHlfb3BzIHsKPiA+PiAgICAgICBp bnQgKCppbml0KSh2b2lkICpwcml2X2RhdGEpOwo+ID4+ICAgICAgIGludCAoKmdldF9sYW5lX21i cHMpKHZvaWQgKnByaXZfZGF0YSwgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgCj4gPj4gKm1vZGUs Cj4gPj4gQEAgLTI5LDExICszMSwxNCBAQCBzdHJ1Y3QgZHdfbWlwaV9kc2lfcGxhdF9kYXRhIHsK PiA+PiAgICAgICB2b2lkICpwcml2X2RhdGE7Cj4gPj4gICB9Owo+ID4+IC1pbnQgZHdfbWlwaV9k c2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPiA+PiAtICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgZHdfbWlwaV9kc2lfcGxhdF9kYXRhICpwbGF0X2RhdGEpOwo+ID4+IC12 b2lkIGR3X21pcGlfZHNpX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTsKPiA+ PiAtaW50IGR3X21pcGlfZHNpX2JpbmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3Ry dWN0IGRybV9lbmNvZGVyIAo+ID4+ICplbmNvZGVyLAo+ID4+IC0gICAgICAgICAgICAgY29uc3Qg c3RydWN0IGR3X21pcGlfZHNpX3BsYXRfZGF0YSAqcGxhdF9kYXRhKTsKPiA+PiAtdm9pZCBkd19t aXBpX2RzaV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2KTsKPiA+PiArc3RydWN0IGR3X21pcGlf ZHNpICpkd19taXBpX2RzaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGR3X21pcGlfZHNpX3BsYXRfZGF0 YQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgKnBsYXRfZGF0YSk7Cj4gPj4gK3ZvaWQgZHdf bWlwaV9kc2lfcmVtb3ZlKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKTsKPiA+PiArc3RydWN0IGR3 X21pcGlfZHNpICpkd19taXBpX2RzaV9iaW5kKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYs Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwK PiA+PiArICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGR3X21pcGlfZHNpX3BsYXRf ZGF0YQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAqcGxhdF9kYXRhKTsKPiA+PiArdm9pZCBk d19taXBpX2RzaV91bmJpbmQoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpOwo+ID4+ICAgI2VuZGlm IC8qIF9fRFdfTUlQSV9EU0lfXyAqLwoKCi0tIApSZWdhcmRzLAoKTGF1cmVudCBQaW5jaGFydAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757724AbeAINhE (ORCPT + 1 other); Tue, 9 Jan 2018 08:37:04 -0500 Received: from galahad.ideasonboard.com ([185.26.127.97]:56494 "EHLO galahad.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757542AbeAINhA (ORCPT ); Tue, 9 Jan 2018 08:37:00 -0500 From: Laurent Pinchart To: Philippe CORNU Cc: Brian Norris , Archit Taneja , Andrzej Hajda , David Airlie , Yannick FERTRE , Benjamin Gaignard , Vincent ABRIOU , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , Sean Paul , Nickey Yang , "hl@rock-chips.com" , "linux-rockchip@lists.infradead.org" , "mka@chromium.org" Subject: Re: [PATCH] drm/bridge/synopsis: stop clobbering drvdata Date: Tue, 09 Jan 2018 15:37:29 +0200 Message-ID: <2473674.qmHiHju6p6@avalon> Organization: Ideas on Board Oy In-Reply-To: References: <20171128010538.119114-1-briannorris@chromium.org> <348421ad-a6f5-0943-f38d-d9a6de60e32e@st.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: Hi Philippe, On Tuesday, 9 January 2018 15:01:02 EET Philippe CORNU wrote: > Hi Archit, Andrzej & Laurent, > > Regarding this patch from Brian, I think it could be nice to merge it > (1xAcked-by, 2xReviewed-by). > > Could you please have a look? > > Only the small "typo" in the headline needs to be changed. > > Many thanks, I've just replied to Brian in this mail thread. Sorry for the delay, it slipped through the cracks. Thank you for pinging me. > On 11/28/2017 10:34 AM, Philippe CORNU wrote: > > > Hi Brian, > > > > On 11/28/2017 02:05 AM, Brian Norris wrote: > > > >> Bridge drivers/helpers shouldn't be clobbering the drvdata, since a > >> parent driver might need to own this. Instead, let's return our > >> 'dw_mipi_dsi' object and have callers pass that back to us for removal. > > > > > > And many thanks for this cleanup. > > (please update the headline with "synopsys") > > > > Successfully tested on stm. > > > > Acked-by: Philippe Cornu > > > > Many thanks, > > Philippe :-) > > > >> > >> > >> Signed-off-by: Brian Norris > >> --- > >> drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 36 > >> ++++++++++----------------- > >> drivers/gpu/drm/stm/dw_mipi_dsi-stm.c | 14 +++++++---- > >> include/drm/bridge/dw_mipi_dsi.h | 17 ++++++++----- > >> 3 files changed, 33 insertions(+), 34 deletions(-) > >> > >> > >> > >> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c > >> b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c > >> index d9cca4fd66ec..c39c7dce20ed 100644 > >> --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c > >> +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c > >> @@ -922,8 +922,6 @@ __dw_mipi_dsi_probe(struct platform_device *pdev, > >> dsi->bridge.of_node = pdev->dev.of_node; > >> #endif > >> - dev_set_drvdata(dev, dsi); > >> - > >> return dsi; > >> } > >> @@ -935,23 +933,16 @@ static void __dw_mipi_dsi_remove(struct > >> dw_mipi_dsi *dsi) > >> /* > >> * Probe/remove API, used from platforms based on the DRM bridge API. > >> */ > >> -int dw_mipi_dsi_probe(struct platform_device *pdev, > >> - const struct dw_mipi_dsi_plat_data *plat_data) > >> +struct dw_mipi_dsi * > >> +dw_mipi_dsi_probe(struct platform_device *pdev, > >> + const struct dw_mipi_dsi_plat_data *plat_data) > >> { > >> - struct dw_mipi_dsi *dsi; > >> - > >> - dsi = __dw_mipi_dsi_probe(pdev, plat_data); > >> - if (IS_ERR(dsi)) > >> - return PTR_ERR(dsi); > >> - > >> - return 0; > >> + return __dw_mipi_dsi_probe(pdev, plat_data); > >> } > >> EXPORT_SYMBOL_GPL(dw_mipi_dsi_probe); > >> -void dw_mipi_dsi_remove(struct platform_device *pdev) > >> +void dw_mipi_dsi_remove(struct dw_mipi_dsi *dsi) > >> { > >> - struct dw_mipi_dsi *dsi = platform_get_drvdata(pdev); > >> - > >> mipi_dsi_host_unregister(&dsi->dsi_host); > >> __dw_mipi_dsi_remove(dsi); > >> @@ -961,31 +952,30 @@ EXPORT_SYMBOL_GPL(dw_mipi_dsi_remove); > >> /* > >> * Bind/unbind API, used from platforms based on the component > >> framework. > >> */ > >> -int dw_mipi_dsi_bind(struct platform_device *pdev, struct drm_encoder > >> *encoder, > >> - const struct dw_mipi_dsi_plat_data *plat_data) > >> +struct dw_mipi_dsi * > >> +dw_mipi_dsi_bind(struct platform_device *pdev, struct drm_encoder > >> *encoder, > >> + const struct dw_mipi_dsi_plat_data *plat_data) > >> { > >> struct dw_mipi_dsi *dsi; > >> int ret; > >> dsi = __dw_mipi_dsi_probe(pdev, plat_data); > >> if (IS_ERR(dsi)) > >> - return PTR_ERR(dsi); > >> + return dsi; > >> ret = drm_bridge_attach(encoder, &dsi->bridge, NULL); > >> if (ret) { > >> - dw_mipi_dsi_remove(pdev); > >> + dw_mipi_dsi_remove(dsi); > >> DRM_ERROR("Failed to initialize bridge with drm\n"); > >> - return ret; > >> + return ERR_PTR(ret); > >> } > >> - return 0; > >> + return dsi; > >> } > >> EXPORT_SYMBOL_GPL(dw_mipi_dsi_bind); > >> -void dw_mipi_dsi_unbind(struct device *dev) > >> +void dw_mipi_dsi_unbind(struct dw_mipi_dsi *dsi) > >> { > >> - struct dw_mipi_dsi *dsi = dev_get_drvdata(dev); > >> - > >> __dw_mipi_dsi_remove(dsi); > >> } > >> EXPORT_SYMBOL_GPL(dw_mipi_dsi_unbind); > >> diff --git a/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c > >> b/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c > >> index e5b6310240fe..7ed0ef7f6ec2 100644 > >> --- a/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c > >> +++ b/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c > >> @@ -66,6 +66,7 @@ enum dsi_color { > >> struct dw_mipi_dsi_stm { > >> void __iomem *base; > >> struct clk *pllref_clk; > >> + struct dw_mipi_dsi *dsi; > >> }; > >> static inline void dsi_write(struct dw_mipi_dsi_stm *dsi, u32 reg, > >> u32 val) > >> @@ -318,21 +319,24 @@ static int dw_mipi_dsi_stm_probe(struct > >> platform_device *pdev) > >> dw_mipi_dsi_stm_plat_data.base = dsi->base; > >> dw_mipi_dsi_stm_plat_data.priv_data = dsi; > >> - ret = dw_mipi_dsi_probe(pdev, &dw_mipi_dsi_stm_plat_data); > >> - if (ret) { > >> + platform_set_drvdata(pdev, dsi); > >> + > >> + dsi->dsi = dw_mipi_dsi_probe(pdev, &dw_mipi_dsi_stm_plat_data); > >> + if (IS_ERR(dsi->dsi)) { > >> DRM_ERROR("Failed to initialize mipi dsi host\n"); > >> clk_disable_unprepare(dsi->pllref_clk); > >> + return PTR_ERR(dsi->dsi); > >> } > >> - return ret; > >> + return 0; > >> } > >> static int dw_mipi_dsi_stm_remove(struct platform_device *pdev) > >> { > >> - struct dw_mipi_dsi_stm *dsi = dw_mipi_dsi_stm_plat_data.priv_data; > >> + struct dw_mipi_dsi_stm *dsi = platform_get_drvdata(pdev); > >> clk_disable_unprepare(dsi->pllref_clk); > >> - dw_mipi_dsi_remove(pdev); > >> + dw_mipi_dsi_remove(dsi->dsi); > >> return 0; > >> } > >> diff --git a/include/drm/bridge/dw_mipi_dsi.h > >> b/include/drm/bridge/dw_mipi_dsi.h > >> index 9b30fec302c8..d9c6d549f971 100644 > >> --- a/include/drm/bridge/dw_mipi_dsi.h > >> +++ b/include/drm/bridge/dw_mipi_dsi.h > >> @@ -10,6 +10,8 @@ > >> #ifndef __DW_MIPI_DSI__ > >> #define __DW_MIPI_DSI__ > >> +struct dw_mipi_dsi; > >> + > >> struct dw_mipi_dsi_phy_ops { > >> int (*init)(void *priv_data); > >> int (*get_lane_mbps)(void *priv_data, struct drm_display_mode > >> *mode, > >> @@ -29,11 +31,14 @@ struct dw_mipi_dsi_plat_data { > >> void *priv_data; > >> }; > >> -int dw_mipi_dsi_probe(struct platform_device *pdev, > >> - const struct dw_mipi_dsi_plat_data *plat_data); > >> -void dw_mipi_dsi_remove(struct platform_device *pdev); > >> -int dw_mipi_dsi_bind(struct platform_device *pdev, struct drm_encoder > >> *encoder, > >> - const struct dw_mipi_dsi_plat_data *plat_data); > >> -void dw_mipi_dsi_unbind(struct device *dev); > >> +struct dw_mipi_dsi *dw_mipi_dsi_probe(struct platform_device *pdev, > >> + const struct dw_mipi_dsi_plat_data > >> + *plat_data); > >> +void dw_mipi_dsi_remove(struct dw_mipi_dsi *dsi); > >> +struct dw_mipi_dsi *dw_mipi_dsi_bind(struct platform_device *pdev, > >> + struct drm_encoder *encoder, > >> + const struct dw_mipi_dsi_plat_data > >> + *plat_data); > >> +void dw_mipi_dsi_unbind(struct dw_mipi_dsi *dsi); > >> #endif /* __DW_MIPI_DSI__ */ -- Regards, Laurent Pinchart