xref: /utopia/UTPA2-700.0.x/modules/gpio/utopia_adaption/gpio/GPIO_adp.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 #include <linux/kernel.h>
2 #include <linux/string.h>
3 #include <linux/slab.h>
4 #include <linux/uaccess.h>
5 
6 #include "MsTypes.h"
7 #include "utopia.h"
8 #include "drvGPIO.h"
9 #include "drvGPIO_private.h"
10 #include "GPIO_adp.h"
11 #include "utopia_adp.h"
12 
13 
14 UADP_SPT_0NXT_DEF(GPIO_Status);
15 UADP_SPT_0NXT_DEF(GPIO_SET_HIGH_PARAM);
16 UADP_SPT_0NXT_DEF(GPIO_SET_LOW_PARAM);
17 UADP_SPT_0NXT_DEF(GPIO_SET_INPUT_PARAM);
18 UADP_SPT_0NXT_DEF(GPIO_GET_INOUT_PARAM);
19 UADP_SPT_0NXT_DEF(GPIO_GET_LEVEL_PARAM);
20 UADP_SPT_0NXT_DEF(GPIO_DETACH_INTERRUPT_PARAM);
21 UADP_SPT_0NXT_DEF(GPIO_ENABLE_INTERRUPT_PARAM);
22 UADP_SPT_0NXT_DEF(GPIO_DISABLE_INTERRUPT_PARAM);
23 
24 UADP_SPT_0NXT_DEF(void);
25 //UADP_SPT_1NXT_DEF(GPIO_ATTACH_INTERRUPT_PARAM);
26 
27 UADP_SDT_0_DEF(GPIO_STS_READ);
28 UADP_SDT_1_DEF(GPIO_PRIVATE_STS);
29 
30 UADP_SDT_0_DEF(GPIO_CALL_BACK);
31 UADP_SDT_1_DEF(GPIO_ATTACH_PARAM);
32 
GPIO_adp_Init(FUtopiaIOctl * pIoctl)33 MS_U32 GPIO_adp_Init(FUtopiaIOctl* pIoctl)
34 {
35 //member of struct
36 //set table
37 	UADP_SPT_0NXT(GPIO_Status);
38 	UADP_SPT_0NXT(GPIO_SET_HIGH_PARAM);
39 	UADP_SPT_0NXT(GPIO_SET_LOW_PARAM);
40 	UADP_SPT_0NXT(GPIO_SET_INPUT_PARAM);
41 	UADP_SPT_0NXT(GPIO_GET_INOUT_PARAM);
42 	UADP_SPT_0NXT(GPIO_GET_LEVEL_PARAM);
43 	UADP_SPT_0NXT(GPIO_DETACH_INTERRUPT_PARAM);
44 	UADP_SPT_0NXT(GPIO_ENABLE_INTERRUPT_PARAM);
45 	UADP_SPT_0NXT(GPIO_DISABLE_INTERRUPT_PARAM);
46 	//UADP_SPT_1NXT(GPIO_ATTACH_INTERRUPT_PARAM, GPIO_Callback, void);
47 	UADP_SPT_0NXT(GPIO_DISABLE_INTERRUPT_PARAM);
48 	UADP_SDT_NAME0(GPIO_STS_READ,GPIO_Status);
49 	UADP_SDT_NAME1(GPIO_PRIVATE_STS,GPIO_GET_STS_PARAM,UADP_SDT_P2N,pSts,GPIO_STS_READ);
50 	UADP_SDT_NAME0(GPIO_CALL_BACK,void);
51 	UADP_SDT_NAME1(GPIO_ATTACH_PARAM,GPIO_ATTACH_INTERRUPT_PARAM,UADP_SDT_P2N,GPIO_Callback,GPIO_CALL_BACK);
52 	*pIoctl= (FUtopiaIOctl)GPIO_adp_Ioctl;
53 	return 0;
54 }
55 
GPIO_adp_Ioctl(void * pInstanceTmp,MS_U32 u32Cmd,void * const pArgs)56 MS_U32 GPIO_adp_Ioctl(void* pInstanceTmp, MS_U32 u32Cmd, void* const pArgs)
57 {
58     MS_U32 u32Ret=0;
59     char buffer_arg[2048];
60     switch(u32Cmd)
61     {
62         case MDrv_CMD_GPIO_Init:
63             u32Ret=UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
64             break;
65         case MDrv_CMD_GPIO_GetStauts:
66             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_GPIO_PRIVATE_STS, spt_GPIO_PRIVATE_STS,buffer_arg,sizeof(buffer_arg));
67             break;
68         case MDrv_CMD_GPIO_Set_High:
69             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_GPIO_SET_HIGH_PARAM, spt_GPIO_SET_HIGH_PARAM,buffer_arg,sizeof(buffer_arg));
70             break;
71         case MDrv_CMD_GPIO_Set_Low:
72             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_GPIO_SET_LOW_PARAM, spt_GPIO_SET_LOW_PARAM,buffer_arg,sizeof(buffer_arg));
73             break;
74         case  MDrv_CMD_GPIO_Set_Input:
75             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_GPIO_SET_INPUT_PARAM, spt_GPIO_SET_INPUT_PARAM,buffer_arg,sizeof(buffer_arg));
76             break;
77         case MDrv_CMD_GPIO_Get_Inout:
78             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_GPIO_GET_INOUT_PARAM, spt_GPIO_GET_INOUT_PARAM,buffer_arg,sizeof(buffer_arg));
79             break;
80         case MDrv_CMD_GPIO_Get_Level:
81             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_GPIO_GET_LEVEL_PARAM, spt_GPIO_GET_LEVEL_PARAM,buffer_arg,sizeof(buffer_arg));
82             break;
83         case  MDrv_CMD_GPIO_Attach_Interrupt:
84             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_GPIO_ATTACH_PARAM, spt_GPIO_ATTACH_PARAM,buffer_arg,sizeof(buffer_arg));
85             break;;
86         case MDrv_CMD_GPIO_Detach_Interrupt:
87 		u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_GPIO_DETACH_INTERRUPT_PARAM, spt_GPIO_DETACH_INTERRUPT_PARAM,buffer_arg,sizeof(buffer_arg));
88             break;
89         case MDrv_CMD_GPIO_En_Interrupt:
90 		u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_GPIO_ENABLE_INTERRUPT_PARAM, spt_GPIO_ENABLE_INTERRUPT_PARAM,buffer_arg,sizeof(buffer_arg));
91             break;
92         case MDrv_CMD_GPIO_Dis_Interrupt:
93 		u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_GPIO_DISABLE_INTERRUPT_PARAM, spt_GPIO_DISABLE_INTERRUPT_PARAM,buffer_arg,sizeof(buffer_arg));
94             break;
95         case MDrv_CMD_GPIO_Dis_Interrupt_All:
96 		u32Ret=UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
97             break;
98         case MDrv_CMD_GPIO_En_Interrupt_All:
99 		u32Ret=UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
100 	     break;
101         case MDrv_CMD_GPIO_Interrupt_Action:
102 		u32Ret=UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
103 	     break;
104         default:
105             break;
106     }
107 	return u32Ret;
108 }
109 
110