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