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

嵌入式Linux

开发平台:

Unix_Linux

  1. #ifndef _IEEE1394_HOTPLUG_H
  2. #define _IEEE1394_HOTPLUG_H
  3. #include "ieee1394_core.h"
  4. #include "nodemgr.h"
  5. #define IEEE1394_MATCH_VENDOR_ID 0x0001
  6. #define IEEE1394_MATCH_MODEL_ID 0x0002
  7. #define IEEE1394_MATCH_SPECIFIER_ID 0x0004
  8. #define IEEE1394_MATCH_VERSION 0x0008
  9. struct ieee1394_device_id {
  10. u32 match_flags;
  11. u32 vendor_id;
  12. u32 model_id;
  13. u32 specifier_id;
  14. u32 version;
  15. void *driver_data;
  16. };
  17. struct hpsb_protocol_driver {
  18. /* The name of the driver, e.g. SBP2 or IP1394 */
  19. const char *name;
  20. /* 
  21.  * The device id table describing the protocols and/or devices
  22.  * supported by this driver.  This is used by the nodemgr to
  23.  * decide if a driver could support a given node, but the
  24.  * probe function below can implement further protocol
  25.  * dependent or vendor dependent checking.
  26.  */
  27. struct ieee1394_device_id *id_table;
  28. /* 
  29.  * The probe function is called when a device is added to the
  30.  * bus and the nodemgr finds a matching entry in the drivers
  31.  * device id table or when registering this driver and a
  32.  * previously unhandled device can be handled.  The driver may
  33.  * decline to handle the device based on further investigation
  34.  * of the device (or whatever reason) in which case a negative
  35.  * error code should be returned, otherwise 0 should be
  36.  * returned. The driver may use the driver_data field in the
  37.  * unit directory to store per device driver specific data.
  38.  */
  39. int (*probe)(struct unit_directory *ud);
  40. /* 
  41.  * The disconnect function is called when a device is removed
  42.  * from the bus or if it wasn't possible to read the guid
  43.  * after the last bus reset.
  44.  */
  45. void (*disconnect)(struct unit_directory *ud);
  46. /* 
  47.  * The update function is called when the node has just
  48.  * survived a bus reset, i.e. it is still present on the bus.
  49.  * However, it may be necessary to reestablish the connection
  50.  * or login into the node again, depending on the protocol.
  51.  */
  52. void (*update)(struct unit_directory *ud);
  53. /* Driver in list of all registered drivers */
  54. struct list_head list;
  55. /* The list of unit directories managed by this driver */
  56. struct list_head unit_directories;
  57. };
  58. int hpsb_register_protocol(struct hpsb_protocol_driver *driver);
  59. void hpsb_unregister_protocol(struct hpsb_protocol_driver *driver);
  60. int hpsb_claim_unit_directory(struct unit_directory *ud,
  61.       struct hpsb_protocol_driver *driver);
  62. void hpsb_release_unit_directory(struct unit_directory *ud);
  63. #endif /* _IEEE1394_HOTPLUG_H */