From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH 2/3] drm/msm: dsi host: Use device graph parsing to parse connected panel Date: Mon, 22 Jun 2015 20:24:20 +0530 Message-ID: <1434984861-22948-3-git-send-email-architt@codeaurora.org> References: <1434984861-22948-1-git-send-email-architt@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1434984861-22948-1-git-send-email-architt@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org Cc: linux-kernel@vger.kernel.org List-Id: linux-arm-msm@vger.kernel.org VGhlIGRzaSBob3N0IGxvb2tzIGZvciB0aGUgY29ubmVjdGVkIHBhbmVsIG5vZGUgYnkgcGFyc2lu ZyBmb3IgYSBjaGlsZApuYW1lZCAncGFuZWwnLiBUaGlzIGhpZXJhcmNoeSBpc24ndCB2ZXJ5IGZs ZXhpYmxlLiBUaGUgY29ubmVjdGVkCnBhbmVsIGlzIGZvcmNlZCB0byBiZSBhIGNoaWxkIHRvIHRo ZSBkc2kgaG9zdCwgYW5kIGhlbmNlLCBhIG1pcGkgZHNpCmRldmljZS4gVGhpcyBpc24ndCBzdWl0 YWJsZSBmb3IgZHNpIGRldmljZXMgdGhhdCBkb24ndCB1c2UgbWlwaSBkc2kKYXMgdGhlaXIgY29u dHJvbCBidXMuCgpGb2xsb3cgdGhlIG9mX2dyYXBoIGFwcHJvYWNoIG9mIGNyZWF0aW5nIHBvcnRz IGFuZCBlbmRwb2ludHMgdG8KcmVwcmVzZW50IHRoZSBjb25uZWN0aW9ucyBiZXR3ZWVuIHRoZSBk c2kgaG9zdCBhbmQgdGhlIHBhbmVsIGNvbm5lY3RlZAp0byBpdC4gSW4gb3VyIGNhc2UsIHRoZSBk c2kgaG9zdCB3aWxsIG9ubHkgaGF2ZSBvbmUgb3V0cHV0IHBvcnQsIGxpbmtlZAp0byB0aGUgcGFu ZWwncyBpbnB1dCBwb3J0LgoKVXBkYXRlIERUIGJpbmRpbmcgZG9jdW1lbnRhdGlvbiB3aXRoIGRl dmljZSBncmFwaCB1c2FnZSBpbmZvLgoKU2lnbmVkLW9mZi1ieTogQXJjaGl0IFRhbmVqYSA8YXJj aGl0dEBjb2RlYXVyb3JhLm9yZz4KLS0tCiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu Z3MvZHJtL21zbS9kc2kudHh0IHwgMTUgKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9k c2lfaG9zdC5jICAgICAgICAgICAgICAgIHwgNjQgKysrKysrKysrKysrKysrKystLS0tLS0KIDIg ZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RybS9tc20vZHNpLnR4dCBi L0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kcm0vbXNtL2RzaS50eHQKaW5kZXgg NmNjZDg2MC4uYzg4ZWMzYyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp bmRpbmdzL2RybS9tc20vZHNpLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu ZGluZ3MvZHJtL21zbS9kc2kudHh0CkBAIC0yNSw2ICsyNSw5IEBAIFJlcXVpcmVkIHByb3BlcnRp ZXM6CiAtIHZkZGlvLXN1cHBseTogcGhhbmRsZSB0byB2ZGQtaW8gcmVndWxhdG9yIGRldmljZSBu b2RlCiAtIHZkZGEtc3VwcGx5OiBwaGFuZGxlIHRvIHZkZGEgcmVndWxhdG9yIGRldmljZSBub2Rl CiAtIHFjb20sZHNpLXBoeTogcGhhbmRsZSB0byBEU0kgUEhZIGRldmljZSBub2RlCistIHBvcnQ6 IERTSSBjb250cm9sbGVyIG91dHB1dCBwb3J0LiBUaGlzIGNvbnRhaW5zIG9uZSBlbmRwb2ludCBz dWJub2RlLCB3aXRoIGl0cworICByZW1vdGUtZW5kcG9pbnQgc2V0IHRvIHRoZSBwaGFuZGxlIG9m IHRoZSBjb25uZWN0ZWQgcGFuZWwncyBlbmRwb2ludC4KKyAgU2VlIERvY3VtZW50YXRpb24vZGV2 aWNldHJlZS9iaW5kaW5ncy9ncmFwaC50eHQgZm9yIGRldmljZSBncmFwaCBpbmZvLgogCiBPcHRp b25hbCBwcm9wZXJ0aWVzOgogLSBwYW5lbEAwOiBOb2RlIG9mIHBhbmVsIGNvbm5lY3RlZCB0byB0 aGlzIERTSSBjb250cm9sbGVyLgpAQCAtMTAxLDYgKzEwNCwxOCBAQCBFeGFtcGxlOgogCiAJCQlw b3dlci1zdXBwbHkgPSA8Li4uPjsKIAkJCWJhY2tsaWdodCA9IDwuLi4+OworCisJCQlwb3J0IHsK KwkJCQlwYW5lbF9pbjogZW5kcG9pbnQgeworCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmRzaTBf b3V0PjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKworCQlwb3J0IHsKKwkJCWRzaTBfb3V0OiBlbmRw b2ludCB7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZwYW5lbF9pbj47CisJCQl9OwogCQl9Owog CX07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfaG9zdC5jCmluZGV4IDE3NTE2NTkuLmFiMGIyM2Ig MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYwpAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1 ZGUgPGxpbnV4L29mX2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L29mX2dwaW8uaD4KICNpbmNs dWRlIDxsaW51eC9vZl9pcnEuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPgogI2luY2x1 ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2Nr Lmg+CiAjaW5jbHVkZSA8dmlkZW8vbWlwaV9kaXNwbGF5Lmg+CkBAIC0xMzc5LDcgKzEzODAsNyBA QCBzdGF0aWMgaW50IGRzaV9ob3N0X2F0dGFjaChzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwK IAltc21faG9zdC0+Zm9ybWF0ID0gZHNpLT5mb3JtYXQ7CiAJbXNtX2hvc3QtPm1vZGVfZmxhZ3Mg PSBkc2ktPm1vZGVfZmxhZ3M7CiAKLQltc21faG9zdC0+cGFuZWxfbm9kZSA9IGRzaS0+ZGV2Lm9m X25vZGU7CisJV0FSTl9PTihkc2ktPmRldi5vZl9ub2RlICE9IG1zbV9ob3N0LT5wYW5lbF9ub2Rl KTsKIAogCS8qIFNvbWUgZ3Bpb3MgZGVmaW5lZCBpbiBwYW5lbCBEVCBuZWVkIHRvIGJlIGNvbnRy b2xsZWQgYnkgaG9zdCAqLwogCXJldCA9IGRzaV9ob3N0X2luaXRfcGFuZWxfZ3Bpb3MobXNtX2hv c3QsICZkc2ktPmRldik7CkBAIC0xNDI5LDYgKzE0MzAsNDYgQEAgc3RhdGljIHN0cnVjdCBtaXBp X2RzaV9ob3N0X29wcyBkc2lfaG9zdF9vcHMgPSB7CiAJLnRyYW5zZmVyID0gZHNpX2hvc3RfdHJh bnNmZXIsCiB9OwogCitzdGF0aWMgaW50IG1zbV9kc2lfaG9zdF9wYXJzZV9kdChzdHJ1Y3QgbXNt X2RzaV9ob3N0ICptc21faG9zdCkKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmbXNtX2hvc3Qt PnBkZXYtPmRldjsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LT5vZl9ub2RlOworCXN0 cnVjdCBkZXZpY2Vfbm9kZSAqZW5kcG9pbnQsICpwYW5lbF9ub2RlOworCWludCByZXQ7CisKKwly ZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgInFjb20sZHNpLWhvc3QtaW5kZXgiLCAmbXNt X2hvc3QtPmlkKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiJXM6IGhvc3QgaW5kZXgg bm90IHNwZWNpZmllZCwgcmV0PSVkXG4iLAorCQkJX19mdW5jX18sIHJldCk7CisJCXJldHVybiBy ZXQ7CisJfQorCisJLyoKKwkgKiBnZXQgdGhlIGZpcnN0IGVuZHBvaW50IG5vZGUuIGluIG91ciBj YXNlLCBkc2kgaGFzIG9uZSBvdXRwdXQgcG9ydAorCSAqIHRvIHdoaWNoIHRoZSBwYW5lbCBpcyBj b25uZWN0ZWQuCisJICovCisJZW5kcG9pbnQgPSBvZl9ncmFwaF9nZXRfbmV4dF9lbmRwb2ludChu cCwgTlVMTCk7CisJaWYgKElTX0VSUihlbmRwb2ludCkpIHsKKwkJZGV2X2VycihkZXYsICIlczog bm8gdmFsaWQgZW5kcG9pbnRcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIFBUUl9FUlIoZW5kcG9p bnQpOworCX0KKworCW9mX25vZGVfcHV0KGVuZHBvaW50KTsKKworCS8qIGdldCBwYW5lbCBub2Rl IGZyb20gdGhlIG91dHB1dCBwb3J0J3MgZW5kcG9pbnQgZGF0YSAqLworCXBhbmVsX25vZGUgPSBv Zl9ncmFwaF9nZXRfcmVtb3RlX3BvcnRfcGFyZW50KGVuZHBvaW50KTsKKwlpZiAoSVNfRVJSKHBh bmVsX25vZGUpKSB7CisJCWRldl9lcnIoZGV2LCAiJXM6IG5vIHZhbGlkIGRldmljZVxuIiwgX19m dW5jX18pOworCQlyZXR1cm4gUFRSX0VSUihwYW5lbF9ub2RlKTsKKwl9CisKKwlvZl9ub2RlX3B1 dChwYW5lbF9ub2RlKTsKKworCW1zbV9ob3N0LT5wYW5lbF9ub2RlID0gcGFuZWxfbm9kZTsKKwor CXJldHVybiAwOworfQorCiBpbnQgbXNtX2RzaV9ob3N0X2luaXQoc3RydWN0IG1zbV9kc2kgKm1z bV9kc2kpCiB7CiAJc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QgPSBOVUxMOwpAQCAtMTQ0 MywxNSArMTQ4NCwxMyBAQCBpbnQgbXNtX2RzaV9ob3N0X2luaXQoc3RydWN0IG1zbV9kc2kgKm1z bV9kc2kpCiAJCWdvdG8gZmFpbDsKIAl9CiAKLQlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihw ZGV2LT5kZXYub2Zfbm9kZSwKLQkJCQkicWNvbSxkc2ktaG9zdC1pbmRleCIsICZtc21faG9zdC0+ aWQpOworCW1zbV9ob3N0LT5wZGV2ID0gcGRldjsKKworCXJldCA9IG1zbV9kc2lfaG9zdF9wYXJz ZV9kdChtc21faG9zdCk7CiAJaWYgKHJldCkgewotCQlkZXZfZXJyKCZwZGV2LT5kZXYsCi0JCQki JXM6IGhvc3QgaW5kZXggbm90IHNwZWNpZmllZCwgcmV0PSVkXG4iLAotCQkJX19mdW5jX18sIHJl dCk7CisJCXByX2VycigiJXM6IGZhaWxlZCB0byBwYXJzZSBkdFxuIiwgX19mdW5jX18pOwogCQln b3RvIGZhaWw7CiAJfQotCW1zbV9ob3N0LT5wZGV2ID0gcGRldjsKIAogCXJldCA9IGRzaV9jbGtf aW5pdChtc21faG9zdCk7CiAJaWYgKHJldCkgewpAQCAtMTU1OSw3ICsxNTk4LDYgQEAgaW50IG1z bV9kc2lfaG9zdF9tb2Rlc2V0X2luaXQoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCiBpbnQg bXNtX2RzaV9ob3N0X3JlZ2lzdGVyKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LCBib29sIGNo ZWNrX2RlZmVyKQogewogCXN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0ID0gdG9fbXNtX2Rz aV9ob3N0KGhvc3QpOwotCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZTsKIAlpbnQgcmV0OwogCiAJ LyogUmVnaXN0ZXIgbWlwaSBkc2kgaG9zdCAqLwpAQCAtMTU3OSwxNCArMTYxNyw4IEBAIGludCBt c21fZHNpX2hvc3RfcmVnaXN0ZXIoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsIGJvb2wgY2hl Y2tfZGVmZXIpCiAJCSAqIGNyZWF0ZSBmcmFtZWJ1ZmZlci4KIAkJICovCiAJCWlmIChjaGVja19k ZWZlcikgewotCQkJbm9kZSA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG1zbV9ob3N0LT5wZGV2LT5k ZXYub2Zfbm9kZSwKLQkJCQkJCQkicGFuZWwiKTsKLQkJCWlmIChub2RlKSB7Ci0JCQkJb2Zfbm9k ZV9wdXQobm9kZSk7Ci0KLQkJCQlpZiAoIW9mX2RybV9maW5kX3BhbmVsKG5vZGUpKQotCQkJCQly ZXR1cm4gLUVQUk9CRV9ERUZFUjsKLQkJCX0KKwkJCWlmICghb2ZfZHJtX2ZpbmRfcGFuZWwobXNt X2hvc3QtPnBhbmVsX25vZGUpKQorCQkJCXJldHVybiAtRVBST0JFX0RFRkVSOwogCQl9CiAJfQog Ci0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2Yg dGhlIENvZGUgQXVyb3JhIEZvcnVtLApob3N0ZWQgYnkgVGhlIExpbnV4IEZvdW5kYXRpb24KCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753321AbbFVOy4 (ORCPT ); Mon, 22 Jun 2015 10:54:56 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:36070 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753038AbbFVOyg (ORCPT ); Mon, 22 Jun 2015 10:54:36 -0400 From: Archit Taneja To: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org Cc: robdclark@gmail.com, hali@codeaurora.org, linux-kernel@vger.kernel.org, Archit Taneja Subject: [PATCH 2/3] drm/msm: dsi host: Use device graph parsing to parse connected panel Date: Mon, 22 Jun 2015 20:24:20 +0530 Message-Id: <1434984861-22948-3-git-send-email-architt@codeaurora.org> X-Mailer: git-send-email 1.8.2.1 In-Reply-To: <1434984861-22948-1-git-send-email-architt@codeaurora.org> References: <1434984861-22948-1-git-send-email-architt@codeaurora.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The dsi host looks for the connected panel node by parsing for a child named 'panel'. This hierarchy isn't very flexible. The connected panel is forced to be a child to the dsi host, and hence, a mipi dsi device. This isn't suitable for dsi devices that don't use mipi dsi as their control bus. Follow the of_graph approach of creating ports and endpoints to represent the connections between the dsi host and the panel connected to it. In our case, the dsi host will only have one output port, linked to the panel's input port. Update DT binding documentation with device graph usage info. Signed-off-by: Archit Taneja --- Documentation/devicetree/bindings/drm/msm/dsi.txt | 15 ++++++ drivers/gpu/drm/msm/dsi/dsi_host.c | 64 +++++++++++++++++------ 2 files changed, 63 insertions(+), 16 deletions(-) diff --git a/Documentation/devicetree/bindings/drm/msm/dsi.txt b/Documentation/devicetree/bindings/drm/msm/dsi.txt index 6ccd860..c88ec3c 100644 --- a/Documentation/devicetree/bindings/drm/msm/dsi.txt +++ b/Documentation/devicetree/bindings/drm/msm/dsi.txt @@ -25,6 +25,9 @@ Required properties: - vddio-supply: phandle to vdd-io regulator device node - vdda-supply: phandle to vdda regulator device node - qcom,dsi-phy: phandle to DSI PHY device node +- port: DSI controller output port. This contains one endpoint subnode, with its + remote-endpoint set to the phandle of the connected panel's endpoint. + See Documentation/devicetree/bindings/graph.txt for device graph info. Optional properties: - panel@0: Node of panel connected to this DSI controller. @@ -101,6 +104,18 @@ Example: power-supply = <...>; backlight = <...>; + + port { + panel_in: endpoint { + remote-endpoint = <&dsi0_out>; + }; + }; + }; + + port { + dsi0_out: endpoint { + remote-endpoint = <&panel_in>; + }; }; }; diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c index 1751659..ab0b23b 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include