Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Mozi
rt-thread
提交
956664ee
R
rt-thread
项目概览
Mozi
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
956664ee
编写于
5月 14, 2021
作者:
W
Wang-Huachen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
format files in zynqmp-r5-axu4ev bsp
上级
97b6f10a
变更
50
展开全部
隐藏空白更改
内联
并排
Showing
50 changed file
with
5838 addition
and
5838 deletion
+5838
-5838
bsp/zynqmp-r5-axu4ev/applications/SConscript
bsp/zynqmp-r5-axu4ev/applications/SConscript
+1
-1
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps.c
...-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps.c
+131
-131
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps.h
...-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps.h
+67
-67
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_bd.h
...-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_bd.h
+12
-12
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_bdring.c
...4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_bdring.c
+264
-264
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_bdring.h
...4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_bdring.h
+19
-19
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_control.c
...ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_control.c
+455
-455
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_g.c
...5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_g.c
+5
-5
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_hw.c
...-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_hw.c
+17
-17
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_hw.h
...-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_hw.h
+71
-71
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_intr.c
...xu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_intr.c
+110
-110
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_sinit.c
...u4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_sinit.c
+5
-5
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops.c
...p-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops.c
+187
-187
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops.h
...p-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops.h
+53
-53
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_g.c
...r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_g.c
+4
-4
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_hw.c
...5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_hw.c
+1
-1
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_hw.h
...5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_hw.h
+20
-20
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_intr.c
...axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_intr.c
+204
-204
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_selftest.c
...ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_selftest.c
+18
-18
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_sinit.c
...xu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_sinit.c
+8
-8
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps.c
...ynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps.c
+109
-109
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps.h
...ynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps.h
+62
-62
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_card.c
...-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_card.c
+562
-562
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_g.c
...qmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_g.c
+22
-22
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_host.c
...-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_host.c
+806
-806
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_hw.h
...mp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_hw.h
+559
-559
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_options.c
...-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_options.c
+208
-208
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_sinit.c
...r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_sinit.c
+7
-7
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/netif/xadapter.h
...axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/netif/xadapter.h
+3
-3
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/netif/xemacpsif.h
...xu4ev/drivers/Zynq_HAL_Driver/xemacpsif/netif/xemacpsif.h
+5
-5
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/netif/xpqueue.h
...-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/netif/xpqueue.h
+3
-3
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/netif/xtopology.h
...xu4ev/drivers/Zynq_HAL_Driver/xemacpsif/netif/xtopology.h
+1
-1
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xadapter.c
...mp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xadapter.c
+135
-135
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xemac_ieee_reg.h
...axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xemac_ieee_reg.h
+1
-1
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xemacpsif.c
...p-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xemacpsif.c
+245
-245
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xemacpsif_dma.c
...-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xemacpsif_dma.c
+366
-366
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xemacpsif_hw.c
...5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xemacpsif_hw.c
+103
-103
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xemacpsif_physpeed.c
...ev/drivers/Zynq_HAL_Driver/xemacpsif/xemacpsif_physpeed.c
+477
-477
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xpqueue.c
...qmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xpqueue.c
+6
-6
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xtopology_g.c
...r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xtopology_g.c
+8
-8
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xil_io.h
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xil_io.h
+5
-5
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xil_printf.h
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xil_printf.h
+1
-1
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xil_types.h
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xil_types.h
+14
-14
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xparameters_ps.h
...zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xparameters_ps.h
+192
-192
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xplatform_info.h
...zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xplatform_info.h
+4
-4
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xstatus.h
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xstatus.h
+263
-263
bsp/zynqmp-r5-axu4ev/drivers/drv_sdcard.c
bsp/zynqmp-r5-axu4ev/drivers/drv_sdcard.c
+8
-8
bsp/zynqmp-r5-axu4ev/drivers/drv_uart.c
bsp/zynqmp-r5-axu4ev/drivers/drv_uart.c
+7
-7
bsp/zynqmp-r5-axu4ev/drivers/zynqmp-r5.h
bsp/zynqmp-r5-axu4ev/drivers/zynqmp-r5.h
+2
-2
bsp/zynqmp-r5-axu4ev/rtconfig.py
bsp/zynqmp-r5-axu4ev/rtconfig.py
+2
-2
未找到文件。
bsp/zynqmp-r5-axu4ev/applications/SConscript
浏览文件 @
956664ee
...
...
@@ -3,7 +3,7 @@ Import('rtconfig')
from
building
import
*
cwd
=
os
.
path
.
join
(
str
(
Dir
(
'#'
)),
'applications'
)
src
=
Glob
(
'*.c'
)
src
=
Glob
(
'*.c'
)
CPPPATH
=
[
cwd
,
str
(
Dir
(
'#'
))]
group
=
DefineGroup
(
'Applications'
,
src
,
depend
=
[
''
],
CPPPATH
=
CPPPATH
)
...
...
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps.c
浏览文件 @
956664ee
...
...
@@ -20,7 +20,7 @@
* ----- ---- -------- -------------------------------------------------------
* 1.00a wsy 01/10/10 First release
* 2.1 srt 07/15/14 Add support for Zynq Ultrascale Mp GEM specification and
*
64-bit changes.
*
64-bit changes.
* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
* 3.0 hk 02/20/15 Added support for jumbo frames. Increase AHB burst.
* Disable extended mode. Perform all 64 bit changes under
...
...
@@ -51,7 +51,7 @@
/************************** Function Prototypes ******************************/
void
XEmacPs_StubHandler
(
void
);
/* Default handler routine */
void
XEmacPs_StubHandler
(
void
);
/* Default handler routine */
/************************** Variable Definitions *****************************/
...
...
@@ -78,13 +78,13 @@ void XEmacPs_StubHandler(void); /* Default handler routine */
*
******************************************************************************/
LONG
XEmacPs_CfgInitialize
(
XEmacPs
*
InstancePtr
,
XEmacPs_Config
*
CfgPtr
,
UINTPTR
EffectiveAddress
)
UINTPTR
EffectiveAddress
)
{
/* Verify arguments */
/* Verify arguments */
Xil_AssertNonvoid
(
InstancePtr
!=
NULL
);
Xil_AssertNonvoid
(
CfgPtr
!=
NULL
);
/* Set device base address and ID */
/* Set device base address and ID */
InstancePtr
->
Config
.
DeviceId
=
CfgPtr
->
DeviceId
;
InstancePtr
->
Config
.
BaseAddress
=
EffectiveAddress
;
InstancePtr
->
Config
.
IsCacheCoherent
=
CfgPtr
->
IsCacheCoherent
;
...
...
@@ -92,12 +92,12 @@ LONG XEmacPs_CfgInitialize(XEmacPs *InstancePtr, XEmacPs_Config * CfgPtr,
InstancePtr
->
Config
.
RefClk
=
CfgPtr
->
RefClk
;
#endif
/* Set callbacks to an initial stub routine */
/* Set callbacks to an initial stub routine */
InstancePtr
->
SendHandler
=
((
XEmacPs_Handler
)((
void
*
)
XEmacPs_StubHandler
));
InstancePtr
->
RecvHandler
=
((
XEmacPs_Handler
)(
void
*
)
XEmacPs_StubHandler
);
InstancePtr
->
ErrorHandler
=
((
XEmacPs_ErrHandler
)(
void
*
)
XEmacPs_StubHandler
);
/* Reset the hardware and set default options */
/* Reset the hardware and set default options */
InstancePtr
->
IsReady
=
XIL_COMPONENT_IS_READY
;
XEmacPs_Reset
(
InstancePtr
);
...
...
@@ -136,68 +136,68 @@ void XEmacPs_Start(XEmacPs *InstancePtr)
{
u32
Reg
;
/* Assert bad arguments and conditions */
/* Assert bad arguments and conditions */
Xil_AssertVoid
(
InstancePtr
!=
NULL
);
Xil_AssertVoid
(
InstancePtr
->
IsReady
==
(
u32
)
XIL_COMPONENT_IS_READY
);
#if defined (XCLOCKING)
if
(
InstancePtr
->
IsStarted
!=
(
u32
)
XIL_COMPONENT_IS_STARTED
)
{
Xil_ClockEnable
(
InstancePtr
->
Config
.
RefClk
);
}
Xil_ClockEnable
(
InstancePtr
->
Config
.
RefClk
);
}
#endif
/* Start DMA */
/* When starting the DMA channels, both transmit and receive sides
* need an initialized BD list.
*/
/* Start DMA */
/* When starting the DMA channels, both transmit and receive sides
* need an initialized BD list.
*/
if
(
InstancePtr
->
Version
==
2
)
{
Xil_AssertVoid
(
InstancePtr
->
RxBdRing
.
BaseBdAddr
!=
0
);
Xil_AssertVoid
(
InstancePtr
->
TxBdRing
.
BaseBdAddr
!=
0
);
Xil_AssertVoid
(
InstancePtr
->
RxBdRing
.
BaseBdAddr
!=
0
);
Xil_AssertVoid
(
InstancePtr
->
TxBdRing
.
BaseBdAddr
!=
0
);
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_RXQBASE_OFFSET
,
InstancePtr
->
RxBdRing
.
BaseBdAddr
);
XEMACPS_RXQBASE_OFFSET
,
InstancePtr
->
RxBdRing
.
BaseBdAddr
);
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_TXQBASE_OFFSET
,
InstancePtr
->
TxBdRing
.
BaseBdAddr
);
}
XEMACPS_TXQBASE_OFFSET
,
InstancePtr
->
TxBdRing
.
BaseBdAddr
);
}
/* clear any existed int status */
/* clear any existed int status */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_ISR_OFFSET
,
XEMACPS_IXR_ALL_MASK
);
XEMACPS_IXR_ALL_MASK
);
/* Enable transmitter if not already enabled */
/* Enable transmitter if not already enabled */
if
((
InstancePtr
->
Options
&
(
u32
)
XEMACPS_TRANSMITTER_ENABLE_OPTION
)
!=
0x00000000U
)
{
Reg
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
);
if
((
!
(
Reg
&
XEMACPS_NWCTRL_TXEN_MASK
))
==
TRUE
)
{
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
,
Reg
|
(
u32
)
XEMACPS_NWCTRL_TXEN_MASK
);
}
}
/* Enable receiver if not already enabled */
Reg
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
);
if
((
!
(
Reg
&
XEMACPS_NWCTRL_TXEN_MASK
))
==
TRUE
)
{
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
,
Reg
|
(
u32
)
XEMACPS_NWCTRL_TXEN_MASK
);
}
}
/* Enable receiver if not already enabled */
if
((
InstancePtr
->
Options
&
XEMACPS_RECEIVER_ENABLE_OPTION
)
!=
0x00000000U
)
{
Reg
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
);
if
((
!
(
Reg
&
XEMACPS_NWCTRL_RXEN_MASK
))
==
TRUE
)
{
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
,
Reg
|
(
u32
)
XEMACPS_NWCTRL_RXEN_MASK
);
}
}
Reg
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
);
if
((
!
(
Reg
&
XEMACPS_NWCTRL_RXEN_MASK
))
==
TRUE
)
{
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
,
Reg
|
(
u32
)
XEMACPS_NWCTRL_RXEN_MASK
);
}
}
/* Enable TX and RX interrupts */
XEmacPs_IntEnable
(
InstancePtr
,
(
XEMACPS_IXR_TX_ERR_MASK
|
XEMACPS_IXR_RX_ERR_MASK
|
(
u32
)
XEMACPS_IXR_FRAMERX_MASK
|
(
u32
)
XEMACPS_IXR_TXCOMPL_MASK
));
(
u32
)
XEMACPS_IXR_TXCOMPL_MASK
));
/* Enable TX Q1 Interrupts */
/* Enable TX Q1 Interrupts */
if
(
InstancePtr
->
Version
>
2
)
XEmacPs_IntQ1Enable
(
InstancePtr
,
XEMACPS_INTQ1_IXR_ALL_MASK
);
XEmacPs_IntQ1Enable
(
InstancePtr
,
XEMACPS_INTQ1_IXR_ALL_MASK
);
/* Mark as started */
/* Mark as started */
InstancePtr
->
IsStarted
=
XIL_COMPONENT_IS_STARTED
;
return
;
...
...
@@ -236,19 +236,19 @@ void XEmacPs_Stop(XEmacPs *InstancePtr)
Xil_AssertVoid
(
InstancePtr
!=
NULL
);
Xil_AssertVoid
(
InstancePtr
->
IsReady
==
(
u32
)
XIL_COMPONENT_IS_READY
);
/* Disable all interrupts */
/* Disable all interrupts */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_IDR_OFFSET
,
XEMACPS_IXR_ALL_MASK
);
XEMACPS_IXR_ALL_MASK
);
/* Disable the receiver & transmitter */
/* Disable the receiver & transmitter */
Reg
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
);
XEMACPS_NWCTRL_OFFSET
);
Reg
&=
(
u32
)(
~
XEMACPS_NWCTRL_RXEN_MASK
);
Reg
&=
(
u32
)(
~
XEMACPS_NWCTRL_TXEN_MASK
);
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
,
Reg
);
XEMACPS_NWCTRL_OFFSET
,
Reg
);
/* Mark as stopped */
/* Mark as stopped */
InstancePtr
->
IsStarted
=
0U
;
#if defined (XCLOCKING)
Xil_ClockDisable
(
InstancePtr
->
Config
.
RefClk
);
...
...
@@ -297,7 +297,7 @@ void XEmacPs_Reset(XEmacPs *InstancePtr)
Xil_AssertVoid
(
InstancePtr
!=
NULL
);
Xil_AssertVoid
(
InstancePtr
->
IsReady
==
(
u32
)
XIL_COMPONENT_IS_READY
);
/* Stop the device and reset hardware */
/* Stop the device and reset hardware */
XEmacPs_Stop
(
InstancePtr
);
InstancePtr
->
Options
=
XEMACPS_DEFAULT_OPTIONS
;
...
...
@@ -307,104 +307,104 @@ void XEmacPs_Reset(XEmacPs *InstancePtr)
InstancePtr
->
MaxMtuSize
=
XEMACPS_MTU
;
InstancePtr
->
MaxFrameSize
=
XEMACPS_MTU
+
XEMACPS_HDR_SIZE
+
XEMACPS_TRL_SIZE
;
XEMACPS_TRL_SIZE
;
InstancePtr
->
MaxVlanFrameSize
=
InstancePtr
->
MaxFrameSize
+
XEMACPS_HDR_VLAN_SIZE
;
XEMACPS_HDR_VLAN_SIZE
;
InstancePtr
->
RxBufMask
=
XEMACPS_RXBUF_LEN_MASK
;
/* Setup hardware with default values */
/* Setup hardware with default values */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
,
(
XEMACPS_NWCTRL_STATCLR_MASK
|
XEMACPS_NWCTRL_MDEN_MASK
)
&
(
u32
)(
~
XEMACPS_NWCTRL_LOOPEN_MASK
));
XEMACPS_NWCTRL_OFFSET
,
(
XEMACPS_NWCTRL_STATCLR_MASK
|
XEMACPS_NWCTRL_MDEN_MASK
)
&
(
u32
)(
~
XEMACPS_NWCTRL_LOOPEN_MASK
));
Reg
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCFG_OFFSET
);
XEMACPS_NWCFG_OFFSET
);
Reg
&=
XEMACPS_NWCFG_MDCCLKDIV_MASK
;
Reg
=
Reg
|
(
u32
)
XEMACPS_NWCFG_100_MASK
|
(
u32
)
XEMACPS_NWCFG_FDEN_MASK
|
(
u32
)
XEMACPS_NWCFG_UCASTHASHEN_MASK
;
(
u32
)
XEMACPS_NWCFG_FDEN_MASK
|
(
u32
)
XEMACPS_NWCFG_UCASTHASHEN_MASK
;
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCFG_OFFSET
,
Reg
);
XEMACPS_NWCFG_OFFSET
,
Reg
);
if
(
InstancePtr
->
Version
>
2
)
{
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCFG_OFFSET
,
(
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCFG_OFFSET
)
|
XEMACPS_NWCFG_DWIDTH_64_MASK
));
}
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCFG_OFFSET
,
(
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCFG_OFFSET
)
|
XEMACPS_NWCFG_DWIDTH_64_MASK
));
}
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_DMACR_OFFSET
,
(((((
u32
)
XEMACPS_RX_BUF_SIZE
/
(
u32
)
XEMACPS_RX_BUF_UNIT
)
+
(((((
u32
)
XEMACPS_RX_BUF_SIZE
%
(
u32
)
XEMACPS_RX_BUF_UNIT
))
!=
(
u32
)
0
)
?
1U
:
0U
))
<<
(
u32
)(
XEMACPS_DMACR_RXBUF_SHIFT
))
&
(
u32
)(
XEMACPS_DMACR_RXBUF_MASK
))
|
(
u32
)
XEMACPS_DMACR_RXSIZE_MASK
|
(
u32
)
XEMACPS_DMACR_TXSIZE_MASK
);
XEMACPS_DMACR_OFFSET
,
(((((
u32
)
XEMACPS_RX_BUF_SIZE
/
(
u32
)
XEMACPS_RX_BUF_UNIT
)
+
(((((
u32
)
XEMACPS_RX_BUF_SIZE
%
(
u32
)
XEMACPS_RX_BUF_UNIT
))
!=
(
u32
)
0
)
?
1U
:
0U
))
<<
(
u32
)(
XEMACPS_DMACR_RXBUF_SHIFT
))
&
(
u32
)(
XEMACPS_DMACR_RXBUF_MASK
))
|
(
u32
)
XEMACPS_DMACR_RXSIZE_MASK
|
(
u32
)
XEMACPS_DMACR_TXSIZE_MASK
);
if
(
InstancePtr
->
Version
>
2
)
{
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_DMACR_OFFSET
,
(
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_DMACR_OFFSET
)
|
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_DMACR_OFFSET
,
(
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_DMACR_OFFSET
)
|
#if defined(__aarch64__) || defined(__arch64__)
(
u32
)
XEMACPS_DMACR_ADDR_WIDTH_64
|
(
u32
)
XEMACPS_DMACR_ADDR_WIDTH_64
|
#endif
(
u32
)
XEMACPS_DMACR_INCR16_AHB_BURST
));
}
(
u32
)
XEMACPS_DMACR_INCR16_AHB_BURST
));
}
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_TXSR_OFFSET
,
XEMACPS_SR_ALL_MASK
);
XEMACPS_TXSR_OFFSET
,
XEMACPS_SR_ALL_MASK
);
XEmacPs_SetQueuePtr
(
InstancePtr
,
0
,
0x00U
,
(
u16
)
XEMACPS_SEND
);
if
(
InstancePtr
->
Version
>
2
)
XEmacPs_SetQueuePtr
(
InstancePtr
,
0
,
0x01U
,
(
u16
)
XEMACPS_SEND
);
XEmacPs_SetQueuePtr
(
InstancePtr
,
0
,
0x01U
,
(
u16
)
XEMACPS_SEND
);
XEmacPs_SetQueuePtr
(
InstancePtr
,
0
,
0x00U
,
(
u16
)
XEMACPS_RECV
);
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_RXSR_OFFSET
,
XEMACPS_SR_ALL_MASK
);
XEMACPS_RXSR_OFFSET
,
XEMACPS_SR_ALL_MASK
);
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_IDR_OFFSET
,
XEMACPS_IXR_ALL_MASK
);
XEMACPS_IXR_ALL_MASK
);
Reg
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_ISR_OFFSET
);
XEMACPS_ISR_OFFSET
);
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_ISR_OFFSET
,
Reg
);
Reg
);
XEmacPs_ClearHash
(
InstancePtr
);
for
(
i
=
1U
;
i
<
5U
;
i
++
)
{
(
void
)
XEmacPs_SetMacAddress
(
InstancePtr
,
EmacPs_zero_MAC
,
i
);
(
void
)
XEmacPs_SetTypeIdCheck
(
InstancePtr
,
0x00000000U
,
i
);
}
(
void
)
XEmacPs_SetMacAddress
(
InstancePtr
,
EmacPs_zero_MAC
,
i
);
(
void
)
XEmacPs_SetTypeIdCheck
(
InstancePtr
,
0x00000000U
,
i
);
}
/* clear all counters */
/* clear all counters */
for
(
i
=
0U
;
i
<
(
u8
)((
XEMACPS_LAST_OFFSET
-
XEMACPS_OCTTXL_OFFSET
)
/
4U
);
i
++
)
{
(
void
)
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
i
++
)
{
(
void
)
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_OCTTXL_OFFSET
+
(
u32
)(((
u32
)
i
)
*
((
u32
)
4
)));
}
}
/* Disable the receiver */
/* Disable the receiver */
Reg
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
);
XEMACPS_NWCTRL_OFFSET
);
Reg
&=
(
u32
)(
~
XEMACPS_NWCTRL_RXEN_MASK
);
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
,
Reg
);
XEMACPS_NWCTRL_OFFSET
,
Reg
);
/* Sync default options with hardware but leave receiver and
/* Sync default options with hardware but leave receiver and
* transmitter disabled. They get enabled with XEmacPs_Start() if
* XEMACPS_TRANSMITTER_ENABLE_OPTION and
* XEMACPS_TRANSMITTER_ENABLE_OPTION and
* XEMACPS_RECEIVER_ENABLE_OPTION are set.
*/
(
void
)
XEmacPs_SetOptions
(
InstancePtr
,
InstancePtr
->
Options
&
~
((
u32
)
XEMACPS_TRANSMITTER_ENABLE_OPTION
|
(
u32
)
XEMACPS_RECEIVER_ENABLE_OPTION
));
*/
(
void
)
XEmacPs_SetOptions
(
InstancePtr
,
InstancePtr
->
Options
&
~
((
u32
)
XEMACPS_TRANSMITTER_ENABLE_OPTION
|
(
u32
)
XEMACPS_RECEIVER_ENABLE_OPTION
));
(
void
)
XEmacPs_ClearOptions
(
InstancePtr
,
~
InstancePtr
->
Options
);
(
void
)
XEmacPs_ClearOptions
(
InstancePtr
,
~
InstancePtr
->
Options
);
}
...
...
@@ -436,9 +436,9 @@ void XEmacPs_StubHandler(void)
*
******************************************************************************/
void
XEmacPs_SetQueuePtr
(
XEmacPs
*
InstancePtr
,
UINTPTR
QPtr
,
u8
QueueNum
,
u16
Direction
)
u16
Direction
)
{
/* Assert bad arguments and conditions */
/* Assert bad arguments and conditions */
Xil_AssertVoid
(
InstancePtr
!=
NULL
);
Xil_AssertVoid
(
InstancePtr
->
IsReady
==
(
u32
)
XIL_COMPONENT_IS_READY
);
...
...
@@ -448,33 +448,33 @@ void XEmacPs_SetQueuePtr(XEmacPs *InstancePtr, UINTPTR QPtr, u8 QueueNum,
}
if
(
QueueNum
==
0x00U
)
{
if
(
Direction
==
XEMACPS_SEND
)
{
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_TXQBASE_OFFSET
,
(
QPtr
&
ULONG64_LO_MASK
));
}
else
{
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_RXQBASE_OFFSET
,
(
QPtr
&
ULONG64_LO_MASK
));
}
}
else
{
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_TXQ1BASE_OFFSET
,
(
QPtr
&
ULONG64_LO_MASK
));
}
if
(
Direction
==
XEMACPS_SEND
)
{
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_TXQBASE_OFFSET
,
(
QPtr
&
ULONG64_LO_MASK
));
}
else
{
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_RXQBASE_OFFSET
,
(
QPtr
&
ULONG64_LO_MASK
));
}
}
else
{
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_TXQ1BASE_OFFSET
,
(
QPtr
&
ULONG64_LO_MASK
));
}
#ifdef __aarch64__
if
(
Direction
==
XEMACPS_SEND
)
{
/* Set the MSB of TX Queue start address */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_MSBBUF_TXQBASE_OFFSET
,
(
u32
)((
QPtr
&
ULONG64_HI_MASK
)
>>
32U
));
}
else
{
/* Set the MSB of RX Queue start address */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_MSBBUF_RXQBASE_OFFSET
,
(
u32
)((
QPtr
&
ULONG64_HI_MASK
)
>>
32U
));
}
/* Set the MSB of TX Queue start address */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_MSBBUF_TXQBASE_OFFSET
,
(
u32
)((
QPtr
&
ULONG64_HI_MASK
)
>>
32U
));
}
else
{
/* Set the MSB of RX Queue start address */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_MSBBUF_RXQBASE_OFFSET
,
(
u32
)((
QPtr
&
ULONG64_HI_MASK
)
>>
32U
));
}
#endif
}
/** @} */
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps.h
浏览文件 @
956664ee
...
...
@@ -241,46 +241,46 @@
* ----- ---- -------- -------------------------------------------------------
* 1.00a wsy 01/10/10 First release
* 1.00a asa 11/21/11 The function XEmacPs_BdRingFromHwTx in file
*
xemacps_bdring.c is modified. Earlier it was checking for
*
"BdLimit"(passed argument) number of BDs for finding out
*
which BDs are successfully processed. Now one more check
*
is added. It looks for BDs till the current BD pointer
*
reaches HwTail. By doing this processing time is saved.
*
xemacps_bdring.c is modified. Earlier it was checking for
*
"BdLimit"(passed argument) number of BDs for finding out
*
which BDs are successfully processed. Now one more check
*
is added. It looks for BDs till the current BD pointer
*
reaches HwTail. By doing this processing time is saved.
* 1.00a asa 01/24/12 The function XEmacPs_BdRingFromHwTx in file
*
xemacps_bdring.c is modified. Now start of packet is
*
searched for returning the number of BDs processed.
*
xemacps_bdring.c is modified. Now start of packet is
*
searched for returning the number of BDs processed.
* 1.02a asa 11/05/12 Added a new API for deleting an entry from the HASH
*
registers. Added a new API to set the bust length.
*
Added some new hash-defines.
*
registers. Added a new API to set the bust length.
*
Added some new hash-defines.
* 1.03a asa 01/23/12 Fix for CR #692702 which updates error handling for
*
Rx errors. Under heavy Rx traffic, there will be a large
*
number of errors related to receive buffer not available.
*
Because of a HW bug (SI #692601), under such heavy errors,
*
the Rx data path can become unresponsive. To reduce the
*
probabilities for hitting this HW bug, the SW writes to
*
bit 18 to flush a packet from Rx DPRAM immediately. The
*
changes for it are done in the function
*
XEmacPs_IntrHandler.
*
Rx errors. Under heavy Rx traffic, there will be a large
*
number of errors related to receive buffer not available.
*
Because of a HW bug (SI #692601), under such heavy errors,
*
the Rx data path can become unresponsive. To reduce the
*
probabilities for hitting this HW bug, the SW writes to
*
bit 18 to flush a packet from Rx DPRAM immediately. The
*
changes for it are done in the function
*
XEmacPs_IntrHandler.
* 1.05a asa 09/23/13 Cache operations on BDs are not required and hence
*
removed. It is expected that all BDs are allocated in
*
from uncached area.
*
removed. It is expected that all BDs are allocated in
*
from uncached area.
* 1.06a asa 11/02/13 Changed the value for XEMACPS_RXBUF_LEN_MASK from 0x3fff
*
to 0x1fff. This fixes the CR#744902.
*
Made changes in example file xemacps_example.h to fix compilation
*
issues with iarcc compiler.
*
to 0x1fff. This fixes the CR#744902.
*
Made changes in example file xemacps_example.h to fix compilation
*
issues with iarcc compiler.
* 2.0 adk 10/12/13 Updated as per the New Tcl API's
* 2.1 adk 11/08/14 Fixed the CR#811288. Changes are made in the driver tcl file.
* 2.1 bss 09/08/14 Modified driver tcl to fix CR#820349 to export phy
*
address in xparameters.h when GMII to RGMII converter
*
is present in hw.
*
address in xparameters.h when GMII to RGMII converter
*
is present in hw.
* 2.1 srt 07/15/14 Add support for Zynq Ultrascale Mp GEM specification and 64-bit
*
changes.
*
changes.
* 2.2 adk 29/10/14 Fixed CR#827686 when PCS/PMA core is configured with
* 1000BASE-X mode export proper values to the xparameters.h
* file. Changes are made in the driver tcl file.
* 3.0 adk 08/1/15 Don't include gem in peripheral test when gem is
* configured with PCS/PMA Core. Changes are made in the
*
test app tcl(CR:827686).
*
test app tcl(CR:827686).
* 3.0 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
* 3.0 hk 03/18/15 Added support for jumbo frames. Increase AHB burst.
* Disable extended mode. Perform all 64 bit changes under
...
...
@@ -302,10 +302,10 @@
* 3.5 hk 08/14/17 Update cache coherency information of the interface in
* its config structure.
* 3.6 rb 09/08/17 HwCnt variable (in XEmacPs_BdRing structure) is
*
changed to volatile.
*
Add API XEmacPs_BdRingPtrReset() to reset pointers
*
changed to volatile.
*
Add API XEmacPs_BdRingPtrReset() to reset pointers
* 3.8 hk 07/19/18 Fixed CPP, GCC and doxygen warnings - CR-1006327
*
hk 09/17/18 Fix PTP interrupt masks and cleanup comments.
*
hk 09/17/18 Fix PTP interrupt masks and cleanup comments.
* 3.9 hk 01/23/19 Add RX watermark support
* 3.11 sd 02/14/20 Add clock support
*
...
...
@@ -313,8 +313,8 @@
*
****************************************************************************/
#ifndef XEMACPS_H
/* prevent circular inclusions */
#define XEMACPS_H
/* by using protection macros */
#ifndef XEMACPS_H
/* prevent circular inclusions */
#define XEMACPS_H
/* by using protection macros */
#ifdef __cplusplus
extern
"C"
{
...
...
@@ -447,13 +447,13 @@ extern "C" {
/* The next few constants help upper layers determine the size of memory
* pools used for Ethernet buffers and descriptor lists.
*/
#define XEMACPS_MAC_ADDR_SIZE 6U
/* size of Ethernet header */
#define XEMACPS_MAC_ADDR_SIZE 6U
/* size of Ethernet header */
#define XEMACPS_MTU 1500U
/* max MTU size of Ethernet frame */
#define XEMACPS_MTU_JUMBO 10240U
/* max MTU size of jumbo frame */
#define XEMACPS_HDR_SIZE 14U
/* size of Ethernet header */
#define XEMACPS_HDR_VLAN_SIZE 18U
/* size of Ethernet header with VLAN */
#define XEMACPS_TRL_SIZE 4U
/* size of Ethernet trailer (FCS) */
#define XEMACPS_MTU 1500U
/* max MTU size of Ethernet frame */
#define XEMACPS_MTU_JUMBO 10240U
/* max MTU size of jumbo frame */
#define XEMACPS_HDR_SIZE 14U
/* size of Ethernet header */
#define XEMACPS_HDR_VLAN_SIZE 18U
/* size of Ethernet header with VLAN */
#define XEMACPS_TRL_SIZE 4U
/* size of Ethernet trailer (FCS) */
#define XEMACPS_MAX_FRAME_SIZE (XEMACPS_MTU + XEMACPS_HDR_SIZE + \
XEMACPS_TRL_SIZE)
#define XEMACPS_MAX_VLAN_FRAME_SIZE (XEMACPS_MTU + XEMACPS_HDR_SIZE + \
...
...
@@ -464,8 +464,8 @@ extern "C" {
/* DMACR Bust length hash defines */
#define XEMACPS_SINGLE_BURST 0x00000001
#define XEMACPS_4BYTE_BURST
0x00000004
#define XEMACPS_8BYTE_BURST
0x00000008
#define XEMACPS_4BYTE_BURST
0x00000004
#define XEMACPS_8BYTE_BURST
0x00000008
#define XEMACPS_16BYTE_BURST 0x00000010
...
...
@@ -499,7 +499,7 @@ typedef void (*XEmacPs_Handler) (void *CallBackRef);
*
*/
typedef
void
(
*
XEmacPs_ErrHandler
)
(
void
*
CallBackRef
,
u8
Direction
,
u32
ErrorWord
);
u32
ErrorWord
);
/*@}*/
...
...
@@ -507,12 +507,12 @@ typedef void (*XEmacPs_ErrHandler) (void *CallBackRef, u8 Direction,
* This typedef contains configuration information for a device.
*/
typedef
struct
{
u16
DeviceId
;
/**< Unique ID of device */
u16
DeviceId
;
/**< Unique ID of device */
UINTPTR
BaseAddress
;
/**< Physical base address of IPIF registers */
u8
IsCacheCoherent
;
/**< Applicable only to A53 in EL1 mode;
* describes whether Cache Coherent or not */
* describes whether Cache Coherent or not */
#if defined (XCLOCKING)
u32
RefClk
;
/**< Input clock */
u32
RefClk
;
/**< Input clock */
#endif
}
XEmacPs_Config
;
...
...
@@ -523,13 +523,13 @@ typedef struct {
* to a structure of this type is then passed to the driver API functions.
*/
typedef
struct
XEmacPs_Instance
{
XEmacPs_Config
Config
;
/* Hardware configuration */
u32
IsStarted
;
/* Device is currently started */
u32
IsReady
;
/* Device is initialized and ready */
u32
Options
;
/* Current options word */
XEmacPs_Config
Config
;
/* Hardware configuration */
u32
IsStarted
;
/* Device is currently started */
u32
IsReady
;
/* Device is initialized and ready */
u32
Options
;
/* Current options word */
XEmacPs_BdRing
TxBdRing
;
/* Transmit BD ring */
XEmacPs_BdRing
RxBdRing
;
/* Receive BD ring */
XEmacPs_BdRing
TxBdRing
;
/* Transmit BD ring */
XEmacPs_BdRing
RxBdRing
;
/* Receive BD ring */
XEmacPs_Handler
SendHandler
;
XEmacPs_Handler
RecvHandler
;
...
...
@@ -599,8 +599,8 @@ typedef struct XEmacPs_Instance {
*****************************************************************************/
#define XEmacPs_IntEnable(InstancePtr, Mask) \
XEmacPs_WriteReg((InstancePtr)->Config.BaseAddress, \
XEMACPS_IER_OFFSET, \
((Mask) & XEMACPS_IXR_ALL_MASK));
XEMACPS_IER_OFFSET, \
((Mask) & XEMACPS_IXR_ALL_MASK));
/****************************************************************************/
/**
...
...
@@ -620,8 +620,8 @@ typedef struct XEmacPs_Instance {
*****************************************************************************/
#define XEmacPs_IntDisable(InstancePtr, Mask) \
XEmacPs_WriteReg((InstancePtr)->Config.BaseAddress, \
XEMACPS_IDR_OFFSET, \
((Mask) & XEMACPS_IXR_ALL_MASK));
XEMACPS_IDR_OFFSET, \
((Mask) & XEMACPS_IXR_ALL_MASK));
/****************************************************************************/
/**
...
...
@@ -641,8 +641,8 @@ typedef struct XEmacPs_Instance {
*****************************************************************************/
#define XEmacPs_IntQ1Enable(InstancePtr, Mask) \
XEmacPs_WriteReg((InstancePtr)->Config.BaseAddress, \
XEMACPS_INTQ1_IER_OFFSET, \
((Mask) & XEMACPS_INTQ1_IXR_ALL_MASK));
XEMACPS_INTQ1_IER_OFFSET, \
((Mask) & XEMACPS_INTQ1_IXR_ALL_MASK));
/****************************************************************************/
/**
...
...
@@ -662,8 +662,8 @@ typedef struct XEmacPs_Instance {
*****************************************************************************/
#define XEmacPs_IntQ1Disable(InstancePtr, Mask) \
XEmacPs_WriteReg((InstancePtr)->Config.BaseAddress, \
XEMACPS_INTQ1_IDR_OFFSET, \
((Mask) & XEMACPS_INTQ1_IXR_ALL_MASK));
XEMACPS_INTQ1_IDR_OFFSET, \
((Mask) & XEMACPS_INTQ1_IXR_ALL_MASK));
/****************************************************************************/
/**
...
...
@@ -740,17 +740,17 @@ typedef struct XEmacPs_Instance {
*
* @param InstancePtr is a pointer to the XEmacPs instance to be worked on.
* @param High is the non-zero RX high watermark value. When SRAM fill level
*
is above this, a pause frame will be sent.
*
is above this, a pause frame will be sent.
* @param Low is the non-zero RX low watermark value. When SRAM fill level
*
is below this, a zero length pause frame will be sent IF the last
*
pause frame sent was non-zero.
*
is below this, a zero length pause frame will be sent IF the last
*
pause frame sent was non-zero.
*
* @return None
*
* @note
*
* Signature: void XEmacPs_SetRXWatermark(XEmacPs *InstancePtr, u16 High,
*
u16 Low)
*
u16 Low)
*
*****************************************************************************/
#define XEmacPs_SetRXWatermark(InstancePtr, High, Low) \
...
...
@@ -780,12 +780,12 @@ typedef struct XEmacPs_Instance {
* Initialization functions in xemacps.c
*/
LONG
XEmacPs_CfgInitialize
(
XEmacPs
*
InstancePtr
,
XEmacPs_Config
*
CfgPtr
,
UINTPTR
EffectiveAddress
);
UINTPTR
EffectiveAddress
);
void
XEmacPs_Start
(
XEmacPs
*
InstancePtr
);
void
XEmacPs_Stop
(
XEmacPs
*
InstancePtr
);
void
XEmacPs_Reset
(
XEmacPs
*
InstancePtr
);
void
XEmacPs_SetQueuePtr
(
XEmacPs
*
InstancePtr
,
UINTPTR
QPtr
,
u8
QueueNum
,
u16
Direction
);
u16
Direction
);
/*
* Lookup configuration in xemacps_sinit.c
...
...
@@ -797,7 +797,7 @@ XEmacPs_Config *XEmacPs_LookupConfig(u16 DeviceId);
* DMA only and FIFO is not supported. This DMA does not support coalescing.
*/
LONG
XEmacPs_SetHandler
(
XEmacPs
*
InstancePtr
,
u32
HandlerType
,
void
*
FuncPointer
,
void
*
CallBackRef
);
void
*
FuncPointer
,
void
*
CallBackRef
);
void
XEmacPs_IntrHandler
(
void
*
XEmacPsPtr
);
/*
...
...
@@ -816,13 +816,13 @@ void XEmacPs_ClearHash(XEmacPs *InstancePtr);
void
XEmacPs_GetHash
(
XEmacPs
*
InstancePtr
,
void
*
AddressPtr
);
void
XEmacPs_SetMdioDivisor
(
XEmacPs
*
InstancePtr
,
XEmacPs_MdcDiv
Divisor
);
XEmacPs_MdcDiv
Divisor
);
void
XEmacPs_SetOperatingSpeed
(
XEmacPs
*
InstancePtr
,
u16
Speed
);
u16
XEmacPs_GetOperatingSpeed
(
XEmacPs
*
InstancePtr
);
LONG
XEmacPs_PhyRead
(
XEmacPs
*
InstancePtr
,
u32
PhyAddress
,
u32
RegisterNum
,
u16
*
PhyDataPtr
);
u32
RegisterNum
,
u16
*
PhyDataPtr
);
LONG
XEmacPs_PhyWrite
(
XEmacPs
*
InstancePtr
,
u32
PhyAddress
,
u32
RegisterNum
,
u16
PhyData
);
u32
RegisterNum
,
u16
PhyData
);
LONG
XEmacPs_SetTypeIdCheck
(
XEmacPs
*
InstancePtr
,
u32
Id_Check
,
u8
Index
);
LONG
XEmacPs_SendPausePacket
(
XEmacPs
*
InstancePtr
);
...
...
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_bd.h
浏览文件 @
956664ee
...
...
@@ -51,8 +51,8 @@
* ***************************************************************************
*/
#ifndef XEMACPS_BD_H
/* prevent circular inclusions */
#define XEMACPS_BD_H
/* by using protection macros */
#ifndef XEMACPS_BD_H
/* prevent circular inclusions */
#define XEMACPS_BD_H
/* by using protection macros */
#ifdef __cplusplus
extern
"C"
{
...
...
@@ -117,7 +117,7 @@ typedef u32 XEmacPs_Bd[XEMACPS_BD_NUM_WORDS];
*
*****************************************************************************/
#define XEmacPs_BdRead(BaseAddress, Offset) \
(*(u32 *)((UINTPTR)((void*)(BaseAddress)) + (u32)(Offset)))
(*(u32 *)((UINTPTR)((void*)(BaseAddress)) + (u32)(Offset)))
/****************************************************************************/
/**
...
...
@@ -153,10 +153,10 @@ typedef u32 XEmacPs_Bd[XEMACPS_BD_NUM_WORDS];
*****************************************************************************/
#if defined(__aarch64__) || defined(__arch64__)
#define XEmacPs_BdSetAddressTx(BdPtr, Addr) \
XEmacPs_BdWrite((BdPtr), XEMACPS_BD_ADDR_OFFSET,
\
(u32)((Addr) & ULONG64_LO_MASK));
\
XEmacPs_BdWrite((BdPtr), XEMACPS_BD_ADDR_HI_OFFSET,
\
(u32)(((Addr) & ULONG64_HI_MASK) >> 32U));
XEmacPs_BdWrite((BdPtr), XEMACPS_BD_ADDR_OFFSET,
\
(u32)((Addr) & ULONG64_LO_MASK));
\
XEmacPs_BdWrite((BdPtr), XEMACPS_BD_ADDR_HI_OFFSET,
\
(u32)(((Addr) & ULONG64_HI_MASK) >> 32U));
#else
#define XEmacPs_BdSetAddressTx(BdPtr, Addr) \
XEmacPs_BdWrite((BdPtr), XEMACPS_BD_ADDR_OFFSET, (u32)(Addr))
...
...
@@ -180,9 +180,9 @@ typedef u32 XEmacPs_Bd[XEMACPS_BD_NUM_WORDS];
#define XEmacPs_BdSetAddressRx(BdPtr, Addr) \
XEmacPs_BdWrite((BdPtr), XEMACPS_BD_ADDR_OFFSET, \
((XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_OFFSET) & \
~XEMACPS_RXBUF_ADD_MASK) | ((u32)((Addr) & ULONG64_LO_MASK)))); \
XEmacPs_BdWrite((BdPtr), XEMACPS_BD_ADDR_HI_OFFSET,
\
(u32)(((Addr) & ULONG64_HI_MASK) >> 32U));
~XEMACPS_RXBUF_ADD_MASK) | ((u32)((Addr) & ULONG64_LO_MASK)))); \
XEmacPs_BdWrite((BdPtr), XEMACPS_BD_ADDR_HI_OFFSET,
\
(u32)(((Addr) & ULONG64_HI_MASK) >> 32U));
#else
#define XEmacPs_BdSetAddressRx(BdPtr, Addr) \
XEmacPs_BdWrite((BdPtr), XEMACPS_BD_ADDR_OFFSET, \
...
...
@@ -239,8 +239,8 @@ typedef u32 XEmacPs_Bd[XEMACPS_BD_NUM_WORDS];
*****************************************************************************/
#if defined(__aarch64__) || defined(__arch64__)
#define XEmacPs_BdGetBufAddr(BdPtr) \
(XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_OFFSET) |
\
(XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_HI_OFFSET)) << 32U)
(XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_OFFSET) |
\
(XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_HI_OFFSET)) << 32U)
#else
#define XEmacPs_BdGetBufAddr(BdPtr) \
(XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_OFFSET))
...
...
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_bdring.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_bdring.h
浏览文件 @
956664ee
...
...
@@ -22,14 +22,14 @@
* 2.1 srt 07/15/14 Add support for Zynq Ultrascale Mp architecture.
* 3.0 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
* 3.6 rb 09/08/17 HwCnt variable (in XEmacPs_BdRing structure) is
*
changed to volatile.
*
changed to volatile.
*
* </pre>
*
******************************************************************************/
#ifndef XEMACPS_BDRING_H
/* prevent curcular inclusions */
#define XEMACPS_BDRING_H
/* by using protection macros */
#ifndef XEMACPS_BDRING_H
/* prevent curcular inclusions */
#define XEMACPS_BDRING_H
/* by using protection macros */
#ifdef __cplusplus
extern
"C"
{
...
...
@@ -41,21 +41,21 @@ extern "C" {
/** This is an internal structure used to maintain the DMA list */
typedef
struct
{
UINTPTR
PhysBaseAddr
;
/**< Physical address of 1st BD in list */
UINTPTR
BaseBdAddr
;
/**< Virtual address of 1st BD in list */
UINTPTR
HighBdAddr
;
/**< Virtual address of last BD in the list */
u32
Length
;
/**< Total size of ring in bytes */
u32
RunState
;
/**< Flag to indicate DMA is started */
u32
Separation
;
/**< Number of bytes between the starting address
UINTPTR
BaseBdAddr
;
/**< Virtual address of 1st BD in list */
UINTPTR
HighBdAddr
;
/**< Virtual address of last BD in the list */
u32
Length
;
/**< Total size of ring in bytes */
u32
RunState
;
/**< Flag to indicate DMA is started */
u32
Separation
;
/**< Number of bytes between the starting address
of adjacent BDs */
XEmacPs_Bd
*
FreeHead
;
/**< First BD in the free group */
/**< First BD in the free group */
XEmacPs_Bd
*
PreHead
;
/**< First BD in the pre-work group */
XEmacPs_Bd
*
HwHead
;
/**< First BD in the work group */
XEmacPs_Bd
*
HwTail
;
/**< Last BD in the work group */
XEmacPs_Bd
*
PostHead
;
/**< First BD in the post-work group */
/**< First BD in the post-work group */
XEmacPs_Bd
*
BdaRestart
;
/**< BDA to load when channel is started */
/**< BDA to load when channel is started */
volatile
u32
HwCnt
;
/**< Number of BDs in work group */
u32
PreCnt
;
/**< Number of BDs in pre-work group */
...
...
@@ -187,21 +187,21 @@ typedef struct {
* Scatter gather DMA related functions in xemacps_bdring.c
*/
LONG
XEmacPs_BdRingCreate
(
XEmacPs_BdRing
*
RingPtr
,
UINTPTR
PhysAddr
,
UINTPTR
VirtAddr
,
u32
Alignment
,
u32
BdCount
);
UINTPTR
VirtAddr
,
u32
Alignment
,
u32
BdCount
);
LONG
XEmacPs_BdRingClone
(
XEmacPs_BdRing
*
RingPtr
,
XEmacPs_Bd
*
SrcBdPtr
,
u8
Direction
);
u8
Direction
);
LONG
XEmacPs_BdRingAlloc
(
XEmacPs_BdRing
*
RingPtr
,
u32
NumBd
,
XEmacPs_Bd
**
BdSetPtr
);
XEmacPs_Bd
**
BdSetPtr
);
LONG
XEmacPs_BdRingUnAlloc
(
XEmacPs_BdRing
*
RingPtr
,
u32
NumBd
,
XEmacPs_Bd
*
BdSetPtr
);
XEmacPs_Bd
*
BdSetPtr
);
LONG
XEmacPs_BdRingToHw
(
XEmacPs_BdRing
*
RingPtr
,
u32
NumBd
,
XEmacPs_Bd
*
BdSetPtr
);
XEmacPs_Bd
*
BdSetPtr
);
LONG
XEmacPs_BdRingFree
(
XEmacPs_BdRing
*
RingPtr
,
u32
NumBd
,
XEmacPs_Bd
*
BdSetPtr
);
XEmacPs_Bd
*
BdSetPtr
);
u32
XEmacPs_BdRingFromHwTx
(
XEmacPs_BdRing
*
RingPtr
,
u32
BdLimit
,
XEmacPs_Bd
**
BdSetPtr
);
XEmacPs_Bd
**
BdSetPtr
);
u32
XEmacPs_BdRingFromHwRx
(
XEmacPs_BdRing
*
RingPtr
,
u32
BdLimit
,
XEmacPs_Bd
**
BdSetPtr
);
XEmacPs_Bd
**
BdSetPtr
);
LONG
XEmacPs_BdRingCheck
(
XEmacPs_BdRing
*
RingPtr
,
u8
Direction
);
void
XEmacPs_BdRingPtrReset
(
XEmacPs_BdRing
*
RingPtr
,
void
*
virtaddrloc
);
...
...
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_control.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_g.c
浏览文件 @
956664ee
...
...
@@ -22,11 +22,11 @@
XEmacPs_Config
XEmacPs_ConfigTable
[
XPAR_XEMACPS_NUM_INSTANCES
]
=
{
{
XPAR_PSU_ETHERNET_3_DEVICE_ID
,
XPAR_PSU_ETHERNET_3_BASEADDR
,
XPAR_PSU_ETHERNET_3_IS_CACHE_COHERENT
}
{
XPAR_PSU_ETHERNET_3_DEVICE_ID
,
XPAR_PSU_ETHERNET_3_BASEADDR
,
XPAR_PSU_ETHERNET_3_IS_CACHE_COHERENT
}
};
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_hw.c
浏览文件 @
956664ee
...
...
@@ -62,35 +62,35 @@ void XEmacPs_ResetHw(u32 BaseAddr)
{
u32
RegVal
;
/* Disable the interrupts */
/* Disable the interrupts */
XEmacPs_WriteReg
(
BaseAddr
,
XEMACPS_IDR_OFFSET
,
0x0U
);
/* Stop transmission,disable loopback and Stop tx and Rx engines */
/* Stop transmission,disable loopback and Stop tx and Rx engines */
RegVal
=
XEmacPs_ReadReg
(
BaseAddr
,
XEMACPS_NWCTRL_OFFSET
);
RegVal
&=
~
((
u32
)
XEMACPS_NWCTRL_TXEN_MASK
|
(
u32
)
XEMACPS_NWCTRL_RXEN_MASK
|
(
u32
)
XEMACPS_NWCTRL_HALTTX_MASK
|
(
u32
)
XEMACPS_NWCTRL_LOOPEN_MASK
);
/* Clear the statistic registers, flush the packets in DPRAM*/
(
u32
)
XEMACPS_NWCTRL_RXEN_MASK
|
(
u32
)
XEMACPS_NWCTRL_HALTTX_MASK
|
(
u32
)
XEMACPS_NWCTRL_LOOPEN_MASK
);
/* Clear the statistic registers, flush the packets in DPRAM*/
RegVal
|=
(
XEMACPS_NWCTRL_STATCLR_MASK
|
XEMACPS_NWCTRL_FLUSH_DPRAM_MASK
);
XEMACPS_NWCTRL_FLUSH_DPRAM_MASK
);
XEmacPs_WriteReg
(
BaseAddr
,
XEMACPS_NWCTRL_OFFSET
,
RegVal
);
/* Clear the interrupt status */
/* Clear the interrupt status */
XEmacPs_WriteReg
(
BaseAddr
,
XEMACPS_ISR_OFFSET
,
XEMACPS_IXR_ALL_MASK
);
/* Clear the tx status */
/* Clear the tx status */
XEmacPs_WriteReg
(
BaseAddr
,
XEMACPS_TXSR_OFFSET
,(
XEMACPS_TXSR_ERROR_MASK
|
(
u32
)
XEMACPS_TXSR_TXCOMPL_MASK
|
(
u32
)
XEMACPS_TXSR_TXGO_MASK
));
/* Clear the rx status */
(
u32
)
XEMACPS_TXSR_TXCOMPL_MASK
|
(
u32
)
XEMACPS_TXSR_TXGO_MASK
));
/* Clear the rx status */
XEmacPs_WriteReg
(
BaseAddr
,
XEMACPS_RXSR_OFFSET
,
XEMACPS_RXSR_FRAMERX_MASK
);
/* Clear the tx base address */
XEMACPS_RXSR_FRAMERX_MASK
);
/* Clear the tx base address */
XEmacPs_WriteReg
(
BaseAddr
,
XEMACPS_TXQBASE_OFFSET
,
0x0U
);
/* Clear the rx base address */
/* Clear the rx base address */
XEmacPs_WriteReg
(
BaseAddr
,
XEMACPS_RXQBASE_OFFSET
,
0x0U
);
/* Update the network config register with reset value */
/* Update the network config register with reset value */
XEmacPs_WriteReg
(
BaseAddr
,
XEMACPS_NWCFG_OFFSET
,
XEMACPS_NWCFG_RESET_MASK
);
/* Update the hash address registers with reset value */
/* Update the hash address registers with reset value */
XEmacPs_WriteReg
(
BaseAddr
,
XEMACPS_HASHL_OFFSET
,
0x0U
);
XEmacPs_WriteReg
(
BaseAddr
,
XEMACPS_HASHH_OFFSET
,
0x0U
);
}
...
...
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_hw.h
浏览文件 @
956664ee
...
...
@@ -25,10 +25,10 @@
* 1.02a asa 11/05/12 Added hash defines for DMACR burst length configuration.
* 1.05a kpc 28/06/13 Added XEmacPs_ResetHw function prototype
* 1.06a asa 11/02/13 Changed the value for XEMACPS_RXBUF_LEN_MASK from 0x3fff
*
to 0x1fff. This fixes the CR#744902.
*
to 0x1fff. This fixes the CR#744902.
* 2.1 srt 07/15/14 Add support for Zynq Ultrascale Mp GEM specification.
* 3.0 kvn 12/16/14 Changed name of XEMACPS_NWCFG_LENGTHERRDSCRD_MASK to
*
XEMACPS_NWCFG_LENERRDSCRD_MASK as it exceeds 31 characters.
*
XEMACPS_NWCFG_LENERRDSCRD_MASK as it exceeds 31 characters.
* 3.0 kpc 1/23/15 Corrected the extended descriptor macro values.
* 3.0 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
* 3.0 hk 03/18/15 Added support for jumbo frames.
...
...
@@ -42,8 +42,8 @@
*
******************************************************************************/
#ifndef XEMACPS_HW_H
/* prevent circular inclusions */
#define XEMACPS_HW_H
/* by using protection macros */
#ifndef XEMACPS_HW_H
/* prevent circular inclusions */
#define XEMACPS_HW_H
/* by using protection macros */
/***************************** Include Files *********************************/
...
...
@@ -80,8 +80,8 @@ extern "C" {
* to specify whether an operation specifies a send or receive channel.
* @{
*/
#define XEMACPS_SEND 1U
/**< send direction */
#define XEMACPS_RECV 2U
/**< receive direction */
#define XEMACPS_SEND 1U
/**< send direction */
#define XEMACPS_RECV 2U
/**< receive direction */
/*@}*/
/** @name MDC clock division
...
...
@@ -250,47 +250,47 @@ typedef enum { MDC_DIV_8 = 0U, MDC_DIV_16, MDC_DIV_32, MDC_DIV_48,
#define XEMACPS_RXUDPCCNT_OFFSET 0x000001B0U
/**< UDP Checksum Error
Counter */
#define XEMACPS_LAST_OFFSET 0x000001B4U
/**< Last statistic counter
offset, for clearing */
offset, for clearing */
#define XEMACPS_1588_SEC_OFFSET 0x000001D0U
/**< 1588 second counter */
#define XEMACPS_1588_NANOSEC_OFFSET 0x000001D4U
/**< 1588 nanosecond counter */
#define XEMACPS_1588_ADJ_OFFSET 0x000001D8U
/**< 1588 nanosecond
adjustment counter */
adjustment counter */
#define XEMACPS_1588_INC_OFFSET 0x000001DCU
/**< 1588 nanosecond
increment counter */
increment counter */
#define XEMACPS_PTP_TXSEC_OFFSET 0x000001E0U
/**< 1588 PTP transmit second
counter */
counter */
#define XEMACPS_PTP_TXNANOSEC_OFFSET 0x000001E4U
/**< 1588 PTP transmit
nanosecond counter */
nanosecond counter */
#define XEMACPS_PTP_RXSEC_OFFSET 0x000001E8U
/**< 1588 PTP receive second
counter */
counter */
#define XEMACPS_PTP_RXNANOSEC_OFFSET 0x000001ECU
/**< 1588 PTP receive
nanosecond counter */
nanosecond counter */
#define XEMACPS_PTPP_TXSEC_OFFSET 0x000001F0U
/**< 1588 PTP peer transmit
second counter */
second counter */
#define XEMACPS_PTPP_TXNANOSEC_OFFSET 0x000001F4U
/**< 1588 PTP peer transmit
nanosecond counter */
nanosecond counter */
#define XEMACPS_PTPP_RXSEC_OFFSET 0x000001F8U
/**< 1588 PTP peer receive
second counter */
second counter */
#define XEMACPS_PTPP_RXNANOSEC_OFFSET 0x000001FCU
/**< 1588 PTP peer receive
nanosecond counter */
nanosecond counter */
#define XEMACPS_INTQ1_STS_OFFSET 0x00000400U
/**< Interrupt Q1 Status
reg */
#define XEMACPS_TXQ1BASE_OFFSET
0x00000440U
/**< TX Q1 Base address
reg */
#define XEMACPS_RXQ1BASE_OFFSET
0x00000480U
/**< RX Q1 Base address
reg */
reg */
#define XEMACPS_TXQ1BASE_OFFSET
0x00000440U
/**< TX Q1 Base address
reg */
#define XEMACPS_RXQ1BASE_OFFSET
0x00000480U
/**< RX Q1 Base address
reg */
#define XEMACPS_MSBBUF_TXQBASE_OFFSET 0x000004C8U
/**< MSB Buffer TX Q Base
reg */
reg */
#define XEMACPS_MSBBUF_RXQBASE_OFFSET 0x000004D4U
/**< MSB Buffer RX Q Base
reg */
reg */
#define XEMACPS_INTQ1_IER_OFFSET 0x00000600U
/**< Interrupt Q1 Enable
reg */
reg */
#define XEMACPS_INTQ1_IDR_OFFSET 0x00000620U
/**< Interrupt Q1 Disable
reg */
reg */
#define XEMACPS_INTQ1_IMR_OFFSET 0x00000640U
/**< Interrupt Q1 Mask
reg */
reg */
/* Define some bit positions for registers. */
...
...
@@ -298,7 +298,7 @@ typedef enum { MDC_DIV_8 = 0U, MDC_DIV_16, MDC_DIV_32, MDC_DIV_48,
* @{
*/
#define XEMACPS_NWCTRL_FLUSH_DPRAM_MASK 0x00040000U
/**< Flush a packet from
Rx SRAM */
Rx SRAM */
#define XEMACPS_NWCTRL_ZEROPAUSETX_MASK 0x00000800U
/**< Transmit zero quantum
pause frame */
#define XEMACPS_NWCTRL_PAUSETX_MASK 0x00000800U
/**< Transmit pause frame */
...
...
@@ -333,7 +333,7 @@ typedef enum { MDC_DIV_8 = 0U, MDC_DIV_16, MDC_DIV_32, MDC_DIV_48,
#define XEMACPS_NWCFG_PAUSECOPYDI_MASK 0x00800000U
/**< Do not copy pause
Frames to memory */
#define XEMACPS_NWCFG_DWIDTH_64_MASK 0x00200000U
/**< 64 bit Data bus width */
#define XEMACPS_NWCFG_MDC_SHIFT_MASK 18U
/**< shift bits for MDC */
#define XEMACPS_NWCFG_MDC_SHIFT_MASK 18U
/**< shift bits for MDC */
#define XEMACPS_NWCFG_MDCCLKDIV_MASK 0x001C0000U
/**< MDC Mask PCLK divisor */
#define XEMACPS_NWCFG_FCSREM_MASK 0x00020000U
/**< Discard FCS from
received frames */
...
...
@@ -382,19 +382,19 @@ typedef enum { MDC_DIV_8 = 0U, MDC_DIV_16, MDC_DIV_32, MDC_DIV_48,
/** @name DMA control register bit definitions
* @{
*/
#define XEMACPS_DMACR_ADDR_WIDTH_64
0x40000000U
/**< 64 bit address bus */
#define XEMACPS_DMACR_TXEXTEND_MASK
0x20000000U
/**< Tx Extended desc mode */
#define XEMACPS_DMACR_RXEXTEND_MASK
0x10000000U
/**< Rx Extended desc mode */
#define XEMACPS_DMACR_RXBUF_MASK
0x00FF0000U
/**< Mask bit for RX buffer
size */
#define XEMACPS_DMACR_RXBUF_SHIFT
16U
/**< Shift bit for RX buffer
size */
#define XEMACPS_DMACR_TCPCKSUM_MASK
0x00000800U
/**< enable/disable TX
checksum offload */
#define XEMACPS_DMACR_TXSIZE_MASK
0x00000400U
/**< TX buffer memory size */
#define XEMACPS_DMACR_RXSIZE_MASK
0x00000300U
/**< RX buffer memory size */
#define XEMACPS_DMACR_ENDIAN_MASK
0x00000080U
/**< endian configuration */
#define XEMACPS_DMACR_BLENGTH_MASK
0x0000001FU
/**< buffer burst length */
#define XEMACPS_DMACR_ADDR_WIDTH_64
0x40000000U
/**< 64 bit address bus */
#define XEMACPS_DMACR_TXEXTEND_MASK
0x20000000U
/**< Tx Extended desc mode */
#define XEMACPS_DMACR_RXEXTEND_MASK
0x10000000U
/**< Rx Extended desc mode */
#define XEMACPS_DMACR_RXBUF_MASK
0x00FF0000U
/**< Mask bit for RX buffer
size */
#define XEMACPS_DMACR_RXBUF_SHIFT
16U
/**< Shift bit for RX buffer
size */
#define XEMACPS_DMACR_TCPCKSUM_MASK
0x00000800U
/**< enable/disable TX
checksum offload */
#define XEMACPS_DMACR_TXSIZE_MASK
0x00000400U
/**< TX buffer memory size */
#define XEMACPS_DMACR_RXSIZE_MASK
0x00000300U
/**< RX buffer memory size */
#define XEMACPS_DMACR_ENDIAN_MASK
0x00000080U
/**< endian configuration */
#define XEMACPS_DMACR_BLENGTH_MASK
0x0000001FU
/**< buffer burst length */
#define XEMACPS_DMACR_SINGLE_AHB_BURST 0x00000001U
/**< single AHB bursts */
#define XEMACPS_DMACR_INCR4_AHB_BURST 0x00000004U
/**< 4 bytes AHB bursts */
#define XEMACPS_DMACR_INCR8_AHB_BURST 0x00000008U
/**< 8 bytes AHB bursts */
...
...
@@ -446,8 +446,8 @@ typedef enum { MDC_DIV_8 = 0U, MDC_DIV_16, MDC_DIV_32, MDC_DIV_48,
#define XEMACPS_INTQ1SR_TXCOMPL_MASK 0x00000080U
/**< Transmit completed OK */
#define XEMACPS_INTQ1SR_TXERR_MASK 0x00000040U
/**< Transmit AMBA Error */
#define XEMACPS_INTQ1_IXR_ALL_MASK
((u32)XEMACPS_INTQ1SR_TXCOMPL_MASK | \
(u32)XEMACPS_INTQ1SR_TXERR_MASK)
#define XEMACPS_INTQ1_IXR_ALL_MASK
((u32)XEMACPS_INTQ1SR_TXCOMPL_MASK | \
(u32)XEMACPS_INTQ1SR_TXERR_MASK)
/*@}*/
...
...
@@ -462,27 +462,27 @@ typedef enum { MDC_DIV_8 = 0U, MDC_DIV_16, MDC_DIV_32, MDC_DIV_48,
#define XEMACPS_IXR_PTPPSRX_MASK 0x00800000U
/**< PTP Pdelay_resp RXed */
#define XEMACPS_IXR_PTPPDRRX_MASK 0x00400000U
/**< PTP Pdelay_req RXed */
#define XEMACPS_IXR_PTPSTX_MASK
0x00200000U
/**< PTP Sync TXed */
#define XEMACPS_IXR_PTPSTX_MASK
0x00200000U
/**< PTP Sync TXed */
#define XEMACPS_IXR_PTPDRTX_MASK 0x00100000U
/**< PTP Delay_req TXed */
#define XEMACPS_IXR_PTPSRX_MASK
0x00080000U
/**< PTP Sync RXed */
#define XEMACPS_IXR_PTPSRX_MASK
0x00080000U
/**< PTP Sync RXed */
#define XEMACPS_IXR_PTPDRRX_MASK 0x00040000U
/**< PTP Delay_req RXed */
#define XEMACPS_IXR_PAUSETX_MASK 0x00004000U
/**< Pause frame transmitted */
#define XEMACPS_IXR_PAUSEZERO_MASK 0x00002000U
/**< Pause time has reached
#define XEMACPS_IXR_PAUSETX_MASK 0x00004000U
/**< Pause frame transmitted */
#define XEMACPS_IXR_PAUSEZERO_MASK 0x00002000U
/**< Pause time has reached
zero */
#define XEMACPS_IXR_PAUSENZERO_MASK 0x00001000U
/**< Pause frame received */
#define XEMACPS_IXR_HRESPNOK_MASK 0x00000800U
/**< hresp not ok */
#define XEMACPS_IXR_RXOVR_MASK 0x00000400U
/**< Receive overrun occurred */
#define XEMACPS_IXR_TXCOMPL_MASK 0x00000080U
/**< Frame transmitted ok */
#define XEMACPS_IXR_TXEXH_MASK 0x00000040U
/**< Transmit err occurred or
#define XEMACPS_IXR_PAUSENZERO_MASK 0x00001000U
/**< Pause frame received */
#define XEMACPS_IXR_HRESPNOK_MASK 0x00000800U
/**< hresp not ok */
#define XEMACPS_IXR_RXOVR_MASK 0x00000400U
/**< Receive overrun occurred */
#define XEMACPS_IXR_TXCOMPL_MASK 0x00000080U
/**< Frame transmitted ok */
#define XEMACPS_IXR_TXEXH_MASK 0x00000040U
/**< Transmit err occurred or
no buffers*/
#define XEMACPS_IXR_RETRY_MASK 0x00000020U
/**< Retry limit exceeded */
#define XEMACPS_IXR_URUN_MASK 0x00000010U
/**< Transmit underrun */
#define XEMACPS_IXR_TXUSED_MASK 0x00000008U
/**< Tx buffer used bit read */
#define XEMACPS_IXR_RXUSED_MASK 0x00000004U
/**< Rx buffer used bit read */
#define XEMACPS_IXR_FRAMERX_MASK 0x00000002U
/**< Frame received ok */
#define XEMACPS_IXR_MGMNT_MASK 0x00000001U
/**< PHY management complete */
#define XEMACPS_IXR_ALL_MASK 0x00007FFFU
/**< Everything! */
#define XEMACPS_IXR_RETRY_MASK 0x00000020U
/**< Retry limit exceeded */
#define XEMACPS_IXR_URUN_MASK 0x00000010U
/**< Transmit underrun */
#define XEMACPS_IXR_TXUSED_MASK 0x00000008U
/**< Tx buffer used bit read */
#define XEMACPS_IXR_RXUSED_MASK 0x00000004U
/**< Rx buffer used bit read */
#define XEMACPS_IXR_FRAMERX_MASK 0x00000002U
/**< Frame received ok */
#define XEMACPS_IXR_MGMNT_MASK 0x00000001U
/**< PHY management complete */
#define XEMACPS_IXR_ALL_MASK 0x00007FFFU
/**< Everything! */
#define XEMACPS_IXR_TX_ERR_MASK ((u32)XEMACPS_IXR_TXEXH_MASK | \
(u32)XEMACPS_IXR_RETRY_MASK | \
...
...
@@ -498,22 +498,22 @@ typedef enum { MDC_DIV_8 = 0U, MDC_DIV_16, MDC_DIV_32, MDC_DIV_48,
/** @name PHY Maintenance bit definitions
* @{
*/
#define XEMACPS_PHYMNTNC_OP_MASK 0x40020000U
/**< operation mask bits */
#define XEMACPS_PHYMNTNC_OP_R_MASK 0x20000000U
/**< read operation */
#define XEMACPS_PHYMNTNC_OP_W_MASK 0x10000000U
/**< write operation */
#define XEMACPS_PHYMNTNC_ADDR_MASK 0x0F800000U
/**< Address bits */
#define XEMACPS_PHYMNTNC_REG_MASK 0x007C0000U
/**< register bits */
#define XEMACPS_PHYMNTNC_DATA_MASK 0x00000FFFU
/**< data bits */
#define XEMACPS_PHYMNTNC_PHAD_SHFT_MSK 23U
/**< Shift bits for PHYAD */
#define XEMACPS_PHYMNTNC_PREG_SHFT_MSK 18U
/**< Shift bits for PHREG */
#define XEMACPS_PHYMNTNC_OP_MASK 0x40020000U
/**< operation mask bits */
#define XEMACPS_PHYMNTNC_OP_R_MASK 0x20000000U
/**< read operation */
#define XEMACPS_PHYMNTNC_OP_W_MASK 0x10000000U
/**< write operation */
#define XEMACPS_PHYMNTNC_ADDR_MASK 0x0F800000U
/**< Address bits */
#define XEMACPS_PHYMNTNC_REG_MASK 0x007C0000U
/**< register bits */
#define XEMACPS_PHYMNTNC_DATA_MASK 0x00000FFFU
/**< data bits */
#define XEMACPS_PHYMNTNC_PHAD_SHFT_MSK 23U
/**< Shift bits for PHYAD */
#define XEMACPS_PHYMNTNC_PREG_SHFT_MSK 18U
/**< Shift bits for PHREG */
/*@}*/
/** @name RX watermark bit definitions
* @{
*/
#define XEMACPS_RXWM_HIGH_MASK
0x0000FFFFU
/**< RXWM high mask */
#define XEMACPS_RXWM_LOW_MASK
0xFFFF0000U
/**< RXWM low mask */
#define XEMACPS_RXWM_LOW_SHFT_MSK 16U
/**< Shift for RXWM low */
#define XEMACPS_RXWM_HIGH_MASK
0x0000FFFFU
/**< RXWM high mask */
#define XEMACPS_RXWM_LOW_MASK
0xFFFF0000U
/**< RXWM low mask */
#define XEMACPS_RXWM_LOW_SHFT_MSK 16U
/**< Shift for RXWM low */
/*@}*/
/* Transmit buffer descriptor status words offset
...
...
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_intr.c
浏览文件 @
956664ee
...
...
@@ -20,16 +20,16 @@
* ----- ---- -------- -------------------------------------------------------
* 1.00a wsy 01/10/10 First release
* 1.03a asa 01/24/13 Fix for CR #692702 which updates error handling for
*
Rx errors. Under heavy Rx traffic, there will be a large
*
number of errors related to receive buffer not available.
*
Because of a HW bug (SI #692601), under such heavy errors,
*
the Rx data path can become unresponsive. To reduce the
*
probabilities for hitting this HW bug, the SW writes to
*
bit 18 to flush a packet from Rx DPRAM immediately. The
*
changes for it are done in the function
*
XEmacPs_IntrHandler.
*
Rx errors. Under heavy Rx traffic, there will be a large
*
number of errors related to receive buffer not available.
*
Because of a HW bug (SI #692601), under such heavy errors,
*
the Rx data path can become unresponsive. To reduce the
*
probabilities for hitting this HW bug, the SW writes to
*
bit 18 to flush a packet from Rx DPRAM immediately. The
*
changes for it are done in the function
*
XEmacPs_IntrHandler.
* 2.1 srt 07/15/14 Add support for Zynq Ultrascale Mp GEM specification
*
and 64-bit changes.
*
and 64-bit changes.
* 3.0 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
* 3.1 hk 07/27/15 Do not call error handler with '0' error code when
* there is no error. CR# 869403
...
...
@@ -77,7 +77,7 @@
*
*****************************************************************************/
LONG
XEmacPs_SetHandler
(
XEmacPs
*
InstancePtr
,
u32
HandlerType
,
void
*
FuncPointer
,
void
*
CallBackRef
)
void
*
FuncPointer
,
void
*
CallBackRef
)
{
LONG
Status
;
Xil_AssertNonvoid
(
InstancePtr
!=
NULL
);
...
...
@@ -86,24 +86,24 @@ LONG XEmacPs_SetHandler(XEmacPs *InstancePtr, u32 HandlerType,
switch
(
HandlerType
)
{
case
XEMACPS_HANDLER_DMASEND
:
Status
=
(
LONG
)(
XST_SUCCESS
);
InstancePtr
->
SendHandler
=
((
XEmacPs_Handler
)(
void
*
)
FuncPointer
);
InstancePtr
->
SendRef
=
CallBackRef
;
break
;
Status
=
(
LONG
)(
XST_SUCCESS
);
InstancePtr
->
SendHandler
=
((
XEmacPs_Handler
)(
void
*
)
FuncPointer
);
InstancePtr
->
SendRef
=
CallBackRef
;
break
;
case
XEMACPS_HANDLER_DMARECV
:
Status
=
(
LONG
)(
XST_SUCCESS
);
InstancePtr
->
RecvHandler
=
((
XEmacPs_Handler
)(
void
*
)
FuncPointer
);
InstancePtr
->
RecvRef
=
CallBackRef
;
break
;
Status
=
(
LONG
)(
XST_SUCCESS
);
InstancePtr
->
RecvHandler
=
((
XEmacPs_Handler
)(
void
*
)
FuncPointer
);
InstancePtr
->
RecvRef
=
CallBackRef
;
break
;
case
XEMACPS_HANDLER_ERROR
:
Status
=
(
LONG
)(
XST_SUCCESS
);
InstancePtr
->
ErrorHandler
=
((
XEmacPs_ErrHandler
)(
void
*
)
FuncPointer
);
InstancePtr
->
ErrorRef
=
CallBackRef
;
break
;
Status
=
(
LONG
)(
XST_SUCCESS
);
InstancePtr
->
ErrorHandler
=
((
XEmacPs_ErrHandler
)(
void
*
)
FuncPointer
);
InstancePtr
->
ErrorRef
=
CallBackRef
;
break
;
default:
Status
=
(
LONG
)(
XST_INVALID_PARAM
);
break
;
}
Status
=
(
LONG
)(
XST_INVALID_PARAM
);
break
;
}
return
Status
;
}
...
...
@@ -130,113 +130,113 @@ void XEmacPs_IntrHandler(void *XEmacPsPtr)
Xil_AssertVoid
(
InstancePtr
!=
NULL
);
Xil_AssertVoid
(
InstancePtr
->
IsReady
==
(
u32
)
XIL_COMPONENT_IS_READY
);
/* This ISR will try to handle as many interrupts as it can in a single
* call. However, in most of the places where the user's error handler
/* This ISR will try to handle as many interrupts as it can in a single
* call. However, in most of the places where the user's error handler
* is called, this ISR exits because it is expected that the user will
* reset the device in nearly all instances.
*/
*/
RegISR
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_ISR_OFFSET
);
XEMACPS_ISR_OFFSET
);
/* Read Transmit Q1 ISR */
/* Read Transmit Q1 ISR */
if
(
InstancePtr
->
Version
>
2
)
RegQ1ISR
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_INTQ1_STS_OFFSET
);
RegQ1ISR
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_INTQ1_STS_OFFSET
);
/* Clear the interrupt status register */
/* Clear the interrupt status register */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_ISR_OFFSET
,
RegISR
);
RegISR
);
/* Receive complete interrupt */
/* Receive complete interrupt */
if
((
RegISR
&
XEMACPS_IXR_FRAMERX_MASK
)
!=
0x00000000U
)
{
/* Clear RX status register RX complete indication but preserve
* error bits if there is any */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_RXSR_OFFSET
,
((
u32
)
XEMACPS_RXSR_FRAMERX_MASK
|
(
u32
)
XEMACPS_RXSR_BUFFNA_MASK
));
InstancePtr
->
RecvHandler
(
InstancePtr
->
RecvRef
);
}
/* Transmit Q1 complete interrupt */
/* Clear RX status register RX complete indication but preserve
* error bits if there is any */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_RXSR_OFFSET
,
((
u32
)
XEMACPS_RXSR_FRAMERX_MASK
|
(
u32
)
XEMACPS_RXSR_BUFFNA_MASK
));
InstancePtr
->
RecvHandler
(
InstancePtr
->
RecvRef
);
}
/* Transmit Q1 complete interrupt */
if
((
InstancePtr
->
Version
>
2
)
&&
((
RegQ1ISR
&
XEMACPS_INTQ1SR_TXCOMPL_MASK
)
!=
0x00000000U
))
{
/* Clear TX status register TX complete indication but preserve
* error bits if there is any */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_INTQ1_STS_OFFSET
,
XEMACPS_INTQ1SR_TXCOMPL_MASK
);
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_TXSR_OFFSET
,
((
u32
)
XEMACPS_TXSR_TXCOMPL_MASK
|
(
u32
)
XEMACPS_TXSR_USEDREAD_MASK
));
InstancePtr
->
SendHandler
(
InstancePtr
->
SendRef
);
}
/* Transmit complete interrupt */
((
RegQ1ISR
&
XEMACPS_INTQ1SR_TXCOMPL_MASK
)
!=
0x00000000U
))
{
/* Clear TX status register TX complete indication but preserve
* error bits if there is any */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_INTQ1_STS_OFFSET
,
XEMACPS_INTQ1SR_TXCOMPL_MASK
);
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_TXSR_OFFSET
,
((
u32
)
XEMACPS_TXSR_TXCOMPL_MASK
|
(
u32
)
XEMACPS_TXSR_USEDREAD_MASK
));
InstancePtr
->
SendHandler
(
InstancePtr
->
SendRef
);
}
/* Transmit complete interrupt */
if
((
RegISR
&
XEMACPS_IXR_TXCOMPL_MASK
)
!=
0x00000000U
)
{
/* Clear TX status register TX complete indication but preserve
* error bits if there is any */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_TXSR_OFFSET
,
((
u32
)
XEMACPS_TXSR_TXCOMPL_MASK
|
(
u32
)
XEMACPS_TXSR_USEDREAD_MASK
));
InstancePtr
->
SendHandler
(
InstancePtr
->
SendRef
);
}
/* Receive error conditions interrupt */
/* Clear TX status register TX complete indication but preserve
* error bits if there is any */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_TXSR_OFFSET
,
((
u32
)
XEMACPS_TXSR_TXCOMPL_MASK
|
(
u32
)
XEMACPS_TXSR_USEDREAD_MASK
));
InstancePtr
->
SendHandler
(
InstancePtr
->
SendRef
);
}
/* Receive error conditions interrupt */
if
((
RegISR
&
XEMACPS_IXR_RX_ERR_MASK
)
!=
0x00000000U
)
{
/* Clear RX status register */
RegSR
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_RXSR_OFFSET
);
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_RXSR_OFFSET
,
RegSR
);
/* Fix for CR # 692702. Write to bit 18 of net_ctrl
* register to flush a packet out of Rx SRAM upon
* an error for receive buffer not available. */
if
((
RegISR
&
XEMACPS_IXR_RXUSED_MASK
)
!=
0x00000000U
)
{
RegCtrl
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
);
RegCtrl
|=
(
u32
)
XEMACPS_NWCTRL_FLUSH_DPRAM_MASK
;
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
,
RegCtrl
);
}
if
(
RegSR
!=
0
)
{
InstancePtr
->
ErrorHandler
(
InstancePtr
->
ErrorRef
,
XEMACPS_RECV
,
RegSR
);
}
}
/* Clear RX status register */
RegSR
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_RXSR_OFFSET
);
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_RXSR_OFFSET
,
RegSR
);
/* Fix for CR # 692702. Write to bit 18 of net_ctrl
* register to flush a packet out of Rx SRAM upon
* an error for receive buffer not available. */
if
((
RegISR
&
XEMACPS_IXR_RXUSED_MASK
)
!=
0x00000000U
)
{
RegCtrl
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
);
RegCtrl
|=
(
u32
)
XEMACPS_NWCTRL_FLUSH_DPRAM_MASK
;
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_NWCTRL_OFFSET
,
RegCtrl
);
}
if
(
RegSR
!=
0
)
{
InstancePtr
->
ErrorHandler
(
InstancePtr
->
ErrorRef
,
XEMACPS_RECV
,
RegSR
);
}
}
/* When XEMACPS_IXR_TXCOMPL_MASK is flagged, XEMACPS_IXR_TXUSED_MASK
* will be asserted the same time.
* Have to distinguish this bit to handle the real error condition.
*/
/* Transmit Q1 error conditions interrupt */
/* Transmit Q1 error conditions interrupt */
if
((
InstancePtr
->
Version
>
2
)
&&
((
RegQ1ISR
&
XEMACPS_INTQ1SR_TXERR_MASK
)
!=
0x00000000U
)
&&
((
RegQ1ISR
&
XEMACPS_INTQ1SR_TXERR_MASK
)
!=
0x00000000U
)
&&
((
RegQ1ISR
&
XEMACPS_INTQ1SR_TXCOMPL_MASK
)
!=
0x00000000U
))
{
/* Clear Interrupt Q1 status register */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_INTQ1_STS_OFFSET
,
RegQ1ISR
);
InstancePtr
->
ErrorHandler
(
InstancePtr
->
ErrorRef
,
XEMACPS_SEND
,
RegQ1ISR
);
}
/* Transmit error conditions interrupt */
/* Clear Interrupt Q1 status register */
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_INTQ1_STS_OFFSET
,
RegQ1ISR
);
InstancePtr
->
ErrorHandler
(
InstancePtr
->
ErrorRef
,
XEMACPS_SEND
,
RegQ1ISR
);
}
/* Transmit error conditions interrupt */
if
(((
RegISR
&
XEMACPS_IXR_TX_ERR_MASK
)
!=
0x00000000U
)
&&
(
!
(
RegISR
&
XEMACPS_IXR_TXCOMPL_MASK
)
!=
0x00000000U
))
{
/* Clear TX status register */
RegSR
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_TXSR_OFFSET
);
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_TXSR_OFFSET
,
RegSR
);
InstancePtr
->
ErrorHandler
(
InstancePtr
->
ErrorRef
,
XEMACPS_SEND
,
RegSR
);
}
/* Clear TX status register */
RegSR
=
XEmacPs_ReadReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_TXSR_OFFSET
);
XEmacPs_WriteReg
(
InstancePtr
->
Config
.
BaseAddress
,
XEMACPS_TXSR_OFFSET
,
RegSR
);
InstancePtr
->
ErrorHandler
(
InstancePtr
->
ErrorRef
,
XEMACPS_SEND
,
RegSR
);
}
}
/** @} */
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/emacps_v3_11/xemacps_sinit.c
浏览文件 @
956664ee
...
...
@@ -60,11 +60,11 @@ XEmacPs_Config *XEmacPs_LookupConfig(u16 DeviceId)
u32
i
;
for
(
i
=
0U
;
i
<
(
u32
)
XPAR_XEMACPS_NUM_INSTANCES
;
i
++
)
{
if
(
XEmacPs_ConfigTable
[
i
].
DeviceId
==
DeviceId
)
{
CfgPtr
=
&
XEmacPs_ConfigTable
[
i
];
break
;
}
}
if
(
XEmacPs_ConfigTable
[
i
].
DeviceId
==
DeviceId
)
{
CfgPtr
=
&
XEmacPs_ConfigTable
[
i
];
break
;
}
}
return
(
XEmacPs_Config
*
)(
CfgPtr
);
}
...
...
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops.h
浏览文件 @
956664ee
...
...
@@ -15,10 +15,10 @@
* Controller.
*
* The GPIO Controller supports the following features:
*
- 4 banks
*
- Masked writes (There are no masked reads)
*
- Bypass mode
*
- Configurable Interrupts (Level/Edge)
*
- 4 banks
*
- Masked writes (There are no masked reads)
*
- Bypass mode
*
- Configurable Interrupts (Level/Edge)
*
* This driver is intended to be RTOS and processor independent. Any needs for
* dynamic memory management, threads or thread mutual exclusion, virtual
...
...
@@ -63,12 +63,12 @@
* 1.00a sv 01/15/10 First Release
* 1.01a sv 04/15/12 Removed the APIs XGpioPs_SetMode, XGpioPs_SetModePin
* XGpioPs_GetMode, XGpioPs_GetModePin as they are not
*
relevant to Zynq device.The interrupts are disabled
*
for output pins on all banks during initialization.
*
relevant to Zynq device.The interrupts are disabled
*
for output pins on all banks during initialization.
* 1.02a hk 08/22/13 Added low level reset API
* 2.1 hk 04/29/14 Use Input data register DATA_RO for read. CR# 771667.
* 2.2 sk
10/13/14 Used Pin number in Bank instead of pin number
*
passed to APIs. CR# 822636
* 2.2 sk
10/13/14 Used Pin number in Bank instead of pin number
*
passed to APIs. CR# 822636
* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
* 3.1 kvn 04/13/15 Add support for Zynq Ultrascale+ MP. CR# 856980.
* ms 03/17/17 Added readme.txt file in examples folder for doxygen
...
...
@@ -96,8 +96,8 @@
* </pre>
*
******************************************************************************/
#ifndef XGPIOPS_H
/* prevent circular inclusions */
#define XGPIOPS_H
/* by using protection macros */
#ifndef XGPIOPS_H
/* prevent circular inclusions */
#define XGPIOPS_H
/* by using protection macros */
#ifdef __cplusplus
extern
"C"
{
...
...
@@ -123,37 +123,37 @@ extern "C" {
#define XGPIOPS_IRQ_TYPE_LEVEL_LOW 0x04U
/**< Interrupt on low level */
/*@}*/
#define XGPIOPS_BANK_MAX_PINS
(u32)32
/**< Max pins in a GPIO bank */
#define XGPIOPS_BANK0
0x00U
/**< GPIO Bank 0 */
#define XGPIOPS_BANK1
0x01U
/**< GPIO Bank 1 */
#define XGPIOPS_BANK2
0x02U
/**< GPIO Bank 2 */
#define XGPIOPS_BANK3
0x03U
/**< GPIO Bank 3 */
#define XGPIOPS_BANK_MAX_PINS
(u32)32
/**< Max pins in a GPIO bank */
#define XGPIOPS_BANK0
0x00U
/**< GPIO Bank 0 */
#define XGPIOPS_BANK1
0x01U
/**< GPIO Bank 1 */
#define XGPIOPS_BANK2
0x02U
/**< GPIO Bank 2 */
#define XGPIOPS_BANK3
0x03U
/**< GPIO Bank 3 */
#ifdef XPAR_PSU_GPIO_0_BASEADDR
#define XGPIOPS_BANK4
0x04U
/**< GPIO Bank 4 */
#define XGPIOPS_BANK5
0x05U
/**< GPIO Bank 5 */
#define XGPIOPS_BANK4
0x04U
/**< GPIO Bank 4 */
#define XGPIOPS_BANK5
0x05U
/**< GPIO Bank 5 */
#endif
#define XGPIOPS_MAX_BANKS_ZYNQMP
0x06U
/**< Max banks in a
* Zynq Ultrascale+ MP GPIO device
*/
#define XGPIOPS_MAX_BANKS
0x04U
/**< Max banks in a Zynq GPIO device */
#define XGPIOPS_MAX_BANKS_ZYNQMP
0x06U
/**< Max banks in a
* Zynq Ultrascale+ MP GPIO device
*/
#define XGPIOPS_MAX_BANKS
0x04U
/**< Max banks in a Zynq GPIO device */
#define XGPIOPS_DEVICE_MAX_PIN_NUM_ZYNQMP
(u32)174
/**< Max pins in the
* Zynq Ultrascale+ MP GPIO device
* 0 - 25, Bank 0
* 26 - 51, Bank 1
* 52 - 77, Bank 2
* 78 - 109, Bank 3
* 110 - 141, Bank 4
* 142 - 173, Bank 5
*/
#define XGPIOPS_DEVICE_MAX_PIN_NUM
(u32)118
/**< Max pins in the Zynq GPIO device
* 0 - 31, Bank 0
* 32 - 53, Bank 1
* 54 - 85, Bank 2
* 86 - 117, Bank 3
*/
#define XGPIOPS_DEVICE_MAX_PIN_NUM_ZYNQMP
(u32)174
/**< Max pins in the
* Zynq Ultrascale+ MP GPIO device
* 0 - 25, Bank 0
* 26 - 51, Bank 1
* 52 - 77, Bank 2
* 78 - 109, Bank 3
* 110 - 141, Bank 4
* 142 - 173, Bank 5
*/
#define XGPIOPS_DEVICE_MAX_PIN_NUM
(u32)118
/**< Max pins in the Zynq GPIO device
* 0 - 31, Bank 0
* 32 - 53, Bank 1
* 54 - 85, Bank 2
* 86 - 117, Bank 3
*/
/**************************** Type Definitions *******************************/
...
...
@@ -166,10 +166,10 @@ extern "C" {
* processing should be performed.
*
* @param CallBackRef is a callback reference passed in by the upper layer
*
when setting the callback functions for a GPIO bank. It is
*
passed back to the upper layer when the callback is invoked. Its
*
type is not important to the driver component, so it is a void
*
pointer.
*
when setting the callback functions for a GPIO bank. It is
*
passed back to the upper layer when the callback is invoked. Its
*
type is not important to the driver component, so it is a void
*
pointer.
* @param Bank is the bank for which the interrupt status has changed.
* @param Status is the Interrupt status of the GPIO bank.
*
...
...
@@ -180,8 +180,8 @@ typedef void (*XGpioPs_Handler) (void *CallBackRef, u32 Bank, u32 Status);
* This typedef contains configuration information for a device.
*/
typedef
struct
{
u16
DeviceId
;
/**< Unique ID of device */
u32
BaseAddr
;
/**< Register base address */
u16
DeviceId
;
/**< Unique ID of device */
u32
BaseAddr
;
/**< Register base address */
}
XGpioPs_Config
;
/**
...
...
@@ -190,13 +190,13 @@ typedef struct {
* to a variable of this type is then passed to the driver API functions.
*/
typedef
struct
{
XGpioPs_Config
GpioConfig
;
/**< Device configuration */
u32
IsReady
;
/**< Device is initialized and ready */
XGpioPs_Handler
Handler
;
/**< Status handlers for all banks */
void
*
CallBackRef
;
/**< Callback ref for bank handlers */
u32
Platform
;
/**< Platform data */
u32
MaxPinNum
;
/**< Max pins in the GPIO device */
u8
MaxBanks
;
/**< Max banks in a GPIO device */
XGpioPs_Config
GpioConfig
;
/**< Device configuration */
u32
IsReady
;
/**< Device is initialized and ready */
XGpioPs_Handler
Handler
;
/**< Status handlers for all banks */
void
*
CallBackRef
;
/**< Callback ref for bank handlers */
u32
Platform
;
/**< Platform data */
u32
MaxPinNum
;
/**< Max pins in the GPIO device */
u8
MaxBanks
;
/**< Max banks in a GPIO device */
u32
PmcGpio
;
/**< Flag for accessing PS GPIO for versal*/
}
XGpioPs
;
...
...
@@ -206,7 +206,7 @@ typedef struct {
/* Functions in xgpiops.c */
s32
XGpioPs_CfgInitialize
(
XGpioPs
*
InstancePtr
,
const
XGpioPs_Config
*
ConfigPtr
,
u32
EffectiveAddr
);
u32
EffectiveAddr
);
/* Bank APIs in xgpiops.c */
u32
XGpioPs_Read
(
const
XGpioPs
*
InstancePtr
,
u8
Bank
);
...
...
@@ -240,11 +240,11 @@ u32 XGpioPs_IntrGetEnabled(const XGpioPs *InstancePtr, u8 Bank);
u32
XGpioPs_IntrGetStatus
(
const
XGpioPs
*
InstancePtr
,
u8
Bank
);
void
XGpioPs_IntrClear
(
const
XGpioPs
*
InstancePtr
,
u8
Bank
,
u32
Mask
);
void
XGpioPs_SetIntrType
(
const
XGpioPs
*
InstancePtr
,
u8
Bank
,
u32
IntrType
,
u32
IntrPolarity
,
u32
IntrOnAny
);
u32
IntrPolarity
,
u32
IntrOnAny
);
void
XGpioPs_GetIntrType
(
const
XGpioPs
*
InstancePtr
,
u8
Bank
,
u32
*
IntrType
,
u32
*
IntrPolarity
,
u32
*
IntrOnAny
);
u32
*
IntrPolarity
,
u32
*
IntrOnAny
);
void
XGpioPs_SetCallbackHandler
(
XGpioPs
*
InstancePtr
,
void
*
CallBackRef
,
XGpioPs_Handler
FuncPointer
);
XGpioPs_Handler
FuncPointer
);
void
XGpioPs_IntrHandler
(
const
XGpioPs
*
InstancePtr
);
/* Pin APIs in xgpiops_intr.c */
...
...
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_g.c
浏览文件 @
956664ee
...
...
@@ -22,10 +22,10 @@
XGpioPs_Config
XGpioPs_ConfigTable
[
XPAR_XGPIOPS_NUM_INSTANCES
]
=
{
{
XPAR_PSU_GPIO_0_DEVICE_ID
,
XPAR_PSU_GPIO_0_BASEADDR
}
{
XPAR_PSU_GPIO_0_DEVICE_ID
,
XPAR_PSU_GPIO_0_BASEADDR
}
};
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_hw.c
浏览文件 @
956664ee
...
...
@@ -56,7 +56,7 @@
*
* @return None
*
* @note
None.
* @note
None.
*
******************************************************************************/
void
XGpioPs_ResetHw
(
u32
BaseAddress
)
...
...
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_hw.h
浏览文件 @
956664ee
...
...
@@ -28,8 +28,8 @@
* </pre>
*
******************************************************************************/
#ifndef XGPIOPS_HW_H
/* prevent circular inclusions */
#define XGPIOPS_HW_H
/* by using protection macros */
#ifndef XGPIOPS_HW_H
/* prevent circular inclusions */
#define XGPIOPS_HW_H
/* by using protection macros */
#ifdef __cplusplus
extern
"C"
{
...
...
@@ -48,17 +48,17 @@ extern "C" {
*/
#define XGPIOPS_DATA_LSW_OFFSET 0x00000000U
/* Mask and Data Register LSW, WO */
#define XGPIOPS_DATA_MSW_OFFSET 0x00000004U
/* Mask and Data Register MSW, WO */
#define XGPIOPS_DATA_OFFSET
0x00000040U
/* Data Register, RW */
#define XGPIOPS_DATA_RO_OFFSET
0x00000060U
/* Data Register - Input, RO */
#define XGPIOPS_DIRM_OFFSET
0x00000204U
/* Direction Mode Register, RW */
#define XGPIOPS_OUTEN_OFFSET
0x00000208U
/* Output Enable Register, RW */
#define XGPIOPS_INTMASK_OFFSET
0x0000020CU
/* Interrupt Mask Register, RO */
#define XGPIOPS_INTEN_OFFSET
0x00000210U
/* Interrupt Enable Register, WO */
#define XGPIOPS_INTDIS_OFFSET
0x00000214U
/* Interrupt Disable Register, WO*/
#define XGPIOPS_INTSTS_OFFSET
0x00000218U
/* Interrupt Status Register, RO */
#define XGPIOPS_INTTYPE_OFFSET
0x0000021CU
/* Interrupt Type Register, RW */
#define XGPIOPS_INTPOL_OFFSET
0x00000220U
/* Interrupt Polarity Register, RW */
#define XGPIOPS_INTANY_OFFSET
0x00000224U
/* Interrupt On Any Register, RW */
#define XGPIOPS_DATA_OFFSET
0x00000040U
/* Data Register, RW */
#define XGPIOPS_DATA_RO_OFFSET
0x00000060U
/* Data Register - Input, RO */
#define XGPIOPS_DIRM_OFFSET
0x00000204U
/* Direction Mode Register, RW */
#define XGPIOPS_OUTEN_OFFSET
0x00000208U
/* Output Enable Register, RW */
#define XGPIOPS_INTMASK_OFFSET
0x0000020CU
/* Interrupt Mask Register, RO */
#define XGPIOPS_INTEN_OFFSET
0x00000210U
/* Interrupt Enable Register, WO */
#define XGPIOPS_INTDIS_OFFSET
0x00000214U
/* Interrupt Disable Register, WO*/
#define XGPIOPS_INTSTS_OFFSET
0x00000218U
/* Interrupt Status Register, RO */
#define XGPIOPS_INTTYPE_OFFSET
0x0000021CU
/* Interrupt Type Register, RW */
#define XGPIOPS_INTPOL_OFFSET
0x00000220U
/* Interrupt Polarity Register, RW */
#define XGPIOPS_INTANY_OFFSET
0x00000224U
/* Interrupt On Any Register, RW */
/* @} */
/** @name Register offsets for each Bank.
...
...
@@ -70,7 +70,7 @@ extern "C" {
/* @} */
/* For backwards compatibility */
#define XGPIOPS_BYPM_MASK_OFFSET
(u32)0x40
#define XGPIOPS_BYPM_MASK_OFFSET
(u32)0x40
/** @name Interrupt type reset values for each bank
* @{
...
...
@@ -111,11 +111,11 @@ extern "C" {
*
* @return The 32-bit value of the register
*
* @note
None.
* @note
None.
*
*****************************************************************************/
#define XGpioPs_ReadReg(BaseAddr, RegOffset)
\
Xil_In32((BaseAddr) + (u32)(RegOffset))
#define XGpioPs_ReadReg(BaseAddr, RegOffset)
\
Xil_In32((BaseAddr) + (u32)(RegOffset))
/****************************************************************************/
/**
...
...
@@ -128,11 +128,11 @@ extern "C" {
*
* @return None.
*
* @note
None.
* @note
None.
*
*****************************************************************************/
#define XGpioPs_WriteReg(BaseAddr, RegOffset, Data)
\
Xil_Out32((BaseAddr) + (u32)(RegOffset), (u32)(Data))
#define XGpioPs_WriteReg(BaseAddr, RegOffset, Data)
\
Xil_Out32((BaseAddr) + (u32)(RegOffset), (u32)(Data))
/************************** Function Prototypes ******************************/
...
...
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_intr.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_selftest.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/gpiops_v3_7/xgpiops_sinit.c
浏览文件 @
956664ee
...
...
@@ -13,7 +13,7 @@
* This file contains the implementation of the XGpioPs driver's static
* initialization functionality.
*
* @note
None.
* @note
None.
*
* <pre>
*
...
...
@@ -53,9 +53,9 @@ extern XGpioPs_Config XGpioPs_ConfigTable[XPAR_XGPIOPS_NUM_INSTANCES];
* @param DeviceId is the unique device ID of the device being looked up.
*
* @return A pointer to the configuration table entry corresponding to the
*
given device ID, or NULL if no match is found.
*
given device ID, or NULL if no match is found.
*
* @note
None.
* @note
None.
*
******************************************************************************/
XGpioPs_Config
*
XGpioPs_LookupConfig
(
u16
DeviceId
)
...
...
@@ -64,11 +64,11 @@ XGpioPs_Config *XGpioPs_LookupConfig(u16 DeviceId)
u32
Index
;
for
(
Index
=
0U
;
Index
<
(
u32
)
XPAR_XGPIOPS_NUM_INSTANCES
;
Index
++
)
{
if
(
XGpioPs_ConfigTable
[
Index
].
DeviceId
==
DeviceId
)
{
CfgPtr
=
&
XGpioPs_ConfigTable
[
Index
];
break
;
}
}
if
(
XGpioPs_ConfigTable
[
Index
].
DeviceId
==
DeviceId
)
{
CfgPtr
=
&
XGpioPs_ConfigTable
[
Index
];
break
;
}
}
return
(
XGpioPs_Config
*
)
CfgPtr
;
}
...
...
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps.h
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_card.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_g.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_host.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_hw.h
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_options.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/sdps_v3_9/xsdps_sinit.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/netif/xadapter.h
浏览文件 @
956664ee
...
...
@@ -73,9 +73,9 @@ enum ethernet_link_status {
};
void
eth_link_detect
(
struct
netif
*
netif
);
void
lwip_raw_init
();
int
xemacif_input
(
struct
netif
*
netif
);
void
xemacif_input_thread
(
struct
netif
*
netif
);
void
lwip_raw_init
();
int
xemacif_input
(
struct
netif
*
netif
);
void
xemacif_input_thread
(
struct
netif
*
netif
);
struct
netif
*
xemac_add
(
struct
netif
*
netif
,
ip_addr_t
*
ipaddr
,
ip_addr_t
*
netmask
,
ip_addr_t
*
gw
,
unsigned
char
*
mac_ethernet_address
,
...
...
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/netif/xemacpsif.h
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/netif/xpqueue.h
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/netif/xtopology.h
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xadapter.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xemac_ieee_reg.h
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xemacpsif.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xemacpsif_dma.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xemacpsif_hw.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xemacpsif_physpeed.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xpqueue.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xemacpsif/xtopology_g.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xil_io.h
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xil_printf.h
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xil_types.h
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xparameters_ps.h
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xplatform_info.h
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/Zynq_HAL_Driver/xstatus.h
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/drv_sdcard.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/drv_uart.c
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/drivers/zynqmp-r5.h
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
bsp/zynqmp-r5-axu4ev/rtconfig.py
浏览文件 @
956664ee
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录