From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pawel Moll Date: Wed, 08 Jan 2014 15:57:49 +0000 Subject: Re: [lm-sensors] [RFC 08/18] hwmon: vexpress: Use regmap instead of custom interface Message-Id: <1389196669.23721.17.camel@hornet> List-Id: References: <1387815830-8794-1-git-send-email-pawel.moll@arm.com> <1387815830-8794-9-git-send-email-pawel.moll@arm.com> <20131223173139.GA1678@roeck-us.net> In-Reply-To: <20131223173139.GA1678@roeck-us.net> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Guenter Roeck Cc: "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , Samuel Ortiz , Arnd Bergmann , Jon Medhurst , "arm@kernel.org" , Olof Johansson , Jean Delvare , "lm-sensors@lm-sensors.org" T24gTW9uLCAyMDEzLTEyLTIzIGF0IDE3OjMxICswMDAwLCBHdWVudGVyIFJvZWNrIHdyb3RlOgo+ IE9uIE1vbiwgRGVjIDIzLCAyMDEzIGF0IDA0OjIzOjQwUE0gKzAwMDAsIFBhd2VsIE1vbGwgd3Jv dGU6Cj4gPiBUaGlzIHBhdGNoIG1ha2VzIHRoZSBWZXJzYXRpbGUgRXhwcmVzcyBod21vbiBkcml2 ZXIKPiA+IHVzZSByZWdtYXAgaW50ZXJmYWNlLCBpbnN0ZWFkIG9mIGN1c3RvbSB2ZXhwcmVzcyBj b25maWcKPiA+IG9uZS4gSXQgd2lsbCByZXF1ZXN0IHRoZSByZWdtYXAgcmVzb3VyY2UgYXNzb2Np YXRlZAo+ID4gd2l0aCB0aGUgZGV2aWNlLCB3aGljaCBtYWtlcyBpdCBwcmV0dHkgbXVjaCBoYXJk d2FyZQo+ID4gYWdub3N0aWMuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IFBhd2VsIE1vbGwgPHBh d2VsLm1vbGxAYXJtLmNvbT4KPiA+IENjOiBKZWFuIERlbHZhcmUgPGtoYWxpQGxpbnV4LWZyLm9y Zz4KPiA+IENjOiBHdWVudGVyIFJvZWNrIDxsaW51eEByb2Vjay11cy5uZXQ+Cj4gPiBDYzogbG0t c2Vuc29yc0BsbS1zZW5zb3JzLm9yZwo+ID4gLS0tCj4gPiAgZHJpdmVycy9od21vbi9LY29uZmln ICAgIHwgIDMgKystCj4gPiAgZHJpdmVycy9od21vbi92ZXhwcmVzcy5jIHwgMjkgKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0KPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMo KyksIDE5IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9L Y29uZmlnIGIvZHJpdmVycy9od21vbi9LY29uZmlnCj4gPiBpbmRleCA1MmQ1NDhmLi43NzQ3YTQ3 IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9od21vbi9LY29uZmlnCj4gPiArKysgYi9kcml2ZXJz L2h3bW9uL0tjb25maWcKPiA+IEBAIC0xMzI0LDcgKzEzMjQsOCBAQCBjb25maWcgU0VOU09SU19U V0w0MDMwX01BREMKPiA+ICAKPiA+ICBjb25maWcgU0VOU09SU19WRVhQUkVTUwo+ID4gIAl0cmlz dGF0ZSAiVmVyc2F0aWxlIEV4cHJlc3MiCj4gPiAtCWRlcGVuZHMgb24gVkVYUFJFU1NfQ09ORklH Cj4gPiArCWRlcGVuZHMgb24gQVJNIHx8IEFSTTY0Cj4gPiArCWRlcGVuZHMgb24gUkVHTUFQCj4g PiAgCWhlbHAKPiA+ICAJICBUaGlzIGRyaXZlciBwcm92aWRlcyBzdXBwb3J0IGZvciBoYXJkd2Fy ZSBzZW5zb3JzIGF2YWlsYWJsZSBvbgo+ID4gIAkgIHRoZSBBUk0gTHRkJ3MgVmVyc2F0aWxlIEV4 cHJlc3MgcGxhdGZvcm0uIEl0IGNhbiBwcm92aWRlIHdpZGUKPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2h3bW9uL3ZleHByZXNzLmMgYi9kcml2ZXJzL2h3bW9uL3ZleHByZXNzLmMKPiA+IGluZGV4 IGQ4NjdlNmIuLmI1OGNmMWMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2h3bW9uL3ZleHByZXNz LmMKPiA+ICsrKyBiL2RyaXZlcnMvaHdtb24vdmV4cHJlc3MuYwo+ID4gQEAgLTIyLDExICsyMiwx MSBAQAo+ID4gICNpbmNsdWRlIDxsaW51eC9vZi5oPgo+ID4gICNpbmNsdWRlIDxsaW51eC9vZl9k ZXZpY2UuaD4KPiA+ICAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gPiAtI2lu Y2x1ZGUgPGxpbnV4L3ZleHByZXNzLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+ ID4gIAo+ID4gIHN0cnVjdCB2ZXhwcmVzc19od21vbl9kYXRhIHsKPiA+ICAJc3RydWN0IGRldmlj ZSAqaHdtb25fZGV2Owo+ID4gLQlzdHJ1Y3QgdmV4cHJlc3NfY29uZmlnX2Z1bmMgKmZ1bmM7Cj4g PiArCXN0cnVjdCByZWdtYXAgKnJlZzsKPiA+ICB9Owo+ID4gIAo+ID4gIHN0YXRpYyBzc2l6ZV90 IHZleHByZXNzX2h3bW9uX25hbWVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiBAQCAtNTYs NyArNTYsNyBAQCBzdGF0aWMgc3NpemVfdCB2ZXhwcmVzc19od21vbl91MzJfc2hvdyhzdHJ1Y3Qg ZGV2aWNlICpkZXYsCj4gPiAgCWludCBlcnI7Cj4gPiAgCXUzMiB2YWx1ZTsKPiA+ICAKPiA+IC0J ZXJyID0gdmV4cHJlc3NfY29uZmlnX3JlYWQoZGF0YS0+ZnVuYywgMCwgJnZhbHVlKTsKPiA+ICsJ ZXJyID0gcmVnbWFwX3JlYWQoZGF0YS0+cmVnLCAwLCAmdmFsdWUpOwo+ID4gIAlpZiAoZXJyKQo+ ID4gIAkJcmV0dXJuIGVycjsKPiA+ICAKPiA+IEBAIC02OSwxMyArNjksMTMgQEAgc3RhdGljIHNz aXplX3QgdmV4cHJlc3NfaHdtb25fdTY0X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+ID4gIHsK PiA+ICAJc3RydWN0IHZleHByZXNzX2h3bW9uX2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEo ZGV2KTsKPiA+ICAJaW50IGVycjsKPiA+IC0JdTMyIHZhbHVlX2hpLCB2YWx1ZV9sbzsKPiA+ICsJ dW5zaWduZWQgaW50IHZhbHVlX2hpLCB2YWx1ZV9sbzsKPiA+ICAKPiA+IC0JZXJyID0gdmV4cHJl c3NfY29uZmlnX3JlYWQoZGF0YS0+ZnVuYywgMCwgJnZhbHVlX2xvKTsKPiA+ICsJZXJyID0gcmVn bWFwX3JlYWQoZGF0YS0+cmVnLCAwLCAmdmFsdWVfbG8pOwo+ID4gIAlpZiAoZXJyKQo+ID4gIAkJ cmV0dXJuIGVycjsKPiA+ICAKPiA+IC0JZXJyID0gdmV4cHJlc3NfY29uZmlnX3JlYWQoZGF0YS0+ ZnVuYywgMSwgJnZhbHVlX2hpKTsKPiA+ICsJZXJyID0gcmVnbWFwX3JlYWQoZGF0YS0+cmVnLCAx LCAmdmFsdWVfaGkpOwo+ID4gIAlpZiAoZXJyKQo+ID4gIAkJcmV0dXJuIGVycjsKPiA+ICAKPiA+ IEBAIC0xNzUsMjYgKzE3NSwyMSBAQCBzdGF0aWMgaW50IHZleHByZXNzX2h3bW9uX3Byb2JlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gPiAgCWlmICghbWF0Y2gpCj4gPiAgCQlyZXR1 cm4gLUVOT0RFVjsKPiA+ICAKPiA+IC0JZGF0YS0+ZnVuYyA9IHZleHByZXNzX2NvbmZpZ19mdW5j X2dldF9ieV9kZXYoJnBkZXYtPmRldik7Cj4gPiAtCWlmICghZGF0YS0+ZnVuYykKPiA+ICsJZGF0 YS0+cmVnID0gZGV2X2dldF9yZWdtYXAoJnBkZXYtPmRldiwgTlVMTCk7Cj4gPiArCWlmICghZGF0 YS0+cmVnKQo+ID4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gPiAgCj4gPiAgCWVyciA9IHN5c2ZzX2Ny ZWF0ZV9ncm91cCgmcGRldi0+ZGV2LmtvYmosIG1hdGNoLT5kYXRhKTsKPiA+ICAJaWYgKGVycikK PiA+IC0JCWdvdG8gZXJyb3I7Cj4gPiArCQlyZXR1cm4gZXJyOwo+ID4gIAo+ID4gIAlkYXRhLT5o d21vbl9kZXYgPSBod21vbl9kZXZpY2VfcmVnaXN0ZXIoJnBkZXYtPmRldik7Cj4gPiAgCWlmIChJ U19FUlIoZGF0YS0+aHdtb25fZGV2KSkgewo+ID4gLQkJZXJyID0gUFRSX0VSUihkYXRhLT5od21v bl9kZXYpOwo+ID4gLQkJZ290byBlcnJvcjsKPiA+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cCgmcGRl di0+ZGV2LmtvYmosIG1hdGNoLT5kYXRhKTsKPiA+ICsJCXJldHVybiBQVFJfRVJSKGRhdGEtPmh3 bW9uX2Rldik7Cj4gCj4gVGhpcyBjaGFuZ2UgaXMgdW5yZWxhdGVkIGFuZCB2aW9sYXRlcyBjb2Rp bmcgc3R5bGUuIElmIHRoZSBnb3RvIGRpc3R1cmJzIHlvdSwKPiBJIHdvdWxkIHN1Z2dlc3QgdG8g Y29udmVydCB0aGUgZHJpdmVyIHRvIHVzZSBkZXZtX2h3bW9uX2RldmljZV9yZWdpc3Rlcl93aXRo X2dyb3VwcygpIAo+IGluIGEgc2VwYXJhdGUgcGF0Y2ggYW5kIGdldCByaWQgb2YgdGhlIGVycm9y IGhhbmRsaW5nIGFuZCB0aGUgZW50aXJlIHJlbW92ZSgpIGZ1bmN0aW9uLgoKT2ssIHdpbGwgZG8s IHRoYW5rcyEKClBhd2XFggoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5v cmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGluZm8vbG0tc2Vuc29y cw= From mboxrd@z Thu Jan 1 00:00:00 1970 From: pawel.moll@arm.com (Pawel Moll) Date: Wed, 08 Jan 2014 15:57:49 +0000 Subject: [RFC 08/18] hwmon: vexpress: Use regmap instead of custom interface In-Reply-To: <20131223173139.GA1678@roeck-us.net> References: <1387815830-8794-1-git-send-email-pawel.moll@arm.com> <1387815830-8794-9-git-send-email-pawel.moll@arm.com> <20131223173139.GA1678@roeck-us.net> Message-ID: <1389196669.23721.17.camel@hornet> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Mon, 2013-12-23 at 17:31 +0000, Guenter Roeck wrote: > On Mon, Dec 23, 2013 at 04:23:40PM +0000, Pawel Moll wrote: > > This patch makes the Versatile Express hwmon driver > > use regmap interface, instead of custom vexpress config > > one. It will request the regmap resource associated > > with the device, which makes it pretty much hardware > > agnostic. > > > > Signed-off-by: Pawel Moll > > Cc: Jean Delvare > > Cc: Guenter Roeck > > Cc: lm-sensors at lm-sensors.org > > --- > > drivers/hwmon/Kconfig | 3 ++- > > drivers/hwmon/vexpress.c | 29 +++++++++++------------------ > > 2 files changed, 13 insertions(+), 19 deletions(-) > > > > diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig > > index 52d548f..7747a47 100644 > > --- a/drivers/hwmon/Kconfig > > +++ b/drivers/hwmon/Kconfig > > @@ -1324,7 +1324,8 @@ config SENSORS_TWL4030_MADC > > > > config SENSORS_VEXPRESS > > tristate "Versatile Express" > > - depends on VEXPRESS_CONFIG > > + depends on ARM || ARM64 > > + depends on REGMAP > > help > > This driver provides support for hardware sensors available on > > the ARM Ltd's Versatile Express platform. It can provide wide > > diff --git a/drivers/hwmon/vexpress.c b/drivers/hwmon/vexpress.c > > index d867e6b..b58cf1c 100644 > > --- a/drivers/hwmon/vexpress.c > > +++ b/drivers/hwmon/vexpress.c > > @@ -22,11 +22,11 @@ > > #include > > #include > > #include > > -#include > > +#include > > > > struct vexpress_hwmon_data { > > struct device *hwmon_dev; > > - struct vexpress_config_func *func; > > + struct regmap *reg; > > }; > > > > static ssize_t vexpress_hwmon_name_show(struct device *dev, > > @@ -56,7 +56,7 @@ static ssize_t vexpress_hwmon_u32_show(struct device *dev, > > int err; > > u32 value; > > > > - err = vexpress_config_read(data->func, 0, &value); > > + err = regmap_read(data->reg, 0, &value); > > if (err) > > return err; > > > > @@ -69,13 +69,13 @@ static ssize_t vexpress_hwmon_u64_show(struct device *dev, > > { > > struct vexpress_hwmon_data *data = dev_get_drvdata(dev); > > int err; > > - u32 value_hi, value_lo; > > + unsigned int value_hi, value_lo; > > > > - err = vexpress_config_read(data->func, 0, &value_lo); > > + err = regmap_read(data->reg, 0, &value_lo); > > if (err) > > return err; > > > > - err = vexpress_config_read(data->func, 1, &value_hi); > > + err = regmap_read(data->reg, 1, &value_hi); > > if (err) > > return err; > > > > @@ -175,26 +175,21 @@ static int vexpress_hwmon_probe(struct platform_device *pdev) > > if (!match) > > return -ENODEV; > > > > - data->func = vexpress_config_func_get_by_dev(&pdev->dev); > > - if (!data->func) > > + data->reg = dev_get_regmap(&pdev->dev, NULL); > > + if (!data->reg) > > return -ENODEV; > > > > err = sysfs_create_group(&pdev->dev.kobj, match->data); > > if (err) > > - goto error; > > + return err; > > > > data->hwmon_dev = hwmon_device_register(&pdev->dev); > > if (IS_ERR(data->hwmon_dev)) { > > - err = PTR_ERR(data->hwmon_dev); > > - goto error; > > + sysfs_remove_group(&pdev->dev.kobj, match->data); > > + return PTR_ERR(data->hwmon_dev); > > This change is unrelated and violates coding style. If the goto disturbs you, > I would suggest to convert the driver to use devm_hwmon_device_register_with_groups() > in a separate patch and get rid of the error handling and the entire remove() function. Ok, will do, thanks! Pawe? From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756948AbaAHP5x (ORCPT ); Wed, 8 Jan 2014 10:57:53 -0500 Received: from fw-tnat.austin.arm.com ([217.140.110.23]:10121 "EHLO collaborate-mta1.arm.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756876AbaAHP5t (ORCPT ); Wed, 8 Jan 2014 10:57:49 -0500 Message-ID: <1389196669.23721.17.camel@hornet> Subject: Re: [RFC 08/18] hwmon: vexpress: Use regmap instead of custom interface From: Pawel Moll To: Guenter Roeck Cc: "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , Samuel Ortiz , Arnd Bergmann , Jon Medhurst , "arm@kernel.org" , Olof Johansson , Jean Delvare , "lm-sensors@lm-sensors.org" Date: Wed, 08 Jan 2014 15:57:49 +0000 In-Reply-To: <20131223173139.GA1678@roeck-us.net> References: <1387815830-8794-1-git-send-email-pawel.moll@arm.com> <1387815830-8794-9-git-send-email-pawel.moll@arm.com> <20131223173139.GA1678@roeck-us.net> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.8.4-0ubuntu1 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 2013-12-23 at 17:31 +0000, Guenter Roeck wrote: > On Mon, Dec 23, 2013 at 04:23:40PM +0000, Pawel Moll wrote: > > This patch makes the Versatile Express hwmon driver > > use regmap interface, instead of custom vexpress config > > one. It will request the regmap resource associated > > with the device, which makes it pretty much hardware > > agnostic. > > > > Signed-off-by: Pawel Moll > > Cc: Jean Delvare > > Cc: Guenter Roeck > > Cc: lm-sensors@lm-sensors.org > > --- > > drivers/hwmon/Kconfig | 3 ++- > > drivers/hwmon/vexpress.c | 29 +++++++++++------------------ > > 2 files changed, 13 insertions(+), 19 deletions(-) > > > > diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig > > index 52d548f..7747a47 100644 > > --- a/drivers/hwmon/Kconfig > > +++ b/drivers/hwmon/Kconfig > > @@ -1324,7 +1324,8 @@ config SENSORS_TWL4030_MADC > > > > config SENSORS_VEXPRESS > > tristate "Versatile Express" > > - depends on VEXPRESS_CONFIG > > + depends on ARM || ARM64 > > + depends on REGMAP > > help > > This driver provides support for hardware sensors available on > > the ARM Ltd's Versatile Express platform. It can provide wide > > diff --git a/drivers/hwmon/vexpress.c b/drivers/hwmon/vexpress.c > > index d867e6b..b58cf1c 100644 > > --- a/drivers/hwmon/vexpress.c > > +++ b/drivers/hwmon/vexpress.c > > @@ -22,11 +22,11 @@ > > #include > > #include > > #include > > -#include > > +#include > > > > struct vexpress_hwmon_data { > > struct device *hwmon_dev; > > - struct vexpress_config_func *func; > > + struct regmap *reg; > > }; > > > > static ssize_t vexpress_hwmon_name_show(struct device *dev, > > @@ -56,7 +56,7 @@ static ssize_t vexpress_hwmon_u32_show(struct device *dev, > > int err; > > u32 value; > > > > - err = vexpress_config_read(data->func, 0, &value); > > + err = regmap_read(data->reg, 0, &value); > > if (err) > > return err; > > > > @@ -69,13 +69,13 @@ static ssize_t vexpress_hwmon_u64_show(struct device *dev, > > { > > struct vexpress_hwmon_data *data = dev_get_drvdata(dev); > > int err; > > - u32 value_hi, value_lo; > > + unsigned int value_hi, value_lo; > > > > - err = vexpress_config_read(data->func, 0, &value_lo); > > + err = regmap_read(data->reg, 0, &value_lo); > > if (err) > > return err; > > > > - err = vexpress_config_read(data->func, 1, &value_hi); > > + err = regmap_read(data->reg, 1, &value_hi); > > if (err) > > return err; > > > > @@ -175,26 +175,21 @@ static int vexpress_hwmon_probe(struct platform_device *pdev) > > if (!match) > > return -ENODEV; > > > > - data->func = vexpress_config_func_get_by_dev(&pdev->dev); > > - if (!data->func) > > + data->reg = dev_get_regmap(&pdev->dev, NULL); > > + if (!data->reg) > > return -ENODEV; > > > > err = sysfs_create_group(&pdev->dev.kobj, match->data); > > if (err) > > - goto error; > > + return err; > > > > data->hwmon_dev = hwmon_device_register(&pdev->dev); > > if (IS_ERR(data->hwmon_dev)) { > > - err = PTR_ERR(data->hwmon_dev); > > - goto error; > > + sysfs_remove_group(&pdev->dev.kobj, match->data); > > + return PTR_ERR(data->hwmon_dev); > > This change is unrelated and violates coding style. If the goto disturbs you, > I would suggest to convert the driver to use devm_hwmon_device_register_with_groups() > in a separate patch and get rid of the error handling and the entire remove() function. Ok, will do, thanks! Paweł