10ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/* 20ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * Copyright (c) 2013, The Linux Foundation. All rights reserved. 30ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * Not a Contribution. 40ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * Copyright (C) 2009-2012 Broadcom Corporation 50ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * 60ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * Licensed under the Apache License, Version 2.0 (the "License"); 70ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * you may not use this file except in compliance with the License. 80ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * You may obtain a copy of the License at 90ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * 100ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * http://www.apache.org/licenses/LICENSE-2.0 110ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * 120ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * Unless required by applicable law or agreed to in writing, software 130ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * distributed under the License is distributed on an "AS IS" BASIS, 140ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 150ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * See the License for the specific language governing permissions and 160ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * limitations under the License. 170ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel */ 180ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 190ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#ifndef HCI_UART_H 200ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define HCI_UART_H 210ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 220ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#include <asm-generic/ioctls.h> 23abb4fd870fa1a3dd91a71f6e0d33d6aaa44079c1Jiyong Park#include <termios.h> 240ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 250ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/* Variables to identify the platform */ 260ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/*BT HS UART TTY DEVICE */ 270ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define BT_HS_UART_DEVICE "/dev/ttyHS0" 280ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 290ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/**** baud rates ****/ 300ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_300 0 310ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_600 1 320ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_1200 2 330ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_2400 3 340ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_9600 4 350ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_19200 5 360ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_57600 6 370ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_115200 7 380ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_230400 8 390ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_460800 9 400ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_921600 10 410ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_1M 11 420ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_1_5M 12 430ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_2M 13 440ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_3M 14 450ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_4M 15 460ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_BAUD_AUTO 16 470ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 480ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/**** Data Format ****/ 490ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/* Stop Bits */ 500ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_STOPBITS_1 1 510ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_STOPBITS_1_5 (1<<1) 520ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_STOPBITS_2 (1<<2) 530ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 540ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/* Parity Bits */ 550ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_PARITY_NONE (1<<3) 560ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_PARITY_EVEN (1<<4) 570ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_PARITY_ODD (1<<5) 580ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 590ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/* Data Bits */ 600ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_DATABITS_5 (1<<6) 610ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_DATABITS_6 (1<<7) 620ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_DATABITS_7 (1<<8) 630ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_DATABITS_8 (1<<9) 640ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 650ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/* HCI Packet types */ 660ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define HCI_COMMAND_PKT 0x01 670ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define HCI_ACLDATA_PKT 0x02 680ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define HCI_SCODATA_PKT 0x03 690ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define HCI_EVENT_PKT 0x04 700ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define HCI_VENDOR_PKT 0xff 710ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 720ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/* HCI Command/Event Opcode */ 730ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define HCI_RESET 0x0C03 740ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define EVT_CMD_COMPLETE 0x0E 750ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 760ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/* Command opcode pack/unpack */ 770ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define cmd_opcode_pack(ogf, ocf) (uint16_t)((ocf & 0x03ff)|(ogf << 10)) 780ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 790ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#if (BT_WAKE_VIA_USERIAL_IOCTL==TRUE) 800ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/* These are the ioctl values used for bt_wake ioctl via UART driver. you may 810ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * need to redefine them on you platform! 820ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel * Logically they need to be unique and not colide with existing uart ioctl's. 830ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel */ 840ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#ifndef USERIAL_IOCTL_BT_WAKE_ASSERT 850ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_IOCTL_BT_WAKE_ASSERT 0x8003 860ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#endif 870ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#ifndef USERIAL_IOCTL_BT_WAKE_DEASSERT 880ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_IOCTL_BT_WAKE_DEASSERT 0x8004 890ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#endif 900ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#ifndef USERIAL_IOCTL_BT_WAKE_GET_ST 910ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_IOCTL_BT_WAKE_GET_ST 0x8005 920ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#endif 930ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#endif // (BT_WAKE_VIA_USERIAL_IOCTL==TRUE) 940ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 950ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/* UART CLOCK IOCTLS*/ 960ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/* UART CLOCK IOCTLS*/ 970ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_OP_CLK_ON TIOCPMGET /* PM get */ 980ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_OP_CLK_OFF TIOCPMPUT /* PM put */ 990ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define USERIAL_OP_CLK_STATE TIOCPMACT /* PM is active */ 1000ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1010ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/****************************************************************************** 1020ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Type definitions 1030ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel******************************************************************************/ 1040ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1050ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/* Structure used to configure serial port during open */ 1060ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudeltypedef struct 1070ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel{ 1080ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel uint16_t fmt; /* Data format */ 1090ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel uint8_t baud; /* Baud rate */ 1100ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel} tUSERIAL_CFG; 1110ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1120ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudeltypedef enum { 1130ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#if (BT_WAKE_VIA_USERIAL_IOCTL==TRUE) 1140ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel USERIAL_OP_ASSERT_BT_WAKE, 1150ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel USERIAL_OP_DEASSERT_BT_WAKE, 1160ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel USERIAL_OP_GET_BT_WAKE_STATE, 1170ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#endif 1180ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel USERIAL_OP_FLOW_ON, 1190ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel USERIAL_OP_FLOW_OFF, 1200ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel USERIAL_OP_NOP, 1210ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel} userial_vendor_ioctl_op_t; 1220ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1230ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/* UPIO signals */ 1240ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudelenum { 1250ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel UPIO_BT_WAKE = 0, 1260ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel UPIO_HOST_WAKE, 1270ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel UPIO_LPM_MODE, 1280ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel UPIO_MAX_COUNT 1290ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel}; 1300ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1310ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/* UPIO assertion/deassertion */ 1320ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudelenum { 1330ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel UPIO_UNKNOWN = 0, 1340ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel UPIO_DEASSERT, 1350ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel UPIO_ASSERT 1360ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel}; 1370ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1380ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#define VND_PORT_NAME_MAXLEN 256 1390ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1400ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/* vendor serial control block */ 1410ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudeltypedef struct 1420ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel{ 1430ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel int fd; /* fd to Bluetooth device */ 1440ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel struct termios termios; /* serial terminal of BT port */ 1450ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel char port_name[VND_PORT_NAME_MAXLEN]; 1460ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel} vnd_userial_cb_t; 1470ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1480ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudeltypedef struct { 1490ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel uint8_t ncmd; 1500ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel uint16_t opcode; 1510ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel} __attribute__ ((packed)) evt_cmd_complete; 1520ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1530ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudeltypedef struct { 1540ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel uint8_t status; 1550ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel uint8_t ncmd; 1560ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel uint16_t opcode; 1570ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel} __attribute__ ((packed)) evt_cmd_status; 1580ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1590ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudeltypedef struct { 1600ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel uint16_t opcode; 1610ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel uint8_t plen; 1620ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel} __attribute__ ((packed)) hci_command_hdr; 1630ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1640ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudeltypedef struct { 1650ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel uint8_t evt; 1660ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel uint8_t plen; 1670ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel} __attribute__ ((packed)) hci_event_hdr; 1680ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1690ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/****************************************************************************** 1700ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Extern 1710ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel******************************************************************************/ 1720ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudelextern vnd_userial_cb_t vnd_userial; 1730ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1740ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1750ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/******************************************************************************* 1760ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 1770ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Function userial_vendor_init 1780ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 1790ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Description Initialize userial vendor-specific control block 1800ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 1810ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Returns None 1820ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 1830ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel*******************************************************************************/ 1840ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudelvoid userial_vendor_init(void); 1850ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1860ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/******************************************************************************* 1870ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 1880ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Function userial_vendor_open 1890ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 1900ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Description Open the serial port with the given configuration 1910ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 1920ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Returns device fd 1930ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 1940ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel*******************************************************************************/ 1950ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudelint userial_vendor_open(tUSERIAL_CFG *p_cfg); 1960ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 1970ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/******************************************************************************* 1980ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 1990ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Function userial_vendor_close 2000ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2010ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Description Conduct vendor-specific close work 2020ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2030ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Returns None 2040ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2050ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel*******************************************************************************/ 2060ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudelvoid userial_vendor_close(void); 2070ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 2080ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/******************************************************************************* 2090ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2100ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Function userial_vendor_set_baud 2110ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2120ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Description Set new baud rate 2130ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2140ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Returns None 2150ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2160ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel*******************************************************************************/ 2170ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudelvoid userial_vendor_set_baud(uint8_t userial_baud); 2180ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 2190ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/******************************************************************************* 2200ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2210ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Function userial_vendor_ioctl 2220ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2230ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Description ioctl inteface 2240ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2250ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Returns int error 2260ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2270ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel*******************************************************************************/ 2280ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudelint userial_vendor_ioctl(userial_vendor_ioctl_op_t op, int *p_data); 2290ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 2300ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/******************************************************************************* 2310ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2320ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Function userial_to_tcio_baud 2330ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2340ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Description helper function converts USERIAL baud rates into TCIO 2350ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** conforming baud rates 2360ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2370ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Returns TRUE/FALSE 2380ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2390ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel*******************************************************************************/ 2400ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudeluint8_t userial_to_tcio_baud(uint8_t cfg_baud, uint32_t *baud); 2410ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 2420ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/******************************************************************************* 2430ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2440ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Function userial_to_baud_tcio 2450ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2460ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Description helper function converts TCIO baud rate into integer 2470ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2480ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Returns uint32_t 2490ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2500ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel*******************************************************************************/ 2510ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudelint userial_tcio_baud_to_int(uint32_t baud); 2520ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 2530ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel/******************************************************************************* 2540ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2550ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Function read_hci_event 2560ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2570ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Description Read HCI event during vendor initialization 2580ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2590ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** Returns int: size to read 2600ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel** 2610ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel*******************************************************************************/ 2620ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudelint read_hci_event(int fd, unsigned char* buf, int size); 2630ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel 2640ebd0bab066cd86d7a19f4646e0686dae885004eThierry Strudel#endif /* HCI_UART_H */ 265