From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH v4 3/6] drm/dsi: Try to match non-DT dsi devices Date: Thu, 10 Dec 2015 18:11:37 +0530 Message-ID: <1449751300-2841-4-git-send-email-architt@codeaurora.org> References: <1448884892-7731-1-git-send-email-architt@codeaurora.org> <1449751300-2841-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: <1449751300-2841-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, a.hajda@samsung.com, jani.nikula@linux.intel.com Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, treding@nvidia.com List-Id: linux-arm-msm@vger.kernel.org QWRkIGEgZGV2aWNlIG5hbWUgZmllbGQgaW4gbWlwaV9kc2lfZGV2aWNlLiBUaGlzIG5hbWUgaXMg ZGlmZmVyZW50IGZyb20KdGhlIGFjdHVhbCBkZXYgbmFtZSAod2hpY2ggaXMgb2YgdGhlIGZvcm1h dCAiaG9zdG5hbWUucmVnIikuIFdoZW4gdGhlCmRldmljZSBpcyBjcmVhdGVkIHZpYSBEVCwgdGhp cyBuYW1lIGlzIHNldCB0byB0aGUgbW9kYWxpYXMgc3RyaW5nLgpJbiB0aGUgbm9uLURUIGNhc2Us IHRoZSBkcml2ZXIgY3JlYXRpbmcgdGhlIERTSSBkZXZpY2UgcHJvdmlkZXMgdGhlCm5hbWUgYnkg cG9wdWxhdGluZyBhIGZpbGVkIGluIG1pcGlfZHNpX2RldmljZV9pbmZvLgoKTWF0Y2hpbmcgZm9y IERUIGNhc2Ugd291bGQgYmUgYXMgaXQgd2FzIGJlZm9yZS4gRm9yIHRoZSBub24tRFQgY2FzZSwK d2UgY29tcGFyZSB0aGUgZGV2aWNlIGFuZCBkcml2ZXIgbmFtZXMuIE90aGVyIGJ1c2VzIChsaWtl IGkyYy9zcGkpCnBlcmZvcm0gYSBub24tRFQgbWF0Y2ggYnkgY29tcGFyaW5nIHRoZSBkZXZpY2Ug bmFtZSBhbmQgZW50cmllcyBpbiB0aGUKZHJpdmVyJ3MgaWRfdGFibGUuIFN1Y2ggYSBtZWNoYW5p c20gaXNuJ3QgdXNlZCBmb3IgdGhlIGRzaSBidXMuCgpSZXZpZXdlZC1ieTogQW5kcnplaiBIYWpk YSA8YS5oYWpkYUBzYW1zdW5nLmNvbT4KU2lnbmVkLW9mZi1ieTogQXJjaGl0IFRhbmVqYSA8YXJj aGl0dEBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX21pcGlfZHNpLmMg fCAyNSArKysrKysrKysrKysrKysrKysrKysrKystCiBpbmNsdWRlL2RybS9kcm1fbWlwaV9kc2ku aCAgICAgfCAgNiArKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbWlwaV9kc2kuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fbWlwaV9kc2kuYwppbmRleCA5NDM0NTg1Li41YTQ2ODAyIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21pcGlfZHNpLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9taXBpX2RzaS5jCkBAIC00NSw5ICs0NSwyNiBAQAogICogc3Vic2V0IG9mIHRo ZSBNSVBJIERDUyBjb21tYW5kIHNldC4KICAqLwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGRldmlj ZV90eXBlIG1pcGlfZHNpX2RldmljZV90eXBlOworCiBzdGF0aWMgaW50IG1pcGlfZHNpX2Rldmlj ZV9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpCiB7 Ci0JcmV0dXJuIG9mX2RyaXZlcl9tYXRjaF9kZXZpY2UoZGV2LCBkcnYpOworCXN0cnVjdCBtaXBp X2RzaV9kZXZpY2UgKmRzaTsKKworCWlmIChkZXYtPnR5cGUgPT0gJm1pcGlfZHNpX2RldmljZV90 eXBlKQorCQlkc2kgPSB0b19taXBpX2RzaV9kZXZpY2UoZGV2KTsKKwllbHNlCisJCXJldHVybiAw OworCisJLyogYXR0ZW1wdCBPRiBzdHlsZSBtYXRjaCAqLworCWlmIChvZl9kcml2ZXJfbWF0Y2hf ZGV2aWNlKGRldiwgZHJ2KSkKKwkJcmV0dXJuIDE7CisKKwkvKiBjb21wYXJlIGRzaSBkZXZpY2Ug YW5kIGRyaXZlciBuYW1lcyAqLworCWlmICghc3RyY21wKGRzaS0+bmFtZSwgZHJ2LT5uYW1lKSkK KwkJcmV0dXJuIDE7CisKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZf cG1fb3BzIG1pcGlfZHNpX2RldmljZV9wbV9vcHMgPSB7CkBAIC0xMjUsNiArMTQyLDcgQEAgc3Ry dWN0IG1pcGlfZHNpX2RldmljZSAqbWlwaV9kc2lfZGV2aWNlX25ldyhzdHJ1Y3QgbWlwaV9kc2lf aG9zdCAqaG9zdCwKIAlkc2ktPmRldi50eXBlID0gJm1pcGlfZHNpX2RldmljZV90eXBlOwogCWRz aS0+ZGV2Lm9mX25vZGUgPSBpbmZvLT5ub2RlOwogCWRzaS0+Y2hhbm5lbCA9IGluZm8tPnJlZzsK KwlzdHJsY3B5KGRzaS0+bmFtZSwgaW5mby0+dHlwZSwgc2l6ZW9mKGRzaS0+bmFtZSkpOwogCiAJ ZGV2X3NldF9uYW1lKCZkc2ktPmRldiwgIiVzLiVkIiwgZGV2X25hbWUoaG9zdC0+ZGV2KSwgaW5m by0+cmVnKTsKIApAQCAtMTQ4LDYgKzE2NiwxMSBAQCBvZl9taXBpX2RzaV9kZXZpY2VfYWRkKHN0 cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpCiAJaW50 IHJldDsKIAl1MzIgcmVnOwogCisJaWYgKG9mX21vZGFsaWFzX25vZGUobm9kZSwgaW5mby50eXBl LCBzaXplb2YoaW5mby50eXBlKSkgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAibW9kYWxpYXMgZmFp bHVyZSBvbiAlc1xuIiwgbm9kZS0+ZnVsbF9uYW1lKTsKKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZB TCk7CisJfQorCiAJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgInJlZyIsICZyZWcp OwogCWlmIChyZXQpIHsKIAkJZGV2X2VycihkZXYsICJkZXZpY2Ugbm9kZSAlcyBoYXMgbm8gdmFs aWQgcmVnIHByb3BlcnR5OiAlZFxuIiwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9taXBp X2RzaS5oIGIvaW5jbHVkZS9kcm0vZHJtX21pcGlfZHNpLmgKaW5kZXggOTBmNGYzYy4uY2IwODRh ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX21pcGlfZHNpLmgKKysrIGIvaW5jbHVkZS9k cm0vZHJtX21pcGlfZHNpLmgKQEAgLTEzOSw4ICsxMzksMTEgQEAgZW51bSBtaXBpX2RzaV9waXhl bF9mb3JtYXQgewogCU1JUElfRFNJX0ZNVF9SR0I1NjUsCiB9OwogCisjZGVmaW5lIERTSV9ERVZf TkFNRV9TSVpFCQkyMAorCiAvKioKICAqIHN0cnVjdCBtaXBpX2RzaV9kZXZpY2VfaW5mbyAtIHRl bXBsYXRlIGZvciBjcmVhdGluZyBhIG1pcGlfZHNpX2RldmljZQorICogQHR5cGU6IGRzaSBwZXJp cGhlcmFsIGNoaXAgdHlwZQogICogQHJlZzogRFNJIHZpcnR1YWwgY2hhbm5lbCBhc3NpZ25lZCB0 byBwZXJpcGhlcmFsCiAgKiBAbm9kZTogcG9pbnRlciB0byBPRiBkZXZpY2Ugbm9kZQogICoKQEAg LTE0OCw2ICsxNTEsNyBAQCBlbnVtIG1pcGlfZHNpX3BpeGVsX2Zvcm1hdCB7CiAgKiBEU0kgZGV2 aWNlCiAgKi8KIHN0cnVjdCBtaXBpX2RzaV9kZXZpY2VfaW5mbyB7CisJY2hhciB0eXBlW0RTSV9E RVZfTkFNRV9TSVpFXTsKIAl1MzIgcmVnOwogCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZTsKIH07 CkBAIC0xNTYsNiArMTYwLDcgQEAgc3RydWN0IG1pcGlfZHNpX2RldmljZV9pbmZvIHsKICAqIHN0 cnVjdCBtaXBpX2RzaV9kZXZpY2UgLSBEU0kgcGVyaXBoZXJhbCBkZXZpY2UKICAqIEBob3N0OiBE U0kgaG9zdCBmb3IgdGhpcyBwZXJpcGhlcmFsCiAgKiBAZGV2OiBkcml2ZXIgbW9kZWwgZGV2aWNl IG5vZGUgZm9yIHRoaXMgcGVyaXBoZXJhbAorICogQG5hbWU6IGRzaSBwZXJpcGhlcmFsIGNoaXAg dHlwZQogICogQGNoYW5uZWw6IHZpcnR1YWwgY2hhbm5lbCBhc3NpZ25lZCB0byB0aGUgcGVyaXBo ZXJhbAogICogQGZvcm1hdDogcGl4ZWwgZm9ybWF0IGZvciB2aWRlbyBtb2RlCiAgKiBAbGFuZXM6 IG51bWJlciBvZiBhY3RpdmUgZGF0YSBsYW5lcwpAQCAtMTY1LDYgKzE3MCw3IEBAIHN0cnVjdCBt aXBpX2RzaV9kZXZpY2UgewogCXN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0OwogCXN0cnVjdCBk ZXZpY2UgZGV2OwogCisJY2hhciBuYW1lW0RTSV9ERVZfTkFNRV9TSVpFXTsKIAl1bnNpZ25lZCBp bnQgY2hhbm5lbDsKIAl1bnNpZ25lZCBpbnQgbGFuZXM7CiAJZW51bSBtaXBpX2RzaV9waXhlbF9m b3JtYXQgZm9ybWF0OwotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlz IGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKaG9zdGVkIGJ5IFRoZSBMaW51eCBG b3VuZGF0aW9uCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754092AbbLJMmG (ORCPT ); Thu, 10 Dec 2015 07:42:06 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:36510 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753286AbbLJMmB (ORCPT ); Thu, 10 Dec 2015 07:42:01 -0500 From: Archit Taneja To: dri-devel@lists.freedesktop.org, a.hajda@samsung.com, jani.nikula@linux.intel.com Cc: linux-kernel@vger.kernel.org, airlied@linux.ie, daniel@ffwll.ch, treding@nvidia.com, l.stach@pengutronix.de, robh@kernel.org, linux-arm-msm@vger.kernel.org, Archit Taneja Subject: [PATCH v4 3/6] drm/dsi: Try to match non-DT dsi devices Date: Thu, 10 Dec 2015 18:11:37 +0530 Message-Id: <1449751300-2841-4-git-send-email-architt@codeaurora.org> X-Mailer: git-send-email 1.8.2.1 In-Reply-To: <1449751300-2841-1-git-send-email-architt@codeaurora.org> References: <1448884892-7731-1-git-send-email-architt@codeaurora.org> <1449751300-2841-1-git-send-email-architt@codeaurora.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add a device name field in mipi_dsi_device. This name is different from the actual dev name (which is of the format "hostname.reg"). When the device is created via DT, this name is set to the modalias string. In the non-DT case, the driver creating the DSI device provides the name by populating a filed in mipi_dsi_device_info. Matching for DT case would be as it was before. For the non-DT case, we compare the device and driver names. Other buses (like i2c/spi) perform a non-DT match by comparing the device name and entries in the driver's id_table. Such a mechanism isn't used for the dsi bus. Reviewed-by: Andrzej Hajda Signed-off-by: Archit Taneja --- drivers/gpu/drm/drm_mipi_dsi.c | 25 ++++++++++++++++++++++++- include/drm/drm_mipi_dsi.h | 6 ++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c index 9434585..5a46802 100644 --- a/drivers/gpu/drm/drm_mipi_dsi.c +++ b/drivers/gpu/drm/drm_mipi_dsi.c @@ -45,9 +45,26 @@ * subset of the MIPI DCS command set. */ +static const struct device_type mipi_dsi_device_type; + static int mipi_dsi_device_match(struct device *dev, struct device_driver *drv) { - return of_driver_match_device(dev, drv); + struct mipi_dsi_device *dsi; + + if (dev->type == &mipi_dsi_device_type) + dsi = to_mipi_dsi_device(dev); + else + return 0; + + /* attempt OF style match */ + if (of_driver_match_device(dev, drv)) + return 1; + + /* compare dsi device and driver names */ + if (!strcmp(dsi->name, drv->name)) + return 1; + + return 0; } static const struct dev_pm_ops mipi_dsi_device_pm_ops = { @@ -125,6 +142,7 @@ struct mipi_dsi_device *mipi_dsi_device_new(struct mipi_dsi_host *host, dsi->dev.type = &mipi_dsi_device_type; dsi->dev.of_node = info->node; dsi->channel = info->reg; + strlcpy(dsi->name, info->type, sizeof(dsi->name)); dev_set_name(&dsi->dev, "%s.%d", dev_name(host->dev), info->reg); @@ -148,6 +166,11 @@ of_mipi_dsi_device_add(struct mipi_dsi_host *host, struct device_node *node) int ret; u32 reg; + if (of_modalias_node(node, info.type, sizeof(info.type)) < 0) { + dev_err(dev, "modalias failure on %s\n", node->full_name); + return ERR_PTR(-EINVAL); + } + ret = of_property_read_u32(node, "reg", ®); if (ret) { dev_err(dev, "device node %s has no valid reg property: %d\n", diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h index 90f4f3c..cb084af 100644 --- a/include/drm/drm_mipi_dsi.h +++ b/include/drm/drm_mipi_dsi.h @@ -139,8 +139,11 @@ enum mipi_dsi_pixel_format { MIPI_DSI_FMT_RGB565, }; +#define DSI_DEV_NAME_SIZE 20 + /** * struct mipi_dsi_device_info - template for creating a mipi_dsi_device + * @type: dsi peripheral chip type * @reg: DSI virtual channel assigned to peripheral * @node: pointer to OF device node * @@ -148,6 +151,7 @@ enum mipi_dsi_pixel_format { * DSI device */ struct mipi_dsi_device_info { + char type[DSI_DEV_NAME_SIZE]; u32 reg; struct device_node *node; }; @@ -156,6 +160,7 @@ struct mipi_dsi_device_info { * struct mipi_dsi_device - DSI peripheral device * @host: DSI host for this peripheral * @dev: driver model device node for this peripheral + * @name: dsi peripheral chip type * @channel: virtual channel assigned to the peripheral * @format: pixel format for video mode * @lanes: number of active data lanes @@ -165,6 +170,7 @@ struct mipi_dsi_device { struct mipi_dsi_host *host; struct device dev; + char name[DSI_DEV_NAME_SIZE]; unsigned int channel; unsigned int lanes; enum mipi_dsi_pixel_format format; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation