> 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 <[email protected]>
> ---
>  drivers/mfd/Kconfig        |  12 +++
>  drivers/mfd/Makefile       |   1 +
>  drivers/mfd/axp20x.c       | 240 
> +++++++++++++++++++++++++++++++++++++++++++++
>  include/linux/mfd/axp20x.h | 180 ++++++++++++++++++++++++++++++++++
>  4 files changed, 433 insertions(+)
>  create mode 100644 drivers/mfd/axp20x.c
>  create mode 100644 include/linux/mfd/axp20x.h
> 
> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index 49bb445..24ba61a 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -59,6 +59,18 @@ config MFD_AAT2870_CORE
>         additional drivers must be enabled in order to use the
>         functionality of the device.
>  
> +config MFD_AXP20X
> +     bool "X-Powers AXP20X"
> +     select MFD_CORE
> +     select REGMAP_I2C
> +     select REGMAP_IRQ
> +     depends on I2C=y
> +     help
> +       If you say Y here you get support for the AXP20X.
> +       This driver provides common support for accessing the device,
> +       additional drivers must be enabled in order to use the
> +       functionality of the device.

Please tell us what this device is and what sub-devices are available?

[...]

> diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c
> new file mode 100644
> index 0000000..f77a663
> --- /dev/null
> +++ b/drivers/mfd/axp20x.c
> @@ -0,0 +1,240 @@
> +/*
> + * axp20x.c - MFD core driver for the X-Powers AXP202 and AXP209

... which consist of ...

[...]

> +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,
> +     },
> +};

Have you considered doing this in the Device Tree? It's a lot less
code/overhead.

> +static const struct i2c_device_id axp20x_i2c_id[] = {
> +     { },
> +};
> +MODULE_DEVICE_TABLE(i2c, axp20x_i2c_id);
 
We really should consider changing the I2C subsystem!

Can you add a comment here describing why we have to add this
seemingly pointless empty struct please?

> +static struct mfd_cell axp20x_cells[] = {
> +     {
> +             .name           = "axp20x-pek",
> +             .num_resources  = ARRAY_SIZE(axp20x_pek_resources),
> +             .resources      = axp20x_pek_resources,
> +     }, {
> +             .name           = "axp20x-regulator",
> +     },
> +};

Do these drivers don't look inside the DTB at all?

[...]

> +     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;

'variant' needs to be a (unsigned?) long or it will break on 64bit
architectures.

-- 
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-input" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to