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 2009 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26 #ifndef _SYS_UWB_UWBAI_H 27 #define _SYS_UWB_UWBAI_H 28 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif 33 34 /* 35 * This header file includes interfaces for UWB radio controller drivers. 36 */ 37 38 /* 39 * A uwb device handle is returned by uwb_device_attach() on success. The 40 * handle is opaque to the client uwba driver. The implimentation structure is 41 * uwba_dev 42 */ 43 typedef struct uwb_dev_handle *uwb_dev_handle_t; 44 45 46 /* 47 * UWBA function return values 48 */ 49 #define UWB_SUCCESS 0 /* call success */ 50 #define UWB_FAILURE -1 /* unspecified UWBA or HCD error */ 51 #define UWB_NO_RESOURCES -2 /* no resources available */ 52 #define UWB_NO_BANDWIDTH -3 /* no bandwidth available */ 53 #define UWB_NOT_SUPPORTED -4 /* function not supported by HCD */ 54 #define UWB_PIPE_ERROR -5 /* error occured on the pipe */ 55 #define UWB_INVALID_PIPE -6 /* pipe handle passed is invalid */ 56 #define UWB_NO_FRAME_NUMBER -7 /* frame No or ASAP not specified */ 57 #define UWB_INVALID_START_FRAME -8 /* starting UWB frame not valid */ 58 #define UWB_HC_HARDWARE_ERROR -9 /* UWB host controller error */ 59 #define UWB_INVALID_REQUEST -10 /* request had invalid values */ 60 #define UWB_INVALID_CONTEXT -11 /* sleep flag in interrupt context */ 61 #define UWB_INVALID_VERSION -12 /* invalid version specified */ 62 #define UWB_INVALID_ARGS -13 /* invalid func args specified */ 63 #define UWB_INVALID_PERM -14 /* privileged operation */ 64 #define UWB_BUSY -15 /* busy condition */ 65 #define UWB_PARSE_ERROR -18 66 67 68 69 /* Max wait time for each uwb cmd */ 70 #define UWB_CMD_TIMEOUT (ddi_get_lbolt() + drv_usectohz(10000000)) 71 72 73 /* 74 * Radio controller driver registion 75 */ 76 void uwb_dev_attach(dev_info_t *, uwb_dev_handle_t *, uint_t, 77 int (*)(uwb_dev_handle_t, mblk_t *, uint16_t)); 78 void uwb_dev_detach(uwb_dev_handle_t); 79 80 /* UWB COMMON INTERFACES */ 81 int uwb_do_ioctl(uwb_dev_handle_t, int, intptr_t, int); 82 int uwb_parse_evt_notif(uint8_t *, int, uwb_dev_handle_t); 83 int uwb_scan_channel(uwb_dev_handle_t, uint8_t); 84 int uwb_reset_dev(dev_info_t *); 85 int uwb_init_phy(dev_info_t *); 86 int uwb_stop_beacon(dev_info_t *); 87 int uwb_start_beacon(dev_info_t *, uint8_t); 88 int uwb_get_mac_addr(dev_info_t *, uint8_t *); 89 int uwb_get_dev_addr(dev_info_t *, uint16_t *); 90 int uwb_set_dev_addr(dev_info_t *, uint16_t); 91 uint8_t uwb_allocate_channel(dev_info_t *); 92 93 int uwb_dev_disconnect(dev_info_t *); 94 int uwb_dev_reconnect(dev_info_t *); 95 96 int uwb_dev_online(dev_info_t *); 97 int uwb_dev_offline(dev_info_t *); 98 99 dev_info_t *uwb_get_dip(uwb_dev_handle_t); 100 101 #ifdef __cplusplus 102 } 103 #endif 104 105 #endif /* _SYS_UWB_UWBAI_H */