| Viewing file:  hvsi.h (2.75 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
#ifndef _HVSI_H#define _HVSI_H
 
 #define VS_DATA_PACKET_HEADER           0xff
 #define VS_CONTROL_PACKET_HEADER        0xfe
 #define VS_QUERY_PACKET_HEADER          0xfd
 #define VS_QUERY_RESPONSE_PACKET_HEADER 0xfc
 
 /* control verbs */
 #define VSV_SET_MODEM_CTL    1 /* to service processor only */
 #define VSV_MODEM_CTL_UPDATE 2 /* from service processor only */
 #define VSV_CLOSE_PROTOCOL   3
 
 /* query verbs */
 #define VSV_SEND_VERSION_NUMBER 1
 #define VSV_SEND_MODEM_CTL_STATUS 2
 
 /* yes, these masks are not consecutive. */
 #define HVSI_TSDTR 0x01
 #define HVSI_TSCD  0x20
 
 #define HVSI_MAX_OUTGOING_DATA 12
 #define HVSI_VERSION 1
 
 struct hvsi_header {
 uint8_t  type;
 uint8_t  len;
 __be16 seqno;
 } __attribute__((packed));
 
 struct hvsi_data {
 struct hvsi_header hdr;
 uint8_t  data[HVSI_MAX_OUTGOING_DATA];
 } __attribute__((packed));
 
 struct hvsi_control {
 struct hvsi_header hdr;
 __be16 verb;
 /* optional depending on verb: */
 __be32 word;
 __be32 mask;
 } __attribute__((packed));
 
 struct hvsi_query {
 struct hvsi_header hdr;
 __be16 verb;
 } __attribute__((packed));
 
 struct hvsi_query_response {
 struct hvsi_header hdr;
 __be16 verb;
 __be16 query_seqno;
 union {
 uint8_t  version;
 __be32 mctrl_word;
 } u;
 } __attribute__((packed));
 
 /* hvsi lib struct definitions */
 #define HVSI_INBUF_SIZE        255
 struct tty_struct;
 struct hvsi_priv {
 unsigned int    inbuf_len;    /* data in input buffer */
 unsigned char    inbuf[HVSI_INBUF_SIZE];
 unsigned int    inbuf_cur;    /* Cursor in input buffer */
 unsigned int    inbuf_pktlen;    /* packet lenght from cursor */
 atomic_t    seqno;        /* packet sequence number */
 unsigned int    opened:1;    /* driver opened */
 unsigned int    established:1;    /* protocol established */
 unsigned int     is_console:1;    /* used as a kernel console device */
 unsigned int    mctrl_update:1;    /* modem control updated */
 unsigned short    mctrl;        /* modem control */
 struct tty_struct *tty;        /* tty structure */
 int (*get_chars)(uint32_t termno, char *buf, int count);
 int (*put_chars)(uint32_t termno, const char *buf, int count);
 uint32_t    termno;
 };
 
 /* hvsi lib functions */
 struct hvc_struct;
 extern void hvsilib_init(struct hvsi_priv *pv,
 int (*get_chars)(uint32_t termno, char *buf, int count),
 int (*put_chars)(uint32_t termno, const char *buf,
 int count),
 int termno, int is_console);
 extern int hvsilib_open(struct hvsi_priv *pv, struct hvc_struct *hp);
 extern void hvsilib_close(struct hvsi_priv *pv, struct hvc_struct *hp);
 extern int hvsilib_read_mctrl(struct hvsi_priv *pv);
 extern int hvsilib_write_mctrl(struct hvsi_priv *pv, int dtr);
 extern void hvsilib_establish(struct hvsi_priv *pv);
 extern int hvsilib_get_chars(struct hvsi_priv *pv, char *buf, int count);
 extern int hvsilib_put_chars(struct hvsi_priv *pv, const char *buf, int count);
 
 #endif /* _HVSI_H */
 
 |