From: Andreas Werner <andreas.werner@men.de>
To: Lee Jones <lee.jones@linaro.org>
Cc: Andreas Werner <andreas.werner@men.de>,
linux-kernel@vger.kernel.org, sameo@linux.intel.com,
wim@iguana.be, linux-watchdog@vger.kernel.org,
cooloney@gmail.com, rpurdie@rpsys.net,
linux-leds@vger.kernel.org, jdelvare@suse.de, linux@roeck-us.net,
lm-sensors@lm-sensors.org, johannes.thumshirn@men.de
Subject: Re: [PATCH v5 1/4] drivers/mfd/menf21bmc: introduce MEN 14F021P00 BMC MFD Core driver
Date: Wed, 27 Aug 2014 12:36:38 +0200 [thread overview]
Message-ID: <20140827103638.GA30142@awelinux> (raw)
In-Reply-To: <20140827072633.GY26707@lee--X1>
On Wed, Aug 27, 2014 at 08:26:33AM +0100, Lee Jones wrote:
> On Tue, 26 Aug 2014, Andreas Werner wrote:
> > The MEN 14F021P00 Board Management Controller provides an
> > I2C interface to the host to access the feature implemented in the BMC.
> > The BMC is a PIC Microntroller assembled on CPCI Card from MEN Mikroelektronik
> > and on a few Box/Display Computer.
> >
> > Added MFD Core driver, supporting the I2C communication to the device.
> >
> > The MFD driver currently supports the following features:
> > - Watchdog
> > - LEDs
> > - Hwmon (voltage monitoring)
> >
> > Signed-off-by: Andreas Werner <andreas.werner@men.de>
> > Acked-by: Lee Jones <lee.jones@linaro.org>
> > ---
> > drivers/mfd/Kconfig | 12 +++++
> > drivers/mfd/Makefile | 1 +
> > drivers/mfd/menf21bmc.c | 132 ++++++++++++++++++++++++++++++++++++++++++++++++
> > 3 files changed, 145 insertions(+)
> > create mode 100644 drivers/mfd/menf21bmc.c
> >
> > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> > index b8d9ca0..6a9f101 100644
> > --- a/drivers/mfd/Kconfig
> > +++ b/drivers/mfd/Kconfig
> > @@ -453,6 +453,18 @@ config MFD_MAX8998
> > additional drivers must be enabled in order to use the functionality
> > of the device.
> >
> > +config MFD_MENF21BMC
> > + tristate "MEN 14F021P00 Board Management Controller Support"
> > + depends on I2C
> > + select MFD_CORE
> > + help
> > + Say yes here to add support for the MEN 14F021P00 BMC
> > + which is a Board Management Controller connected to the I2C bus.
> > + The device supports multiple sub-devices like LED, HWMON and WDT.
>
> Nit: Whitespace error.
>
Forgot to run checkpatch on Kconfig since the last change. Will fix it.
> > + This driver provides common support for accessing the devices;
> > + additional drivers must be enabled in order to use the
> > + functionality of the BMC device.
> > +
> > config EZX_PCAP
> > bool "Motorola EZXPCAP Support"
> > depends on SPI_MASTER
> > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> > index 4e2bc25..37bf336 100644
> > --- a/drivers/mfd/Makefile
> > +++ b/drivers/mfd/Makefile
> > @@ -169,6 +169,7 @@ obj-$(CONFIG_MFD_AS3711) += as3711.o
> > obj-$(CONFIG_MFD_AS3722) += as3722.o
> > obj-$(CONFIG_MFD_STW481X) += stw481x.o
> > obj-$(CONFIG_MFD_IPAQ_MICRO) += ipaq-micro.o
> > +obj-$(CONFIG_MFD_MENF21BMC) += menf21bmc.o
> >
> > intel-soc-pmic-objs := intel_soc_pmic_core.o intel_soc_pmic_crc.o
> > obj-$(CONFIG_INTEL_SOC_PMIC) += intel-soc-pmic.o
> > diff --git a/drivers/mfd/menf21bmc.c b/drivers/mfd/menf21bmc.c
> > new file mode 100644
> > index 0000000..a6eb03f
> > --- /dev/null
> > +++ b/drivers/mfd/menf21bmc.c
> > @@ -0,0 +1,132 @@
> > +/*
> > + * MEN 14F021P00 Board Management Controller (BMC) MFD Core Driver.
> > + *
> > + * Copyright (C) 2014 MEN Mikro Elektronik Nuernberg GmbH
> > + *
> > + * This program is free software; you can redistribute it and/or modify it
> > + * under the terms of the GNU General Public License as published by the
> > + * Free Software Foundation; either version 2 of the License, or (at your
> > + * option) any later version.
> > + */
> > +
> > +#include <linux/kernel.h>
> > +#include <linux/device.h>
> > +#include <linux/module.h>
> > +#include <linux/i2c.h>
> > +#include <linux/mfd/core.h>
> > +
> > +#define BMC_CMD_WDT_EXIT_PROD 0x18
> > +#define BMC_CMD_WDT_PROD_STAT 0x19
> > +#define BMC_CMD_REV_MAJOR 0x80
> > +#define BMC_CMD_REV_MINOR 0x81
> > +#define BMC_CMD_REV_MAIN 0x82
> > +
> > +static struct mfd_cell menf21bmc_cell[] = {
> > + { .name = "menf21bmc_wdt", },
> > + { .name = "menf21bmc_led", },
> > + { .name = "menf21bmc_hwmon", }
> > +};
> > +
> > +static int menf21bmc_wdt_exit_prod_mode(struct i2c_client *client)
> > +{
> > + int val, ret;
> > +
> > + val = i2c_smbus_read_byte_data(client, BMC_CMD_WDT_PROD_STAT);
> > + if (val < 0)
> > + return val;
> > +
> > + /*
> > + * Production mode should be not active after delivery of the Board.
> > + * To be sure we check it, inform the user and exit the mode
> > + * if active.
> > + */
> > + if (val == 0x00) {
> > + dev_info(&client->dev,
> > + "BMC in production mode. Exit production mode\n");
> > +
> > + ret = i2c_smbus_write_byte(client, BMC_CMD_WDT_EXIT_PROD);
> > + if (ret < 0)
> > + return ret;
> > + }
> > +
> > + return 0;
> > +}
> > +
> > +static int
> > +menf21bmc_probe(struct i2c_client *client, const struct i2c_device_id *ids)
> > +{
> > + int ret;
> > + int rev_major, rev_minor, rev_main;
>
> Really small nit (as you have to fix the whitespace err anyway):
> Can you change the order of the two lines above please?
No problem.
>
> > + ret = i2c_check_functionality(client->adapter,
> > + I2C_FUNC_SMBUS_BYTE_DATA |
> > + I2C_FUNC_SMBUS_WORD_DATA |
> > + I2C_FUNC_SMBUS_BYTE);
> > + if (!ret)
> > + return -ENODEV;
> > +
> > + rev_major = i2c_smbus_read_word_data(client, BMC_CMD_REV_MAJOR);
> > + if (rev_major < 0) {
> > + dev_err(&client->dev, "failed to get BMC major revision\n");
> > + return rev_major;
> > + }
> > +
> > + rev_minor = i2c_smbus_read_word_data(client, BMC_CMD_REV_MINOR);
> > + if (rev_minor < 0) {
> > + dev_err(&client->dev, "failed to get BMC minor revision\n");
> > + return rev_minor;
> > + }
> > +
> > + rev_main = i2c_smbus_read_word_data(client, BMC_CMD_REV_MAIN);
> > + if (rev_main < 0) {
> > + dev_err(&client->dev, "failed to get BMC main revision\n");
> > + return rev_main;
> > + }
> > +
> > + dev_info(&client->dev, "FW Revision: %02d.%02d.%02d\n",
> > + rev_major, rev_minor, rev_main);
>
> You enforced a 'line > 80 chars' warning in your other driver just so
> you can 'do the right thing' and line up against the '('. :)
>
> Can you do that here please?
>
yes
> > + /*
> > + * We have to exit the Production Mode of the BMC to activate the
> > + * Watchdog functionality and the BIOS life sign monitoring.
> > + */
> > + ret = menf21bmc_wdt_exit_prod_mode(client);
> > + if (ret < 0) {
> > + dev_err(&client->dev, "failed to leave production mode\n");
> > + return ret;
> > + }
> > +
> > + ret = mfd_add_devices(&client->dev, 0, menf21bmc_cell,
> > + ARRAY_SIZE(menf21bmc_cell), NULL, 0, NULL);
>
> Line up to to '('.
>
ok
> > + if (ret < 0) {
> > + dev_err(&client->dev, "failed to add BMC sub-devices\n");
> > + return ret;
> > + }
> > +
> > + return 0;
> > +}
> > +
> > +static int menf21bmc_remove(struct i2c_client *client)
> > +{
> > + mfd_remove_devices(&client->dev);
> > + return 0;
> > +}
> > +
> > +static const struct i2c_device_id menf21bmc_id_table[] = {
> > + { "menf21bmc", 0 },
>
> The second attribute is unused in this driver, please remove it.
>
ok
> > + { }
> > +};
> > +MODULE_DEVICE_TABLE(i2c, menf21bmc_id_table);
> > +
> > +static struct i2c_driver menf21bmc_driver = {
> > + .driver.name = "menf21bmc",
> > + .id_table = menf21bmc_id_table,
> > + .probe = menf21bmc_probe,
> > + .remove = menf21bmc_remove,
> > +};
>
> No DT support?
>
> > +module_i2c_driver(menf21bmc_driver);
> > +
> > +MODULE_DESCRIPTION("MEN 14F021P00 BMC mfd core driver");
>
> s/mfd/MFD
>
> > +MODULE_AUTHOR("Andreas Werner <andreas.werner@men.de>");
> > +MODULE_LICENSE("GPL v2");
>
> --
> Lee Jones
> Linaro STMicroelectronics Landing Team Lead
> Linaro.org │ Open source software for ARM SoCs
> Follow Linaro: Facebook | Twitter | Blog
WARNING: multiple messages have this Message-ID (diff)
From: Andreas Werner <andreas.werner@men.de>
To: Lee Jones <lee.jones@linaro.org>
Cc: Andreas Werner <andreas.werner@men.de>,
<linux-kernel@vger.kernel.org>, <sameo@linux.intel.com>,
<wim@iguana.be>, <linux-watchdog@vger.kernel.org>,
<cooloney@gmail.com>, <rpurdie@rpsys.net>,
<linux-leds@vger.kernel.org>, <jdelvare@suse.de>,
<linux@roeck-us.net>, <lm-sensors@lm-sensors.org>,
<johannes.thumshirn@men.de>
Subject: Re: [PATCH v5 1/4] drivers/mfd/menf21bmc: introduce MEN 14F021P00 BMC MFD Core driver
Date: Wed, 27 Aug 2014 12:36:38 +0200 [thread overview]
Message-ID: <20140827103638.GA30142@awelinux> (raw)
In-Reply-To: <20140827072633.GY26707@lee--X1>
On Wed, Aug 27, 2014 at 08:26:33AM +0100, Lee Jones wrote:
> On Tue, 26 Aug 2014, Andreas Werner wrote:
> > The MEN 14F021P00 Board Management Controller provides an
> > I2C interface to the host to access the feature implemented in the BMC.
> > The BMC is a PIC Microntroller assembled on CPCI Card from MEN Mikroelektronik
> > and on a few Box/Display Computer.
> >
> > Added MFD Core driver, supporting the I2C communication to the device.
> >
> > The MFD driver currently supports the following features:
> > - Watchdog
> > - LEDs
> > - Hwmon (voltage monitoring)
> >
> > Signed-off-by: Andreas Werner <andreas.werner@men.de>
> > Acked-by: Lee Jones <lee.jones@linaro.org>
> > ---
> > drivers/mfd/Kconfig | 12 +++++
> > drivers/mfd/Makefile | 1 +
> > drivers/mfd/menf21bmc.c | 132 ++++++++++++++++++++++++++++++++++++++++++++++++
> > 3 files changed, 145 insertions(+)
> > create mode 100644 drivers/mfd/menf21bmc.c
> >
> > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> > index b8d9ca0..6a9f101 100644
> > --- a/drivers/mfd/Kconfig
> > +++ b/drivers/mfd/Kconfig
> > @@ -453,6 +453,18 @@ config MFD_MAX8998
> > additional drivers must be enabled in order to use the functionality
> > of the device.
> >
> > +config MFD_MENF21BMC
> > + tristate "MEN 14F021P00 Board Management Controller Support"
> > + depends on I2C
> > + select MFD_CORE
> > + help
> > + Say yes here to add support for the MEN 14F021P00 BMC
> > + which is a Board Management Controller connected to the I2C bus.
> > + The device supports multiple sub-devices like LED, HWMON and WDT.
>
> Nit: Whitespace error.
>
Forgot to run checkpatch on Kconfig since the last change. Will fix it.
> > + This driver provides common support for accessing the devices;
> > + additional drivers must be enabled in order to use the
> > + functionality of the BMC device.
> > +
> > config EZX_PCAP
> > bool "Motorola EZXPCAP Support"
> > depends on SPI_MASTER
> > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> > index 4e2bc25..37bf336 100644
> > --- a/drivers/mfd/Makefile
> > +++ b/drivers/mfd/Makefile
> > @@ -169,6 +169,7 @@ obj-$(CONFIG_MFD_AS3711) += as3711.o
> > obj-$(CONFIG_MFD_AS3722) += as3722.o
> > obj-$(CONFIG_MFD_STW481X) += stw481x.o
> > obj-$(CONFIG_MFD_IPAQ_MICRO) += ipaq-micro.o
> > +obj-$(CONFIG_MFD_MENF21BMC) += menf21bmc.o
> >
> > intel-soc-pmic-objs := intel_soc_pmic_core.o intel_soc_pmic_crc.o
> > obj-$(CONFIG_INTEL_SOC_PMIC) += intel-soc-pmic.o
> > diff --git a/drivers/mfd/menf21bmc.c b/drivers/mfd/menf21bmc.c
> > new file mode 100644
> > index 0000000..a6eb03f
> > --- /dev/null
> > +++ b/drivers/mfd/menf21bmc.c
> > @@ -0,0 +1,132 @@
> > +/*
> > + * MEN 14F021P00 Board Management Controller (BMC) MFD Core Driver.
> > + *
> > + * Copyright (C) 2014 MEN Mikro Elektronik Nuernberg GmbH
> > + *
> > + * This program is free software; you can redistribute it and/or modify it
> > + * under the terms of the GNU General Public License as published by the
> > + * Free Software Foundation; either version 2 of the License, or (at your
> > + * option) any later version.
> > + */
> > +
> > +#include <linux/kernel.h>
> > +#include <linux/device.h>
> > +#include <linux/module.h>
> > +#include <linux/i2c.h>
> > +#include <linux/mfd/core.h>
> > +
> > +#define BMC_CMD_WDT_EXIT_PROD 0x18
> > +#define BMC_CMD_WDT_PROD_STAT 0x19
> > +#define BMC_CMD_REV_MAJOR 0x80
> > +#define BMC_CMD_REV_MINOR 0x81
> > +#define BMC_CMD_REV_MAIN 0x82
> > +
> > +static struct mfd_cell menf21bmc_cell[] = {
> > + { .name = "menf21bmc_wdt", },
> > + { .name = "menf21bmc_led", },
> > + { .name = "menf21bmc_hwmon", }
> > +};
> > +
> > +static int menf21bmc_wdt_exit_prod_mode(struct i2c_client *client)
> > +{
> > + int val, ret;
> > +
> > + val = i2c_smbus_read_byte_data(client, BMC_CMD_WDT_PROD_STAT);
> > + if (val < 0)
> > + return val;
> > +
> > + /*
> > + * Production mode should be not active after delivery of the Board.
> > + * To be sure we check it, inform the user and exit the mode
> > + * if active.
> > + */
> > + if (val == 0x00) {
> > + dev_info(&client->dev,
> > + "BMC in production mode. Exit production mode\n");
> > +
> > + ret = i2c_smbus_write_byte(client, BMC_CMD_WDT_EXIT_PROD);
> > + if (ret < 0)
> > + return ret;
> > + }
> > +
> > + return 0;
> > +}
> > +
> > +static int
> > +menf21bmc_probe(struct i2c_client *client, const struct i2c_device_id *ids)
> > +{
> > + int ret;
> > + int rev_major, rev_minor, rev_main;
>
> Really small nit (as you have to fix the whitespace err anyway):
> Can you change the order of the two lines above please?
No problem.
>
> > + ret = i2c_check_functionality(client->adapter,
> > + I2C_FUNC_SMBUS_BYTE_DATA |
> > + I2C_FUNC_SMBUS_WORD_DATA |
> > + I2C_FUNC_SMBUS_BYTE);
> > + if (!ret)
> > + return -ENODEV;
> > +
> > + rev_major = i2c_smbus_read_word_data(client, BMC_CMD_REV_MAJOR);
> > + if (rev_major < 0) {
> > + dev_err(&client->dev, "failed to get BMC major revision\n");
> > + return rev_major;
> > + }
> > +
> > + rev_minor = i2c_smbus_read_word_data(client, BMC_CMD_REV_MINOR);
> > + if (rev_minor < 0) {
> > + dev_err(&client->dev, "failed to get BMC minor revision\n");
> > + return rev_minor;
> > + }
> > +
> > + rev_main = i2c_smbus_read_word_data(client, BMC_CMD_REV_MAIN);
> > + if (rev_main < 0) {
> > + dev_err(&client->dev, "failed to get BMC main revision\n");
> > + return rev_main;
> > + }
> > +
> > + dev_info(&client->dev, "FW Revision: %02d.%02d.%02d\n",
> > + rev_major, rev_minor, rev_main);
>
> You enforced a 'line > 80 chars' warning in your other driver just so
> you can 'do the right thing' and line up against the '('. :)
>
> Can you do that here please?
>
yes
> > + /*
> > + * We have to exit the Production Mode of the BMC to activate the
> > + * Watchdog functionality and the BIOS life sign monitoring.
> > + */
> > + ret = menf21bmc_wdt_exit_prod_mode(client);
> > + if (ret < 0) {
> > + dev_err(&client->dev, "failed to leave production mode\n");
> > + return ret;
> > + }
> > +
> > + ret = mfd_add_devices(&client->dev, 0, menf21bmc_cell,
> > + ARRAY_SIZE(menf21bmc_cell), NULL, 0, NULL);
>
> Line up to to '('.
>
ok
> > + if (ret < 0) {
> > + dev_err(&client->dev, "failed to add BMC sub-devices\n");
> > + return ret;
> > + }
> > +
> > + return 0;
> > +}
> > +
> > +static int menf21bmc_remove(struct i2c_client *client)
> > +{
> > + mfd_remove_devices(&client->dev);
> > + return 0;
> > +}
> > +
> > +static const struct i2c_device_id menf21bmc_id_table[] = {
> > + { "menf21bmc", 0 },
>
> The second attribute is unused in this driver, please remove it.
>
ok
> > + { }
> > +};
> > +MODULE_DEVICE_TABLE(i2c, menf21bmc_id_table);
> > +
> > +static struct i2c_driver menf21bmc_driver = {
> > + .driver.name = "menf21bmc",
> > + .id_table = menf21bmc_id_table,
> > + .probe = menf21bmc_probe,
> > + .remove = menf21bmc_remove,
> > +};
>
> No DT support?
>
> > +module_i2c_driver(menf21bmc_driver);
> > +
> > +MODULE_DESCRIPTION("MEN 14F021P00 BMC mfd core driver");
>
> s/mfd/MFD
>
> > +MODULE_AUTHOR("Andreas Werner <andreas.werner@men.de>");
> > +MODULE_LICENSE("GPL v2");
>
> --
> Lee Jones
> Linaro STMicroelectronics Landing Team Lead
> Linaro.org │ Open source software for ARM SoCs
> Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: Andreas Werner <andreas.werner@men.de>
To: Lee Jones <lee.jones@linaro.org>
Cc: Andreas Werner <andreas.werner@men.de>,
linux-kernel@vger.kernel.org, sameo@linux.intel.com,
wim@iguana.be, linux-watchdog@vger.kernel.org,
cooloney@gmail.com, rpurdie@rpsys.net,
linux-leds@vger.kernel.org, jdelvare@suse.de, linux@roeck-us.net,
lm-sensors@lm-sensors.org, johannes.thumshirn@men.de
Subject: Re: [lm-sensors] [PATCH v5 1/4] drivers/mfd/menf21bmc: introduce MEN 14F021P00 BMC MFD Core driver
Date: Wed, 27 Aug 2014 10:36:38 +0000 [thread overview]
Message-ID: <20140827103638.GA30142@awelinux> (raw)
In-Reply-To: <20140827072633.GY26707@lee--X1>
T24gV2VkLCBBdWcgMjcsIDIwMTQgYXQgMDg6MjY6MzNBTSArMDEwMCwgTGVlIEpvbmVzIHdyb3Rl
Ogo+IE9uIFR1ZSwgMjYgQXVnIDIwMTQsIEFuZHJlYXMgV2VybmVyIHdyb3RlOgo+ID4gVGhlIE1F
TiAxNEYwMjFQMDAgQm9hcmQgTWFuYWdlbWVudCBDb250cm9sbGVyIHByb3ZpZGVzIGFuCj4gPiBJ
MkMgaW50ZXJmYWNlIHRvIHRoZSBob3N0IHRvIGFjY2VzcyB0aGUgZmVhdHVyZSBpbXBsZW1lbnRl
ZCBpbiB0aGUgQk1DLgo+ID4gVGhlIEJNQyBpcyBhIFBJQyBNaWNyb250cm9sbGVyIGFzc2VtYmxl
ZCBvbiBDUENJIENhcmQgZnJvbSBNRU4gTWlrcm9lbGVrdHJvbmlrCj4gPiBhbmQgb24gYSBmZXcg
Qm94L0Rpc3BsYXkgQ29tcHV0ZXIuCj4gPiAKPiA+IEFkZGVkIE1GRCBDb3JlIGRyaXZlciwgc3Vw
cG9ydGluZyB0aGUgSTJDIGNvbW11bmljYXRpb24gdG8gdGhlIGRldmljZS4KPiA+IAo+ID4gVGhl
IE1GRCBkcml2ZXIgY3VycmVudGx5IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6Cj4g
PiAgCS0gV2F0Y2hkb2cKPiA+ICAJLSBMRURzCj4gPiAJLSBId21vbiAodm9sdGFnZSBtb25pdG9y
aW5nKQo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIFdlcm5lciA8YW5kcmVhcy53ZXJu
ZXJAbWVuLmRlPgo+ID4gQWNrZWQtYnk6IExlZSBKb25lcyA8bGVlLmpvbmVzQGxpbmFyby5vcmc+
Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL21mZC9LY29uZmlnICAgICB8ICAxMiArKysrKwo+ID4gIGRy
aXZlcnMvbWZkL01ha2VmaWxlICAgIHwgICAxICsKPiA+ICBkcml2ZXJzL21mZC9tZW5mMjFibWMu
YyB8IDEzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK
PiA+ICAzIGZpbGVzIGNoYW5nZWQsIDE0NSBpbnNlcnRpb25zKCspCj4gPiAgY3JlYXRlIG1vZGUg
MTAwNjQ0IGRyaXZlcnMvbWZkL21lbmYyMWJtYy5jCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2
ZXJzL21mZC9LY29uZmlnIGIvZHJpdmVycy9tZmQvS2NvbmZpZwo+ID4gaW5kZXggYjhkOWNhMC4u
NmE5ZjEwMSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvbWZkL0tjb25maWcKPiA+ICsrKyBiL2Ry
aXZlcnMvbWZkL0tjb25maWcKPiA+IEBAIC00NTMsNiArNDUzLDE4IEBAIGNvbmZpZyBNRkRfTUFY
ODk5OAo+ID4gIAkgIGFkZGl0aW9uYWwgZHJpdmVycyBtdXN0IGJlIGVuYWJsZWQgaW4gb3JkZXIg
dG8gdXNlIHRoZSBmdW5jdGlvbmFsaXR5Cj4gPiAgCSAgb2YgdGhlIGRldmljZS4KPiA+ICAKPiA+
ICtjb25maWcgTUZEX01FTkYyMUJNQwo+ID4gKwl0cmlzdGF0ZSAiTUVOIDE0RjAyMVAwMCBCb2Fy
ZCBNYW5hZ2VtZW50IENvbnRyb2xsZXIgU3VwcG9ydCIKPiA+ICsJZGVwZW5kcyBvbiBJMkMKPiA+
ICsJc2VsZWN0IE1GRF9DT1JFCj4gPiArCWhlbHAKPiA+ICsJICBTYXkgeWVzIGhlcmUgdG8gYWRk
IHN1cHBvcnQgZm9yIHRoZSBNRU4gMTRGMDIxUDAwIEJNQwo+ID4gKwkgIHdoaWNoIGlzIGEgQm9h
cmQgTWFuYWdlbWVudCBDb250cm9sbGVyIGNvbm5lY3RlZCB0byB0aGUgSTJDIGJ1cy4KPiA+ICsJ
ICBUaGUgZGV2aWNlIHN1cHBvcnRzIG11bHRpcGxlIHN1Yi1kZXZpY2VzIGxpa2UgTEVELCBIV01P
TiAgYW5kIFdEVC4KPiAKPiBOaXQ6IFdoaXRlc3BhY2UgZXJyb3IuCj4KCkZvcmdvdCB0byBydW4g
Y2hlY2twYXRjaCBvbiBLY29uZmlnIHNpbmNlIHRoZSBsYXN0IGNoYW5nZS4gV2lsbCBmaXggaXQu
CiAKPiA+ICsJICBUaGlzIGRyaXZlciBwcm92aWRlcyBjb21tb24gc3VwcG9ydCBmb3IgYWNjZXNz
aW5nIHRoZSBkZXZpY2VzOwo+ID4gKwkgIGFkZGl0aW9uYWwgZHJpdmVycyBtdXN0IGJlIGVuYWJs
ZWQgaW4gb3JkZXIgdG8gdXNlIHRoZQo+ID4gKwkgIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIEJNQyBk
ZXZpY2UuCj4gPiArCj4gPiAgY29uZmlnIEVaWF9QQ0FQCj4gPiAgCWJvb2wgIk1vdG9yb2xhIEVa
WFBDQVAgU3VwcG9ydCIKPiA+ICAJZGVwZW5kcyBvbiBTUElfTUFTVEVSCj4gPiBkaWZmIC0tZ2l0
IGEvZHJpdmVycy9tZmQvTWFrZWZpbGUgYi9kcml2ZXJzL21mZC9NYWtlZmlsZQo+ID4gaW5kZXgg
NGUyYmMyNS4uMzdiZjMzNiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvbWZkL01ha2VmaWxlCj4g
PiArKysgYi9kcml2ZXJzL21mZC9NYWtlZmlsZQo+ID4gQEAgLTE2OSw2ICsxNjksNyBAQCBvYmot
JChDT05GSUdfTUZEX0FTMzcxMSkJKz0gYXMzNzExLm8KPiA+ICBvYmotJChDT05GSUdfTUZEX0FT
MzcyMikJKz0gYXMzNzIyLm8KPiA+ICBvYmotJChDT05GSUdfTUZEX1NUVzQ4MVgpCSs9IHN0dzQ4
MXgubwo+ID4gIG9iai0kKENPTkZJR19NRkRfSVBBUV9NSUNSTykJKz0gaXBhcS1taWNyby5vCj4g
PiArb2JqLSQoQ09ORklHX01GRF9NRU5GMjFCTUMpCSs9IG1lbmYyMWJtYy5vCj4gPiAgCj4gPiAg
aW50ZWwtc29jLXBtaWMtb2JqcwkJOj0gaW50ZWxfc29jX3BtaWNfY29yZS5vIGludGVsX3NvY19w
bWljX2NyYy5vCj4gPiAgb2JqLSQoQ09ORklHX0lOVEVMX1NPQ19QTUlDKQkrPSBpbnRlbC1zb2Mt
cG1pYy5vCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvbWVuZjIxYm1jLmMgYi9kcml2ZXJz
L21mZC9tZW5mMjFibWMuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAw
MDAuLmE2ZWIwM2YKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvbWZkL21lbmYy
MWJtYy5jCj4gPiBAQCAtMCwwICsxLDEzMiBAQAo+ID4gKy8qCj4gPiArICogIE1FTiAxNEYwMjFQ
MDAgQm9hcmQgTWFuYWdlbWVudCBDb250cm9sbGVyIChCTUMpIE1GRCBDb3JlIERyaXZlci4KPiA+
ICsgKgo+ID4gKyAqICBDb3B5cmlnaHQgKEMpIDIwMTQgTUVOIE1pa3JvIEVsZWt0cm9uaWsgTnVl
cm5iZXJnIEdtYkgKPiA+ICsgKgo+ID4gKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgIGl0IGFuZC9vciBtb2RpZnkgaXQKPiA+ICsgKiAgdW5k
ZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlCj4gPiArICogIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2
ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNlLCBvciAoYXQgeW91cgo+ID4gKyAqICBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpbmNsdWRlIDxsaW51eC9rZXJu
ZWwuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4
L21vZHVsZS5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KPiA+ICsjaW5jbHVkZSA8bGlu
dXgvbWZkL2NvcmUuaD4KPiA+ICsKPiA+ICsjZGVmaW5lIEJNQ19DTURfV0RUX0VYSVRfUFJPRAkw
eDE4Cj4gPiArI2RlZmluZSBCTUNfQ01EX1dEVF9QUk9EX1NUQVQJMHgxOQo+ID4gKyNkZWZpbmUg
Qk1DX0NNRF9SRVZfTUFKT1IJMHg4MAo+ID4gKyNkZWZpbmUgQk1DX0NNRF9SRVZfTUlOT1IJMHg4
MQo+ID4gKyNkZWZpbmUgQk1DX0NNRF9SRVZfTUFJTgkweDgyCj4gPiArCj4gPiArc3RhdGljIHN0
cnVjdCBtZmRfY2VsbCBtZW5mMjFibWNfY2VsbFtdID0gewo+ID4gKwl7IC5uYW1lID0gIm1lbmYy
MWJtY193ZHQiLCB9LAo+ID4gKwl7IC5uYW1lID0gIm1lbmYyMWJtY19sZWQiLCB9LAo+ID4gKwl7
IC5uYW1lID0gIm1lbmYyMWJtY19od21vbiIsIH0KPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBp
bnQgbWVuZjIxYm1jX3dkdF9leGl0X3Byb2RfbW9kZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50
KQo+ID4gK3sKPiA+ICsJaW50IHZhbCwgcmV0Owo+ID4gKwo+ID4gKwl2YWwgPSBpMmNfc21idXNf
cmVhZF9ieXRlX2RhdGEoY2xpZW50LCBCTUNfQ01EX1dEVF9QUk9EX1NUQVQpOwo+ID4gKwlpZiAo
dmFsIDwgMCkKPiA+ICsJCXJldHVybiB2YWw7Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIFByb2R1
Y3Rpb24gbW9kZSBzaG91bGQgYmUgbm90IGFjdGl2ZSBhZnRlciBkZWxpdmVyeSBvZiB0aGUgQm9h
cmQuCj4gPiArCSAqIFRvIGJlIHN1cmUgd2UgY2hlY2sgaXQsIGluZm9ybSB0aGUgdXNlciBhbmQg
ZXhpdCB0aGUgbW9kZQo+ID4gKwkgKiBpZiBhY3RpdmUuCj4gPiArCSAqLwo+ID4gKwlpZiAodmFs
ID09IDB4MDApIHsKPiA+ICsJCWRldl9pbmZvKCZjbGllbnQtPmRldiwKPiA+ICsJCQkiQk1DIGlu
IHByb2R1Y3Rpb24gbW9kZS4gRXhpdCBwcm9kdWN0aW9uIG1vZGVcbiIpOwo+ID4gKwo+ID4gKwkJ
cmV0ID0gaTJjX3NtYnVzX3dyaXRlX2J5dGUoY2xpZW50LCBCTUNfQ01EX1dEVF9FWElUX1BST0Qp
Owo+ID4gKwkJaWYgKHJldCA8IDApCj4gPiArCQkJcmV0dXJuIHJldDsKPiA+ICsJfQo+ID4gKwo+
ID4gKwlyZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludAo+ID4gK21lbmYyMWJt
Y19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBjb25zdCBzdHJ1Y3QgaTJjX2Rldmlj
ZV9pZCAqaWRzKQo+ID4gK3sKPiA+ICsJaW50IHJldDsKPiA+ICsJaW50IHJldl9tYWpvciwgcmV2
X21pbm9yLCByZXZfbWFpbjsKPiAKPiBSZWFsbHkgc21hbGwgbml0IChhcyB5b3UgaGF2ZSB0byBm
aXggdGhlIHdoaXRlc3BhY2UgZXJyIGFueXdheSk6Cj4gICBDYW4geW91IGNoYW5nZSB0aGUgb3Jk
ZXIgb2YgdGhlIHR3byBsaW5lcyBhYm92ZSBwbGVhc2U/CgpObyBwcm9ibGVtLgoKPiAKPiA+ICsJ
cmV0ID0gaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoY2xpZW50LT5hZGFwdGVyLAo+ID4gKwkJCQkg
ICAgICBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEgfAo+ID4gKwkJCQkgICAgICBJMkNfRlVOQ19T
TUJVU19XT1JEX0RBVEEgfAo+ID4gKwkJCQkgICAgICBJMkNfRlVOQ19TTUJVU19CWVRFKTsKPiA+
ICsJaWYgKCFyZXQpCj4gPiArCQlyZXR1cm4gLUVOT0RFVjsKPiA+ICsKPiA+ICsJcmV2X21ham9y
ID0gaTJjX3NtYnVzX3JlYWRfd29yZF9kYXRhKGNsaWVudCwgQk1DX0NNRF9SRVZfTUFKT1IpOwo+
ID4gKwlpZiAocmV2X21ham9yIDwgMCkgewo+ID4gKwkJZGV2X2VycigmY2xpZW50LT5kZXYsICJm
YWlsZWQgdG8gZ2V0IEJNQyBtYWpvciByZXZpc2lvblxuIik7Cj4gPiArCQlyZXR1cm4gcmV2X21h
am9yOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJldl9taW5vciA9IGkyY19zbWJ1c19yZWFkX3dvcmRf
ZGF0YShjbGllbnQsIEJNQ19DTURfUkVWX01JTk9SKTsKPiA+ICsJaWYgKHJldl9taW5vciA8IDAp
IHsKPiA+ICsJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiZmFpbGVkIHRvIGdldCBCTUMgbWlub3Ig
cmV2aXNpb25cbiIpOwo+ID4gKwkJcmV0dXJuIHJldl9taW5vcjsKPiA+ICsJfQo+ID4gKwo+ID4g
KwlyZXZfbWFpbiA9IGkyY19zbWJ1c19yZWFkX3dvcmRfZGF0YShjbGllbnQsIEJNQ19DTURfUkVW
X01BSU4pOwo+ID4gKwlpZiAocmV2X21haW4gPCAwKSB7Cj4gPiArCQlkZXZfZXJyKCZjbGllbnQt
PmRldiwgImZhaWxlZCB0byBnZXQgQk1DIG1haW4gcmV2aXNpb25cbiIpOwo+ID4gKwkJcmV0dXJu
IHJldl9tYWluOwo+ID4gKwl9Cj4gPiArCj4gPiArCWRldl9pbmZvKCZjbGllbnQtPmRldiwgIkZX
IFJldmlzaW9uOiAlMDJkLiUwMmQuJTAyZFxuIiwKPiA+ICsJCQkJCXJldl9tYWpvciwgcmV2X21p
bm9yLCByZXZfbWFpbik7Cj4gCj4gWW91IGVuZm9yY2VkIGEgJ2xpbmUgPiA4MCBjaGFycycgd2Fy
bmluZyBpbiB5b3VyIG90aGVyIGRyaXZlciBqdXN0IHNvCj4geW91IGNhbiAnZG8gdGhlIHJpZ2h0
IHRoaW5nJyBhbmQgbGluZSB1cCBhZ2FpbnN0IHRoZSAnKCcuIDopCj4gCj4gQ2FuIHlvdSBkbyB0
aGF0IGhlcmUgcGxlYXNlPwo+IAoKeWVzCgo+ID4gKwkvKgo+ID4gKwkgKiBXZSBoYXZlIHRvIGV4
aXQgdGhlIFByb2R1Y3Rpb24gTW9kZSBvZiB0aGUgQk1DIHRvIGFjdGl2YXRlIHRoZQo+ID4gKwkg
KiBXYXRjaGRvZyBmdW5jdGlvbmFsaXR5IGFuZCB0aGUgQklPUyBsaWZlIHNpZ24gbW9uaXRvcmlu
Zy4KPiA+ICsJICovCj4gPiArCXJldCA9IG1lbmYyMWJtY193ZHRfZXhpdF9wcm9kX21vZGUoY2xp
ZW50KTsKPiA+ICsJaWYgKHJldCA8IDApIHsKPiA+ICsJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAi
ZmFpbGVkIHRvIGxlYXZlIHByb2R1Y3Rpb24gbW9kZVxuIik7Cj4gPiArCQlyZXR1cm4gcmV0Owo+
ID4gKwl9Cj4gPiArCj4gPiArCXJldCA9IG1mZF9hZGRfZGV2aWNlcygmY2xpZW50LT5kZXYsIDAs
IG1lbmYyMWJtY19jZWxsLAo+ID4gKwkJCQlBUlJBWV9TSVpFKG1lbmYyMWJtY19jZWxsKSwgTlVM
TCwgMCwgTlVMTCk7Cj4gCj4gTGluZSB1cCB0byB0byAnKCcuCj4gCgpvawoKPiA+ICsJaWYgKHJl
dCA8IDApIHsKPiA+ICsJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiZmFpbGVkIHRvIGFkZCBCTUMg
c3ViLWRldmljZXNcbiIpOwo+ID4gKwkJcmV0dXJuIHJldDsKPiA+ICsJfQo+ID4gKwo+ID4gKwly
ZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBtZW5mMjFibWNfcmVtb3ZlKHN0
cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gPiArewo+ID4gKwltZmRfcmVtb3ZlX2RldmljZXMo
JmNsaWVudC0+ZGV2KTsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBj
b25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBtZW5mMjFibWNfaWRfdGFibGVbXSA9IHsKPiA+ICsJ
eyAibWVuZjIxYm1jIiwgMCB9LAo+IAo+IFRoZSBzZWNvbmQgYXR0cmlidXRlIGlzIHVudXNlZCBp
biB0aGlzIGRyaXZlciwgcGxlYXNlIHJlbW92ZSBpdC4KPiAKCm9rCgo+ID4gKwl7IH0KPiA+ICt9
Owo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBtZW5mMjFibWNfaWRfdGFibGUpOwo+ID4g
Kwo+ID4gK3N0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBtZW5mMjFibWNfZHJpdmVyID0gewo+ID4g
KwkuZHJpdmVyLm5hbWUJPSAibWVuZjIxYm1jIiwKPiA+ICsJLmlkX3RhYmxlCT0gbWVuZjIxYm1j
X2lkX3RhYmxlLAo+ID4gKwkucHJvYmUJCT0gbWVuZjIxYm1jX3Byb2JlLAo+ID4gKwkucmVtb3Zl
CQk9IG1lbmYyMWJtY19yZW1vdmUsCj4gPiArfTsKPiAKPiBObyBEVCBzdXBwb3J0Pwo+IAo+ID4g
K21vZHVsZV9pMmNfZHJpdmVyKG1lbmYyMWJtY19kcml2ZXIpOwo+ID4gKwo+ID4gK01PRFVMRV9E
RVNDUklQVElPTigiTUVOIDE0RjAyMVAwMCBCTUMgbWZkIGNvcmUgZHJpdmVyIik7Cj4gCj4gcy9t
ZmQvTUZECj4gCj4gPiArTU9EVUxFX0FVVEhPUigiQW5kcmVhcyBXZXJuZXIgPGFuZHJlYXMud2Vy
bmVyQG1lbi5kZT4iKTsKPiA+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cj4gCj4gLS0gCj4g
TGVlIEpvbmVzCj4gTGluYXJvIFNUTWljcm9lbGVjdHJvbmljcyBMYW5kaW5nIFRlYW0gTGVhZAo+
IExpbmFyby5vcmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJlIGZvciBBUk0gU29Dcwo+IEZvbGxv
dyBMaW5hcm86IEZhY2Vib29rIHwgVHdpdHRlciB8IEJsb2cKCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNl
bnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4v
bGlzdGluZm8vbG0tc2Vuc29ycw=
WARNING: multiple messages have this Message-ID (diff)
From: Andreas Werner <andreas.werner@men.de>
To: Lee Jones <lee.jones@linaro.org>
Cc: Andreas Werner <andreas.werner@men.de>,
<linux-kernel@vger.kernel.org>, <sameo@linux.intel.com>,
<wim@iguana.be>, <linux-watchdog@vger.kernel.org>,
<cooloney@gmail.com>, <rpurdie@rpsys.net>,
<linux-leds@vger.kernel.org>, <jdelvare@suse.de>,
<linux@roeck-us.net>, <lm-sensors@lm-sensors.org>,
<johannes.thumshirn@men.de>
Subject: Re: [PATCH v5 1/4] drivers/mfd/menf21bmc: introduce MEN 14F021P00 BMC MFD Core driver
Date: Wed, 27 Aug 2014 12:36:38 +0200 [thread overview]
Message-ID: <20140827103638.GA30142@awelinux> (raw)
In-Reply-To: <20140827072633.GY26707@lee--X1>
On Wed, Aug 27, 2014 at 08:26:33AM +0100, Lee Jones wrote:
> On Tue, 26 Aug 2014, Andreas Werner wrote:
> > The MEN 14F021P00 Board Management Controller provides an
> > I2C interface to the host to access the feature implemented in the BMC.
> > The BMC is a PIC Microntroller assembled on CPCI Card from MEN Mikroelektronik
> > and on a few Box/Display Computer.
> >
> > Added MFD Core driver, supporting the I2C communication to the device.
> >
> > The MFD driver currently supports the following features:
> > - Watchdog
> > - LEDs
> > - Hwmon (voltage monitoring)
> >
> > Signed-off-by: Andreas Werner <andreas.werner@men.de>
> > Acked-by: Lee Jones <lee.jones@linaro.org>
> > ---
> > drivers/mfd/Kconfig | 12 +++++
> > drivers/mfd/Makefile | 1 +
> > drivers/mfd/menf21bmc.c | 132 ++++++++++++++++++++++++++++++++++++++++++++++++
> > 3 files changed, 145 insertions(+)
> > create mode 100644 drivers/mfd/menf21bmc.c
> >
> > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> > index b8d9ca0..6a9f101 100644
> > --- a/drivers/mfd/Kconfig
> > +++ b/drivers/mfd/Kconfig
> > @@ -453,6 +453,18 @@ config MFD_MAX8998
> > additional drivers must be enabled in order to use the functionality
> > of the device.
> >
> > +config MFD_MENF21BMC
> > + tristate "MEN 14F021P00 Board Management Controller Support"
> > + depends on I2C
> > + select MFD_CORE
> > + help
> > + Say yes here to add support for the MEN 14F021P00 BMC
> > + which is a Board Management Controller connected to the I2C bus.
> > + The device supports multiple sub-devices like LED, HWMON and WDT.
>
> Nit: Whitespace error.
>
Forgot to run checkpatch on Kconfig since the last change. Will fix it.
> > + This driver provides common support for accessing the devices;
> > + additional drivers must be enabled in order to use the
> > + functionality of the BMC device.
> > +
> > config EZX_PCAP
> > bool "Motorola EZXPCAP Support"
> > depends on SPI_MASTER
> > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> > index 4e2bc25..37bf336 100644
> > --- a/drivers/mfd/Makefile
> > +++ b/drivers/mfd/Makefile
> > @@ -169,6 +169,7 @@ obj-$(CONFIG_MFD_AS3711) += as3711.o
> > obj-$(CONFIG_MFD_AS3722) += as3722.o
> > obj-$(CONFIG_MFD_STW481X) += stw481x.o
> > obj-$(CONFIG_MFD_IPAQ_MICRO) += ipaq-micro.o
> > +obj-$(CONFIG_MFD_MENF21BMC) += menf21bmc.o
> >
> > intel-soc-pmic-objs := intel_soc_pmic_core.o intel_soc_pmic_crc.o
> > obj-$(CONFIG_INTEL_SOC_PMIC) += intel-soc-pmic.o
> > diff --git a/drivers/mfd/menf21bmc.c b/drivers/mfd/menf21bmc.c
> > new file mode 100644
> > index 0000000..a6eb03f
> > --- /dev/null
> > +++ b/drivers/mfd/menf21bmc.c
> > @@ -0,0 +1,132 @@
> > +/*
> > + * MEN 14F021P00 Board Management Controller (BMC) MFD Core Driver.
> > + *
> > + * Copyright (C) 2014 MEN Mikro Elektronik Nuernberg GmbH
> > + *
> > + * This program is free software; you can redistribute it and/or modify it
> > + * under the terms of the GNU General Public License as published by the
> > + * Free Software Foundation; either version 2 of the License, or (at your
> > + * option) any later version.
> > + */
> > +
> > +#include <linux/kernel.h>
> > +#include <linux/device.h>
> > +#include <linux/module.h>
> > +#include <linux/i2c.h>
> > +#include <linux/mfd/core.h>
> > +
> > +#define BMC_CMD_WDT_EXIT_PROD 0x18
> > +#define BMC_CMD_WDT_PROD_STAT 0x19
> > +#define BMC_CMD_REV_MAJOR 0x80
> > +#define BMC_CMD_REV_MINOR 0x81
> > +#define BMC_CMD_REV_MAIN 0x82
> > +
> > +static struct mfd_cell menf21bmc_cell[] = {
> > + { .name = "menf21bmc_wdt", },
> > + { .name = "menf21bmc_led", },
> > + { .name = "menf21bmc_hwmon", }
> > +};
> > +
> > +static int menf21bmc_wdt_exit_prod_mode(struct i2c_client *client)
> > +{
> > + int val, ret;
> > +
> > + val = i2c_smbus_read_byte_data(client, BMC_CMD_WDT_PROD_STAT);
> > + if (val < 0)
> > + return val;
> > +
> > + /*
> > + * Production mode should be not active after delivery of the Board.
> > + * To be sure we check it, inform the user and exit the mode
> > + * if active.
> > + */
> > + if (val == 0x00) {
> > + dev_info(&client->dev,
> > + "BMC in production mode. Exit production mode\n");
> > +
> > + ret = i2c_smbus_write_byte(client, BMC_CMD_WDT_EXIT_PROD);
> > + if (ret < 0)
> > + return ret;
> > + }
> > +
> > + return 0;
> > +}
> > +
> > +static int
> > +menf21bmc_probe(struct i2c_client *client, const struct i2c_device_id *ids)
> > +{
> > + int ret;
> > + int rev_major, rev_minor, rev_main;
>
> Really small nit (as you have to fix the whitespace err anyway):
> Can you change the order of the two lines above please?
No problem.
>
> > + ret = i2c_check_functionality(client->adapter,
> > + I2C_FUNC_SMBUS_BYTE_DATA |
> > + I2C_FUNC_SMBUS_WORD_DATA |
> > + I2C_FUNC_SMBUS_BYTE);
> > + if (!ret)
> > + return -ENODEV;
> > +
> > + rev_major = i2c_smbus_read_word_data(client, BMC_CMD_REV_MAJOR);
> > + if (rev_major < 0) {
> > + dev_err(&client->dev, "failed to get BMC major revision\n");
> > + return rev_major;
> > + }
> > +
> > + rev_minor = i2c_smbus_read_word_data(client, BMC_CMD_REV_MINOR);
> > + if (rev_minor < 0) {
> > + dev_err(&client->dev, "failed to get BMC minor revision\n");
> > + return rev_minor;
> > + }
> > +
> > + rev_main = i2c_smbus_read_word_data(client, BMC_CMD_REV_MAIN);
> > + if (rev_main < 0) {
> > + dev_err(&client->dev, "failed to get BMC main revision\n");
> > + return rev_main;
> > + }
> > +
> > + dev_info(&client->dev, "FW Revision: %02d.%02d.%02d\n",
> > + rev_major, rev_minor, rev_main);
>
> You enforced a 'line > 80 chars' warning in your other driver just so
> you can 'do the right thing' and line up against the '('. :)
>
> Can you do that here please?
>
yes
> > + /*
> > + * We have to exit the Production Mode of the BMC to activate the
> > + * Watchdog functionality and the BIOS life sign monitoring.
> > + */
> > + ret = menf21bmc_wdt_exit_prod_mode(client);
> > + if (ret < 0) {
> > + dev_err(&client->dev, "failed to leave production mode\n");
> > + return ret;
> > + }
> > +
> > + ret = mfd_add_devices(&client->dev, 0, menf21bmc_cell,
> > + ARRAY_SIZE(menf21bmc_cell), NULL, 0, NULL);
>
> Line up to to '('.
>
ok
> > + if (ret < 0) {
> > + dev_err(&client->dev, "failed to add BMC sub-devices\n");
> > + return ret;
> > + }
> > +
> > + return 0;
> > +}
> > +
> > +static int menf21bmc_remove(struct i2c_client *client)
> > +{
> > + mfd_remove_devices(&client->dev);
> > + return 0;
> > +}
> > +
> > +static const struct i2c_device_id menf21bmc_id_table[] = {
> > + { "menf21bmc", 0 },
>
> The second attribute is unused in this driver, please remove it.
>
ok
> > + { }
> > +};
> > +MODULE_DEVICE_TABLE(i2c, menf21bmc_id_table);
> > +
> > +static struct i2c_driver menf21bmc_driver = {
> > + .driver.name = "menf21bmc",
> > + .id_table = menf21bmc_id_table,
> > + .probe = menf21bmc_probe,
> > + .remove = menf21bmc_remove,
> > +};
>
> No DT support?
>
> > +module_i2c_driver(menf21bmc_driver);
> > +
> > +MODULE_DESCRIPTION("MEN 14F021P00 BMC mfd core driver");
>
> s/mfd/MFD
>
> > +MODULE_AUTHOR("Andreas Werner <andreas.werner@men.de>");
> > +MODULE_LICENSE("GPL v2");
>
> --
> Lee Jones
> Linaro STMicroelectronics Landing Team Lead
> Linaro.org │ Open source software for ARM SoCs
> Follow Linaro: Facebook | Twitter | Blog
next prev parent reply other threads:[~2014-08-27 9:44 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-26 17:45 [PATCH v5 0/4] Introduce MEN 14F021P00 BMC driver series Andreas Werner
2014-08-26 17:45 ` [lm-sensors] " Andreas Werner
2014-08-26 17:45 ` Andreas Werner
2014-08-26 17:45 ` [PATCH v5 1/4] drivers/mfd/menf21bmc: introduce MEN 14F021P00 BMC MFD Core driver Andreas Werner
2014-08-26 17:45 ` [lm-sensors] " Andreas Werner
2014-08-26 17:45 ` Andreas Werner
2014-08-27 7:26 ` Lee Jones
2014-08-27 7:26 ` [lm-sensors] " Lee Jones
2014-08-27 7:26 ` Lee Jones
2014-08-27 10:36 ` Andreas Werner [this message]
2014-08-27 10:36 ` Andreas Werner
2014-08-27 10:36 ` [lm-sensors] " Andreas Werner
2014-08-27 10:36 ` Andreas Werner
2014-08-27 10:52 ` Andreas Werner
2014-08-27 10:52 ` Andreas Werner
2014-08-27 10:52 ` [lm-sensors] " Andreas Werner
2014-08-27 10:52 ` Andreas Werner
2014-08-27 11:01 ` Lee Jones
2014-08-27 11:01 ` [lm-sensors] " Lee Jones
2014-08-27 12:00 ` Andreas Werner
2014-08-27 12:00 ` Andreas Werner
2014-08-27 12:00 ` [lm-sensors] " Andreas Werner
2014-08-27 11:29 ` Lee Jones
2014-08-27 11:29 ` [lm-sensors] " Lee Jones
2014-08-27 13:37 ` Guenter Roeck
2014-08-27 13:37 ` [lm-sensors] " Guenter Roeck
2014-08-27 13:46 ` Lee Jones
2014-08-27 13:46 ` [lm-sensors] " Lee Jones
2014-08-26 17:46 ` [PATCH v5 2/4] drivers/watchdog/menf21bmc_wdt: introduce MEN 14F021P00 BMC Watchdog driver Andreas Werner
2014-08-26 17:46 ` [lm-sensors] [PATCH v5 2/4] drivers/watchdog/menf21bmc_wdt: introduce MEN 14F021P00 BMC Watchdog dri Andreas Werner
2014-08-26 17:46 ` [PATCH v5 2/4] drivers/watchdog/menf21bmc_wdt: introduce MEN 14F021P00 BMC Watchdog driver Andreas Werner
2014-08-26 17:46 ` [PATCH v5 3/4] drivers/leds/leds-menf21bmc: introduce MEN 14F021P00 BMC LED driver Andreas Werner
2014-08-26 17:46 ` [lm-sensors] " Andreas Werner
2014-08-26 17:46 ` Andreas Werner
2014-08-26 17:46 ` [PATCH v5 4/4] drivers/hwmon/menf21bmc_hwmon: introduce MEN14F021P00 BMC HWMON driver Andreas Werner
2014-08-26 17:46 ` [lm-sensors] " Andreas Werner
2014-08-26 17:46 ` Andreas Werner
2014-08-26 17:15 ` Guenter Roeck
2014-08-26 17:15 ` [lm-sensors] [PATCH v5 4/4] drivers/hwmon/menf21bmc_hwmon: introduce MEN14F021P00 BMC HWMON driv Guenter Roeck
2014-08-27 7:58 ` [PATCH v5 4/4] drivers/hwmon/menf21bmc_hwmon: introduce MEN14F021P00 BMC HWMON driver Andreas Werner
2014-08-27 7:58 ` [lm-sensors] [PATCH v5 4/4] drivers/hwmon/menf21bmc_hwmon: introduce MEN14F021P00 BMC HWMON driv Andreas Werner
2014-08-27 7:58 ` [PATCH v5 4/4] drivers/hwmon/menf21bmc_hwmon: introduce MEN14F021P00 BMC HWMON driver Andreas Werner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140827103638.GA30142@awelinux \
--to=andreas.werner@men.de \
--cc=cooloney@gmail.com \
--cc=jdelvare@suse.de \
--cc=johannes.thumshirn@men.de \
--cc=lee.jones@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-leds@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=lm-sensors@lm-sensors.org \
--cc=rpurdie@rpsys.net \
--cc=sameo@linux.intel.com \
--cc=wim@iguana.be \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.