From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751365AbdBXPl3 (ORCPT ); Fri, 24 Feb 2017 10:41:29 -0500 Received: from mail.kernel.org ([198.145.29.136]:45182 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751249AbdBXPlV (ORCPT ); Fri, 24 Feb 2017 10:41:21 -0500 MIME-Version: 1.0 In-Reply-To: References: <1487341886-13829-1-git-send-email-benjamin.gaignard@linaro.org> <1487341886-13829-2-git-send-email-benjamin.gaignard@linaro.org> From: Rob Herring Date: Fri, 24 Feb 2017 09:30:13 -0600 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v1 1/2] of: add devm_ functions for populate and depopulate To: Benjamin Gaignard Cc: Frank Rowand , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Vincent Abriou , dri-devel , "linaro-kernel@lists.linaro.org" Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Feb 24, 2017 at 9:26 AM, Benjamin Gaignard wrote: > 2017-02-24 16:20 GMT+01:00 Rob Herring : >> On Fri, Feb 24, 2017 at 9:13 AM, Benjamin Gaignard >> wrote: >>> 2017-02-24 15:17 GMT+01:00 Rob Herring : >>>> On Fri, Feb 17, 2017 at 8:31 AM, Benjamin Gaignard >>>> wrote: >>>>> Lost of calls to of_platform_populate() are not unbalanced by a call >>>> >>>> s/Lost/Lots/ >>>> >>>>> to of_platform_depopulate(). This create issues while drivers are >>>>> bind/unbind. >>>>> >>>>> In way to solve those issues is to add devm_of_platform_populate() >>>>> which will call of_platform_depopulate() when the device is unbound >>>>> from the bus. >>>> >>>> One complication is of_platform_populate is designed to be called >>>> multiple times. We call it with the default match table and then >>>> platforms can call it again with a custom match table for example. >>> >>> I do not plan to use it every where but only in some drivers probe() >>> to avoid adding goto to call of_platform_depopulate() for each error >>> cases which may occur after calling populate. >>> >>>> >>>>> Signed-off-by: Benjamin Gaignard >>>>> --- >>>>> drivers/of/platform.c | 77 +++++++++++++++++++++++++++++++++++++++++++++ >>>>> include/linux/of_platform.h | 20 ++++++++++++ >>>>> 2 files changed, 97 insertions(+) >>>>> >>>>> diff --git a/drivers/of/platform.c b/drivers/of/platform.c >>>>> index b8064bc..3dbebf7 100644 >>>>> --- a/drivers/of/platform.c >>>>> +++ b/drivers/of/platform.c >>>>> @@ -571,6 +571,83 @@ void of_platform_depopulate(struct device *parent) >>>>> } >>>>> EXPORT_SYMBOL_GPL(of_platform_depopulate); >>>>> >>>>> +static void devm_of_platform_populate_release(struct device *dev, void *res) >>>>> +{ >>>>> + of_platform_depopulate(*(struct device **)res); >>>>> +} >>>>> + >>>>> +/** >>>>> + * devm_of_platform_populate() - Populate platform_devices from device tree data >>>>> + * @dev: device that requested to populate from device tree data >>>>> + * @root: parent of the first level to probe or NULL for the root of the tree >>>>> + * @matches: match table, NULL to use the default >>>> >>>> NULL is no match table, not the default which means only populate >>>> immediate children. >>> >>> I have copy of_platform_populate() description... >>> I replace it by: @matches: match table (could be NULL) >>> >>>> >>>>> + * @lookup: auxdata table for matching id and platform_data with device nodes >>>>> + * @parent: parent to hook devices from, NULL for toplevel >>>> >>>> I think this needs to be a bit different args as the use is limited. >>>> root and parent must not be NULL. dev should be the same as parent. >>>> lookup was for legacy, so drop that. >>> >>> So function prototype will become: >>> int devm_of_platform_populate(struct device *dev, struct device_node >>> *root, const struct of_device_id *matches) >> >> I just noticed something else too. dev->of_node should equal root I >> think, so we can get rid of root param. > > match parameter is very often set to NULL since this function will > have a limited > scope why not also remove it and only keep dev ? That's fine with me. Rob From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: Re: [PATCH v1 1/2] of: add devm_ functions for populate and depopulate Date: Fri, 24 Feb 2017 09:30:13 -0600 Message-ID: References: <1487341886-13829-1-git-send-email-benjamin.gaignard@linaro.org> <1487341886-13829-2-git-send-email-benjamin.gaignard@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Benjamin Gaignard Cc: "devicetree@vger.kernel.org" , "linaro-kernel@lists.linaro.org" , Frank Rowand , "linux-kernel@vger.kernel.org" , dri-devel , Vincent Abriou List-Id: devicetree@vger.kernel.org T24gRnJpLCBGZWIgMjQsIDIwMTcgYXQgOToyNiBBTSwgQmVuamFtaW4gR2FpZ25hcmQKPGJlbmph bWluLmdhaWduYXJkQGxpbmFyby5vcmc+IHdyb3RlOgo+IDIwMTctMDItMjQgMTY6MjAgR01UKzAx OjAwIFJvYiBIZXJyaW5nIDxyb2JoK2R0QGtlcm5lbC5vcmc+Ogo+PiBPbiBGcmksIEZlYiAyNCwg MjAxNyBhdCA5OjEzIEFNLCBCZW5qYW1pbiBHYWlnbmFyZAo+PiA8YmVuamFtaW4uZ2FpZ25hcmRA bGluYXJvLm9yZz4gd3JvdGU6Cj4+PiAyMDE3LTAyLTI0IDE1OjE3IEdNVCswMTowMCBSb2IgSGVy cmluZyA8cm9iaCtkdEBrZXJuZWwub3JnPjoKPj4+PiBPbiBGcmksIEZlYiAxNywgMjAxNyBhdCA4 OjMxIEFNLCBCZW5qYW1pbiBHYWlnbmFyZAo+Pj4+IDxiZW5qYW1pbi5nYWlnbmFyZEBsaW5hcm8u b3JnPiB3cm90ZToKPj4+Pj4gTG9zdCBvZiBjYWxscyB0byBvZl9wbGF0Zm9ybV9wb3B1bGF0ZSgp IGFyZSBub3QgdW5iYWxhbmNlZCBieSBhIGNhbGwKPj4+Pgo+Pj4+IHMvTG9zdC9Mb3RzLwo+Pj4+ Cj4+Pj4+IHRvIG9mX3BsYXRmb3JtX2RlcG9wdWxhdGUoKS4gVGhpcyBjcmVhdGUgaXNzdWVzIHdo aWxlIGRyaXZlcnMgYXJlCj4+Pj4+IGJpbmQvdW5iaW5kLgo+Pj4+Pgo+Pj4+PiBJbiB3YXkgdG8g c29sdmUgdGhvc2UgaXNzdWVzIGlzIHRvIGFkZCBkZXZtX29mX3BsYXRmb3JtX3BvcHVsYXRlKCkK Pj4+Pj4gd2hpY2ggd2lsbCBjYWxsIG9mX3BsYXRmb3JtX2RlcG9wdWxhdGUoKSB3aGVuIHRoZSBk ZXZpY2UgaXMgdW5ib3VuZAo+Pj4+PiBmcm9tIHRoZSBidXMuCj4+Pj4KPj4+PiBPbmUgY29tcGxp Y2F0aW9uIGlzIG9mX3BsYXRmb3JtX3BvcHVsYXRlIGlzIGRlc2lnbmVkIHRvIGJlIGNhbGxlZAo+ Pj4+IG11bHRpcGxlIHRpbWVzLiBXZSBjYWxsIGl0IHdpdGggdGhlIGRlZmF1bHQgbWF0Y2ggdGFi bGUgYW5kIHRoZW4KPj4+PiBwbGF0Zm9ybXMgY2FuIGNhbGwgaXQgYWdhaW4gd2l0aCBhIGN1c3Rv bSBtYXRjaCB0YWJsZSBmb3IgZXhhbXBsZS4KPj4+Cj4+PiBJIGRvIG5vdCBwbGFuIHRvIHVzZSBp dCBldmVyeSB3aGVyZSBidXQgb25seSBpbiBzb21lIGRyaXZlcnMgcHJvYmUoKQo+Pj4gdG8gYXZv aWQgYWRkaW5nIGdvdG8gdG8gY2FsbCBvZl9wbGF0Zm9ybV9kZXBvcHVsYXRlKCkgZm9yIGVhY2gg ZXJyb3IKPj4+IGNhc2VzIHdoaWNoIG1heSBvY2N1ciBhZnRlciBjYWxsaW5nIHBvcHVsYXRlLgo+ Pj4KPj4+Pgo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBHYWlnbmFyZCA8YmVuamFtaW4u Z2FpZ25hcmRAbGluYXJvLm9yZz4KPj4+Pj4gLS0tCj4+Pj4+ICBkcml2ZXJzL29mL3BsYXRmb3Jt LmMgICAgICAgfCA3NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPj4+Pj4gIGluY2x1ZGUvbGludXgvb2ZfcGxhdGZvcm0uaCB8IDIwICsrKysrKysrKysrKwo+ Pj4+PiAgMiBmaWxlcyBjaGFuZ2VkLCA5NyBpbnNlcnRpb25zKCspCj4+Pj4+Cj4+Pj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL29mL3BsYXRmb3JtLmMgYi9kcml2ZXJzL29mL3BsYXRmb3JtLmMKPj4+ Pj4gaW5kZXggYjgwNjRiYy4uM2RiZWJmNyAxMDA2NDQKPj4+Pj4gLS0tIGEvZHJpdmVycy9vZi9w bGF0Zm9ybS5jCj4+Pj4+ICsrKyBiL2RyaXZlcnMvb2YvcGxhdGZvcm0uYwo+Pj4+PiBAQCAtNTcx LDYgKzU3MSw4MyBAQCB2b2lkIG9mX3BsYXRmb3JtX2RlcG9wdWxhdGUoc3RydWN0IGRldmljZSAq cGFyZW50KQo+Pj4+PiAgfQo+Pj4+PiAgRVhQT1JUX1NZTUJPTF9HUEwob2ZfcGxhdGZvcm1fZGVw b3B1bGF0ZSk7Cj4+Pj4+Cj4+Pj4+ICtzdGF0aWMgdm9pZCBkZXZtX29mX3BsYXRmb3JtX3BvcHVs YXRlX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpyZXMpCj4+Pj4+ICt7Cj4+Pj4+ ICsgICAgICAgb2ZfcGxhdGZvcm1fZGVwb3B1bGF0ZSgqKHN0cnVjdCBkZXZpY2UgKiopcmVzKTsK Pj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiArLyoqCj4+Pj4+ICsgKiBkZXZtX29mX3BsYXRmb3JtX3Bv cHVsYXRlKCkgLSBQb3B1bGF0ZSBwbGF0Zm9ybV9kZXZpY2VzIGZyb20gZGV2aWNlIHRyZWUgZGF0 YQo+Pj4+PiArICogQGRldjogZGV2aWNlIHRoYXQgcmVxdWVzdGVkIHRvIHBvcHVsYXRlIGZyb20g ZGV2aWNlIHRyZWUgZGF0YQo+Pj4+PiArICogQHJvb3Q6IHBhcmVudCBvZiB0aGUgZmlyc3QgbGV2 ZWwgdG8gcHJvYmUgb3IgTlVMTCBmb3IgdGhlIHJvb3Qgb2YgdGhlIHRyZWUKPj4+Pj4gKyAqIEBt YXRjaGVzOiBtYXRjaCB0YWJsZSwgTlVMTCB0byB1c2UgdGhlIGRlZmF1bHQKPj4+Pgo+Pj4+IE5V TEwgaXMgbm8gbWF0Y2ggdGFibGUsIG5vdCB0aGUgZGVmYXVsdCB3aGljaCBtZWFucyBvbmx5IHBv cHVsYXRlCj4+Pj4gaW1tZWRpYXRlIGNoaWxkcmVuLgo+Pj4KPj4+IEkgaGF2ZSBjb3B5IG9mX3Bs YXRmb3JtX3BvcHVsYXRlKCkgZGVzY3JpcHRpb24uLi4KPj4+IEkgcmVwbGFjZSBpdCBieTogQG1h dGNoZXM6IG1hdGNoIHRhYmxlIChjb3VsZCBiZSBOVUxMKQo+Pj4KPj4+Pgo+Pj4+PiArICogQGxv b2t1cDogYXV4ZGF0YSB0YWJsZSBmb3IgbWF0Y2hpbmcgaWQgYW5kIHBsYXRmb3JtX2RhdGEgd2l0 aCBkZXZpY2Ugbm9kZXMKPj4+Pj4gKyAqIEBwYXJlbnQ6IHBhcmVudCB0byBob29rIGRldmljZXMg ZnJvbSwgTlVMTCBmb3IgdG9wbGV2ZWwKPj4+Pgo+Pj4+IEkgdGhpbmsgdGhpcyBuZWVkcyB0byBi ZSBhIGJpdCBkaWZmZXJlbnQgYXJncyBhcyB0aGUgdXNlIGlzIGxpbWl0ZWQuCj4+Pj4gcm9vdCBh bmQgcGFyZW50IG11c3Qgbm90IGJlIE5VTEwuIGRldiBzaG91bGQgYmUgdGhlIHNhbWUgYXMgcGFy ZW50Lgo+Pj4+IGxvb2t1cCB3YXMgZm9yIGxlZ2FjeSwgc28gZHJvcCB0aGF0Lgo+Pj4KPj4+IFNv IGZ1bmN0aW9uIHByb3RvdHlwZSB3aWxsIGJlY29tZToKPj4+IGludCBkZXZtX29mX3BsYXRmb3Jt X3BvcHVsYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlCj4+PiAqcm9v dCwgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqbWF0Y2hlcykKPj4KPj4gSSBqdXN0IG5vdGlj ZWQgc29tZXRoaW5nIGVsc2UgdG9vLiBkZXYtPm9mX25vZGUgc2hvdWxkIGVxdWFsIHJvb3QgSQo+ PiB0aGluaywgc28gd2UgY2FuIGdldCByaWQgb2Ygcm9vdCBwYXJhbS4KPgo+IG1hdGNoIHBhcmFt ZXRlciBpcyB2ZXJ5IG9mdGVuIHNldCB0byBOVUxMIHNpbmNlIHRoaXMgZnVuY3Rpb24gd2lsbAo+ IGhhdmUgYSBsaW1pdGVkCj4gc2NvcGUgd2h5IG5vdCBhbHNvIHJlbW92ZSBpdCBhbmQgb25seSBr ZWVwIGRldiA/CgpUaGF0J3MgZmluZSB3aXRoIG1lLgoKUm9iCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=