diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2011-04-29 08:44:24 +0200 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2011-06-29 09:48:37 +0200 |
commit | 17bdc6c0e979ae61879806e4dd93ec3b169d0931 (patch) | |
tree | 35cc40c2a378d6abe696765bbf4b0bc7deff54ec /arch/powerpc/include/asm/hvsi.h | |
parent | powerpc/pseries: Re-implement HVSI as part of hvc_vio (diff) | |
download | linux-17bdc6c0e979ae61879806e4dd93ec3b169d0931.tar.xz linux-17bdc6c0e979ae61879806e4dd93ec3b169d0931.zip |
powerpc/pseries: Move hvsi support into a library
This will allow a different backend to share it
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/include/asm/hvsi.h')
-rw-r--r-- | arch/powerpc/include/asm/hvsi.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/hvsi.h b/arch/powerpc/include/asm/hvsi.h index ab2ddd76c2e0..91e0453b3743 100644 --- a/arch/powerpc/include/asm/hvsi.h +++ b/arch/powerpc/include/asm/hvsi.h @@ -56,5 +56,39 @@ struct hvsi_query_response { } 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 hvsi_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 hvsi_open(struct hvsi_priv *pv, struct hvc_struct *hp); +extern void hvsi_close(struct hvsi_priv *pv, struct hvc_struct *hp); +extern int hvsi_read_mctrl(struct hvsi_priv *pv); +extern int hvsi_write_mctrl(struct hvsi_priv *pv, int dtr); +extern void hvsi_establish(struct hvsi_priv *pv); +extern int hvsi_get_chars(struct hvsi_priv *pv, char *buf, int count); +extern int hvsi_put_chars(struct hvsi_priv *pv, const char *buf, int count); #endif /* _HVSI_H */ |