{
struct emul_touchscreen *usb_ts = input_get_drvdata(dev);
+ printk(KERN_INFO "usb touchscreen device is opened\n");
+
mutex_lock(&usb_ts->lock);
usb_ts->irq->dev = usb_ts->usbdev;
{
struct emul_touchscreen *usb_ts = input_get_drvdata(dev);
+ printk(KERN_INFO "usb touchscreen device is closed\n");
+
mutex_lock(&usb_ts->lock);
usb_kill_urb(usb_ts->irq);
usb_ts->open = 0;
struct emul_touchscreen *usb_ts;
int error = -ENOMEM;
+ printk(KERN_INFO "usb touchscreen driver is probed\n");
+
usb_ts = kzalloc(sizeof(struct emul_touchscreen), GFP_KERNEL);
if (!usb_ts) {
goto fail1;
{
struct emul_touchscreen *usb_ts = usb_get_intfdata(intf);
+ printk(KERN_INFO "usb touchscreen device is disconnected\n");
+
usb_set_intfdata(intf, NULL);
if (usb_ts) {
usb_kill_urb(usb_ts->irq);
{
struct emul_touchscreen *usb_ts = usb_get_intfdata(intf);
+ printk(KERN_INFO "usb touchscreen device is suspended\n");
+
mutex_lock(&usb_ts->lock);
usb_kill_urb(usb_ts->irq);
mutex_unlock(&usb_ts->lock);
static int emul_touchscreen_resume(struct usb_interface *intf)
{
struct emul_touchscreen *usb_ts = usb_get_intfdata(intf);
- int rv;
+ int rv = 0;
+
+ printk(KERN_INFO "usb touchscreen device is resumed\n");
mutex_lock(&usb_ts->lock);
if (usb_ts->open) {
static int __init emul_touchscreen_init(void)
{
+ printk(KERN_INFO "usb touchscreen device is initialized\n");
+
int result = usb_register(&emul_touchscreen_driver);
- if (result == 0) {
+ if (result != 0) {
printk(KERN_ERR "emul_touchscreen_init: usb_register=%d\n", result);
}
static void __exit emul_touchscreen_exit(void)
{
+ printk(KERN_INFO "usb touchscreen device is destroyed\n");
usb_deregister(&emul_touchscreen_driver);
}
#define DEVICE_NAME "virtio-touchscreen"
/* This structure must match the qemu definitions */
-typedef struct EmulTouchState {
+typedef struct EmulTouchEvent {
uint16_t x, y, z;
uint8_t state;
-} EmulTouchState;
+} EmulTouchEvent;
typedef struct virtio_touchscreen
{
static int run_touchscreen(void *_vtouchscreen)
{
virtio_touchscreen *vt = NULL;
- EmulTouchState *vbuf = NULL;
- EmulTouchState *event = NULL;
+ EmulTouchEvent *vbuf = NULL;
+ EmulTouchEvent *event = NULL;
struct scatterlist sg;
int count = 0; // remaining capacity of queue
struct input_dev *input_dev = NULL;
vt = _vtouchscreen;
- vbuf = kzalloc(sizeof(EmulTouchState), GFP_KERNEL);
+ vbuf = kzalloc(sizeof(EmulTouchEvent), GFP_KERNEL);
vbuf->x = MAX_TRKID; // max touch point
input_dev = vt->idev;
while (!kthread_should_stop()) {
- sg_init_one(&sg, vbuf, sizeof(EmulTouchState));
+ sg_init_one(&sg, vbuf, sizeof(EmulTouchEvent));
if (virtqueue_add_buf(vt->vq, &sg, 0, 1, (void*)vbuf, GFP_ATOMIC) >= 0) {
virtqueue_kick(vt->vq);