From: Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Carlo Caione <carlo-KA+7E9HrN00dnm+yROfE0A@public.gmane.org>
Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org,
maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org,
hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
emilio-0Z03zUJReD5OxF6Tv1QG9Q@public.gmane.org,
wens-jdAy2FN1RRM@public.gmane.org,
sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
lgirdwood-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
Subject: Re: [PATCH v2 1/8] mfd: AXP20x: Add mfd driver for AXP20x PMIC
Date: Tue, 18 Mar 2014 15:59:19 +0000 [thread overview]
Message-ID: <20140318155919.GS25478@lee--X1> (raw)
In-Reply-To: <1394898225-28452-2-git-send-email-carlo-KA+7E9HrN00dnm+yROfE0A@public.gmane.org>
> This patch introduces the preliminary support for PMICs X-Powers AXP202
> and AXP209. The AXP209 and AXP202 are the PMUs (Power Management Unit)
> used by A10, A13 and A20 SoCs and developed by X-Powers, a sister company
> of Allwinner.
>
> The core enables support for two subsystems:
> - PEK (Power Enable Key)
> - Regulators
>
> Signed-off-by: Carlo Caione <carlo-KA+7E9HrN00dnm+yROfE0A@public.gmane.org>
> ---
> drivers/mfd/Kconfig | 12 +++
> drivers/mfd/Makefile | 1 +
> drivers/mfd/axp20x.c | 247 +++++++++++++++++++++++++++++++++++++++++++++
> include/linux/mfd/axp20x.h | 179 ++++++++++++++++++++++++++++++++
> 4 files changed, 439 insertions(+)
> create mode 100644 drivers/mfd/axp20x.c
> create mode 100644 include/linux/mfd/axp20x.h
[...]
> +/*
> + * axp20x.c - mfd core driver for the X-Powers AXP202 and AXP209
MFD
[...]
> +static struct resource axp20x_pek_resources[] = {
> + {
> + .name = "PEK_DBR",
> + .start = AXP20X_IRQ_PEK_RIS_EDGE,
> + .end = AXP20X_IRQ_PEK_RIS_EDGE,
> + .flags = IORESOURCE_IRQ,
> + },
> + {
> + .name = "PEK_DBF",
> + .start = AXP20X_IRQ_PEK_FAL_EDGE,
> + .end = AXP20X_IRQ_PEK_FAL_EDGE,
> + .flags = IORESOURCE_IRQ,
> + },
> +};
[...]
> +static struct mfd_cell axp20x_cells[] = {
> + {
> + .name = "axp20x-pek",
> + .num_resources = ARRAY_SIZE(axp20x_pek_resources),
> + .resources = axp20x_pek_resources,
> + }, {
> + .name = "axp20x-regulator",
> + },
> +};
nit: The format of these two structs are inconsistent.
[...]
> +static int axp20x_i2c_probe(struct i2c_client *i2c,
> + const struct i2c_device_id *id)
> +{
> + struct axp20x_dev *axp20x;
> + const struct of_device_id *of_id;
> + int ret;
> +
> + axp20x = devm_kzalloc(&i2c->dev, sizeof(*axp20x), GFP_KERNEL);
> + if (!axp20x)
> + return -ENOMEM;
> +
> + of_id = of_match_device(axp20x_of_match, &i2c->dev);
> + if (!of_id) {
> + dev_err(&i2c->dev, "Unable to setup AXP20X data\n");
> + return -ENODEV;
> + }
> + axp20x->variant = (int) of_id->data;
No need to cast from void *.
> + axp20x->i2c_client = i2c;
> + axp20x->dev = &i2c->dev;
> + dev_set_drvdata(axp20x->dev, axp20x);
> +
> + axp20x->regmap = devm_regmap_init_i2c(i2c, &axp20x_regmap_config);
> + if (IS_ERR(axp20x->regmap)) {
> + ret = PTR_ERR(axp20x->regmap);
> + dev_err(&i2c->dev, "regmap init failed: %d\n", ret);
> + return ret;
> + }
> +
> + axp20x->irq = i2c->irq;
Do you _really_ need this if you have 'axp20x->i2c_client->irq'?
> + ret = regmap_add_irq_chip(axp20x->regmap, axp20x->irq,
> + IRQF_ONESHOT | IRQF_SHARED, -1,
> + &axp20x_regmap_irq_chip,
> + &axp20x->regmap_irqc);
> + if (ret) {
> + dev_err(&i2c->dev, "failed to add irq chip: %d\n", ret);
> + return ret;
> + }
> +
> + ret = mfd_add_devices(axp20x->dev, -1, axp20x_cells,
> + ARRAY_SIZE(axp20x_cells), NULL, 0, NULL);
> +
> + if (ret) {
> + dev_err(&i2c->dev, "failed to add MFD devices: %d\n", ret);
> + goto mfd_err;
> + }
> +
> + if (!pm_power_off) {
> + axp20x_pm_power_off = axp20x;
> + pm_power_off = axp20x_power_off;
> + }
> +
> + dev_info(&i2c->dev, "AXP20X driver loaded\n");
> +
> + return 0;
> +
> +mfd_err:
> + regmap_del_irq_chip(axp20x->irq, axp20x->regmap_irqc);
> +
> + return ret;
I'd say the goto is pointless if you're only using it once.
Instead move regmap_del_irq_chip() into mfd_add_devices()'s error
handler and return straight from there.
[...]
> +static const struct i2c_device_id axp20x_i2c_id[] = {
> + { "axp202", AXP202_ID },
> + { "axp209", AXP209_ID },
> + { }
> +};
> +MODULE_DEVICE_TABLE(i2c, axp20x_i2c_id);
Isn't this redundant now that you're using of_id?
[...]
> +#ifndef __LINUX_MFD_AXP20X_H
> +#define __LINUX_MFD_AXP20X_H
> +
> +#define AXP202_ID 0
> +#define AXP209_ID 1
enum?
[...]
> +struct axp20x_dev {
> + struct device *dev;
> + struct i2c_client *i2c_client;
> + struct regmap *regmap;
> + struct regmap_irq_chip_data *regmap_irqc;
> + int variant;
> + int irq;
i2c_client->irq?
> +};
> +
> +#endif /* __LINUX_MFD_AXP20X_H */
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit https://groups.google.com/d/optout.
next prev parent reply other threads:[~2014-03-18 15:59 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-15 15:43 [PATCH v2 0/8] mfd: AXP20x: Add support for AXP202 and AXP209 Carlo Caione
[not found] ` <1394898225-28452-1-git-send-email-carlo-KA+7E9HrN00dnm+yROfE0A@public.gmane.org>
2014-03-15 15:43 ` [PATCH v2 1/8] mfd: AXP20x: Add mfd driver for AXP20x PMIC Carlo Caione
[not found] ` <1394898225-28452-2-git-send-email-carlo-KA+7E9HrN00dnm+yROfE0A@public.gmane.org>
2014-03-18 15:59 ` Lee Jones [this message]
2014-03-22 16:51 ` Carlo Caione
[not found] ` <20140322165132.GC20668-bi+AKbBUZKZeIdyRz4JgOMwOAu8XWILU@public.gmane.org>
2014-03-22 17:33 ` Mark Brown
[not found] ` <20140322173313.GU552-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2014-03-22 18:05 ` Carlo Caione
2014-03-22 18:13 ` [linux-sunxi] " Carlo Caione
[not found] ` <CAOQ7t2Yg5pp_rXYfsdnHpy-zGFGimzT3EW15P_0ugYMtgPtOrw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-03-22 18:42 ` Dmitry Torokhov
[not found] ` <20140322184201.GA27611-WlK9ik9hQGAhIp7JRqBPierSzoNAToWh@public.gmane.org>
2014-03-22 19:08 ` Carlo Caione
[not found] ` <20140322190803.GA20987-bi+AKbBUZKZeIdyRz4JgOMwOAu8XWILU@public.gmane.org>
2014-03-22 19:29 ` Mark Brown
2014-03-24 8:34 ` Lee Jones
2014-03-15 15:43 ` [PATCH v2 2/8] mfd: AXP20x: Add bindings documentation Carlo Caione
[not found] ` <1394898225-28452-3-git-send-email-carlo-KA+7E9HrN00dnm+yROfE0A@public.gmane.org>
2014-03-18 8:45 ` Maxime Ripard
2014-03-22 14:11 ` Carlo Caione
[not found] ` <20140322141157.GA20668-bi+AKbBUZKZeIdyRz4JgOMwOAu8XWILU@public.gmane.org>
2014-03-25 10:11 ` Maxime Ripard
2014-03-15 15:43 ` [PATCH v2 3/8] input: misc: Add driver for AXP20x Power Enable Key Carlo Caione
[not found] ` <1394898225-28452-4-git-send-email-carlo-KA+7E9HrN00dnm+yROfE0A@public.gmane.org>
2014-03-18 9:00 ` Maxime Ripard
2014-03-18 9:50 ` Lee Jones
2014-03-18 10:15 ` Maxime Ripard
2014-03-18 10:58 ` Lee Jones
2014-03-18 14:03 ` Maxime Ripard
2014-03-15 15:43 ` [PATCH v2 4/8] input: misc: Add ABI docs for AXP20x PEK Carlo Caione
2014-03-15 15:43 ` [PATCH v2 5/8] regulator: AXP20x: Add support for regulators subsystem Carlo Caione
2014-03-17 8:19 ` Krzysztof Kozlowski
[not found] ` <1394898225-28452-6-git-send-email-carlo-KA+7E9HrN00dnm+yROfE0A@public.gmane.org>
2014-03-17 17:33 ` Mark Brown
2014-03-15 15:43 ` [PATCH v2 6/8] ARM: sunxi: dt: Add x-powers-axp209.dtsi file Carlo Caione
[not found] ` <1394898225-28452-7-git-send-email-carlo-KA+7E9HrN00dnm+yROfE0A@public.gmane.org>
2014-03-18 9:04 ` Maxime Ripard
2014-03-22 14:31 ` Carlo Caione
[not found] ` <20140322143157.GB20668-bi+AKbBUZKZeIdyRz4JgOMwOAu8XWILU@public.gmane.org>
2014-03-25 10:11 ` Maxime Ripard
2014-03-15 15:43 ` [PATCH v2 7/8] ARM: sun7i: dt: Add AXP209 support to various boards Carlo Caione
[not found] ` <1394898225-28452-8-git-send-email-carlo-KA+7E9HrN00dnm+yROfE0A@public.gmane.org>
2014-03-15 15:45 ` Hans de Goede
[not found] ` <53247584.8060701-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-03-15 15:48 ` Carlo Caione
2014-03-15 15:43 ` [PATCH v2 8/8] ARM: sunxi: Add AXP20x support in defconfig Carlo Caione
[not found] ` <1394898225-28452-9-git-send-email-carlo-KA+7E9HrN00dnm+yROfE0A@public.gmane.org>
2014-03-18 9:05 ` Maxime Ripard
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=20140318155919.GS25478@lee--X1 \
--to=lee.jones-qsej5fyqhm4dnm+yrofe0a@public.gmane.org \
--cc=broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=carlo-KA+7E9HrN00dnm+yROfE0A@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=emilio-0Z03zUJReD5OxF6Tv1QG9Q@public.gmane.org \
--cc=hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=lgirdwood-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
--cc=maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@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).