1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26 #ifndef _SYS_USB_USBSER_KEYSPAN_PIPE_H 27 #define _SYS_USB_USBSER_KEYSPAN_PIPE_H 28 29 30 /* 31 * USB pipe management (mostly device-neutral) 32 */ 33 34 #ifdef __cplusplus 35 extern "C" { 36 #endif 37 38 /* 39 * pipe structure 40 */ 41 typedef struct keyspan_pipe { 42 kmutex_t pipe_mutex; /* structure lock */ 43 keyspan_state_t *pipe_ksp; /* backpointer to state */ 44 usb_pipe_handle_t pipe_handle; /* pipe handle */ 45 usb_ep_descr_t pipe_ep_descr; /* endpoint descriptor */ 46 usb_pipe_policy_t pipe_policy; /* pipe policy */ 47 int pipe_state; /* pipe state */ 48 usb_log_handle_t pipe_lh; /* log handle */ 49 } keyspan_pipe_t; 50 51 _NOTE(MUTEX_PROTECTS_DATA(keyspan_pipe::pipe_mutex, keyspan_pipe)) 52 _NOTE(DATA_READABLE_WITHOUT_LOCK(keyspan_pipe::{ 53 pipe_ksp 54 pipe_handle 55 pipe_lh 56 pipe_ep_descr 57 pipe_policy 58 })) 59 60 /* pipe states */ 61 enum { 62 KEYSPAN_PIPE_NOT_INIT = 0, 63 KEYSPAN_PIPE_CLOSED, 64 KEYSPAN_PIPE_OPEN 65 }; 66 67 68 int keyspan_init_pipes(keyspan_state_t *); 69 int keyspan_init_pipes_usa49wg(keyspan_state_t *); 70 void keyspan_fini_pipes(keyspan_state_t *); 71 int keyspansp_open_pipes(keyspan_state_t *); 72 void keyspansp_close_pipes(keyspan_state_t *); 73 int keyspan_open_dev_pipes(keyspan_state_t *); 74 void keyspan_close_dev_pipes(keyspan_state_t *); 75 int keyspan_open_port_pipes(keyspan_port_t *); 76 void keyspan_close_port_pipes(keyspan_port_t *); 77 int keyspan_reopen_pipes(keyspan_state_t *); 78 void keyspan_close_pipes(keyspan_state_t *); 79 void keyspan_close_open_pipes(keyspan_state_t *esp); 80 81 int keyspan_receive_data(keyspan_pipe_t *, int, void *); 82 int keyspan_send_data(keyspan_pipe_t *, mblk_t **, void *); 83 int keyspan_send_data_port0(keyspan_pipe_t *, mblk_t **, void *); 84 85 int keyspan_receive_status(keyspan_state_t *); 86 void keyspan_pipe_start_polling(keyspan_pipe_t *); 87 88 #ifdef __cplusplus 89 } 90 #endif 91 92 #endif /* _SYS_USB_USBSER_KEYSPAN_PIPE_H */ 93