xref: /utopia/UTPA2-700.0.x/modules/ir_tx/drv/ir_tx/drv_IR_TX.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
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