From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751297AbdBXPWh (ORCPT ); Fri, 24 Feb 2017 10:22:37 -0500 Received: from mail-qk0-f176.google.com ([209.85.220.176]:32869 "EHLO mail-qk0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751253AbdBXPWb (ORCPT ); Fri, 24 Feb 2017 10:22:31 -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: Benjamin Gaignard Date: Fri, 24 Feb 2017 16:13:20 +0100 Message-ID: Subject: Re: [PATCH v1 1/2] of: add devm_ functions for populate and depopulate To: Rob Herring 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 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) > >> + * >> + * Similar to of_platform_populate(), but will automatically call >> + * of_platform_depopulate() when the device is unbound from the bus. >> + * >> + * Returns 0 on success, < 0 on failure. >> + */ From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Gaignard Subject: Re: [PATCH v1 1/2] of: add devm_ functions for populate and depopulate Date: Fri, 24 Feb 2017 16:13:20 +0100 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: Rob Herring 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 MjAxNy0wMi0yNCAxNToxNyBHTVQrMDE6MDAgUm9iIEhlcnJpbmcgPHJvYmgrZHRAa2VybmVsLm9y Zz46Cj4gT24gRnJpLCBGZWIgMTcsIDIwMTcgYXQgODozMSBBTSwgQmVuamFtaW4gR2FpZ25hcmQK PiA8YmVuamFtaW4uZ2FpZ25hcmRAbGluYXJvLm9yZz4gd3JvdGU6Cj4+IExvc3Qgb2YgY2FsbHMg dG8gb2ZfcGxhdGZvcm1fcG9wdWxhdGUoKSBhcmUgbm90IHVuYmFsYW5jZWQgYnkgYSBjYWxsCj4K PiBzL0xvc3QvTG90cy8KPgo+PiB0byBvZl9wbGF0Zm9ybV9kZXBvcHVsYXRlKCkuIFRoaXMgY3Jl YXRlIGlzc3VlcyB3aGlsZSBkcml2ZXJzIGFyZQo+PiBiaW5kL3VuYmluZC4KPj4KPj4gSW4gd2F5 IHRvIHNvbHZlIHRob3NlIGlzc3VlcyBpcyB0byBhZGQgZGV2bV9vZl9wbGF0Zm9ybV9wb3B1bGF0 ZSgpCj4+IHdoaWNoIHdpbGwgY2FsbCBvZl9wbGF0Zm9ybV9kZXBvcHVsYXRlKCkgd2hlbiB0aGUg ZGV2aWNlIGlzIHVuYm91bmQKPj4gZnJvbSB0aGUgYnVzLgo+Cj4gT25lIGNvbXBsaWNhdGlvbiBp cyBvZl9wbGF0Zm9ybV9wb3B1bGF0ZSBpcyBkZXNpZ25lZCB0byBiZSBjYWxsZWQKPiBtdWx0aXBs ZSB0aW1lcy4gV2UgY2FsbCBpdCB3aXRoIHRoZSBkZWZhdWx0IG1hdGNoIHRhYmxlIGFuZCB0aGVu Cj4gcGxhdGZvcm1zIGNhbiBjYWxsIGl0IGFnYWluIHdpdGggYSBjdXN0b20gbWF0Y2ggdGFibGUg Zm9yIGV4YW1wbGUuCgpJIGRvIG5vdCBwbGFuIHRvIHVzZSBpdCBldmVyeSB3aGVyZSBidXQgb25s eSBpbiBzb21lIGRyaXZlcnMgcHJvYmUoKQp0byBhdm9pZCBhZGRpbmcgZ290byB0byBjYWxsIG9m X3BsYXRmb3JtX2RlcG9wdWxhdGUoKSBmb3IgZWFjaCBlcnJvcgpjYXNlcyB3aGljaCBtYXkgb2Nj dXIgYWZ0ZXIgY2FsbGluZyBwb3B1bGF0ZS4KCj4KPj4gU2lnbmVkLW9mZi1ieTogQmVuamFtaW4g R2FpZ25hcmQgPGJlbmphbWluLmdhaWduYXJkQGxpbmFyby5vcmc+Cj4+IC0tLQo+PiAgZHJpdmVy cy9vZi9wbGF0Zm9ybS5jICAgICAgIHwgNzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4+ICBpbmNsdWRlL2xpbnV4L29mX3BsYXRmb3JtLmggfCAyMCArKysr KysrKysrKysKPj4gIDIgZmlsZXMgY2hhbmdlZCwgOTcgaW5zZXJ0aW9ucygrKQo+Pgo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9vZi9wbGF0Zm9ybS5jIGIvZHJpdmVycy9vZi9wbGF0Zm9ybS5jCj4+ IGluZGV4IGI4MDY0YmMuLjNkYmViZjcgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvb2YvcGxhdGZv cm0uYwo+PiArKysgYi9kcml2ZXJzL29mL3BsYXRmb3JtLmMKPj4gQEAgLTU3MSw2ICs1NzEsODMg QEAgdm9pZCBvZl9wbGF0Zm9ybV9kZXBvcHVsYXRlKHN0cnVjdCBkZXZpY2UgKnBhcmVudCkKPj4g IH0KPj4gIEVYUE9SVF9TWU1CT0xfR1BMKG9mX3BsYXRmb3JtX2RlcG9wdWxhdGUpOwo+Pgo+PiAr c3RhdGljIHZvaWQgZGV2bV9vZl9wbGF0Zm9ybV9wb3B1bGF0ZV9yZWxlYXNlKHN0cnVjdCBkZXZp Y2UgKmRldiwgdm9pZCAqcmVzKQo+PiArewo+PiArICAgICAgIG9mX3BsYXRmb3JtX2RlcG9wdWxh dGUoKihzdHJ1Y3QgZGV2aWNlICoqKXJlcyk7Cj4+ICt9Cj4+ICsKPj4gKy8qKgo+PiArICogZGV2 bV9vZl9wbGF0Zm9ybV9wb3B1bGF0ZSgpIC0gUG9wdWxhdGUgcGxhdGZvcm1fZGV2aWNlcyBmcm9t IGRldmljZSB0cmVlIGRhdGEKPj4gKyAqIEBkZXY6IGRldmljZSB0aGF0IHJlcXVlc3RlZCB0byBw b3B1bGF0ZSBmcm9tIGRldmljZSB0cmVlIGRhdGEKPj4gKyAqIEByb290OiBwYXJlbnQgb2YgdGhl IGZpcnN0IGxldmVsIHRvIHByb2JlIG9yIE5VTEwgZm9yIHRoZSByb290IG9mIHRoZSB0cmVlCj4+ ICsgKiBAbWF0Y2hlczogbWF0Y2ggdGFibGUsIE5VTEwgdG8gdXNlIHRoZSBkZWZhdWx0Cj4KPiBO VUxMIGlzIG5vIG1hdGNoIHRhYmxlLCBub3QgdGhlIGRlZmF1bHQgd2hpY2ggbWVhbnMgb25seSBw b3B1bGF0ZQo+IGltbWVkaWF0ZSBjaGlsZHJlbi4KCkkgaGF2ZSBjb3B5IG9mX3BsYXRmb3JtX3Bv cHVsYXRlKCkgZGVzY3JpcHRpb24uLi4KSSByZXBsYWNlIGl0IGJ5OiBAbWF0Y2hlczogbWF0Y2gg dGFibGUgKGNvdWxkIGJlIE5VTEwpCgo+Cj4+ICsgKiBAbG9va3VwOiBhdXhkYXRhIHRhYmxlIGZv ciBtYXRjaGluZyBpZCBhbmQgcGxhdGZvcm1fZGF0YSB3aXRoIGRldmljZSBub2Rlcwo+PiArICog QHBhcmVudDogcGFyZW50IHRvIGhvb2sgZGV2aWNlcyBmcm9tLCBOVUxMIGZvciB0b3BsZXZlbAo+ Cj4gSSB0aGluayB0aGlzIG5lZWRzIHRvIGJlIGEgYml0IGRpZmZlcmVudCBhcmdzIGFzIHRoZSB1 c2UgaXMgbGltaXRlZC4KPiByb290IGFuZCBwYXJlbnQgbXVzdCBub3QgYmUgTlVMTC4gZGV2IHNo b3VsZCBiZSB0aGUgc2FtZSBhcyBwYXJlbnQuCj4gbG9va3VwIHdhcyBmb3IgbGVnYWN5LCBzbyBk cm9wIHRoYXQuCgpTbyBmdW5jdGlvbiBwcm90b3R5cGUgd2lsbCBiZWNvbWU6CmludCBkZXZtX29m X3BsYXRmb3JtX3BvcHVsYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2Rl Cipyb290LCBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaGVzKQoKPgo+PiArICoKPj4g KyAqIFNpbWlsYXIgdG8gb2ZfcGxhdGZvcm1fcG9wdWxhdGUoKSwgYnV0IHdpbGwgYXV0b21hdGlj YWxseSBjYWxsCj4+ICsgKiBvZl9wbGF0Zm9ybV9kZXBvcHVsYXRlKCkgd2hlbiB0aGUgZGV2aWNl IGlzIHVuYm91bmQgZnJvbSB0aGUgYnVzLgo+PiArICoKPj4gKyAqIFJldHVybnMgMCBvbiBzdWNj ZXNzLCA8IDAgb24gZmFpbHVyZS4KPj4gKyAqLwpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK