From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sam Ravnborg Subject: Re: [PATCH v7 2/4] drm/panel: set display info in panel attach Date: Tue, 23 Jul 2019 11:19:45 +0200 Message-ID: <20190723091945.GD787@ravnborg.org> References: <20190710021659.177950-1-dbasehore@chromium.org> <20190710021659.177950-3-dbasehore@chromium.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190710021659.177950-3-dbasehore@chromium.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Derek Basehore , Laurent Pinchart Cc: Maxime Ripard , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, David Airlie , linux-mediatek@lists.infradead.org, Matthias Brugger , linux-arm-kernel@lists.infradead.org List-Id: linux-mediatek@lists.infradead.org SGkgRGVyZWsuCgpPbiBUdWUsIEp1bCAwOSwgMjAxOSBhdCAwNzoxNjo1N1BNIC0wNzAwLCBEZXJl ayBCYXNlaG9yZSB3cm90ZToKPiBEZXZpY2V0cmVlIHN5c3RlbXMgY2FuIHNldCBwYW5lbCBvcmll bnRhdGlvbiB2aWEgYSBwYW5lbCBiaW5kaW5nLCBidXQKPiB0aGVyZSdzIG5vIHdheSwgYXMgaXMs IHRvIHByb3BhZ2F0ZSB0aGlzIHNldHRpbmcgdG8gdGhlIGNvbm5lY3RvciwKPiB3aGVyZSB0aGUg cHJvcGVydHkgbmVlZCB0byBiZSBhZGRlZC4KPiBUbyBhZGRyZXNzIHRoaXMsIHRoaXMgcGF0Y2gg c2V0cyBvcmllbnRhdGlvbiwgYXMgd2VsbCBhcyBvdGhlciBmaXhlZAo+IHZhbHVlcyBmb3IgdGhl IHBhbmVsLCBpbiB0aGUgZHJtX3BhbmVsX2F0dGFjaCBmdW5jdGlvbi4gVGhlc2UgdmFsdWVzCj4g YXJlIHN0b3JlZCBmcm9tIHByb2JlIGluIHRoZSBkcm1fcGFuZWwgc3RydWN0LgoKVGhpcyBhcHBy b2NoIHNlZW1zIHRvIGNvbmZsaWN0IHdpdGggd29yayBkb25lIGJ5IExhdXJlbnQgd2hlcmUgdGhl Cm93bmVyc2hpcC9jcmVhdGlvbiBvZiB0aGUgY29ubmVjdG9yIHdpbGwgYmUgbW92ZWQgdG8gdGhl IGRpc3BsYXkgY29udHJvbGxlci4KCklmIEkgdW5kZXJzdGFuZCBpdCBjb3JyZWN0IHRoZW4gdGhl cmUgc2hvdWxkIG5vdCBiZSBhIDE6MSByZWxhdGlvbgpiZXR3ZWVuIGEgcGFuZWwgYW5kIGEgY29u bmVjdG9yIGFueW1vcmUuCgpXZSBzaG91bGQgbm90IHRyeSB0byB3b3JrIGluIHR3byBkaWZmZXJl bnQgZGlyZWN0aW9ucyB3aXRoIHRoaXMuCkxhdXJlbnQsIGNhbiB5b3UgY29tbWVudCBvbiB0aGlz PwoKSWYgd2UgbW92ZSBmb3JhcmQgd2l0aCB0aGlzIHBhdGNoLCB0aGVuIGFsbCBmaWVsZHMgaW4g ZHJtX3BhbmVsIG5lZWRzCmtlcm5lbC1kb2MgLSBwcmVmZXJhYmx5IGlubGluZS4KCglTYW0KCj4g Cj4gU2lnbmVkLW9mZi1ieTogRGVyZWsgQmFzZWhvcmUgPGRiYXNlaG9yZUBjaHJvbWl1bS5vcmc+ Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fcGFuZWwuYyB8IDI4ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiAgaW5jbHVkZS9kcm0vZHJtX3BhbmVsLmggICAgIHwgMTQgKysrKysr KysrKysrKysKPiAgMiBmaWxlcyBjaGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGFuZWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f cGFuZWwuYwo+IGluZGV4IDE2OWJhYjU0ZDUyZC4uY2EwMTA5NTQ3MGE5IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fcGFuZWwuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f cGFuZWwuYwo+IEBAIC0xMDQsMTEgKzEwNCwyMyBAQCBFWFBPUlRfU1lNQk9MKGRybV9wYW5lbF9y ZW1vdmUpOwo+ICAgKi8KPiAgaW50IGRybV9wYW5lbF9hdHRhY2goc3RydWN0IGRybV9wYW5lbCAq cGFuZWwsIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIHsKPiArCXN0cnVjdCBk cm1fZGlzcGxheV9pbmZvICppbmZvOwo+ICsKPiAgCWlmIChwYW5lbC0+Y29ubmVjdG9yKQo+ICAJ CXJldHVybiAtRUJVU1k7Cj4gIAo+ICAJcGFuZWwtPmNvbm5lY3RvciA9IGNvbm5lY3RvcjsKPiAg CXBhbmVsLT5kcm0gPSBjb25uZWN0b3ItPmRldjsKPiArCWluZm8gPSAmY29ubmVjdG9yLT5kaXNw bGF5X2luZm87Cj4gKwlpbmZvLT53aWR0aF9tbSA9IHBhbmVsLT53aWR0aF9tbTsKPiArCWluZm8t PmhlaWdodF9tbSA9IHBhbmVsLT5oZWlnaHRfbW07Cj4gKwlpbmZvLT5icGMgPSBwYW5lbC0+YnBj Owo+ICsJaW5mby0+cGFuZWxfb3JpZW50YXRpb24gPSBwYW5lbC0+b3JpZW50YXRpb247Cj4gKwlp bmZvLT5idXNfZmxhZ3MgPSBwYW5lbC0+YnVzX2ZsYWdzOwo+ICsJaWYgKHBhbmVsLT5idXNfZm9y bWF0cykKPiArCQlkcm1fZGlzcGxheV9pbmZvX3NldF9idXNfZm9ybWF0cygmY29ubmVjdG9yLT5k aXNwbGF5X2luZm8sCj4gKwkJCQkJCSBwYW5lbC0+YnVzX2Zvcm1hdHMsCj4gKwkJCQkJCSBwYW5l bC0+bnVtX2J1c19mb3JtYXRzKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC0xMjgsNiAr MTQwLDIyIEBAIEVYUE9SVF9TWU1CT0woZHJtX3BhbmVsX2F0dGFjaCk7Cj4gICAqLwo+ICBpbnQg ZHJtX3BhbmVsX2RldGFjaChzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiAgewo+ICsJc3RydWN0 IGRybV9kaXNwbGF5X2luZm8gKmluZm87Cj4gKwo+ICsJaWYgKCFwYW5lbC0+Y29ubmVjdG9yKQo+ ICsJCWdvdG8gb3V0Owo+ICsKPiArCWluZm8gPSAmcGFuZWwtPmNvbm5lY3Rvci0+ZGlzcGxheV9p bmZvOwo+ICsJaW5mby0+d2lkdGhfbW0gPSAwOwo+ICsJaW5mby0+aGVpZ2h0X21tID0gMDsKPiAr CWluZm8tPmJwYyA9IDA7Cj4gKwlpbmZvLT5wYW5lbF9vcmllbnRhdGlvbiA9IERSTV9NT0RFX1BB TkVMX09SSUVOVEFUSU9OX1VOS05PV047Cj4gKwlpbmZvLT5idXNfZmxhZ3MgPSAwOwo+ICsJa2Zy ZWUoaW5mby0+YnVzX2Zvcm1hdHMpOwo+ICsJaW5mby0+YnVzX2Zvcm1hdHMgPSBOVUxMOwo+ICsJ aW5mby0+bnVtX2J1c19mb3JtYXRzID0gMDsKPiArCj4gK291dDoKPiAgCXBhbmVsLT5jb25uZWN0 b3IgPSBOVUxMOwo+ICAJcGFuZWwtPmRybSA9IE5VTEw7Cj4gIAo+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS9kcm1fcGFuZWwuaCBiL2luY2x1ZGUvZHJtL2RybV9wYW5lbC5oCj4gaW5kZXggZmM3 ZGE1NWY0MWQ5Li5hNmE4ODFiOTg3ZGQgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3Bh bmVsLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fcGFuZWwuaAo+IEBAIC0zOSw2ICszOSw4IEBA IGVudW0gZHJtX3BhbmVsX29yaWVudGF0aW9uOwo+ICAgKiBzdHJ1Y3QgZHJtX3BhbmVsX2Z1bmNz IC0gcGVyZm9ybSBvcGVyYXRpb25zIG9uIGEgZ2l2ZW4gcGFuZWwKPiAgICogQGRpc2FibGU6IGRp c2FibGUgcGFuZWwgKHR1cm4gb2ZmIGJhY2sgbGlnaHQsIGV0Yy4pCj4gICAqIEB1bnByZXBhcmU6 IHR1cm4gb2ZmIHBhbmVsCj4gKyAqIEBkZXRhY2g6IGRldGFjaCBwYW5lbC0+Y29ubmVjdG9yIChj bGVhciBpbnRlcm5hbCBzdGF0ZSwgZXRjLikKPiArICogQGF0dGFjaDogYXR0YWNoIHBhbmVsLT5j b25uZWN0b3IgKHVwZGF0ZSBpbnRlcm5hbCBzdGF0ZSwgZXRjLikKPiAgICogQHByZXBhcmU6IHR1 cm4gb24gcGFuZWwgYW5kIHBlcmZvcm0gc2V0IHVwCj4gICAqIEBlbmFibGU6IGVuYWJsZSBwYW5l bCAodHVybiBvbiBiYWNrIGxpZ2h0LCBldGMuKQo+ICAgKiBAZ2V0X21vZGVzOiBhZGQgbW9kZXMg dG8gdGhlIGNvbm5lY3RvciB0aGF0IHRoZSBwYW5lbCBpcyBhdHRhY2hlZCB0byBhbmQKPiBAQCAt OTUsNiArOTcsMTggQEAgc3RydWN0IGRybV9wYW5lbCB7Cj4gIAo+ICAJY29uc3Qgc3RydWN0IGRy bV9wYW5lbF9mdW5jcyAqZnVuY3M7Cj4gIAo+ICsJLyoKPiArCSAqIHBhbmVsIGluZm9ybWF0aW9u IHRvIGJlIHNldCBpbiB0aGUgY29ubmVjdG9yIHdoZW4gdGhlIHBhbmVsIGlzCj4gKwkgKiBhdHRh Y2hlZC4KPiArCSAqLwo+ICsJdW5zaWduZWQgaW50IHdpZHRoX21tOwo+ICsJdW5zaWduZWQgaW50 IGhlaWdodF9tbTsKPiArCXVuc2lnbmVkIGludCBicGM7Cj4gKwlpbnQgb3JpZW50YXRpb247Cj4g Kwljb25zdCB1MzIgKmJ1c19mb3JtYXRzOwo+ICsJdW5zaWduZWQgaW50IG51bV9idXNfZm9ybWF0 czsKPiArCXUzMiBidXNfZmxhZ3M7Cj4gKwo+ICAJc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+ICB9 Owo+ICAKPiAtLSAKPiAyLjIyLjAuNDEwLmdkOGZkYmUyMWI1LWdvb2cKPiAKPiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 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.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable 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 4778AC76190 for ; Tue, 23 Jul 2019 09:19:53 +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 1B955227BF for ; Tue, 23 Jul 2019 09:19:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="iwGfyNsz" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1B955227BF Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ravnborg.org 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:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=gP92+ikEuqfqWr8O+jx8PremKeDi0q/4ccEMhnSU+aU=; b=iwGfyNszUwlzFr HpFcxWJeU4gwNMJQlILt0t+71BhK9gZyRt4eVbLE1rhhm/VN45PcOX3EqDqLvMrA9H6ySvHjtlmGc FwA3KHiTtq/5AucqHwLM9BSGnx1qhXXLiM/ZkoFLQfMeo6K28mxzPmp6RQkaXD73ounR2rt4XXkbB 2r/IWzGAYlKxRHmpfYkA55SGdxVXxP6vpo73NXGQBWu3Rga8cZ8dO5e05SIqsXEwOBvKruz7Uwkz7 RPALcpHiAEu8NQgZN0hA5rjodNlSRygcBTlDUue6qU9zEAIQRiIoRQqdOF4FV57Qv+q8XsUrgHxZt uVNsevTvc2ewCGtaKf4Q==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hpqxc-0005n2-O1; Tue, 23 Jul 2019 09:19:52 +0000 Received: from asavdk3.altibox.net ([109.247.116.14]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1hpqxY-0005m7-Pq; Tue, 23 Jul 2019 09:19:50 +0000 Received: from ravnborg.org (unknown [158.248.194.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by asavdk3.altibox.net (Postfix) with ESMTPS id 5B183200B6; Tue, 23 Jul 2019 11:19:46 +0200 (CEST) Date: Tue, 23 Jul 2019 11:19:45 +0200 From: Sam Ravnborg To: Derek Basehore , Laurent Pinchart Subject: Re: [PATCH v7 2/4] drm/panel: set display info in panel attach Message-ID: <20190723091945.GD787@ravnborg.org> References: <20190710021659.177950-1-dbasehore@chromium.org> <20190710021659.177950-3-dbasehore@chromium.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190710021659.177950-3-dbasehore@chromium.org> User-Agent: Mutt/1.10.1 (2018-07-13) X-CMAE-Score: 0 X-CMAE-Analysis: v=2.3 cv=dqr19Wo4 c=1 sm=1 tr=0 a=UWs3HLbX/2nnQ3s7vZ42gw==:117 a=UWs3HLbX/2nnQ3s7vZ42gw==:17 a=jpOVt7BSZ2e4Z31A5e1TngXxSK0=:19 a=kj9zAlcOel0A:10 a=cm27Pg_UAAAA:8 a=e5mUnYsNAAAA:8 a=JKKMseLQFeVpvqDGF_IA:9 a=V_j96s7zFc6XEDQv:21 a=BZ3M7_42R0vJoBCe:21 a=CjuIK1q_8ugA:10 a=xmb-EsYY8bH0VWELuYED:22 a=Vxmtnl_E_bksehYqCbjh:22 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190723_021949_201576_3DDB800C X-CRM114-Status: GOOD ( 22.55 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Maxime Ripard , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, David Airlie , Thierry Reding , linux-mediatek@lists.infradead.org, Rodrigo Vivi , Matthias Brugger , Sean Paul , 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 Derek. On Tue, Jul 09, 2019 at 07:16:57PM -0700, Derek Basehore wrote: > Devicetree systems can set panel orientation via a panel binding, but > there's no way, as is, to propagate this setting to the connector, > where the property need to be added. > To address this, this patch sets orientation, as well as other fixed > values for the panel, in the drm_panel_attach function. These values > are stored from probe in the drm_panel struct. This approch seems to conflict with work done by Laurent where the ownership/creation of the connector will be moved to the display controller. If I understand it correct then there should not be a 1:1 relation between a panel and a connector anymore. We should not try to work in two different directions with this. Laurent, can you comment on this? If we move forard with this patch, then all fields in drm_panel needs kernel-doc - preferably inline. Sam > > Signed-off-by: Derek Basehore > --- > drivers/gpu/drm/drm_panel.c | 28 ++++++++++++++++++++++++++++ > include/drm/drm_panel.h | 14 ++++++++++++++ > 2 files changed, 42 insertions(+) > > diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c > index 169bab54d52d..ca01095470a9 100644 > --- a/drivers/gpu/drm/drm_panel.c > +++ b/drivers/gpu/drm/drm_panel.c > @@ -104,11 +104,23 @@ EXPORT_SYMBOL(drm_panel_remove); > */ > int drm_panel_attach(struct drm_panel *panel, struct drm_connector *connector) > { > + struct drm_display_info *info; > + > if (panel->connector) > return -EBUSY; > > panel->connector = connector; > panel->drm = connector->dev; > + info = &connector->display_info; > + info->width_mm = panel->width_mm; > + info->height_mm = panel->height_mm; > + info->bpc = panel->bpc; > + info->panel_orientation = panel->orientation; > + info->bus_flags = panel->bus_flags; > + if (panel->bus_formats) > + drm_display_info_set_bus_formats(&connector->display_info, > + panel->bus_formats, > + panel->num_bus_formats); > > return 0; > } > @@ -128,6 +140,22 @@ EXPORT_SYMBOL(drm_panel_attach); > */ > int drm_panel_detach(struct drm_panel *panel) > { > + struct drm_display_info *info; > + > + if (!panel->connector) > + goto out; > + > + info = &panel->connector->display_info; > + info->width_mm = 0; > + info->height_mm = 0; > + info->bpc = 0; > + info->panel_orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN; > + info->bus_flags = 0; > + kfree(info->bus_formats); > + info->bus_formats = NULL; > + info->num_bus_formats = 0; > + > +out: > panel->connector = NULL; > panel->drm = NULL; > > diff --git a/include/drm/drm_panel.h b/include/drm/drm_panel.h > index fc7da55f41d9..a6a881b987dd 100644 > --- a/include/drm/drm_panel.h > +++ b/include/drm/drm_panel.h > @@ -39,6 +39,8 @@ enum drm_panel_orientation; > * struct drm_panel_funcs - perform operations on a given panel > * @disable: disable panel (turn off back light, etc.) > * @unprepare: turn off panel > + * @detach: detach panel->connector (clear internal state, etc.) > + * @attach: attach panel->connector (update internal state, etc.) > * @prepare: turn on panel and perform set up > * @enable: enable panel (turn on back light, etc.) > * @get_modes: add modes to the connector that the panel is attached to and > @@ -95,6 +97,18 @@ struct drm_panel { > > const struct drm_panel_funcs *funcs; > > + /* > + * panel information to be set in the connector when the panel is > + * attached. > + */ > + unsigned int width_mm; > + unsigned int height_mm; > + unsigned int bpc; > + int orientation; > + const u32 *bus_formats; > + unsigned int num_bus_formats; > + u32 bus_flags; > + > struct list_head list; > }; > > -- > 2.22.0.410.gd8fdbe21b5-goog > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel 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.3 required=3.0 tests=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 BAAFCC7618B for ; Tue, 23 Jul 2019 09:19:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 98162227B9 for ; Tue, 23 Jul 2019 09:19:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732161AbfGWJTv (ORCPT ); Tue, 23 Jul 2019 05:19:51 -0400 Received: from asavdk3.altibox.net ([109.247.116.14]:34405 "EHLO asavdk3.altibox.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725848AbfGWJTu (ORCPT ); Tue, 23 Jul 2019 05:19:50 -0400 Received: from ravnborg.org (unknown [158.248.194.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by asavdk3.altibox.net (Postfix) with ESMTPS id 5B183200B6; Tue, 23 Jul 2019 11:19:46 +0200 (CEST) Date: Tue, 23 Jul 2019 11:19:45 +0200 From: Sam Ravnborg To: Derek Basehore , Laurent Pinchart Cc: linux-kernel@vger.kernel.org, Maxime Ripard , intel-gfx@lists.freedesktop.org, David Airlie , Thierry Reding , Matthias Brugger , dri-devel@lists.freedesktop.org, Rodrigo Vivi , linux-mediatek@lists.infradead.org, Sean Paul , linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v7 2/4] drm/panel: set display info in panel attach Message-ID: <20190723091945.GD787@ravnborg.org> References: <20190710021659.177950-1-dbasehore@chromium.org> <20190710021659.177950-3-dbasehore@chromium.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190710021659.177950-3-dbasehore@chromium.org> User-Agent: Mutt/1.10.1 (2018-07-13) X-CMAE-Score: 0 X-CMAE-Analysis: v=2.3 cv=dqr19Wo4 c=1 sm=1 tr=0 a=UWs3HLbX/2nnQ3s7vZ42gw==:117 a=UWs3HLbX/2nnQ3s7vZ42gw==:17 a=jpOVt7BSZ2e4Z31A5e1TngXxSK0=:19 a=kj9zAlcOel0A:10 a=cm27Pg_UAAAA:8 a=e5mUnYsNAAAA:8 a=JKKMseLQFeVpvqDGF_IA:9 a=V_j96s7zFc6XEDQv:21 a=BZ3M7_42R0vJoBCe:21 a=CjuIK1q_8ugA:10 a=xmb-EsYY8bH0VWELuYED:22 a=Vxmtnl_E_bksehYqCbjh:22 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Derek. On Tue, Jul 09, 2019 at 07:16:57PM -0700, Derek Basehore wrote: > Devicetree systems can set panel orientation via a panel binding, but > there's no way, as is, to propagate this setting to the connector, > where the property need to be added. > To address this, this patch sets orientation, as well as other fixed > values for the panel, in the drm_panel_attach function. These values > are stored from probe in the drm_panel struct. This approch seems to conflict with work done by Laurent where the ownership/creation of the connector will be moved to the display controller. If I understand it correct then there should not be a 1:1 relation between a panel and a connector anymore. We should not try to work in two different directions with this. Laurent, can you comment on this? If we move forard with this patch, then all fields in drm_panel needs kernel-doc - preferably inline. Sam > > Signed-off-by: Derek Basehore > --- > drivers/gpu/drm/drm_panel.c | 28 ++++++++++++++++++++++++++++ > include/drm/drm_panel.h | 14 ++++++++++++++ > 2 files changed, 42 insertions(+) > > diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c > index 169bab54d52d..ca01095470a9 100644 > --- a/drivers/gpu/drm/drm_panel.c > +++ b/drivers/gpu/drm/drm_panel.c > @@ -104,11 +104,23 @@ EXPORT_SYMBOL(drm_panel_remove); > */ > int drm_panel_attach(struct drm_panel *panel, struct drm_connector *connector) > { > + struct drm_display_info *info; > + > if (panel->connector) > return -EBUSY; > > panel->connector = connector; > panel->drm = connector->dev; > + info = &connector->display_info; > + info->width_mm = panel->width_mm; > + info->height_mm = panel->height_mm; > + info->bpc = panel->bpc; > + info->panel_orientation = panel->orientation; > + info->bus_flags = panel->bus_flags; > + if (panel->bus_formats) > + drm_display_info_set_bus_formats(&connector->display_info, > + panel->bus_formats, > + panel->num_bus_formats); > > return 0; > } > @@ -128,6 +140,22 @@ EXPORT_SYMBOL(drm_panel_attach); > */ > int drm_panel_detach(struct drm_panel *panel) > { > + struct drm_display_info *info; > + > + if (!panel->connector) > + goto out; > + > + info = &panel->connector->display_info; > + info->width_mm = 0; > + info->height_mm = 0; > + info->bpc = 0; > + info->panel_orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN; > + info->bus_flags = 0; > + kfree(info->bus_formats); > + info->bus_formats = NULL; > + info->num_bus_formats = 0; > + > +out: > panel->connector = NULL; > panel->drm = NULL; > > diff --git a/include/drm/drm_panel.h b/include/drm/drm_panel.h > index fc7da55f41d9..a6a881b987dd 100644 > --- a/include/drm/drm_panel.h > +++ b/include/drm/drm_panel.h > @@ -39,6 +39,8 @@ enum drm_panel_orientation; > * struct drm_panel_funcs - perform operations on a given panel > * @disable: disable panel (turn off back light, etc.) > * @unprepare: turn off panel > + * @detach: detach panel->connector (clear internal state, etc.) > + * @attach: attach panel->connector (update internal state, etc.) > * @prepare: turn on panel and perform set up > * @enable: enable panel (turn on back light, etc.) > * @get_modes: add modes to the connector that the panel is attached to and > @@ -95,6 +97,18 @@ struct drm_panel { > > const struct drm_panel_funcs *funcs; > > + /* > + * panel information to be set in the connector when the panel is > + * attached. > + */ > + unsigned int width_mm; > + unsigned int height_mm; > + unsigned int bpc; > + int orientation; > + const u32 *bus_formats; > + unsigned int num_bus_formats; > + u32 bus_flags; > + > struct list_head list; > }; > > -- > 2.22.0.410.gd8fdbe21b5-goog > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel