linux/drivers/input/touchscreen/wacom_w8001.c

/*
 * Wacom W8001 penabled serial touchscreen driver
 *
 * Copyright (c) 2008 Jaya Kumar
 * Copyright (c) 2010 Red Hat, Inc.
 * Copyright (c) 2010 - 2011 Ping Cheng, Wacom. <[email protected]>
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License. See the file COPYING in the main directory of this archive for
 * more details.
 *
 * Layout based on Elo serial touchscreen driver by Vojtech Pavlik
 */

#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/input/mt.h>
#include <linux/serio.h>
#include <linux/ctype.h>
#include <linux/delay.h>

#define DRIVER_DESC

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

#define W8001_MAX_PHYS

#define W8001_MAX_LENGTH
#define W8001_LEAD_MASK
#define W8001_LEAD_BYTE
#define W8001_TAB_MASK
#define W8001_TAB_BYTE
/* set in first byte of touch data packets */
#define W8001_TOUCH_MASK
#define W8001_TOUCH_BYTE

#define W8001_QUERY_PACKET

#define W8001_CMD_STOP
#define W8001_CMD_START
#define W8001_CMD_QUERY
#define W8001_CMD_TOUCHQUERY

/* length of data packets in bytes, depends on device. */
#define W8001_PKTLEN_TOUCH93
#define W8001_PKTLEN_TOUCH9A
#define W8001_PKTLEN_TPCPEN
#define W8001_PKTLEN_TPCCTL
#define W8001_PKTLEN_TOUCH2FG

/* resolution in points/mm */
#define W8001_PEN_RESOLUTION
#define W8001_TOUCH_RESOLUTION

struct w8001_coord {};

/* touch query reply packet */
struct w8001_touch_query {};

/*
 * Per-touchscreen data.
 */

struct w8001 {};

static void parse_pen_data(u8 *data, struct w8001_coord *coord)
{}

static void parse_single_touch(u8 *data, struct w8001_coord *coord)
{}

static void scale_touch_coordinates(struct w8001 *w8001,
				    unsigned int *x, unsigned int *y)
{}

static void parse_multi_touch(struct w8001 *w8001)
{}

static void parse_touchquery(u8 *data, struct w8001_touch_query *query)
{}

static void report_pen_events(struct w8001 *w8001, struct w8001_coord *coord)
{}

static void report_single_touch(struct w8001 *w8001, struct w8001_coord *coord)
{}

static irqreturn_t w8001_interrupt(struct serio *serio,
				   unsigned char data, unsigned int flags)
{}

static int w8001_command(struct w8001 *w8001, unsigned char command,
			 bool wait_response)
{}

static int w8001_open(struct input_dev *dev)
{}

static void w8001_close(struct input_dev *dev)
{}

static int w8001_detect(struct w8001 *w8001)
{}

static int w8001_setup_pen(struct w8001 *w8001, char *basename,
			   size_t basename_sz)
{}

static int w8001_setup_touch(struct w8001 *w8001, char *basename,
			     size_t basename_sz)
{}

static void w8001_set_devdata(struct input_dev *dev, struct w8001 *w8001,
			      struct serio *serio)
{}

/*
 * w8001_disconnect() is the opposite of w8001_connect()
 */

static void w8001_disconnect(struct serio *serio)
{}

/*
 * w8001_connect() is the routine that is called when someone adds a
 * new serio device that supports the w8001 protocol and registers it as
 * an input device.
 */

static int w8001_connect(struct serio *serio, struct serio_driver *drv)
{}

static const struct serio_device_id w8001_serio_ids[] =;

MODULE_DEVICE_TABLE(serio, w8001_serio_ids);

static struct serio_driver w8001_drv =;

module_serio_driver();