bspconfig.h 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719
  1. /*******************************************************************************
  2. 版权所有:
  3. 文件名称: bspconfig.h
  4. 文件版本: 01.01
  5. 创建作者: sunxi
  6. 创建日期: 2012-05-10
  7. 功能说明: 冷火实时LINUX的配置文件。
  8. 其它说明:
  9. 修改记录:
  10. */
  11. #ifndef _BSPCONFIG_H_
  12. #define _BSPCONFIG_H_
  13. #include "rt.h"
  14. #include "MCF54418.h"
  15. #include "gpio_def.h"
  16. #include "build_info.h"
  17. #include "defineSys.h"
  18. //----------------------------- BSP版本 ---------------------------
  19. // #define BSP_FTU 1 // 单回路配电终端,f308
  20. //#define BSP_DTU2 2 // DTU2.0 f306
  21. //#define BSP_DTU3 3 // DTU3.0
  22. #define BSP_DFTU 4 // DTU、FTU混合版本;支持4回路二遥标准型DTU、单回路FTU;支持电磁式、电子式互感器。
  23. #define BSP_VERSION BSP_DFTU
  24. #define __DFTU_V4_HV0102__ 1 // sunxi 20180724 第二版
  25. //BSP类型.如果是FTU,打开宏BSP_TYPE_FTU。如果是DTU,打开宏BSP_TYPE_DTU。两者只能选其一,不能同时打开。
  26. #define BSP_TYPE_FTU
  27. //#define BSP_TYPE_DTU
  28. //#define VER_NUM 0x00010205 // 版本号
  29. //#define VER_TIME "2019-02-09 13:12:26" // 程序生成时间
  30. #define PROTECT_AC_ADJUST //保护电流校准
  31. #define EQUIP_NAME_STRING "OLE-DFTU" // 装置名称
  32. #define EQUIP_TYPE_STRING "OLE-DFTU" // 装置类型
  33. #define KO_FILE_NAME "/app/dtu_t536"
  34. #define KO_FILE_NAME_1 "dtu_t536"
  35. //----------------------------- 设备架构 ---------------------------
  36. #define EQU_SLOT_NUM_MAX 16
  37. #define EQU_SLOT_MAIN 0 // 主板
  38. #define EQU_SLOT_KZ 1 // 控制板
  39. #define EQU_SLOT_HMI 2 // 面板
  40. #define EQU_SLOT_AC_BEGIN 1 // 采样板起始槽位
  41. #define EQU_SLOT_AC_NUM 1 // 一个装置支持AC板的最大槽数。
  42. #define EQU_SLOT_AC_CHN 16 // 每个槽中支持的最大AC通道数
  43. #define EQU_DB_YX_NUM 32 // 数据总线长度
  44. //----------------------------- 线路开关 ---------------------------
  45. #define SWITCH_NUM_MAX 6 // 开关数量,本装置实际支持的开关数,不包含级联部分。
  46. #define SWITCH_NUM_EXT 31 // 扩展开关数量,后面部分供级联用。
  47. #define SWITCH_NUM_EXT_PUB 32 // 扩展开关数量加公共部分,后面部分供级联用。此值不能超过32
  48. //----------------------------- 设备级联 ---------------------------
  49. #ifdef FUN_NETWORK_ADD40
  50. #define CFG_LINK_104_NUM 48 // 104级联数目
  51. #else
  52. #define CFG_LINK_104_NUM 8 // 104级联数目
  53. #endif
  54. #define CFG_LINK_101_NUM 6 // 101级联数目
  55. #define CFG_LONK_EQU_SOE_NUM 10 // 级联装置保存SOE数量
  56. //----------------------------- CPU主时钟 ---------------------------
  57. #define CFG_EXT_OSC_CLK 50000000 //外部晶体频率
  58. #define CFG_CPU_CLK 250000000 //CPU时钟根据外部晶体频率和系统配置算出来
  59. #define CFG_VECTOR_ADDRESS 0x40000000
  60. //----------------------------- 中断级别 ---------------------------
  61. //MCF54418用3bits表示中断级别(LEVEL),其中0表示不产生中断,7表示不可屏蔽中断。
  62. //数字越大,中断优先级越高。由于我们将来有可能在一颗CPU上同时运行保护和人机功能,
  63. //所以我们将中断分为两个部分:实时(保护)和非实时(人机)。中断级别1~3分配给非实时部分,
  64. //4~6分配给实时部分。在原Linux中关中断时只屏蔽中断1~3,不屏蔽4~6。
  65. //MCF54418有三个中断控制器INTC0、INTC1、INTC2,每个中断控制器有64个中断源。在设置为相同
  66. //中断级别的情况下,INTC0的优先级最高,INTC2最低;在相同的中断控制器中,数值大的优先级高,
  67. //数值小的优先级低: 63最高,0最低。
  68. //NET1: INTC0(49~61)
  69. //NET0: INTC0(36~48)
  70. //DTM(0~3): INTC0(32~35)
  71. //UART(0~3): INTC0(26~29)
  72. //DMA INTC0(8~24)
  73. //EPORT INTC0(1~7)
  74. //UART(4~9): INTC1(48~53)
  75. //CAN1: INTC1(04~07)
  76. //CAN0: INTC1(00~03)
  77. //PIT(0~3): INTC2(13~16)
  78. //实时
  79. #define CFG_INT_LEVEL_DMA 6 // 采样DMA中断
  80. #define CFG_INT_LEVEL_PIT 6 // PIT3,156US
  81. #define CFG_INT_LEVEL_CLOCK 5 // GPS对时,ms定时器
  82. #define CFG_INT_LEVEL_FREQ 5 // 频率测量
  83. #define CFG_INT_LEVEL_CAN 5 // CAN总线
  84. #define CFG_INT_LEVEL_5MS 4 // 保护中断,PIT2,5ms,保护中断在特定的情况下持续时间太长,所以优先级不能高于clock和测频。
  85. //非实时。级别相同的,依MCF54418的规则,排前面的优先级更高。
  86. //非实时中断,如果没有指定优先级,在request_irq函数中将默认指定为2。
  87. #define CFG_INT_LEVEL_UART 3 // 2个外扩485,一个调试UART、一个打印UART、一个面板通讯485.
  88. #define CFG_INT_LEVEL_DTIM_KERNEL 2 // LINUX 内核 DTIM
  89. #define CFG_INT_LEVEL_ETHERNET 1 // 2个ETHERNET口
  90. //----------------------------- 外部中断 ---------------------------
  91. #define CFG_EPORT_VECTOR_BEGIN 64
  92. //IRQ1,GPS信号输入管脚,非中断
  93. #define CFG_INT_VECTOR_IRQ1 (CFG_EPORT_VECTOR_BEGIN + 1)
  94. //IRQ2,INT_B,DP83849
  95. #define CFG_INT_VECTOR_NET_0 (CFG_EPORT_VECTOR_BEGIN + 2)
  96. //IRQ3,INT_A,DP83849
  97. #define CFG_INT_VECTOR_NET_1 (CFG_EPORT_VECTOR_BEGIN + 3)
  98. //IRQ4,DREQ0
  99. #define CFG_INT_VECTOR_IRQ4 (CFG_EPORT_VECTOR_BEGIN + 4)
  100. //IRQ6,无
  101. #define CFG_INT_VECTOR_IRQ6 (CFG_EPORT_VECTOR_BEGIN + 6)
  102. //IRQ7 ,无
  103. #define CFG_INT_VECTOR_IRQ7 (CFG_EPORT_VECTOR_BEGIN + 7)
  104. //-------------------------------- FlexBus -----------------------------------
  105. //目前假设CPU最高频率为250MHZ,那么FlexBus的时钟频率为62.5MHZ,周期16ns。
  106. //默认情况下每个占用256M地址空间,基址为片选索引乘256M。
  107. //CS0,NOR FLASH,在U-BOOT中设置,kernel中不重新设置。
  108. //CS1,外部AD1
  109. //-------------------------------- 网络 --------------------------------
  110. //
  111. #define CFG_ETH_MAX_PHY 4
  112. #if defined NET3_IP5
  113. #define CFG_ETH_MAX_LOGIC 5 //逻辑网卡最大数量
  114. #elif defined NET4_IP5
  115. #define CFG_ETH_MAX_LOGIC 5 //逻辑网卡最大数量
  116. #else
  117. #define CFG_ETH_MAX_LOGIC 3 //逻辑网卡最大数量
  118. #endif
  119. //-------------------------------- ADC --------------------------------
  120. //
  121. //#define __MINI_DTU__ //小型化DTU
  122. #ifdef __MINI_DTU__
  123. #define BRAM_CTRL_0 0x80000000
  124. #else
  125. #define BRAM_CTRL_0 0x40000000
  126. #endif
  127. #define MEM_LEN (1024 * 4)
  128. #define DIN_OFFSET 0x9000
  129. #define WRITE_PTR_OFFSET 0x0FF0
  130. #define BRAM_LEN 0x1000
  131. #define FREN1_CNT_OFFSET 0x0FF4
  132. #define ADC_FOLLOW_FREN1_OFFSET 0x0000
  133. #define ADC_WRITE_PTR_OFFSET 0x0FF0
  134. #define ADC_CH01_OFFSET 0x1000
  135. #define ADC_CH23_OFFSET 0x2000
  136. #define ADC_CH45_OFFSET 0x3000
  137. #define ADC_CH67_OFFSET 0x4000
  138. #define ADC_CH89_OFFSET 0x5000
  139. #define ADC_CHAB_OFFSET 0x6000
  140. #define ADC_CHCD_OFFSET 0x7000
  141. #define ADC_CHEF_OFFSET 0x8000
  142. #define CFG_ADC_BASE_ADDR 0x1000
  143. #define BRAM_CTRL_MEM_SIZE 0x1000
  144. //FUXI 共享内存地址,请参看《fuxi核间通信结构体定义.doc》
  145. //1. linux核->裸核空间定义如下:
  146. #define SHM_ADDR_D_FREQ_TR 0x00000000 //频率跟踪
  147. #define SHM_ADDR_D_RFV_1 0x00000040 //第一片AD7616参考电压范围
  148. #define SHM_ADDR_D_RFV_2 0x00000080 //第二片AD7616参考电压范围
  149. #define SHM_ADDR_D_RFV_3 0x000000C0 //第三片AD7616参考电压范围
  150. #define SHM_ADDR_D_RFV_4 0x00000100 //第四片AD7616参考电压范围
  151. #define SHM_ADDR_D_TIME 0x00001000 //系统时间 linux向裸核校时
  152. #define SHM_ADDR_D_HB 0x00001040 //心跳
  153. //2. 裸核->linux核空间定义如下:
  154. #define SHM_ADDR_U_TIME 0x00001000 //系统时间 裸核向linux校时
  155. #define SHM_ADDR_U_FREQ 0x00001040 //频率
  156. #define SHM_ADDR_U_DC 0x00001080 //直流
  157. #define SHM_ADDR_U_WP 0x000010C0 //AD7616采样点写指针
  158. #define SHM_ADDR_U_WR 0x00001100 //打印信息读写指针
  159. #define SHM_ADDR_U_VER 0x00001140 //裸核版本信息
  160. #define SHM_ADDR_U_PRO_W_F 0x00001180 //裸核程序空间写完标志结构体
  161. #define SHM_ADDR_U_DEBUG_MSG 0x00005000 //打印缓冲区
  162. #define SHM_ADDR_U_E907_PRO 0x00005200 //存放裸核的程序
  163. #define SHM_ADDR_U_ADC_1 0x00040000 //第一片AD7616 采样数据区
  164. #define SHM_ADDR_U_ADC_2 0x00060000 //第二片AD7616 采样数据区
  165. #define SHM_ADDR_U_ADC_3 0x00080000 //第三片AD7616 采样数据区
  166. #define SHM_ADDR_U_ADC_4 0x000A0000 //第四片AD7616 采样数据区
  167. #define SHM_ADC_SIZE (SHM_ADDR_U_ADC_2 - SHM_ADDR_U_ADC_1)
  168. //-------------------------------- ADC --------------------------------
  169. //
  170. #define CFG_ADC_DOTS_PER_PERIOD 32 // 每个周波的采样点数。
  171. #define CFG_ADC_DOTS_PER_CHANNEL 256 // 每个ADC通道保存的采样点数(8个周波)。
  172. #define CFG_ADC_DOTS_MASK (CFG_ADC_DOTS_PER_CHANNEL-1)// 每个ADC通道保存的采样点数的MASK。
  173. #define CFG_ADC_BUF_MASK (~(CFG_ADC_DOTS_PER_CHANNEL*2)) // 提供给MAC设置用(short->byte*2)
  174. #define CFG_ADC_OS_BASE 0 // 过采样基数
  175. #define CFG_ADC_OS_NUM (1<<CFG_ADC_OS_BASE) // 过采样倍数
  176. #define CFG_ADC_CHANNEL 32 // ADC采样的通道数
  177. #define CFG_ADC_CHANNEL_DC 1 // 直流ADC通道数量
  178. #define CFG_ADC_CHANNEL_ALL (CFG_ADC_CHANNEL + CFG_ADC_CHANNEL_DC) // 所有通道数
  179. #define CFG_ADC_CHANNEL_ZERO (CFG_ADC_CHANNEL_ALL) // 全0通道索引
  180. #define CFG_ADC_DMA_CHANNEL 8 // ADC占用4个DMA通道8~11
  181. #define CFG_ADC_DMA_CHANNEL_REC (CFG_ADC_DMA_CHANNEL+EQU_SLOT_AC_NUM) // ADC录波占用1个DMA通道.
  182. #define CFG_ADC_DMA_VECTOR_REC (64+16+EQU_SLOT_AC_NUM) // DMA通道8对应INTC0的中断向量16.
  183. //-----------------------------------------------------------------------------
  184. //-------------------------------- PIT Timers --------------------------------
  185. #define CFG_PIT_KERNEL 0 // linux 内核调度定时器
  186. #define CFG_PIT_1 1 // CAN 1ms定时器 (优先级高于linux kernel)
  187. #define CFG_PIT_5MS 2 // 5ms保护中断
  188. #define CFG_PIT_SAMPLE 3 // 156us采样中断
  189. #define CFG_PIT_VECTOR_BEGIN (192 + 13) //中断向量
  190. #define CFG_PIT_CD_BEGIN (32)
  191. /*PMR寄存器值PMRn[PM] = (T * fsys/2) / 2^PCSRn[PRE] - 1*/
  192. //数字大的PIT中断优先级高
  193. #define PIT_PERIOD_156US ((CFG_CPU_CLK/2)/6400/1 - 1) // 1分频
  194. #define PIT_PERIOD_5MS ((CFG_CPU_CLK/2)/200/16 - 1) // 16分频
  195. //-------------------------------- DMA Timers --------------------------------
  196. #ifdef __DFTU_V4_HV0102__ // sunxi 20180724 第二版
  197. #define CFG_DTIM_FREQ0 2 // 测频0
  198. #else // sunxi 20180724 第一版
  199. #define CFG_DTIM_FREQ0 0 // 测频0
  200. #endif
  201. #define CFG_DTIM_FREQ1 3 //测频1
  202. #define CFG_DTIM_GPS_CAP 1 // GPS对时,捕获(与微秒定时器共用)
  203. #define CFG_DTIM_GPS_REF 0 // GPS对时,参考输出
  204. #define CFG_DTIM_USTIMER (CFG_DTIM_GPS_CAP) // 微秒定时器(与GPS对时共用)
  205. #define CFG_DTIM_VECTOR_BEGIN (64 + 32) //中断向量
  206. //-------------------------------- 测频 ----------------------------------------
  207. #define CFG_FREQ_NUM 2 //一路测频
  208. //-------------------------------- UART ----------------------------------------
  209. #define CFG_UART_INT_VECTOR(x) ((x<4)? (90+x):(176+x))
  210. /*
  211. FUXI:
  212. UART0 -> /dev/ttyS0
  213. UART1 -> /dev/ttyS1
  214. CFG_UART_232_0 -> /dev/ttyS2
  215. CFG_UART_232_1 -> /dev/ttyS3
  216. CFG_UART_485_0 -> /dev/ttyS4
  217. CFG_UART_485_1 -> /dev/ttyS5
  218. CFG_UART_485_2 -> /dev/ttyS8
  219. ...
  220. */
  221. //TODO. noted by sunxi: 根据实际情况,定义串口号
  222. #define CFG_UART_RT_CONSOLE 0 //内部已实现console功能
  223. #define CFG_UART_HMI 1 //
  224. #define CFG_UART_232_0 2 //232_2
  225. #define CFG_UART_232_1 3 //232_3
  226. #define CFG_UART_485_0 4 //485_4
  227. #define CFG_UART_485_1 5 //485_5
  228. #define CFG_UART_485_2 8 //485_8
  229. #define CFG_UART_485_3 7
  230. #define CFG_UART_GPRS_IN 10 //此UART物理上不存在,虚拟给内部GPRS用
  231. #define CFG_UART_GPS (CFG_UART_232_0)//暂定
  232. #define CFG_UART_CHIP_S1 11 //此UART物理上不存在,虚拟给南网加密芯片用
  233. #define CFG_UART_NUM_MAX 11 // 最大UART数量
  234. #ifdef __GOOSE_USING_DOUBLE_ETH__
  235. #define CFG_ETH_NUM_MAX 3 //网络数量
  236. #else
  237. #define CFG_ETH_NUM_MAX 2
  238. #endif
  239. //-------------------------------- CAN ----------------------------------------
  240. #define CFG_CAN_VECTOR_BEGIN (128 + 0) //中断向量
  241. //-------------------------------- DMA ----------------------------------------
  242. #define CFG_DMA_VECTOR_BEGIN (64 + 8) //中断向量
  243. //-------------------------------- I2C ----------------------------------------
  244. #if 1
  245. /* I2C CMODULE 2 */
  246. #define MCF_I2AR *(volatile unsigned char *)(0xEC010000) /* I2C Address */
  247. #define MCF_I2FDR *(volatile unsigned char *)(0xEC010004) /* I2C Frequency Divider */
  248. #define MCF_I2CR *(volatile unsigned char *)(0xEC010008) /* I2C Control */
  249. #define MCF_I2SR *(volatile unsigned char *)(0xEC01000C) /* I2C Status */
  250. #define MCF_I2DR *(volatile unsigned char *)(0xEC010010) /* I2C Data I/O */
  251. #else
  252. /* I2C MODULE 0 */
  253. #define MCF_I2AR *(volatile unsigned char *)(0xFC058000) /* I2C Address */
  254. #define MCF_I2FDR *(volatile unsigned char *)(0xFC058004) /* I2C Frequency Divider */
  255. #define MCF_I2CR *(volatile unsigned char *)(0xFC058008) /* I2C Control */
  256. #define MCF_I2SR *(volatile unsigned char *)(0xFC05800C) /* I2C Status */
  257. #define MCF_I2DR *(volatile unsigned char *)(0xFC058010) /* I2C Data I/O */
  258. #endif
  259. //-------------------------------- E2PROM(24LC256) -----------------------------
  260. #ifdef SOE_PARA_ALL_SAVE
  261. #define CFG_E2PROM_SIZE (256*1024)
  262. #else
  263. #define CFG_E2PROM_SIZE (128*1024)
  264. #endif
  265. #define CFG_E2PROM_PAGE_SIZE 64
  266. //-------------------------------- RTC(DS1338) ---------------------------------
  267. #define CFG_RTC_BUFFER_SIZE (16)
  268. #define CFG_RTC_NVRAM_SIZE (1)
  269. //-------------------------------- DSPI ----------------------------------------
  270. #define CFG_DSPI_INDEX 0
  271. //-------------------------------- FLASH(AT45DB321) ----------------------------
  272. #define CFG_FLASH_PAGE_SIZE 512 //页面大小
  273. #define CFG_FLASH_PAGE_NUM 8192 //页面数
  274. #define CFG_FLASH_SIZE (CFG_FLASH_PAGE_SIZE*CFG_FLASH_PAGE_NUM)//FLASH的大小
  275. //-------------------------------- GPIO --------------------------------------
  276. /*
  277. // 核心板GPIO配置
  278. NOR_WP:MII0_COL/RMII1_MDC/ULPI_STP/GPIOJ0
  279. WDOG:DSPI0_PCS0/SS_B/I2C3_SDA/SDHC_DAT3/GPIOD7
  280. RUN:SDHC_DAT1/PWMA2/DSPI1_PCS1/GPIOF0
  281. ERR:SDHC_DAT2/PWMB1/DSPI1_PCS2/GPIOF1
  282. PWM1:SDHC_CMD/PWMB0/DSPI1_SIN/GPIOG6
  283. PWM2:SDHC_CLK/PWMA0/DSPI1_SCK/GPIOG5
  284. PWM3:SDHC_DAT0/PWMB2/DSPI1_SOUT/GPIOG7
  285. PWM4:SDHC_DAT3/PWMA1/DSPI1_PCS0/GPIOF2
  286. DSPIO_PCS1:DSPI0_PCS1/SBF_CS_B/GPIOC0
  287. GPIO_0:SSI0_MCLK/SSI_CLKIN/SIM1_CLK/GPIOH4
  288. GPIO_1:SIM0_XMT/PWM_FAULT2/SDHC_DAT7/GPIOG4/RGPIO
  289. GPIO_2:SIM0_VEN/PWM_FAULT0/GPIOG3/RGPIO
  290. GPIO_3:SIM0_CLK/PWM_FAULT1/SDHC_DAT4/GPIOG0/RGPIO
  291. GPIO_4:SIM0_RST/PWM_FORCE/SDHC_DAT6/GPIOG2/RGPIO
  292. GPIO_5:SIM0_PD/PWM_SYNC/SDHC_DAT5/GPIOG1/RGPIO
  293. GPIO_6:DDATA[0]/GPIOI6
  294. GPIO_7:DDATA[1]/GPIOI7
  295. GPIO_8:DDATA[2]/GPIOH0
  296. GPIO_9:DDATA[3]/GPIOH1
  297. GPIO_10:MII0_TXER/RMII1_MDIO/ULPI_DATA4/GPIOK7
  298. */
  299. //看门狗/运行灯(看门狗边沿有效,运行灯低有效)
  300. #define GPIO_WATCHDOG_BIT 7
  301. #define GPIO_WATCHDOG_LOW() GPIO_D_L(GPIO_WATCHDOG_BIT)
  302. #define GPIO_WATCHDOG_HIGH() GPIO_D_H(GPIO_WATCHDOG_BIT)
  303. #define GPIO_WATCHDOG_STATUS() GPIO_D_S(GPIO_WATCHDOG_BIT)
  304. #define GPIO_WATCHDOG_INIT() GPIO_D_L(GPIO_WATCHDOG_BIT); \
  305. GPIO_D_O(GPIO_WATCHDOG_BIT)
  306. //NOR flash写保护(低禁止写) J0
  307. #define GPIO_WP_NORFLASH_BIT 0
  308. #define GPIO_WP_NORFLASH_LOW() GPIO_J_L(GPIO_WP_NORFLASH_BIT)
  309. #define GPIO_WP_NORFLASH_HIGH() GPIO_J_H(GPIO_WP_NORFLASH_BIT)
  310. #define GPIO_WP_NORFLASH_INIT() GPIO_J_L(GPIO_WP_NORFLASH_BIT); \
  311. GPIO_J_O(GPIO_WP_NORFLASH_BIT)
  312. #if 0
  313. //GPIO_DSPI_CS_FLASH = C0
  314. #define GPIO_DSPI_CS_FLASH_BIT 0
  315. #define GPIO_DSPI_CS_FLASH_LOW() GPIO_C_L(GPIO_DSPI_CS_FLASH_BIT)
  316. #define GPIO_DSPI_CS_FLASH_HIGH() GPIO_C_H(GPIO_DSPI_CS_FLASH_BIT)
  317. #define GPIO_DSPI_CS_FLASH_INIT() GPIO_DSPI_CS_FLASH_HIGH();\
  318. GPIO_C_O(GPIO_DSPI_CS_FLASH_BIT)
  319. #else
  320. //ESAM加密芯片
  321. //DSPI0_CTRN:IRQ7:C6(电源控制)
  322. //#define GPIO_ESAM_POWER_BIT 6
  323. #define GPIO_ESAM_POWER_LOW() esam_power_ctrl(0)//GPIO_C_L(GPIO_ESAM_POWER_BIT)
  324. #define GPIO_ESAM_POWER_HIGH() esam_power_ctrl(1)//GPIO_C_H(GPIO_ESAM_POWER_BIT)
  325. //#define GPIO_ESAM_POWER_INIT() GPIO_C_L(GPIO_ESAM_POWER_BIT);GPIO_C_O(GPIO_ESAM_POWER_BIT)
  326. //GPIO_DSPI_CS_ESAM = C0(片选控制)
  327. //#define GPIO_DSPI_CS_ESAM_BIT 0
  328. //#define GPIO_DSPI_CS_ESAM_LOW() GPIO_C_L(GPIO_DSPI_CS_ESAM_BIT)
  329. //#define GPIO_DSPI_CS_ESAM_HIGH() GPIO_C_H(GPIO_DSPI_CS_ESAM_BIT)
  330. //#define GPIO_DSPI_CS_ESAM_INIT() GPIO_DSPI_CS_ESAM_HIGH();GPIO_C_O(GPIO_DSPI_CS_ESAM_BIT)
  331. #endif
  332. //GPS_对时,使用两个管脚,一个用作捕获,一个用作检查检查管脚电平。
  333. //这是因为用作捕获的管脚,在MCF5441X上没有办法取得管脚的状态
  334. //GPS_INT1 = IRQ1/PC1
  335. //GPS_INT2 = T3IN
  336. #define GPIO_GPS_INT_BIT 1
  337. #define GPIO_GPS_INT_STATUS() GPIO_C_S(GPIO_GPS_INT_BIT)
  338. #define GPIO_GPS_INT_INIT() if(0)//do{ MCF_PAD_PAR_TIMER |= (3<<(CFG_DTIM_GPS_CAP*2));}while(0)
  339. //GPS对时输出(给各个分板)
  340. #define GPIO_GPS_LOW() {}
  341. #define GPIO_GPS_HIGH() {}
  342. #define GPIO_GPS_INIT() {}
  343. //外部ADC
  344. //ADC_BUSY1:IRQ4:C4
  345. #define GPIO_ADC_BUSY1_BIT 4
  346. #define GPIO_ADC_BUSY1_STATUS() GPIO_C_S(GPIO_ADC_BUSY1_BIT)
  347. #define GPIO_ADC_BUSY1_INIT() GPIO_C_I(GPIO_ADC_BUSY1_BIT)
  348. //ADC_RESET:GPIO_1:G4
  349. #define GPIO_ADC_RESET_BIT 4
  350. #define GPIO_ADC_RESET_LOW() GPIO_G_L(GPIO_ADC_RESET_BIT)
  351. #define GPIO_ADC_RESET_HIGH() GPIO_G_H(GPIO_ADC_RESET_BIT)
  352. #define GPIO_ADC_RESET_INIT() GPIO_G_L(GPIO_ADC_RESET_BIT); \
  353. GPIO_G_O(GPIO_ADC_RESET_BIT)
  354. //ADC_CONVST:GPIO_2:G3
  355. #define GPIO_ADC_CONVST_BIT 3
  356. #define GPIO_ADC_CONVST_LOW() GPIO_G_L(GPIO_ADC_CONVST_BIT)
  357. #define GPIO_ADC_CONVST_HIGH() GPIO_G_H(GPIO_ADC_CONVST_BIT)
  358. #define GPIO_ADC_CONVST_INIT() GPIO_G_L(GPIO_ADC_CONVST_BIT); \
  359. GPIO_G_O(GPIO_ADC_CONVST_BIT)
  360. //LED
  361. //GPIO_LED_RUN F0
  362. #define GPIO_LED_RUN_BIT 0
  363. #define GPIO_LED_RUN_ON() GPIO_F_L(GPIO_LED_RUN_BIT)
  364. #define GPIO_LED_RUN_OFF() GPIO_F_H(GPIO_LED_RUN_BIT)
  365. #define GPIO_LED_RUN_STATUS() GPIO_F_S(GPIO_LED_RUN_BIT)
  366. #define GPIO_LED_RUN_INIT() GPIO_F_H(GPIO_LED_RUN_BIT); \
  367. GPIO_F_O(GPIO_LED_RUN_BIT)
  368. //GIIO_LED_ERR F1
  369. #define GPIO_LED_ERR_BIT 1
  370. #define GPIO_LED_ERR_ON() GPIO_F_L(GPIO_LED_ERR_BIT)
  371. #define GPIO_LED_ERR_OFF() GPIO_F_H(GPIO_LED_ERR_BIT)
  372. #define GPIO_LED_ERR_STATUS() GPIO_F_S(GPIO_LED_ERR_BIT)
  373. #define GPIO_LED_ERR_INIT() GPIO_F_H(GPIO_LED_ERR_BIT); \
  374. GPIO_F_O(GPIO_LED_ERR_BIT)
  375. #ifdef __DFTU_V4_HV0102__ // sunxi 20180724 第二版
  376. //GPIO_LED_COMM 去掉了
  377. #define GPIO_LED_COMM_ON() do{}while(0)
  378. #define GPIO_LED_COMM_OFF() do{}while(0)
  379. #define GPIO_LED_COMM_STATUS() 0
  380. #define GPIO_LED_COMM_INIT() do{}while(0)
  381. //GPIO_LED_ACT 去掉了
  382. #define GPIO_LED_ACT_ON() do{}while(0)
  383. #define GPIO_LED_ACT_OFF() do{}while(0)
  384. #define GPIO_LED_ACT_STATUS() 0
  385. #define GPIO_LED_ACT_INIT() do{}while(0)
  386. #else // sunxi 20180724 第一版
  387. //GPIO_LED_COMM H4
  388. #define GPIO_LED_COMM_BIT 4
  389. #define GPIO_LED_COMM_ON() GPIO_H_L(GPIO_LED_COMM_BIT)
  390. #define GPIO_LED_COMM_OFF() GPIO_H_H(GPIO_LED_COMM_BIT)
  391. #define GPIO_LED_COMM_STATUS() GPIO_H_S(GPIO_LED_COMM_BIT)
  392. #define GPIO_LED_COMM_INIT() GPIO_H_H(GPIO_LED_COMM_BIT); \
  393. GPIO_H_O(GPIO_LED_COMM_BIT)
  394. //GPIO_LED_ACT G0
  395. #define GPIO_LED_ACT_BIT 0
  396. #define GPIO_LED_ACT_ON() GPIO_G_L(GPIO_LED_ACT_BIT)
  397. #define GPIO_LED_ACT_OFF() GPIO_G_H(GPIO_LED_ACT_BIT)
  398. #define GPIO_LED_ACT_STATUS() GPIO_G_S(GPIO_LED_ACT_BIT)
  399. #define GPIO_LED_ACT_INIT() GPIO_G_H(GPIO_LED_ACT_BIT); \
  400. GPIO_G_O(GPIO_LED_ACT_BIT)
  401. #endif
  402. //开出(16路,低有效)
  403. //KOUT0 I6
  404. #define GPIO_KOUT0_BIT 6
  405. #define GPIO_KOUT0_ON() GPIO_I_L(GPIO_KOUT0_BIT)
  406. #define GPIO_KOUT0_OFF() GPIO_I_H(GPIO_KOUT0_BIT)
  407. #define GPIO_KOUT0_INIT() GPIO_I_H(GPIO_KOUT0_BIT); \
  408. GPIO_I_O(GPIO_KOUT0_BIT)
  409. //KOUT1 I7
  410. #define GPIO_KOUT1_BIT 7
  411. #define GPIO_KOUT1_ON() GPIO_I_L(GPIO_KOUT1_BIT)
  412. #define GPIO_KOUT1_OFF() GPIO_I_H(GPIO_KOUT1_BIT)
  413. #define GPIO_KOUT1_INIT() GPIO_I_H(GPIO_KOUT1_BIT); \
  414. GPIO_I_O(GPIO_KOUT1_BIT)
  415. //KOUT2 H0
  416. #define GPIO_KOUT2_BIT 0
  417. #define GPIO_KOUT2_ON() GPIO_H_L(GPIO_KOUT2_BIT)
  418. #define GPIO_KOUT2_OFF() GPIO_H_H(GPIO_KOUT2_BIT)
  419. #define GPIO_KOUT2_INIT() GPIO_H_H(GPIO_KOUT2_BIT); \
  420. GPIO_H_O(GPIO_KOUT2_BIT)
  421. //KOUT3 H1
  422. #define GPIO_KOUT3_BIT 1
  423. #define GPIO_KOUT3_ON() GPIO_H_L(GPIO_KOUT3_BIT)
  424. #define GPIO_KOUT3_OFF() GPIO_H_H(GPIO_KOUT3_BIT)
  425. #define GPIO_KOUT3_INIT() GPIO_H_H(GPIO_KOUT3_BIT); \
  426. GPIO_H_O(GPIO_KOUT3_BIT)
  427. //KOUT4 G2
  428. #define GPIO_KOUT4_BIT 2
  429. #define GPIO_KOUT4_ON() GPIO_G_L(GPIO_KOUT4_BIT)
  430. #define GPIO_KOUT4_OFF() GPIO_G_H(GPIO_KOUT4_BIT)
  431. #define GPIO_KOUT4_INIT() GPIO_G_H(GPIO_KOUT4_BIT); \
  432. GPIO_G_O(GPIO_KOUT4_BIT)
  433. //KOUT5 G1
  434. #define GPIO_KOUT5_BIT 1
  435. #define GPIO_KOUT5_ON() GPIO_G_L(GPIO_KOUT5_BIT)
  436. #define GPIO_KOUT5_OFF() GPIO_G_H(GPIO_KOUT5_BIT)
  437. #define GPIO_KOUT5_INIT() GPIO_G_H(GPIO_KOUT5_BIT); \
  438. GPIO_G_O(GPIO_KOUT5_BIT)
  439. #ifdef __DFTU_V4_HV0102__ // sunxi 20180724 第二版
  440. //KOUT6 H4
  441. #define GPIO_KOUT6_BIT 4
  442. #define GPIO_KOUT6_ON() GPIO_H_L(GPIO_KOUT6_BIT)
  443. #define GPIO_KOUT6_OFF() GPIO_H_H(GPIO_KOUT6_BIT)
  444. #define GPIO_KOUT6_INIT() GPIO_H_H(GPIO_KOUT6_BIT); \
  445. GPIO_H_O(GPIO_KOUT6_BIT);
  446. //KOUT7 G0
  447. #define GPIO_KOUT7_BIT 0
  448. #define GPIO_KOUT7_ON() GPIO_G_L(GPIO_KOUT7_BIT)
  449. #define GPIO_KOUT7_OFF() GPIO_G_H(GPIO_KOUT7_BIT)
  450. #define GPIO_KOUT7_INIT() GPIO_G_H(GPIO_KOUT7_BIT); \
  451. GPIO_G_O(GPIO_KOUT7_BIT);
  452. #else // sunxi 20180724 第一版
  453. //KOUT6 E5
  454. #define GPIO_KOUT6_BIT 5
  455. #define GPIO_KOUT6_ON() GPIO_E_L(GPIO_KOUT6_BIT)
  456. #define GPIO_KOUT6_OFF() GPIO_E_H(GPIO_KOUT6_BIT)
  457. #define GPIO_KOUT6_INIT() GPIO_E_H(GPIO_KOUT6_BIT); \
  458. GPIO_E_O(GPIO_KOUT6_BIT); \
  459. {MCF_GPIO_PAR_UART2 =(MCF_GPIO_PAR_UART2 & MCF_GPIO_PAR_UART2_U2RTS_MASK);}while(0)
  460. #if 0
  461. //KOUT7 K7
  462. #define GPIO_KOUT7_BIT 7
  463. #define GPIO_KOUT7_ON() GPIO_K_L(GPIO_KOUT7_BIT)
  464. #define GPIO_KOUT7_OFF() GPIO_K_H(GPIO_KOUT7_BIT)
  465. #define GPIO_KOUT7_INIT() GPIO_K_H(GPIO_KOUT7_BIT); \
  466. GPIO_K_O(GPIO_KOUT7_BIT); \
  467. do{ MCF_PAD_PAR_FEC = 0X05;}while(0)
  468. #else
  469. //KOUT7 G0
  470. #define GPIO_KOUT7_BIT 0
  471. #define GPIO_KOUT7_ON() GPIO_G_L(GPIO_KOUT7_BIT)
  472. #define GPIO_KOUT7_OFF() GPIO_G_H(GPIO_KOUT7_BIT)
  473. #define GPIO_KOUT7_INIT() GPIO_G_H(GPIO_KOUT7_BIT); \
  474. GPIO_G_O(GPIO_KOUT7_BIT);
  475. #endif
  476. #endif
  477. //PWM0 G6
  478. #define GPIO_KOUT_PWM0_BIT 6
  479. #define GPIO_KOUT_PWM0_ON() GPIO_G_L(GPIO_KOUT_PWM0_BIT)
  480. #define GPIO_KOUT_PWM0_OFF() GPIO_G_H(GPIO_KOUT_PWM0_BIT)
  481. #define GPIO_KOUT_PWM0_INIT() GPIO_G_H(GPIO_KOUT_PWM0_BIT); \
  482. GPIO_G_O(GPIO_KOUT_PWM0_BIT)
  483. //PWM1 G5
  484. #define GPIO_KOUT_PWM1_BIT 5
  485. #define GPIO_KOUT_PWM1_ON() GPIO_G_L(GPIO_KOUT_PWM1_BIT)
  486. #define GPIO_KOUT_PWM1_OFF() GPIO_G_H(GPIO_KOUT_PWM1_BIT)
  487. #define GPIO_KOUT_PWM1_INIT() GPIO_G_H(GPIO_KOUT_PWM1_BIT); \
  488. GPIO_G_O(GPIO_KOUT_PWM1_BIT)
  489. //PWM2 G7
  490. #define GPIO_KOUT_PWM2_BIT 7
  491. #define GPIO_KOUT_PWM2_ON() GPIO_G_L(GPIO_KOUT_PWM2_BIT)
  492. #define GPIO_KOUT_PWM2_OFF() GPIO_G_H(GPIO_KOUT_PWM2_BIT)
  493. #define GPIO_KOUT_PWM2_INIT() GPIO_G_H(GPIO_KOUT_PWM2_BIT); \
  494. GPIO_G_O(GPIO_KOUT_PWM2_BIT)
  495. //PWM3 F2
  496. #define GPIO_KOUT_PWM3_BIT 2
  497. #define GPIO_KOUT_PWM3_ON() GPIO_F_L(GPIO_KOUT_PWM3_BIT)
  498. #define GPIO_KOUT_PWM3_OFF() GPIO_F_H(GPIO_KOUT_PWM3_BIT)
  499. #define GPIO_KOUT_PWM3_INIT() GPIO_F_H(GPIO_KOUT_PWM3_BIT); \
  500. GPIO_F_O(GPIO_KOUT_PWM3_BIT)
  501. //KOUT_EN0 C5
  502. #define GPIO_KOUT_EN0_BIT 5
  503. #define GPIO_KOUT_EN0_ON() GPIO_C_H(GPIO_KOUT_EN0_BIT)
  504. #define GPIO_KOUT_EN0_OFF() GPIO_C_L(GPIO_KOUT_EN0_BIT)
  505. #define GPIO_KOUT_EN0_INIT() GPIO_C_L(GPIO_KOUT_EN0_BIT); \
  506. GPIO_C_O(GPIO_KOUT_EN0_BIT)
  507. //KOUT_EN1 T2IN
  508. #ifdef __DFTU_V4_HV0102__ // sunxi 20180724 第二版 H7
  509. #define GPIO_KOUT_EN1_BIT 7
  510. #define GPIO_KOUT_EN1_ON() GPIO_K_H(GPIO_KOUT_EN1_BIT)
  511. #define GPIO_KOUT_EN1_OFF() GPIO_K_L(GPIO_KOUT_EN1_BIT)
  512. #define GPIO_KOUT_EN1_INIT() GPIO_K_L(GPIO_KOUT_EN1_BIT); \
  513. GPIO_K_O(GPIO_KOUT_EN1_BIT)
  514. #else // sunxi 20180724 第一版 D1
  515. #define GPIO_KOUT_EN1_BIT 1
  516. #define GPIO_KOUT_EN1_ON() GPIO_D_H(GPIO_KOUT_EN1_BIT)
  517. #define GPIO_KOUT_EN1_OFF() GPIO_D_L(GPIO_KOUT_EN1_BIT)
  518. #define GPIO_KOUT_EN1_INIT() GPIO_D_L(GPIO_KOUT_EN1_BIT); \
  519. GPIO_D_O(GPIO_KOUT_EN1_BIT)
  520. #endif
  521. //测试管脚
  522. #if 0
  523. #define MCF_GPIO_PAR_FBCTL_ALE_MASK (0x3F)
  524. #define GPIO_TP1_BIT 7
  525. #define GPIO_TP1_LOW() GPIO_A_L(GPIO_TP1_BIT)
  526. #define GPIO_TP1_HIGH() GPIO_A_H(GPIO_TP1_BIT)
  527. #define GPIO_TP1_STATUS() GPIO_A_S(GPIO_TP1_BIT)
  528. #define GPIO_TP1_INIT() GPIO_A_L(GPIO_TP1_BIT); \
  529. GPIO_A_O(GPIO_TP1_BIT); \
  530. do{ MCF_PAD_PAR_FBCTL &= MCF_GPIO_PAR_FBCTL_ALE_MASK;}while(0)
  531. #define MCF_GPIO_PAR_FBCTL_FBCLK (0x08)
  532. #define GPIO_TP2_BIT 7
  533. #define GPIO_TP2_LOW() GPIO_B_L(GPIO_TP2_BIT)
  534. #define GPIO_TP2_HIGH() GPIO_B_H(GPIO_TP2_BIT)
  535. #define GPIO_TP2_STATUS() GPIO_B_S(GPIO_TP2_BIT)
  536. #define GPIO_TP2_INIT() GPIO_B_L(GPIO_TP2_BIT); \
  537. GPIO_B_O(GPIO_TP2_BIT); \
  538. do{ MCF_PAD_PAR_FBCTL &= ~MCF_GPIO_PAR_FBCTL_FBCLK;}while(0)
  539. #define MCF_GPIO_PAR_BE_BE0_MASK (0xFC)
  540. #define GPIO_TP3_BIT 0
  541. #define GPIO_TP3_LOW() GPIO_A_L(GPIO_TP3_BIT)
  542. #define GPIO_TP3_HIGH() GPIO_A_H(GPIO_TP3_BIT)
  543. #define GPIO_TP3_STATUS() GPIO_A_S(GPIO_TP3_BIT)
  544. #define GPIO_TP3_INIT() GPIO_A_L(GPIO_TP3_BIT); \
  545. GPIO_A_O(GPIO_TP3_BIT); \
  546. do{ MCF_PAD_PAR_BE &= MCF_GPIO_PAR_BE_BE0_MASK;}while(0)
  547. //目前是NF_WP管脚
  548. #define MCF_GPIO_PAR_BE_BE1_MASK (0xF3)
  549. #define GPIO_TP4_BIT 1
  550. #define GPIO_TP4_LOW() GPIO_A_L(GPIO_TP4_BIT)
  551. #define GPIO_TP4_HIGH() GPIO_A_H(GPIO_TP4_BIT)
  552. #define GPIO_TP4_INIT() GPIO_A_L(GPIO_TP4_BIT); \
  553. GPIO_A_O(GPIO_TP4_BIT); \
  554. do{ MCF_PAD_PAR_BE &= MCF_GPIO_PAR_BE_BE1_MASK;}while(0)
  555. #endif
  556. #if 0 //这个管脚目前做事件捕获,不做普通测试管脚了。
  557. #define GPIO_TP9_BIT 7
  558. #define GPIO_TP9_LOW() GPIO_E_L(GPIO_TP9_BIT)
  559. #define GPIO_TP9_HIGH() GPIO_E_H(GPIO_TP9_BIT)
  560. #define GPIO_TP9_STATUS() GPIO_E_S(GPIO_TP9_BIT)
  561. #define GPIO_TP9_INIT() GPIO_E_L(GPIO_TP9_BIT); \
  562. GPIO_E_O(GPIO_TP9_BIT);
  563. #endif
  564. #define MCF_REG08(x) x
  565. #define MCF_REG16(x) x
  566. #define MCF_REG32(x) x
  567. #define CFG_BSP_DEBUG 1
  568. //linux
  569. #define PROC_NAME_BSP_VERSION "bspversion" //Linux bsp version file's name
  570. #define CFG_IOCTL_TYPE 0XF8
  571. #define CFG_IOCTL_NR_CLOCK 0
  572. #define CFG_IOCTL_NR_CAN 32
  573. #endif //_BSPCONFIG_H_