linux/include/linux/hidraw.h
<<
>>
Prefs
   1#ifndef _HIDRAW_H
   2#define _HIDRAW_H
   3
   4/*
   5 *  Copyright (c) 2007 Jiri Kosina
   6 */
   7
   8/*
   9 * This program is free software; you can redistribute it and/or modify it
  10 * under the terms and conditions of the GNU General Public License,
  11 * version 2, as published by the Free Software Foundation.
  12 *
  13 * You should have received a copy of the GNU General Public License along with
  14 * this program; if not, write to the Free Software Foundation, Inc.,
  15 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
  16 */
  17
  18#include <linux/hid.h>
  19#include <linux/types.h>
  20
  21struct hidraw_report_descriptor {
  22        __u32 size;
  23        __u8 value[HID_MAX_DESCRIPTOR_SIZE];
  24};
  25
  26struct hidraw_devinfo {
  27        __u32 bustype;
  28        __s16 vendor;
  29        __s16 product;
  30};
  31
  32/* ioctl interface */
  33#define HIDIOCGRDESCSIZE        _IOR('H', 0x01, int)
  34#define HIDIOCGRDESC            _IOR('H', 0x02, struct hidraw_report_descriptor)
  35#define HIDIOCGRAWINFO          _IOR('H', 0x03, struct hidraw_devinfo)
  36#define HIDIOCGRAWNAME(len)     _IOC(_IOC_READ, 'H', 0x04, len)
  37#define HIDIOCGRAWPHYS(len)     _IOC(_IOC_READ, 'H', 0x05, len)
  38/* The first byte of SFEATURE and GFEATURE is the report number */
  39#define HIDIOCSFEATURE(len)    _IOC(_IOC_WRITE|_IOC_READ, 'H', 0x06, len)
  40#define HIDIOCGFEATURE(len)    _IOC(_IOC_WRITE|_IOC_READ, 'H', 0x07, len)
  41
  42#define HIDRAW_FIRST_MINOR 0
  43#define HIDRAW_MAX_DEVICES 64
  44/* number of reports to buffer */
  45#define HIDRAW_BUFFER_SIZE 64
  46
  47
  48/* kernel-only API declarations */
  49#ifdef __KERNEL__
  50
  51struct hidraw {
  52        unsigned int minor;
  53        int exist;
  54        int open;
  55        wait_queue_head_t wait;
  56        struct hid_device *hid;
  57        struct device *dev;
  58        struct list_head list;
  59};
  60
  61struct hidraw_report {
  62        __u8 *value;
  63        int len;
  64};
  65
  66struct hidraw_list {
  67        struct hidraw_report buffer[HIDRAW_BUFFER_SIZE];
  68        int head;
  69        int tail;
  70        struct fasync_struct *fasync;
  71        struct hidraw *hidraw;
  72        struct list_head node;
  73        struct mutex read_mutex;
  74};
  75
  76#ifdef CONFIG_HIDRAW
  77int hidraw_init(void);
  78void hidraw_exit(void);
  79int hidraw_report_event(struct hid_device *, u8 *, int);
  80int hidraw_connect(struct hid_device *);
  81void hidraw_disconnect(struct hid_device *);
  82#else
  83static inline int hidraw_init(void) { return 0; }
  84static inline void hidraw_exit(void) { }
  85static inline int hidraw_report_event(struct hid_device *hid, u8 *data, int len) { return 0; }
  86static inline int hidraw_connect(struct hid_device *hid) { return -1; }
  87static inline void hidraw_disconnect(struct hid_device *hid) { }
  88#endif
  89
  90#endif
  91
  92#endif
  93
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.