#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/irq.h>
#include <linux/mfd/core.h>
#include <linux/mfd/88pm80x.h>
#include <linux/slab.h>
#include <linux/delay.h>
static const struct i2c_device_id pm80x_id_table[] = …;
MODULE_DEVICE_TABLE(i2c, pm80x_id_table);
enum { … };
static struct resource codec_resources[] = …;
static const struct mfd_cell codec_devs[] = …;
static struct regmap_irq pm805_irqs[] = …;
static int device_irq_init_805(struct pm80x_chip *chip)
{ … }
static void device_irq_exit_805(struct pm80x_chip *chip)
{ … }
static struct regmap_irq_chip pm805_irq_chip = …;
static int device_805_init(struct pm80x_chip *chip)
{ … }
static int pm805_probe(struct i2c_client *client)
{ … }
static void pm805_remove(struct i2c_client *client)
{ … }
static struct i2c_driver pm805_driver = …;
static int __init pm805_i2c_init(void)
{ … }
subsys_initcall(pm805_i2c_init);
static void __exit pm805_i2c_exit(void)
{ … }
module_exit(pm805_i2c_exit);
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;