#include <linux/kernel.h>
#include <linux/device.h>
#include <linux/sysfs.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/interrupt.h>
#include <linux/workqueue.h>
#include <linux/platform_device.h>
#include <linux/i2c.h>
#include <linux/pm.h>
#include <linux/slab.h>
#include <linux/regmap.h>
#include <linux/err.h>
#include <linux/mfd/pcf50633/core.h>
int pcf50633_read_block(struct pcf50633 *pcf, u8 reg,
int nr_regs, u8 *data)
{ … }
EXPORT_SYMBOL_GPL(…);
int pcf50633_write_block(struct pcf50633 *pcf , u8 reg,
int nr_regs, u8 *data)
{ … }
EXPORT_SYMBOL_GPL(…);
u8 pcf50633_reg_read(struct pcf50633 *pcf, u8 reg)
{ … }
EXPORT_SYMBOL_GPL(…);
int pcf50633_reg_write(struct pcf50633 *pcf, u8 reg, u8 val)
{ … }
EXPORT_SYMBOL_GPL(…);
int pcf50633_reg_set_bit_mask(struct pcf50633 *pcf, u8 reg, u8 mask, u8 val)
{ … }
EXPORT_SYMBOL_GPL(…);
int pcf50633_reg_clear_bits(struct pcf50633 *pcf, u8 reg, u8 val)
{ … }
EXPORT_SYMBOL_GPL(…);
static ssize_t dump_regs_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static DEVICE_ATTR_ADMIN_RO(dump_regs);
static ssize_t resume_reason_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static DEVICE_ATTR_ADMIN_RO(resume_reason);
static struct attribute *pcf_sysfs_entries[] = …;
static struct attribute_group pcf_attr_group = …;
static void
pcf50633_client_dev_register(struct pcf50633 *pcf, const char *name,
struct platform_device **pdev)
{ … }
static const struct regmap_config pcf50633_regmap_config = …;
static int pcf50633_probe(struct i2c_client *client)
{ … }
static void pcf50633_remove(struct i2c_client *client)
{ … }
static const struct i2c_device_id pcf50633_id_table[] = …;
MODULE_DEVICE_TABLE(i2c, pcf50633_id_table);
static struct i2c_driver pcf50633_driver = …;
static int __init pcf50633_init(void)
{ … }
static void __exit pcf50633_exit(void)
{ … }
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
subsys_initcall(pcf50633_init);
module_exit(pcf50633_exit);