From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Hajda Subject: Re: [RFC v2 5/5] drm/dsi: Get DSI host by DT device node Date: Mon, 02 Nov 2015 11:50:44 +0100 Message-ID: <56374004.6040501@samsung.com> References: <1435641851-27295-1-git-send-email-architt@codeaurora.org> <1444123482-25579-1-git-send-email-architt@codeaurora.org> <1444123482-25579-6-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-6-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: Archit Taneja , dri-devel@lists.freedesktop.org Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, treding@nvidia.com List-Id: linux-arm-msm@vger.kernel.org T24gMTAvMDYvMjAxNSAxMToyNCBBTSwgQXJjaGl0IFRhbmVqYSB3cm90ZToKPiBtaXBpX2RzaV9k ZXZpY2VzIGFyZSBpbmhlcmVudGx5IGF3YXJlIG9mIHRoZWlyIGhvc3QgYmVjYXVzZSB0aGV5Cj4g c2hhcmUgYSBwYXJlbnQtY2hpbGQgaGllcmFyY2h5IGluIHRoZSBkZXZpY2UgdHJlZS4KPgo+IE5v bi1kc2kgZHJpdmVycyB0aGF0IGNyZWF0ZSBhIGR1bW15IGRzaSBkZXZpY2UgZG9uJ3QgaGF2ZSB0 aGlzIGRhdGEuCj4gSW4gb3JkZXIgdG8gZ2V0IHRoaXMgaW5mb3JtYXRpb24sIHRoZXkgcmVxdWly ZSB0byBhIHBoYW5kbGUgdG8gdGhlIGRzaQo+IGhvc3QgaW4gdGhlIGRldmljZSB0cmVlLgo+Cj4g TWFpbnRhaW4gYSBsaXN0IG9mIGFsbCB0aGUgaG9zdHMgRFNJIHRoYXQgYXJlIGN1cnJlbnRseSBy ZWdpc3RlcmVkLgo+Cj4gVGhpcyBsaXN0IHdpbGwgYmUgdXNlZCB0byBmaW5kIHRoZSBtaXBpX2Rz aV9ob3N0IGNvcnJlc3BvbmRpbmcgdG8gdGhlCj4gZGV2aWNlX25vZGUgcGFzc2VkIGluIG9mX2Zp bmRfbWlwaV9kc2lfaG9zdF9ieV9ub2RlLgo+Cj4gU2lnbmVkLW9mZi1ieTogQXJjaGl0IFRhbmVq YSA8YXJjaGl0dEBjb2RlYXVyb3JhLm9yZz4KCkxvb2tzIE9LLCBiZXNpZGUgbGFjayBvZiBkb2N1 bWVudGF0aW9uLCBhZnRlciBmaXhpbmcgaXQgeW91IGNhbiBhZGQKUmV2aWV3ZWQtYnk6IEFuZHJ6 ZWogSGFqZGEgPGEuaGFqZGFAc2Ftc3VuZy5jb20+CgpSZWdhcmRzCkFuZHJ6ZWoKCj4gLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9kcm1fbWlwaV9kc2kuYyB8IDMwICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwo+ICBpbmNsdWRlL2RybS9kcm1fbWlwaV9kc2kuaCAgICAgfCAgMiArKwo+ICAy IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX21pcGlfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21pcGlfZHNpLmMK PiBpbmRleCBjYmI3MzczLi5jNTFkNzNlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fbWlwaV9kc2kuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbWlwaV9kc2kuYwo+IEBA IC0yMTYsNiArMjE2LDI4IEBAIG9mX21pcGlfZHNpX2RldmljZV9hZGQoc3RydWN0IG1pcGlfZHNp X2hvc3QgKmhvc3QsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSkKPiAgCXJldHVybiBtaXBpX2Rz aV9kZXZpY2VfbmV3KGhvc3QsICZpbmZvKTsKPiAgfQo+ICAKPiArc3RhdGljIERFRklORV9NVVRF WChob3N0X2xvY2spOwo+ICtzdGF0aWMgTElTVF9IRUFEKGhvc3RfbGlzdCk7Cj4gKwo+ICtzdHJ1 Y3QgbWlwaV9kc2lfaG9zdCAqb2ZfZmluZF9taXBpX2RzaV9ob3N0X2J5X25vZGUoc3RydWN0IGRl dmljZV9ub2RlICpub2RlKQo+ICt7Cj4gKwlzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdDsKPiAr Cj4gKwltdXRleF9sb2NrKCZob3N0X2xvY2spOwo+ICsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnko aG9zdCwgJmhvc3RfbGlzdCwgbGlzdCkgewo+ICsJCWlmIChob3N0LT5kZXYtPm9mX25vZGUgPT0g bm9kZSkgewo+ICsJCQltdXRleF91bmxvY2soJmhvc3RfbG9jayk7Cj4gKwkJCXJldHVybiBob3N0 Owo+ICsJCX0KPiArCX0KPiArCj4gKwltdXRleF91bmxvY2soJmhvc3RfbG9jayk7Cj4gKwo+ICsJ cmV0dXJuIE5VTEw7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChvZl9maW5kX21pcGlfZHNpX2hvc3Rf Ynlfbm9kZSk7Cj4gKwo+ICBpbnQgbWlwaV9kc2lfaG9zdF9yZWdpc3RlcihzdHJ1Y3QgbWlwaV9k c2lfaG9zdCAqaG9zdCkKPiAgewo+ICAJc3RydWN0IGRldmljZV9ub2RlICpub2RlOwo+IEBAIC0y MjcsNiArMjQ5LDEwIEBAIGludCBtaXBpX2RzaV9ob3N0X3JlZ2lzdGVyKHN0cnVjdCBtaXBpX2Rz aV9ob3N0ICpob3N0KQo+ICAJCW9mX21pcGlfZHNpX2RldmljZV9hZGQoaG9zdCwgbm9kZSk7Cj4g IAl9Cj4gIAo+ICsJbXV0ZXhfbG9jaygmaG9zdF9sb2NrKTsKPiArCWxpc3RfYWRkX3RhaWwoJmhv c3QtPmxpc3QsICZob3N0X2xpc3QpOwo+ICsJbXV0ZXhfdW5sb2NrKCZob3N0X2xvY2spOwo+ICsK PiAgCXJldHVybiAwOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0wobWlwaV9kc2lfaG9zdF9yZWdpc3Rl cik7Cj4gQEAgLTI0Myw2ICsyNjksMTAgQEAgc3RhdGljIGludCBtaXBpX2RzaV9yZW1vdmVfZGV2 aWNlX2ZuKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHJpdikKPiAgdm9pZCBtaXBpX2RzaV9o b3N0X3VucmVnaXN0ZXIoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QpCj4gIHsKPiAgCWRldmlj ZV9mb3JfZWFjaF9jaGlsZChob3N0LT5kZXYsIE5VTEwsIG1pcGlfZHNpX3JlbW92ZV9kZXZpY2Vf Zm4pOwo+ICsKPiArCW11dGV4X2xvY2soJmhvc3RfbG9jayk7Cj4gKwlsaXN0X2RlbF9pbml0KCZo b3N0LT5saXN0KTsKPiArCW11dGV4X3VubG9jaygmaG9zdF9sb2NrKTsKPiAgfQo+ICBFWFBPUlRf U1lNQk9MKG1pcGlfZHNpX2hvc3RfdW5yZWdpc3Rlcik7Cj4gIAo+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS9kcm1fbWlwaV9kc2kuaCBiL2luY2x1ZGUvZHJtL2RybV9taXBpX2RzaS5oCj4gaW5k ZXggNjhmNDlmNC4uMTVkMzA2OCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fbWlwaV9k c2kuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9taXBpX2RzaS5oCj4gQEAgLTEwMCwxMCArMTAw LDEyIEBAIHN0cnVjdCBtaXBpX2RzaV9ob3N0X29wcyB7Cj4gIHN0cnVjdCBtaXBpX2RzaV9ob3N0 IHsKPiAgCXN0cnVjdCBkZXZpY2UgKmRldjsKPiAgCWNvbnN0IHN0cnVjdCBtaXBpX2RzaV9ob3N0 X29wcyAqb3BzOwo+ICsJc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+ICB9Owo+ICAKPiAgaW50IG1p cGlfZHNpX2hvc3RfcmVnaXN0ZXIoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QpOwo+ICB2b2lk IG1pcGlfZHNpX2hvc3RfdW5yZWdpc3RlcihzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCk7Cj4g K3N0cnVjdCBtaXBpX2RzaV9ob3N0ICpvZl9maW5kX21pcGlfZHNpX2hvc3RfYnlfbm9kZShzdHJ1 Y3QgZGV2aWNlX25vZGUgKm5vZGUpOwo+ICAKPiAgLyogRFNJIG1vZGUgZmxhZ3MgKi8KPiAgCgpf 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 S1753494AbbKBKvA (ORCPT ); Mon, 2 Nov 2015 05:51:00 -0500 Received: from mailout2.w1.samsung.com ([210.118.77.12]:14910 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752144AbbKBKuz (ORCPT ); Mon, 2 Nov 2015 05:50:55 -0500 X-AuditID: cbfec7f4-f79c56d0000012ee-bd-5637400dbcc1 Subject: Re: [RFC v2 5/5] drm/dsi: Get DSI host by DT device node To: Archit Taneja , dri-devel@lists.freedesktop.org References: <1435641851-27295-1-git-send-email-architt@codeaurora.org> <1444123482-25579-1-git-send-email-architt@codeaurora.org> <1444123482-25579-6-git-send-email-architt@codeaurora.org> 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 From: Andrzej Hajda Message-id: <56374004.6040501@samsung.com> Date: Mon, 02 Nov 2015 11:50:44 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-version: 1.0 In-reply-to: <1444123482-25579-6-git-send-email-architt@codeaurora.org> Content-type: text/plain; charset=windows-1252 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFLMWRmVeSWpSXmKPExsVy+t/xa7q8DuZhBueXc1r0njvJZNHU8ZbV 4v+2icwWV76+Z7NYfnk9o8WDuTeZLCbuP8tucXnXHDaL/3t2sFvc/s3nwOVxua+XyWPvtwUs HptWdbJ5bP/2gNVj3slAj/vdx5k8epvfsXn0/zXw+LxJLoAzissmJTUnsyy1SN8ugStj74qa ghcSFce3fmduYNwv0sXIySEhYCLxo+sTK4QtJnHh3no2EFtIYCmjRMt7oS5GLiD7OaPEo+c3 WUASwgKOEls7V4IViQh4S8xZ3ccIUXSAUaJ15RNmEIcZxOmfvooRpIpNQFPi7+abYB28AloS s6//YgexWQRUJWZsng9WIyoQITFxQgMrRI2gxI/J98C2cQq4S9xYfBzI5gAaqidx/6IWSJhZ QF5i85q3zBMYBWYh6ZiFUDULSdUCRuZVjKKppckFxUnpuYZ6xYm5xaV56XrJ+bmbGCEx8mUH 4+JjVocYBTgYlXh4M9zNwoRYE8uKK3MPMUpwMCuJ8IZomYcJ8aYkVlalFuXHF5XmpBYfYpTm YFES5527632IkEB6YklqdmpqQWoRTJaJg1OqgTG0d2nilrOr+zY0X7rpu9Gc6U1FtdnDotKA o5NNfa/v/XrHizdXvuP/50gvX79c+/RNJpb+2cmLdnJfYa5kVH52xyPuhOQejhsP6lOmhaUL tcybWbXof36e7+QJF7rfmS+4k3pqWa+C4SOtmRNEJ87+rdBgd3JqwywB4+4bbNf9Duu8fHvf kkuJpTgj0VCLuag4EQB2Hrh9jQIAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/06/2015 11:24 AM, Archit Taneja wrote: > mipi_dsi_devices are inherently aware of their host because they > share a parent-child hierarchy in the device tree. > > Non-dsi drivers that create a dummy dsi device don't have this data. > In order to get this information, they require to a phandle to the dsi > host in the device tree. > > Maintain a list of all the hosts DSI that are currently registered. > > This list will be used to find the mipi_dsi_host corresponding to the > device_node passed in of_find_mipi_dsi_host_by_node. > > Signed-off-by: Archit Taneja Looks OK, beside lack of documentation, after fixing it you can add Reviewed-by: Andrzej Hajda Regards Andrzej > --- > drivers/gpu/drm/drm_mipi_dsi.c | 30 ++++++++++++++++++++++++++++++ > include/drm/drm_mipi_dsi.h | 2 ++ > 2 files changed, 32 insertions(+) > > diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c > index cbb7373..c51d73e 100644 > --- a/drivers/gpu/drm/drm_mipi_dsi.c > +++ b/drivers/gpu/drm/drm_mipi_dsi.c > @@ -216,6 +216,28 @@ of_mipi_dsi_device_add(struct mipi_dsi_host *host, struct device_node *node) > return mipi_dsi_device_new(host, &info); > } > > +static DEFINE_MUTEX(host_lock); > +static LIST_HEAD(host_list); > + > +struct mipi_dsi_host *of_find_mipi_dsi_host_by_node(struct device_node *node) > +{ > + struct mipi_dsi_host *host; > + > + mutex_lock(&host_lock); > + > + list_for_each_entry(host, &host_list, list) { > + if (host->dev->of_node == node) { > + mutex_unlock(&host_lock); > + return host; > + } > + } > + > + mutex_unlock(&host_lock); > + > + return NULL; > +} > +EXPORT_SYMBOL(of_find_mipi_dsi_host_by_node); > + > int mipi_dsi_host_register(struct mipi_dsi_host *host) > { > struct device_node *node; > @@ -227,6 +249,10 @@ int mipi_dsi_host_register(struct mipi_dsi_host *host) > of_mipi_dsi_device_add(host, node); > } > > + mutex_lock(&host_lock); > + list_add_tail(&host->list, &host_list); > + mutex_unlock(&host_lock); > + > return 0; > } > EXPORT_SYMBOL(mipi_dsi_host_register); > @@ -243,6 +269,10 @@ static int mipi_dsi_remove_device_fn(struct device *dev, void *priv) > void mipi_dsi_host_unregister(struct mipi_dsi_host *host) > { > device_for_each_child(host->dev, NULL, mipi_dsi_remove_device_fn); > + > + mutex_lock(&host_lock); > + list_del_init(&host->list); > + mutex_unlock(&host_lock); > } > EXPORT_SYMBOL(mipi_dsi_host_unregister); > > diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h > index 68f49f4..15d3068 100644 > --- a/include/drm/drm_mipi_dsi.h > +++ b/include/drm/drm_mipi_dsi.h > @@ -100,10 +100,12 @@ struct mipi_dsi_host_ops { > struct mipi_dsi_host { > struct device *dev; > const struct mipi_dsi_host_ops *ops; > + struct list_head list; > }; > > int mipi_dsi_host_register(struct mipi_dsi_host *host); > void mipi_dsi_host_unregister(struct mipi_dsi_host *host); > +struct mipi_dsi_host *of_find_mipi_dsi_host_by_node(struct device_node *node); > > /* DSI mode flags */ >