usb_ctl.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  *  Copyright (C) Compaq Computer Corporation, 1998, 1999
  3.  *  Copyright (C) Extenex Corporation 2001
  4.  *  Copyright (C) Intrinsyc, Inc., 2002
  5.  *
  6.  *  usb_ctl.h
  7.  *
  8.  *  PRIVATE interface used to share info among components of the PXA USB
  9.  *  core: usb_ctl, usb_ep0, usb_recv and usb_send. Clients of the USB core
  10.  *  should use pxa_usb.h.
  11.  *
  12.  *  02-May-2002
  13.  *   Frank Becker (Intrinsyc) - derived from sa1100 usb_ctl.h
  14.  *
  15.  */
  16. #ifndef _USB_CTL_H
  17. #define _USB_CTL_H
  18. /* Interrupt mask bits and UDC enable bit */
  19. #define UDCCR_MASK_BITS         (UDCCR_REM | UDCCR_SRM | UDCCR_UDE)
  20. /*
  21.  * These states correspond to those in the USB specification v1.0
  22.  * in chapter 8, Device Framework.
  23.  */
  24. enum { 
  25. USB_STATE_NOTATTACHED =0,
  26. USB_STATE_ATTACHED =1,
  27. USB_STATE_POWERED =2,
  28. USB_STATE_DEFAULT =3,
  29. USB_STATE_ADDRESS =4,
  30. USB_STATE_CONFIGURED =5,
  31. USB_STATE_SUSPENDED =6
  32. };
  33. struct usb_stats_t {
  34.  unsigned long ep0_fifo_write_failures;
  35.  unsigned long ep0_bytes_written;
  36.  unsigned long ep0_fifo_read_failures;
  37.  unsigned long ep0_bytes_read;
  38. };
  39. struct usb_info_t
  40. {
  41.  char * client_name;
  42.  dmach_t dmach_tx, dmach_rx;
  43.  int state;
  44.  unsigned char address;
  45.  struct usb_stats_t stats;
  46. };
  47. /* in usb_ctl.c */
  48. extern struct usb_info_t usbd_info;
  49. /*
  50.  * Function Prototypes
  51.  */
  52. enum { 
  53. kError =-1,
  54. kEvSuspend =0,
  55. kEvReset =1,
  56. kEvResume =2,
  57. kEvAddress =3,
  58. kEvConfig =4,
  59. kEvDeConfig =5 
  60. };
  61. int usbctl_next_state_on_event( int event );
  62. /* endpoint zero */
  63. void ep0_reset(void);
  64. void ep0_int_hndlr(void);
  65. /* receiver */
  66. void ep_bulk_out1_state_change_notify( int new_state );
  67. int  ep_bulk_out1_recv(void);
  68. int  ep_bulk_out1_init(int chn);
  69. void ep_bulk_out1_int_hndlr(int status);
  70. void ep_bulk_out1_reset(void);
  71. void ep_bulk_out1_stall(void);
  72. /* xmitter */
  73. void ep_bulk_in1_state_change_notify( int new_state );
  74. void ep_bulk_in1_reset(void);
  75. int  ep_bulk_in1_init(int chn);
  76. void ep_bulk_in1_int_hndlr(int status);
  77. void ep_bulk_in1_stall(void);
  78. #endif /* _USB_CTL_H */