devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
To: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
Cc: Samuel Ortiz <sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
	Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Liam Girdwood <lgirdwood-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org>,
	Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	Ian Campbell
	<ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>,
	Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: Re: [PATCH 3/6] mfd: axp20x: Add support for RSB based AXP223 PMIC
Date: Fri, 16 Oct 2015 08:41:59 +0200	[thread overview]
Message-ID: <20151016064159.GG2711@lukather> (raw)
In-Reply-To: <1444840342-9233-4-git-send-email-wens-jdAy2FN1RRM@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 5938 bytes --]

On Thu, Oct 15, 2015 at 12:32:19AM +0800, Chen-Yu Tsai wrote:
> The AXP223 is a new PMIC commonly paired with Allwinner A23/A33 SoCs.
> It is functionally identical to AXP221; only the regulator default
> voltage/status and the external host interface are different.
> 
> Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
> ---
>  drivers/mfd/Kconfig        | 12 ++++++
>  drivers/mfd/Makefile       |  1 +
>  drivers/mfd/axp20x-core.c  |  2 +
>  drivers/mfd/axp20x-rsb.c   | 93 ++++++++++++++++++++++++++++++++++++++++++++++
>  include/linux/mfd/axp20x.h |  1 +
>  5 files changed, 109 insertions(+)
>  create mode 100644 drivers/mfd/axp20x-rsb.c
> 
> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index 9ba3feb3f2fc..6e5edb61d42e 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -84,6 +84,7 @@ config MFD_BCM590XX
>  config MFD_AXP20X
>  	bool "X-Powers AXP series PMICs"
>  	select MFD_AXP20X_I2C
> +	select MFD_AXP20X_RSB
>  
>  config MFD_AXP20X_CORE
>  	bool
> @@ -102,6 +103,17 @@ config MFD_AXP20X_I2C
>  	  components like regulators or the PEK (Power Enable Key) under the
>  	  corresponding menus.
>  
> +config MFD_AXP20X_RSB
> +	bool "X-Powers AXP series RSB PMICs"
> +	select MFD_AXP20X_CORE
> +	depends on SUNXI_RSB=y

Do we need that? Even if the bus is compiled as a module, the driver
will not be probed before that, will it?

> +	help
> +	  If you say Y here you get support for the X-Powers AXP series RSB
> +	  based power management ICs (PMICs).
> +	  This driver include only the core APIs. You have to select individual
> +	  components like regulators or the PEK (Power Enable Key) under the
> +	  corresponding menus.
> +
>  config MFD_CROS_EC
>  	tristate "ChromeOS Embedded Controller"
>  	select MFD_CORE
> diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> index ce3ad5fd4e2f..1eb278619dd6 100644
> --- a/drivers/mfd/Makefile
> +++ b/drivers/mfd/Makefile
> @@ -108,6 +108,7 @@ obj-$(CONFIG_MFD_DA9052_SPI)	+= da9052-spi.o
>  obj-$(CONFIG_MFD_DA9052_I2C)	+= da9052-i2c.o
>  obj-$(CONFIG_MFD_AXP20X_CORE)	+= axp20x-core.o
>  obj-$(CONFIG_MFD_AXP20X_I2C)	+= axp20x-i2c.o
> +obj-$(CONFIG_MFD_AXP20X_RSB)	+= axp20x-rsb.o
>  
>  obj-$(CONFIG_MFD_LP3943)	+= lp3943.o
>  obj-$(CONFIG_MFD_LP8788)	+= lp8788.o lp8788-irq.o
> diff --git a/drivers/mfd/axp20x-core.c b/drivers/mfd/axp20x-core.c
> index dd33548d93c4..baecccb6d400 100644
> --- a/drivers/mfd/axp20x-core.c
> +++ b/drivers/mfd/axp20x-core.c
> @@ -32,6 +32,7 @@ static const char * const axp20x_model_names[] = {
>  	"AXP202",
>  	"AXP209",
>  	"AXP221",
> +	"AXP223",
>  	"AXP288",
>  };
>  
> @@ -575,6 +576,7 @@ int axp20x_match_device(struct axp20x_dev *axp20x, struct device *dev)
>  		axp20x->regmap_irq_chip = &axp20x_regmap_irq_chip;
>  		break;
>  	case AXP221_ID:
> +	case AXP223_ID:
>  		axp20x->nr_cells = ARRAY_SIZE(axp22x_cells);
>  		axp20x->cells = axp22x_cells;
>  		axp20x->regmap_cfg = &axp22x_regmap_config;
> diff --git a/drivers/mfd/axp20x-rsb.c b/drivers/mfd/axp20x-rsb.c
> new file mode 100644
> index 000000000000..5d053d177717
> --- /dev/null
> +++ b/drivers/mfd/axp20x-rsb.c
> @@ -0,0 +1,93 @@
> +/*
> + * axp20x-rsb.c - RSB driver for the X-Powers' Power Management ICs
> + *
> + * AXP20x typically comprises an adaptive USB-Compatible PWM charger, BUCK DC-DC
> + * converters, LDOs, multiple 12-bit ADCs of voltage, current and temperature
> + * as well as configurable GPIOs.
> + *
> + * This driver supports the RSB variants.
> + *
> + * Author: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#include <linux/acpi.h>
> +#include <linux/err.h>
> +#include <linux/module.h>
> +#include <linux/mfd/axp20x.h>
> +#include <linux/of_device.h>
> +#include <linux/regmap.h>
> +#include <linux/slab.h>
> +#include <linux/soc/sunxi/sunxi_rsb.h>
> +
> +static const struct of_device_id axp20x_sunxi_rsb_of_match[] = {
> +	{ .compatible = "x-powers,axp223", .data = (void *) AXP223_ID },
> +	{ },
> +};
> +MODULE_DEVICE_TABLE(of, axp20x_sunxi_rsb_of_match);
> +
> +static int axp20x_sunxi_rsb_match_device(struct axp20x_dev *axp20x,
> +					 struct device *dev)
> +{
> +	const struct of_device_id *of_id;
> +
> +	of_id = of_match_device(axp20x_sunxi_rsb_of_match, dev);
> +	if (!of_id) {
> +		dev_err(dev, "Unable to match OF ID\n");
> +		return -ENODEV;
> +	}
> +	axp20x->variant = (long) of_id->data;
> +
> +	return axp20x_match_device(axp20x, dev);
> +}
> +
> +static int axp20x_sunxi_rsb_probe(struct sunxi_rsb_device *rdev)
> +{
> +	struct axp20x_dev *axp20x;
> +	int ret;
> +
> +	axp20x = devm_kzalloc(&rdev->dev, sizeof(*axp20x), GFP_KERNEL);
> +	if (!axp20x)
> +		return -ENOMEM;
> +
> +	ret = axp20x_sunxi_rsb_match_device(axp20x, &rdev->dev);
> +	if (ret)
> +		return ret;
> +
> +	axp20x->dev = &rdev->dev;
> +	axp20x->irq = rdev->irq;
> +	sunxi_rsb_device_set_drvdata(rdev, axp20x);
> +
> +	axp20x->regmap = devm_regmap_init_sunxi_rsb(rdev, axp20x->regmap_cfg);
> +	if (IS_ERR(axp20x->regmap)) {
> +		ret = PTR_ERR(axp20x->regmap);
> +		dev_err(&rdev->dev, "regmap init failed: %d\n", ret);
> +		return ret;
> +	}
> +
> +	return axp20x_device_probe(axp20x);
> +}
> +
> +static int axp20x_sunxi_rsb_remove(struct sunxi_rsb_device *rdev)
> +{
> +	struct axp20x_dev *axp20x = sunxi_rsb_device_get_drvdata(rdev);
> +
> +	return axp20x_device_remove(axp20x);
> +}
> +
> +static struct sunxi_rsb_driver axp20x_sunxi_rsb_driver = {
> +	.driver = {
> +		.name	= "axp20x-sunxi-rsb",

Do we need to be that verbose in the name of the driver?

axp20x-rsb should be enough, especially since it's also the name of
your file.

Looks good otherwise, thanks!
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

  parent reply	other threads:[~2015-10-16  6:41 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-14 16:32 [PATCH 0/6] mfd: axp20x: Add support for RSB based AXP223 Chen-Yu Tsai
     [not found] ` <1444840342-9233-1-git-send-email-wens-jdAy2FN1RRM@public.gmane.org>
2015-10-14 16:32   ` [PATCH 1/6] mfd: axp20x: Add AXP223 to list of supported PMICs in DT bindings Chen-Yu Tsai
     [not found]     ` <1444840342-9233-2-git-send-email-wens-jdAy2FN1RRM@public.gmane.org>
2015-10-15 20:36       ` Maxime Ripard
2015-10-14 16:32   ` [PATCH 2/6] mfd: axp20x: Split the driver into core and i2c bits Chen-Yu Tsai
     [not found]     ` <1444840342-9233-3-git-send-email-wens-jdAy2FN1RRM@public.gmane.org>
2015-10-14 20:22       ` kbuild test robot
2015-10-14 22:37       ` Julian Calaby
     [not found]         ` <CAGRGNgXAtuV+9+i=rRerRX6T9=i6W+dDCBJN8Jh8QS7A82r+VA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-10-15  7:39           ` Chen-Yu Tsai
2015-10-14 16:32   ` [PATCH 3/6] mfd: axp20x: Add support for RSB based AXP223 PMIC Chen-Yu Tsai
     [not found]     ` <1444840342-9233-4-git-send-email-wens-jdAy2FN1RRM@public.gmane.org>
2015-10-14 17:47       ` kbuild test robot
2015-10-14 23:00       ` kbuild test robot
2015-10-16  6:41       ` Maxime Ripard [this message]
2015-10-16  6:46         ` Chen-Yu Tsai
     [not found]           ` <CAGb2v66B8EbTZkVrt3QT85fKCwOjL8OBWfQvcLHrLAe6NfavNA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-10-19  6:02             ` Maxime Ripard
2015-10-19  6:20               ` Chen-Yu Tsai
     [not found]                 ` <CAGb2v66y9+_iemTn-AXQUPBRX=ZEQFfXgbVnwRzviDNfCSm_eQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-10-19 18:48                   ` Maxime Ripard
2015-10-20  4:04                     ` Chen-Yu Tsai
2015-10-14 16:32   ` [PATCH 4/6] regulator: axp20x: Support new " Chen-Yu Tsai
2015-10-22 12:50     ` Mark Brown
2015-10-14 16:32   ` [PATCH 5/6] ARM: dts: sun8i: Add NMI interrupt controller node Chen-Yu Tsai
     [not found]     ` <1444840342-9233-6-git-send-email-wens-jdAy2FN1RRM@public.gmane.org>
2015-10-16  6:44       ` Maxime Ripard
2015-10-14 16:32   ` [PATCH 6/6] ARM: dts: sun8i: sinlinx-sina33: Add AXP223 PMIC device and regulator nodes Chen-Yu Tsai

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=20151016064159.GG2711@lukather \
    --to=maxime.ripard-wi1+55scjutkeb57/3fjtnbpr1lh4cv8@public.gmane.org \
    --cc=broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
    --cc=hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org \
    --cc=lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=lgirdwood-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=wens-jdAy2FN1RRM@public.gmane.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).