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 */