From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [RFC v2 2/5] drm/dsi: Try to match non-DT dsi devices Date: Tue, 6 Oct 2015 14:54:39 +0530 Message-ID: <1444123482-25579-3-git-send-email-architt@codeaurora.org> References: <1435641851-27295-1-git-send-email-architt@codeaurora.org> <1444123482-25579-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: <1444123482-25579-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 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 d2UgY29tcGFyZSB0aGUgZGV2aWNlIGFuZCBkcml2ZXIgbmFtZXMuIE1hdGNoaW5nIGJ5IGNvbXBh cmluZyBkcml2ZXIgYW5kCmRldmljZSBuYW1lcyBpc24ndCB0aGUgYmVzdCB0aGluZyB0byBkby4g SSdkIGFwcHJlY2lhdGUgc29tZSBzdWdnZXN0aW9ucwpoZXJlLgoKT3RoZXIgYnVzZXMgKGxpa2Ug aTJjL3NwaSkgcGVyZm9ybSBhIG5vbi1EVCBtYXRjaCBieSBjb21wYXJpbmcgdGhlCmRldmljZSBu YW1lIGFuZCBlbnRyaWVzIGluIHRoZSBkcml2ZXIncyBpZF90YWJsZS4gVGhlIGlkX3RhYmxlIHN0 cnVjdHMKZm9yIGRpZmZlcmVudCBidXNlcyBhcmUgZGVmaW5lZCBpbiAiaW5jbHVkZS9saW51eC9t b2RfZGV2aWNldGFibGUuaCIsIEkKZGlkbid0IHdhbnQgdG8gdG91Y2ggdGhhdCBmb3Igbm93LgoK U2lnbmVkLW9mZi1ieTogQXJjaGl0IFRhbmVqYSA8YXJjaGl0dEBjb2RlYXVyb3JhLm9yZz4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vZHJtX21pcGlfZHNpLmMgfCAyOSArKysrKysrKysrKysrKysrKysr KysrKysrKysrLQogaW5jbHVkZS9kcm0vZHJtX21pcGlfZHNpLmggICAgIHwgIDggKysrKysrKysK IDIgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbWlwaV9kc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fbWlwaV9kc2kuYwppbmRleCAyNDVlY2ZlLi40NmVlNTE1IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vZHJtX21pcGlfZHNpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9taXBpX2Rz aS5jCkBAIC00NSw5ICs0NSwzMCBAQAogICogc3Vic2V0IG9mIHRoZSBNSVBJIERDUyBjb21tYW5k IHNldC4KICAqLwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIG1pcGlfZHNpX2Rl dmljZV90eXBlOworCiBzdGF0aWMgaW50IG1pcGlfZHNpX2RldmljZV9tYXRjaChzdHJ1Y3QgZGV2 aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpCiB7Ci0JcmV0dXJuIG9mX2RyaXZl cl9tYXRjaF9kZXZpY2UoZGV2LCBkcnYpOworCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaTsK KworCWlmIChkZXYtPnR5cGUgPT0gJm1pcGlfZHNpX2RldmljZV90eXBlKQorCQlkc2kgPSB0b19t aXBpX2RzaV9kZXZpY2UoZGV2KTsKKwllbHNlCisJCXJldHVybiAwOworCisJLyogQXR0ZW1wdCBP RiBzdHlsZSBtYXRjaCAqLworCWlmIChvZl9kcml2ZXJfbWF0Y2hfZGV2aWNlKGRldiwgZHJ2KSkK KwkJcmV0dXJuIDE7CisKKwkvKgorCSAqIFRyeSB0byBjb21wYXJlIGRzaSBkZXZpY2UgYW5kIGRy aXZlciBuYW1lcy4gSWYgdGhpcyBtYXRjaGluZyBhcHByb2FjaAorCSAqIGlzbid0IHN0cm9uZywg d2UnZCBwcm9iYWJseSB3YW50IHRoZSBkc2kgZHJpdmVycyB0byBwb3B1bGF0ZSB0aGUKKwkgKiBp ZF90YWJsZSBmaWVsZCBhbmQgdXNlIHRoYXQgaW5zdGVhZAorCSAqLworCWlmICghc3RyY21wKGRz aS0+bmFtZSwgZHJ2LT5uYW1lKSkKKwkJcmV0dXJuIDE7CisKKwlyZXR1cm4gMDsKIH0KIAogc3Rh dGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIG1pcGlfZHNpX2RldmljZV9wbV9vcHMgPSB7CkBA IC0xMjUsNiArMTQ2LDcgQEAgc3RydWN0IG1pcGlfZHNpX2RldmljZSAqbWlwaV9kc2lfZGV2aWNl X25ldyhzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKIAlkc2ktPmRldi50eXBlID0gJm1pcGlf ZHNpX2RldmljZV90eXBlOwogCWRzaS0+ZGV2Lm9mX25vZGUgPSBpbmZvLT5ub2RlOwogCWRzaS0+ Y2hhbm5lbCA9IGluZm8tPnJlZzsKKwlzdHJsY3B5KGRzaS0+bmFtZSwgaW5mby0+bmFtZSwgc2l6 ZW9mKGRzaS0+bmFtZSkpOwogCiAJZGV2X3NldF9uYW1lKCZkc2ktPmRldiwgIiVzLiVkIiwgZGV2 X25hbWUoaG9zdC0+ZGV2KSwgaW5mby0+cmVnKTsKIApAQCAtMTQ3LDYgKzE2OSwxMSBAQCBvZl9t aXBpX2RzaV9kZXZpY2VfYWRkKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LCBzdHJ1Y3QgZGV2 aWNlX25vZGUgKm5vZGUpCiAJaW50IHJldDsKIAl1MzIgcmVnOwogCisJaWYgKG9mX21vZGFsaWFz X25vZGUobm9kZSwgaW5mby5uYW1lLCBzaXplb2YoaW5mby5uYW1lKSkgPCAwKSB7CisJCWRldl9l cnIoZGV2LCAibW9kYWxpYXMgZmFpbHVyZSBvbiAlc1xuIiwgbm9kZS0+ZnVsbF9uYW1lKTsKKwkJ cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisJfQorCiAJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91 MzIobm9kZSwgInJlZyIsICZyZWcpOwogCWlmIChyZXQpIHsKIAkJZGV2X2VycihkZXYsICJkZXZp Y2Ugbm9kZSAlcyBoYXMgbm8gdmFsaWQgcmVnIHByb3BlcnR5OiAlZFxuIiwKZGlmZiAtLWdpdCBh L2luY2x1ZGUvZHJtL2RybV9taXBpX2RzaS5oIGIvaW5jbHVkZS9kcm0vZHJtX21pcGlfZHNpLmgK aW5kZXggOTBmNGYzYy4uOTNkZWM3YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX21pcGlf ZHNpLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX21pcGlfZHNpLmgKQEAgLTEzOSw4ICsxMzksMTEg QEAgZW51bSBtaXBpX2RzaV9waXhlbF9mb3JtYXQgewogCU1JUElfRFNJX0ZNVF9SR0I1NjUsCiB9 OwogCisjZGVmaW5lIERTSV9ERVZfTkFNRV9TSVpFCQkyMAorCiAvKioKICAqIHN0cnVjdCBtaXBp X2RzaV9kZXZpY2VfaW5mbyAtIHRlbXBsYXRlIGZvciBjcmVhdGluZyBhIG1pcGlfZHNpX2Rldmlj ZQorICogQG5hbWU6IG5hbWUgb2YgdGhlIGRzaSBwZXJpcGhlcmFsCiAgKiBAcmVnOiBEU0kgdmly dHVhbCBjaGFubmVsIGFzc2lnbmVkIHRvIHBlcmlwaGVyYWwKICAqIEBub2RlOiBwb2ludGVyIHRv IE9GIGRldmljZSBub2RlCiAgKgpAQCAtMTQ4LDE0ICsxNTEsMTcgQEAgZW51bSBtaXBpX2RzaV9w aXhlbF9mb3JtYXQgewogICogRFNJIGRldmljZQogICovCiBzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNl X2luZm8geworCWNoYXIgbmFtZVtEU0lfREVWX05BTUVfU0laRV07CiAJdTMyIHJlZzsKIAlzdHJ1 Y3QgZGV2aWNlX25vZGUgKm5vZGU7CiB9OwogCisKIC8qKgogICogc3RydWN0IG1pcGlfZHNpX2Rl dmljZSAtIERTSSBwZXJpcGhlcmFsIGRldmljZQogICogQGhvc3Q6IERTSSBob3N0IGZvciB0aGlz IHBlcmlwaGVyYWwKICAqIEBkZXY6IGRyaXZlciBtb2RlbCBkZXZpY2Ugbm9kZSBmb3IgdGhpcyBw ZXJpcGhlcmFsCisgKiBAbmFtZTogbmFtZSBvZiB0aGUgZHNpIHBlcmlwaGVyYWwKICAqIEBjaGFu bmVsOiB2aXJ0dWFsIGNoYW5uZWwgYXNzaWduZWQgdG8gdGhlIHBlcmlwaGVyYWwKICAqIEBmb3Jt YXQ6IHBpeGVsIGZvcm1hdCBmb3IgdmlkZW8gbW9kZQogICogQGxhbmVzOiBudW1iZXIgb2YgYWN0 aXZlIGRhdGEgbGFuZXMKQEAgLTE2NSw2ICsxNzEsOCBAQCBzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNl IHsKIAlzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdDsKIAlzdHJ1Y3QgZGV2aWNlIGRldjsKIAor CWNoYXIgbmFtZVtEU0lfREVWX05BTUVfU0laRV07CisKIAl1bnNpZ25lZCBpbnQgY2hhbm5lbDsK IAl1bnNpZ25lZCBpbnQgbGFuZXM7CiAJZW51bSBtaXBpX2RzaV9waXhlbF9mb3JtYXQgZm9ybWF0 OwotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9m IHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKaG9zdGVkIGJ5IFRoZSBMaW51eCBGb3VuZGF0aW9uCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752840AbbJFJZD (ORCPT ); Tue, 6 Oct 2015 05:25:03 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:49399 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751973AbbJFJY5 (ORCPT ); Tue, 6 Oct 2015 05:24:57 -0400 From: Archit Taneja To: dri-devel@lists.freedesktop.org, a.hajda@samsung.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, jani.nikula@linux.intel.com, Archit Taneja Subject: [RFC v2 2/5] drm/dsi: Try to match non-DT dsi devices Date: Tue, 6 Oct 2015 14:54:39 +0530 Message-Id: <1444123482-25579-3-git-send-email-architt@codeaurora.org> X-Mailer: git-send-email 1.8.2.1 In-Reply-To: <1444123482-25579-1-git-send-email-architt@codeaurora.org> References: <1435641851-27295-1-git-send-email-architt@codeaurora.org> <1444123482-25579-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. Matching by comparing driver and device names isn't the best thing to do. I'd appreciate some suggestions here. Other buses (like i2c/spi) perform a non-DT match by comparing the device name and entries in the driver's id_table. The id_table structs for different buses are defined in "include/linux/mod_devicetable.h", I didn't want to touch that for now. Signed-off-by: Archit Taneja --- drivers/gpu/drm/drm_mipi_dsi.c | 29 ++++++++++++++++++++++++++++- include/drm/drm_mipi_dsi.h | 8 ++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c index 245ecfe..46ee515 100644 --- a/drivers/gpu/drm/drm_mipi_dsi.c +++ b/drivers/gpu/drm/drm_mipi_dsi.c @@ -45,9 +45,30 @@ * 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; + + /* + * Try to compare dsi device and driver names. If this matching approach + * isn't strong, we'd probably want the dsi drivers to populate the + * id_table field and use that instead + */ + if (!strcmp(dsi->name, drv->name)) + return 1; + + return 0; } static const struct dev_pm_ops mipi_dsi_device_pm_ops = { @@ -125,6 +146,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->name, sizeof(dsi->name)); dev_set_name(&dsi->dev, "%s.%d", dev_name(host->dev), info->reg); @@ -147,6 +169,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.name, sizeof(info.name)) < 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..93dec7b 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 + * @name: name of the dsi peripheral * @reg: DSI virtual channel assigned to peripheral * @node: pointer to OF device node * @@ -148,14 +151,17 @@ enum mipi_dsi_pixel_format { * DSI device */ struct mipi_dsi_device_info { + char name[DSI_DEV_NAME_SIZE]; u32 reg; struct device_node *node; }; + /** * struct mipi_dsi_device - DSI peripheral device * @host: DSI host for this peripheral * @dev: driver model device node for this peripheral + * @name: name of the dsi peripheral * @channel: virtual channel assigned to the peripheral * @format: pixel format for video mode * @lanes: number of active data lanes @@ -165,6 +171,8 @@ 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