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