From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH 3/3] drm/msm: mdp4 lvds: get panel node via of graph parsing Date: Mon, 22 Jun 2015 20:24:21 +0530 Message-ID: <1434984861-22948-4-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 V2UgY3VycmVudGx5IGdldCB0aGUgb3V0cHV0IGNvbm5lY3RlZCB0byBMVkRTIGJ5IGxvb2tpbmcg Zm9yIGEgcGhhbmRsZQpjYWxsZWQgJ3Fjb20sbHZkcy1wYW5lbCcgdW5kZXIgdGhlIG1kcCBEVCBu b2RlLgoKVXNlIHRoZSBtb3JlIHN0YW5kYXJkIG9mX2dyYXBoIGFwcHJvYWNoIHRvIGNyZWF0ZSBh biBsdmRzIG91dHB1dCBwb3J0LAphbmQgcmV0cmlldmUgdGhlIHBhbmVsIG5vZGUgZnJvbSB0aGUg cG9ydCdzIGVuZHBvaW50IGRhdGEuCgpTaWduZWQtb2ZmLWJ5OiBBcmNoaXQgVGFuZWphIDxhcmNo aXR0QGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDQvbWRw NF9rbXMuYyB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9kcnYuaCAgICAgICAgICAgfCAgMSArCiAyIGZpbGVzIGNoYW5nZWQsIDI0 IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9tZHAvbWRwNC9tZHA0X2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRw NC9tZHA0X2ttcy5jCmluZGV4IDUzMWU0YWMuLmNmNzJlZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vbWRwL21kcDQvbWRwNF9rbXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L21kcC9tZHA0L21kcDRfa21zLmMKQEAgLTI0MSwyMiArMjQxLDM2IEBAIGludCBtZHA0X2VuYWJs ZShzdHJ1Y3QgbWRwNF9rbXMgKm1kcDRfa21zKQogfQogCiAjaWZkZWYgQ09ORklHX09GCi1zdGF0 aWMgc3RydWN0IGRybV9wYW5lbCAqZGV0ZWN0X3BhbmVsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGNvbnN0IGNoYXIgKm5hbWUpCitzdGF0aWMgc3RydWN0IGRybV9wYW5lbCAqZGV0ZWN0X3BhbmVs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7Ci0Jc3RydWN0IGRldmljZV9ub2RlICpuOworCXN0 cnVjdCBkZXZpY2Vfbm9kZSAqZW5kcG9pbnQsICpwYW5lbF9ub2RlOworCXN0cnVjdCBkZXZpY2Vf bm9kZSAqbnAgPSBkZXYtPmRldi0+b2Zfbm9kZTsKIAlzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCA9 IE5VTEw7CiAKLQluID0gb2ZfcGFyc2VfcGhhbmRsZShkZXYtPmRldi0+b2Zfbm9kZSwgbmFtZSwg MCk7Ci0JaWYgKG4pIHsKLQkJcGFuZWwgPSBvZl9kcm1fZmluZF9wYW5lbChuKTsKLQkJaWYgKCFw YW5lbCkKLQkJCXBhbmVsID0gRVJSX1BUUigtRVBST0JFX0RFRkVSKTsKKwllbmRwb2ludCA9IG9m X2dyYXBoX2dldF9uZXh0X2VuZHBvaW50KG5wLCBOVUxMKTsKKwlpZiAoSVNfRVJSKGVuZHBvaW50 KSkgeworCQlkZXZfZXJyKGRldi0+ZGV2LCAibm8gdmFsaWQgZW5kcG9pbnRcbiIpOworCQlyZXR1 cm4gRVJSX0NBU1QoZW5kcG9pbnQpOwogCX0KIAorCW9mX25vZGVfcHV0KGVuZHBvaW50KTsKKwor CXBhbmVsX25vZGUgPSBvZl9ncmFwaF9nZXRfcmVtb3RlX3BvcnRfcGFyZW50KGVuZHBvaW50KTsK KwlpZiAoSVNfRVJSKHBhbmVsX25vZGUpKSB7CisJCWRldl9lcnIoZGV2LT5kZXYsICJubyB2YWxp ZCBwYW5lbCBub2RlXG4iKTsKKwkJcmV0dXJuIEVSUl9DQVNUKHBhbmVsX25vZGUpOworCX0KKwor CW9mX25vZGVfcHV0KHBhbmVsX25vZGUpOworCisJcGFuZWwgPSBvZl9kcm1fZmluZF9wYW5lbChw YW5lbF9ub2RlKTsKKwlpZiAoSVNfRVJSKHBhbmVsKSkKKwkJcGFuZWwgPSBFUlJfUFRSKC1FUFJP QkVfREVGRVIpOworCiAJcmV0dXJuIHBhbmVsOwogfQogI2Vsc2UKLXN0YXRpYyBzdHJ1Y3QgZHJt X3BhbmVsICpkZXRlY3RfcGFuZWwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgY29uc3QgY2hhciAq bmFtZSkKK3N0YXRpYyBzdHJ1Y3QgZHJtX3BhbmVsICpkZXRlY3RfcGFuZWwoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIHsKIAkvLyA/Pz8gbWF5YmUgdXNlIGEgbW9kdWxlIHBhcmFtIHRvIHNwZWNp Znkgd2hpY2ggcGFuZWwgaXMgYXR0YWNoZWQ/CiB9CkBAIC0yOTQsNyArMzA4LDcgQEAgc3RhdGlj IGludCBtb2Rlc2V0X2luaXQoc3RydWN0IG1kcDRfa21zICptZHA0X2ttcykKIAkgKiBTZXR1cCB0 aGUgTENEQy9MVkRTIHBhdGg6IFJHQjIgLT4gRE1BX1AgLT4gTENEQyAtPiBMVkRTOgogCSAqLwog Ci0JcGFuZWwgPSBkZXRlY3RfcGFuZWwoZGV2LCAicWNvbSxsdmRzLXBhbmVsIik7CisJcGFuZWwg PSBkZXRlY3RfcGFuZWwoZGV2KTsKIAlpZiAoSVNfRVJSKHBhbmVsKSkgewogCQlyZXQgPSBQVFJf RVJSKHBhbmVsKTsKIAkJZGV2X2VycihkZXYtPmRldiwgImZhaWxlZCB0byBkZXRlY3QgTFZEUyBw YW5lbDogJWRcbiIsIHJldCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCmluZGV4IGU3YzVlYTEuLjBjYmVi MWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8bGlu dXgvbGlzdC5oPgogI2luY2x1ZGUgPGxpbnV4L2lvbW11Lmg+CiAjaW5jbHVkZSA8bGludXgvdHlw ZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPgogI2luY2x1ZGUgPGFzbS9zaXplcy5o PgogCiAjaWZuZGVmIENPTkZJR19PRgotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVy LCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKaG9zdGVkIGJ5IFRo ZSBMaW51eCBGb3VuZGF0aW9uCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753438AbbFVOzj (ORCPT ); Mon, 22 Jun 2015 10:55:39 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:36079 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753085AbbFVOyk (ORCPT ); Mon, 22 Jun 2015 10:54:40 -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 3/3] drm/msm: mdp4 lvds: get panel node via of graph parsing Date: Mon, 22 Jun 2015 20:24:21 +0530 Message-Id: <1434984861-22948-4-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 We currently get the output connected to LVDS by looking for a phandle called 'qcom,lvds-panel' under the mdp DT node. Use the more standard of_graph approach to create an lvds output port, and retrieve the panel node from the port's endpoint data. Signed-off-by: Archit Taneja --- drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c | 32 +++++++++++++++++++++++--------- drivers/gpu/drm/msm/msm_drv.h | 1 + 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c index 531e4ac..cf72eda 100644 --- a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c +++ b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c @@ -241,22 +241,36 @@ int mdp4_enable(struct mdp4_kms *mdp4_kms) } #ifdef CONFIG_OF -static struct drm_panel *detect_panel(struct drm_device *dev, const char *name) +static struct drm_panel *detect_panel(struct drm_device *dev) { - struct device_node *n; + struct device_node *endpoint, *panel_node; + struct device_node *np = dev->dev->of_node; struct drm_panel *panel = NULL; - n = of_parse_phandle(dev->dev->of_node, name, 0); - if (n) { - panel = of_drm_find_panel(n); - if (!panel) - panel = ERR_PTR(-EPROBE_DEFER); + endpoint = of_graph_get_next_endpoint(np, NULL); + if (IS_ERR(endpoint)) { + dev_err(dev->dev, "no valid endpoint\n"); + return ERR_CAST(endpoint); } + of_node_put(endpoint); + + panel_node = of_graph_get_remote_port_parent(endpoint); + if (IS_ERR(panel_node)) { + dev_err(dev->dev, "no valid panel node\n"); + return ERR_CAST(panel_node); + } + + of_node_put(panel_node); + + panel = of_drm_find_panel(panel_node); + if (IS_ERR(panel)) + panel = ERR_PTR(-EPROBE_DEFER); + return panel; } #else -static struct drm_panel *detect_panel(struct drm_device *dev, const char *name) +static struct drm_panel *detect_panel(struct drm_device *dev) { // ??? maybe use a module param to specify which panel is attached? } @@ -294,7 +308,7 @@ static int modeset_init(struct mdp4_kms *mdp4_kms) * Setup the LCDC/LVDS path: RGB2 -> DMA_P -> LCDC -> LVDS: */ - panel = detect_panel(dev, "qcom,lvds-panel"); + panel = detect_panel(dev); if (IS_ERR(panel)) { ret = PTR_ERR(panel); dev_err(dev->dev, "failed to detect LVDS panel: %d\n", ret); diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index e7c5ea1..0cbeb1d 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -30,6 +30,7 @@ #include #include #include +#include #include #ifndef CONFIG_OF -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in Please read the FAQ at http://www.tux.org/lkml/