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