10b966c5eSopenharmony_ci/******************************************************************************
20b966c5eSopenharmony_ci *
30b966c5eSopenharmony_ci *  Copyright (C) 2009-2012 Broadcom Corporation
40b966c5eSopenharmony_ci *
50b966c5eSopenharmony_ci *  Licensed under the Apache License, Version 2.0 (the "License");
60b966c5eSopenharmony_ci *  you may not use this file except in compliance with the License.
70b966c5eSopenharmony_ci *  You may obtain a copy of the License at:
80b966c5eSopenharmony_ci *
90b966c5eSopenharmony_ci *  http://www.apache.org/licenses/LICENSE-2.0
100b966c5eSopenharmony_ci *
110b966c5eSopenharmony_ci *  Unless required by applicable law or agreed to in writing, software
120b966c5eSopenharmony_ci *  distributed under the License is distributed on an "AS IS" BASIS,
130b966c5eSopenharmony_ci *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
140b966c5eSopenharmony_ci *  See the License for the specific language governing permissions and
150b966c5eSopenharmony_ci *  limitations under the License.
160b966c5eSopenharmony_ci *
170b966c5eSopenharmony_ci ******************************************************************************/
180b966c5eSopenharmony_ci
190b966c5eSopenharmony_ci/******************************************************************************
200b966c5eSopenharmony_ci *
210b966c5eSopenharmony_ci *  Filename:      userial_vendor.h
220b966c5eSopenharmony_ci *
230b966c5eSopenharmony_ci *  Description:   Contains vendor-specific definitions used in serial port
240b966c5eSopenharmony_ci *                 controls
250b966c5eSopenharmony_ci *
260b966c5eSopenharmony_ci ******************************************************************************/
270b966c5eSopenharmony_ci
280b966c5eSopenharmony_ci#ifndef USERIAL_VENDOR_H
290b966c5eSopenharmony_ci#define USERIAL_VENDOR_H
300b966c5eSopenharmony_ci
310b966c5eSopenharmony_ci#include "bt_vendor_brcm.h"
320b966c5eSopenharmony_ci#include "userial.h"
330b966c5eSopenharmony_ci
340b966c5eSopenharmony_ci/******************************************************************************
350b966c5eSopenharmony_ci**  Constants & Macros
360b966c5eSopenharmony_ci******************************************************************************/
370b966c5eSopenharmony_ci
380b966c5eSopenharmony_ci/**** baud rates ****/
390b966c5eSopenharmony_ci#define USERIAL_BAUD_300 0
400b966c5eSopenharmony_ci#define USERIAL_BAUD_600 1
410b966c5eSopenharmony_ci#define USERIAL_BAUD_1200 2
420b966c5eSopenharmony_ci#define USERIAL_BAUD_2400 3
430b966c5eSopenharmony_ci#define USERIAL_BAUD_9600 4
440b966c5eSopenharmony_ci#define USERIAL_BAUD_19200 5
450b966c5eSopenharmony_ci#define USERIAL_BAUD_57600 6
460b966c5eSopenharmony_ci#define USERIAL_BAUD_115200 7
470b966c5eSopenharmony_ci#define USERIAL_BAUD_230400 8
480b966c5eSopenharmony_ci#define USERIAL_BAUD_460800 9
490b966c5eSopenharmony_ci#define USERIAL_BAUD_921600 10
500b966c5eSopenharmony_ci#define USERIAL_BAUD_1M 11
510b966c5eSopenharmony_ci#define USERIAL_BAUD_1_5M 12
520b966c5eSopenharmony_ci#define USERIAL_BAUD_2M 13
530b966c5eSopenharmony_ci#define USERIAL_BAUD_3M 14
540b966c5eSopenharmony_ci#define USERIAL_BAUD_4M 15
550b966c5eSopenharmony_ci#define USERIAL_BAUD_AUTO 16
560b966c5eSopenharmony_ci
570b966c5eSopenharmony_ci#define USERIAL_LINESPEED_600 600
580b966c5eSopenharmony_ci#define USERIAL_LINESPEED_1200 1200
590b966c5eSopenharmony_ci#define USERIAL_LINESPEED_2400 2400
600b966c5eSopenharmony_ci#define USERIAL_LINESPEED_9600 9600
610b966c5eSopenharmony_ci#define USERIAL_LINESPEED_19200 19200
620b966c5eSopenharmony_ci#define USERIAL_LINESPEED_57600 57600
630b966c5eSopenharmony_ci#define USERIAL_LINESPEED_115200 115200
640b966c5eSopenharmony_ci#define USERIAL_LINESPEED_230400 230400
650b966c5eSopenharmony_ci#define USERIAL_LINESPEED_460800 460800
660b966c5eSopenharmony_ci#define USERIAL_LINESPEED_921600 921600
670b966c5eSopenharmony_ci#define USERIAL_LINESPEED_1M 1000000
680b966c5eSopenharmony_ci#define USERIAL_LINESPEED_1_5M 1500000
690b966c5eSopenharmony_ci#define USERIAL_LINESPEED_2M 2000000
700b966c5eSopenharmony_ci#define USERIAL_LINESPEED_3M 3000000
710b966c5eSopenharmony_ci#define USERIAL_LINESPEED_4M 4000000
720b966c5eSopenharmony_ci
730b966c5eSopenharmony_ci/**** Data Format ****/
740b966c5eSopenharmony_ci/* Stop Bits */
750b966c5eSopenharmony_ci#define USERIAL_STOPBITS_1 1
760b966c5eSopenharmony_ci#define USERIAL_STOPBITS_1_5 (1 << 1)
770b966c5eSopenharmony_ci#define USERIAL_STOPBITS_2 (1 << 2)
780b966c5eSopenharmony_ci
790b966c5eSopenharmony_ci/* Parity Bits */
800b966c5eSopenharmony_ci#define USERIAL_PARITY_NONE (1 << 3)
810b966c5eSopenharmony_ci#define USERIAL_PARITY_EVEN (1 << 4)
820b966c5eSopenharmony_ci#define USERIAL_PARITY_ODD (1 << 5)
830b966c5eSopenharmony_ci
840b966c5eSopenharmony_ci/* Data Bits */
850b966c5eSopenharmony_ci#define USERIAL_DATABITS_5 (1 << 6)
860b966c5eSopenharmony_ci#define USERIAL_DATABITS_6 (1 << 7)
870b966c5eSopenharmony_ci#define USERIAL_DATABITS_7 (1 << 8)
880b966c5eSopenharmony_ci#define USERIAL_DATABITS_8 (1 << 9)
890b966c5eSopenharmony_ci
900b966c5eSopenharmony_ci#if (BT_WAKE_VIA_USERIAL_IOCTL == TRUE)
910b966c5eSopenharmony_ci/* These are the ioctl values used for bt_wake ioctl via UART driver. you may
920b966c5eSopenharmony_ci * need to redefine them on you platform!
930b966c5eSopenharmony_ci * Logically they need to be unique and not colide with existing uart ioctl's.
940b966c5eSopenharmony_ci */
950b966c5eSopenharmony_ci#ifndef USERIAL_IOCTL_BT_WAKE_ASSERT
960b966c5eSopenharmony_ci#define USERIAL_IOCTL_BT_WAKE_ASSERT 0x8003
970b966c5eSopenharmony_ci#endif
980b966c5eSopenharmony_ci#ifndef USERIAL_IOCTL_BT_WAKE_DEASSERT
990b966c5eSopenharmony_ci#define USERIAL_IOCTL_BT_WAKE_DEASSERT 0x8004
1000b966c5eSopenharmony_ci#endif
1010b966c5eSopenharmony_ci#ifndef USERIAL_IOCTL_BT_WAKE_GET_ST
1020b966c5eSopenharmony_ci#define USERIAL_IOCTL_BT_WAKE_GET_ST 0x8005
1030b966c5eSopenharmony_ci#endif
1040b966c5eSopenharmony_ci#endif // (BT_WAKE_VIA_USERIAL_IOCTL==TRUE)
1050b966c5eSopenharmony_ci
1060b966c5eSopenharmony_ci/******************************************************************************
1070b966c5eSopenharmony_ci**  Type definitions
1080b966c5eSopenharmony_ci******************************************************************************/
1090b966c5eSopenharmony_ci
1100b966c5eSopenharmony_ci/* Structure used to configure serial port during open */
1110b966c5eSopenharmony_citypedef struct {
1120b966c5eSopenharmony_ci    uint16_t fmt; /* Data format */
1130b966c5eSopenharmony_ci    uint8_t baud; /* Baud rate */
1140b966c5eSopenharmony_ci} tUSERIAL_CFG;
1150b966c5eSopenharmony_ci
1160b966c5eSopenharmony_citypedef enum {
1170b966c5eSopenharmony_ci#if (BT_WAKE_VIA_USERIAL_IOCTL == TRUE)
1180b966c5eSopenharmony_ci    USERIAL_OP_ASSERT_BT_WAKE,
1190b966c5eSopenharmony_ci    USERIAL_OP_DEASSERT_BT_WAKE,
1200b966c5eSopenharmony_ci    USERIAL_OP_GET_BT_WAKE_STATE,
1210b966c5eSopenharmony_ci#endif
1220b966c5eSopenharmony_ci    USERIAL_OP_NOP,
1230b966c5eSopenharmony_ci} userial_vendor_ioctl_op_t;
1240b966c5eSopenharmony_ci
1250b966c5eSopenharmony_ci/******************************************************************************
1260b966c5eSopenharmony_ci**  Extern variables and functions
1270b966c5eSopenharmony_ci******************************************************************************/
1280b966c5eSopenharmony_ci
1290b966c5eSopenharmony_ci/******************************************************************************
1300b966c5eSopenharmony_ci**  Functions
1310b966c5eSopenharmony_ci******************************************************************************/
1320b966c5eSopenharmony_ci
1330b966c5eSopenharmony_ci/*******************************************************************************
1340b966c5eSopenharmony_ci**
1350b966c5eSopenharmony_ci** Function        userial_vendor_init
1360b966c5eSopenharmony_ci**
1370b966c5eSopenharmony_ci** Description     Initialize userial vendor-specific control block
1380b966c5eSopenharmony_ci**
1390b966c5eSopenharmony_ci** Returns         None
1400b966c5eSopenharmony_ci**
1410b966c5eSopenharmony_ci*******************************************************************************/
1420b966c5eSopenharmony_civoid userial_vendor_init(void);
1430b966c5eSopenharmony_ci
1440b966c5eSopenharmony_ci/*******************************************************************************
1450b966c5eSopenharmony_ci**
1460b966c5eSopenharmony_ci** Function        userial_vendor_open
1470b966c5eSopenharmony_ci**
1480b966c5eSopenharmony_ci** Description     Open the serial port with the given configuration
1490b966c5eSopenharmony_ci**
1500b966c5eSopenharmony_ci** Returns         device fd
1510b966c5eSopenharmony_ci**
1520b966c5eSopenharmony_ci*******************************************************************************/
1530b966c5eSopenharmony_ciint userial_vendor_open(tUSERIAL_CFG *p_cfg);
1540b966c5eSopenharmony_ci
1550b966c5eSopenharmony_ci/*******************************************************************************
1560b966c5eSopenharmony_ci**
1570b966c5eSopenharmony_ci** Function        userial_vendor_close
1580b966c5eSopenharmony_ci**
1590b966c5eSopenharmony_ci** Description     Conduct vendor-specific close work
1600b966c5eSopenharmony_ci**
1610b966c5eSopenharmony_ci** Returns         None
1620b966c5eSopenharmony_ci**
1630b966c5eSopenharmony_ci*******************************************************************************/
1640b966c5eSopenharmony_civoid userial_vendor_close(void);
1650b966c5eSopenharmony_ci
1660b966c5eSopenharmony_ci/*******************************************************************************
1670b966c5eSopenharmony_ci**
1680b966c5eSopenharmony_ci** Function        userial_vendor_set_baud
1690b966c5eSopenharmony_ci**
1700b966c5eSopenharmony_ci** Description     Set new baud rate
1710b966c5eSopenharmony_ci**
1720b966c5eSopenharmony_ci** Returns         None
1730b966c5eSopenharmony_ci**
1740b966c5eSopenharmony_ci*******************************************************************************/
1750b966c5eSopenharmony_civoid userial_vendor_set_baud(uint8_t userial_baud);
1760b966c5eSopenharmony_ci
1770b966c5eSopenharmony_ci/*******************************************************************************
1780b966c5eSopenharmony_ci**
1790b966c5eSopenharmony_ci** Function        userial_vendor_ioctl
1800b966c5eSopenharmony_ci**
1810b966c5eSopenharmony_ci** Description     ioctl inteface
1820b966c5eSopenharmony_ci**
1830b966c5eSopenharmony_ci** Returns         None
1840b966c5eSopenharmony_ci**
1850b966c5eSopenharmony_ci*******************************************************************************/
1860b966c5eSopenharmony_civoid userial_vendor_ioctl(userial_vendor_ioctl_op_t op, void *p_data);
1870b966c5eSopenharmony_ci
1880b966c5eSopenharmony_ci#endif /* USERIAL_VENDOR_H */
189