#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/device.h>
#include <linux/kdev_t.h>
#include <linux/idr.h>
#include <linux/pm_runtime.h>
#include <linux/greybus.h>
struct gb_vibrator_device { … };
#define GB_VIBRATOR_TYPE_ON …
#define GB_VIBRATOR_TYPE_OFF …
static int turn_off(struct gb_vibrator_device *vib)
{ … }
static int turn_on(struct gb_vibrator_device *vib, u16 timeout_ms)
{ … }
static void gb_vibrator_worker(struct work_struct *work)
{ … }
static ssize_t timeout_store(struct device *dev, struct device_attribute *attr,
const char *buf, size_t count)
{ … }
static DEVICE_ATTR_WO(timeout);
static struct attribute *vibrator_attrs[] = …;
ATTRIBUTE_GROUPS(…);
static struct class vibrator_class = …;
static DEFINE_IDA(minors);
static int gb_vibrator_probe(struct gb_bundle *bundle,
const struct greybus_bundle_id *id)
{ … }
static void gb_vibrator_disconnect(struct gb_bundle *bundle)
{ … }
static const struct greybus_bundle_id gb_vibrator_id_table[] = …;
MODULE_DEVICE_TABLE(greybus, gb_vibrator_id_table);
static struct greybus_driver gb_vibrator_driver = …;
static __init int gb_vibrator_init(void)
{ … }
module_init(…) …;
static __exit void gb_vibrator_exit(void)
{ … }
module_exit(gb_vibrator_exit);
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;