hvsi.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #ifndef _HVSI_H
  2. #define _HVSI_H
  3. #define VS_DATA_PACKET_HEADER 0xff
  4. #define VS_CONTROL_PACKET_HEADER 0xfe
  5. #define VS_QUERY_PACKET_HEADER 0xfd
  6. #define VS_QUERY_RESPONSE_PACKET_HEADER 0xfc
  7. /* control verbs */
  8. #define VSV_SET_MODEM_CTL 1 /* to service processor only */
  9. #define VSV_MODEM_CTL_UPDATE 2 /* from service processor only */
  10. #define VSV_CLOSE_PROTOCOL 3
  11. /* query verbs */
  12. #define VSV_SEND_VERSION_NUMBER 1
  13. #define VSV_SEND_MODEM_CTL_STATUS 2
  14. /* yes, these masks are not consecutive. */
  15. #define HVSI_TSDTR 0x01
  16. #define HVSI_TSCD 0x20
  17. #define HVSI_MAX_OUTGOING_DATA 12
  18. #define HVSI_VERSION 1
  19. struct hvsi_header {
  20. uint8_t type;
  21. uint8_t len;
  22. uint16_t seqno;
  23. } __attribute__((packed));
  24. struct hvsi_data {
  25. uint8_t type;
  26. uint8_t len;
  27. uint16_t seqno;
  28. uint8_t data[HVSI_MAX_OUTGOING_DATA];
  29. } __attribute__((packed));
  30. struct hvsi_control {
  31. uint8_t type;
  32. uint8_t len;
  33. uint16_t seqno;
  34. uint16_t verb;
  35. /* optional depending on verb: */
  36. uint32_t word;
  37. uint32_t mask;
  38. } __attribute__((packed));
  39. struct hvsi_query {
  40. uint8_t type;
  41. uint8_t len;
  42. uint16_t seqno;
  43. uint16_t verb;
  44. } __attribute__((packed));
  45. struct hvsi_query_response {
  46. uint8_t type;
  47. uint8_t len;
  48. uint16_t seqno;
  49. uint16_t verb;
  50. uint16_t query_seqno;
  51. union {
  52. uint8_t version;
  53. uint32_t mctrl_word;
  54. } u;
  55. } __attribute__((packed));
  56. #endif /* _HVSI_H */