160b08185Syz /* 260b08185Syz * CDDL HEADER START 360b08185Syz * 460b08185Syz * The contents of this file are subject to the terms of the 502dd2108Slg * Common Development and Distribution License (the "License"). 602dd2108Slg * You may not use this file except in compliance with the License. 760b08185Syz * 860b08185Syz * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 960b08185Syz * or http://www.opensolaris.org/os/licensing. 1060b08185Syz * See the License for the specific language governing permissions 1160b08185Syz * and limitations under the License. 1260b08185Syz * 1360b08185Syz * When distributing Covered Code, include this CDDL HEADER in each 1460b08185Syz * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1560b08185Syz * If applicable, add the following below this CDDL HEADER, with the 1660b08185Syz * fields enclosed by brackets "[]" replaced with your own identifying 1760b08185Syz * information: Portions Copyright [yyyy] [name of copyright owner] 1860b08185Syz * 1960b08185Syz * CDDL HEADER END 2060b08185Syz */ 2160b08185Syz /* 22*d29f5a71Szhigang lu - Sun Microsystems - Beijing China * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 2360b08185Syz * Use is subject to license terms. 2460b08185Syz */ 2560b08185Syz 2660b08185Syz #ifndef _SYS_USB_USBSER_KEYSPAN_PIPE_H 2760b08185Syz #define _SYS_USB_USBSER_KEYSPAN_PIPE_H 2860b08185Syz 2960b08185Syz 3060b08185Syz /* 3160b08185Syz * USB pipe management (mostly device-neutral) 3260b08185Syz */ 3360b08185Syz 3460b08185Syz #ifdef __cplusplus 3560b08185Syz extern "C" { 3660b08185Syz #endif 3760b08185Syz 3860b08185Syz /* 3960b08185Syz * pipe structure 4060b08185Syz */ 4160b08185Syz typedef struct keyspan_pipe { 4260b08185Syz kmutex_t pipe_mutex; /* structure lock */ 4360b08185Syz keyspan_state_t *pipe_ksp; /* backpointer to state */ 4460b08185Syz usb_pipe_handle_t pipe_handle; /* pipe handle */ 4560b08185Syz usb_ep_descr_t pipe_ep_descr; /* endpoint descriptor */ 4660b08185Syz usb_pipe_policy_t pipe_policy; /* pipe policy */ 4760b08185Syz int pipe_state; /* pipe state */ 4860b08185Syz usb_log_handle_t pipe_lh; /* log handle */ 4960b08185Syz } keyspan_pipe_t; 5060b08185Syz 5160b08185Syz _NOTE(MUTEX_PROTECTS_DATA(keyspan_pipe::pipe_mutex, keyspan_pipe)) 5260b08185Syz _NOTE(DATA_READABLE_WITHOUT_LOCK(keyspan_pipe::{ 5360b08185Syz pipe_ksp 5460b08185Syz pipe_handle 5560b08185Syz pipe_lh 5660b08185Syz pipe_ep_descr 5760b08185Syz pipe_policy 5860b08185Syz })) 5960b08185Syz 6060b08185Syz /* pipe states */ 6160b08185Syz enum { 6260b08185Syz KEYSPAN_PIPE_NOT_INIT = 0, 6360b08185Syz KEYSPAN_PIPE_CLOSED, 6460b08185Syz KEYSPAN_PIPE_OPEN 6560b08185Syz }; 6660b08185Syz 6760b08185Syz 6860b08185Syz int keyspan_init_pipes(keyspan_state_t *); 6902dd2108Slg int keyspan_init_pipes_usa49wg(keyspan_state_t *); 7060b08185Syz void keyspan_fini_pipes(keyspan_state_t *); 7160b08185Syz int keyspansp_open_pipes(keyspan_state_t *); 7260b08185Syz void keyspansp_close_pipes(keyspan_state_t *); 7360b08185Syz int keyspan_open_dev_pipes(keyspan_state_t *); 7460b08185Syz void keyspan_close_dev_pipes(keyspan_state_t *); 7560b08185Syz int keyspan_open_port_pipes(keyspan_port_t *); 7660b08185Syz void keyspan_close_port_pipes(keyspan_port_t *); 7760b08185Syz int keyspan_reopen_pipes(keyspan_state_t *); 7860b08185Syz void keyspan_close_pipes(keyspan_state_t *); 7960b08185Syz void keyspan_close_open_pipes(keyspan_state_t *esp); 8060b08185Syz 8160b08185Syz int keyspan_receive_data(keyspan_pipe_t *, int, void *); 8260b08185Syz int keyspan_send_data(keyspan_pipe_t *, mblk_t **, void *); 8302dd2108Slg int keyspan_send_data_port0(keyspan_pipe_t *, mblk_t **, void *); 8460b08185Syz 8560b08185Syz int keyspan_receive_status(keyspan_state_t *); 8602dd2108Slg void keyspan_pipe_start_polling(keyspan_pipe_t *); 8760b08185Syz 8860b08185Syz #ifdef __cplusplus 8960b08185Syz } 9060b08185Syz #endif 9160b08185Syz 9260b08185Syz #endif /* _SYS_USB_USBSER_KEYSPAN_PIPE_H */ 93