summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMurtaza Gaadiwala2013-04-26 17:24:27 -0500
committerMurtaza Gaadiwala2013-04-26 17:24:27 -0500
commit96a95101defbf3be3ab2969d14690c5a5adfc59f (patch)
treec1a299e51bd2de0a92dd72d4db19fa349a96fd78
parentc50ca3fb27e156a0b86fc8a32ee1bc06571a8d9a (diff)
downloadbcp-lld-96a95101defbf3be3ab2969d14690c5a5adfc59f.tar.gz
bcp-lld-96a95101defbf3be3ab2969d14690c5a5adfc59f.tar.xz
bcp-lld-96a95101defbf3be3ab2969d14690c5a5adfc59f.zip
BCP LLD support for Lamarr (K2L)
-rw-r--r--device/k2l/src/bcp_device.c130
1 files changed, 130 insertions, 0 deletions
diff --git a/device/k2l/src/bcp_device.c b/device/k2l/src/bcp_device.c
new file mode 100644
index 0000000..a9d8462
--- /dev/null
+++ b/device/k2l/src/bcp_device.c
@@ -0,0 +1,130 @@
1/**
2 * @file bcp_device.c
3 *
4 * @brief
5 * This file contains any device (SoC) specific definitions and functions
6 * required for BCP setup.
7 *
8 * \par
9 * ============================================================================
10 * @n (C) Copyright 2013, Texas Instruments, Inc.
11 *
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
14 * are met:
15 *
16 * Redistributions of source code must retain the above copyright
17 * notice, this list of conditions and the following disclaimer.
18 *
19 * Redistributions in binary form must reproduce the above copyright
20 * notice, this list of conditions and the following disclaimer in the
21 * documentation and/or other materials provided with the
22 * distribution.
23 *
24 * Neither the name of Texas Instruments Incorporated nor the names of
25 * its contributors may be used to endorse or promote products derived
26 * from this software without specific prior written permission.
27 *
28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 *
40*/
41/* BCP types include */
42#include <bcp_types.h>
43
44/* BCP include */
45#include <ti/drv/bcp/bcp.h>
46
47/**
48 * ============================================================================
49 * @n@b Bcp_initDevice
50 *
51 * @b brief
52 * @n This API provides a sample initialization sequence for BCP that can be
53 * called as part of system level initialization during device startup.
54 * The initialization sequence provided here is just an example and
55 * is expected to be customized as per the customer's system and its needs.
56 *
57 * @param[in]
58 * pBcpLldObj BCP LLD Object Handle.
59 *
60 * @return int32_t
61 * @li 0 - BCP device init succesfully done.
62 * @li <0 - BCP device init failed.
63 * ============================================================================
64 */
65int32_t Bcp_initDevice (Bcp_LldObj* pBcpLldObj)
66{
67 uint8_t destSel [BCP_MAX_NUM_TXQUEUES], prioVal [BCP_MAX_NUM_TXQUEUES];
68
69 /* Setup TM MMR */
70 Bcp_setCdmaHpSrcId (pBcpLldObj, CSL_BCP_TM_TM_CONTROL_CDMAHP_SRC_ID_RESETVAL);
71 Bcp_enableTxCdmaHpReadArbPrio (pBcpLldObj);
72
73 /* Setup the Tx queue --> PPB (Port) Mapping.
74 *
75 * Lets use the following configuration:
76 * Tx Q0 --> PPB0 Tx Q1 --> PPB1 TX Q2 --> PPB2 Tx Q3 --> PPB3
77 * Tx Q4 --> PPB0 Tx Q5 --> PPB1 TX Q6 --> PPB2 Tx Q7 --> PPB3
78 *
79 * All are at the same priority for now.
80 */
81 destSel [0] = CSL_BCP_TM_TM_TX_QFIFO_RD_DEST_SEL_TX_QFIFO_RD_DEST_SEL_0_RESETVAL;
82 destSel [1] = CSL_BCP_TM_TM_TX_QFIFO_RD_DEST_SEL_TX_QFIFO_RD_DEST_SEL_1_RESETVAL;
83 destSel [2] = CSL_BCP_TM_TM_TX_QFIFO_RD_DEST_SEL_TX_QFIFO_RD_DEST_SEL_2_RESETVAL;
84 destSel [3] = CSL_BCP_TM_TM_TX_QFIFO_RD_DEST_SEL_TX_QFIFO_RD_DEST_SEL_3_RESETVAL;
85 destSel [4] = CSL_BCP_TM_TM_TX_QFIFO_RD_DEST_SEL_TX_QFIFO_RD_DEST_SEL_4_RESETVAL;
86 destSel [5] = CSL_BCP_TM_TM_TX_QFIFO_RD_DEST_SEL_TX_QFIFO_RD_DEST_SEL_5_RESETVAL;
87 destSel [6] = CSL_BCP_TM_TM_TX_QFIFO_RD_DEST_SEL_TX_QFIFO_RD_DEST_SEL_6_RESETVAL;
88 destSel [7] = CSL_BCP_TM_TM_TX_QFIFO_RD_DEST_SEL_TX_QFIFO_RD_DEST_SEL_7_RESETVAL;
89 memset (prioVal, 0, sizeof (uint8_t) * BCP_MAX_NUM_TXQUEUES);
90 Bcp_setTxQfifoReadDestSelReg (pBcpLldObj, destSel, prioVal);
91
92 /* Initialize the Encoder engine block */
93 Bcp_setEncPolyCoef1Reg (pBcpLldObj, CSL_BCP_ENC_POLY_COEF1_POLYCOEF1_RESETVAL); //WCDMA code rate 1/2
94 Bcp_setEncPolyCoef2Reg (pBcpLldObj, CSL_BCP_ENC_POLY_COEF2_POLYCOEF2_RESETVAL); //WCDMA code rate 1/3
95 Bcp_setEncPolyCoef3Reg (pBcpLldObj, CSL_BCP_ENC_POLY_COEF3_POLYCOEF3_RESETVAL); //LTE code rate 1/3
96
97 Bcp_setEncScrInit0Reg (pBcpLldObj, CSL_BCP_ENC_SCR_INIT_0_SCRINIT_RESETVAL); //scrambler initialization
98 Bcp_setEncScrPoly0Reg (pBcpLldObj, CSL_BCP_ENC_SCR_POLY_0_SCRPOLY_RESETVAL); //scrambler polynomial
99 Bcp_setEncCrc24Init0Reg (pBcpLldObj, CSL_BCP_ENC_CRC24_INIT_0_CRC24INIT_RESETVAL); //crc24 initialization
100 Bcp_setEncCrc24Poly0Reg (pBcpLldObj, CSL_BCP_ENC_CRC24_POLY_0_CRC24POLY_RESETVAL); //crc24 polynomial
101
102 Bcp_setEncScrInit1Reg (pBcpLldObj, CSL_BCP_ENC_SCR_INIT_1_SCRINIT_RESETVAL); //scrambler initialization
103 Bcp_setEncScrPoly1Reg (pBcpLldObj, CSL_BCP_ENC_SCR_POLY_1_SCRPOLY_RESETVAL); //scrambler polynomial
104 Bcp_setEncCrc16Init1Reg (pBcpLldObj, CSL_BCP_ENC_CRC16_INIT_1_CRC16INIT_RESETVAL); //crc16 initialization
105 Bcp_setEncCrc16Poly1Reg (pBcpLldObj, CSL_BCP_ENC_CRC16_POLY_1_CRC16POLY_RESETVAL); //crc16 polynomial
106
107 Bcp_setEncScrInit2Reg (pBcpLldObj, CSL_BCP_ENC_SCR_INIT_2_SCRINIT_RESETVAL); //scrambler initialization
108 Bcp_setEncScrPoly2Reg (pBcpLldObj, CSL_BCP_ENC_SCR_POLY_2_SCRPOLY_RESETVAL); //scrambler polynomial
109
110 /* Initialize the Correlator MMR */
111 Bcp_setCorReedMullerTableColumn (pBcpLldObj, 0, CSL_BCP_COR_M0_MOD_EN_RESETVAL);
112 Bcp_setCorReedMullerTableColumn (pBcpLldObj, 1, CSL_BCP_COR_M1_MOD_EN_RESETVAL);
113 Bcp_setCorReedMullerTableColumn (pBcpLldObj, 2, CSL_BCP_COR_M2_MOD_EN_RESETVAL);
114 Bcp_setCorReedMullerTableColumn (pBcpLldObj, 3, CSL_BCP_COR_M3_MOD_EN_RESETVAL);
115 Bcp_setCorReedMullerTableColumn (pBcpLldObj, 4, CSL_BCP_COR_M4_MOD_EN_RESETVAL);
116 Bcp_setCorReedMullerTableColumn (pBcpLldObj, 5, CSL_BCP_COR_M5_MOD_EN_RESETVAL);
117 Bcp_setCorReedMullerTableColumn (pBcpLldObj, 6, CSL_BCP_COR_M6_MOD_EN_RESETVAL);
118 Bcp_setCorReedMullerTableColumn (pBcpLldObj, 7, CSL_BCP_COR_M7_MOD_EN_RESETVAL);
119 Bcp_setCorReedMullerTableColumn (pBcpLldObj, 8, CSL_BCP_COR_M8_MOD_EN_RESETVAL);
120 Bcp_setCorReedMullerTableColumn (pBcpLldObj, 9, CSL_BCP_COR_M9_MOD_EN_RESETVAL);
121 Bcp_setCorReedMullerTableColumn (pBcpLldObj, 10, CSL_BCP_COR_M10_MOD_EN_RESETVAL);
122 Bcp_setCorReedMullerTableColumn (pBcpLldObj, 11, CSL_BCP_COR_M11_MOD_EN_RESETVAL);
123 Bcp_setCorReedMullerTableColumn (pBcpLldObj, 12, CSL_BCP_COR_M12_MOD_EN_RESETVAL);
124 Bcp_setCorControlReg (pBcpLldObj, CSL_BCP_COR_CONTROL_REGISTER_QPSK_MAPPING_C2K10_C2K0_RESETVAL,
125 CSL_BCP_COR_CONTROL_REGISTER_QPSK_MAPPING_C2K10_C2K1_RESETVAL,
126 CSL_BCP_COR_CONTROL_REGISTER_QPSK_MAPPING_C2K11_C2K0_RESETVAL,
127 CSL_BCP_COR_CONTROL_REGISTER_QPSK_MAPPING_C2K11_C2K1_RESETVAL);
128
129 return 0;
130}