 87fa35dd88
			
		
	
	
	87fa35dd88
	
	
	
		
			
			A mix of think & mismerge on my side caused a problem where both the new hvsi_lib and the old hvsi driver gets compiled and try to define symbols with the same name. This fixes it by renaming the hvsi_lib exported symbols. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
		
			
				
	
	
		
			94 lines
		
	
	
	
		
			2.8 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
	
		
			2.8 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #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;
 | |
| 	uint16_t 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;
 | |
| 	uint16_t verb;
 | |
| 	/* optional depending on verb: */
 | |
| 	uint32_t word;
 | |
| 	uint32_t mask;
 | |
| } __attribute__((packed));
 | |
| 
 | |
| struct hvsi_query {
 | |
| 	struct hvsi_header hdr;
 | |
| 	uint16_t verb;
 | |
| } __attribute__((packed));
 | |
| 
 | |
| struct hvsi_query_response {
 | |
| 	struct hvsi_header hdr;
 | |
| 	uint16_t verb;
 | |
| 	uint16_t query_seqno;
 | |
| 	union {
 | |
| 		uint8_t  version;
 | |
| 		uint32_t 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 */
 |