#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/err.h>
#include <linux/i2c.h>
#include <linux/mfd/core.h>
#include <linux/mfd/88pm80x.h>
#include <linux/slab.h>
#define PM800_INT_STATUS1 …
#define PM800_ONKEY_INT_STS1 …
#define PM800_EXTON_INT_STS1 …
#define PM800_CHG_INT_STS1 …
#define PM800_BAT_INT_STS1 …
#define PM800_RTC_INT_STS1 …
#define PM800_CLASSD_OC_INT_STS1 …
#define PM800_INT_STATUS2 …
#define PM800_VBAT_INT_STS2 …
#define PM800_VSYS_INT_STS2 …
#define PM800_VCHG_INT_STS2 …
#define PM800_TINT_INT_STS2 …
#define PM800_GPADC0_INT_STS2 …
#define PM800_TBAT_INT_STS2 …
#define PM800_GPADC2_INT_STS2 …
#define PM800_GPADC3_INT_STS2 …
#define PM800_INT_STATUS3 …
#define PM800_INT_STATUS4 …
#define PM800_GPIO0_INT_STS4 …
#define PM800_GPIO1_INT_STS4 …
#define PM800_GPIO2_INT_STS4 …
#define PM800_GPIO3_INT_STS4 …
#define PM800_GPIO4_INT_STS4 …
#define PM800_INT_ENA_1 …
#define PM800_ONKEY_INT_ENA1 …
#define PM800_EXTON_INT_ENA1 …
#define PM800_CHG_INT_ENA1 …
#define PM800_BAT_INT_ENA1 …
#define PM800_RTC_INT_ENA1 …
#define PM800_CLASSD_OC_INT_ENA1 …
#define PM800_INT_ENA_2 …
#define PM800_VBAT_INT_ENA2 …
#define PM800_VSYS_INT_ENA2 …
#define PM800_VCHG_INT_ENA2 …
#define PM800_TINT_INT_ENA2 …
#define PM800_INT_ENA_3 …
#define PM800_GPADC0_INT_ENA3 …
#define PM800_GPADC1_INT_ENA3 …
#define PM800_GPADC2_INT_ENA3 …
#define PM800_GPADC3_INT_ENA3 …
#define PM800_GPADC4_INT_ENA3 …
#define PM800_INT_ENA_4 …
#define PM800_GPIO0_INT_ENA4 …
#define PM800_GPIO1_INT_ENA4 …
#define PM800_GPIO2_INT_ENA4 …
#define PM800_GPIO3_INT_ENA4 …
#define PM800_GPIO4_INT_ENA4 …
#define PM800_INT_REG_NUM …
enum { … };
#define PM800_CHIP_GEN_ID_NUM …
static const struct i2c_device_id pm80x_id_table[] = …;
MODULE_DEVICE_TABLE(i2c, pm80x_id_table);
static const struct resource rtc_resources[] = …;
static struct mfd_cell rtc_devs[] = …;
static struct resource onkey_resources[] = …;
static const struct mfd_cell onkey_devs[] = …;
static const struct mfd_cell regulator_devs[] = …;
static const struct regmap_irq pm800_irqs[] = …;
static int device_gpadc_init(struct pm80x_chip *chip,
struct pm80x_platform_data *pdata)
{ … }
static int device_onkey_init(struct pm80x_chip *chip,
struct pm80x_platform_data *pdata)
{ … }
static int device_rtc_init(struct pm80x_chip *chip,
struct pm80x_platform_data *pdata)
{ … }
static int device_regulator_init(struct pm80x_chip *chip,
struct pm80x_platform_data *pdata)
{ … }
static int device_irq_init_800(struct pm80x_chip *chip)
{ … }
static void device_irq_exit_800(struct pm80x_chip *chip)
{ … }
static struct regmap_irq_chip pm800_irq_chip = …;
static int pm800_pages_init(struct pm80x_chip *chip)
{ … }
static void pm800_pages_exit(struct pm80x_chip *chip)
{ … }
static int device_800_init(struct pm80x_chip *chip,
struct pm80x_platform_data *pdata)
{ … }
static int pm800_probe(struct i2c_client *client)
{ … }
static void pm800_remove(struct i2c_client *client)
{ … }
static struct i2c_driver pm800_driver = …;
static int __init pm800_i2c_init(void)
{ … }
subsys_initcall(pm800_i2c_init);
static void __exit pm800_i2c_exit(void)
{ … }
module_exit(pm800_i2c_exit);
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;