#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/err.h>
#include <linux/i2c.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <linux/irqdomain.h>
#include <linux/of.h>
#include <linux/of_platform.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/slab.h>
#include <linux/mfd/core.h>
#include <linux/mfd/88pm860x.h>
#include <linux/regulator/machine.h>
#include <linux/power/charger-manager.h>
#define INT_STATUS_NUM …
static const struct resource bk0_resources[] = …;
static const struct resource bk1_resources[] = …;
static const struct resource bk2_resources[] = …;
static const struct resource led0_resources[] = …;
static const struct resource led1_resources[] = …;
static const struct resource led2_resources[] = …;
static const struct resource led3_resources[] = …;
static const struct resource led4_resources[] = …;
static const struct resource led5_resources[] = …;
static const struct resource buck1_resources[] = …;
static const struct resource buck2_resources[] = …;
static const struct resource buck3_resources[] = …;
static const struct resource ldo1_resources[] = …;
static const struct resource ldo2_resources[] = …;
static const struct resource ldo3_resources[] = …;
static const struct resource ldo4_resources[] = …;
static const struct resource ldo5_resources[] = …;
static const struct resource ldo6_resources[] = …;
static const struct resource ldo7_resources[] = …;
static const struct resource ldo8_resources[] = …;
static const struct resource ldo9_resources[] = …;
static const struct resource ldo10_resources[] = …;
static const struct resource ldo12_resources[] = …;
static const struct resource ldo_vibrator_resources[] = …;
static const struct resource ldo14_resources[] = …;
static struct resource touch_resources[] = …;
static struct resource onkey_resources[] = …;
static struct resource codec_resources[] = …;
static struct resource battery_resources[] = …;
static struct resource charger_resources[] = …;
static struct resource rtc_resources[] = …;
static struct mfd_cell bk_devs[] = …;
static struct mfd_cell led_devs[] = …;
static struct mfd_cell reg_devs[] = …;
static struct mfd_cell touch_devs[] = …;
static struct mfd_cell onkey_devs[] = …;
static struct mfd_cell codec_devs[] = …;
static struct regulator_consumer_supply preg_supply[] = …;
static struct regulator_init_data preg_init_data = …;
static struct charger_regulator chg_desc_regulator_data[] = …;
static struct mfd_cell power_devs[] = …;
static struct mfd_cell rtc_devs[] = …;
struct pm860x_irq_data { … };
static struct pm860x_irq_data pm860x_irqs[] = …;
static irqreturn_t pm860x_irq(int irq, void *data)
{ … }
static void pm860x_irq_lock(struct irq_data *data)
{ … }
static void pm860x_irq_sync_unlock(struct irq_data *data)
{ … }
static void pm860x_irq_enable(struct irq_data *data)
{ … }
static void pm860x_irq_disable(struct irq_data *data)
{ … }
static struct irq_chip pm860x_irq_chip = …;
static int pm860x_irq_domain_map(struct irq_domain *d, unsigned int virq,
irq_hw_number_t hw)
{ … }
static const struct irq_domain_ops pm860x_irq_domain_ops = …;
static int device_irq_init(struct pm860x_chip *chip,
struct pm860x_platform_data *pdata)
{ … }
static void device_irq_exit(struct pm860x_chip *chip)
{ … }
int pm8606_osc_enable(struct pm860x_chip *chip, unsigned short client)
{ … }
EXPORT_SYMBOL(…);
int pm8606_osc_disable(struct pm860x_chip *chip, unsigned short client)
{ … }
EXPORT_SYMBOL(…);
static void device_osc_init(struct i2c_client *i2c)
{ … }
static void device_bk_init(struct pm860x_chip *chip,
struct pm860x_platform_data *pdata)
{ … }
static void device_led_init(struct pm860x_chip *chip,
struct pm860x_platform_data *pdata)
{ … }
static void device_regulator_init(struct pm860x_chip *chip,
struct pm860x_platform_data *pdata)
{ … }
static void device_rtc_init(struct pm860x_chip *chip,
struct pm860x_platform_data *pdata)
{ … }
static void device_touch_init(struct pm860x_chip *chip,
struct pm860x_platform_data *pdata)
{ … }
static void device_power_init(struct pm860x_chip *chip,
struct pm860x_platform_data *pdata)
{ … }
static void device_onkey_init(struct pm860x_chip *chip,
struct pm860x_platform_data *pdata)
{ … }
static void device_codec_init(struct pm860x_chip *chip,
struct pm860x_platform_data *pdata)
{ … }
static void device_8607_init(struct pm860x_chip *chip,
struct i2c_client *i2c,
struct pm860x_platform_data *pdata)
{ … }
static void device_8606_init(struct pm860x_chip *chip,
struct i2c_client *i2c,
struct pm860x_platform_data *pdata)
{ … }
static int pm860x_device_init(struct pm860x_chip *chip,
struct pm860x_platform_data *pdata)
{ … }
static void pm860x_device_exit(struct pm860x_chip *chip)
{ … }
static int verify_addr(struct i2c_client *i2c)
{ … }
static const struct regmap_config pm860x_regmap_config = …;
static int pm860x_dt_init(struct device_node *np,
struct device *dev,
struct pm860x_platform_data *pdata)
{ … }
static int pm860x_probe(struct i2c_client *client)
{ … }
static void pm860x_remove(struct i2c_client *client)
{ … }
static int pm860x_suspend(struct device *dev)
{ … }
static int pm860x_resume(struct device *dev)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(pm860x_pm_ops, pm860x_suspend, pm860x_resume);
static const struct i2c_device_id pm860x_id_table[] = …;
MODULE_DEVICE_TABLE(i2c, pm860x_id_table);
static const struct of_device_id pm860x_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, pm860x_dt_ids);
static struct i2c_driver pm860x_driver = …;
static int __init pm860x_i2c_init(void)
{ … }
subsys_initcall(pm860x_i2c_init);
static void __exit pm860x_i2c_exit(void)
{ … }
module_exit(pm860x_i2c_exit);
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;