1*53ee8cc1Swenshuai.xi #if !defined(MSOS_TYPE_LINUX_KERNEL)
2*53ee8cc1Swenshuai.xi #include <stdio.h>
3*53ee8cc1Swenshuai.xi #include <string.h>
4*53ee8cc1Swenshuai.xi #else
5*53ee8cc1Swenshuai.xi #include <linux/string.h>
6*53ee8cc1Swenshuai.xi #include <linux/slab.h>
7*53ee8cc1Swenshuai.xi #endif
8*53ee8cc1Swenshuai.xi
9*53ee8cc1Swenshuai.xi
10*53ee8cc1Swenshuai.xi #include "MsTypes.h"
11*53ee8cc1Swenshuai.xi #include "MsVersion.h"
12*53ee8cc1Swenshuai.xi #include "MsDevice.h"
13*53ee8cc1Swenshuai.xi #include "drvMMIO.h"
14*53ee8cc1Swenshuai.xi #include "hal_IR_TX.h"
15*53ee8cc1Swenshuai.xi #include "drv_IR_TX.h"
16*53ee8cc1Swenshuai.xi #include "reg_IR_TX.h"
17*53ee8cc1Swenshuai.xi #include "utopia.h"
18*53ee8cc1Swenshuai.xi #include "MsOS.h"
19*53ee8cc1Swenshuai.xi
20*53ee8cc1Swenshuai.xi
21*53ee8cc1Swenshuai.xi #if (IRTX_UTOPIA20)
22*53ee8cc1Swenshuai.xi
23*53ee8cc1Swenshuai.xi #include "drvIR_TX_private.h"
24*53ee8cc1Swenshuai.xi
25*53ee8cc1Swenshuai.xi void* pInstantIRTX = NULL;
26*53ee8cc1Swenshuai.xi void* pAttributeIRTX = NULL;
27*53ee8cc1Swenshuai.xi
28*53ee8cc1Swenshuai.xi MS_BOOL bU20IRTXOpened = FALSE;
_MDrv_IR_TX_CheckUtopia20Open(void ** pInstance,MS_U32 u32ModuleVersion,void * pAttribute)29*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_IR_TX_CheckUtopia20Open(void** pInstance, MS_U32 u32ModuleVersion, void* pAttribute)
30*53ee8cc1Swenshuai.xi {
31*53ee8cc1Swenshuai.xi if (FALSE == bU20IRTXOpened)
32*53ee8cc1Swenshuai.xi {
33*53ee8cc1Swenshuai.xi #if defined(MSOS_TYPE_LINUX_KERNEL)
34*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_IR_TX|KERNEL_MODE, pInstance, u32ModuleVersion, pAttribute) != UTOPIA_STATUS_SUCCESS)
35*53ee8cc1Swenshuai.xi #else
36*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_IR_TX, pInstance, u32ModuleVersion, pAttribute) != UTOPIA_STATUS_SUCCESS)
37*53ee8cc1Swenshuai.xi #endif
38*53ee8cc1Swenshuai.xi {
39*53ee8cc1Swenshuai.xi return FALSE;
40*53ee8cc1Swenshuai.xi }
41*53ee8cc1Swenshuai.xi bU20IRTXOpened= TRUE;
42*53ee8cc1Swenshuai.xi }
43*53ee8cc1Swenshuai.xi return TRUE;
44*53ee8cc1Swenshuai.xi }
45*53ee8cc1Swenshuai.xi #endif
46*53ee8cc1Swenshuai.xi
47*53ee8cc1Swenshuai.xi /****************************************************************/
48*53ee8cc1Swenshuai.xi
_MDrv_IR_TX_Trigger(void)49*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_IR_TX_Trigger(void)
50*53ee8cc1Swenshuai.xi {
51*53ee8cc1Swenshuai.xi MS_BOOL bRet = TRUE;
52*53ee8cc1Swenshuai.xi
53*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Trigger();
54*53ee8cc1Swenshuai.xi
55*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
56*53ee8cc1Swenshuai.xi return (!bRet);
57*53ee8cc1Swenshuai.xi #else
58*53ee8cc1Swenshuai.xi return bRet;
59*53ee8cc1Swenshuai.xi #endif
60*53ee8cc1Swenshuai.xi }
61*53ee8cc1Swenshuai.xi
62*53ee8cc1Swenshuai.xi
MDrv_IR_TX_Trigger(void)63*53ee8cc1Swenshuai.xi MS_BOOL MDrv_IR_TX_Trigger(void)
64*53ee8cc1Swenshuai.xi {
65*53ee8cc1Swenshuai.xi #if (IRTX_UTOPIA20)
66*53ee8cc1Swenshuai.xi
67*53ee8cc1Swenshuai.xi PIRTX_TRIGGER_PARAM pParam = NULL;
68*53ee8cc1Swenshuai.xi
69*53ee8cc1Swenshuai.xi if (FALSE == _MDrv_IR_TX_CheckUtopia20Open(&pInstantIRTX, 0, pAttributeIRTX))
70*53ee8cc1Swenshuai.xi return 0;
71*53ee8cc1Swenshuai.xi
72*53ee8cc1Swenshuai.xi pParam = (PIRTX_TRIGGER_PARAM)malloc(sizeof(IRTX_TRIGGER_PARAM));
73*53ee8cc1Swenshuai.xi
74*53ee8cc1Swenshuai.xi
75*53ee8cc1Swenshuai.xi UtopiaIoctl(pInstantIRTX,MDrv_CMD_IR_TX_Trigger,(MS_U32*)pParam);
76*53ee8cc1Swenshuai.xi
77*53ee8cc1Swenshuai.xi free(pParam);
78*53ee8cc1Swenshuai.xi return IRTX_OK;
79*53ee8cc1Swenshuai.xi #else
80*53ee8cc1Swenshuai.xi return _MDrv_IR_TX_Trigger();
81*53ee8cc1Swenshuai.xi #endif
82*53ee8cc1Swenshuai.xi
83*53ee8cc1Swenshuai.xi }
84*53ee8cc1Swenshuai.xi
85*53ee8cc1Swenshuai.xi /****************************************************************/
86*53ee8cc1Swenshuai.xi
_MDrv_IR_TX_SetStatus(MS_U16 Status)87*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_IR_TX_SetStatus(MS_U16 Status)
88*53ee8cc1Swenshuai.xi {
89*53ee8cc1Swenshuai.xi MS_BOOL bRet = TRUE;
90*53ee8cc1Swenshuai.xi
91*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_STATUS, (MS_U16)Status);
92*53ee8cc1Swenshuai.xi
93*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
94*53ee8cc1Swenshuai.xi return (!bRet);
95*53ee8cc1Swenshuai.xi #else
96*53ee8cc1Swenshuai.xi return bRet;
97*53ee8cc1Swenshuai.xi #endif
98*53ee8cc1Swenshuai.xi }
99*53ee8cc1Swenshuai.xi
100*53ee8cc1Swenshuai.xi
MDrv_IR_TX_SetStatus(MS_U16 Status)101*53ee8cc1Swenshuai.xi MS_BOOL MDrv_IR_TX_SetStatus(MS_U16 Status)
102*53ee8cc1Swenshuai.xi {
103*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
104*53ee8cc1Swenshuai.xi
105*53ee8cc1Swenshuai.xi PIRTX_SETSTATUS_PARAM pParam = NULL;
106*53ee8cc1Swenshuai.xi
107*53ee8cc1Swenshuai.xi if (FALSE == _MDrv_IR_TX_CheckUtopia20Open(&pInstantIRTX, 0, pAttributeIRTX))
108*53ee8cc1Swenshuai.xi return 0;
109*53ee8cc1Swenshuai.xi
110*53ee8cc1Swenshuai.xi
111*53ee8cc1Swenshuai.xi pParam = (PIRTX_SETSTATUS_PARAM)malloc(sizeof(IRTX_SETSTATUS_PARAM));
112*53ee8cc1Swenshuai.xi
113*53ee8cc1Swenshuai.xi pParam->Status = Status;
114*53ee8cc1Swenshuai.xi
115*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pInstantIRTX,MDrv_CMD_IR_TX_SetStatus,(MS_U32*)pParam) != UTOPIA_STATUS_SUCCESS)
116*53ee8cc1Swenshuai.xi {
117*53ee8cc1Swenshuai.xi printf("Ioctl MDrv_CMD_IR_TX_SetStatus fail\n");
118*53ee8cc1Swenshuai.xi free(pParam);
119*53ee8cc1Swenshuai.xi return IRTX_FAIL;
120*53ee8cc1Swenshuai.xi }
121*53ee8cc1Swenshuai.xi free(pParam);
122*53ee8cc1Swenshuai.xi return IRTX_OK;
123*53ee8cc1Swenshuai.xi #else
124*53ee8cc1Swenshuai.xi return _MDrv_IR_TX_SetStatus(Status);
125*53ee8cc1Swenshuai.xi #endif
126*53ee8cc1Swenshuai.xi
127*53ee8cc1Swenshuai.xi }
128*53ee8cc1Swenshuai.xi
129*53ee8cc1Swenshuai.xi /****************************************************************/
130*53ee8cc1Swenshuai.xi
_MDrv_IR_TX_SetMemStatus(MS_U16 Status)131*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_IR_TX_SetMemStatus(MS_U16 Status)
132*53ee8cc1Swenshuai.xi {
133*53ee8cc1Swenshuai.xi MS_BOOL bRet = TRUE;
134*53ee8cc1Swenshuai.xi
135*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_MEM_REG_STATUS, (MS_U16)Status);
136*53ee8cc1Swenshuai.xi
137*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
138*53ee8cc1Swenshuai.xi return (!bRet);
139*53ee8cc1Swenshuai.xi #else
140*53ee8cc1Swenshuai.xi return bRet;
141*53ee8cc1Swenshuai.xi #endif
142*53ee8cc1Swenshuai.xi }
143*53ee8cc1Swenshuai.xi
MDrv_IR_TX_SetMemStatus(MS_U16 Status)144*53ee8cc1Swenshuai.xi MS_BOOL MDrv_IR_TX_SetMemStatus(MS_U16 Status)
145*53ee8cc1Swenshuai.xi {
146*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
147*53ee8cc1Swenshuai.xi
148*53ee8cc1Swenshuai.xi PIRTX_SETMEMSTATUS_PARAM pParam = NULL;
149*53ee8cc1Swenshuai.xi
150*53ee8cc1Swenshuai.xi if (FALSE == _MDrv_IR_TX_CheckUtopia20Open(&pInstantIRTX, 0, pAttributeIRTX))
151*53ee8cc1Swenshuai.xi return 0;
152*53ee8cc1Swenshuai.xi
153*53ee8cc1Swenshuai.xi pParam = (PIRTX_SETMEMSTATUS_PARAM)malloc(sizeof(IRTX_SETMEMSTATUS_PARAM));
154*53ee8cc1Swenshuai.xi pParam->Status = Status;
155*53ee8cc1Swenshuai.xi
156*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pInstantIRTX,MDrv_CMD_IR_TX_SetMemStatus,(MS_U32*)pParam) != UTOPIA_STATUS_SUCCESS)
157*53ee8cc1Swenshuai.xi {
158*53ee8cc1Swenshuai.xi printf("Ioctl MDrv_CMD_IR_TX_SetMemStatus fail\n");
159*53ee8cc1Swenshuai.xi free(pParam);
160*53ee8cc1Swenshuai.xi return IRTX_FAIL;
161*53ee8cc1Swenshuai.xi }
162*53ee8cc1Swenshuai.xi free(pParam);
163*53ee8cc1Swenshuai.xi return IRTX_OK;
164*53ee8cc1Swenshuai.xi #else
165*53ee8cc1Swenshuai.xi return _MDrv_IR_TX_SetMemStatus(Status);
166*53ee8cc1Swenshuai.xi #endif
167*53ee8cc1Swenshuai.xi
168*53ee8cc1Swenshuai.xi }
169*53ee8cc1Swenshuai.xi
170*53ee8cc1Swenshuai.xi
171*53ee8cc1Swenshuai.xi /****************************************************************/
172*53ee8cc1Swenshuai.xi
_MDrv_IR_TX_SetClkDiv(MS_U8 Div)173*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_IR_TX_SetClkDiv(MS_U8 Div)
174*53ee8cc1Swenshuai.xi {
175*53ee8cc1Swenshuai.xi MS_BOOL bRet = TRUE;
176*53ee8cc1Swenshuai.xi //bRet &= HAL_IR_TX_WriteRegBit((MS_PHY)IR_TX_REG_ClkDiv, (MS_U16)(u16Div << 8));
177*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_ClkDiv, (MS_U16)(Div << 8));
178*53ee8cc1Swenshuai.xi
179*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
180*53ee8cc1Swenshuai.xi return (!bRet);
181*53ee8cc1Swenshuai.xi #else
182*53ee8cc1Swenshuai.xi return bRet;
183*53ee8cc1Swenshuai.xi #endif
184*53ee8cc1Swenshuai.xi }
185*53ee8cc1Swenshuai.xi
MDrv_IR_TX_SetClkDiv(MS_U8 Div)186*53ee8cc1Swenshuai.xi MS_BOOL MDrv_IR_TX_SetClkDiv(MS_U8 Div)
187*53ee8cc1Swenshuai.xi {
188*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
189*53ee8cc1Swenshuai.xi
190*53ee8cc1Swenshuai.xi PIRTX_SETCLKDIV_PARAM pParam;
191*53ee8cc1Swenshuai.xi
192*53ee8cc1Swenshuai.xi if (FALSE == _MDrv_IR_TX_CheckUtopia20Open(&pInstantIRTX, 0, pAttributeIRTX))
193*53ee8cc1Swenshuai.xi return 0;
194*53ee8cc1Swenshuai.xi
195*53ee8cc1Swenshuai.xi pParam = (PIRTX_SETCLKDIV_PARAM)malloc(sizeof(IRTX_SETCLKDIV_PARAM));
196*53ee8cc1Swenshuai.xi pParam->Div = Div;
197*53ee8cc1Swenshuai.xi
198*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pInstantIRTX,MDrv_CMD_IR_TX_SetClkDiv,(MS_U32*)pParam) != UTOPIA_STATUS_SUCCESS)
199*53ee8cc1Swenshuai.xi {
200*53ee8cc1Swenshuai.xi free(pParam);
201*53ee8cc1Swenshuai.xi return IRTX_FAIL;
202*53ee8cc1Swenshuai.xi }
203*53ee8cc1Swenshuai.xi free(pParam);
204*53ee8cc1Swenshuai.xi return IRTX_OK;
205*53ee8cc1Swenshuai.xi #else
206*53ee8cc1Swenshuai.xi return _MDrv_IR_TX_SetClkDiv(Div);
207*53ee8cc1Swenshuai.xi #endif
208*53ee8cc1Swenshuai.xi
209*53ee8cc1Swenshuai.xi }
210*53ee8cc1Swenshuai.xi
211*53ee8cc1Swenshuai.xi
212*53ee8cc1Swenshuai.xi /****************************************************************/
213*53ee8cc1Swenshuai.xi
_MDrv_IR_TX_SetDelayCycleTime(MS_U16 CycleTime_H,MS_U16 CycleTime_L)214*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_IR_TX_SetDelayCycleTime(MS_U16 CycleTime_H, MS_U16 CycleTime_L)
215*53ee8cc1Swenshuai.xi {
216*53ee8cc1Swenshuai.xi MS_BOOL bRet = TRUE;
217*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_CycleTime_H, (MS_U16)CycleTime_H);
218*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_CycleTime_L, (MS_U16)CycleTime_L);
219*53ee8cc1Swenshuai.xi
220*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
221*53ee8cc1Swenshuai.xi return (!bRet);
222*53ee8cc1Swenshuai.xi #else
223*53ee8cc1Swenshuai.xi return bRet;
224*53ee8cc1Swenshuai.xi #endif
225*53ee8cc1Swenshuai.xi }
226*53ee8cc1Swenshuai.xi
MDrv_IR_TX_SetDelayCycleTime(MS_U16 CycleTime_H,MS_U16 CycleTime_L)227*53ee8cc1Swenshuai.xi MS_BOOL MDrv_IR_TX_SetDelayCycleTime(MS_U16 CycleTime_H, MS_U16 CycleTime_L)
228*53ee8cc1Swenshuai.xi {
229*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
230*53ee8cc1Swenshuai.xi
231*53ee8cc1Swenshuai.xi PIRTX_SETDELAYCLKTIME_PARAM pParam;
232*53ee8cc1Swenshuai.xi
233*53ee8cc1Swenshuai.xi if (FALSE == _MDrv_IR_TX_CheckUtopia20Open(&pInstantIRTX, 0, pAttributeIRTX))
234*53ee8cc1Swenshuai.xi return 0;
235*53ee8cc1Swenshuai.xi
236*53ee8cc1Swenshuai.xi pParam = (PIRTX_SETDELAYCLKTIME_PARAM)malloc(sizeof(IRTX_SETDELAYCLKTIME_PARAM));
237*53ee8cc1Swenshuai.xi
238*53ee8cc1Swenshuai.xi pParam->CycleTime_H = CycleTime_H;
239*53ee8cc1Swenshuai.xi pParam->CycleTime_L = CycleTime_L;
240*53ee8cc1Swenshuai.xi
241*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pInstantIRTX,MDrv_CMD_IR_TX_SetDelayCycleTime,(MS_U32*)pParam) != UTOPIA_STATUS_SUCCESS)
242*53ee8cc1Swenshuai.xi {
243*53ee8cc1Swenshuai.xi printf("Ioctl MDrv_CMD_IR_TX_SetDelayCycleTime fail\n");
244*53ee8cc1Swenshuai.xi free(pParam);
245*53ee8cc1Swenshuai.xi return IRTX_FAIL;
246*53ee8cc1Swenshuai.xi }
247*53ee8cc1Swenshuai.xi free(pParam);
248*53ee8cc1Swenshuai.xi return IRTX_OK;
249*53ee8cc1Swenshuai.xi #else
250*53ee8cc1Swenshuai.xi return _MDrv_IR_TX_SetDelayCycleTime(CycleTime_H, CycleTime_L);
251*53ee8cc1Swenshuai.xi #endif
252*53ee8cc1Swenshuai.xi
253*53ee8cc1Swenshuai.xi }
254*53ee8cc1Swenshuai.xi
255*53ee8cc1Swenshuai.xi /****************************************************************/
256*53ee8cc1Swenshuai.xi
_MDrv_IR_TX_SetMemAddr(MS_U16 MemAddr)257*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_IR_TX_SetMemAddr(MS_U16 MemAddr)
258*53ee8cc1Swenshuai.xi {
259*53ee8cc1Swenshuai.xi MS_BOOL bRet = TRUE;
260*53ee8cc1Swenshuai.xi
261*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_MEM_REG_ADDR, (MS_U16)MemAddr);
262*53ee8cc1Swenshuai.xi
263*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
264*53ee8cc1Swenshuai.xi return (!bRet);
265*53ee8cc1Swenshuai.xi #else
266*53ee8cc1Swenshuai.xi return bRet;
267*53ee8cc1Swenshuai.xi #endif
268*53ee8cc1Swenshuai.xi }
269*53ee8cc1Swenshuai.xi
270*53ee8cc1Swenshuai.xi
MDrv_IR_TX_SetMemAddr(MS_U16 MemAddr)271*53ee8cc1Swenshuai.xi MS_BOOL MDrv_IR_TX_SetMemAddr(MS_U16 MemAddr)
272*53ee8cc1Swenshuai.xi {
273*53ee8cc1Swenshuai.xi
274*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
275*53ee8cc1Swenshuai.xi
276*53ee8cc1Swenshuai.xi PIRTX_SETMEMADDR_PARAM pParam;
277*53ee8cc1Swenshuai.xi
278*53ee8cc1Swenshuai.xi if (FALSE == _MDrv_IR_TX_CheckUtopia20Open(&pInstantIRTX, 0, pAttributeIRTX))
279*53ee8cc1Swenshuai.xi return 0;
280*53ee8cc1Swenshuai.xi
281*53ee8cc1Swenshuai.xi pParam = (PIRTX_SETMEMADDR_PARAM)malloc(sizeof(IRTX_SETMEMADDR_PARAM));
282*53ee8cc1Swenshuai.xi
283*53ee8cc1Swenshuai.xi pParam->MemAddr = MemAddr;
284*53ee8cc1Swenshuai.xi
285*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pInstantIRTX,MDrv_CMD_IR_TX_SetMemAddr,(MS_U32*)pParam) != UTOPIA_STATUS_SUCCESS)
286*53ee8cc1Swenshuai.xi {
287*53ee8cc1Swenshuai.xi printf("Ioctl MDrv_CMD_IR_TX_SetMemAddr fail\n");
288*53ee8cc1Swenshuai.xi free(pParam);
289*53ee8cc1Swenshuai.xi return IRTX_FAIL;
290*53ee8cc1Swenshuai.xi }
291*53ee8cc1Swenshuai.xi free(pParam);
292*53ee8cc1Swenshuai.xi return IRTX_OK;
293*53ee8cc1Swenshuai.xi #else
294*53ee8cc1Swenshuai.xi return _MDrv_IR_TX_SetMemAddr(MemAddr);
295*53ee8cc1Swenshuai.xi #endif
296*53ee8cc1Swenshuai.xi
297*53ee8cc1Swenshuai.xi }
298*53ee8cc1Swenshuai.xi
299*53ee8cc1Swenshuai.xi
300*53ee8cc1Swenshuai.xi
301*53ee8cc1Swenshuai.xi /****************************************************************/
302*53ee8cc1Swenshuai.xi
_MDrv_IR_TX_SetMemData(MS_U16 MemData)303*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_IR_TX_SetMemData(MS_U16 MemData)
304*53ee8cc1Swenshuai.xi {
305*53ee8cc1Swenshuai.xi MS_BOOL bRet = TRUE;
306*53ee8cc1Swenshuai.xi
307*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_MEM_REG_DATA, (MS_U16) MemData);
308*53ee8cc1Swenshuai.xi
309*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
310*53ee8cc1Swenshuai.xi return (!bRet);
311*53ee8cc1Swenshuai.xi #else
312*53ee8cc1Swenshuai.xi return bRet;
313*53ee8cc1Swenshuai.xi #endif
314*53ee8cc1Swenshuai.xi }
315*53ee8cc1Swenshuai.xi
MDrv_IR_TX_SetMemData(MS_U16 MemData)316*53ee8cc1Swenshuai.xi MS_BOOL MDrv_IR_TX_SetMemData(MS_U16 MemData)
317*53ee8cc1Swenshuai.xi {
318*53ee8cc1Swenshuai.xi
319*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
320*53ee8cc1Swenshuai.xi
321*53ee8cc1Swenshuai.xi PIRTX_SETMEMDATA_PARAM pParam;
322*53ee8cc1Swenshuai.xi
323*53ee8cc1Swenshuai.xi if (FALSE == _MDrv_IR_TX_CheckUtopia20Open(&pInstantIRTX, 0, pAttributeIRTX))
324*53ee8cc1Swenshuai.xi return 0;
325*53ee8cc1Swenshuai.xi
326*53ee8cc1Swenshuai.xi pParam = (PIRTX_SETMEMDATA_PARAM)malloc(sizeof(IRTX_SETMEMDATA_PARAM));
327*53ee8cc1Swenshuai.xi
328*53ee8cc1Swenshuai.xi pParam->MemData = MemData;
329*53ee8cc1Swenshuai.xi
330*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pInstantIRTX,MDrv_CMD_IR_TX_SetMemData,(MS_U32*)pParam) != UTOPIA_STATUS_SUCCESS)
331*53ee8cc1Swenshuai.xi {
332*53ee8cc1Swenshuai.xi printf("Ioctl MDrv_CMD_IR_TX_SetMemData fail\n");
333*53ee8cc1Swenshuai.xi free(pParam);
334*53ee8cc1Swenshuai.xi return IRTX_FAIL;
335*53ee8cc1Swenshuai.xi }
336*53ee8cc1Swenshuai.xi free(pParam);
337*53ee8cc1Swenshuai.xi return IRTX_OK;
338*53ee8cc1Swenshuai.xi #else
339*53ee8cc1Swenshuai.xi return _MDrv_IR_TX_SetMemData(MemData);
340*53ee8cc1Swenshuai.xi #endif
341*53ee8cc1Swenshuai.xi
342*53ee8cc1Swenshuai.xi }
343*53ee8cc1Swenshuai.xi
344*53ee8cc1Swenshuai.xi
345*53ee8cc1Swenshuai.xi /****************************************************************/
_MDrv_IR_TX_SetUnitValue(MS_U16 Unit_Value,MS_U8 Unit_Number)346*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_IR_TX_SetUnitValue(MS_U16 Unit_Value, MS_U8 Unit_Number)
347*53ee8cc1Swenshuai.xi {
348*53ee8cc1Swenshuai.xi MS_BOOL bRet = TRUE;
349*53ee8cc1Swenshuai.xi switch(Unit_Number)
350*53ee8cc1Swenshuai.xi {
351*53ee8cc1Swenshuai.xi case 0:
352*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_WriteRegBit((MS_PHY)IR_TX_REG_Unit_Value_H, (MS_U16)Unit_Value);
353*53ee8cc1Swenshuai.xi break;
354*53ee8cc1Swenshuai.xi case 1:
355*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_WriteRegBit((MS_PHY)IR_TX_REG_Unit_Value_H, (MS_U16)(Unit_Value << 2));
356*53ee8cc1Swenshuai.xi break;
357*53ee8cc1Swenshuai.xi case 2:
358*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_WriteRegBit((MS_PHY)IR_TX_REG_Unit_Value_H, (MS_U16)(Unit_Value << 4));
359*53ee8cc1Swenshuai.xi break;
360*53ee8cc1Swenshuai.xi case 3:
361*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_WriteRegBit((MS_PHY)IR_TX_REG_Unit_Value_H, (MS_U16)(Unit_Value << 6));
362*53ee8cc1Swenshuai.xi break;
363*53ee8cc1Swenshuai.xi case 4:
364*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_WriteRegBit((MS_PHY)IR_TX_REG_Unit_Value_H, (MS_U16)(Unit_Value << 8));
365*53ee8cc1Swenshuai.xi break;
366*53ee8cc1Swenshuai.xi case 5:
367*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_WriteRegBit((MS_PHY)IR_TX_REG_Unit_Value_H, (MS_U16)(Unit_Value << 10));
368*53ee8cc1Swenshuai.xi break;
369*53ee8cc1Swenshuai.xi case 6:
370*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_WriteRegBit((MS_PHY)IR_TX_REG_Unit_Value_H, (MS_U16)(Unit_Value << 12));
371*53ee8cc1Swenshuai.xi break;
372*53ee8cc1Swenshuai.xi case 7:
373*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_WriteRegBit((MS_PHY)IR_TX_REG_Unit_Value_H, (MS_U16)(Unit_Value << 14));
374*53ee8cc1Swenshuai.xi break;
375*53ee8cc1Swenshuai.xi case 8:
376*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_WriteRegBit((MS_PHY)IR_TX_REG_Unit_Value_L, (MS_U16)(Unit_Value));
377*53ee8cc1Swenshuai.xi break;
378*53ee8cc1Swenshuai.xi case 10:
379*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_WriteRegBit((MS_PHY)IR_TX_REG_Unit_Value_L, (MS_U16)(Unit_Value << 2));
380*53ee8cc1Swenshuai.xi break;
381*53ee8cc1Swenshuai.xi case 11:
382*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_WriteRegBit((MS_PHY)IR_TX_REG_Unit_Value_L, (MS_U16)(Unit_Value << 4));
383*53ee8cc1Swenshuai.xi break;
384*53ee8cc1Swenshuai.xi case 12:
385*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_WriteRegBit((MS_PHY)IR_TX_REG_Unit_Value_L, (MS_U16)(Unit_Value << 6));
386*53ee8cc1Swenshuai.xi break;
387*53ee8cc1Swenshuai.xi case 13:
388*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_WriteRegBit((MS_PHY)IR_TX_REG_Unit_Value_L, (MS_U16)(Unit_Value << 8));
389*53ee8cc1Swenshuai.xi break;
390*53ee8cc1Swenshuai.xi
391*53ee8cc1Swenshuai.xi default:
392*53ee8cc1Swenshuai.xi printf("Wrong Unit Number\n");
393*53ee8cc1Swenshuai.xi bRet = FALSE;
394*53ee8cc1Swenshuai.xi }
395*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
396*53ee8cc1Swenshuai.xi return (!bRet);
397*53ee8cc1Swenshuai.xi #else
398*53ee8cc1Swenshuai.xi return bRet;
399*53ee8cc1Swenshuai.xi #endif
400*53ee8cc1Swenshuai.xi }
401*53ee8cc1Swenshuai.xi
MDrv_IR_TX_SetUnitValue(MS_U16 Unit_Value,MS_U8 Unit_Number)402*53ee8cc1Swenshuai.xi MS_BOOL MDrv_IR_TX_SetUnitValue(MS_U16 Unit_Value, MS_U8 Unit_Number)
403*53ee8cc1Swenshuai.xi {
404*53ee8cc1Swenshuai.xi
405*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
406*53ee8cc1Swenshuai.xi
407*53ee8cc1Swenshuai.xi PIRTX_SETUNITVALUE_PARAM pParam;
408*53ee8cc1Swenshuai.xi
409*53ee8cc1Swenshuai.xi if (FALSE == _MDrv_IR_TX_CheckUtopia20Open(&pInstantIRTX, 0, pAttributeIRTX))
410*53ee8cc1Swenshuai.xi return 0;
411*53ee8cc1Swenshuai.xi
412*53ee8cc1Swenshuai.xi pParam = (PIRTX_SETUNITVALUE_PARAM)malloc(sizeof(IRTX_SETUNITVALUE_PARAM));
413*53ee8cc1Swenshuai.xi
414*53ee8cc1Swenshuai.xi pParam->Unit_Value = Unit_Value;
415*53ee8cc1Swenshuai.xi pParam->Unit_Number = Unit_Number;
416*53ee8cc1Swenshuai.xi
417*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pInstantIRTX,MDrv_CMD_IR_TX_SetUnitValue,(MS_U32*)pParam) != UTOPIA_STATUS_SUCCESS)
418*53ee8cc1Swenshuai.xi {
419*53ee8cc1Swenshuai.xi printf("Ioctl MDrv_CMD_IR_TX_SetUnitValue fail\n");
420*53ee8cc1Swenshuai.xi free(pParam);
421*53ee8cc1Swenshuai.xi return IRTX_FAIL;
422*53ee8cc1Swenshuai.xi }
423*53ee8cc1Swenshuai.xi free(pParam);
424*53ee8cc1Swenshuai.xi return IRTX_OK;
425*53ee8cc1Swenshuai.xi #else
426*53ee8cc1Swenshuai.xi return _MDrv_IR_TX_SetUnitValue(Unit_Value, Unit_Number);
427*53ee8cc1Swenshuai.xi #endif
428*53ee8cc1Swenshuai.xi
429*53ee8cc1Swenshuai.xi }
430*53ee8cc1Swenshuai.xi
431*53ee8cc1Swenshuai.xi /****************************************************************/
_MDrv_IR_TX_SetShotCount(MS_U16 H_ShotCount,MS_U16 L_ShotCount,MS_U8 Unit_Number)432*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_IR_TX_SetShotCount(MS_U16 H_ShotCount, MS_U16 L_ShotCount, MS_U8 Unit_Number)
433*53ee8cc1Swenshuai.xi {
434*53ee8cc1Swenshuai.xi MS_BOOL bRet = TRUE;
435*53ee8cc1Swenshuai.xi switch(Unit_Number)
436*53ee8cc1Swenshuai.xi {
437*53ee8cc1Swenshuai.xi case 0:
438*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit00_ShotCount_H, (MS_U16)H_ShotCount);
439*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit00_ShotCount_L, (MS_U16)L_ShotCount);
440*53ee8cc1Swenshuai.xi break;
441*53ee8cc1Swenshuai.xi case 1:
442*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit01_ShotCount_H, (MS_U16)H_ShotCount);
443*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit01_ShotCount_L, (MS_U16)L_ShotCount);
444*53ee8cc1Swenshuai.xi break;
445*53ee8cc1Swenshuai.xi case 2:
446*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit02_ShotCount_H, (MS_U16)H_ShotCount);
447*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit02_ShotCount_L, (MS_U16)L_ShotCount);
448*53ee8cc1Swenshuai.xi break;
449*53ee8cc1Swenshuai.xi case 3:
450*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit03_ShotCount_H, (MS_U16)H_ShotCount);
451*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit03_ShotCount_L, (MS_U16)L_ShotCount);
452*53ee8cc1Swenshuai.xi break;
453*53ee8cc1Swenshuai.xi case 4:
454*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit04_ShotCount_H, (MS_U16)H_ShotCount);
455*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit04_ShotCount_L, (MS_U16)L_ShotCount);
456*53ee8cc1Swenshuai.xi break;
457*53ee8cc1Swenshuai.xi case 5:
458*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit05_ShotCount_H, H_ShotCount);
459*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit05_ShotCount_L, L_ShotCount);
460*53ee8cc1Swenshuai.xi break;
461*53ee8cc1Swenshuai.xi case 6:
462*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit06_ShotCount_H, H_ShotCount);
463*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit06_ShotCount_L, L_ShotCount);
464*53ee8cc1Swenshuai.xi break;
465*53ee8cc1Swenshuai.xi case 7:
466*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit07_ShotCount_H, H_ShotCount);
467*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit07_ShotCount_L, L_ShotCount);
468*53ee8cc1Swenshuai.xi break;
469*53ee8cc1Swenshuai.xi case 8:
470*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit08_ShotCount_H, H_ShotCount);
471*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit08_ShotCount_L, L_ShotCount);
472*53ee8cc1Swenshuai.xi break;
473*53ee8cc1Swenshuai.xi case 9:
474*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit09_ShotCount_H, H_ShotCount);
475*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit09_ShotCount_L, L_ShotCount);
476*53ee8cc1Swenshuai.xi break;
477*53ee8cc1Swenshuai.xi case 10:
478*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit10_ShotCount_H, H_ShotCount);
479*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit10_ShotCount_L, L_ShotCount);
480*53ee8cc1Swenshuai.xi break;
481*53ee8cc1Swenshuai.xi case 11:
482*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit11_ShotCount_H, H_ShotCount);
483*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit11_ShotCount_L, L_ShotCount);
484*53ee8cc1Swenshuai.xi break;
485*53ee8cc1Swenshuai.xi case 12:
486*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit12_ShotCount_H, H_ShotCount);
487*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit12_ShotCount_L, L_ShotCount);
488*53ee8cc1Swenshuai.xi break;
489*53ee8cc1Swenshuai.xi case 13:
490*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit13_ShotCount_H, H_ShotCount);
491*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_REG_Unit13_ShotCount_L, L_ShotCount);
492*53ee8cc1Swenshuai.xi break;
493*53ee8cc1Swenshuai.xi default:
494*53ee8cc1Swenshuai.xi printf("Wrong Unit Number\n");
495*53ee8cc1Swenshuai.xi bRet = FALSE;
496*53ee8cc1Swenshuai.xi }
497*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
498*53ee8cc1Swenshuai.xi return (!bRet);
499*53ee8cc1Swenshuai.xi #else
500*53ee8cc1Swenshuai.xi return bRet;
501*53ee8cc1Swenshuai.xi #endif
502*53ee8cc1Swenshuai.xi }
503*53ee8cc1Swenshuai.xi
MDrv_IR_TX_SetShotCount(MS_U16 H_ShotCount,MS_U16 L_ShotCount,MS_U8 Unit_Number)504*53ee8cc1Swenshuai.xi MS_BOOL MDrv_IR_TX_SetShotCount(MS_U16 H_ShotCount, MS_U16 L_ShotCount, MS_U8 Unit_Number)
505*53ee8cc1Swenshuai.xi {
506*53ee8cc1Swenshuai.xi
507*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
508*53ee8cc1Swenshuai.xi
509*53ee8cc1Swenshuai.xi PIRTX_SETSHOTCOUNT_PARAM pParam;
510*53ee8cc1Swenshuai.xi
511*53ee8cc1Swenshuai.xi if (FALSE == _MDrv_IR_TX_CheckUtopia20Open(&pInstantIRTX, 0, pAttributeIRTX))
512*53ee8cc1Swenshuai.xi return 0;
513*53ee8cc1Swenshuai.xi
514*53ee8cc1Swenshuai.xi pParam = (PIRTX_SETSHOTCOUNT_PARAM)malloc(sizeof(IRTX_SETSHOTCOUNT_PARAM));
515*53ee8cc1Swenshuai.xi
516*53ee8cc1Swenshuai.xi pParam->H_ShotCount = H_ShotCount;
517*53ee8cc1Swenshuai.xi pParam->L_ShotCount = L_ShotCount;
518*53ee8cc1Swenshuai.xi pParam->Unit_Number = Unit_Number;
519*53ee8cc1Swenshuai.xi
520*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pInstantIRTX,MDrv_CMD_IR_TX_SetShotCount,(MS_U32*)pParam) != UTOPIA_STATUS_SUCCESS)
521*53ee8cc1Swenshuai.xi {
522*53ee8cc1Swenshuai.xi printf("Ioctl MDrv_CMD_IR_TX_SetShotCount fail\n");
523*53ee8cc1Swenshuai.xi free(pParam);
524*53ee8cc1Swenshuai.xi return IRTX_FAIL;
525*53ee8cc1Swenshuai.xi }
526*53ee8cc1Swenshuai.xi free(pParam);
527*53ee8cc1Swenshuai.xi return IRTX_OK;
528*53ee8cc1Swenshuai.xi #else
529*53ee8cc1Swenshuai.xi return _MDrv_IR_TX_SetShotCount(H_ShotCount, L_ShotCount, Unit_Number);
530*53ee8cc1Swenshuai.xi #endif
531*53ee8cc1Swenshuai.xi
532*53ee8cc1Swenshuai.xi }
533*53ee8cc1Swenshuai.xi
534*53ee8cc1Swenshuai.xi
535*53ee8cc1Swenshuai.xi /****************************************************************/
536*53ee8cc1Swenshuai.xi
_MDrv_IR_TX_Init(void)537*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_IR_TX_Init(void)
538*53ee8cc1Swenshuai.xi {
539*53ee8cc1Swenshuai.xi MS_BOOL bRet = TRUE;
540*53ee8cc1Swenshuai.xi MS_VIRT virtBaseAddr = 0;
541*53ee8cc1Swenshuai.xi
542*53ee8cc1Swenshuai.xi MS_PHY u32BaseSize = 0;
543*53ee8cc1Swenshuai.xi
544*53ee8cc1Swenshuai.xi MDrv_MMIO_GetBASE(&virtBaseAddr, &u32BaseSize, MS_MODULE_IR_TX);
545*53ee8cc1Swenshuai.xi
546*53ee8cc1Swenshuai.xi HAL_IR_TX_SetIOMapBase(virtBaseAddr);
547*53ee8cc1Swenshuai.xi
548*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Reset();
549*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_SetIRTXMode();
550*53ee8cc1Swenshuai.xi
551*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
552*53ee8cc1Swenshuai.xi return (!bRet);
553*53ee8cc1Swenshuai.xi #else
554*53ee8cc1Swenshuai.xi return bRet;
555*53ee8cc1Swenshuai.xi #endif
556*53ee8cc1Swenshuai.xi }
557*53ee8cc1Swenshuai.xi
558*53ee8cc1Swenshuai.xi
MDrv_IR_TX_Init(void)559*53ee8cc1Swenshuai.xi MS_BOOL MDrv_IR_TX_Init(void)
560*53ee8cc1Swenshuai.xi {
561*53ee8cc1Swenshuai.xi
562*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
563*53ee8cc1Swenshuai.xi
564*53ee8cc1Swenshuai.xi PIRTX_INIT_PARAM pParam;
565*53ee8cc1Swenshuai.xi
566*53ee8cc1Swenshuai.xi if (FALSE == _MDrv_IR_TX_CheckUtopia20Open(&pInstantIRTX, 0, pAttributeIRTX))
567*53ee8cc1Swenshuai.xi {
568*53ee8cc1Swenshuai.xi printf("Open fail \n");
569*53ee8cc1Swenshuai.xi return 0;
570*53ee8cc1Swenshuai.xi }
571*53ee8cc1Swenshuai.xi else
572*53ee8cc1Swenshuai.xi {
573*53ee8cc1Swenshuai.xi printf("Open success \n");
574*53ee8cc1Swenshuai.xi }
575*53ee8cc1Swenshuai.xi
576*53ee8cc1Swenshuai.xi pParam = (PIRTX_INIT_PARAM)malloc(sizeof(IRTX_INIT_PARAM));
577*53ee8cc1Swenshuai.xi
578*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pInstantIRTX,MDrv_CMD_IR_TX_Init,(void*)pParam) != UTOPIA_STATUS_SUCCESS)
579*53ee8cc1Swenshuai.xi {
580*53ee8cc1Swenshuai.xi printf("Ioctl MDrv_IR_TX_Init fail\n");
581*53ee8cc1Swenshuai.xi free(pParam);
582*53ee8cc1Swenshuai.xi return IRTX_FAIL;
583*53ee8cc1Swenshuai.xi }
584*53ee8cc1Swenshuai.xi free(pParam);
585*53ee8cc1Swenshuai.xi return IRTX_OK;
586*53ee8cc1Swenshuai.xi #else
587*53ee8cc1Swenshuai.xi return _MDrv_IR_TX_Init();
588*53ee8cc1Swenshuai.xi #endif
589*53ee8cc1Swenshuai.xi
590*53ee8cc1Swenshuai.xi }
591*53ee8cc1Swenshuai.xi
592*53ee8cc1Swenshuai.xi /****************************************************************/
593*53ee8cc1Swenshuai.xi
_MDrv_IR_TX_SetCarrierCount(MS_U16 Count)594*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_IR_TX_SetCarrierCount(MS_U16 Count)
595*53ee8cc1Swenshuai.xi {
596*53ee8cc1Swenshuai.xi MS_BOOL bRet = TRUE;
597*53ee8cc1Swenshuai.xi bRet &= HAL_IR_TX_Write2Byte((MS_PHY)IR_TX_CARRIER_CNT,(MS_U16)Count);
598*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
599*53ee8cc1Swenshuai.xi return (!bRet);
600*53ee8cc1Swenshuai.xi #else
601*53ee8cc1Swenshuai.xi return bRet;
602*53ee8cc1Swenshuai.xi #endif
603*53ee8cc1Swenshuai.xi }
604*53ee8cc1Swenshuai.xi
MDrv_IR_TX_SetCarrierCount(MS_U16 Count)605*53ee8cc1Swenshuai.xi MS_BOOL MDrv_IR_TX_SetCarrierCount(MS_U16 Count)
606*53ee8cc1Swenshuai.xi {
607*53ee8cc1Swenshuai.xi
608*53ee8cc1Swenshuai.xi #if IRTX_UTOPIA20
609*53ee8cc1Swenshuai.xi
610*53ee8cc1Swenshuai.xi PIRTX_SETCARRIERCOUNT_PARAM pParam;
611*53ee8cc1Swenshuai.xi
612*53ee8cc1Swenshuai.xi if (FALSE == _MDrv_IR_TX_CheckUtopia20Open(&pInstantIRTX, 0, pAttributeIRTX))
613*53ee8cc1Swenshuai.xi return 0;
614*53ee8cc1Swenshuai.xi
615*53ee8cc1Swenshuai.xi pParam = (PIRTX_SETCARRIERCOUNT_PARAM)malloc(sizeof(IRTX_SETCARRIERCOUNT_PARAM));
616*53ee8cc1Swenshuai.xi
617*53ee8cc1Swenshuai.xi pParam->Count = Count;
618*53ee8cc1Swenshuai.xi
619*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pInstantIRTX,MDrv_CMD_IR_TX_SetCarrierCount,(MS_U32*)pParam) != UTOPIA_STATUS_SUCCESS)
620*53ee8cc1Swenshuai.xi {
621*53ee8cc1Swenshuai.xi printf("Ioctl MDrv_IR_TX_SetCarrierCount fail\n");
622*53ee8cc1Swenshuai.xi free(pParam);
623*53ee8cc1Swenshuai.xi return IRTX_FAIL;
624*53ee8cc1Swenshuai.xi }
625*53ee8cc1Swenshuai.xi free(pParam);
626*53ee8cc1Swenshuai.xi return IRTX_OK;
627*53ee8cc1Swenshuai.xi #else
628*53ee8cc1Swenshuai.xi return _MDrv_IR_TX_SetCarrierCount(Count);
629*53ee8cc1Swenshuai.xi #endif
630*53ee8cc1Swenshuai.xi
631*53ee8cc1Swenshuai.xi }
632*53ee8cc1Swenshuai.xi
633