keyspan_pipe.h revision 02dd21081e66fa04b4c6f0962352e15edcabfbb0
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_USB_USBSER_KEYSPAN_PIPE_H
#define _SYS_USB_USBSER_KEYSPAN_PIPE_H
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* USB pipe management (mostly device-neutral)
*/
#ifdef __cplusplus
extern "C" {
#endif
/*
* pipe structure
*/
typedef struct keyspan_pipe {
kmutex_t pipe_mutex; /* structure lock */
keyspan_state_t *pipe_ksp; /* backpointer to state */
usb_pipe_handle_t pipe_handle; /* pipe handle */
usb_ep_descr_t pipe_ep_descr; /* endpoint descriptor */
usb_pipe_policy_t pipe_policy; /* pipe policy */
int pipe_state; /* pipe state */
usb_log_handle_t pipe_lh; /* log handle */
} keyspan_pipe_t;
_NOTE(MUTEX_PROTECTS_DATA(keyspan_pipe::pipe_mutex, keyspan_pipe))
_NOTE(DATA_READABLE_WITHOUT_LOCK(keyspan_pipe::{
pipe_ksp
pipe_handle
pipe_lh
pipe_ep_descr
pipe_policy
}))
/* pipe states */
enum {
KEYSPAN_PIPE_NOT_INIT = 0,
KEYSPAN_PIPE_CLOSED,
KEYSPAN_PIPE_OPEN
};
int keyspan_init_pipes(keyspan_state_t *);
int keyspan_init_pipes_usa49wg(keyspan_state_t *);
void keyspan_fini_pipes(keyspan_state_t *);
int keyspansp_open_pipes(keyspan_state_t *);
void keyspansp_close_pipes(keyspan_state_t *);
int keyspan_open_dev_pipes(keyspan_state_t *);
void keyspan_close_dev_pipes(keyspan_state_t *);
int keyspan_open_port_pipes(keyspan_port_t *);
void keyspan_close_port_pipes(keyspan_port_t *);
int keyspan_reopen_pipes(keyspan_state_t *);
void keyspan_close_pipes(keyspan_state_t *);
void keyspan_close_open_pipes(keyspan_state_t *esp);
int keyspan_receive_data(keyspan_pipe_t *, int, void *);
int keyspan_send_data(keyspan_pipe_t *, mblk_t **, void *);
int keyspan_send_data_port0(keyspan_pipe_t *, mblk_t **, void *);
int keyspan_receive_status(keyspan_state_t *);
void keyspan_pipe_start_polling(keyspan_pipe_t *);
#ifdef __cplusplus
}
#endif
#endif /* _SYS_USB_USBSER_KEYSPAN_PIPE_H */