diff options
author | Murtaza Gaadiwala | 2013-04-26 17:24:27 -0500 |
---|---|---|
committer | Murtaza Gaadiwala | 2013-04-26 17:24:27 -0500 |
commit | 96a95101defbf3be3ab2969d14690c5a5adfc59f (patch) | |
tree | c1a299e51bd2de0a92dd72d4db19fa349a96fd78 | |
parent | c50ca3fb27e156a0b86fc8a32ee1bc06571a8d9a (diff) | |
download | bcp-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.c | 130 |
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 | */ | ||
65 | int32_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 | } | ||