| /****************************************************************************** |
| * |
| * Copyright (C) 2015 Motorola Corporation |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at: |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| ******************************************************************************/ |
| |
| /****************************************************************************** |
| * |
| * Filename: bt_vendor_brcm_a2dp.h |
| * |
| * Description: Contains definitions specific for interfacing with Broadcom |
| * Bluetooth chipsets for A2DP Offload implementation. |
| * |
| ******************************************************************************/ |
| |
| #ifndef BT_VENDOR_BRCM_A2DP_H |
| #define BT_VENDOR_BRCM_A2DP_H |
| |
| #include "bt_vendor_brcm.h" |
| #include "bt_target.h" |
| #include "uipc_msg.h" |
| |
| /****************************************************************************** |
| ** Constants & Macros |
| ******************************************************************************/ |
| |
| #define HCI_VSC_WRITE_PCM_PINS 0xFC61 |
| #define HCI_VSC_READ_PCM_PINS 0xFC62 |
| #define HCI_VSC_UIPC_OVER_HCI 0xFC8B |
| |
| /* pinmux for I2S pins */ |
| #define PCM_PIN_FCN_GPIO 0x00 |
| #define PCM_PIN_FCN_PCM 0x01 |
| #define PCM_PIN_FCN_I2S_MASTER 0x05 |
| #define PCM_PIN_FCN_I2S_SLAVE 0x07 |
| #define PCM_PIN_FCN_INVALID 0xFF |
| |
| /* PADCONF for I2S pins */ |
| /* From LSB, byte map to DIN, DOUT, WS, CLK */ |
| /* |
| bit 0: 0 OUTPUT, 1 INPUT |
| bit 1: 0 NO-PULL,1 PULL-UP |
| bit 2: 0 NO-PULL,1 PULL-DN |
| bit 3: 1 SHMITT Trigger Enable |
| bit 4-7: Drive Strength |
| */ |
| /* Define standard Master & Slave I2S PADCONFs */ |
| #define PCM_PIN_PADCNF_I2S_SLAVE 0x19191819 |
| #define PCM_PIN_PADCNF_I2S_MASTER 0x18181819 |
| |
| #define HCI_EVT_CMD_CMPL_LEN 1 |
| #define HCI_EVT_CMD_CMPL_VSC 3 |
| #define HCI_CMD_PREAMBLE_SIZE 3 |
| #define HCI_CMD_MAX_LEN 258 |
| |
| #define UNUSED(x) (void)(x) |
| |
| #if (BRCM_A2DP_OFFLOAD != TRUE) |
| #define BRCM_A2DP_OFFLOAD FALSE |
| #endif |
| |
| /* A2DP offload parameters from vnd_<prod>.txt */ |
| |
| #ifndef BRCM_A2DP_OFFLOAD_SRC |
| #define BRCM_A2DP_OFFLOAD_SRC AUDIO_ROUTE_SRC_I2S |
| #endif |
| |
| #ifndef BRCM_A2DP_OFFLOAD_SRC_SF |
| #define BRCM_A2DP_OFFLOAD_SRC_SF AUDIO_ROUTE_SF_48K |
| #endif |
| |
| #ifndef BRCM_A2DP_OFFLOAD_MAX_BITPOOL |
| /* High quality setting @ 44.1 kHz */ |
| #define BRCM_A2DP_OFFLOAD_MAX_BITPOOL 53 |
| #endif |
| |
| #ifndef BRCM_A2DP_OFFLOAD_PCM_PIN_FCN |
| #define BRCM_A2DP_OFFLOAD_PCM_PIN_FCN PCM_PIN_FCN_I2S_SLAVE |
| #endif |
| |
| #ifndef BRCM_A2DP_OFFLOAD_PCM_PIN_PADCNF |
| #if (BRCM_A2DP_OFFLOAD_PCM_PIN_FCN == PCM_PIN_FCN_I2S_MASTER) |
| #define BRCM_A2DP_OFFLOAD_PCM_PIN_PADCNF PCM_PIN_PADCNF_I2S_MASTER |
| #else |
| #define BRCM_A2DP_OFFLOAD_PCM_PIN_PADCNF PCM_PIN_PADCNF_I2S_SLAVE |
| #endif |
| #endif |
| |
| #define MULTI_BIT_SET(x) !!(x & (x - 1)) |
| |
| void brcm_vnd_a2dp_init(); |
| int brcm_vnd_a2dp_execute(bt_vendor_opcode_t, void *ev_data); |
| |
| #endif /*BT_VENDOR_BRCM_A2DP_H*/ |