1*9430SRaymond.Chen@Sun.COM /* 2*9430SRaymond.Chen@Sun.COM * CDDL HEADER START 3*9430SRaymond.Chen@Sun.COM * 4*9430SRaymond.Chen@Sun.COM * The contents of this file are subject to the terms of the 5*9430SRaymond.Chen@Sun.COM * Common Development and Distribution License (the "License"). 6*9430SRaymond.Chen@Sun.COM * You may not use this file except in compliance with the License. 7*9430SRaymond.Chen@Sun.COM * 8*9430SRaymond.Chen@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*9430SRaymond.Chen@Sun.COM * or http://www.opensolaris.org/os/licensing. 10*9430SRaymond.Chen@Sun.COM * See the License for the specific language governing permissions 11*9430SRaymond.Chen@Sun.COM * and limitations under the License. 12*9430SRaymond.Chen@Sun.COM * 13*9430SRaymond.Chen@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 14*9430SRaymond.Chen@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*9430SRaymond.Chen@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 16*9430SRaymond.Chen@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 17*9430SRaymond.Chen@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 18*9430SRaymond.Chen@Sun.COM * 19*9430SRaymond.Chen@Sun.COM * CDDL HEADER END 20*9430SRaymond.Chen@Sun.COM */ 21*9430SRaymond.Chen@Sun.COM /* 22*9430SRaymond.Chen@Sun.COM * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23*9430SRaymond.Chen@Sun.COM * Use is subject to license terms. 24*9430SRaymond.Chen@Sun.COM */ 25*9430SRaymond.Chen@Sun.COM 26*9430SRaymond.Chen@Sun.COM #ifndef _SYS_USB_WUSBA_IO_H 27*9430SRaymond.Chen@Sun.COM #define _SYS_USB_WUSBA_IO_H 28*9430SRaymond.Chen@Sun.COM 29*9430SRaymond.Chen@Sun.COM #ifdef __cplusplus 30*9430SRaymond.Chen@Sun.COM extern "C" { 31*9430SRaymond.Chen@Sun.COM #endif 32*9430SRaymond.Chen@Sun.COM 33*9430SRaymond.Chen@Sun.COM /* ioctl commands between wusb host and the wusbadm tool */ 34*9430SRaymond.Chen@Sun.COM #define WUSB_HC_IOC ('W' << 8) 35*9430SRaymond.Chen@Sun.COM 36*9430SRaymond.Chen@Sun.COM /* get the state of a device corresponding to cdid */ 37*9430SRaymond.Chen@Sun.COM #define WUSB_HC_GET_DSTATE (WUSB_HC_IOC | 0x01) 38*9430SRaymond.Chen@Sun.COM 39*9430SRaymond.Chen@Sun.COM #define MAX_USB_NODENAME 256 40*9430SRaymond.Chen@Sun.COM /* for WUSB_HC_GET_DSTATE ioctl */ 41*9430SRaymond.Chen@Sun.COM typedef struct wusb_hc_get_dstate { 42*9430SRaymond.Chen@Sun.COM uint8_t cdid[16]; /* IN arg */ 43*9430SRaymond.Chen@Sun.COM uint16_t state; /* OUT arg - device state */ 44*9430SRaymond.Chen@Sun.COM char path[MAXPATHLEN]; /* OUT arg - device apid */ 45*9430SRaymond.Chen@Sun.COM 46*9430SRaymond.Chen@Sun.COM /* OUT arg - driver name XXX: need to find MAX nodename len */ 47*9430SRaymond.Chen@Sun.COM char nodename[MAX_USB_NODENAME]; 48*9430SRaymond.Chen@Sun.COM } wusb_hc_get_dstate_t; 49*9430SRaymond.Chen@Sun.COM 50*9430SRaymond.Chen@Sun.COM /* device state, refer to WUSB 1.0 spec - Figure 7.1 */ 51*9430SRaymond.Chen@Sun.COM enum wusb_device_state { 52*9430SRaymond.Chen@Sun.COM WUSB_STATE_UNCONNTED = 0, 53*9430SRaymond.Chen@Sun.COM WUSB_STATE_CONNTING, /* sent connection notification */ 54*9430SRaymond.Chen@Sun.COM WUSB_STATE_UNAUTHENTICATED, /* got connect ACK from host */ 55*9430SRaymond.Chen@Sun.COM WUSB_STATE_DEFAULT, /* authenticated and usb addr = 0 */ 56*9430SRaymond.Chen@Sun.COM WUSB_STATE_ADDRESSED, /* non-zero usb addr is assigned */ 57*9430SRaymond.Chen@Sun.COM WUSB_STATE_CONFIGURED, /* configuration is set */ 58*9430SRaymond.Chen@Sun.COM WUSB_STATE_SLEEPING, 59*9430SRaymond.Chen@Sun.COM WUSB_STATE_RECONNTING 60*9430SRaymond.Chen@Sun.COM }; 61*9430SRaymond.Chen@Sun.COM 62*9430SRaymond.Chen@Sun.COM /* get host 48-bit MAC addr */ 63*9430SRaymond.Chen@Sun.COM #define WUSB_HC_GET_MAC_ADDR (WUSB_HC_IOC | 0x02) 64*9430SRaymond.Chen@Sun.COM 65*9430SRaymond.Chen@Sun.COM /* load CC to host and update chid when cc list is null */ 66*9430SRaymond.Chen@Sun.COM #define WUSB_HC_ADD_CC (WUSB_HC_IOC | 0x03) 67*9430SRaymond.Chen@Sun.COM 68*9430SRaymond.Chen@Sun.COM /* remove CC from host */ 69*9430SRaymond.Chen@Sun.COM #define WUSB_HC_REM_CC (WUSB_HC_IOC | 0x04) 70*9430SRaymond.Chen@Sun.COM 71*9430SRaymond.Chen@Sun.COM /* CC structure for WUSB_HC_ADD_CC and WUSB_HC_REM_CC ioctl */ 72*9430SRaymond.Chen@Sun.COM typedef struct wusb_cc { 73*9430SRaymond.Chen@Sun.COM uint8_t CHID[16]; 74*9430SRaymond.Chen@Sun.COM uint8_t CDID[16]; 75*9430SRaymond.Chen@Sun.COM uint8_t CK[16]; 76*9430SRaymond.Chen@Sun.COM } wusb_cc_t; 77*9430SRaymond.Chen@Sun.COM 78*9430SRaymond.Chen@Sun.COM /* set host beaconing channel number */ 79*9430SRaymond.Chen@Sun.COM #define WUSB_HC_SET_CHANNEL (WUSB_HC_IOC | 0x05) 80*9430SRaymond.Chen@Sun.COM 81*9430SRaymond.Chen@Sun.COM /* start host to accept device connections and transfers */ 82*9430SRaymond.Chen@Sun.COM #define WUSB_HC_START (WUSB_HC_IOC | 0x06) 83*9430SRaymond.Chen@Sun.COM 84*9430SRaymond.Chen@Sun.COM /* 85*9430SRaymond.Chen@Sun.COM * start flag bitmap for WUSB_HC_START ioctl: 86*9430SRaymond.Chen@Sun.COM * INITIAL_START and CHANNEL_START are exclusive 87*9430SRaymond.Chen@Sun.COM */ 88*9430SRaymond.Chen@Sun.COM #define WUSB_HC_INITIAL_START 0x00000001 /* fully start host */ 89*9430SRaymond.Chen@Sun.COM #define WUSB_HC_CHANNEL_START 0x00000002 /* partially start host */ 90*9430SRaymond.Chen@Sun.COM 91*9430SRaymond.Chen@Sun.COM /* stop host functioning */ 92*9430SRaymond.Chen@Sun.COM #define WUSB_HC_STOP (WUSB_HC_IOC | 0x07) 93*9430SRaymond.Chen@Sun.COM 94*9430SRaymond.Chen@Sun.COM /* 95*9430SRaymond.Chen@Sun.COM * stop flag bitmap for WUSB_HC_STOP ioctl: 96*9430SRaymond.Chen@Sun.COM * FINAL_STOP and CHANNEL_STOP are exclusive, and there must be one 97*9430SRaymond.Chen@Sun.COM * REM_ALL_CC is optional 98*9430SRaymond.Chen@Sun.COM */ 99*9430SRaymond.Chen@Sun.COM #define WUSB_HC_FINAL_STOP 0x00000001 /* fully stop host */ 100*9430SRaymond.Chen@Sun.COM #define WUSB_HC_CHANNEL_STOP 0x00000002 /* partially stop host */ 101*9430SRaymond.Chen@Sun.COM #define WUSB_HC_REM_ALL_CC 0x00000004 /* remove all cc'es */ 102*9430SRaymond.Chen@Sun.COM 103*9430SRaymond.Chen@Sun.COM /* start host to accept new device connections */ 104*9430SRaymond.Chen@Sun.COM #define WUSB_HC_START_NA (WUSB_HC_IOC | 0x08) 105*9430SRaymond.Chen@Sun.COM 106*9430SRaymond.Chen@Sun.COM /* stop host from accepting new device connections */ 107*9430SRaymond.Chen@Sun.COM #define WUSB_HC_STOP_NA (WUSB_HC_IOC | 0x09) 108*9430SRaymond.Chen@Sun.COM 109*9430SRaymond.Chen@Sun.COM /* get host state */ 110*9430SRaymond.Chen@Sun.COM #define WUSB_HC_GET_HSTATE (WUSB_HC_IOC | 0x0a) 111*9430SRaymond.Chen@Sun.COM 112*9430SRaymond.Chen@Sun.COM /* host state for WUSB_HC_GET_HSTATE ioctl */ 113*9430SRaymond.Chen@Sun.COM enum wusb_host_state { 114*9430SRaymond.Chen@Sun.COM WUSB_HC_DISCONNTED = 0, 115*9430SRaymond.Chen@Sun.COM WUSB_HC_STOPPED, /* default or WUSB_HC_FINAL_STOP is called */ 116*9430SRaymond.Chen@Sun.COM WUSB_HC_STARTED, /* WUSB_HC_INITIAL_START is called */ 117*9430SRaymond.Chen@Sun.COM WUSB_HC_CH_STOPPED /* WUSB_HC_CHANNEL_STOP is called */ 118*9430SRaymond.Chen@Sun.COM }; 119*9430SRaymond.Chen@Sun.COM 120*9430SRaymond.Chen@Sun.COM #ifdef __cplusplus 121*9430SRaymond.Chen@Sun.COM } 122*9430SRaymond.Chen@Sun.COM #endif 123*9430SRaymond.Chen@Sun.COM 124*9430SRaymond.Chen@Sun.COM #endif /* _SYS_USB_WUSBA_IO_H */ 125