#include <linux/errno.h>
#include <linux/input.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/slab.h>
#define VIB_MAX_LEVEL_mV(vib) …
#define VIB_MIN_LEVEL_mV(vib) …
#define VIB_PER_STEP_mV(vib) …
#define VIB_MAX_LEVELS(vib) …
#define MAX_FF_SPEED …
struct pm8xxx_regs { … };
static const struct pm8xxx_regs pm8058_regs = …;
static struct pm8xxx_regs pm8916_regs = …;
static struct pm8xxx_regs pmi632_regs = …;
struct pm8xxx_vib { … };
static int pm8xxx_vib_set(struct pm8xxx_vib *vib, bool on)
{ … }
static void pm8xxx_work_handler(struct work_struct *work)
{ … }
static void pm8xxx_vib_close(struct input_dev *dev)
{ … }
static int pm8xxx_vib_play_effect(struct input_dev *dev, void *data,
struct ff_effect *effect)
{ … }
static int pm8xxx_vib_probe(struct platform_device *pdev)
{ … }
static int pm8xxx_vib_suspend(struct device *dev)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(pm8xxx_vib_pm_ops, pm8xxx_vib_suspend, NULL);
static const struct of_device_id pm8xxx_vib_id_table[] = …;
MODULE_DEVICE_TABLE(of, pm8xxx_vib_id_table);
static struct platform_driver pm8xxx_vib_driver = …;
module_platform_driver(…) …;
MODULE_ALIAS(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;