From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lee Jones Subject: Re: [PATCH 5/5] mfd: twl: use mfd_add_devices for TWL6032 regulator Date: Tue, 3 Jan 2017 15:46:56 +0000 Message-ID: <20170103154656.GK2977@dell> References: <20161126181326.14951-1-Nicolae_Rosia@mentor.com> <20161126181326.14951-6-Nicolae_Rosia@mentor.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20161126181326.14951-6-Nicolae_Rosia@mentor.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Nicolae Rosia Cc: Mark Rutland , devicetree@vger.kernel.org, Baruch Siach , Tony Lindgren , Liam Girdwood , Rob Herring , linux-kernel@vger.kernel.org, Paul Gortmaker , Mark Brown , Graeme Gregory , linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org List-Id: linux-omap@vger.kernel.org T24gU2F0LCAyNiBOb3YgMjAxNiwgTmljb2xhZSBSb3NpYSB3cm90ZToKCj4gVFdMNjAzMiByZWd1 bGF0b3IgZHJpdmVyIHVzZXMgdGhlIGRydmRhdGEgdHdsX3ByaXYgcG9pbnRlci4KPiBJbiBvcmRl ciB0byBhdm9pZCBhY2Nlc3NpbmcgYW4gaW52YWxpZCBkcnZkYXRhCj4gd2hlbiB0aGUgZHJpdmVy IGdldHMgdW5iaW5kZWQsIG1ha2Ugc3VyZSB3ZSByZW1vdmUgdGhlCj4gY2hpbGQgZGV2aWNlcyBi ZWZvcmUgZGVsZXRpbmcgdGhlIGRydmRhdGEuCgpUaGlzIGRvZXNuJ3QgcmVhbGx5IGRlc2NyaWJl IHRoZSBjaGFuZ2UuCgpTdXJlbHkgd2UncmUgcmVhbGx5IGp1c3QgcmVnaXN0ZXJpbmcgdGhlIHJl Z3VsYXRvciBkcml2ZXI/CgpUaGUgZmFjdCB0aGF0IHdlIHRoZW4gcmVtb3ZlIHRoZSBkZXZpY2Ug ZHVyaW5nIC5yZW1vdmUoKSBpcwppbmNpZGVudGFsLiAKCj4gU2lnbmVkLW9mZi1ieTogTmljb2xh ZSBSb3NpYSA8Tmljb2xhZV9Sb3NpYUBtZW50b3IuY29tPgo+IC0tLQo+ICBkcml2ZXJzL21mZC90 d2wtY29yZS5jIHwgMjIgKysrKysrKysrKysrKysrKysrKysrKwo+ICAxIGZpbGUgY2hhbmdlZCwg MjIgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC90d2wtY29yZS5j IGIvZHJpdmVycy9tZmQvdHdsLWNvcmUuYwo+IGluZGV4IDQwOWI4MzYuLjFlOTQzNjQgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9tZmQvdHdsLWNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvbWZkL3R3bC1j b3JlLmMKPiBAQCAtNDMsNiArNDMsNyBAQAo+ICAjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0u aD4KPiAgI2luY2x1ZGUgPGxpbnV4L2lycS5oPgo+ICAjaW5jbHVkZSA8bGludXgvaXJxZG9tYWlu Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tZmQvY29yZS5oPgo+ICAKPiAgI2luY2x1ZGUgPGxpbnV4 L3JlZ3VsYXRvci9tYWNoaW5lLmg+Cj4gIAo+IEBAIC0xNTUsOCArMTU2LDE2IEBAIGludCB0d2w0 MDMwX2luaXRfaXJxKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGlycV9udW0pOwo+ICBpbnQgdHds NDAzMF9leGl0X2lycSh2b2lkKTsKPiAgaW50IHR3bDQwMzBfaW5pdF9jaGlwX2lycShjb25zdCBj aGFyICpjaGlwKTsKPiAgCj4gKwoKPwoKPiAgc3RhdGljIHN0cnVjdCB0d2xjb3JlICp0d2xfcHJp djsKPiAgCj4gK3N0YXRpYyBzdHJ1Y3QgbWZkX2NlbGwgdHdsNjAzMl9kZXZzW10gPSB7Cj4gKwl7 Cj4gKwkJLm5hbWUgPSAidHdsNjAzMi1yZWd1bGF0b3IiLAo+ICsJCS5vZl9jb21wYXRpYmxlID0g InRpLHR3bDYwMzItcmVndWxhdG9yIiwKPiArCX0sCj4gK307Cj4gKwo+ICBzdGF0aWMgc3RydWN0 IHR3bF9tYXBwaW5nIHR3bDQwMzBfbWFwW10gPSB7Cj4gIAkvKgo+ICAJICogTk9URTogIGRvbid0 IGNoYW5nZSB0aGlzIHRhYmxlIHdpdGhvdXQgdXBkYXRpbmcgdGhlCj4gQEAgLTY2NSw2ICs2NzQs OCBAQCBzdGF0aWMgaW50IHR3bF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiAg CXVuc2lnbmVkIGksIG51bV9zbGF2ZXM7Cj4gIAlpbnQgc3RhdHVzOwo+ICAKPiArCW1mZF9yZW1v dmVfZGV2aWNlcygmY2xpZW50LT5kZXYpOwo+ICsKPiAgCWlmICh0d2xfY2xhc3NfaXNfNDAzMCgp KQo+ICAJCXN0YXR1cyA9IHR3bDQwMzBfZXhpdF9pcnEoKTsKPiAgCWVsc2UKPiBAQCAtODM0LDYg Kzg0NSwxNyBAQCB0d2xfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgY29uc3Qgc3Ry dWN0IGkyY19kZXZpY2VfaWQgKmlkKQo+ICAJCQkJIFRXTDQwMzBfRENEQ19HTE9CQUxfQ0ZHKTsK PiAgCX0KPiAgCj4gKwlpZiAoaWQtPmRyaXZlcl9kYXRhICYgVFdMNjAzMl9TVUJDTEFTUykgewo+ ICsJCXN0YXR1cyA9IG1mZF9hZGRfZGV2aWNlcygmY2xpZW50LT5kZXYsIFBMQVRGT1JNX0RFVklE X05PTkUsCj4gKwkJCQkJIHR3bDYwMzJfZGV2cywgQVJSQVlfU0laRSh0d2w2MDMyX2RldnMpLAo+ ICsJCQkJCSBOVUxMLCAwLCBOVUxMKTsKPiArCQlpZiAoc3RhdHVzICE9IDApIHsKPiArCQkJZGV2 X2VycigmY2xpZW50LT5kZXYsICJmYWlsZWQgdG8gYWRkIG1mZCBkZXZpY2VzOiAlZFxuIiwKPiAr CQkJCXN0YXR1cyk7Cj4gKwkJCWdvdG8gZmFpbDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICBmYWlsOgo+ ICAJaWYgKHN0YXR1cyA8IDApCj4gIAkJdHdsX3JlbW92ZShjbGllbnQpOwoKLS0gCkxlZSBKb25l cwpMaW5hcm8gU1RNaWNyb2VsZWN0cm9uaWNzIExhbmRpbmcgVGVhbSBMZWFkCkxpbmFyby5vcmcg 4pSCIE9wZW4gc291cmNlIHNvZnR3YXJlIGZvciBBUk0gU29DcwpGb2xsb3cgTGluYXJvOiBGYWNl Ym9vayB8IFR3aXR0ZXIgfCBCbG9nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2Vy bmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: lee.jones@linaro.org (Lee Jones) Date: Tue, 3 Jan 2017 15:46:56 +0000 Subject: [PATCH 5/5] mfd: twl: use mfd_add_devices for TWL6032 regulator In-Reply-To: <20161126181326.14951-6-Nicolae_Rosia@mentor.com> References: <20161126181326.14951-1-Nicolae_Rosia@mentor.com> <20161126181326.14951-6-Nicolae_Rosia@mentor.com> Message-ID: <20170103154656.GK2977@dell> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Sat, 26 Nov 2016, Nicolae Rosia wrote: > TWL6032 regulator driver uses the drvdata twl_priv pointer. > In order to avoid accessing an invalid drvdata > when the driver gets unbinded, make sure we remove the > child devices before deleting the drvdata. This doesn't really describe the change. Surely we're really just registering the regulator driver? The fact that we then remove the device during .remove() is incidental. > Signed-off-by: Nicolae Rosia > --- > drivers/mfd/twl-core.c | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c > index 409b836..1e94364 100644 > --- a/drivers/mfd/twl-core.c > +++ b/drivers/mfd/twl-core.c > @@ -43,6 +43,7 @@ > #include > #include > #include > +#include > > #include > > @@ -155,8 +156,16 @@ int twl4030_init_irq(struct device *dev, int irq_num); > int twl4030_exit_irq(void); > int twl4030_init_chip_irq(const char *chip); > > + ? > static struct twlcore *twl_priv; > > +static struct mfd_cell twl6032_devs[] = { > + { > + .name = "twl6032-regulator", > + .of_compatible = "ti,twl6032-regulator", > + }, > +}; > + > static struct twl_mapping twl4030_map[] = { > /* > * NOTE: don't change this table without updating the > @@ -665,6 +674,8 @@ static int twl_remove(struct i2c_client *client) > unsigned i, num_slaves; > int status; > > + mfd_remove_devices(&client->dev); > + > if (twl_class_is_4030()) > status = twl4030_exit_irq(); > else > @@ -834,6 +845,17 @@ twl_probe(struct i2c_client *client, const struct i2c_device_id *id) > TWL4030_DCDC_GLOBAL_CFG); > } > > + if (id->driver_data & TWL6032_SUBCLASS) { > + status = mfd_add_devices(&client->dev, PLATFORM_DEVID_NONE, > + twl6032_devs, ARRAY_SIZE(twl6032_devs), > + NULL, 0, NULL); > + if (status != 0) { > + dev_err(&client->dev, "failed to add mfd devices: %d\n", > + status); > + goto fail; > + } > + } > + > fail: > if (status < 0) > twl_remove(client); -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758596AbdACPog (ORCPT ); Tue, 3 Jan 2017 10:44:36 -0500 Received: from mail-wm0-f47.google.com ([74.125.82.47]:37106 "EHLO mail-wm0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757101AbdACPo3 (ORCPT ); Tue, 3 Jan 2017 10:44:29 -0500 Date: Tue, 3 Jan 2017 15:46:56 +0000 From: Lee Jones To: Nicolae Rosia Cc: Mark Brown , Rob Herring , Mark Rutland , Tony Lindgren , Liam Girdwood , Paul Gortmaker , Graeme Gregory , Baruch Siach , linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org Subject: Re: [PATCH 5/5] mfd: twl: use mfd_add_devices for TWL6032 regulator Message-ID: <20170103154656.GK2977@dell> References: <20161126181326.14951-1-Nicolae_Rosia@mentor.com> <20161126181326.14951-6-Nicolae_Rosia@mentor.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20161126181326.14951-6-Nicolae_Rosia@mentor.com> User-Agent: Mutt/1.6.2 (2016-07-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, 26 Nov 2016, Nicolae Rosia wrote: > TWL6032 regulator driver uses the drvdata twl_priv pointer. > In order to avoid accessing an invalid drvdata > when the driver gets unbinded, make sure we remove the > child devices before deleting the drvdata. This doesn't really describe the change. Surely we're really just registering the regulator driver? The fact that we then remove the device during .remove() is incidental. > Signed-off-by: Nicolae Rosia > --- > drivers/mfd/twl-core.c | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c > index 409b836..1e94364 100644 > --- a/drivers/mfd/twl-core.c > +++ b/drivers/mfd/twl-core.c > @@ -43,6 +43,7 @@ > #include > #include > #include > +#include > > #include > > @@ -155,8 +156,16 @@ int twl4030_init_irq(struct device *dev, int irq_num); > int twl4030_exit_irq(void); > int twl4030_init_chip_irq(const char *chip); > > + ? > static struct twlcore *twl_priv; > > +static struct mfd_cell twl6032_devs[] = { > + { > + .name = "twl6032-regulator", > + .of_compatible = "ti,twl6032-regulator", > + }, > +}; > + > static struct twl_mapping twl4030_map[] = { > /* > * NOTE: don't change this table without updating the > @@ -665,6 +674,8 @@ static int twl_remove(struct i2c_client *client) > unsigned i, num_slaves; > int status; > > + mfd_remove_devices(&client->dev); > + > if (twl_class_is_4030()) > status = twl4030_exit_irq(); > else > @@ -834,6 +845,17 @@ twl_probe(struct i2c_client *client, const struct i2c_device_id *id) > TWL4030_DCDC_GLOBAL_CFG); > } > > + if (id->driver_data & TWL6032_SUBCLASS) { > + status = mfd_add_devices(&client->dev, PLATFORM_DEVID_NONE, > + twl6032_devs, ARRAY_SIZE(twl6032_devs), > + NULL, 0, NULL); > + if (status != 0) { > + dev_err(&client->dev, "failed to add mfd devices: %d\n", > + status); > + goto fail; > + } > + } > + > fail: > if (status < 0) > twl_remove(client); -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog