From mboxrd@z Thu Jan 1 00:00:00 1970 From: Russell King - ARM Linux admin Subject: Re: [RFC,3/3] drm/komeda: Allow non-component drm_bridge only endpoints Date: Tue, 22 Oct 2019 15:53:29 +0100 Message-ID: <20191022145328.GW25745@shell.armlinux.org.uk> References: <20191016162206.u2yo37rtqwou4oep@DESKTOP-E1NTVVP.localdomain> <20191017030752.GA3109@jamwan02-TSP300> <20191017082043.bpiuvfr3r4jngxtu@DESKTOP-E1NTVVP.localdomain> <20191017102055.GA8308@jamwan02-TSP300> <20191017104812.6qpuzoh5bx5i2y3m@DESKTOP-E1NTVVP.localdomain> <20191017114137.GC25745@shell.armlinux.org.uk> <20191022084210.GX11828@phenom.ffwll.local> <20191022084826.GP25745@shell.armlinux.org.uk> <20191022144207.GV25745@shell.armlinux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from pandora.armlinux.org.uk (pandora.armlinux.org.uk [IPv6:2001:4d48:ad52:3201:214:fdff:fe10:1be6]) by gabe.freedesktop.org (Postfix) with ESMTPS id 84D656E838 for ; Tue, 22 Oct 2019 14:53:41 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191022144207.GV25745@shell.armlinux.org.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Mihail Atanassov , David Airlie , Liviu Dudau , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "james qian wang (Arm Technology China)" , nd , Sean Paul List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBPY3QgMjIsIDIwMTkgYXQgMDM6NDI6MDdQTSArMDEwMCwgUnVzc2VsbCBLaW5nIC0g QVJNIExpbnV4IGFkbWluIHdyb3RlOgo+IE9uIFR1ZSwgT2N0IDIyLCAyMDE5IGF0IDEwOjUwOjQy QU0gKzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiBPbiBUdWUsIE9jdCAyMiwgMjAxOSBh dCAxMDo0OCBBTSBSdXNzZWxsIEtpbmcgLSBBUk0gTGludXggYWRtaW4KPiA+IDxsaW51eEBhcm1s aW51eC5vcmcudWs+IHdyb3RlOgo+ID4gPiBJIGhhZCBhIHBhdGNoZXMsIHdoaWNoIGlzIHdoeSBJ IHJhaXNlZCB0aGUgcHJvYmxlbSB3aXRoIHRoZSBjb3JlOgo+ID4gPgo+ID4gPiA2OTYxZWRmZWUy NmQgYnJpZGdlIGhhY2tzIHVzaW5nIGRldmljZSBsaW5rcwo+ID4gPgo+ID4gPiBidXQgaXQgbmV2 ZXIgd2VudCBmdXJ0aGVyIHRoYW4gYW4gZXhwZXJpbWVudCBhdCB0aGUgdGltZSBiZWNhdXNlIG9m IHRoZQo+ID4gPiBwcm9ibGVtcyBpbiB0aGUgY29yZS4gIEFzIGl0IHdhcyBhIGhhY2ssIGl0IG5l dmVyIGdvdCBwb3N0ZWQuICBTZWVtcwo+ID4gPiB0aGF0IGtlcm5lbCB0cmVlIChmb3IgdGhlIGN1 Ym94KSBpcyBzdGlsbCA1LjIgYmFzZWQsIHNvIGhhcyBhIGxvdCBvZgo+ID4gPiBwYXRjaGVzIGFu ZCBtaWdodCBuZWVkIHVwZGF0aW5nIHRvIGEgbW9yZSByZWNlbnQgYmFzZSBiZWZvcmUgYW55dGhp bmcKPiA+ID4gY2FuIGJlIHRlc3RlZC4KPiA+IAo+ID4gCj4gPiBGb3IgcmVmZXJlbmNlLCB0aGUg cGFuZWwgcGF0Y2g6Cj4gPiAKPiA+IGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gv MTAzNjQ4NzMvCj4gPiAKPiA+IEFuZCB0aGUgaHVnZSBkaXNjdXNzaW9uIGFyb3VuZCBicmlkZ2Vz LCB0aGF0IHJlc3VsdGVkIGluIFJhZmFlbAo+ID4gV3l6b2NraSBmaXhpbmcgYWxsIHRoZSBjb3Jl IGlzc3VlczoKPiA+IAo+ID4gaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvZHJpLWRldmVs L21zZzIwMTkyNy5odG1sCj4gPiAKPiA+IEphbWVzLCBkbyB5b3Ugd2FudCB0byBsb29rIGludG8g dGhpcyBmb3IgYnJpZGdlcz8KPiAKPiBJIGNhbiBub3cgY29uZmlybSB0aGF0IGl0IGRvZXMgd29y ay4KClNvbWV0aGluZyBsaWtlIHRoaXMgLSBpdCdzIGJhc2VkIG9mZiBhbiBvbGRlciBrZXJuZWws IHNvIG1heSBiZSBtaXNzaW5nCnNvbWUgb2YgdGhlIGJyaWRnZSBkcml2ZXJzLCBidXQgc2hvdWxk IGJlIHN1ZmZpY2llbnQgZm9yIHBlb3BsZSB0byB0ZXN0CndpdGguCgo4PD09PT0KRnJvbTogUnVz c2VsbCBLaW5nIDxybWsra2VybmVsQGFybWxpbnV4Lm9yZy51az4KU3ViamVjdDogW1BBVENIXSBk cm0vYnJpZGdlOiBhZGQgc3VwcG9ydCBmb3IgZGV2aWNlIGxpbmtzIHRvIGJyaWRnZQoKQnJpZGdl IGRldmljZXMgaGF2ZSBiZWVuIGEgcG90ZW50aWFsIGZvciBrZXJuZWwgb29wcyBhcyB0aGVpciBs aWZldGltZQppcyBpbmRlcGVuZGVudCBvZiB0aGUgRFJNIGRldmljZSB0aGF0IHRoZXkgYXJlIGJv dW5kIHRvLiAgSGVuY2UsIGlmIGEKYnJpZGdlIGRldmljZSBpcyB1bmJvdW5kIHdoaWxlIHRoZSBw YXJlbnQgRFJNIGRldmljZSBpcyB1c2luZyB0aGVtLCB0aGUKcGFyZW50IGhhcHBpbHkgY29udGlu dWVzIHRvIHVzZSB0aGUgYnJpZGdlIGRldmljZSwgY2FsbGluZyB0aGUgZHJpdmVyCmFuZCBhY2Nl c3NpbmcgaXRzIG9iamVjdHMgdGhhdCBoYXZlIGJlZW4gZnJlZWQuCgpUaGlzIGNhbiBjYXVzZSBr ZXJuZWwgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGtlcm5lbCBvb3BzLgoKVG8gY29udHJvbCB0aGlz LCB1c2UgZGV2aWNlIGxpbmtzIHRvIGVuc3VyZSB0aGF0IHRoZSBwYXJlbnQgRFJNIGRldmljZQpp cyB1bmJvdW5kIHdoZW4gdGhlIGJyaWRnZSBkZXZpY2UgaXMgdW5ib3VuZCwgYW5kIHdoZW4gdGhl IGJyaWRnZQpkZXZpY2UgaXMgcmUtYm91bmQsIGF1dG9tYXRpY2FsbHkgcmViaW5kIHRoZSBwYXJl bnQgRFJNIGRldmljZS4KClNpZ25lZC1vZmYtYnk6IFJ1c3NlbGwgS2luZyA8cm1rK2tlcm5lbEBh cm1saW51eC5vcmcudWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1 MTFfZHJ2LmMgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC1hbng3OHh4 LmMgICAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kdW1iLXZnYS1kYWMuYyAgICAg ICAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9sdmRzLWVuY29kZXIuYyAgICAgICAg IHwgIDEgKwogLi4uL2JyaWRnZS9tZWdhY2hpcHMtc3RkcHh4eHgtZ2UtYjg1MHYzLWZ3LmMgIHwg IDEgKwogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9ueHAtcHRuMzQ2MC5jICAgICAgICAgIHwgIDEg KwogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9wYW5lbC5jICAgICAgICAgICAgICAgIHwgIDEgKwog ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9wYXJhZGUtcHM4NjIyLmMgICAgICAgIHwgIDEgKwogZHJp dmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MDJ4LmMgICAgICAgICAgICAgIHwgIDEgKwogZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9zaWk5MjM0LmMgICAgICAgICAgICAgIHwgIDEgKwogZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9zaWwtc2lpODYyMC5jICAgICAgICAgIHwgIDEgKwogZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS90YzM1ODc2Ny5jICAgICAgICAgICAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJt L2JyaWRnZS90aS10ZnA0MTAuYyAgICAgICAgICAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL2Ry bV9icmlkZ2UuYyAgICAgICAgICAgICAgICAgIHwgNDggKysrKysrKysrKysrKystLS0tLQogZHJp dmVycy9ncHUvZHJtL2kyYy90ZGE5OTh4X2Rydi5jICAgICAgICAgICAgIHwgIDEgKwogaW5jbHVk ZS9kcm0vZHJtX2JyaWRnZS5oICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKysKIDE2IGZpbGVz IGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTExX2Rydi5jIGIvZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmMKaW5kZXggZjZkMjY4MWY2OTI3Li42 YTU5MDZkYTU4ZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9h ZHY3NTExX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTEx X2Rydi5jCkBAIC0xMjE3LDYgKzEyMTcsNyBAQCBzdGF0aWMgaW50IGFkdjc1MTFfcHJvYmUoc3Ry dWN0IGkyY19jbGllbnQgKmkyYywgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQogCQln b3RvIGVycl91bnJlZ2lzdGVyX2NlYzsKIAogCWFkdjc1MTEtPmJyaWRnZS5mdW5jcyA9ICZhZHY3 NTExX2JyaWRnZV9mdW5jczsKKwlhZHY3NTExLT5icmlkZ2UuZGV2aWNlID0gZGV2OwogCWFkdjc1 MTEtPmJyaWRnZS5vZl9ub2RlID0gZGV2LT5vZl9ub2RlOwogCiAJZHJtX2JyaWRnZV9hZGQoJmFk djc1MTEtPmJyaWRnZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxv Z2l4LWFueDc4eHguYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgtYW54Nzh4eC5j CmluZGV4IDNjN2NjNWFmNzM1Yy4uNzdmZjE3YzM4MDM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL2FuYWxvZ2l4LWFueDc4eHguYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJp ZGdlL2FuYWxvZ2l4LWFueDc4eHguYwpAQCAtMTMyMyw2ICsxMzIzLDcgQEAgc3RhdGljIGludCBh bng3OHh4X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAogCiAJbXV0ZXhfaW5p dCgmYW54Nzh4eC0+bG9jayk7CiAKKwlhbng3OHh4LT5icmlkZ2UuZGV2aWNlID0gJmNsaWVudC0+ ZGV2OwogI2lmIElTX0VOQUJMRUQoQ09ORklHX09GKQogCWFueDc4eHgtPmJyaWRnZS5vZl9ub2Rl ID0gY2xpZW50LT5kZXYub2Zfbm9kZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9kdW1iLXZnYS1kYWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHVtYi12 Z2EtZGFjLmMKaW5kZXggZDMyODg1YjkwNmFlLi40MDE2OTkyMDU2MGUgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2UvZHVtYi12Z2EtZGFjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9kdW1iLXZnYS1kYWMuYwpAQCAtMjAyLDYgKzIwMiw3IEBAIHN0YXRpYyBpbnQgZHVt Yl92Z2FfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAl9CiAKIAl2Z2EtPmJy aWRnZS5mdW5jcyA9ICZkdW1iX3ZnYV9icmlkZ2VfZnVuY3M7CisJdmdhLT5icmlkZ2UuZGV2aWNl ID0gJnBkZXYtPmRldjsKIAl2Z2EtPmJyaWRnZS5vZl9ub2RlID0gcGRldi0+ZGV2Lm9mX25vZGU7 CiAJdmdhLT5icmlkZ2UudGltaW5ncyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YSgmcGRldi0+ ZGV2KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9sdmRzLWVuY29kZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvbHZkcy1lbmNvZGVyLmMKaW5kZXggMmFiMmMyMzRm MjZjLi41MDEyYmUzNWE1ZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvbHZk cy1lbmNvZGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9sdmRzLWVuY29kZXIuYwpA QCAtMTE1LDYgKzExNSw3IEBAIHN0YXRpYyBpbnQgbHZkc19lbmNvZGVyX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJICogdG8gbG9vayB1cC4KIAkgKi8KIAlsdmRzX2VuY29k ZXItPmJyaWRnZS5vZl9ub2RlID0gZGV2LT5vZl9ub2RlOworCWx2ZHNfZW5jb2Rlci0+YnJpZGdl LmRldmljZSA9IGRldjsKIAlsdmRzX2VuY29kZXItPmJyaWRnZS5mdW5jcyA9ICZmdW5jczsKIAlk cm1fYnJpZGdlX2FkZCgmbHZkc19lbmNvZGVyLT5icmlkZ2UpOwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL21lZ2FjaGlwcy1zdGRweHh4eC1nZS1iODUwdjMtZncuYyBiL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2UvbWVnYWNoaXBzLXN0ZHB4eHh4LWdlLWI4NTB2My1mdy5jCmlu ZGV4IDc5MzExZjgzNTRiZC4uZTIxMWM1N2Y2ZjU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vYnJpZGdlL21lZ2FjaGlwcy1zdGRweHh4eC1nZS1iODUwdjMtZncuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL21lZ2FjaGlwcy1zdGRweHh4eC1nZS1iODUwdjMtZncuYwpAQCAtMzA0 LDYgKzMwNCw3IEBAIHN0YXRpYyBpbnQgc3RkcDQwMjhfZ2VfYjg1MHYzX2Z3X3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50ICpzdGRwNDAyOF9pMmMsCiAKIAkvKiBkcm0gYnJpZGdlIGluaXRpYWxpemF0 aW9uICovCiAJZ2VfYjg1MHYzX2x2ZHNfcHRyLT5icmlkZ2UuZnVuY3MgPSAmZ2VfYjg1MHYzX2x2 ZHNfZnVuY3M7CisJZ2VfYjg1MHYzX2x2ZHNfcHRyLT5icmlkZ2UuZGV2aWNlID0gZGV2OwogCWdl X2I4NTB2M19sdmRzX3B0ci0+YnJpZGdlLm9mX25vZGUgPSBkZXYtPm9mX25vZGU7CiAJZHJtX2Jy aWRnZV9hZGQoJmdlX2I4NTB2M19sdmRzX3B0ci0+YnJpZGdlKTsKIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2JyaWRnZS9ueHAtcHRuMzQ2MC5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9ueHAtcHRuMzQ2MC5jCmluZGV4IDk4YmM2NTBiOGM5NS4uMDAwOTdlMzE0NTc1IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL254cC1wdG4zNDYwLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9ueHAtcHRuMzQ2MC5jCkBAIC0zMjMsNiArMzIzLDcgQEAgc3RhdGljIGlu dCBwdG4zNDYwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCiAJfQogCiAJcHRuX2Jy aWRnZS0+YnJpZGdlLmZ1bmNzID0gJnB0bjM0NjBfYnJpZGdlX2Z1bmNzOworCXB0bl9icmlkZ2Ut PmJyaWRnZS5kZXZpY2UgPSBkZXY7CiAJcHRuX2JyaWRnZS0+YnJpZGdlLm9mX25vZGUgPSBkZXYt Pm9mX25vZGU7CiAJZHJtX2JyaWRnZV9hZGQoJnB0bl9icmlkZ2UtPmJyaWRnZSk7CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvcGFuZWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9i cmlkZ2UvcGFuZWwuYwppbmRleCBiMTJhZTNhNGM1ZjEuLmVhYjcxMjZmMGQ2MSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9wYW5lbC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9i cmlkZ2UvcGFuZWwuYwpAQCAtMTY4LDYgKzE2OCw3IEBAIHN0cnVjdCBkcm1fYnJpZGdlICpkcm1f cGFuZWxfYnJpZGdlX2FkZChzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCwKIAlwYW5lbF9icmlkZ2Ut PnBhbmVsID0gcGFuZWw7CiAKIAlwYW5lbF9icmlkZ2UtPmJyaWRnZS5mdW5jcyA9ICZwYW5lbF9i cmlkZ2VfYnJpZGdlX2Z1bmNzOworCXBhbmVsX2JyaWRnZS0+YnJpZGdlLmRldmljZSA9IHBhbmVs LT5kZXY7CiAjaWZkZWYgQ09ORklHX09GCiAJcGFuZWxfYnJpZGdlLT5icmlkZ2Uub2Zfbm9kZSA9 IHBhbmVsLT5kZXYtPm9mX25vZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvcGFyYWRlLXBzODYyMi5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9wYXJhZGUt cHM4NjIyLmMKaW5kZXggMmQ4ODE0NmU0ODM2Li5mZjc5ZGYwZmYxODMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2UvcGFyYWRlLXBzODYyMi5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvcGFyYWRlLXBzODYyMi5jCkBAIC01ODksNiArNTg5LDcgQEAgc3RhdGljIGludCBw czg2MjJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKIAl9CiAKIAlwczg2MjItPmJy aWRnZS5mdW5jcyA9ICZwczg2MjJfYnJpZGdlX2Z1bmNzOworCXBzODYyMi0+YnJpZGdlLmRldmlj ZSA9IGRldjsKIAlwczg2MjItPmJyaWRnZS5vZl9ub2RlID0gZGV2LT5vZl9ub2RlOwogCWRybV9i cmlkZ2VfYWRkKCZwczg2MjItPmJyaWRnZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2Uvc2lpOTAyeC5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MDJ4LmMKaW5k ZXggZGQ3YWE0NjZiMjgwLi5lZjc2OGIxNDliZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2Uvc2lpOTAyeC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lpOTAyeC5j CkBAIC05OTEsNiArOTkxLDcgQEAgc3RhdGljIGludCBzaWk5MDJ4X3Byb2JlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQsCiAJfQogCiAJc2lpOTAyeC0+YnJpZGdlLmZ1bmNzID0gJnNpaTkwMnhf YnJpZGdlX2Z1bmNzOworCXNpaTkwMngtPmJyaWRnZS5kZXZpY2UgPSBkZXY7CiAJc2lpOTAyeC0+ YnJpZGdlLm9mX25vZGUgPSBkZXYtPm9mX25vZGU7CiAJc2lpOTAyeC0+YnJpZGdlLnRpbWluZ3Mg PSAmZGVmYXVsdF9zaWk5MDJ4X3RpbWluZ3M7CiAJZHJtX2JyaWRnZV9hZGQoJnNpaTkwMngtPmJy aWRnZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpaTkyMzQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lpOTIzNC5jCmluZGV4IDI1ZDRhZDhjN2FkNi4uODI0ZmZh ZWZmMTZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpaTkyMzQuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpaTkyMzQuYwpAQCAtOTM2LDYgKzkzNiw3IEBAIHN0 YXRpYyBpbnQgc2lpOTIzNF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAogCWkyY19z ZXRfY2xpZW50ZGF0YShjbGllbnQsIGN0eCk7CiAKIAljdHgtPmJyaWRnZS5mdW5jcyA9ICZzaWk5 MjM0X2JyaWRnZV9mdW5jczsKKwljdHgtPmJyaWRnZS5kZXZpY2UgPSBkZXY7CiAJY3R4LT5icmlk Z2Uub2Zfbm9kZSA9IGRldi0+b2Zfbm9kZTsKIAlkcm1fYnJpZGdlX2FkZCgmY3R4LT5icmlkZ2Up OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpbC1zaWk4NjIwLmMgYi9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpbC1zaWk4NjIwLmMKaW5kZXggYmQzMTY1ZWU1MzU0Li41 YmM1NmM1ZjY4MjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lsLXNpaTg2 MjAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpbC1zaWk4NjIwLmMKQEAgLTIzMzMs NiArMjMzMyw3IEBAIHN0YXRpYyBpbnQgc2lpODYyMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50LAogCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGN0eCk7CiAKIAljdHgtPmJyaWRn ZS5mdW5jcyA9ICZzaWk4NjIwX2JyaWRnZV9mdW5jczsKKwljdHgtPmJyaWRnZS5kZXZpY2UgPSBk ZXY7CiAJY3R4LT5icmlkZ2Uub2Zfbm9kZSA9IGRldi0+b2Zfbm9kZTsKIAlkcm1fYnJpZGdlX2Fk ZCgmY3R4LT5icmlkZ2UpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3Rj MzU4NzY3LmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RjMzU4NzY3LmMKaW5kZXggMTNhZGUy OGEzNmE4Li5kNjJjNjkyNWM1ZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv dGMzNTg3NjcuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RjMzU4NzY3LmMKQEAgLTE1 MjYsNiArMTUyNiw3IEBAIHN0YXRpYyBpbnQgdGNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCwgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQogCQlyZXR1cm4gcmV0OwogCiAJ dGMtPmJyaWRnZS5mdW5jcyA9ICZ0Y19icmlkZ2VfZnVuY3M7CisJdGMtPmJyaWRnZS5kZXZpY2Ug PSBkZXY7CiAJdGMtPmJyaWRnZS5vZl9ub2RlID0gZGV2LT5vZl9ub2RlOwogCWRybV9icmlkZ2Vf YWRkKCZ0Yy0+YnJpZGdlKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90 aS10ZnA0MTAuYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGktdGZwNDEwLmMKaW5kZXggZGJm MzVjN2JjODVlLi4yZjk4OTlkN2Q0YjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2UvdGktdGZwNDEwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90aS10ZnA0MTAuYwpA QCAtMzI2LDYgKzMyNiw3IEBAIHN0YXRpYyBpbnQgdGZwNDEwX2luaXQoc3RydWN0IGRldmljZSAq ZGV2LCBib29sIGkyYykKIAlkZXZfc2V0X2RydmRhdGEoZGV2LCBkdmkpOwogCiAJZHZpLT5icmlk Z2UuZnVuY3MgPSAmdGZwNDEwX2JyaWRnZV9mdW5jczsKKwlkdmktPmJyaWRnZS5kZXZpY2UgPSBk ZXY7CiAJZHZpLT5icmlkZ2Uub2Zfbm9kZSA9IGRldi0+b2Zfbm9kZTsKIAlkdmktPmJyaWRnZS50 aW1pbmdzID0gJmR2aS0+dGltaW5nczsKIAlkdmktPmRldiA9IGRldjsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5j CmluZGV4IGNiYTUzN2M5OWU0My4uYjQ1NjFjZTYzYTQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2JyaWRnZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMKQEAg LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgogCiAjaW5jbHVkZSA8ZHJt L2RybV9icmlkZ2UuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgogI2luY2x1ZGUgPGRy bS9kcm1fZW5jb2Rlci5oPgogCiAjaW5jbHVkZSAiZHJtX2NydGNfaW50ZXJuYWwuaCIKQEAgLTQ2 Myw2ICs0NjQsMzIgQEAgdm9pZCBkcm1fYXRvbWljX2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSwKIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19icmlkZ2VfZW5hYmxlKTsK IAogI2lmZGVmIENPTkZJR19PRgorc3RhdGljIHN0cnVjdCBkcm1fYnJpZGdlICpkcm1fYnJpZGdl X2ZpbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkJICBzdHJ1Y3QgZGV2aWNlX25vZGUg Km5wLCBib29sIGxpbmspCit7CisJc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwgKmZvdW5kID0g TlVMTDsKKwlzdHJ1Y3QgZGV2aWNlX2xpbmsgKmRsOworCisJbXV0ZXhfbG9jaygmYnJpZGdlX2xv Y2spOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShicmlkZ2UsICZicmlkZ2VfbGlzdCwgbGlzdCkK KwkJaWYgKGJyaWRnZS0+b2Zfbm9kZSA9PSBucCkgeworCQkJZm91bmQgPSBicmlkZ2U7CisJCQli cmVhazsKKwkJfQorCisJaWYgKGZvdW5kICYmIGxpbmspIHsKKwkJZGwgPSBkZXZpY2VfbGlua19h ZGQoZGV2LT5kZXYsIGZvdW5kLT5kZXZpY2UsCisJCQkJICAgICBETF9GTEFHX0FVVE9QUk9CRV9D T05TVU1FUik7CisJCWlmICghZGwpCisJCQlmb3VuZCA9IE5VTEw7CisJfQorCisJbXV0ZXhfdW5s b2NrKCZicmlkZ2VfbG9jayk7CisKKwlyZXR1cm4gZm91bmQ7Cit9CisKIC8qKgogICogb2ZfZHJt X2ZpbmRfYnJpZGdlIC0gZmluZCB0aGUgYnJpZGdlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGRldmlj ZSBub2RlIGluCiAgKgkJCXRoZSBnbG9iYWwgYnJpZGdlIGxpc3QKQEAgLTQ3NCwyMSArNTAxLDE2 IEBAIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19icmlkZ2VfZW5hYmxlKTsKICAqLwogc3RydWN0 IGRybV9icmlkZ2UgKm9mX2RybV9maW5kX2JyaWRnZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQog ewotCXN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2U7Ci0KLQltdXRleF9sb2NrKCZicmlkZ2VfbG9j ayk7Ci0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJyaWRnZSwgJmJyaWRnZV9saXN0LCBsaXN0KSB7 Ci0JCWlmIChicmlkZ2UtPm9mX25vZGUgPT0gbnApIHsKLQkJCW11dGV4X3VubG9jaygmYnJpZGdl X2xvY2spOwotCQkJcmV0dXJuIGJyaWRnZTsKLQkJfQotCX0KLQotCW11dGV4X3VubG9jaygmYnJp ZGdlX2xvY2spOwotCXJldHVybiBOVUxMOworCXJldHVybiBkcm1fYnJpZGdlX2ZpbmQoTlVMTCwg bnAsIGZhbHNlKTsKIH0KIEVYUE9SVF9TWU1CT0wob2ZfZHJtX2ZpbmRfYnJpZGdlKTsKKworc3Ry dWN0IGRybV9icmlkZ2UgKm9mX2RybV9maW5kX2JyaWRnZV9kZXZsaW5rKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCisJCQkJCSAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCit7CisJcmV0dXJu IGRybV9icmlkZ2VfZmluZChkZXYsIG5wLCB0cnVlKTsKK30KK0VYUE9SVF9TWU1CT0wob2ZfZHJt X2ZpbmRfYnJpZGdlX2RldmxpbmspOwogI2VuZGlmCiAKIE1PRFVMRV9BVVRIT1IoIkFqYXkgS3Vt YXIgPGFqYXlrdW1hci5yc0BzYW1zdW5nLmNvbT4iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pMmMvdGRhOTk4eF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pMmMvdGRhOTk4eF9kcnYu YwppbmRleCBlNzk1MDdmYjIyNWYuLjVkNDEyMmJjZjdmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2kyYy90ZGE5OTh4X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pMmMvdGRhOTk4 eF9kcnYuYwpAQCAtMjIwMSw2ICsyMjAxLDcgQEAgc3RhdGljIGludCB0ZGE5OTh4X2NyZWF0ZShz dHJ1Y3QgZGV2aWNlICpkZXYpCiAJfQogCiAJcHJpdi0+YnJpZGdlLmZ1bmNzID0gJnRkYTk5OHhf YnJpZGdlX2Z1bmNzOworCXByaXYtPmJyaWRnZS5kZXZpY2UgPSBkZXY7CiAjaWZkZWYgQ09ORklH X09GCiAJcHJpdi0+YnJpZGdlLm9mX25vZGUgPSBkZXYtPm9mX25vZGU7CiAjZW5kaWYKZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaCBiL2luY2x1ZGUvZHJtL2RybV9icmlkZ2Uu aAppbmRleCA3NjE2ZjY1NjJmZTQuLmY4YTNhZjQyYTM4MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9k cm0vZHJtX2JyaWRnZS5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaApAQCAtMzgyLDYg KzM4Miw4IEBAIHN0cnVjdCBkcm1fYnJpZGdlIHsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXI7CiAJLyoqIEBuZXh0OiB0aGUgbmV4dCBicmlkZ2UgaW4gdGhlIGVuY29kZXIgY2hhaW4gKi8K IAlzdHJ1Y3QgZHJtX2JyaWRnZSAqbmV4dDsKKwkvKiogQGRldmljZTogTGludXggZHJpdmVyIG1v ZGVsIGRldmljZSAqLworCXN0cnVjdCBkZXZpY2UgKmRldmljZTsKICNpZmRlZiBDT05GSUdfT0YK IAkvKiogQG9mX25vZGU6IGRldmljZSBub2RlIHBvaW50ZXIgdG8gdGhlIGJyaWRnZSAqLwogCXN0 cnVjdCBkZXZpY2Vfbm9kZSAqb2Zfbm9kZTsKQEAgLTQwMyw2ICs0MDUsOCBAQCBzdHJ1Y3QgZHJt X2JyaWRnZSB7CiB2b2lkIGRybV9icmlkZ2VfYWRkKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Up Owogdm9pZCBkcm1fYnJpZGdlX3JlbW92ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKIHN0 cnVjdCBkcm1fYnJpZGdlICpvZl9kcm1fZmluZF9icmlkZ2Uoc3RydWN0IGRldmljZV9ub2RlICpu cCk7CitzdHJ1Y3QgZHJtX2JyaWRnZSAqb2ZfZHJtX2ZpbmRfYnJpZGdlX2Rldmxpbmsoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKKwkJCQkJICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucCk7CiBp bnQgZHJtX2JyaWRnZV9hdHRhY2goc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlLAogCQkgICAgICBzdHJ1Y3QgZHJtX2JyaWRnZSAqcHJldmlvdXMp OwogCi0tIAoyLjIwLjEKCgotLSAKUk1LJ3MgUGF0Y2ggc3lzdGVtOiBodHRwczovL3d3dy5hcm1s aW51eC5vcmcudWsvZGV2ZWxvcGVyL3BhdGNoZXMvCkZUVEMgYnJvYWRiYW5kIGZvciAwLjhtaWxl IGxpbmUgaW4gc3VidXJiaWE6IHN5bmMgYXQgMTIuMU1icHMgZG93biA2MjJrYnBzIHVwCkFjY29y ZGluZyB0byBzcGVlZHRlc3QubmV0OiAxMS45TWJwcyBkb3duIDUwMGticHMgdXAKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs 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=-8.1 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 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 3D850CA9EA0 for ; Tue, 22 Oct 2019 14:53:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id EF2FD21783 for ; Tue, 22 Oct 2019 14:53:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=armlinux.org.uk header.i=@armlinux.org.uk header.b="r6zvZjTR" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732083AbfJVOxl (ORCPT ); Tue, 22 Oct 2019 10:53:41 -0400 Received: from pandora.armlinux.org.uk ([78.32.30.218]:44558 "EHLO pandora.armlinux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726955AbfJVOxl (ORCPT ); Tue, 22 Oct 2019 10:53:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Sender:In-Reply-To:Content-Type: MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=5lyp11EpflVtsKl6EfIpqjOJ+yKJETl+1sVjz6fUMPA=; b=r6zvZjTRlMtVe+21zuRuAik6D 3BdY4LbbV0QBZBNQrcnolAvMd5fPEXScS165OzafP6+UNg8ukjCut2iq7EPZE1kyh4Ef9CDhoi12C D660N5hPjxXDqO8QHNCMR1ZKJmEz4VVAiypAofdfHi16lXbCN4+4ERLJPI7FAPRu4NLbuCyBnwAyL Uawx/FqHPqUHjOrTKC6oYIZt4veFdqz8eCmBWkbSF6I4ky87NJ/98y5Q3MoJ9ZAi807w/MK/xEw17 ZCmpi+qGKQ471DQzKwqTMkkJGU94tYiKxfK15V3m/FS4lglOpEyZtsNh6A/0TED2eP0nBDR3ldBVl sfzSCz9HQ==; Received: from shell.armlinux.org.uk ([2001:4d48:ad52:3201:5054:ff:fe00:4ec]:46028) by pandora.armlinux.org.uk with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1iMvXP-0007ry-Cr; Tue, 22 Oct 2019 15:53:31 +0100 Received: from linux by shell.armlinux.org.uk with local (Exim 4.92) (envelope-from ) id 1iMvXN-0004fF-1f; Tue, 22 Oct 2019 15:53:29 +0100 Date: Tue, 22 Oct 2019 15:53:29 +0100 From: Russell King - ARM Linux admin To: Daniel Vetter Cc: Brian Starkey , nd , David Airlie , Liviu Dudau , "linux-kernel@vger.kernel.org" , "james qian wang (Arm Technology China)" , "dri-devel@lists.freedesktop.org" , Mihail Atanassov , Sean Paul Subject: Re: [RFC,3/3] drm/komeda: Allow non-component drm_bridge only endpoints Message-ID: <20191022145328.GW25745@shell.armlinux.org.uk> References: <20191016162206.u2yo37rtqwou4oep@DESKTOP-E1NTVVP.localdomain> <20191017030752.GA3109@jamwan02-TSP300> <20191017082043.bpiuvfr3r4jngxtu@DESKTOP-E1NTVVP.localdomain> <20191017102055.GA8308@jamwan02-TSP300> <20191017104812.6qpuzoh5bx5i2y3m@DESKTOP-E1NTVVP.localdomain> <20191017114137.GC25745@shell.armlinux.org.uk> <20191022084210.GX11828@phenom.ffwll.local> <20191022084826.GP25745@shell.armlinux.org.uk> <20191022144207.GV25745@shell.armlinux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20191022144207.GV25745@shell.armlinux.org.uk> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Oct 22, 2019 at 03:42:07PM +0100, Russell King - ARM Linux admin wrote: > On Tue, Oct 22, 2019 at 10:50:42AM +0200, Daniel Vetter wrote: > > On Tue, Oct 22, 2019 at 10:48 AM Russell King - ARM Linux admin > > wrote: > > > I had a patches, which is why I raised the problem with the core: > > > > > > 6961edfee26d bridge hacks using device links > > > > > > but it never went further than an experiment at the time because of the > > > problems in the core. As it was a hack, it never got posted. Seems > > > that kernel tree (for the cubox) is still 5.2 based, so has a lot of > > > patches and might need updating to a more recent base before anything > > > can be tested. > > > > > > For reference, the panel patch: > > > > https://patchwork.kernel.org/patch/10364873/ > > > > And the huge discussion around bridges, that resulted in Rafael > > Wyzocki fixing all the core issues: > > > > https://www.spinics.net/lists/dri-devel/msg201927.html > > > > James, do you want to look into this for bridges? > > I can now confirm that it does work. Something like this - it's based off an older kernel, so may be missing some of the bridge drivers, but should be sufficient for people to test with. 8<==== From: Russell King Subject: [PATCH] drm/bridge: add support for device links to bridge Bridge devices have been a potential for kernel oops as their lifetime is independent of the DRM device that they are bound to. Hence, if a bridge device is unbound while the parent DRM device is using them, the parent happily continues to use the bridge device, calling the driver and accessing its objects that have been freed. This can cause kernel memory corruption and kernel oops. To control this, use device links to ensure that the parent DRM device is unbound when the bridge device is unbound, and when the bridge device is re-bound, automatically rebind the parent DRM device. Signed-off-by: Russell King --- drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 1 + drivers/gpu/drm/bridge/analogix-anx78xx.c | 1 + drivers/gpu/drm/bridge/dumb-vga-dac.c | 1 + drivers/gpu/drm/bridge/lvds-encoder.c | 1 + .../bridge/megachips-stdpxxxx-ge-b850v3-fw.c | 1 + drivers/gpu/drm/bridge/nxp-ptn3460.c | 1 + drivers/gpu/drm/bridge/panel.c | 1 + drivers/gpu/drm/bridge/parade-ps8622.c | 1 + drivers/gpu/drm/bridge/sii902x.c | 1 + drivers/gpu/drm/bridge/sii9234.c | 1 + drivers/gpu/drm/bridge/sil-sii8620.c | 1 + drivers/gpu/drm/bridge/tc358767.c | 1 + drivers/gpu/drm/bridge/ti-tfp410.c | 1 + drivers/gpu/drm/drm_bridge.c | 48 ++++++++++++++----- drivers/gpu/drm/i2c/tda998x_drv.c | 1 + include/drm/drm_bridge.h | 4 ++ 16 files changed, 53 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c index f6d2681f6927..6a5906da58ea 100644 --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c @@ -1217,6 +1217,7 @@ static int adv7511_probe(struct i2c_client *i2c, const struct i2c_device_id *id) goto err_unregister_cec; adv7511->bridge.funcs = &adv7511_bridge_funcs; + adv7511->bridge.device = dev; adv7511->bridge.of_node = dev->of_node; drm_bridge_add(&adv7511->bridge); diff --git a/drivers/gpu/drm/bridge/analogix-anx78xx.c b/drivers/gpu/drm/bridge/analogix-anx78xx.c index 3c7cc5af735c..77ff17c38037 100644 --- a/drivers/gpu/drm/bridge/analogix-anx78xx.c +++ b/drivers/gpu/drm/bridge/analogix-anx78xx.c @@ -1323,6 +1323,7 @@ static int anx78xx_i2c_probe(struct i2c_client *client, mutex_init(&anx78xx->lock); + anx78xx->bridge.device = &client->dev; #if IS_ENABLED(CONFIG_OF) anx78xx->bridge.of_node = client->dev.of_node; #endif diff --git a/drivers/gpu/drm/bridge/dumb-vga-dac.c b/drivers/gpu/drm/bridge/dumb-vga-dac.c index d32885b906ae..40169920560e 100644 --- a/drivers/gpu/drm/bridge/dumb-vga-dac.c +++ b/drivers/gpu/drm/bridge/dumb-vga-dac.c @@ -202,6 +202,7 @@ static int dumb_vga_probe(struct platform_device *pdev) } vga->bridge.funcs = &dumb_vga_bridge_funcs; + vga->bridge.device = &pdev->dev; vga->bridge.of_node = pdev->dev.of_node; vga->bridge.timings = of_device_get_match_data(&pdev->dev); diff --git a/drivers/gpu/drm/bridge/lvds-encoder.c b/drivers/gpu/drm/bridge/lvds-encoder.c index 2ab2c234f26c..5012be35a5fb 100644 --- a/drivers/gpu/drm/bridge/lvds-encoder.c +++ b/drivers/gpu/drm/bridge/lvds-encoder.c @@ -115,6 +115,7 @@ static int lvds_encoder_probe(struct platform_device *pdev) * to look up. */ lvds_encoder->bridge.of_node = dev->of_node; + lvds_encoder->bridge.device = dev; lvds_encoder->bridge.funcs = &funcs; drm_bridge_add(&lvds_encoder->bridge); diff --git a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c index 79311f8354bd..e211c57f6f56 100644 --- a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c +++ b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c @@ -304,6 +304,7 @@ static int stdp4028_ge_b850v3_fw_probe(struct i2c_client *stdp4028_i2c, /* drm bridge initialization */ ge_b850v3_lvds_ptr->bridge.funcs = &ge_b850v3_lvds_funcs; + ge_b850v3_lvds_ptr->bridge.device = dev; ge_b850v3_lvds_ptr->bridge.of_node = dev->of_node; drm_bridge_add(&ge_b850v3_lvds_ptr->bridge); diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c b/drivers/gpu/drm/bridge/nxp-ptn3460.c index 98bc650b8c95..00097e314575 100644 --- a/drivers/gpu/drm/bridge/nxp-ptn3460.c +++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c @@ -323,6 +323,7 @@ static int ptn3460_probe(struct i2c_client *client, } ptn_bridge->bridge.funcs = &ptn3460_bridge_funcs; + ptn_bridge->bridge.device = dev; ptn_bridge->bridge.of_node = dev->of_node; drm_bridge_add(&ptn_bridge->bridge); diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c index b12ae3a4c5f1..eab7126f0d61 100644 --- a/drivers/gpu/drm/bridge/panel.c +++ b/drivers/gpu/drm/bridge/panel.c @@ -168,6 +168,7 @@ struct drm_bridge *drm_panel_bridge_add(struct drm_panel *panel, panel_bridge->panel = panel; panel_bridge->bridge.funcs = &panel_bridge_bridge_funcs; + panel_bridge->bridge.device = panel->dev; #ifdef CONFIG_OF panel_bridge->bridge.of_node = panel->dev->of_node; #endif diff --git a/drivers/gpu/drm/bridge/parade-ps8622.c b/drivers/gpu/drm/bridge/parade-ps8622.c index 2d88146e4836..ff79df0ff183 100644 --- a/drivers/gpu/drm/bridge/parade-ps8622.c +++ b/drivers/gpu/drm/bridge/parade-ps8622.c @@ -589,6 +589,7 @@ static int ps8622_probe(struct i2c_client *client, } ps8622->bridge.funcs = &ps8622_bridge_funcs; + ps8622->bridge.device = dev; ps8622->bridge.of_node = dev->of_node; drm_bridge_add(&ps8622->bridge); diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c index dd7aa466b280..ef768b149bee 100644 --- a/drivers/gpu/drm/bridge/sii902x.c +++ b/drivers/gpu/drm/bridge/sii902x.c @@ -991,6 +991,7 @@ static int sii902x_probe(struct i2c_client *client, } sii902x->bridge.funcs = &sii902x_bridge_funcs; + sii902x->bridge.device = dev; sii902x->bridge.of_node = dev->of_node; sii902x->bridge.timings = &default_sii902x_timings; drm_bridge_add(&sii902x->bridge); diff --git a/drivers/gpu/drm/bridge/sii9234.c b/drivers/gpu/drm/bridge/sii9234.c index 25d4ad8c7ad6..824ffaeff16e 100644 --- a/drivers/gpu/drm/bridge/sii9234.c +++ b/drivers/gpu/drm/bridge/sii9234.c @@ -936,6 +936,7 @@ static int sii9234_probe(struct i2c_client *client, i2c_set_clientdata(client, ctx); ctx->bridge.funcs = &sii9234_bridge_funcs; + ctx->bridge.device = dev; ctx->bridge.of_node = dev->of_node; drm_bridge_add(&ctx->bridge); diff --git a/drivers/gpu/drm/bridge/sil-sii8620.c b/drivers/gpu/drm/bridge/sil-sii8620.c index bd3165ee5354..5bc56c5f6826 100644 --- a/drivers/gpu/drm/bridge/sil-sii8620.c +++ b/drivers/gpu/drm/bridge/sil-sii8620.c @@ -2333,6 +2333,7 @@ static int sii8620_probe(struct i2c_client *client, i2c_set_clientdata(client, ctx); ctx->bridge.funcs = &sii8620_bridge_funcs; + ctx->bridge.device = dev; ctx->bridge.of_node = dev->of_node; drm_bridge_add(&ctx->bridge); diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c index 13ade28a36a8..d62c6925c5fe 100644 --- a/drivers/gpu/drm/bridge/tc358767.c +++ b/drivers/gpu/drm/bridge/tc358767.c @@ -1526,6 +1526,7 @@ static int tc_probe(struct i2c_client *client, const struct i2c_device_id *id) return ret; tc->bridge.funcs = &tc_bridge_funcs; + tc->bridge.device = dev; tc->bridge.of_node = dev->of_node; drm_bridge_add(&tc->bridge); diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c index dbf35c7bc85e..2f9899d7d4b4 100644 --- a/drivers/gpu/drm/bridge/ti-tfp410.c +++ b/drivers/gpu/drm/bridge/ti-tfp410.c @@ -326,6 +326,7 @@ static int tfp410_init(struct device *dev, bool i2c) dev_set_drvdata(dev, dvi); dvi->bridge.funcs = &tfp410_bridge_funcs; + dvi->bridge.device = dev; dvi->bridge.of_node = dev->of_node; dvi->bridge.timings = &dvi->timings; dvi->dev = dev; diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index cba537c99e43..b4561ce63a49 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -26,6 +26,7 @@ #include #include +#include #include #include "drm_crtc_internal.h" @@ -463,6 +464,32 @@ void drm_atomic_bridge_enable(struct drm_bridge *bridge, EXPORT_SYMBOL(drm_atomic_bridge_enable); #ifdef CONFIG_OF +static struct drm_bridge *drm_bridge_find(struct drm_device *dev, + struct device_node *np, bool link) +{ + struct drm_bridge *bridge, *found = NULL; + struct device_link *dl; + + mutex_lock(&bridge_lock); + + list_for_each_entry(bridge, &bridge_list, list) + if (bridge->of_node == np) { + found = bridge; + break; + } + + if (found && link) { + dl = device_link_add(dev->dev, found->device, + DL_FLAG_AUTOPROBE_CONSUMER); + if (!dl) + found = NULL; + } + + mutex_unlock(&bridge_lock); + + return found; +} + /** * of_drm_find_bridge - find the bridge corresponding to the device node in * the global bridge list @@ -474,21 +501,16 @@ EXPORT_SYMBOL(drm_atomic_bridge_enable); */ struct drm_bridge *of_drm_find_bridge(struct device_node *np) { - struct drm_bridge *bridge; - - mutex_lock(&bridge_lock); - - list_for_each_entry(bridge, &bridge_list, list) { - if (bridge->of_node == np) { - mutex_unlock(&bridge_lock); - return bridge; - } - } - - mutex_unlock(&bridge_lock); - return NULL; + return drm_bridge_find(NULL, np, false); } EXPORT_SYMBOL(of_drm_find_bridge); + +struct drm_bridge *of_drm_find_bridge_devlink(struct drm_device *dev, + struct device_node *np) +{ + return drm_bridge_find(dev, np, true); +} +EXPORT_SYMBOL(of_drm_find_bridge_devlink); #endif MODULE_AUTHOR("Ajay Kumar "); diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c index e79507fb225f..5d4122bcf7ff 100644 --- a/drivers/gpu/drm/i2c/tda998x_drv.c +++ b/drivers/gpu/drm/i2c/tda998x_drv.c @@ -2201,6 +2201,7 @@ static int tda998x_create(struct device *dev) } priv->bridge.funcs = &tda998x_bridge_funcs; + priv->bridge.device = dev; #ifdef CONFIG_OF priv->bridge.of_node = dev->of_node; #endif diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index 7616f6562fe4..f8a3af42a382 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -382,6 +382,8 @@ struct drm_bridge { struct drm_encoder *encoder; /** @next: the next bridge in the encoder chain */ struct drm_bridge *next; + /** @device: Linux driver model device */ + struct device *device; #ifdef CONFIG_OF /** @of_node: device node pointer to the bridge */ struct device_node *of_node; @@ -403,6 +405,8 @@ struct drm_bridge { void drm_bridge_add(struct drm_bridge *bridge); void drm_bridge_remove(struct drm_bridge *bridge); struct drm_bridge *of_drm_find_bridge(struct device_node *np); +struct drm_bridge *of_drm_find_bridge_devlink(struct drm_device *dev, + struct device_node *np); int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge, struct drm_bridge *previous); -- 2.20.1 -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up According to speedtest.net: 11.9Mbps down 500kbps up