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