From mboxrd@z Thu Jan 1 00:00:00 1970 From: Krzysztof Kozlowski Subject: Re: [PATCH v4 03/16] drm: bridge: analogix/dp: split exynos dp driver to bridge dir Date: Mon, 07 Sep 2015 09:22:35 +0900 Message-ID: <55ECD8CB.7060408@samsung.com> References: <1441086371-24838-1-git-send-email-ykk@rock-chips.com> <1441086598-24995-1-git-send-email-ykk@rock-chips.com> <55E79B41.6010301@samsung.com> <55E7DAE1.6070308@rock-chips.com> <55E8E8BE.8010300@samsung.com> <55EBF024.3070304@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <55EBF024.3070304-TNX95d0MmH7DzftRWevZcw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Yakir Yang , Heiko Stuebner , Thierry Reding , Jingoo Han , Inki Dae , joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org, Kukjin Kim , Mark Yao Cc: David Airlie , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Andrzej Hajda , Gustavo Padovan , architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, seanpaul-F7+t8E8rja9Wk0Htik3J/w@public.gmane.org, djkurtz-F7+t8E8rja9Wk0Htik3J/w@public.gmane.org, Kishon Vijay Abraham I , linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Russell King , devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Pawel Moll , Ian Campbell , Rob Herring , dianders-F7+t8E8rja9Wk0Htik3J/w@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Kyungmin Park , Kumar Gala , ajaynumb-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Andy Yan List-Id: linux-rockchip.vger.kernel.org T24gMDYuMDkuMjAxNSAxNjo0OSwgWWFraXIgWWFuZyB3cm90ZToKPiBIaSBLcnp5c3p0b2YsCj4g Cj4g5ZyoIDA5LzA0LzIwMTUgMDg6NDEgQU0sIEtyenlzenRvZiBLb3psb3dza2kg5YaZ6YGTOgo+ PiBPbiAwMy4wOS4yMDE1IDE0OjMwLCBZYWtpciBZYW5nIHdyb3RlOgo+Pj4gSGkgS3J6eXN6dG9m LAo+Pj4KPj4+IOWcqCAwOS8wMy8yMDE1IDA4OjU4IEFNLCBLcnp5c3p0b2YgS296bG93c2tpIOWG memBkzoKPj4+PiBPbiAwMS4wOS4yMDE1IDE0OjQ5LCBZYWtpciBZYW5nIHdyb3RlOgo+Pj4+PiBT cGxpdCB0aGUgZHAgY29yZSBkcml2ZXIgZnJvbSBleHlub3MgZGlyZWN0b3J5IHRvIGJyaWRnZQo+ Pj4+PiBkaXJlY3RvcnksIGFuZCByZW5hbWUgdGhlIGNvcmUgZHJpdmVyIHRvIGFuYWxvZ2l4X2Rw XyosCj4+Pj4+IGxlYXZlIHRoZSBwbGF0Zm9ybSBjb2RlIHRvIGFuYWxvZ2l4X2RwLWV4eW5vcy4K Pj4+Pj4KPj4+Pj4gU2lnbmVkLW9mZi1ieTogWWFraXIgWWFuZyA8eWtrQHJvY2stY2hpcHMuY29t Pgo+Pj4+PiAtLS0KPj4+Pj4gQ2hhbmdlcyBpbiB2NDoKPj4+Pj4gLSBUYWtlIFJvYiBzdWdnZXN0 LCB1cGRhdGUgImFuYWxvZ2l4LGhwZC1ncGlvcyIgdG8gImhwZC1ncGlvcyIgRFQKPj4+Pj4gcHJv cGVyeS4KPj4+Pj4gLSBUYWtlIEppbmdvbyBzdWdnZXN0LCByZW5hbWUgImFuYWxvZ2l4X2RwLWV4 eW5vcy5jIiBmaWxlIG5hbWUgdG8KPj4+Pj4gImV4eW5vc19kcC5jIgo+Pj4+PiAtIFRha2UgQXJj aGl0IHN1Z2dlc3QsIGNyZWF0ZSBhIHNlcGFyYXRlIGZvbGRlciBmb3IgYW5hbG9naXggY29kZSBp bgo+Pj4+PiBicmlkZ2UvCj4+Pj4+Cj4+Pj4+IENoYW5nZXMgaW4gdjM6Cj4+Pj4+IC0gVGFrZSBU aGllcnJ5IFJlZGluZyBzdWdnZXN0LCBtb3ZlIGV4eW5vcydzIHZpZGVvX3RpbWluZyBjb2RlCj4+ Pj4+ICAgICB0byBhbmFsb2dpeF9kcC1leHlub3MgcGxhdGZvcm0gZHJpdmVyLCBhZGQgZ2V0X21v ZGVzIG1ldGhvZAo+Pj4+PiAgICAgdG8gc3RydWN0IGFuYWxvZ2l4X2RwX3BsYXRfZGF0YS4KPj4+ Pj4gLSBUYWtlIEhlaWtvIHN1Z2dlc3QsIHJlbmFtZSBzb21lICJzYW1zdW5nKiIgZHRzIHByb3Bl cnkgdG8KPj4+Pj4gImFuYWxvZ2l4KiIuCj4+Pj4+Cj4+Pj4+IENoYW5nZXMgaW4gdjI6Cj4+Pj4+ IC0gVGFrZSBKaW5nb28gSGFuIHN1Z2dlc3QsIHJlbW92ZSBuZXcgY29weXJpZ2h0Cj4+Pj4+IC0g Rml4IGNvbXBpbGVkIGZhaWxlZCBkdXQgdG8gYW5hbG9naXhfZHBfZGV2aWNlIG1pc3NwZWxsCj4g Cj4gWy4uLi4uXQo+IAo+Pj4+PiAtc3RhdGljIGludCBleHlub3NfZHBfYnJpZGdlX2F0dGFjaChz dHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+Pj4+PiArc3RhdGljIGludCBhbmFsb2dpeF9kcF9i cmlkZ2VfYXR0YWNoKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4+Pj4+ICAgIHsKPj4+Pj4g LSAgICBzdHJ1Y3QgZXh5bm9zX2RwX2RldmljZSAqZHAgPSBicmlkZ2UtPmRyaXZlcl9wcml2YXRl Owo+Pj4+PiAtICAgIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZkcC0+ZW5jb2RlcjsK Pj4+Pj4gKyAgICBzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCA9IGJyaWRnZS0+ZHJpdmVy X3ByaXZhdGU7Cj4+Pj4+ICsgICAgc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gZHAtPmVu Y29kZXI7Cj4+Pj4+ICAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmRw LT5jb25uZWN0b3I7Cj4+Pj4+ICAgICAgICBpbnQgcmV0Owo+Pj4+PiAgICAtICAgIC8qIFByZS1l bXB0IERQIGNvbm5lY3RvciBjcmVhdGlvbiBpZiB0aGVyZSdzIGEgYnJpZGdlICovCj4+Pj4+IC0g ICAgaWYgKGRwLT5wdG5fYnJpZGdlKSB7Cj4+Pj4+IC0gICAgICAgIHJldCA9IGV4eW5vc19kcm1f YXR0YWNoX2xjZF9icmlkZ2UoZHAsIGVuY29kZXIpOwo+Pj4+PiAtICAgICAgICBpZiAoIXJldCkK Pj4+Pj4gLSAgICAgICAgICAgIHJldHVybiAwOwo+Pj4+PiArICAgIGlmICghYnJpZGdlLT5lbmNv ZGVyKSB7Cj4+Pj4+ICsgICAgICAgIERSTV9FUlJPUigiUGFyZW50IGVuY29kZXIgb2JqZWN0IG5v dCBmb3VuZCIpOwo+Pj4+PiArICAgICAgICByZXR1cm4gLUVOT0RFVjsKPj4+Pj4gICAgICAgIH0K Pj4+Pj4gICAgKyAgICBlbmNvZGVyLT5icmlkZ2UgPSBicmlkZ2U7Cj4+Pj4+ICsKPj4+Pj4gICAg ICAgIGNvbm5lY3Rvci0+cG9sbGVkID0gRFJNX0NPTk5FQ1RPUl9QT0xMX0hQRDsKPj4+Pj4gICAg ICAgICAgcmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGRwLT5kcm1fZGV2LCBjb25uZWN0b3IsCj4+ Pj4+IC0gICAgICAgICAgICAgICAgICZleHlub3NfZHBfY29ubmVjdG9yX2Z1bmNzLAo+Pj4+PiAr ICAgICAgICAgICAgICAgICAmYW5hbG9naXhfZHBfY29ubmVjdG9yX2Z1bmNzLAo+Pj4+PiAgICAg ICAgICAgICAgICAgICAgIERSTV9NT0RFX0NPTk5FQ1RPUl9lRFApOwo+Pj4+PiAgICAgICAgaWYg KHJldCkgewo+Pj4+PiAgICAgICAgICAgIERSTV9FUlJPUigiRmFpbGVkIHRvIGluaXRpYWxpemUg Y29ubmVjdG9yIHdpdGggZHJtXG4iKTsKPj4+Pj4gICAgICAgICAgICByZXR1cm4gcmV0Owo+Pj4+ PiAgICAgICAgfQo+Pj4+PiAgICAtICAgIGRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0 b3IsCj4+Pj4+ICZleHlub3NfZHBfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7Cj4+Pj4+ICsgICAg ZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm5lY3RvciwKPj4+Pj4gKyAgICAgICAgICAgICAg ICAgJmFuYWxvZ2l4X2RwX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOwo+Pj4+PiAgICAgICAgZHJt X2Nvbm5lY3Rvcl9yZWdpc3Rlcihjb25uZWN0b3IpOwo+Pj4+PiAgICAgICAgZHJtX21vZGVfY29u bmVjdG9yX2F0dGFjaF9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcik7Cj4+Pj4+ICAgIC0gICAg aWYgKGRwLT5wYW5lbCkKPj4+Pj4gLSAgICAgICAgcmV0ID0gZHJtX3BhbmVsX2F0dGFjaChkcC0+ cGFuZWwsICZkcC0+Y29ubmVjdG9yKTsKPj4+Pj4gKyAgICBpZiAoZHAtPnBsYXRfZGF0YSAmJiBk cC0+cGxhdF9kYXRhLT5wYW5lbCkgewo+Pj4+PiArICAgICAgICByZXQgPSBkcm1fcGFuZWxfYXR0 YWNoKGRwLT5wbGF0X2RhdGEtPnBhbmVsLCAmZHAtPmNvbm5lY3Rvcik7Cj4+Pj4+ICsgICAgICAg IGlmIChyZXQpIHsKPj4+Pj4gKyAgICAgICAgICAgIERSTV9FUlJPUigiRmFpbGVkIHRvIGF0dGFj aCBwYW5lbFxuIik7Cj4+Pj4+ICsgICAgICAgICAgICByZXR1cm4gcmV0Owo+Pj4+PiArICAgICAg ICB9Cj4+Pj4+ICsgICAgfQo+Pj4+PiArCj4+Pj4+ICsgICAgLyoKPj4+Pj4gKyAgICAgKiBUaGlz IHNob3VsZCBiZSB0aGUgZW5kIG9mIGF0dGFjaCBmdW5jdGlvbiwgY2F1c2VkCj4+Pj4+ICsgICAg ICogd2Ugc2hvdWxkIGVuc3VyZSBkcCBicmlkZ2UgY291bGQgYXR0YWNoIGZpcnN0Lgo+Pj4+PiAr ICAgICAqLwo+Pj4+PiArICAgICBpZiAoZHAtPnBsYXRfZGF0YSAmJiBkcC0+cGxhdF9kYXRhLT5h dHRhY2gpIHsKPj4+Pj4gKyAgICAgICAgIHJldCA9IGRwLT5wbGF0X2RhdGEtPmF0dGFjaChkcC0+ cGxhdF9kYXRhLCBicmlkZ2UpOwo+Pj4+PiArICAgICAgICAgaWYgKHJldCkgewo+Pj4+PiArICAg ICAgICAgICAgIERSTV9FUlJPUigiRmFpbGVkIGF0IHBsYXRmb3JtIGF0dGNoIGZ1bmNcbiIpOwo+ Pj4+IFR3byBuZXcgZXJyb3IgcGF0aHMgYXBwZWFyZWQgaGVyZSBhbmQgYWJvdmUuIERvbid0IHlv dSBoYXZlIHRvCj4+Pj4gY2xlYW51cCBzb21ldGhpbmc/IEkgZG9uJ3Qga25vdywganVzdCB3b25k ZXJpbmcuLi4KPj4+IEhtbS4uLiBJIHRoaW5rIGJvdGggcGFuZWwgJiBwbGF0Zm9ybV9hdHRjaCBu ZWVkIEVSUk9SIHJlbWluZCB3aGVuCj4+PiBpdCBmYWlsZWQuIEJ1dCBpZiBpdCBzdGlsbCBuZWVk IGNsZWFuLCBJIHRob3VnaCBpdCBzaG91bGQgY2xlYW4gdGhlCj4+PiBwbGF0Zm9ybSBhdHRjaAo+ Pj4gZXJyb3IsCj4+PiB0aGlzIGlzIG5vdCByZWxhdGUgdG8gRFJNIGRpcmVjdGx5LCBqdXN0IGFu YWxvZ2l4IGRyaXZlciBsb2dpYywgc28KPj4+IGNvZGUgd291bGQgbGlrZSwKPj4+Cj4+PiAtICAg IGlmIChkcC0+cGFuZWwpCj4+PiAtICAgICAgICByZXQgPSBkcm1fcGFuZWxfYXR0YWNoKGRwLT5w YW5lbCwgJmRwLT5jb25uZWN0b3IpOwo+Pj4gKyAgICBpZiAoZHAtPnBsYXRfZGF0YSAmJiBkcC0+ cGxhdF9kYXRhLT5wYW5lbCkgewo+Pj4gKyAgICAgICAgcmV0ID0gZHJtX3BhbmVsX2F0dGFjaChk cC0+cGxhdF9kYXRhLT5wYW5lbCwgJmRwLT5jb25uZWN0b3IpOwo+Pj4gKyAgICAgICAgaWYgKHJl dCkgewo+Pj4gKyAgICAgICAgICAgIERSTV9FUlJPUigiRmFpbGVkIHRvIGF0dGFjaCBwYW5lbFxu Iik7Cj4+PiArICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4+ICsgICAgICAgIH0KPj4+ICsgICAg fQo+Pj4KPj4+ICsgICAgLyoKPj4+ICsgICAgICogVGhpcyBzaG91bGQgYmUgdGhlIGVuZCBvZiBh dHRhY2ggZnVuY3Rpb24sIGNhdXNlZAo+Pj4gKyAgICAgKiB3ZSBzaG91bGQgZW5zdXJlIGRwIGJy aWRnZSBjb3VsZCBhdHRhY2ggZmlyc3QuCj4+PiArICAgICAqLwo+Pj4gKyAgICAgaWYgKGRwLT5w bGF0X2RhdGEgJiYgZHAtPnBsYXRfZGF0YS0+YXR0YWNoKSB7Cj4+PiArICAgICAgICAgcmV0ID0g ZHAtPnBsYXRfZGF0YS0+YXR0YWNoKGRwLT5wbGF0X2RhdGEsIGJyaWRnZSk7Cj4+Pgo+Pj4gICAg ICAgICAgICByZXR1cm4gcmV0Owo+PiBJIGFtIGxvc3QuLi4gdGhlIGNvZGUgbG9va3MgdGhlIHNh bWUuIFdoYXQgZGlkIHlvdSBjaGFuZ2U/Cj4gCj4gSSBqdXN0IHJlbW92ZSB0aGUgRFJNX0VSUk9S IGFmdGVyIGRwLT5wbGF0X2RhdGEtPmF0dGFjaCgpLAo+IG1heWJlIEkgc2hvdWxkIHBhc3RlIHRo ZSBjaGFuZ2UgdGhhdCByZWJhc2Ugb24gdGhpcyBwYXRjaCwKPiBoZXJlIGFyZSB0aGV5LAo+IAo+ ICAgICAvKgo+ICAgICAgKiBUaGlzIHNob3VsZCBiZSB0aGUgZW5kIG9mIGF0dGFjaCBmdW5jdGlv biwgY2F1c2VkCj4gICAgICAqIHdlIHNob3VsZCBlbnN1cmUgZHAgYnJpZGdlIGNvdWxkIGF0dGFj aCBmaXJzdC4KPiAgICAgICovCj4gLSAgICAgaWYgKGRwLT5wbGF0X2RhdGEgJiYgZHAtPnBsYXRf ZGF0YS0+YXR0YWNoKSB7Cj4gKyAgICAgaWYgKGRwLT5wbGF0X2RhdGEgJiYgZHAtPnBsYXRfZGF0 YS0+YXR0YWNoKQo+ICAgICAgICAgICAgcmV0ID0gZHAtPnBsYXRfZGF0YS0+YXR0YWNoKGRwLT5w bGF0X2RhdGEsIGJyaWRnZSk7Cj4gLSAgICAgICAgICBpZiAocmV0KSB7Cj4gLSAgICAgICAgICAg ICAgRFJNX0VSUk9SKCJGYWlsZWQgYXQgcGxhdGZvcm0gYXR0Y2ggZnVuY1xuIik7Cj4gLSAgICAg ICAgICAgICAgcmV0dXJuIHJldDsKPiAtICAgICAgICAgIH0KPiAtICAgICAgfQo+IAo+IC0gICAg cmV0dXJuIDA7Cj4gKyAgIHJldHVybiByZXQ7Cj4gCj4gCj4gSWYgdGhpcyBoYXZlbid0IG1lZXQg eW91ciBjb21tZW50LCBJIG1heWJlIHN0YXJ0IHRvIHRoaW5rIHRoYXQKPiB5b3VyIGNvbW1lbnQg ICJUd28gbmV3IGVycm9yIHBhdGhzIGFwcGVhcmVkIGhlcmUgYW5kIGFib3ZlIgo+IGluZGljYXRl ZCB0aGF0IHRob3NlIHR3byBmdW5jdGlvbiBpcyB0aGUgc2FtZS4KPiAgICAgImRwLT5wbGF0X2Rh dGEtPmF0dGFjaChkcC0+cGxhdF9kYXRhLCBicmlkZ2UpOyAiCj4gICAgICJkcm1fcGFuZWxfYXR0 YWNoKGRwLT5wbGF0X2RhdGEtPnBhbmVsLCAmZHAtPmNvbm5lY3Rvcik7ICIKCkkgd2Fzbid0IHRh bGtpbmcgYWJvdXQgZXJyb3IgbWVzc2FnZSBidXQgcmF0aGVyIGFib3V0IHBvc3NpYmxlIG5lZWQg b2YKY2xlYW4gdXAgaW4gZXJyb3IgcGF0aC4gUHJldmlvdXNseSB0aGVyZSB3YXMgb25seSBkcm1f cGFuZWxfYXR0YWNoKCkuCk5vdyB5b3UgaGF2ZSB0d28gb2YgdGhlbSAoZHJtX3BhbmVsX2F0dGFj aCgpIGFuZApkcC0+cGxhdF9kYXRhLT5hdHRhY2goKSkuIElmIHRoZSBzZWNvbmQgZmFpbHMgZG9u J3QgeW91IGhhdmUgdG8gY2xlYW4gdXAKYmVmb3JlIGV4aXQ/IEkgZG9uJ3Qga25vdywganVzdCBh c2tpbmcuCgpCZXN0IHJlZ2FyZHMsCktyenlzenRvZgoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LXJvY2tjaGlwIG1haWxpbmcgbGlzdApMaW51 eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtcm9ja2NoaXAK From mboxrd@z Thu Jan 1 00:00:00 1970 From: k.kozlowski@samsung.com (Krzysztof Kozlowski) Date: Mon, 07 Sep 2015 09:22:35 +0900 Subject: [PATCH v4 03/16] drm: bridge: analogix/dp: split exynos dp driver to bridge dir In-Reply-To: <55EBF024.3070304@rock-chips.com> References: <1441086371-24838-1-git-send-email-ykk@rock-chips.com> <1441086598-24995-1-git-send-email-ykk@rock-chips.com> <55E79B41.6010301@samsung.com> <55E7DAE1.6070308@rock-chips.com> <55E8E8BE.8010300@samsung.com> <55EBF024.3070304@rock-chips.com> Message-ID: <55ECD8CB.7060408@samsung.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 06.09.2015 16:49, Yakir Yang wrote: > Hi Krzysztof, > > ? 09/04/2015 08:41 AM, Krzysztof Kozlowski ??: >> On 03.09.2015 14:30, Yakir Yang wrote: >>> Hi Krzysztof, >>> >>> ? 09/03/2015 08:58 AM, Krzysztof Kozlowski ??: >>>> On 01.09.2015 14:49, Yakir Yang wrote: >>>>> Split the dp core driver from exynos directory to bridge >>>>> directory, and rename the core driver to analogix_dp_*, >>>>> leave the platform code to analogix_dp-exynos. >>>>> >>>>> Signed-off-by: Yakir Yang >>>>> --- >>>>> Changes in v4: >>>>> - Take Rob suggest, update "analogix,hpd-gpios" to "hpd-gpios" DT >>>>> propery. >>>>> - Take Jingoo suggest, rename "analogix_dp-exynos.c" file name to >>>>> "exynos_dp.c" >>>>> - Take Archit suggest, create a separate folder for analogix code in >>>>> bridge/ >>>>> >>>>> Changes in v3: >>>>> - Take Thierry Reding suggest, move exynos's video_timing code >>>>> to analogix_dp-exynos platform driver, add get_modes method >>>>> to struct analogix_dp_plat_data. >>>>> - Take Heiko suggest, rename some "samsung*" dts propery to >>>>> "analogix*". >>>>> >>>>> Changes in v2: >>>>> - Take Jingoo Han suggest, remove new copyright >>>>> - Fix compiled failed dut to analogix_dp_device misspell > > [.....] > >>>>> -static int exynos_dp_bridge_attach(struct drm_bridge *bridge) >>>>> +static int analogix_dp_bridge_attach(struct drm_bridge *bridge) >>>>> { >>>>> - struct exynos_dp_device *dp = bridge->driver_private; >>>>> - struct drm_encoder *encoder = &dp->encoder; >>>>> + struct analogix_dp_device *dp = bridge->driver_private; >>>>> + struct drm_encoder *encoder = dp->encoder; >>>>> struct drm_connector *connector = &dp->connector; >>>>> int ret; >>>>> - /* Pre-empt DP connector creation if there's a bridge */ >>>>> - if (dp->ptn_bridge) { >>>>> - ret = exynos_drm_attach_lcd_bridge(dp, encoder); >>>>> - if (!ret) >>>>> - return 0; >>>>> + if (!bridge->encoder) { >>>>> + DRM_ERROR("Parent encoder object not found"); >>>>> + return -ENODEV; >>>>> } >>>>> + encoder->bridge = bridge; >>>>> + >>>>> connector->polled = DRM_CONNECTOR_POLL_HPD; >>>>> ret = drm_connector_init(dp->drm_dev, connector, >>>>> - &exynos_dp_connector_funcs, >>>>> + &analogix_dp_connector_funcs, >>>>> DRM_MODE_CONNECTOR_eDP); >>>>> if (ret) { >>>>> DRM_ERROR("Failed to initialize connector with drm\n"); >>>>> return ret; >>>>> } >>>>> - drm_connector_helper_add(connector, >>>>> &exynos_dp_connector_helper_funcs); >>>>> + drm_connector_helper_add(connector, >>>>> + &analogix_dp_connector_helper_funcs); >>>>> drm_connector_register(connector); >>>>> drm_mode_connector_attach_encoder(connector, encoder); >>>>> - if (dp->panel) >>>>> - ret = drm_panel_attach(dp->panel, &dp->connector); >>>>> + if (dp->plat_data && dp->plat_data->panel) { >>>>> + ret = drm_panel_attach(dp->plat_data->panel, &dp->connector); >>>>> + if (ret) { >>>>> + DRM_ERROR("Failed to attach panel\n"); >>>>> + return ret; >>>>> + } >>>>> + } >>>>> + >>>>> + /* >>>>> + * This should be the end of attach function, caused >>>>> + * we should ensure dp bridge could attach first. >>>>> + */ >>>>> + if (dp->plat_data && dp->plat_data->attach) { >>>>> + ret = dp->plat_data->attach(dp->plat_data, bridge); >>>>> + if (ret) { >>>>> + DRM_ERROR("Failed at platform attch func\n"); >>>> Two new error paths appeared here and above. Don't you have to >>>> cleanup something? I don't know, just wondering... >>> Hmm... I think both panel & platform_attch need ERROR remind when >>> it failed. But if it still need clean, I though it should clean the >>> platform attch >>> error, >>> this is not relate to DRM directly, just analogix driver logic, so >>> code would like, >>> >>> - if (dp->panel) >>> - ret = drm_panel_attach(dp->panel, &dp->connector); >>> + if (dp->plat_data && dp->plat_data->panel) { >>> + ret = drm_panel_attach(dp->plat_data->panel, &dp->connector); >>> + if (ret) { >>> + DRM_ERROR("Failed to attach panel\n"); >>> + return ret; >>> + } >>> + } >>> >>> + /* >>> + * This should be the end of attach function, caused >>> + * we should ensure dp bridge could attach first. >>> + */ >>> + if (dp->plat_data && dp->plat_data->attach) { >>> + ret = dp->plat_data->attach(dp->plat_data, bridge); >>> >>> return ret; >> I am lost... the code looks the same. What did you change? > > I just remove the DRM_ERROR after dp->plat_data->attach(), > maybe I should paste the change that rebase on this patch, > here are they, > > /* > * This should be the end of attach function, caused > * we should ensure dp bridge could attach first. > */ > - if (dp->plat_data && dp->plat_data->attach) { > + if (dp->plat_data && dp->plat_data->attach) > ret = dp->plat_data->attach(dp->plat_data, bridge); > - if (ret) { > - DRM_ERROR("Failed at platform attch func\n"); > - return ret; > - } > - } > > - return 0; > + return ret; > > > If this haven't meet your comment, I maybe start to think that > your comment "Two new error paths appeared here and above" > indicated that those two function is the same. > "dp->plat_data->attach(dp->plat_data, bridge); " > "drm_panel_attach(dp->plat_data->panel, &dp->connector); " I wasn't talking about error message but rather about possible need of clean up in error path. Previously there was only drm_panel_attach(). Now you have two of them (drm_panel_attach() and dp->plat_data->attach()). If the second fails don't you have to clean up before exit? I don't know, just asking. Best regards, Krzysztof From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753267AbbIGAXH (ORCPT ); Sun, 6 Sep 2015 20:23:07 -0400 Received: from mailout4.w1.samsung.com ([210.118.77.14]:49742 "EHLO mailout4.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752922AbbIGAXA (ORCPT ); Sun, 6 Sep 2015 20:23:00 -0400 MIME-version: 1.0 Content-type: text/plain; charset=utf-8 X-AuditID: cbfec7f4-f79c56d0000012ee-88-55ecd8e016a7 Content-transfer-encoding: 8BIT Subject: Re: [PATCH v4 03/16] drm: bridge: analogix/dp: split exynos dp driver to bridge dir To: Yakir Yang , Heiko Stuebner , Thierry Reding , Jingoo Han , Inki Dae , joe@perches.com, Kukjin Kim , Mark Yao References: <1441086371-24838-1-git-send-email-ykk@rock-chips.com> <1441086598-24995-1-git-send-email-ykk@rock-chips.com> <55E79B41.6010301@samsung.com> <55E7DAE1.6070308@rock-chips.com> <55E8E8BE.8010300@samsung.com> <55EBF024.3070304@rock-chips.com> Cc: Russell King , djkurtz@chromium.com, dianders@chromium.com, seanpaul@chromium.com, ajaynumb@gmail.com, Andrzej Hajda , Kyungmin Park , David Airlie , Gustavo Padovan , Andy Yan , Kumar Gala , Ian Campbell , Rob Herring , Pawel Moll , Kishon Vijay Abraham I , architt@codeaurora.org, robherring2@gmail.com, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org From: Krzysztof Kozlowski Message-id: <55ECD8CB.7060408@samsung.com> Date: Mon, 07 Sep 2015 09:22:35 +0900 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 In-reply-to: <55EBF024.3070304@rock-chips.com> X-Brightmail-Tracker: H4sIAAAAAAAAA02SbUhTURjHOfd9w9VtOTtUUKwsMjIlg0OERUTe+lARChVR3fQypU1tc7Ik yEzBZmtSRm0607S0uZpNo7LSHKK9sGWttBKdaC+aM6XWNMRe5or69nvO/8dz/h8eBpcWkfOZ tPQsQZ3OK+WUmHj6o8Ozqv+1LylmrHQ5envDTSKD+zGG6n2VODI+ewNQXuEoiS61/Q5ah/Ip VDhhxNDLb2MUMvoqSfSlroBGPwdGSOT+dA2gs95iAtX6TTQq9Q4SaGQoFhkHR3DU+f40hVx5 Pho5BrtI5Gkqo9CX/p84uvisGUN3Sh5iqPjCdQI1jA9TqOBBG40mAgEKPa/y0qhnahZy556j Ny7mbOU2wOWfPE1xH5tGMM5zxoBx0x+7Ce6uuZfmrtX4Kc5hPUVxtwP9JOct6sC4hurjnOHk Z4rzW7twbtrcQnBnGq2Au91Vju+U7hWvTxGUadmCenX8QXHqu1ZdZlmMzn/TQ+eCy0v1QMRA Ng7mOgvoEEfAzj47pQdiRspeAdDkGKaCgYSdAyfP9RF6wDA4uwi2vTgcwuWwpEQV0v0AFtmL Z/bMZfdDr70ZBDmcLcTgve6EkHQCg3X6chAccNZEwe913TMWxa6BDTXVfz6LguP3B/AgE2wk nKqvJIIsY3fDJ67RGUfERkOn9yZZDFjzf/3M//qZ//WrALgVyARtcqbmkEIVG63hVRptuiI6 OUPlAKET8d8BVe3rnIBlgDxMEmPwJUlJPltzVOUEkMHl4ZK4xt9PkhT+aI6gzjig1ioFjRMs YAj5PImlaSxRyir4LOGwIGQK6r8pxojm5wIq+0DlslU9yuTpRIPv65L6U1+nZx970J+QZrNd 3TKlNfMWmb15KDLOoHDte5SwfV/ZESyrXfkqpZf9PLqr1vKqVdRZcWtZ/IoUf/dbt6d6rWUR vyfD1rl54EOgQpedNLghesdC7daWwjU5RxQR44QpLGKTS7Z+m2myffi8zr7SICc0qXxsFK7W 8L8AP7OChx4DAAA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06.09.2015 16:49, Yakir Yang wrote: > Hi Krzysztof, > > 在 09/04/2015 08:41 AM, Krzysztof Kozlowski 写道: >> On 03.09.2015 14:30, Yakir Yang wrote: >>> Hi Krzysztof, >>> >>> 在 09/03/2015 08:58 AM, Krzysztof Kozlowski 写道: >>>> On 01.09.2015 14:49, Yakir Yang wrote: >>>>> Split the dp core driver from exynos directory to bridge >>>>> directory, and rename the core driver to analogix_dp_*, >>>>> leave the platform code to analogix_dp-exynos. >>>>> >>>>> Signed-off-by: Yakir Yang >>>>> --- >>>>> Changes in v4: >>>>> - Take Rob suggest, update "analogix,hpd-gpios" to "hpd-gpios" DT >>>>> propery. >>>>> - Take Jingoo suggest, rename "analogix_dp-exynos.c" file name to >>>>> "exynos_dp.c" >>>>> - Take Archit suggest, create a separate folder for analogix code in >>>>> bridge/ >>>>> >>>>> Changes in v3: >>>>> - Take Thierry Reding suggest, move exynos's video_timing code >>>>> to analogix_dp-exynos platform driver, add get_modes method >>>>> to struct analogix_dp_plat_data. >>>>> - Take Heiko suggest, rename some "samsung*" dts propery to >>>>> "analogix*". >>>>> >>>>> Changes in v2: >>>>> - Take Jingoo Han suggest, remove new copyright >>>>> - Fix compiled failed dut to analogix_dp_device misspell > > [.....] > >>>>> -static int exynos_dp_bridge_attach(struct drm_bridge *bridge) >>>>> +static int analogix_dp_bridge_attach(struct drm_bridge *bridge) >>>>> { >>>>> - struct exynos_dp_device *dp = bridge->driver_private; >>>>> - struct drm_encoder *encoder = &dp->encoder; >>>>> + struct analogix_dp_device *dp = bridge->driver_private; >>>>> + struct drm_encoder *encoder = dp->encoder; >>>>> struct drm_connector *connector = &dp->connector; >>>>> int ret; >>>>> - /* Pre-empt DP connector creation if there's a bridge */ >>>>> - if (dp->ptn_bridge) { >>>>> - ret = exynos_drm_attach_lcd_bridge(dp, encoder); >>>>> - if (!ret) >>>>> - return 0; >>>>> + if (!bridge->encoder) { >>>>> + DRM_ERROR("Parent encoder object not found"); >>>>> + return -ENODEV; >>>>> } >>>>> + encoder->bridge = bridge; >>>>> + >>>>> connector->polled = DRM_CONNECTOR_POLL_HPD; >>>>> ret = drm_connector_init(dp->drm_dev, connector, >>>>> - &exynos_dp_connector_funcs, >>>>> + &analogix_dp_connector_funcs, >>>>> DRM_MODE_CONNECTOR_eDP); >>>>> if (ret) { >>>>> DRM_ERROR("Failed to initialize connector with drm\n"); >>>>> return ret; >>>>> } >>>>> - drm_connector_helper_add(connector, >>>>> &exynos_dp_connector_helper_funcs); >>>>> + drm_connector_helper_add(connector, >>>>> + &analogix_dp_connector_helper_funcs); >>>>> drm_connector_register(connector); >>>>> drm_mode_connector_attach_encoder(connector, encoder); >>>>> - if (dp->panel) >>>>> - ret = drm_panel_attach(dp->panel, &dp->connector); >>>>> + if (dp->plat_data && dp->plat_data->panel) { >>>>> + ret = drm_panel_attach(dp->plat_data->panel, &dp->connector); >>>>> + if (ret) { >>>>> + DRM_ERROR("Failed to attach panel\n"); >>>>> + return ret; >>>>> + } >>>>> + } >>>>> + >>>>> + /* >>>>> + * This should be the end of attach function, caused >>>>> + * we should ensure dp bridge could attach first. >>>>> + */ >>>>> + if (dp->plat_data && dp->plat_data->attach) { >>>>> + ret = dp->plat_data->attach(dp->plat_data, bridge); >>>>> + if (ret) { >>>>> + DRM_ERROR("Failed at platform attch func\n"); >>>> Two new error paths appeared here and above. Don't you have to >>>> cleanup something? I don't know, just wondering... >>> Hmm... I think both panel & platform_attch need ERROR remind when >>> it failed. But if it still need clean, I though it should clean the >>> platform attch >>> error, >>> this is not relate to DRM directly, just analogix driver logic, so >>> code would like, >>> >>> - if (dp->panel) >>> - ret = drm_panel_attach(dp->panel, &dp->connector); >>> + if (dp->plat_data && dp->plat_data->panel) { >>> + ret = drm_panel_attach(dp->plat_data->panel, &dp->connector); >>> + if (ret) { >>> + DRM_ERROR("Failed to attach panel\n"); >>> + return ret; >>> + } >>> + } >>> >>> + /* >>> + * This should be the end of attach function, caused >>> + * we should ensure dp bridge could attach first. >>> + */ >>> + if (dp->plat_data && dp->plat_data->attach) { >>> + ret = dp->plat_data->attach(dp->plat_data, bridge); >>> >>> return ret; >> I am lost... the code looks the same. What did you change? > > I just remove the DRM_ERROR after dp->plat_data->attach(), > maybe I should paste the change that rebase on this patch, > here are they, > > /* > * This should be the end of attach function, caused > * we should ensure dp bridge could attach first. > */ > - if (dp->plat_data && dp->plat_data->attach) { > + if (dp->plat_data && dp->plat_data->attach) > ret = dp->plat_data->attach(dp->plat_data, bridge); > - if (ret) { > - DRM_ERROR("Failed at platform attch func\n"); > - return ret; > - } > - } > > - return 0; > + return ret; > > > If this haven't meet your comment, I maybe start to think that > your comment "Two new error paths appeared here and above" > indicated that those two function is the same. > "dp->plat_data->attach(dp->plat_data, bridge); " > "drm_panel_attach(dp->plat_data->panel, &dp->connector); " I wasn't talking about error message but rather about possible need of clean up in error path. Previously there was only drm_panel_attach(). Now you have two of them (drm_panel_attach() and dp->plat_data->attach()). If the second fails don't you have to clean up before exit? I don't know, just asking. Best regards, Krzysztof