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