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