1fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/* 2fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * Copyright (c) 2013, The Linux Foundation. All rights reserved. 3fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * Not a Contribution. 4fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * Copyright (C) 2009-2012 Broadcom Corporation 5fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * 6fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * Licensed under the Apache License, Version 2.0 (the "License"); 7fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * you may not use this file except in compliance with the License. 8fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * You may obtain a copy of the License at 9fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * 10fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * http://www.apache.org/licenses/LICENSE-2.0 11fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * 12fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * Unless required by applicable law or agreed to in writing, software 13fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * distributed under the License is distributed on an "AS IS" BASIS, 14fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * See the License for the specific language governing permissions and 16fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * limitations under the License. 17fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh */ 18fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 19fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#ifndef HCI_UART_H 20fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define HCI_UART_H 21fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 22fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#include <asm-generic/ioctls.h> 23fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 24fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/* Variables to identify the platform */ 25fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/*BT HS UART TTY DEVICE */ 26fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define BT_HS_UART_DEVICE "/dev/ttyHS0" 27fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 28fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/**** baud rates ****/ 29fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_300 0 30fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_600 1 31fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_1200 2 32fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_2400 3 33fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_9600 4 34fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_19200 5 35fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_57600 6 36fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_115200 7 37fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_230400 8 38fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_460800 9 39fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_921600 10 40fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_1M 11 41fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_1_5M 12 42fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_2M 13 43fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_3M 14 44fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_4M 15 45fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_BAUD_AUTO 16 46fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 47fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/**** Data Format ****/ 48fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/* Stop Bits */ 49fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_STOPBITS_1 1 50fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_STOPBITS_1_5 (1<<1) 51fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_STOPBITS_2 (1<<2) 52fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 53fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/* Parity Bits */ 54fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_PARITY_NONE (1<<3) 55fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_PARITY_EVEN (1<<4) 56fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_PARITY_ODD (1<<5) 57fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 58fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/* Data Bits */ 59fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_DATABITS_5 (1<<6) 60fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_DATABITS_6 (1<<7) 61fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_DATABITS_7 (1<<8) 62fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_DATABITS_8 (1<<9) 63fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 64fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/* HCI Packet types */ 65fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define HCI_COMMAND_PKT 0x01 66fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define HCI_ACLDATA_PKT 0x02 67fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define HCI_SCODATA_PKT 0x03 68fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define HCI_EVENT_PKT 0x04 69fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define HCI_VENDOR_PKT 0xff 70fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 71fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/* HCI Command/Event Opcode */ 72fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define HCI_RESET 0x0C03 73fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define EVT_CMD_COMPLETE 0x0E 74fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 75fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/* Command opcode pack/unpack */ 76fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define cmd_opcode_pack(ogf, ocf) (uint16_t)((ocf & 0x03ff)|(ogf << 10)) 77fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 78fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#if (BT_WAKE_VIA_USERIAL_IOCTL==TRUE) 79fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/* These are the ioctl values used for bt_wake ioctl via UART driver. you may 80fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * need to redefine them on you platform! 81fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh * Logically they need to be unique and not colide with existing uart ioctl's. 82fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh */ 83fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#ifndef USERIAL_IOCTL_BT_WAKE_ASSERT 84fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_IOCTL_BT_WAKE_ASSERT 0x8003 85fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#endif 86fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#ifndef USERIAL_IOCTL_BT_WAKE_DEASSERT 87fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_IOCTL_BT_WAKE_DEASSERT 0x8004 88fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#endif 89fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#ifndef USERIAL_IOCTL_BT_WAKE_GET_ST 90fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_IOCTL_BT_WAKE_GET_ST 0x8005 91fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#endif 92fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#endif // (BT_WAKE_VIA_USERIAL_IOCTL==TRUE) 93fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 94fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/* UART CLOCK IOCTLS*/ 95fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/* UART CLOCK IOCTLS*/ 96fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_OP_CLK_ON TIOCPMGET /* PM get */ 97fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_OP_CLK_OFF TIOCPMPUT /* PM put */ 98fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define USERIAL_OP_CLK_STATE TIOCPMACT /* PM is active */ 99fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 100fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/****************************************************************************** 101fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Type definitions 102fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh******************************************************************************/ 103fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 104fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/* Structure used to configure serial port during open */ 105fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhtypedef struct 106fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh{ 107fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh uint16_t fmt; /* Data format */ 108fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh uint8_t baud; /* Baud rate */ 109fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh} tUSERIAL_CFG; 110fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 111fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhtypedef enum { 112fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#if (BT_WAKE_VIA_USERIAL_IOCTL==TRUE) 113fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh USERIAL_OP_ASSERT_BT_WAKE, 114fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh USERIAL_OP_DEASSERT_BT_WAKE, 115fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh USERIAL_OP_GET_BT_WAKE_STATE, 116fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#endif 117fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh USERIAL_OP_FLOW_ON, 118fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh USERIAL_OP_FLOW_OFF, 119fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh USERIAL_OP_NOP, 120fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh} userial_vendor_ioctl_op_t; 121fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 122fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/* UPIO signals */ 123fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhenum { 124fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh UPIO_BT_WAKE = 0, 125fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh UPIO_HOST_WAKE, 126fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh UPIO_LPM_MODE, 127fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh UPIO_MAX_COUNT 128fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh}; 129fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 130fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/* UPIO assertion/deassertion */ 131fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhenum { 132fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh UPIO_UNKNOWN = 0, 133fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh UPIO_DEASSERT, 134fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh UPIO_ASSERT 135fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh}; 136fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 137fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#define VND_PORT_NAME_MAXLEN 256 138fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 139fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/* vendor serial control block */ 140fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhtypedef struct 141fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh{ 142fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh int fd; /* fd to Bluetooth device */ 143fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh struct termios termios; /* serial terminal of BT port */ 144fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh char port_name[VND_PORT_NAME_MAXLEN]; 145fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh} vnd_userial_cb_t; 146fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 147fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhtypedef struct { 148fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh uint8_t ncmd; 149fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh uint16_t opcode; 150fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh} __attribute__ ((packed)) evt_cmd_complete; 151fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 152fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhtypedef struct { 153fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh uint8_t status; 154fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh uint8_t ncmd; 155fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh uint16_t opcode; 156fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh} __attribute__ ((packed)) evt_cmd_status; 157fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 158fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhtypedef struct { 159fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh uint16_t opcode; 160fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh uint8_t plen; 161fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh} __attribute__ ((packed)) hci_command_hdr; 162fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 163fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhtypedef struct { 164fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh uint8_t evt; 165fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh uint8_t plen; 166fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh} __attribute__ ((packed)) hci_event_hdr; 167fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 168fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/****************************************************************************** 169fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Extern 170fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh******************************************************************************/ 171fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhextern vnd_userial_cb_t vnd_userial; 172fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 173fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 174fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/******************************************************************************* 175fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 176fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Function userial_vendor_init 177fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 178fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Description Initialize userial vendor-specific control block 179fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 180fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Returns None 181fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 182fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh*******************************************************************************/ 183fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhvoid userial_vendor_init(void); 184fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 185fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/******************************************************************************* 186fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 187fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Function userial_vendor_open 188fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 189fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Description Open the serial port with the given configuration 190fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 191fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Returns device fd 192fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 193fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh*******************************************************************************/ 194fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhint userial_vendor_open(tUSERIAL_CFG *p_cfg); 195fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 196fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/******************************************************************************* 197fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 198fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Function userial_vendor_close 199fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 200fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Description Conduct vendor-specific close work 201fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 202fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Returns None 203fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 204fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh*******************************************************************************/ 205fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhvoid userial_vendor_close(void); 206fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 207fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/******************************************************************************* 208fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 209fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Function userial_vendor_set_baud 210fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 211fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Description Set new baud rate 212fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 213fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Returns None 214fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 215fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh*******************************************************************************/ 216fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhvoid userial_vendor_set_baud(uint8_t userial_baud); 217fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 218fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/******************************************************************************* 219fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 220fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Function userial_vendor_ioctl 221fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 222fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Description ioctl inteface 223fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 224fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Returns int error 225fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 226fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh*******************************************************************************/ 227fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhint userial_vendor_ioctl(userial_vendor_ioctl_op_t op, int *p_data); 228fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 229fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/******************************************************************************* 230fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 231fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Function userial_to_tcio_baud 232fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 233fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Description helper function converts USERIAL baud rates into TCIO 234fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** conforming baud rates 235fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 236fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Returns TRUE/FALSE 237fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 238fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh*******************************************************************************/ 239fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhuint8_t userial_to_tcio_baud(uint8_t cfg_baud, uint32_t *baud); 240fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 241fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/******************************************************************************* 242fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 243fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Function userial_to_baud_tcio 244fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 245fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Description helper function converts TCIO baud rate into integer 246fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 247fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Returns uint32_t 248fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 249fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh*******************************************************************************/ 250fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhint userial_tcio_baud_to_int(uint32_t baud); 251fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 252fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh/******************************************************************************* 253fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 254fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Function read_hci_event 255fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 256fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Description Read HCI event during vendor initialization 257fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 258fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** Returns int: size to read 259fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh** 260fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh*******************************************************************************/ 261fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanhint read_hci_event(int fd, unsigned char* buf, int size); 262fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh 263fb594f1bd833d7dfe990c032f2a4cc97864a6fb0Alain Vongsouvanh#endif /* HCI_UART_H */ 264