From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH v5 3/5] drm/dsi: Try to match non-DT DSI devices Date: Fri, 12 Feb 2016 14:48:32 +0530 Message-ID: <1455268714-28755-4-git-send-email-architt@codeaurora.org> References: <1449751300-2841-1-git-send-email-architt@codeaurora.org> <1455268714-28755-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: <1455268714-28755-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, treding@nvidia.com Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, a.hajda@samsung.com List-Id: linux-arm-msm@vger.kernel.org QWRkIGEgZGV2aWNlIG5hbWUgZmllbGQgaW4gbWlwaV9kc2lfZGV2aWNlLiBUaGlzIG5hbWUgaXMg ZGlmZmVyZW50IGZyb20KdGhlIGFjdHVhbCBkZXYgbmFtZSAod2hpY2ggaXMgb2YgdGhlIGZvcm1h dCAiaG9zdG5hbWUucmVnIikuIFdoZW4gdGhlCmRldmljZSBpcyBjcmVhdGVkIHZpYSBEVCwgdGhp cyBuYW1lIGlzIHNldCB0byB0aGUgbW9kYWxpYXMgc3RyaW5nLgpJbiB0aGUgbm9uLURUIGNhc2Us IHRoZSBkcml2ZXIgY3JlYXRpbmcgdGhlIERTSSBkZXZpY2UgcHJvdmlkZXMgdGhlCm5hbWUgYnkg cG9wdWxhdGluZyBhIGZpbGVkIGluIG1pcGlfZHNpX2RldmljZV9pbmZvLgoKTWF0Y2hpbmcgZm9y IERUIGNhc2Ugd291bGQgYmUgYXMgaXQgd2FzIGJlZm9yZS4gRm9yIHRoZSBub24tRFQgY2FzZSwK d2UgY29tcGFyZSB0aGUgZGV2aWNlIGFuZCBkcml2ZXIgbmFtZXMuIE90aGVyIGJ1c2VzIChsaWtl IEkyQy9TUEkpCnBlcmZvcm0gYSBub24tRFQgbWF0Y2ggYnkgY29tcGFyaW5nIHRoZSBkZXZpY2Ug bmFtZSBhbmQgZW50cmllcyBpbiB0aGUKZHJpdmVyJ3MgaWRfdGFibGUuIFN1Y2ggYSBtZWNoYW5p c20gaXNuJ3QgdXNlZCBmb3IgdGhlIERTSSBidXMuCgpSZXZpZXdlZC1ieTogQW5kcnplaiBIYWpk YSA8YS5oYWpkYUBzYW1zdW5nLmNvbT4KU2lnbmVkLW9mZi1ieTogQXJjaGl0IFRhbmVqYSA8YXJj aGl0dEBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX21pcGlfZHNpLmMg fCAxOCArKysrKysrKysrKysrKysrKy0KIGluY2x1ZGUvZHJtL2RybV9taXBpX2RzaS5oICAgICB8 IDEwICsrKysrKysrLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgMyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21pcGlfZHNpLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX21pcGlfZHNpLmMKaW5kZXggNWQ3MjQzZC4uNDJhN2FhYyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9taXBpX2RzaS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fbWlwaV9kc2kuYwpAQCAtNDcsNyArNDcsMTcgQEAKIAogc3RhdGljIGludCBtaXBp X2RzaV9kZXZpY2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2RyaXZl ciAqZHJ2KQogewotCXJldHVybiBvZl9kcml2ZXJfbWF0Y2hfZGV2aWNlKGRldiwgZHJ2KTsKKwlz dHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kgPSB0b19taXBpX2RzaV9kZXZpY2UoZGV2KTsKKwor CS8qIGF0dGVtcHQgT0Ygc3R5bGUgbWF0Y2ggKi8KKwlpZiAob2ZfZHJpdmVyX21hdGNoX2Rldmlj ZShkZXYsIGRydikpCisJCXJldHVybiAxOworCisJLyogY29tcGFyZSBEU0kgZGV2aWNlIGFuZCBk cml2ZXIgbmFtZXMgKi8KKwlpZiAoIXN0cmNtcChkc2ktPm5hbWUsIGRydi0+bmFtZSkpCisJCXJl dHVybiAxOworCisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29w cyBtaXBpX2RzaV9kZXZpY2VfcG1fb3BzID0gewpAQCAtMTM4LDYgKzE0OCwxMSBAQCBvZl9taXBp X2RzaV9kZXZpY2VfYWRkKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LCBzdHJ1Y3QgZGV2aWNl X25vZGUgKm5vZGUpCiAJaW50IHJldDsKIAl1MzIgcmVnOwogCisJaWYgKG9mX21vZGFsaWFzX25v ZGUobm9kZSwgaW5mby50eXBlLCBzaXplb2YoaW5mby50eXBlKSkgPCAwKSB7CisJCWRldl9lcnIo ZGV2LCAibW9kYWxpYXMgZmFpbHVyZSBvbiAlc1xuIiwgbm9kZS0+ZnVsbF9uYW1lKTsKKwkJcmV0 dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisJfQorCiAJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIo bm9kZSwgInJlZyIsICZyZWcpOwogCWlmIChyZXQpIHsKIAkJZGV2X2VycihkZXYsICJkZXZpY2Ug bm9kZSAlcyBoYXMgbm8gdmFsaWQgcmVnIHByb3BlcnR5OiAlZFxuIiwKQEAgLTE5Nyw2ICsyMTIs NyBAQCBtaXBpX2RzaV9kZXZpY2VfcmVnaXN0ZXJfZnVsbChzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAq aG9zdCwKIAogCWRzaS0+ZGV2Lm9mX25vZGUgPSBpbmZvLT5ub2RlOwogCWRzaS0+Y2hhbm5lbCA9 IGluZm8tPmNoYW5uZWw7CisJc3RybGNweShkc2ktPm5hbWUsIGluZm8tPnR5cGUsIHNpemVvZihk c2ktPm5hbWUpKTsKIAogCXJldCA9IG1pcGlfZHNpX2RldmljZV9hZGQoZHNpKTsKIAlpZiAocmV0 KSB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fbWlwaV9kc2kuaCBiL2luY2x1ZGUvZHJt L2RybV9taXBpX2RzaS5oCmluZGV4IGNlNWVhZTQzLi5hOTE0MTE2IDEwMDY0NAotLS0gYS9pbmNs dWRlL2RybS9kcm1fbWlwaV9kc2kuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fbWlwaV9kc2kuaApA QCAtMTM5LDE1ICsxMzksMTkgQEAgZW51bSBtaXBpX2RzaV9waXhlbF9mb3JtYXQgewogCU1JUElf RFNJX0ZNVF9SR0I1NjUsCiB9OwogCi0gLyoqCisjZGVmaW5lIERTSV9ERVZfTkFNRV9TSVpFCQky MAorCisvKioKICAqIHN0cnVjdCBtaXBpX2RzaV9kZXZpY2VfaW5mbyAtIHRlbXBsYXRlIGZvciBj cmVhdGluZyBhIG1pcGlfZHNpX2RldmljZQorICogQHR5cGU6IERTSSBwZXJpcGhlcmFsIGNoaXAg dHlwZQogICogQGNoYW5uZWw6IERTSSB2aXJ0dWFsIGNoYW5uZWwgYXNzaWduZWQgdG8gcGVyaXBo ZXJhbAotICogQG5vZGU6IHBvaW50ZXIgdG8gT0YgZGV2aWNlIG5vZGUKKyAqIEBub2RlOiBwb2lu dGVyIHRvIE9GIGRldmljZSBub2RlIG9yIE5VTEwKICAqCiAgKiBUaGlzIGlzIHBvcHVsYXRlZCBh bmQgcGFzc2VkIHRvIG1pcGlfZHNpX2RldmljZV9uZXcgdG8gY3JlYXRlIGEgbmV3CiAgKiBEU0kg ZGV2aWNlCiAgKi8KIHN0cnVjdCBtaXBpX2RzaV9kZXZpY2VfaW5mbyB7CisJY2hhciB0eXBlW0RT SV9ERVZfTkFNRV9TSVpFXTsKIAl1MzIgY2hhbm5lbDsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5v ZGU7CiB9OwpAQCAtMTU2LDYgKzE2MCw3IEBAIHN0cnVjdCBtaXBpX2RzaV9kZXZpY2VfaW5mbyB7 CiAgKiBzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlIC0gRFNJIHBlcmlwaGVyYWwgZGV2aWNlCiAgKiBA aG9zdDogRFNJIGhvc3QgZm9yIHRoaXMgcGVyaXBoZXJhbAogICogQGRldjogZHJpdmVyIG1vZGVs IGRldmljZSBub2RlIGZvciB0aGlzIHBlcmlwaGVyYWwKKyAqIEBuYW1lOiBEU0kgcGVyaXBoZXJh bCBjaGlwIHR5cGUKICAqIEBjaGFubmVsOiB2aXJ0dWFsIGNoYW5uZWwgYXNzaWduZWQgdG8gdGhl IHBlcmlwaGVyYWwKICAqIEBmb3JtYXQ6IHBpeGVsIGZvcm1hdCBmb3IgdmlkZW8gbW9kZQogICog QGxhbmVzOiBudW1iZXIgb2YgYWN0aXZlIGRhdGEgbGFuZXMKQEAgLTE2NSw2ICsxNzAsNyBAQCBz dHJ1Y3QgbWlwaV9kc2lfZGV2aWNlIHsKIAlzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdDsKIAlz dHJ1Y3QgZGV2aWNlIGRldjsKIAorCWNoYXIgbmFtZVtEU0lfREVWX05BTUVfU0laRV07CiAJdW5z aWduZWQgaW50IGNoYW5uZWw7CiAJdW5zaWduZWQgaW50IGxhbmVzOwogCWVudW0gbWlwaV9kc2lf cGl4ZWxfZm9ybWF0IGZvcm1hdDsKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwg SW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmhvc3RlZCBieSBUaGUg TGludXggRm91bmRhdGlvbgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751660AbcBLJTA (ORCPT ); Fri, 12 Feb 2016 04:19:00 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:58333 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751586AbcBLJSy (ORCPT ); Fri, 12 Feb 2016 04:18:54 -0500 From: Archit Taneja To: dri-devel@lists.freedesktop.org, treding@nvidia.com Cc: linux-kernel@vger.kernel.org, a.hajda@samsung.com, airlied@linux.ie, daniel@ffwll.ch, l.stach@pengutronix.de, robh@kernel.org, linux-arm-msm@vger.kernel.org, jani.nikula@linux.intel.com, Archit Taneja Subject: [PATCH v5 3/5] drm/dsi: Try to match non-DT DSI devices Date: Fri, 12 Feb 2016 14:48:32 +0530 Message-Id: <1455268714-28755-4-git-send-email-architt@codeaurora.org> X-Mailer: git-send-email 1.8.2.1 In-Reply-To: <1455268714-28755-1-git-send-email-architt@codeaurora.org> References: <1449751300-2841-1-git-send-email-architt@codeaurora.org> <1455268714-28755-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 | 18 +++++++++++++++++- include/drm/drm_mipi_dsi.h | 10 ++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c index 5d7243d..42a7aac 100644 --- a/drivers/gpu/drm/drm_mipi_dsi.c +++ b/drivers/gpu/drm/drm_mipi_dsi.c @@ -47,7 +47,17 @@ 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 = to_mipi_dsi_device(dev); + + /* 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 = { @@ -138,6 +148,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", @@ -197,6 +212,7 @@ mipi_dsi_device_register_full(struct mipi_dsi_host *host, dsi->dev.of_node = info->node; dsi->channel = info->channel; + strlcpy(dsi->name, info->type, sizeof(dsi->name)); ret = mipi_dsi_device_add(dsi); if (ret) { diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h index ce5eae43..a914116 100644 --- a/include/drm/drm_mipi_dsi.h +++ b/include/drm/drm_mipi_dsi.h @@ -139,15 +139,19 @@ 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 * @channel: DSI virtual channel assigned to peripheral - * @node: pointer to OF device node + * @node: pointer to OF device node or NULL * * This is populated and passed to mipi_dsi_device_new to create a new * DSI device */ struct mipi_dsi_device_info { + char type[DSI_DEV_NAME_SIZE]; u32 channel; 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