Re: [PATCH v3 01/10] mfd: AXP20x: Add mfd driver for AXP20x PMIC
From: Lee Jones <hidden>
Date: 2014-03-28 09:21:54
Also in:
linux-arm-kernel
quoted hunk ↗ jump to hunk
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 <redacted> --- 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.hdiff --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? [...]
quoted hunk ↗ jump to hunk
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 -- 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.