From: Lee Jones <lee.jones@linaro.org>
To: Wenyou Yang <wenyou.yang@atmel.com>
Cc: Rob Herring <robh+dt@kernel.org>, Pawel Moll <pawel.moll@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Ian Campbell <ijc+devicetree@hellion.org.uk>,
Kumar Gala <galak@codeaurora.org>,
Nicolas Ferre <nicolas.ferre@atmel.com>,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH 1/2] mfd: act8945a: add Active-semi ACT8945A PMIC MFD driver
Date: Mon, 11 Jan 2016 05:49:17 +0000 [thread overview]
Message-ID: <20160111054917.GF3331@x1> (raw)
In-Reply-To: <1452218729-11357-2-git-send-email-wenyou.yang@atmel.com>
On Fri, 08 Jan 2016, Wenyou Yang wrote:
> This patch adds support for the Active-semi ACT8945A PMIC.
> It is a Multi Function Device with the following subdevices:
> - Regulator
> - Charger
>
> It is interfaced to the host controller using I2C interface,
> ACT8945A is a child device of the I2C.
>
> Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
> ---
>
> drivers/mfd/Kconfig | 8 +++
> drivers/mfd/Makefile | 1 +
> drivers/mfd/act8945a.c | 122 ++++++++++++++++++++++++++++++++++++++++++
> include/linux/mfd/act8945a.h | 25 +++++++++
> 4 files changed, 156 insertions(+)
> create mode 100644 drivers/mfd/act8945a.c
> create mode 100644 include/linux/mfd/act8945a.h
>
> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index 9581ebb..018c72d 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -18,6 +18,14 @@ config MFD_CS5535
> This is the core driver for CS5535/CS5536 MFD functions. This is
> necessary for using the board's GPIO and MFGPT functionality.
>
> +config MFD_ACT8945A
> + bool "Active-semi ACT8945A"
> + select MFD_CORE
> + select REGMAP_I2C
> + depends on I2C && OF
> + help
> + Support for the ACT8945A PMIC from Active-Semi
Checkpatch usually complains about single line helps.
> config MFD_AS3711
> bool "AMS AS3711"
> select MFD_CORE
> diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> index 0f230a6..2f1ca82 100644
> --- a/drivers/mfd/Makefile
> +++ b/drivers/mfd/Makefile
> @@ -6,6 +6,7 @@
> obj-$(CONFIG_MFD_88PM860X) += 88pm860x.o
> obj-$(CONFIG_MFD_88PM800) += 88pm800.o 88pm80x.o
> obj-$(CONFIG_MFD_88PM805) += 88pm805.o 88pm80x.o
> +obj-$(CONFIG_MFD_ACT8945A) += act8945a.o
> obj-$(CONFIG_MFD_SM501) += sm501.o
> obj-$(CONFIG_MFD_ASIC3) += asic3.o tmio_core.o
> obj-$(CONFIG_MFD_BCM590XX) += bcm590xx.o
> diff --git a/drivers/mfd/act8945a.c b/drivers/mfd/act8945a.c
> new file mode 100644
> index 0000000..b9b8685
> --- /dev/null
> +++ b/drivers/mfd/act8945a.c
> @@ -0,0 +1,122 @@
> +/*
> + * MFD driver for Active-semi ACT8945a PMIC
> + *
> + * Copyright (C) 2015 Atmel Corporation.
Please update this.
> + * Wenyou Yang <wenyou.yang@atmel.com>
* Author: Wenyou Yang <wenyou.yang@atmel.com>
> + * This software is licensed under the terms of the GNU General Public
> + * License version 2, as published by the Free Software Foundation, and
> + * may be copied, distributed, and modified under those terms.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
This is the long version. Any chance it can be shortened?
> + */
> +
> +#include <linux/i2c.h>
> +#include <linux/mfd/act8945a.h>
> +#include <linux/mfd/core.h>
> +#include <linux/module.h>
> +#include <linux/of_device.h>
> +#include <linux/regmap.h>
> +
> +static const struct mfd_cell act8945a_devs[] = {
> + {
> + .name = "act8945a-pmic",
> + .of_compatible = "active-semi,act8945a-regulator",
> + },
> + {
> + .name = "act8945a-charger",
> + .of_compatible = "active-semi,act8945a-charger",
> + },
> +};
> +
> +static const struct regmap_config act8945a_regmap_config = {
> + .reg_bits = 8,
> + .val_bits = 8,
> +};
> +
> +static int act8945a_i2c_probe(struct i2c_client *client,
> + const struct i2c_device_id *id)
> +{
> + struct act8945a_dev *act8945a;
> + int ret;
> +
> + act8945a = devm_kzalloc(&client->dev, sizeof(*act8945a), GFP_KERNEL);
> + if (act8945a == NULL)
if (!act8945a)
> + return -ENOMEM;
> +
> + i2c_set_clientdata(client, act8945a);
> +
> + act8945a->dev = &client->dev;
> + act8945a->i2c_client = client;
If you're saving 'client' already, you don't need to save 'dev' too,
as one can be retrieved from the other.
> + act8945a->regmap = devm_regmap_init_i2c(client,
> + &act8945a_regmap_config);
Don't we have a generic call to obtain a single 8bit register yet?
> + if (IS_ERR(act8945a->regmap)) {
> + ret = PTR_ERR(act8945a->regmap);
> + dev_err(&client->dev, "regmap init failed: %d\n", ret);
> + return ret;
> + }
> +
> + ret = mfd_add_devices(act8945a->dev, -1, act8945a_devs,
Please use the correct defines, instead of '-1'.
> + ARRAY_SIZE(act8945a_devs), NULL, 0, NULL);
> + if (ret < 0) {
if (ret)
> + dev_err(&client->dev, "mfd_add_devices failed: %d\n", ret);
Be more explicit.
"Failed to add sub devices".
> + return ret;
> + }
> +
> + dev_info(&client->dev, "added %zu mfd sub-devices\n",
> + ARRAY_SIZE(act8945a_devs));
This serves no one, please remove.
> + return 0;
> +
> +}
> +
> +static int act8945a_i2c_remove(struct i2c_client *i2c)
> +{
> + struct act8945a_dev *act8945a = i2c_get_clientdata(i2c);
> +
> + mfd_remove_devices(act8945a->dev);
mfd_remove_devices(i2c->dev);
> + return 0;
> +}
> +
> +static const struct i2c_device_id act8945a_i2c_id[] = {
> + { "act8945a", 0 },
> + {}
> +};
> +MODULE_DEVICE_TABLE(i2c, act8945a_i2c_id);
> +
> +static const struct of_device_id act8945a_of_match[] = {
> + {.compatible = "active-semi,act8945a", },
> + {},
> +};
> +MODULE_DEVICE_TABLE(of, act8945a_of_match);
> +
> +static struct i2c_driver act8945a_i2c_driver = {
> + .driver = {
> + .name = "act8945a",
> + .owner = THIS_MODULE,
Remove this line, it's taken care of elsewhere.
> + .of_match_table = of_match_ptr(act8945a_of_match),
> + },
> + .probe = act8945a_i2c_probe,
> + .remove = act8945a_i2c_remove,
> + .id_table = act8945a_i2c_id,
> +};
> +
> +static int __init act8945a_i2c_init(void)
> +{
> + return i2c_add_driver(&act8945a_i2c_driver);
> +}
> +subsys_initcall(act8945a_i2c_init);
> +
> +static void __exit act8945a_i2c_exit(void)
> +{
> + i2c_del_driver(&act8945a_i2c_driver);
> +}
> +module_exit(act8945a_i2c_exit);
> +
> +MODULE_DESCRIPTION("ACT8945A PMIC multi-function driver");
> +MODULE_LICENSE("GPL v2");
> +MODULE_AUTHOR("Wenyou Yang <wenyou.yang@atmel.com>");
> diff --git a/include/linux/mfd/act8945a.h b/include/linux/mfd/act8945a.h
> new file mode 100644
> index 0000000..5b18d16
> --- /dev/null
> +++ b/include/linux/mfd/act8945a.h
> @@ -0,0 +1,25 @@
> +/*
> + * MFD for Active-semi ACT8945A PMIC
> + *
> + * Copyright (C) 2015 Atmel Corporation.
Please update this.
> + * This software is licensed under the terms of the GNU General Public
> + * License version 2, as published by the Free Software Foundation, and
> + * may be copied, distributed, and modified under those terms.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + */
> +
> +#ifndef _LINUX_MFD_ACT8945A_H
> +#define _LINUX_MFD_ACT8945A_H
> +
> +struct act8945a_dev {
> + struct device *dev;
I don't think you need this.
> + struct i2c_client *i2c_client;
Where is this used?
> + struct regmap *regmap;
Where is this used?
> +};
> +
> +#endif
--
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:[~2016-01-11 5:49 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-08 2:05 [PATCH 0/2] mfd: act8945a: add Active-semi ACT8945A PMIC MFD driver Wenyou Yang
2016-01-08 2:05 ` Wenyou Yang
[not found] ` <1452218729-11357-1-git-send-email-wenyou.yang-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>
2016-01-08 2:05 ` [PATCH 1/2] " Wenyou Yang
2016-01-08 2:05 ` Wenyou Yang
2016-01-11 5:49 ` Lee Jones [this message]
2016-01-12 7:40 ` Yang, Wenyou
[not found] ` <1452218729-11357-2-git-send-email-wenyou.yang-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>
2016-03-07 23:54 ` kbuild test robot
2016-03-07 23:54 ` kbuild test robot
2016-03-07 23:54 ` [PATCH] mfd: act8945a: fix platform_no_drv_owner.cocci warnings kbuild test robot
2016-03-07 23:54 ` kbuild test robot
2016-03-08 1:53 ` Yang, Wenyou
2016-03-08 4:50 ` Lee Jones
2016-03-08 4:50 ` Lee Jones
2016-01-08 2:05 ` [PATCH 2/2] mfd: add documentation for ACT8945A DT bindings Wenyou Yang
2016-01-08 2:05 ` Wenyou Yang
2016-01-09 15:38 ` Rob Herring
2016-01-12 8:04 ` Yang, Wenyou
2016-01-12 8:04 ` Yang, Wenyou
[not found] ` <1452218729-11357-3-git-send-email-wenyou.yang-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>
2016-01-11 5:49 ` Lee Jones
2016-01-11 5:49 ` Lee Jones
2016-01-12 7:43 ` Yang, Wenyou
2016-01-12 7:43 ` Yang, Wenyou
2016-01-12 8:53 ` Lee Jones
2016-01-12 8:53 ` Lee Jones
2016-03-08 3:04 ` kbuild test robot
2016-03-08 3:04 ` kbuild test robot
[not found] ` <201603081124.QHccT8lq%fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-03-08 7:57 ` Yang, Wenyou
2016-03-08 7:57 ` Yang, Wenyou
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=20160111054917.GF3331@x1 \
--to=lee.jones@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=galak@codeaurora.org \
--cc=ijc+devicetree@hellion.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=nicolas.ferre@atmel.com \
--cc=pawel.moll@arm.com \
--cc=robh+dt@kernel.org \
--cc=wenyou.yang@atmel.com \
/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.