xref: /utopia/UTPA2-700.0.x/modules/bdma/utopia_adaption/bdma/BDMA_adp.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 #include <linux/kernel.h>
2 #include <linux/string.h>
3 #include <linux/slab.h>
4 
5 
6 #include "MsTypes.h"
7 #include "utopia.h"
8 #include "drvBDMA.h"
9 #include "drvBDMA_v2.h"
10 #include "BDMA_adp.h"
11 #include "utopia_adp.h"
12 
13 
14 extern void* spt_MS_U32;
15 UADP_SPT_0NXT_DEF(BDMA_Status);
16 UADP_SPT_0NXT_DEF(BDMA_MOBF_PS);
17 UADP_SPT_0NXT_DEF(BDMA_CRC32_PARAM);
18 UADP_SPT_0NXT_DEF(BDMA_MEMCOPY_PARAM);
19 UADP_STRUCT_POINTER_TABLE spt_BDMA_INIT_PARAM[10];
20 UADP_STRUCT_POINTER_TABLE spt_BDMA_COPYHND_PARAM[10];
21 
22 #ifdef MOBF_ENABLE
23 //UADP_SDT_0_DEF(MS_PHY_phy64Addr);
24 UADP_SDT_0_DEF(BDMA_MOBF_PS_pMobfPsCfg);
25 //UADP_SDT_0_DEF(MS_PHY_phy64SearchAddr);
26 UADP_SDT_1_DEF(BDMA_MOBFSEARCH_PARAM_PRIVATE);
27 #endif
28 
29 UADP_SDT_0_DEF(MS_PHYADDR_u32Addr);
30 UADP_SDT_1_DEF(BDMA_SEARCH_PARAM_PRIVATE);
31 
32 UADP_SDT_0_DEF(BDMA_Status_pStatus);
33 UADP_SDT_1_DEF(BDMA_GETSTATUS_PARAM_PRIVATE);
34 
35 UADP_SDT_0_DEF(MS_PHYADDR_u32FlashAddr);
36 UADP_SDT_0_DEF(MS_PHYADDR_u32DramAddr);
37 UADP_SDT_2_DEF(BDMA_FLASHCOPY2DRAM_PARAM_PRIVATE);
38 
39 //UADP_SDT_0_DEF(MS_PHY_phy64SrcAddr);
40 //UADP_SDT_0_DEF(MS_PHY_phy64DstAddr);
41 //UADP_SDT_2_DEF(BDMA_MEMCOPY_PARAM_PRIVATE);
42 
43 UADP_SDT_0_DEF(MS_PHYADDR_u32Addr);
44 UADP_SDT_1_DEF(BDMA_PATTERN_FILL_PARAM_PRIVATE);
45 
46 //UADP_SDT_0_DEF(MS_PHY_phy64Addr);
47 //UADP_SDT_1_DEF(BDMA_CRC32_PARAM_PRIVATE);
48 
49 
50 
BDMA_adp_Init(FUtopiaIOctl * pIoctl)51 MS_U32 BDMA_adp_Init(FUtopiaIOctl* pIoctl)
52 {
53 //member of struct
54 //set table
55     UADP_SPT_0NXT(BDMA_CRC32_PARAM);
56     UADP_SPT_0NXT(BDMA_MEMCOPY_PARAM);
57 
58     UADP_SDT_NAME0(MS_PHYADDR_u32Addr,MS_PHYADDR);
59     UADP_SDT_NAME1(BDMA_SEARCH_PARAM_PRIVATE,BDMA_SEARCH_PARAM,UADP_SDT_AT ,u32Addr,MS_PHYADDR_u32Addr);
60 
61     UADP_SDT_NAME0(BDMA_Status_pStatus,BDMA_Status);
62     UADP_SDT_NAME1(BDMA_GETSTATUS_PARAM_PRIVATE,BDMA_GETSTATUS_PARAM,UADP_SDT_P2N,pStatus,BDMA_Status_pStatus);
63 
64     UADP_SDT_NAME0(MS_PHYADDR_u32FlashAddr,MS_PHYADDR);
65     UADP_SDT_NAME0(MS_PHYADDR_u32DramAddr,MS_PHYADDR);
66     UADP_SDT_NAME2(BDMA_FLASHCOPY2DRAM_PARAM_PRIVATE,BDMA_FLASHCOPY2DRAM_PARAM,UADP_SDT_AT ,u32FlashAddr,MS_PHYADDR_u32FlashAddr,UADP_SDT_AT,u32DramAddr,MS_PHYADDR_u32DramAddr);
67 
68     //UADP_SDT_NAME0(MS_PHY_phy64SrcAddr,MS_PHY);
69     //UADP_SDT_NAME0(MS_PHY_phy64DstAddr,MS_PHY);
70     //UADP_SDT_NAME2(BDMA_MEMCOPY_PARAM_PRIVATE,BDMA_MEMCOPY_PARAM,UADP_SDT_AT ,phy64SrcAddr,MS_PHY_phy64SrcAddr,UADP_SDT_AT,phy64DstAddr,MS_PHY_phy64DstAddr);
71 
72     UADP_SDT_NAME0(MS_PHYADDR_u32Addr,MS_PHYADDR);
73     UADP_SDT_NAME1(BDMA_PATTERN_FILL_PARAM_PRIVATE,BDMA_PATTERN_FILL_PARAM,UADP_SDT_AT,u32Addr,MS_PHYADDR_u32Addr);
74 
75     //UADP_SDT_NAME0(MS_PHY_phy64Addr,MS_PHY);
76     //UADP_SDT_NAME1(BDMA_CRC32_PARAM_PRIVATE,BDMA_CRC32_PARAM,UADP_SDT_AT,phy64Addr,MS_PHY_phy64Addr);
77 
78     #ifdef MOBF_ENABLE
79     //UADP_SDT_NAME0(MS_PHY_phy64Addr,MS_PHY);
80     UADP_SDT_NAME0(BDMA_MOBF_PS_pMobfPsCfg,BDMA_MOBF_PS);
81     //UADP_SDT_NAME0(MS_PHY_phy64SearchAddr,MS_PHY);
82     UADP_SDT_NAME1(BDMA_MOBFSEARCH_PARAM_PRIVATE,BDMA_MOBFSEARCH_PARAM,UADP_SDT_P2N,pMobfPsCfg,BDMA_MOBF_PS_pMobfPsCfg);
83     #endif
84 
85     UADPBypassSetSPT(&spt_BDMA_INIT_PARAM[0],UADP_SPT_SELF_SIZE,0, sizeof(BDMA_INIT_PARAM));
86     UADPBypassSetSPT(&spt_BDMA_INIT_PARAM[1],UADP_SPT_END , 0, 0);
87 
88     UADPBypassSetSPT(&spt_BDMA_COPYHND_PARAM[0],UADP_SPT_SELF_SIZE,0, sizeof(BDMA_COPYHND_PARAM));
89     UADPBypassSetSPT(&spt_BDMA_COPYHND_PARAM[1],UADP_SPT_END , 0, 0);
90 
91     *pIoctl= (FUtopiaIOctl)BDMA_adp_Ioctl;
92     return 0;
93 }
94 
BDMA_adp_Ioctl(void * pInstanceTmp,MS_U32 u32Cmd,void * const pArgs)95 MS_U32 BDMA_adp_Ioctl(void* pInstanceTmp, MS_U32 u32Cmd, void* const pArgs)
96 {
97     MS_U32 u32Ret=0;
98     char buffer_arg[2048];
99     switch(u32Cmd)
100     {
101         case MDrv_CMD_BDMA_Init:
102             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_BDMA_INIT_PARAM, NULL,buffer_arg,sizeof(buffer_arg));
103             break;
104         case MDrv_CMD_BDMA_CopyHnd:
105             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_BDMA_COPYHND_PARAM, NULL,buffer_arg,sizeof(buffer_arg));
106             break;
107         case MDrv_CMD_BDMA_MemCopy:
108             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_BDMA_MEMCOPY_PARAM, NULL,buffer_arg,sizeof(buffer_arg));
109             break;
110         case MDrv_CMD_BDMA_Search:
111             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_BDMA_SEARCH_PARAM_PRIVATE, spt_BDMA_SEARCH_PARAM_PRIVATE,buffer_arg,sizeof(buffer_arg));
112             break;
113         case MDrv_CMD_BDMA_CRC32:
114             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_BDMA_CRC32_PARAM, spt_BDMA_CRC32_PARAM,buffer_arg,sizeof(buffer_arg));
115             break;
116         case MDrv_CMD_BDMA_Pattern_Fill:
117             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_BDMA_PATTERN_FILL_PARAM_PRIVATE, spt_BDMA_PATTERN_FILL_PARAM_PRIVATE,buffer_arg,sizeof(buffer_arg));
118             break;
119         case MDrv_CMD_BDMA_FlashCopy2Dram:
120             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_BDMA_FLASHCOPY2DRAM_PARAM_PRIVATE, NULL, buffer_arg,sizeof(buffer_arg));
121             break;
122 		#ifdef MOBF_ENABLE
123         case MDrv_CMD_BDMA_MOBFSearch:
124             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_BDMA_MOBFSEARCH_PARAM_PRIVATE, spt_BDMA_MOBFSEARCH_PARAM_PRIVATE, buffer_arg,sizeof(buffer_arg));
125             break;
126 		#endif
127         case MDrv_CMD_BDMA_GetStatus:
128             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL, spt_BDMA_GETSTATUS_PARAM_PRIVATE, buffer_arg,sizeof(buffer_arg));
129             break;
130         case MDrv_CMD_BDMA_GetInfo:
131             break;
132         case MDrv_CMD_BDMA_GetLibVer:
133             break;
134         case MDrv_CMD_BDMA_GetMinSize:
135             break;
136         case MDrv_CMD_BDMA_SetDbgLevel:
137             break;
138         case MDrv_CMD_BDMA_SetSPIOffsetForMCU:
139         case MDrv_CMD_BDMA_WaitFlashDone:
140             u32Ret=UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
141             break;
142         default:
143             break;
144     }
145 	return u32Ret;
146 }
147 
148