usb-sysdep.h
上传用户:wudi5211
上传日期:2010-01-21
资源大小:607k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

C/C++

  1. /*
  2.  * usb-sysdep.h -- macros to help using the 2.4 approach to usb in 2.2
  3.  *
  4.  * Copyright (C) 2001 Alessandro Rubini and Jonathan Corbet
  5.  * Copyright (C) 2001 O'Reilly & Associates
  6.  *
  7.  * The source code in this file can be freely used, adapted,
  8.  * and redistributed in source or binary form, so long as an
  9.  * acknowledgment appears in derived source files.  The citation
  10.  * should list that the code comes from the book "Linux Device
  11.  * Drivers" by Alessandro Rubini and Jonathan Corbet, published
  12.  * by O'Reilly & Associates.   No warranty is attached;
  13.  * we cannot take responsibility for errors or fitness for use.
  14.  *
  15.  * $Id: usb-sysdep.h,v 1.3 2001/07/18 22:28:18 rubini Exp $
  16.  */
  17. #ifndef _USB_SYSDEP_H_
  18. #define _USB_SYSDEP_H_
  19. /*
  20.  * provide the basic version check, don't bother with 2.0 as it
  21.  * will have already barfed on <linux/usb.h>
  22.  */
  23. #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) /* not > 2.4, by now */
  24. #  error "This kernel is too recent: not supported by this file"
  25. #endif
  26. #if (LINUX_VERSION_CODE & 0xff00) == 3 /* not 2.3 */
  27. #  error "Please don't use linux-2.3, use 2.4 instead"
  28. #endif
  29. #if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0)
  30. #  define LINUX_22
  31. #else
  32. #  define LINUX_24
  33. #endif
  34. #ifdef LINUX_22
  35. /*
  36.  * Define a device_id structure, to use the better approach of 2.4. This
  37.  * for of the structure is used for class/subclass/protocol matching;
  38.  * if you need to match on vendor/device identifiers you need a different
  39.  * compatibility structure (and associated match code). Or you could
  40.  * backport the one defined in linux-2.4/include/linux/usb.h
  41.  */
  42. struct usb_device_id {
  43.     int      class;
  44.     int      subclass;
  45.     int      protocol;   
  46.     unsigned long   driver_info;
  47. };
  48. /* This macro is used to fill the fields (2.4 is much more powerful here) */
  49. #define USB_INTERFACE_INFO(cl,sc,pr) 
  50.         class: (cl), subclass: (sc), protocol: (pr)
  51. #endif /* 2.2 */
  52. #endif /* _USB_SYSDEP_H_ */