1 /**\r
2 * \file tcp3d_isr.c\r
3 *\r
4 * \brief TCP3D Driver ISR functions.\r
5 *\r
6 * Copyright (C) Texas Instruments Incorporated 2012\r
7 * \r
8 * Redistribution and use in source and binary forms, with or without \r
9 * modification, are permitted provided that the following conditions \r
10 * are met:\r
11 *\r
12 * Redistributions of source code must retain the above copyright \r
13 * notice, this list of conditions and the following disclaimer.\r
14 *\r
15 * Redistributions in binary form must reproduce the above copyright\r
16 * notice, this list of conditions and the following disclaimer in the \r
17 * documentation and/or other materials provided with the \r
18 * distribution.\r
19 *\r
20 * Neither the name of Texas Instruments Incorporated nor the names of\r
21 * its contributors may be used to endorse or promote products derived\r
22 * from this software without specific prior written permission.\r
23 *\r
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \r
25 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT \r
26 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
27 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT \r
28 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, \r
29 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT \r
30 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
31 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
32 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT \r
33 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE \r
34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
35 *\r
36 */\r
37 \r
38 /**\r
39 * Include Files\r
40 */\r
41 /* TCP3D driver includes */\r
42 #include <ti/drv/tcp3d/tcp3d_drv.h>\r
43 #include <ti/drv/tcp3d/src/tcp3d_drv_priv.h>\r
44 \r
45 /* TCP3D Types and OSAL defintions: These files can be overriden by customers\r
46 * to point to their copies. Because of this the files have not been explicitly \r
47 * specified to include the driver path.*/\r
48 #include <tcp3d_drv_types.h>\r
49 #include <tcp3d_osal.h>\r
50 \r
51 /****************************************************************************\r
52 * TCP3D Driver Functions *\r
53 ****************************************************************************/\r
54 \r
55 /**\r
56 * @brief TCP3D Driver ISR function for the channels associated with REVT0.\r
57 */\r
58 static void Tcp3d_revt0ChannelIsr (Tcp3d_Instance *inst)\r
59 {\r
60 Tcp3d_Result tcp3dResult = TCP3D_DRV_NO_ERR;\r
61 uint32_t utmpIdx;\r
62 uint32_t pingOutIdx;\r
63 EDMA3_DRV_PaRAMRegs *currPrmPtr1;\r
64 \r
65 utmpIdx = inst->maxCodeBlocks;\r
66 \r
67 /* Increment the ISR counter */\r
68 inst->pingIntr++;\r
69 \r
70 /* Check to see if restart needed before exit */\r
71 /**\r
72 * Read the source address of L2P Channel PaRAM to get the current\r
73 * pseudo PaRAM pointer for PING path. Then compare with the start\r
74 * pointer for the index.\r
75 */\r
76 currPrmPtr1 = (EDMA3_DRV_PaRAMRegs *) inst->pingPtrL2p->srcAddr;\r
77 pingOutIdx = GET_CB_IDX(currPrmPtr1 - inst->startPrmPtr);\r
78 \r
79 /* Check if PING path completed decoding */\r
80 if ( pingOutIdx < utmpIdx )\r
81 {\r
82 tcp3dResult = Tcp3d_start(inst, TCP3D_DRV_START_AUTO);\r
83 \r
84 if ( TCP3D_DRV_NO_ERR != tcp3dResult )\r
85 {\r
86 Tcp3d_osalLog("REVT0 ISR: Tcp3d_start function returned error with value : %d\n", tcp3dResult);\r
87 }\r
88 }\r
89 }\r
90 \r
91 /**\r
92 * @brief TCP3D Driver ISR function for the channels associated with REVT1.\r
93 */\r
94 static void Tcp3d_revt1ChannelIsr (Tcp3d_Instance *inst)\r
95 {\r
96 Tcp3d_Result tcp3dResult = TCP3D_DRV_NO_ERR;\r
97 uint32_t utmpIdx;\r
98 uint32_t pongOutIdx;\r
99 EDMA3_DRV_PaRAMRegs *currPrmPtr1;\r
100 \r
101 utmpIdx = inst->maxCodeBlocks;\r
102 \r
103 /* Increment the ISR counter */\r
104 inst->pongIntr++;\r
105 \r
106 /* Check to see if restart needed before exit */\r
107 /**\r
108 * Read the source address of L2P Channel PaRAM to get the current\r
109 * pseudo PaRAM pointer for PONG path. Then compare with the start\r
110 * pointer for the index.\r
111 */\r
112 currPrmPtr1 = (EDMA3_DRV_PaRAMRegs *) inst->pongPtrL2p->srcAddr;\r
113 pongOutIdx = GET_CB_IDX(currPrmPtr1 - inst->startPrmPtr);\r
114 \r
115 /* Check if PING path completed decoding */\r
116 if ( pongOutIdx < utmpIdx )\r
117 {\r
118 tcp3dResult = Tcp3d_start(inst, TCP3D_DRV_START_AUTO);\r
119 \r
120 if ( TCP3D_DRV_NO_ERR != tcp3dResult )\r
121 {\r
122 Tcp3d_osalLog("REVT1 ISR: Tcp3d_start function returned error with value : %d\n", tcp3dResult);\r
123 }\r
124 }\r
125 }\r
126 \r
127 /* end of file */\r