linux/drivers/hid/hid-roccat.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Roccat driver for Linux
 *
 * Copyright (c) 2010 Stefan Achatz <[email protected]>
 */

/*
 */

/*
 * Module roccat is a char device used to report special events of roccat
 * hardware to userland. These events include requests for on-screen-display of
 * profile or dpi settings or requests for execution of macro sequences that are
 * not stored in device. The information in these events depends on hid device
 * implementation and contains data that is not available in a single hid event
 * or else hidraw could have been used.
 * It is inspired by hidraw, but uses only one circular buffer for all readers.
 */

#define pr_fmt(fmt)

#include <linux/cdev.h>
#include <linux/poll.h>
#include <linux/sched/signal.h>
#include <linux/hid-roccat.h>
#include <linux/module.h>

#define ROCCAT_FIRST_MINOR
#define ROCCAT_MAX_DEVICES

/* should be a power of 2 for performance reason */
#define ROCCAT_CBUF_SIZE

struct roccat_report {};

struct roccat_device {};

struct roccat_reader {};

static int roccat_major;
static struct cdev roccat_cdev;

static struct roccat_device *devices[ROCCAT_MAX_DEVICES];
/* protects modifications of devices array */
static DEFINE_MUTEX(devices_lock);

static ssize_t roccat_read(struct file *file, char __user *buffer,
		size_t count, loff_t *ppos)
{}

static __poll_t roccat_poll(struct file *file, poll_table *wait)
{}

static int roccat_open(struct inode *inode, struct file *file)
{}

static int roccat_release(struct inode *inode, struct file *file)
{}

/*
 * roccat_report_event() - output data to readers
 * @minor: minor device number returned by roccat_connect()
 * @data: pointer to data
 *
 * Return value is zero on success, a negative error code on failure.
 *
 * This is called from interrupt handler.
 */
int roccat_report_event(int minor, u8 const *data)
{}
EXPORT_SYMBOL_GPL();

/*
 * roccat_connect() - create a char device for special event output
 * @class: the class thats used to create the device. Meant to hold device
 * specific sysfs attributes.
 * @hid: the hid device the char device should be connected to.
 * @report_size: size of reports
 *
 * Return value is minor device number in Range [0, ROCCAT_MAX_DEVICES] on
 * success, a negative error code on failure.
 */
int roccat_connect(const struct class *klass, struct hid_device *hid, int report_size)
{}
EXPORT_SYMBOL_GPL();

/* roccat_disconnect() - remove char device from hid device
 * @minor: the minor device number returned by roccat_connect()
 */
void roccat_disconnect(int minor)
{}
EXPORT_SYMBOL_GPL();

static long roccat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{}

static const struct file_operations roccat_ops =;

static int __init roccat_init(void)
{}

static void __exit roccat_exit(void)
{}

module_init();
module_exit(roccat_exit);

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();