#include <linux/bits.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/extcon-provider.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/power_supply.h>
#include <linux/property.h>
#include <linux/regulator/consumer.h>
#include <linux/workqueue.h>
#define REG00 …
#define REG00_INIT_VALUE …
#define REG_STATUS …
#define STATUS_OVP …
#define STATUS_DATA_SHORT …
#define STATUS_VBUS_PRESENT …
#define STATUS_USB_ID …
#define STATUS_USB_ID_GND …
#define STATUS_USB_ID_ACA …
#define STATUS_USB_ID_FLOAT …
#define REG_SWITCH_CONTROL …
#define SWITCH_STEREO_MIC …
#define SWITCH_USB_HOST …
#define SWITCH_DISCONNECTED …
#define SWITCH_USB_DEVICE …
#define REG_ID_PIN_ADC_VALUE …
#define INTR_ID_PIN_CHANGE …
#define INTR_VBUS_CHANGE …
#define INTR_ID_PIN_ADC_INT1 …
#define INTR_ID_PIN_ADC_INT2 …
#define INTR_CHARGER_DET_DONE …
#define INTR_OVP …
#define INTR_ALL …
#define INTR_MASK …
#define REG_INTR_STATUS …
#define REG_INTR_CLEAR …
#define REG_INTR_MASK …
#define REG_ID_PIN_ADC_CTRL …
#define ID_PIN_ADC_AUTO …
#define ID_PIN_ADC_CONTINUOUS …
#define REG_CHARGER_DET …
#define CHARGER_DET_ON …
#define CHARGER_DET_CDP_ON …
#define CHARGER_DET_CDP_VAL …
#define REG_CHARGER_TYPE …
#define CHARGER_TYPE_UNKNOWN …
#define CHARGER_TYPE_DCP …
#define CHARGER_TYPE_SDP_OR_CDP …
#define CHARGER_TYPE_QC …
#define REG10 …
#define REG10_INIT_VALUE …
struct lc824206xa_data { … };
static const unsigned int lc824206xa_cables[] = …;
static int lc824206xa_read_reg(struct lc824206xa_data *data, u8 reg)
{ … }
static int lc824206xa_write_reg(struct lc824206xa_data *data, u8 reg, u8 val)
{ … }
static int lc824206xa_get_id(struct lc824206xa_data *data)
{ … }
static void lc824206xa_set_vbus_boost(struct lc824206xa_data *data, bool enable)
{ … }
static void lc824206xa_charger_detect(struct lc824206xa_data *data)
{ … }
static void lc824206xa_work(struct work_struct *work)
{ … }
static irqreturn_t lc824206xa_irq(int irq, void *_data)
{ … }
static int lc824206xa_psy_get_prop(struct power_supply *psy,
enum power_supply_property psp,
union power_supply_propval *val)
{ … }
static const enum power_supply_property lc824206xa_psy_props[] = …;
static const struct power_supply_desc lc824206xa_psy_desc = …;
static int lc824206xa_probe(struct i2c_client *client)
{ … }
static const struct i2c_device_id lc824206xa_i2c_ids[] = …;
MODULE_DEVICE_TABLE(i2c, lc824206xa_i2c_ids);
static struct i2c_driver lc824206xa_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;