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