root/drivers/input/evbug.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. evbug_event
  2. evbug_connect
  3. evbug_disconnect
  4. evbug_init
  5. evbug_exit

   1 // SPDX-License-Identifier: GPL-2.0-or-later
   2 /*
   3  *  Copyright (c) 1999-2001 Vojtech Pavlik
   4  */
   5 
   6 /*
   7  *  Input driver event debug module - dumps all events into syslog
   8  */
   9 
  10 /*
  11  */
  12 
  13 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
  14 
  15 #include <linux/slab.h>
  16 #include <linux/module.h>
  17 #include <linux/input.h>
  18 #include <linux/init.h>
  19 #include <linux/device.h>
  20 
  21 MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
  22 MODULE_DESCRIPTION("Input driver event debug module");
  23 MODULE_LICENSE("GPL");
  24 
  25 static void evbug_event(struct input_handle *handle, unsigned int type, unsigned int code, int value)
  26 {
  27         printk(KERN_DEBUG pr_fmt("Event. Dev: %s, Type: %d, Code: %d, Value: %d\n"),
  28                dev_name(&handle->dev->dev), type, code, value);
  29 }
  30 
  31 static int evbug_connect(struct input_handler *handler, struct input_dev *dev,
  32                          const struct input_device_id *id)
  33 {
  34         struct input_handle *handle;
  35         int error;
  36 
  37         handle = kzalloc(sizeof(struct input_handle), GFP_KERNEL);
  38         if (!handle)
  39                 return -ENOMEM;
  40 
  41         handle->dev = dev;
  42         handle->handler = handler;
  43         handle->name = "evbug";
  44 
  45         error = input_register_handle(handle);
  46         if (error)
  47                 goto err_free_handle;
  48 
  49         error = input_open_device(handle);
  50         if (error)
  51                 goto err_unregister_handle;
  52 
  53         printk(KERN_DEBUG pr_fmt("Connected device: %s (%s at %s)\n"),
  54                dev_name(&dev->dev),
  55                dev->name ?: "unknown",
  56                dev->phys ?: "unknown");
  57 
  58         return 0;
  59 
  60  err_unregister_handle:
  61         input_unregister_handle(handle);
  62  err_free_handle:
  63         kfree(handle);
  64         return error;
  65 }
  66 
  67 static void evbug_disconnect(struct input_handle *handle)
  68 {
  69         printk(KERN_DEBUG pr_fmt("Disconnected device: %s\n"),
  70                dev_name(&handle->dev->dev));
  71 
  72         input_close_device(handle);
  73         input_unregister_handle(handle);
  74         kfree(handle);
  75 }
  76 
  77 static const struct input_device_id evbug_ids[] = {
  78         { .driver_info = 1 },   /* Matches all devices */
  79         { },                    /* Terminating zero entry */
  80 };
  81 
  82 MODULE_DEVICE_TABLE(input, evbug_ids);
  83 
  84 static struct input_handler evbug_handler = {
  85         .event =        evbug_event,
  86         .connect =      evbug_connect,
  87         .disconnect =   evbug_disconnect,
  88         .name =         "evbug",
  89         .id_table =     evbug_ids,
  90 };
  91 
  92 static int __init evbug_init(void)
  93 {
  94         return input_register_handler(&evbug_handler);
  95 }
  96 
  97 static void __exit evbug_exit(void)
  98 {
  99         input_unregister_handler(&evbug_handler);
 100 }
 101 
 102 module_init(evbug_init);
 103 module_exit(evbug_exit);

/* [<][>][^][v][top][bottom][index][help] */