From 94c32212c4cb737e1cdb3d129efd57f021099a05 Mon Sep 17 00:00:00 2001
From: rtel
Date: Thu, 28 Apr 2016 12:23:52 +0000
Subject: [PATCH] Update the Xilinx UltraScale+ 64-bit demo to use the hardware
definition and BSP from version 2016.1 of the SDK.
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@2453 1d2547de-c912-0410-9cb9-b8ca96c0e9e2
---
.../RTOSDemo_A53_bsp/.cproject | 4 +-
.../RTOSDemo_A53_bsp/.project | 2 +-
.../RTOSDemo_A53_bsp/.sdkproject | 2 +-
.../RTOSDemo_A53_bsp/Makefile | 62 +-
.../psu_cortexa53_0/include/xaxipmon.h | 931 -
.../psu_cortexa53_0/include/xaxipmon_hw.h | 566 -
.../psu_cortexa53_0/include/xcanps.h | 567 -
.../psu_cortexa53_0/include/xcanps_hw.h | 366 -
.../psu_cortexa53_0/include/xcsudma.h | 414 -
.../psu_cortexa53_0/include/xcsudma_hw.h | 308 -
.../psu_cortexa53_0/include/xemacps.h | 783 -
.../psu_cortexa53_0/include/xemacps_bd.h | 799 -
.../psu_cortexa53_0/include/xemacps_bdring.h | 235 -
.../psu_cortexa53_0/include/xenv.h | 187 -
.../psu_cortexa53_0/include/xenv_standalone.h | 368 -
.../psu_cortexa53_0/include/xgpiops.h | 277 -
.../psu_cortexa53_0/include/xil_cache.h | 75 -
.../psu_cortexa53_0/include/xil_hal.h | 61 -
.../psu_cortexa53_0/include/xil_macroback.h | 1052 -
.../psu_cortexa53_0/include/xil_testio.h | 91 -
.../psu_cortexa53_0/include/xil_testmem.h | 162 -
.../psu_cortexa53_0/include/xipipsu.h | 277 -
.../psu_cortexa53_0/include/xipipsu_hw.h | 76 -
.../psu_cortexa53_0/include/xnandpsu.h | 584 -
.../psu_cortexa53_0/include/xnandpsu_bbm.h | 211 -
.../psu_cortexa53_0/include/xnandpsu_hw.h | 504 -
.../psu_cortexa53_0/include/xnandpsu_onfi.h | 340 -
.../psu_cortexa53_0/include/xparameters.h | 2745 +-
.../psu_cortexa53_0/include/xparameters_ps.h | 317 -
.../psu_cortexa53_0/include/xplatform_info.h | 81 -
.../psu_cortexa53_0/include/xpseudo_asm.h | 53 -
.../psu_cortexa53_0/include/xqspipsu.h | 263 -
.../psu_cortexa53_0/include/xqspipsu_hw.h | 837 -
.../psu_cortexa53_0/include/xreg_cortexa53.h | 182 -
.../psu_cortexa53_0/include/xsdps_hw.h | 605 -
.../psu_cortexa53_0/include/xspips.h | 691 -
.../psu_cortexa53_0/include/xspips_hw.h | 310 -
.../psu_cortexa53_0/include/xtime_l.h | 88 -
.../psu_cortexa53_0/include/xttcps_hw.h | 209 -
.../psu_cortexa53_0/include/xuartps_hw.h | 424 -
.../psu_cortexa53_0/include/xusbpsu.h | 569 -
.../psu_cortexa53_0/include/xusbpsu_hw.h | 457 -
.../psu_cortexa53_0/include/xwdtps.h | 219 -
.../psu_cortexa53_0/include/xwdtps_hw.h | 190 -
.../psu_cortexa53_0/include/xzdma.h | 669 -
.../libsrc/axipmon_v6_2/src/xaxipmon_hw.h | 566 -
.../src/Makefile | 0
.../src/xaxipmon.c | 292 +-
.../src/xaxipmon.h | 199 +-
.../src/xaxipmon_g.c | 254 +-
.../libsrc/axipmon_v6_4/src/xaxipmon_hw.h | 571 +
.../src/xaxipmon_selftest.c | 22 +-
.../src/xaxipmon_sinit.c | 10 +-
.../{canps_v3_0 => canps_v3_1}/src/Makefile | 0
.../{canps_v3_0 => canps_v3_1}/src/xcanps.c | 19 +-
.../{canps_v3_0 => canps_v3_1}/src/xcanps.h | 8 +
.../{canps_v3_0 => canps_v3_1}/src/xcanps_g.c | 114 +-
.../src/xcanps_hw.c | 3 +
.../src/xcanps_hw.h | 3 +
.../src/xcanps_intr.c | 17 +-
.../src/xcanps_selftest.c | 3 +
.../src/xcanps_sinit.c | 3 +
.../libsrc/coresightps_dcc_v1_2/src/Makefile | 40 +
.../src/xcoresightpsdcc.c | 181 +
.../src/xcoresightpsdcc.h} | 57 +-
.../cpu_cortexa53_v1_0/src/xcpu_cortexa53.h | 39 -
.../src/Makefile | 0
.../cpu_cortexa53_v1_1/src}/xcpu_cortexa53.h | 4 +
.../libsrc/csudma_v1_0/src/xcsudma.c | 3 +
.../libsrc/csudma_v1_0/src/xcsudma.h | 4 +
.../libsrc/csudma_v1_0/src/xcsudma_g.c | 110 +-
.../libsrc/csudma_v1_0/src/xcsudma_hw.h | 3 +
.../libsrc/csudma_v1_0/src/xcsudma_intr.c | 3 +
.../libsrc/csudma_v1_0/src/xcsudma_selftest.c | 3 +
.../libsrc/csudma_v1_0/src/xcsudma_sinit.c | 3 +
.../libsrc/emacps_v3_0/src/xemacps_hw.h | 647 -
.../{emacps_v3_0 => emacps_v3_2}/src/Makefile | 0
.../src/xemacps.c | 35 +-
.../src/xemacps.h | 11 +-
.../src/xemacps_bd.h | 9 +-
.../src/xemacps_bdring.c | 3 +
.../src/xemacps_bdring.h | 3 +
.../src/xemacps_control.c | 18 +-
.../src/xemacps_g.c | 122 +-
.../src/xemacps_hw.c | 3 +
.../emacps_v3_2/src}/xemacps_hw.h | 13 +-
.../src/xemacps_intr.c | 12 +-
.../src/xemacps_sinit.c | 3 +
.../libsrc/gpiops_v3_0/src/xgpiops_hw.h | 161 -
.../{gpiops_v3_0 => gpiops_v3_1}/src/Makefile | 0
.../src/xgpiops.c | 198 +-
.../src/xgpiops.h | 61 +-
.../src/xgpiops_g.c | 110 +-
.../src/xgpiops_hw.c | 70 +-
.../gpiops_v3_1/src}/xgpiops_hw.h | 23 +-
.../src/xgpiops_intr.c | 98 +-
.../src/xgpiops_selftest.c | 7 +-
.../src/xgpiops_sinit.c | 3 +
.../libsrc/iicps_v3_0/src/xiicps.h | 416 -
.../libsrc/iicps_v3_0/src/xiicps_hw.h | 380 -
.../{iicps_v3_0 => iicps_v3_1}/src/Makefile | 0
.../{iicps_v3_0 => iicps_v3_1}/src/xiicps.c | 3 +
.../iicps_v3_1/src}/xiicps.h | 4 +
.../{iicps_v3_0 => iicps_v3_1}/src/xiicps_g.c | 122 +-
.../src/xiicps_hw.c | 3 +
.../iicps_v3_1/src}/xiicps_hw.h | 3 +
.../src/xiicps_intr.c | 3 +
.../src/xiicps_master.c | 20 +-
.../src/xiicps_options.c | 3 +
.../src/xiicps_selftest.c | 3 +
.../src/xiicps_sinit.c | 3 +
.../src/xiicps_slave.c | 3 +
.../{ipipsu_v1_0 => ipipsu_v2_0}/src/Makefile | 0
.../src/xipipsu.c | 9 +-
.../src/xipipsu.h | 4 +
.../src/xipipsu_g.c | 210 +-
.../src/xipipsu_hw.h | 3 +
.../src/xipipsu_sinit.c | 3 +
.../libsrc/nandpsu_v1_0/src/Makefile | 83 -
.../libsrc/nandpsu_v1_0/src/xnandpsu.c | 4195 --
.../libsrc/nandpsu_v1_0/src/xnandpsu.h | 584 -
.../libsrc/nandpsu_v1_0/src/xnandpsu_bbm.c | 1087 -
.../libsrc/nandpsu_v1_0/src/xnandpsu_bbm.h | 211 -
.../libsrc/nandpsu_v1_0/src/xnandpsu_g.c | 70 -
.../libsrc/nandpsu_v1_0/src/xnandpsu_hw.h | 504 -
.../libsrc/nandpsu_v1_0/src/xnandpsu_onfi.c | 112 -
.../libsrc/nandpsu_v1_0/src/xnandpsu_onfi.h | 340 -
.../libsrc/qspipsu_v1_0/src/xqspipsu.c | 532 +-
.../libsrc/qspipsu_v1_0/src/xqspipsu.h | 123 +-
.../libsrc/qspipsu_v1_0/src/xqspipsu_g.c | 115 +-
.../libsrc/qspipsu_v1_0/src/xqspipsu_hw.h | 390 +-
.../qspipsu_v1_0/src/xqspipsu_options.c | 205 +-
.../libsrc/qspipsu_v1_0/src/xqspipsu_sinit.c | 9 +-
.../{spips_v3_0 => rtcpsu_v1_2}/src/Makefile | 10 +-
.../libsrc/rtcpsu_v1_2/src/xrtcpsu.c | 422 +
.../libsrc/rtcpsu_v1_2/src/xrtcpsu.h | 387 +
.../src/xrtcpsu_g.c} | 110 +-
.../libsrc/rtcpsu_v1_2/src/xrtcpsu_hw.h | 362 +
.../libsrc/rtcpsu_v1_2/src/xrtcpsu_intr.c | 232 +
.../src/xrtcpsu_selftest.c} | 89 +-
.../src/xrtcpsu_sinit.c} | 59 +-
.../libsrc/scugic_v3_0/src/xscugic.h | 315 -
.../libsrc/scugic_v3_0/src/xscugic_hw.h | 637 -
.../{scugic_v3_0 => scugic_v3_2}/src/Makefile | 0
.../src/xscugic.c | 63 +-
.../scugic_v3_2/src}/xscugic.h | 14 +-
.../src/xscugic_g.c | 112 +-
.../src/xscugic_hw.c | 3 +
.../scugic_v3_2/src}/xscugic_hw.h | 7 +-
.../src/xscugic_intr.c | 3 +
.../src/xscugic_selftest.c | 3 +
.../src/xscugic_sinit.c | 3 +
.../libsrc/sdps_v2_4/src/xsdps.h | 208 -
.../libsrc/sdps_v2_4/src/xsdps_hw.h | 605 -
.../libsrc/sdps_v2_4/src/xsdps_options.c | 792 -
.../{sdps_v2_4 => sdps_v2_7}/src/Makefile | 0
.../{sdps_v2_4 => sdps_v2_7}/src/xsdps.c | 1049 +-
.../{include => libsrc/sdps_v2_7/src}/xsdps.h | 68 +-
.../{sdps_v2_4 => sdps_v2_7}/src/xsdps_g.c | 123 +-
.../libsrc/sdps_v2_7/src/xsdps_hw.h | 1186 +
.../libsrc/sdps_v2_7/src/xsdps_options.c | 1152 +
.../src/xsdps_sinit.c | 10 +-
.../libsrc/spips_v3_0/src/xspips.c | 1126 -
.../libsrc/spips_v3_0/src/xspips.h | 691 -
.../libsrc/spips_v3_0/src/xspips_g.c | 61 -
.../libsrc/spips_v3_0/src/xspips_hw.h | 310 -
.../libsrc/spips_v3_0/src/xspips_options.c | 430 -
.../libsrc/spips_v3_0/src/xspips_selftest.c | 156 -
.../libsrc/standalone_v5_0/src/bspconfig.h | 40 -
.../libsrc/standalone_v5_0/src/config.make | 2 -
.../libsrc/standalone_v5_0/src/sleep.h | 50 -
.../libsrc/standalone_v5_0/src/vectors.h | 81 -
.../libsrc/standalone_v5_0/src/xbasic_types.h | 119 -
.../standalone_v5_0/src/xddr_xmpu0_cfg.h | 1304 -
.../standalone_v5_0/src/xddr_xmpu1_cfg.h | 1304 -
.../standalone_v5_0/src/xddr_xmpu2_cfg.h | 1304 -
.../standalone_v5_0/src/xddr_xmpu3_cfg.h | 1304 -
.../standalone_v5_0/src/xddr_xmpu4_cfg.h | 1304 -
.../standalone_v5_0/src/xddr_xmpu5_cfg.h | 1304 -
.../libsrc/standalone_v5_0/src/xdebug.h | 32 -
.../libsrc/standalone_v5_0/src/xfpd_slcr.h | 382 -
.../standalone_v5_0/src/xfpd_slcr_secure.h | 277 -
.../standalone_v5_0/src/xfpd_xmpu_cfg.h | 1304 -
.../standalone_v5_0/src/xfpd_xmpu_sink.h | 81 -
.../libsrc/standalone_v5_0/src/xil_assert.h | 189 -
.../standalone_v5_0/src/xil_cache_vxworks.h | 93 -
.../standalone_v5_0/src/xil_exception.h | 168 -
.../libsrc/standalone_v5_0/src/xil_io.h | 240 -
.../libsrc/standalone_v5_0/src/xil_printf.h | 44 -
.../standalone_v5_0/src/xil_testcache.h | 63 -
.../libsrc/standalone_v5_0/src/xil_types.h | 184 -
.../standalone_v5_0/src/xiou_secure_slcr.h | 174 -
.../libsrc/standalone_v5_0/src/xiou_slcr.h | 4029 --
.../libsrc/standalone_v5_0/src/xlpd_slcr.h | 5667 ---
.../standalone_v5_0/src/xlpd_slcr_secure.h | 141 -
.../libsrc/standalone_v5_0/src/xlpd_xppu.h | 858 -
.../standalone_v5_0/src/xlpd_xppu_sink.h | 81 -
.../standalone_v5_0/src/xocm_xmpu_cfg.h | 1304 -
.../standalone_v5_0/src/xpseudo_asm_gcc.h | 169 -
.../libsrc/standalone_v5_0/src/xstatus.h | 430 -
.../src/Makefile | 18 +-
.../src/_exit.c | 2 +-
.../src/_open.c | 2 +-
.../src/_sbrk.c | 2 +-
.../src/abort.c | 2 +-
.../src/asm_vectors.S | 2 +-
.../src/boot.S | 30 +-
.../standalone_v5_4/src}/bspconfig.h | 80 +-
.../src/changelog.txt | 102 +
.../src/close.c | 2 +-
.../libsrc/standalone_v5_4/src/config.make | 2 +
.../src/errno.c | 2 +-
.../src/fcntl.c | 2 +-
.../src/fstat.c | 2 +-
.../src/getpid.c | 2 +-
.../src/inbyte.c | 28 +-
.../src/includes_ps}/xddr_xmpu0_cfg.h | 0
.../src/includes_ps}/xddr_xmpu1_cfg.h | 0
.../src/includes_ps}/xddr_xmpu2_cfg.h | 0
.../src/includes_ps}/xddr_xmpu3_cfg.h | 0
.../src/includes_ps}/xddr_xmpu4_cfg.h | 0
.../src/includes_ps}/xddr_xmpu5_cfg.h | 0
.../src/includes_ps}/xfpd_slcr.h | 0
.../src/includes_ps}/xfpd_slcr_secure.h | 0
.../src/includes_ps}/xfpd_xmpu_cfg.h | 0
.../src/includes_ps}/xfpd_xmpu_sink.h | 0
.../src/includes_ps}/xiou_secure_slcr.h | 0
.../src/includes_ps}/xiou_slcr.h | 0
.../src/includes_ps}/xlpd_slcr.h | 0
.../src/includes_ps}/xlpd_slcr_secure.h | 0
.../src/includes_ps}/xlpd_xppu.h | 0
.../src/includes_ps}/xlpd_xppu_sink.h | 0
.../src/includes_ps}/xocm_xmpu_cfg.h | 0
.../src/initialise_monitor_handles.c | 2 +-
.../src/isatty.c | 2 +-
.../src/kill.c | 2 +-
.../src/lseek.c | 2 +-
.../src/open.c | 2 +-
.../src/outbyte.c | 30 +-
.../src/print.c | 0
.../src/putnum.c | 0
.../src/read.c | 2 +-
.../src/sbrk.c | 2 +-
.../src/sleep.c | 19 +-
.../standalone_v5_4/src}/sleep.h | 2 +-
.../src/translation_table.S} | 131 +-
.../src/uart.c | 2 +-
.../src/unlink.c | 2 +-
.../src/usleep.c | 19 +-
.../src/vectors.c | 2 +-
.../standalone_v5_4/src}/vectors.h | 2 +-
.../src/write.c | 2 +-
.../standalone_v5_4/src}/xbasic_types.h | 2 +-
.../standalone_v5_4/src}/xdebug.h | 0
.../src/xenv.h | 2 +-
.../src/xenv_standalone.h | 2 +-
.../src/xil-crt0.S | 15 +-
.../src/xil_assert.c | 3 +-
.../standalone_v5_4/src}/xil_assert.h | 2 +-
.../src/xil_cache.c | 26 +-
.../src/xil_cache.h | 8 +-
.../standalone_v5_4/src}/xil_cache_vxworks.h | 2 +-
.../src/xil_exception.c | 2 +-
.../standalone_v5_4/src}/xil_exception.h | 2 +-
.../src/xil_hal.h | 2 +-
.../src/xil_io.c | 10 +-
.../standalone_v5_4/src}/xil_io.h | 2 +-
.../src/xil_macroback.h | 2 +-
.../src/xil_mmu.c | 25 +-
.../src/xil_mmu.h | 28 +-
.../src/xil_printf.c | 81 +-
.../standalone_v5_4/src}/xil_printf.h | 0
.../src/xil_testcache.c | 2 +-
.../standalone_v5_4/src}/xil_testcache.h | 2 +-
.../src/xil_testio.c | 2 +-
.../src/xil_testio.h | 2 +-
.../src/xil_testmem.c | 2 +-
.../src/xil_testmem.h | 2 +-
.../standalone_v5_4/src}/xil_types.h | 18 +-
.../src/xparameters_ps.h | 61 +-
.../src/xplatform_info.c | 32 +-
.../src/xplatform_info.h | 14 +-
.../src/xpseudo_asm.h | 2 +-
.../standalone_v5_4/src}/xpseudo_asm_gcc.h | 6 +-
.../src/xreg_cortexa53.h | 2 +-
.../standalone_v5_4/src}/xstatus.h | 2 +-
.../src/xtime_l.c | 2 +-
.../src/xtime_l.h | 15 +-
.../src/Makefile | 10 +-
.../libsrc/sysmonpsu_v1_0/src/xsysmonpsu.c | 1749 +
.../libsrc/sysmonpsu_v1_0/src/xsysmonpsu.h | 592 +
.../src/xsysmonpsu_g.c} | 110 +-
.../libsrc/sysmonpsu_v1_0/src/xsysmonpsu_hw.h | 2268 +
.../sysmonpsu_v1_0/src/xsysmonpsu_intr.c | 250 +
.../src/xsysmonpsu_selftest.c} | 129 +-
.../src/xsysmonpsu_sinit.c} | 61 +-
.../libsrc/ttcps_v3_0/src/xttcps.h | 408 -
.../{ttcps_v3_0 => ttcps_v3_1}/src/Makefile | 0
.../{ttcps_v3_0 => ttcps_v3_1}/src/xttcps.c | 10 +
.../ttcps_v3_1/src}/xttcps.h | 4 +
.../{ttcps_v3_0 => ttcps_v3_1}/src/xttcps_g.c | 222 +-
.../src/xttcps_hw.h | 3 +
.../src/xttcps_options.c | 3 +
.../src/xttcps_selftest.c | 3 +
.../src/xttcps_sinit.c | 3 +
.../libsrc/uartps_v3_0/src/xuartps.h | 509 -
.../{uartps_v3_0 => uartps_v3_1}/src/Makefile | 0
.../src/xuartps.c | 152 +-
.../uartps_v3_1/src}/xuartps.h | 48 +-
.../src/xuartps_g.c | 126 +-
.../src/xuartps_hw.c | 43 +-
.../src/xuartps_hw.h | 37 +-
.../src/xuartps_intr.c | 85 +-
.../src/xuartps_options.c | 115 +-
.../src/xuartps_selftest.c | 23 +-
.../src/xuartps_sinit.c | 3 +
.../libsrc/usbpsu_v1_0/src/xusbpsu.c | 689 -
.../libsrc/usbpsu_v1_0/src/xusbpsu.h | 569 -
.../src/xusbpsu_controltransfers.c | 702 -
.../libsrc/usbpsu_v1_0/src/xusbpsu_endpoint.c | 925 -
.../libsrc/usbpsu_v1_0/src/xusbpsu_hw.h | 457 -
.../libsrc/usbpsu_v1_0/src/xusbpsu_intr.c | 403 -
.../libsrc/wdtps_v3_0/src/xwdtps.c | 3 +
.../libsrc/wdtps_v3_0/src/xwdtps.h | 4 +
.../libsrc/wdtps_v3_0/src/xwdtps_g.c | 118 +-
.../libsrc/wdtps_v3_0/src/xwdtps_hw.h | 3 +
.../libsrc/wdtps_v3_0/src/xwdtps_selftest.c | 3 +
.../libsrc/wdtps_v3_0/src/xwdtps_sinit.c | 3 +
.../libsrc/zdma_v1_0/src/xzdma_hw.h | 380 -
.../{zdma_v1_0 => zdma_v1_1}/src/Makefile | 0
.../{zdma_v1_0 => zdma_v1_1}/src/xzdma.c | 40 +-
.../{zdma_v1_0 => zdma_v1_1}/src/xzdma.h | 16 +-
.../{zdma_v1_0 => zdma_v1_1}/src/xzdma_g.c | 262 +-
.../zdma_v1_1/src}/xzdma_hw.h | 3 +
.../{zdma_v1_0 => zdma_v1_1}/src/xzdma_intr.c | 3 +
.../src/xzdma_selftest.c | 3 +
.../src/xzdma_sinit.c | 3 +
.../RTOSDemo_A53_bsp/system.mss | 1381 +-
.../ZynqMP_hw_platform/.project | 10 +-
.../ZynqMP_hw_platform/design_1.hwh | 3511 --
.../ZynqMP_hw_platform/design_1_bd.tcl | 180 -
.../ZynqMP_hw_platform/hwdef.xml | 11 -
.../ZynqMP_hw_platform/psu_init.c | 25746 +++++++---
.../ZynqMP_hw_platform/psu_init.h | 33019 ++++++++++---
.../ZynqMP_hw_platform/psu_init.html | 38701 ----------------
.../ZynqMP_hw_platform/psu_init.tcl | 13886 +++++-
.../ZynqMP_hw_platform/psu_init_gpl.c | 25701 +++++++---
.../ZynqMP_hw_platform/psu_init_gpl.h | 33007 ++++++++++---
.../ZynqMP_hw_platform/psu_pmucfg.c | 158 -
.../ZynqMP_hw_platform/system.hdf | Bin 21568 -> 809917 bytes
350 files changed, 120520 insertions(+), 134169 deletions(-)
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xaxipmon.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xaxipmon_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcanps.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcanps_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcsudma.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcsudma_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xemacps.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xemacps_bd.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xemacps_bdring.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xenv.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xenv_standalone.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xgpiops.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_cache.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_hal.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_macroback.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_testio.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_testmem.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xipipsu.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xipipsu_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu_bbm.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu_onfi.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xparameters_ps.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xplatform_info.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xpseudo_asm.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xqspipsu.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xqspipsu_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xreg_cortexa53.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xsdps_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xspips.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xspips_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xtime_l.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xttcps_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xuartps_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xusbpsu.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xusbpsu_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xwdtps.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xwdtps_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xzdma.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_2/src/xaxipmon_hw.h
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{axipmon_v6_2 => axipmon_v6_4}/src/Makefile (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{axipmon_v6_2 => axipmon_v6_4}/src/xaxipmon.c (88%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{axipmon_v6_2 => axipmon_v6_4}/src/xaxipmon.h (83%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{axipmon_v6_2 => axipmon_v6_4}/src/xaxipmon_g.c (94%)
create mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_4/src/xaxipmon_hw.h
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{axipmon_v6_2 => axipmon_v6_4}/src/xaxipmon_selftest.c (89%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{axipmon_v6_2 => axipmon_v6_4}/src/xaxipmon_sinit.c (92%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{canps_v3_0 => canps_v3_1}/src/Makefile (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{canps_v3_0 => canps_v3_1}/src/xcanps.c (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{canps_v3_0 => canps_v3_1}/src/xcanps.h (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{canps_v3_0 => canps_v3_1}/src/xcanps_g.c (89%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{canps_v3_0 => canps_v3_1}/src/xcanps_hw.c (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{canps_v3_0 => canps_v3_1}/src/xcanps_hw.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{canps_v3_0 => canps_v3_1}/src/xcanps_intr.c (96%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{canps_v3_0 => canps_v3_1}/src/xcanps_selftest.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{canps_v3_0 => canps_v3_1}/src/xcanps_sinit.c (98%)
create mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/coresightps_dcc_v1_2/src/Makefile
create mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/coresightps_dcc_v1_2/src/xcoresightpsdcc.c
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include/xil_mmu.h => libsrc/coresightps_dcc_v1_2/src/xcoresightpsdcc.h} (67%)
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/cpu_cortexa53_v1_0/src/xcpu_cortexa53.h
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{cpu_cortexa53_v1_0 => cpu_cortexa53_v1_1}/src/Makefile (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/cpu_cortexa53_v1_1/src}/xcpu_cortexa53.h (96%)
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_hw.h
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{emacps_v3_0 => emacps_v3_2}/src/Makefile (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{emacps_v3_0 => emacps_v3_2}/src/xemacps.c (95%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{emacps_v3_0 => emacps_v3_2}/src/xemacps.h (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{emacps_v3_0 => emacps_v3_2}/src/xemacps_bd.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{emacps_v3_0 => emacps_v3_2}/src/xemacps_bdring.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{emacps_v3_0 => emacps_v3_2}/src/xemacps_bdring.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{emacps_v3_0 => emacps_v3_2}/src/xemacps_control.c (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{emacps_v3_0 => emacps_v3_2}/src/xemacps_g.c (83%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{emacps_v3_0 => emacps_v3_2}/src/xemacps_hw.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/emacps_v3_2/src}/xemacps_hw.h (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{emacps_v3_0 => emacps_v3_2}/src/xemacps_intr.c (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{emacps_v3_0 => emacps_v3_2}/src/xemacps_sinit.c (98%)
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_hw.h
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{gpiops_v3_0 => gpiops_v3_1}/src/Makefile (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{gpiops_v3_0 => gpiops_v3_1}/src/xgpiops.c (82%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{gpiops_v3_0 => gpiops_v3_1}/src/xgpiops.h (91%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{gpiops_v3_0 => gpiops_v3_1}/src/xgpiops_g.c (90%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{gpiops_v3_0 => gpiops_v3_1}/src/xgpiops_hw.c (81%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/gpiops_v3_1/src}/xgpiops_hw.h (90%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{gpiops_v3_0 => gpiops_v3_1}/src/xgpiops_intr.c (90%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{gpiops_v3_0 => gpiops_v3_1}/src/xgpiops_selftest.c (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{gpiops_v3_0 => gpiops_v3_1}/src/xgpiops_sinit.c (98%)
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_hw.h
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{iicps_v3_0 => iicps_v3_1}/src/Makefile (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{iicps_v3_0 => iicps_v3_1}/src/xiicps.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/iicps_v3_1/src}/xiicps.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{iicps_v3_0 => iicps_v3_1}/src/xiicps_g.c (90%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{iicps_v3_0 => iicps_v3_1}/src/xiicps_hw.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/iicps_v3_1/src}/xiicps_hw.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{iicps_v3_0 => iicps_v3_1}/src/xiicps_intr.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{iicps_v3_0 => iicps_v3_1}/src/xiicps_master.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{iicps_v3_0 => iicps_v3_1}/src/xiicps_options.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{iicps_v3_0 => iicps_v3_1}/src/xiicps_selftest.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{iicps_v3_0 => iicps_v3_1}/src/xiicps_sinit.c (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{iicps_v3_0 => iicps_v3_1}/src/xiicps_slave.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{ipipsu_v1_0 => ipipsu_v2_0}/src/Makefile (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{ipipsu_v1_0 => ipipsu_v2_0}/src/xipipsu.c (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{ipipsu_v1_0 => ipipsu_v2_0}/src/xipipsu.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{ipipsu_v1_0 => ipipsu_v2_0}/src/xipipsu_g.c (91%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{ipipsu_v1_0 => ipipsu_v2_0}/src/xipipsu_hw.h (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{ipipsu_v1_0 => ipipsu_v2_0}/src/xipipsu_sinit.c (98%)
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/Makefile
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu.c
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_bbm.c
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_bbm.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_g.c
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_onfi.c
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_onfi.h
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{spips_v3_0 => rtcpsu_v1_2}/src/Makefile (81%)
create mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu.c
create mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu.h
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{usbpsu_v1_0/src/xusbpsu_g.c => rtcpsu_v1_2/src/xrtcpsu_g.c} (84%)
create mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_hw.h
create mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_intr.c
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{nandpsu_v1_0/src/xnandpsu_sinit.c => rtcpsu_v1_2/src/xrtcpsu_selftest.c} (60%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{spips_v3_0/src/xspips_sinit.c => rtcpsu_v1_2/src/xrtcpsu_sinit.c} (67%)
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_hw.h
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{scugic_v3_0 => scugic_v3_2}/src/Makefile (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{scugic_v3_0 => scugic_v3_2}/src/xscugic.c (91%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/scugic_v3_2/src}/xscugic.h (94%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{scugic_v3_0 => scugic_v3_2}/src/xscugic_g.c (90%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{scugic_v3_0 => scugic_v3_2}/src/xscugic_hw.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/scugic_v3_2/src}/xscugic_hw.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{scugic_v3_0 => scugic_v3_2}/src/xscugic_intr.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{scugic_v3_0 => scugic_v3_2}/src/xscugic_selftest.c (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{scugic_v3_0 => scugic_v3_2}/src/xscugic_sinit.c (98%)
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps_options.c
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{sdps_v2_4 => sdps_v2_7}/src/Makefile (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{sdps_v2_4 => sdps_v2_7}/src/xsdps.c (51%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/sdps_v2_7/src}/xsdps.h (78%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{sdps_v2_4 => sdps_v2_7}/src/xsdps_g.c (86%)
create mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps_hw.h
create mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps_options.c
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{sdps_v2_4 => sdps_v2_7}/src/xsdps_sinit.c (94%)
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips.c
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_g.c
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_options.c
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_selftest.c
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/bspconfig.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/config.make
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/sleep.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/vectors.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xbasic_types.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xddr_xmpu0_cfg.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xddr_xmpu1_cfg.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xddr_xmpu2_cfg.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xddr_xmpu3_cfg.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xddr_xmpu4_cfg.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xddr_xmpu5_cfg.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xdebug.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xfpd_slcr.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xfpd_slcr_secure.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xfpd_xmpu_cfg.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xfpd_xmpu_sink.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_assert.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_cache_vxworks.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_exception.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_io.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_printf.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testcache.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_types.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xiou_secure_slcr.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xiou_slcr.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xlpd_slcr.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xlpd_slcr_secure.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xlpd_xppu.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xlpd_xppu_sink.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xocm_xmpu_cfg.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xpseudo_asm_gcc.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xstatus.h
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/Makefile (86%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/_exit.c (96%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/_open.c (96%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/_sbrk.c (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/abort.c (96%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/asm_vectors.S (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/boot.S (92%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src}/bspconfig.h (90%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/changelog.txt (65%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/close.c (96%)
create mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/config.make
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/errno.c (96%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/fcntl.c (96%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/fstat.c (96%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/getpid.c (96%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/inbyte.c (93%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xddr_xmpu0_cfg.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xddr_xmpu1_cfg.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xddr_xmpu2_cfg.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xddr_xmpu3_cfg.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xddr_xmpu4_cfg.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xddr_xmpu5_cfg.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xfpd_slcr.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xfpd_slcr_secure.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xfpd_xmpu_cfg.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xfpd_xmpu_sink.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xiou_secure_slcr.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xiou_slcr.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xlpd_slcr.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xlpd_slcr_secure.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xlpd_xppu.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xlpd_xppu_sink.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src/includes_ps}/xocm_xmpu_cfg.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/initialise_monitor_handles.c (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/isatty.c (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/kill.c (96%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/lseek.c (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/open.c (96%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/outbyte.c (93%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/print.c (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/putnum.c (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/read.c (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/sbrk.c (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/sleep.c (79%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src}/sleep.h (96%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0/src/translation_table.s => standalone_v5_4/src/translation_table.S} (52%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/uart.c (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/unlink.c (96%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/usleep.c (80%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/vectors.c (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src}/vectors.h (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/write.c (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src}/xbasic_types.h (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src}/xdebug.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xenv.h (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xenv_standalone.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil-crt0.S (88%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil_assert.c (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src}/xil_assert.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil_cache.c (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil_cache.h (91%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src}/xil_cache_vxworks.h (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil_exception.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src}/xil_exception.h (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil_hal.h (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil_io.c (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src}/xil_io.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil_macroback.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil_mmu.c (87%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil_mmu.h (77%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil_printf.c (80%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src}/xil_printf.h (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil_testcache.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src}/xil_testcache.h (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil_testio.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil_testio.h (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil_testmem.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xil_testmem.h (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src}/xil_types.h (90%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xparameters_ps.h (82%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xplatform_info.c (81%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xplatform_info.h (89%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xpseudo_asm.h (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src}/xpseudo_asm_gcc.h (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xreg_cortexa53.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/standalone_v5_4/src}/xstatus.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xtime_l.c (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{standalone_v5_0 => standalone_v5_4}/src/xtime_l.h (87%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{usbpsu_v1_0 => sysmonpsu_v1_0}/src/Makefile (79%)
create mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu.c
create mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu.h
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{nandpsu_v1_0/src/xnandps_g.c => sysmonpsu_v1_0/src/xsysmonpsu_g.c} (84%)
create mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu_hw.h
create mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu_intr.c
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{spips_v3_0/src/xspips_hw.c => sysmonpsu_v1_0/src/xsysmonpsu_selftest.c} (50%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{usbpsu_v1_0/src/xusbpsu_sinit.c => sysmonpsu_v1_0/src/xsysmonpsu_sinit.c} (66%)
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps.h
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{ttcps_v3_0 => ttcps_v3_1}/src/Makefile (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{ttcps_v3_0 => ttcps_v3_1}/src/xttcps.c (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/ttcps_v3_1/src}/xttcps.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{ttcps_v3_0 => ttcps_v3_1}/src/xttcps_g.c (92%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{ttcps_v3_0 => ttcps_v3_1}/src/xttcps_hw.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{ttcps_v3_0 => ttcps_v3_1}/src/xttcps_options.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{ttcps_v3_0 => ttcps_v3_1}/src/xttcps_selftest.c (98%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{ttcps_v3_0 => ttcps_v3_1}/src/xttcps_sinit.c (98%)
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps.h
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{uartps_v3_0 => uartps_v3_1}/src/Makefile (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{uartps_v3_0 => uartps_v3_1}/src/xuartps.c (89%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/uartps_v3_1/src}/xuartps.h (93%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{uartps_v3_0 => uartps_v3_1}/src/xuartps_g.c (91%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{uartps_v3_0 => uartps_v3_1}/src/xuartps_hw.c (92%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{uartps_v3_0 => uartps_v3_1}/src/xuartps_hw.h (91%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{uartps_v3_0 => uartps_v3_1}/src/xuartps_intr.c (88%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{uartps_v3_0 => uartps_v3_1}/src/xuartps_options.c (94%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{uartps_v3_0 => uartps_v3_1}/src/xuartps_selftest.c (95%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{uartps_v3_0 => uartps_v3_1}/src/xuartps_sinit.c (98%)
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu.c
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_controltransfers.c
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_endpoint.c
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_hw.h
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_intr.c
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/zdma_v1_0/src/xzdma_hw.h
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{zdma_v1_0 => zdma_v1_1}/src/Makefile (100%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{zdma_v1_0 => zdma_v1_1}/src/xzdma.c (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{zdma_v1_0 => zdma_v1_1}/src/xzdma.h (97%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{zdma_v1_0 => zdma_v1_1}/src/xzdma_g.c (92%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/{include => libsrc/zdma_v1_1/src}/xzdma_hw.h (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{zdma_v1_0 => zdma_v1_1}/src/xzdma_intr.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{zdma_v1_0 => zdma_v1_1}/src/xzdma_selftest.c (99%)
rename FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/{zdma_v1_0 => zdma_v1_1}/src/xzdma_sinit.c (98%)
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/ZynqMP_hw_platform/design_1.hwh
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/ZynqMP_hw_platform/design_1_bd.tcl
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/ZynqMP_hw_platform/hwdef.xml
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/ZynqMP_hw_platform/psu_init.html
delete mode 100644 FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/ZynqMP_hw_platform/psu_pmucfg.c
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/.cproject b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/.cproject
index 52ff9756f..921899024 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/.cproject
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/.cproject
@@ -1,8 +1,8 @@
-
-
+
+
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/.project b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/.project
index c43704810..13da3a086 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/.project
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/.project
@@ -1,7 +1,7 @@
RTOSDemo_A53_bsp
- Created by SDK v2015.1
+ Created by SDK v2016.1
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/.sdkproject b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/.sdkproject
index c622ab61b..94db498f6 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/.sdkproject
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/.sdkproject
@@ -1,4 +1,4 @@
THIRPARTY=false
-HW_PROJECT_REFERENCE=ZynqMP_hw_platform
+HW_PROJECT_REFERENCE=ZynqMP_ZCU102_hw_platform
PROCESSOR=psu_cortexa53_0
MSS_FILE=system.mss
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/Makefile
index 6a5a092a1..71f250e6a 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/Makefile
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/Makefile
@@ -1,31 +1,31 @@
-# Makefile generated by Xilinx.
-
-PROCESSOR = psu_cortexa53_0
-LIBRARIES = ${PROCESSOR}/lib/libxil.a
-BSP_MAKEFILES := $(wildcard $(PROCESSOR)/libsrc/*/src/Makefile)
-SUBDIRS := $(patsubst %/Makefile, %, $(BSP_MAKEFILES))
-
-ifneq (,$(findstring win,$(RDI_PLATFORM)))
- SHELL = CMD
-endif
-
-all: libs
- @echo 'Finished building libraries'
-
-include: $(addsuffix /make.include,$(SUBDIRS))
-
-libs: $(addsuffix /make.libs,$(SUBDIRS))
-
-$(PROCESSOR)/lib/libxil.a: $(PROCESSOR)/lib/libxil_init.a
- cp -f $< $@
-
-%/make.include: $(if $(wildcard $(PROCESSOR)/lib/libxil_init.a),$(PROCESSOR)/lib/libxil.a,)
- @echo "Running Make include in $(subst /make.include,,$@)"
- $(MAKE) -C $(subst /make.include,,$@) -s include "SHELL=$(SHELL)" "COMPILER=aarch64-none-elf-gcc" "ARCHIVER=aarch64-none-elf-ar" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=-g -O0"
-
-%/make.libs: include
- @echo "Running Make libs in $(subst /make.libs,,$@)"
- $(MAKE) -C $(subst /make.libs,,$@) -s libs "SHELL=$(SHELL)" "COMPILER=aarch64-none-elf-gcc" "ARCHIVER=aarch64-none-elf-ar" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=-g -O0"
-
-clean:
- rm -f ${PROCESSOR}/lib/libxil.a
+# Makefile generated by Xilinx.
+
+PROCESSOR = psu_cortexa53_0
+LIBRARIES = ${PROCESSOR}/lib/libxil.a
+BSP_MAKEFILES := $(wildcard $(PROCESSOR)/libsrc/*/src/Makefile)
+SUBDIRS := $(patsubst %/Makefile, %, $(BSP_MAKEFILES))
+
+ifneq (,$(findstring win,$(RDI_PLATFORM)))
+ SHELL = CMD
+endif
+
+all: libs
+ @echo 'Finished building libraries'
+
+include: $(addsuffix /make.include,$(SUBDIRS))
+
+libs: $(addsuffix /make.libs,$(SUBDIRS))
+
+$(PROCESSOR)/lib/libxil.a: $(PROCESSOR)/lib/libxil_init.a
+ cp -f $< $@
+
+%/make.include: $(if $(wildcard $(PROCESSOR)/lib/libxil_init.a),$(PROCESSOR)/lib/libxil.a,)
+ @echo "Running Make include in $(subst /make.include,,$@)"
+ $(MAKE) -C $(subst /make.include,,$@) -s include "SHELL=$(SHELL)" "COMPILER=aarch64-none-elf-gcc" "ARCHIVER=aarch64-none-elf-ar" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=-g"
+
+%/make.libs: include
+ @echo "Running Make libs in $(subst /make.libs,,$@)"
+ $(MAKE) -C $(subst /make.libs,,$@) -s libs "SHELL=$(SHELL)" "COMPILER=aarch64-none-elf-gcc" "ARCHIVER=aarch64-none-elf-ar" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=-g"
+
+clean:
+ rm -f ${PROCESSOR}/lib/libxil.a
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xaxipmon.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xaxipmon.h
deleted file mode 100644
index e21397108..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xaxipmon.h
+++ /dev/null
@@ -1,931 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2007 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/****************************************************************************/
-/**
-*
-* @file xaxipmon.h
-*
-* The XAxiPmon driver supports the Xilinx AXI Performance Monitor device.
-*
-* The AXI Performance Monitor device provides following features:
-*
-* Configurable number of Metric Counters and Incrementers
-* Computes performance metrics for Agents connected to
-* monitor slots (Up to 8 slots)
-*
-* The following Metrics can be computed:
-*
-* Metrics computed for an AXI4 MM agent:
-* Write Request Count: Total number of write requests by/to the agent.
-* Read Request Count: Total number of read requests given by/to the
-* agent.
-* Read Latency: It is defined as the time from the start of read address
-* transaction to the beginning of the read data service.
-* Write Latency: It is defined as the period needed a master completes
-* write data transaction, i.e. from write address
-* transaction to write response from slave.
-* Write Byte Count: Total number of bytes written by/to the agent.
-* This metric is helpful when calculating the
-* throughput of the system.
-* Read Byte Count: Total number of bytes read from/by the agent.
-* Average Write Latency: Average write latency seen by the agent.
-* It can be derived from total write latency
-* and the write request count.
-* Average Read Latency: Average read latency seen by the agent. It can be
-* derived from total read latency and the read
-* request count.
-* Master Write Idle Cycle Count: Number of idle cycles caused by the
-* masters during write transactions to
-* the slave.
-* Slave Write Idle Cycle Count: Number of idle cycles caused by this slave
-* during write transactions to the slave.
-* Master Read Idle Cycle Count: Number of idle cycles caused by the
-* master during read transactions to the
-* slave.
-* Slave Read Idle Cycle Count: Number of idle cycles caused by this slave
-* during read transactions to the slave.
-*
-* Metrics computed for an AXI4-Stream agent:
-*
-* Transfer Cycle Count: Total number of writes by/to the agent.
-* Data Byte Count: Total number of data bytes written by/to the agent.
-* This metric helps in calculating the throughput
-* of the system.
-* Position Byte Count: Total number of position bytes transferred.
-* Null Byte Count: Total number of null bytes transferred.
-* Packet Count: Total number of packets transferred.
-*
-* There are three modes : Advanced, Profile and Trace.
-* - Advanced mode has 10 Mertic Counters, Sampled Metric Counters, Incrementors
-* and Sampled Incrementors.
-* - Profile mode has only 47 Metric Counters and Sampled Metric Counters.
-* - Trace mode has no Counters.
-* User should refer to the hardware device specification for detailed
-* information about the device.
-*
-* This header file contains the prototypes of driver functions that can
-* be used to access the AXI Performance Monitor device.
-*
-*
-* Initialization and Configuration
-*
-* The device driver enables higher layer software (e.g., an application) to
-* communicate to the AXI Performance Monitor device.
-*
-* XAxiPmon_CfgInitialize() API is used to initialize the AXI Performance Monitor
-* device. The user needs to first call the XAxiPmon_LookupConfig() API which
-* returns the Configuration structure pointer which is passed as a parameter to
-* the XAxiPmon_CfgInitialize() API.
-*
-*
-* Interrupts
-*
-* The AXI Performance Monitor does not support Interrupts
-*
-*
-* Virtual Memory
-*
-* This driver supports Virtual Memory. The RTOS is responsible for calculating
-* the correct device base address in Virtual Memory space.
-*
-*
-* Threads
-*
-* This driver is not thread safe. Any needs for threads or thread mutual
-* exclusion must be satisfied by the layer above this driver.
-*
-* Asserts
-*
-* Asserts are used within all Xilinx drivers to enforce constraints on argument
-* values. Asserts can be turned off on a system-wide basis by defining, at
-* compile time, the NDEBUG identifier. By default, asserts are turned on and it
-* is recommended that users leave asserts on during development.
-*
-*
-* Building the driver
-*
-* The XAxiPmon driver is composed of several source files. This allows the user
-* to build and link only those parts of the driver that are necessary.
-*
-* Limitations of the driver
-*
-*
-*
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ----- -------- -----------------------------------------------------
-* 1.00a bss 02/27/12 First release
-* 2.00a bss 06/23/12 Updated to support v2_00a version of IP.
-* 3.00a bss 09/03/12 To support v2_01_a version of IP:
-* Deleted XAxiPmon_SetAgent, XAxiPmon_GetAgent APIs and
-* added XAPM_FLAG_EVENT, XAPM_FLAG_EVNTSTAR,
-* XAPM_FLAG_EVNTSTOP.
-* Deleted XAxiPmon_SetAgent, XAxiPmon_GetAgent APIs and
-* modified XAxiPmon_SetMetrics, XAxiPmon_GetMetrics APIs
-* in xaxipmon.c
-* Deleted XAPM_AGENT_OFFSET Macro in xaxipmon_hw.h
-* 3.01a bss 10/25/12 To support new version of IP:
-* Added XAPM_MCXLOGEN_OFFSET macros in xaxipmon_hw.h.
-* Added XAxiPmon_SetMetricCounterCutOff,
-* XAxiPmon_GetMetricCounterCutOff,
-* XAxiPmon_EnableExternalTrigger and
-* XAxiPmon_DisableExternalTrigger APIs in xaxipmon.c
-* Modified XAxiPmon_SetMetrics and XAxiPmon_GetMetrics
-* (CR #683746) in xaxipmon.c
-* Added XAxiPmon_EnableEventLog,
-* XAxiPmon_DisableMetricsCounter,
-* XAxiPmon_EnableMetricsCounter APIs in xaxipmon.c to
-* replace macros in this file.
-* Added XAPM_FLAG_XXX macros.
-* Added XAxiPmon_StartCounters and XAxiPmon_StopCounters
-* APIs (CR #683799).
-* Added XAxiPmon_StartEventLog and XAxiPmon_StopEventLog
-* APIs (CR #683801).
-* Added XAxiPmon_GetMetricName API (CR #683803).
-* Deleted XAxiPmon_SetAgent, XAxiPmon_GetAgent
-* declarations (CR #677337)
-* 4.00a bss 01/17/13 To support new version of IP:
-* Added XAPM_METRIC_SET_12 to XAPM_METRIC_SET_15 macros.
-* Added XAxiPmon_SetLogEnableRanges,
-* XAxiPmon_GetLogEnableRanges,
-* XAxiPmon_EnableMetricCounterTrigger,
-* XAxiPmon_DisableMetricCounterTrigger,
-* XAxiPmon_EnableEventLogTrigger,
-* XAxiPmon_DisableEventLogTrigger,
-* XAxiPmon_SetWriteLatencyId,
-* XAxiPmon_SetReadLatencyId,
-* XAxiPmon_GetWriteLatencyId,
-* XAxiPmon_GetReadLatencyId APIs and removed
-* XAxiPmon_SetMetricCounterCutOff,
-* XAxiPmon_GetMetricCounterCutOff,
-* XAxiPmon_EnableExternalTrigger and
-* XAxiPmon_DisableExternalTrigger APIs in xaxipmon.c
-* Added XAPM_LATENCYID_OFFSET,
-* XAPM_CR_EVTLOG_EXTTRIGGER_MASK,
-* XAPM_LATENCYID_RID_MASK and XAPM_LATENCYID_WID_MASK in
-* xaxipmon_hw.h
-* 5.00a bss 08/26/13 To support new version of IP:
-* XAxiPmon_SampleMetrics Macro.
-* Modified XAxiPmon_CfgInitialize, Assert functions
-* Added XAxiPmon_GetMetricCounter,
-* XAxiPmon_SetSampleInterval, XAxiPmon_GetSampleInterval,
-* XAxiPmon_SetWrLatencyStart, XAxiPmon_SetWrLatencyEnd,
-* XAxiPmon_SetRdLatencyStart, XAxiPmon_SetRdLatencyEnd,
-* XAxiPmon_GetWrLatencyStart, XAxiPmon_GetWrLatencyEnd,
-* XAxiPmon_GetRdLatencyStart, XAxiPmon_GetRdLatencyEnd,
-* XAxiPmon_SetWriteIdMask, XAxiPmon_SetReadIdMask,
-* XAxiPmon_GetWriteIdMask and XAxiPmon_GetReadIdMask APIs
-* Renamed :
-* XAxiPmon_SetWriteLatencyId to
-* XAxiPmon_SetWriteId, XAxiPmon_SetReadLatencyId to
-* XAxiPmon_SetReadId, XAxiPmon_GetWriteLatencyId to
-* XAxiPmon_GetWriteId and XAxiPmon_SetReadLatencyId to
-* XAxiPmon_GetReadId. in xaxipmon.c
-* Added Macros XAPM_MC10_OFFSET to XAPM_MC47_OFFSET,
-* XAPM_SMC10_OFFSET to XAPM_SMC47_OFFSET,
-* XAPM_IDMASK_OFFSET, XAPM_CR_IDFILTER_ENABLE_MASK,
-* XAPM_CR_WRLATENCY_START_MASK,
-* XAPM_CR_WRLATENCY_END_MASK,
-* XAPM_CR_RDLATENCY_START_MASK,
-* XAPM_CR_RDLATENCY_END_MASK and
-* XAPM_MAX_COUNTERS_PROFILE.
-* Renamed:
-* XAPM_LATENCYID_OFFSET to XAPM_ID_OFFSET,
-* XAPM_LATENCYID_RID_MASK to XAPM_ID_RID_MASK,
-* XAPM_LATENCYID_WID_MASK to XAPM_ID_WID_MASK.
-* in xaxipmon_hw.h.
-* Modified driver tcl to generate new parameters
-* ScaleFactor, ModeProfile, ModeTrace and ModeAdvanced
-* in Config structure.
-* 6.0 adk 19/12/13 Updated as per the New Tcl API's
-* 6.1 adk 16/04/14 Updated the driver tcl for the newly added parameters in
-* The Axi pmon IP.
-* 6.2 bss 04/21/14 Updated XAxiPmon_CfgInitialize in xaxipmon.c to Reset
-* counters and FIFOs based on Modes(CR#782671). And if
-* both profile and trace modes are present set mode as
-* Advanced.
-* 6.2 bss 03/02/15 To support Zynq MP APM:
-* Added Is32BitFiltering in XAxiPmon_Config structure.
-* Updated XAxiPmon_SetWriteId, XAxiPmon_SetReadId,
-* XAxiPmon_GetWriteId, XAxiPmon_GetReadId
-* XAxiPmon_SetWriteIdMask, XAxiPmon_SetReadIdMask
-* XAxiPmon_GetWriteIdMask, XAxiPmon_GetReadIdMask
-* functions in xaxipmon.c.
-* Added XAPM_RID_OFFSET and XAPM_RIDMASK_OFFSET in
-* xaxipmon_hw.h
-*
-*
-*
-*****************************************************************************/
-#ifndef XAXIPMON_H /* Prevent circular inclusions */
-#define XAXIPMON_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files ********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xstatus.h"
-#include "xaxipmon_hw.h"
-
-/************************** Constant Definitions ****************************/
-
-
-/**
- * @name Macro for Maximum number of Counters
- *
- * @{
- */
-#define XAPM_MAX_COUNTERS 10 /**< Maximum number of Counters */
-#define XAPM_MAX_COUNTERS_PROFILE 48 /**< Maximum number of Counters */
-
-/*@}*/
-
-
-/**
- * @name Indices for Metric Counters and Sampled Metric Coounters used with
- * XAxiPmon_GetMetricCounter and XAxiPmon_GetSampledMetricCounter APIs
- * @{
- */
-
-#define XAPM_METRIC_COUNTER_0 0 /**< Metric Counter 0 Register Index */
-#define XAPM_METRIC_COUNTER_1 1 /**< Metric Counter 1 Register Index */
-#define XAPM_METRIC_COUNTER_2 2 /**< Metric Counter 2 Register Index */
-#define XAPM_METRIC_COUNTER_3 3 /**< Metric Counter 3 Register Index */
-#define XAPM_METRIC_COUNTER_4 4 /**< Metric Counter 4 Register Index */
-#define XAPM_METRIC_COUNTER_5 5 /**< Metric Counter 5 Register Index */
-#define XAPM_METRIC_COUNTER_6 6 /**< Metric Counter 6 Register Index */
-#define XAPM_METRIC_COUNTER_7 7 /**< Metric Counter 7 Register Index */
-#define XAPM_METRIC_COUNTER_8 8 /**< Metric Counter 8 Register Index */
-#define XAPM_METRIC_COUNTER_9 9 /**< Metric Counter 9 Register Index */
-
-/*@}*/
-
-/**
- * @name Indices for Incrementers and Sampled Incrementers used with
- * XAxiPmon_GetIncrementer and XAxiPmon_GetSampledIncrementer APIs
- * @{
- */
-
-#define XAPM_INCREMENTER_0 0 /**< Metric Counter 0 Register Index */
-#define XAPM_INCREMENTER_1 1 /**< Metric Counter 0 Register Index */
-#define XAPM_INCREMENTER_2 2 /**< Metric Counter 0 Register Index */
-#define XAPM_INCREMENTER_3 3 /**< Metric Counter 0 Register Index */
-#define XAPM_INCREMENTER_4 4 /**< Metric Counter 0 Register Index */
-#define XAPM_INCREMENTER_5 5 /**< Metric Counter 0 Register Index */
-#define XAPM_INCREMENTER_6 6 /**< Metric Counter 0 Register Index */
-#define XAPM_INCREMENTER_7 7 /**< Metric Counter 0 Register Index */
-#define XAPM_INCREMENTER_8 8 /**< Metric Counter 0 Register Index */
-#define XAPM_INCREMENTER_9 9 /**< Metric Counter 0 Register Index */
-
-/*@}*/
-
-/**
- * @name Macros for Metric Selector Settings
- * @{
- */
-
-#define XAPM_METRIC_SET_0 0 /**< Write Transaction Count */
-#define XAPM_METRIC_SET_1 1 /**< Read Transaction Count */
-#define XAPM_METRIC_SET_2 2 /**< Write Byte Count */
-#define XAPM_METRIC_SET_3 3 /**< Read Byte Count */
-#define XAPM_METRIC_SET_4 4 /**< Write Beat Count */
-#define XAPM_METRIC_SET_5 5 /**< Total Read Latency */
-#define XAPM_METRIC_SET_6 6 /**< Total Write Latency */
-#define XAPM_METRIC_SET_7 7 /**< Slv_Wr_Idle_Cnt */
-#define XAPM_METRIC_SET_8 8 /**< Mst_Rd_Idle_Cnt */
-#define XAPM_METRIC_SET_9 9 /**< Num_BValids */
-#define XAPM_METRIC_SET_10 10 /**< Num_WLasts */
-#define XAPM_METRIC_SET_11 11 /**< Num_RLasts */
-#define XAPM_METRIC_SET_12 12 /**< Minimum Write Latency */
-#define XAPM_METRIC_SET_13 13 /**< Maximum Write Latency */
-#define XAPM_METRIC_SET_14 14 /**< Minimum Read Latency */
-#define XAPM_METRIC_SET_15 15 /**< Maximum Read Latency */
-#define XAPM_METRIC_SET_16 16 /**< Transfer Cycle Count */
-#define XAPM_METRIC_SET_17 17 /**< Packet Count */
-#define XAPM_METRIC_SET_18 18 /**< Data Byte Count */
-#define XAPM_METRIC_SET_19 19 /**< Position Byte Count */
-#define XAPM_METRIC_SET_20 20 /**< Null Byte Count */
-#define XAPM_METRIC_SET_21 21 /**< Slv_Idle_Cnt */
-#define XAPM_METRIC_SET_22 22 /**< Mst_Idle_Cnt */
-#define XAPM_METRIC_SET_30 30 /**< External event count */
-
-
-/*@}*/
-
-
-/**
- * @name Macros for Maximum number of Agents
- * @{
- */
-
-#define XAPM_MAX_AGENTS 8 /**< Maximum number of Agents */
-
-/*@}*/
-
-/**
- * @name Macros for Flags in Flag Enable Control Register
- * @{
- */
-
-#define XAPM_FLAG_WRADDR 0x00000001 /**< Write Address Flag */
-#define XAPM_FLAG_FIRSTWR 0x00000002 /**< First Write Flag */
-#define XAPM_FLAG_LASTWR 0x00000004 /**< Last Write Flag */
-#define XAPM_FLAG_RESPONSE 0x00000008 /**< Response Flag */
-#define XAPM_FLAG_RDADDR 0x00000010 /**< Read Address Flag */
-#define XAPM_FLAG_FIRSTRD 0x00000020 /**< First Read Flag */
-#define XAPM_FLAG_LASTRD 0x00000040 /**< Last Read Flag */
-#define XAPM_FLAG_SWDATA 0x00010000 /**< Software-written Data Flag */
-#define XAPM_FLAG_EVENT 0x00020000 /**< Last Read Flag */
-#define XAPM_FLAG_EVNTSTOP 0x00040000 /**< Last Read Flag */
-#define XAPM_FLAG_EVNTSTART 0x00080000 /**< Last Read Flag */
-#define XAPM_FLAG_GCCOVF 0x00100000 /**< Global Clock Counter Overflow
- * Flag */
-#define XAPM_FLAG_SCLAPSE 0x00200000 /**< Sample Counter Lapse Flag */
-#define XAPM_FLAG_MC0 0x00400000 /**< Metric Counter 0 Flag */
-#define XAPM_FLAG_MC1 0x00800000 /**< Metric Counter 1 Flag */
-#define XAPM_FLAG_MC2 0x01000000 /**< Metric Counter 2 Flag */
-#define XAPM_FLAG_MC3 0x02000000 /**< Metric Counter 3 Flag */
-#define XAPM_FLAG_MC4 0x04000000 /**< Metric Counter 4 Flag */
-#define XAPM_FLAG_MC5 0x08000000 /**< Metric Counter 5 Flag */
-#define XAPM_FLAG_MC6 0x10000000 /**< Metric Counter 6 Flag */
-#define XAPM_FLAG_MC7 0x20000000 /**< Metric Counter 7 Flag */
-#define XAPM_FLAG_MC8 0x40000000 /**< Metric Counter 8 Flag */
-#define XAPM_FLAG_MC9 0x80000000 /**< Metric Counter 9 Flag */
-
-/*@}*/
-
-/**
- * @name Macros for Read/Write Latency Start and End points
- * @{
- */
-#define XAPM_LATENCY_ADDR_ISSUE 0 /**< Address Issue as start
- point for Latency calculation*/
-#define XAPM_LATENCY_ADDR_ACCEPT 1 /**< Address Acceptance as start
- point for Latency calculation*/
-#define XAPM_LATENCY_LASTRD 0 /**< Last Read as end point for
- Latency calculation */
-#define XAPM_LATENCY_LASTWR 0 /**< Last Write as end point for
- Latency calculation */
-#define XAPM_LATENCY_FIRSTRD 1 /**< First Read as end point for
- Latency calculation */
-#define XAPM_LATENCY_FIRSTWR 1 /**< First Write as end point for
- Latency calculation */
-
-/*@}*/
-
-/**
- * @name Macros for Modes of APM
- * @{
- */
-
-#define XAPM_MODE_TRACE 2 /**< APM in Trace mode */
-
-#define XAPM_MODE_PROFILE 1 /**< APM in Profile mode */
-
-#define XAPM_MODE_ADVANCED 0 /**< APM in Advanced mode */
-
-/*@}*/
-
-/**************************** Type Definitions *******************************/
-
-/**
- * This typedef contains configuration information for the AXI Performance
- * Monitor device.
- */
-typedef struct {
- u16 DeviceId; /**< Unique ID of device */
- u32 BaseAddress; /**< Device base address */
- int GlobalClkCounterWidth; /**< Global Clock Counter Width */
- int MetricSampleCounterWidth ; /**< Metric Sample Counters Width */
- u8 IsEventCount; /**< Event Count Enabled 1 - enabled
- 0 - not enabled */
- u8 NumberofSlots; /**< Number of Monitor Slots */
- u8 NumberofCounters; /**< Number of Counters */
- u8 HaveSampledCounters; /**< Have Sampled Counters 1 - present
- 0 - Not present */
- u8 IsEventLog; /**< Event Logging Enabled 1 - enabled
- 0 - Not enabled */
- u32 FifoDepth; /**< Event Log FIFO Depth */
- u32 FifoWidth; /**< Event Log FIFO Width */
- u32 TidWidth; /**< Streaming Interface TID Width */
- u8 ScaleFactor; /**< Event Count Scaling factor */
- u8 ModeAdvanced; /**< Advanced Mode */
- u8 ModeProfile; /**< Profile Mode */
- u8 ModeTrace; /**< Trace Mode */
- u8 Is32BitFiltering; /**< 32 bit filtering enabled */
-} XAxiPmon_Config;
-
-
-/**
- * The driver's instance data. The user is required to allocate a variable
- * of this type for every AXI Performance Monitor device in system. A pointer
- * to a variable of this type is then passed to the driver API functions.
- */
-typedef struct {
- XAxiPmon_Config Config; /**< XAxiPmon_Config of current device */
- u32 IsReady; /**< Device is initialized and ready */
- u8 Mode; /**< APM Mode */
-} XAxiPmon;
-
-/***************** Macros (Inline Functions) Definitions ********************/
-
-
-/****************************************************************************/
-/**
-*
-* This routine enables the Global Interrupt.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XAxiPmon_IntrGlobalEnable(XAxiPmon *InstancePtr)
-*
-*****************************************************************************/
-#define XAxiPmon_IntrGlobalEnable(InstancePtr) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, \
- XAPM_GIE_OFFSET, 1)
-
-
-/****************************************************************************/
-/**
-*
-* This routine disables the Global Interrupt.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XAxiPmon_IntrGlobalDisable(XAxiPmon *InstancePtr)
-*
-*****************************************************************************/
-#define XAxiPmon_IntrGlobalDisable(InstancePtr) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, \
- XAPM_GIE_OFFSET, 0)
-
-
-/****************************************************************************/
-/**
-*
-* This routine enables interrupt(s). Use the XAPM_IXR_* constants defined in
-* xaxipmon_hw.h to create the bit-mask to enable interrupts.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-* @param Mask is the mask to enable. Bit positions of 1 will be enabled.
-* Bit positions of 0 will keep the previous setting. This mask is
-* formed by OR'ing XAPM_IXR__* bits defined in xaxipmon_hw.h.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XAxiPmon_IntrEnable(XAxiPmon *InstancePtr, u32 Mask)
-*
-*****************************************************************************/
-#define XAxiPmon_IntrEnable(InstancePtr, Mask) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, XAPM_IE_OFFSET, \
- XAxiPmon_ReadReg((InstancePtr)->Config.BaseAddress, \
- XAPM_IE_OFFSET) | Mask);
-
-
-/****************************************************************************/
-/**
-*
-* This routine disable interrupt(s). Use the XAPM_IXR_* constants defined in
-* xaxipmon_hw.h to create the bit-mask to disable interrupts.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-* @param Mask is the mask to disable. Bit positions of 1 will be
-* disabled. Bit positions of 0 will keep the previous setting.
-* This mask is formed by OR'ing XAPM_IXR_* bits defined in
-* xaxipmon_hw.h.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XAxiPmon_IntrEnable(XAxiPmon *InstancePtr, u32 Mask)
-*
-*****************************************************************************/
-#define XAxiPmon_IntrDisable(InstancePtr, Mask) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, XAPM_IE_OFFSET, \
- XAxiPmon_ReadReg((InstancePtr)->Config.BaseAddress, \
- XAPM_IE_OFFSET) | Mask);
-
-/****************************************************************************/
-/**
-*
-* This routine clears the specified interrupt(s).
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-* @param Mask is the mask to clear. Bit positions of 1 will be cleared.
-* This mask is formed by OR'ing XAPM_IXR_* bits defined in
-* xaxipmon_hw.h.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XAxiPmon_IntrClear(XAxiPmon *InstancePtr, u32 Mask)
-*
-*****************************************************************************/
-#define XAxiPmon_IntrClear(InstancePtr, Mask) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, XAPM_IS_OFFSET, \
- XAxiPmon_ReadReg((InstancePtr)->Config.BaseAddress, \
- XAPM_IS_OFFSET) | Mask);
-
-/****************************************************************************/
-/**
-*
-* This routine returns the Interrupt Status Register.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-*
-* @return Interrupt Status Register contents
-*
-* @note C-Style signature:
-* void XAxiPmon_IntrClear(XAxiPmon *InstancePtr)
-*
-*****************************************************************************/
-#define XAxiPmon_IntrGetStatus(InstancePtr) \
- XAxiPmon_ReadReg((InstancePtr)->Config.BaseAddress, \
- XAPM_IS_OFFSET);
-
-/****************************************************************************/
-/**
-*
-* This function enables the Global Clock Counter.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-*
-* @return None
-*
-* @note C-Style signature:
-* void XAxiPmon_EnableGlobalClkCounter(XAxiPmon *InstancePtr);
-*
-*****************************************************************************/
-#define XAxiPmon_EnableGlobalClkCounter(InstancePtr) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, XAPM_CTL_OFFSET, \
- XAxiPmon_ReadReg((InstancePtr)->Config.BaseAddress, \
- XAPM_CTL_OFFSET) | XAPM_CR_GCC_ENABLE_MASK);
-
-/****************************************************************************/
-/**
-*
-* This function disbles the Global Clock Counter.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-*
-* @return None
-*
-* @note C-Style signature:
-* void XAxiPmon_DisableGlobalClkCounter(XAxiPmon *InstancePtr);
-*
-*****************************************************************************/
-#define XAxiPmon_DisableGlobalClkCounter(InstancePtr) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, XAPM_CTL_OFFSET, \
- XAxiPmon_ReadReg((InstancePtr)->Config.BaseAddress, \
- XAPM_CTL_OFFSET) & ~(XAPM_CR_GCC_ENABLE_MASK));
-
-/****************************************************************************/
-/**
-*
-* This function enables the specified flag in Flag Control Register.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-* @param Flag is one of the XAPM_FLAG_* masks defined in xaxipmon.h
-*
-* @return None
-*
-* @note C-Style signature:
-* void XAxiPmon_EnableFlag(XAxiPmon *InstancePtr);
-*
-*****************************************************************************/
-#define XAxiPmon_EnableFlag(InstancePtr, Flag) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, XAPM_FEC_OFFSET, \
- XAxiPmon_ReadReg((InstancePtr)->Config.BaseAddress, \
- XAPM_FEC_OFFSET) | Flag);
-
-/****************************************************************************/
-/**
-*
-* This function disables the specified flag in Flag Control Register.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-* @param Flag is one of the XAPM_FLAG_* masks defined in xaxipmon.h*
-* @return None
-*
-* @note C-Style signature:
-* void XAxiPmon_DisableFlag(XAxiPmon *InstancePtr);
-*
-*****************************************************************************/
-#define XAxiPmon_DisableFlag(InstancePtr, Flag) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, XAPM_FEC_OFFSET, \
- XAxiPmon_ReadReg((InstancePtr)->Config.BaseAddress, \
- XAPM_FEC_OFFSET) & ~(Flag));
-
-/****************************************************************************/
-/**
-*
-* This function loads the sample interval register value into the sample
-* interval counter.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-*
-* @return None
-*
-* @note C-Style signature:
-* void XAxiPmon_LoadSampleIntervalCounter(XAxiPmon *InstancePtr);
-*
-*****************************************************************************/
-#define XAxiPmon_LoadSampleIntervalCounter(InstancePtr) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, XAPM_SICR_OFFSET, \
- XAPM_SICR_LOAD_MASK);
-
-
-
-/****************************************************************************/
-/**
-*
-* This enables the down count of the sample interval counter.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-*
-* @return None
-*
-* @note C-Style signature:
-* void XAxiPmon_EnableSampleIntervalCounter(XAxiPmon *InstancePtr);
-*
-*****************************************************************************/
-#define XAxiPmon_EnableSampleIntervalCounter(InstancePtr) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, XAPM_SICR_OFFSET,\
- XAPM_SICR_ENABLE_MASK);
-
-
-/****************************************************************************/
-/**
-*
-* This disables the down count of the sample interval counter.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-*
-* @return None
-*
-* @note C-Style signature:
-* void XAxiPmon_DisableSampleIntervalCounter(XAxiPmon *InstancePtr);
-*
-*****************************************************************************/
-#define XAxiPmon_DisableSampleIntervalCounter(InstancePtr) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, XAPM_SICR_OFFSET, \
- XAxiPmon_ReadReg((InstancePtr)->Config.BaseAddress, \
- XAPM_SICR_OFFSET) & ~(XAPM_SICR_ENABLE_MASK));
-
-/****************************************************************************/
-/**
-*
-* This enables Reset of Metric Counters when Sample Interval Counter lapses.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-*
-* @return None
-*
-* @note C-Style signature:
-* void XAxiPmon_EnableMetricCounterReset(XAxiPmon *InstancePtr);
-*
-*****************************************************************************/
-#define XAxiPmon_EnableMetricCounterReset(InstancePtr) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, XAPM_SICR_OFFSET,\
- XAPM_SICR_MCNTR_RST_MASK);
-
-/****************************************************************************/
-/**
-*
-* This disables the down count of the sample interval counter.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-*
-* @return None
-*
-* @note C-Style signature:
-* void XAxiPmon_DisableMetricCounterReset(XAxiPmon *InstancePtr);
-*
-*****************************************************************************/
-#define XAxiPmon_DisableMetricCounterReset(InstancePtr) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, XAPM_SICR_OFFSET, \
- XAxiPmon_ReadReg((InstancePtr)->Config.BaseAddress, \
- XAPM_SICR_OFFSET) & ~(XAPM_SICR_MCNTR_RST_MASK));
-
-/****************************************************************************/
-/**
-*
-* This function enables the ID Filter Masking.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-*
-* @return None
-*
-* @note C-Style signature:
-* void XAxiPmon_EnableIDFilter(XAxiPmon *InstancePtr);
-*
-*****************************************************************************/
-#define XAxiPmon_EnableIDFilter(InstancePtr) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, XAPM_CTL_OFFSET, \
- XAxiPmon_ReadReg((InstancePtr)->Config.BaseAddress, \
- XAPM_CTL_OFFSET) | XAPM_CR_IDFILTER_ENABLE_MASK);
-
-/****************************************************************************/
-/**
-*
-* This function disbles the ID Filter masking.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-*
-* @return None
-*
-* @note C-Style signature:
-* void XAxiPmon_DisableIDFilter(XAxiPmon *InstancePtr);
-*
-*****************************************************************************/
-#define XAxiPmon_DisableIDFilter(InstancePtr) \
- XAxiPmon_WriteReg((InstancePtr)->Config.BaseAddress, XAPM_CTL_OFFSET, \
- XAxiPmon_ReadReg((InstancePtr)->Config.BaseAddress, \
- XAPM_CTL_OFFSET) & ~(XAPM_CR_IDFILTER_ENABLE_MASK));
-
-/****************************************************************************/
-/**
-*
-* This function samples Metric Counters to Sampled Metric Counters by
-* reading Sample Register and also returns interval. i.e. the number of
-* clocks in between previous read to the current read of sample register.
-*
-* @param InstancePtr is a pointer to the XAxiPmon instance.
-*
-* @return Interval. i.e. the number of clocks in between previous
-* read to the current read of sample register.
-*
-* @note C-Style signature:
-* u32 XAxiPmon_SampleMetrics(XAxiPmon *InstancePtr);
-*
-*****************************************************************************/
-#define XAxiPmon_SampleMetrics(InstancePtr) \
- XAxiPmon_ReadReg((InstancePtr)->Config.BaseAddress, XAPM_SR_OFFSET);
-
-
-/************************** Function Prototypes *****************************/
-
-/**
- * Functions in xaxipmon_sinit.c
- */
-XAxiPmon_Config *XAxiPmon_LookupConfig(u16 DeviceId);
-
-/**
- * Functions in xaxipmon.c
- */
-int XAxiPmon_CfgInitialize(XAxiPmon *InstancePtr,
- XAxiPmon_Config *ConfigPtr, u32 EffectiveAddr);
-
-int XAxiPmon_ResetMetricCounter(XAxiPmon *InstancePtr);
-
-void XAxiPmon_ResetGlobalClkCounter(XAxiPmon *InstancePtr);
-
-int XAxiPmon_ResetFifo(XAxiPmon *InstancePtr);
-
-void XAxiPmon_SetIncrementerRange(XAxiPmon *InstancePtr, u8 IncrementerNum,
- u16 RangeUpper, u16 RangeLower);
-
-void XAxiPmon_GetIncrementerRange(XAxiPmon *InstancePtr, u8 IncrementerNum,
- u16 *RangeUpper, u16 *RangeLower);
-
-void XAxiPmon_SetSampleInterval(XAxiPmon *InstancePtr, u32 SampleInterval);
-
-void XAxiPmon_GetSampleInterval(XAxiPmon *InstancePtr, u32 *SampleInterval);
-
-int XAxiPmon_SetMetrics(XAxiPmon *InstancePtr, u8 Slot, u8 Metrics,
- u8 CounterNum);
-
-int XAxiPmon_GetMetrics(XAxiPmon *InstancePtr, u8 CounterNum, u8 *Metrics,
- u8 *Slot);
-void XAxiPmon_GetGlobalClkCounter(XAxiPmon *InstancePtr,u32 *CntHighValue,
- u32 *CntLowValue);
-
-u32 XAxiPmon_GetMetricCounter(XAxiPmon *InstancePtr, u32 CounterNum);
-
-u32 XAxiPmon_GetSampledMetricCounter(XAxiPmon *InstancePtr, u32 CounterNum);
-
-u32 XAxiPmon_GetIncrementer(XAxiPmon *InstancePtr, u32 IncrementerNum);
-
-u32 XAxiPmon_GetSampledIncrementer(XAxiPmon *InstancePtr, u32 IncrementerNum);
-
-void XAxiPmon_SetSwDataReg(XAxiPmon *InstancePtr, u32 SwData);
-
-u32 XAxiPmon_GetSwDataReg(XAxiPmon *InstancePtr);
-
-int XAxiPmon_StartEventLog(XAxiPmon *InstancePtr, u32 FlagEnables);
-
-int XAxiPmon_StopEventLog(XAxiPmon *InstancePtr);
-
-int XAxiPmon_StartCounters(XAxiPmon *InstancePtr, u32 SampleInterval);
-
-int XAxiPmon_StopCounters(XAxiPmon *InstancePtr);
-
-void XAxiPmon_EnableMetricsCounter(XAxiPmon *InstancePtr);
-
-void XAxiPmon_DisableMetricsCounter(XAxiPmon *InstancePtr);
-
-void XAxiPmon_SetLogEnableRanges(XAxiPmon *InstancePtr, u32 CounterNum,
- u16 RangeUpper, u16 RangeLower);
-
-void XAxiPmon_GetLogEnableRanges(XAxiPmon *InstancePtr, u32 CounterNum,
- u16 *RangeUpper, u16 *RangeLower);
-
-void XAxiPmon_EnableEventLog(XAxiPmon *InstancePtr);
-
-void XAxiPmon_EnableMetricCounterTrigger(XAxiPmon *InstancePtr);
-
-void XAxiPmon_DisableMetricCounterTrigger(XAxiPmon *InstancePtr);
-
-void XAxiPmon_EnableEventLogTrigger(XAxiPmon *InstancePtr);
-
-void XAxiPmon_DisableEventLogTrigger(XAxiPmon *InstancePtr);
-
-const char * XAxiPmon_GetMetricName(u8 Metrics);
-
-void XAxiPmon_SetWriteId(XAxiPmon *InstancePtr, u32 WriteId);
-
-void XAxiPmon_SetReadId(XAxiPmon *InstancePtr, u32 ReadId);
-
-u32 XAxiPmon_GetWriteId(XAxiPmon *InstancePtr);
-
-u32 XAxiPmon_GetReadId(XAxiPmon *InstancePtr);
-
-void XAxiPmon_SetWrLatencyStart(XAxiPmon *InstancePtr, u8 Param);
-
-void XAxiPmon_SetWrLatencyEnd(XAxiPmon *InstancePtr, u8 Param);
-
-void XAxiPmon_SetRdLatencyStart(XAxiPmon *InstancePtr, u8 Param);
-
-void XAxiPmon_SetRdLatencyEnd(XAxiPmon *InstancePtr, u8 Param);
-
-u8 XAxiPmon_GetWrLatencyStart(XAxiPmon *InstancePtr);
-
-u8 XAxiPmon_GetWrLatencyEnd(XAxiPmon *InstancePtr);
-
-u8 XAxiPmon_GetRdLatencyStart(XAxiPmon *InstancePtr);
-
-u8 XAxiPmon_GetRdLatencyEnd(XAxiPmon *InstancePtr);
-
-void XAxiPmon_SetWriteIdMask(XAxiPmon *InstancePtr, u32 WrMask);
-
-void XAxiPmon_SetReadIdMask(XAxiPmon *InstancePtr, u32 RdMask);
-
-u32 XAxiPmon_GetWriteIdMask(XAxiPmon *InstancePtr);
-
-u32 XAxiPmon_GetReadIdMask(XAxiPmon *InstancePtr);
-
-
-/**
- * Functions in xaxipmon_selftest.c
- */
-int XAxiPmon_SelfTest(XAxiPmon *InstancePtr);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* End of protection macro. */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xaxipmon_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xaxipmon_hw.h
deleted file mode 100644
index 7fc4ae088..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xaxipmon_hw.h
+++ /dev/null
@@ -1,566 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2012 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/****************************************************************************/
-/**
-*
-* @file xaxipmon_hw.h
-*
-* This header file contains identifiers and basic driver functions (or
-* macros) that can be used to access the AXI Performance Monitor.
-*
-* Refer to the device specification for more information about this driver.
-*
-* @note None.
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ----- -------- -----------------------------------------------------
-* 1.00a bss 02/27/12 First release
-* 2.00a bss 06/23/12 Updated to support v2_00a version of IP.
-* 3.00a bss 09/03/12 Deleted XAPM_AGENT_OFFSET Macro to support
-* v2_01a version of IP.
-* 3.01a bss 10/25/12 To support new version of IP:
-* Added XAPM_MCXLOGEN_OFFSET and
-* XAPM_CR_EXTERNAL_TRIGGER_MASK macros.
-* 4.00a bss 01/17/13 To support new version of IP:
-* Added XAPM_LATENCYID_OFFSET,
-* XAPM_CR_EVTLOG_EXTTRIGGER_MASK,
-* XAPM_LATENCYID_RID_MASK and XAPM_LATENCYID_WID_MASK
-* 5.00a bss 08/26/13 To support new version of IP:
-* Added Macros XAPM_MC10_OFFSET to XAPM_MC47_OFFSET,
-* XAPM_SMC10_OFFSET to XAPM_SMC47_OFFSET.
-* Added macro XAPM_IDMASK_OFFSET, XAPM_SR_OFFSET.
-* Added XAPM_CR_IDFILTER_ENABLE_MASK,
-* XAPM_CR_WRLATENCY_START_MASK,
-* XAPM_CR_WRLATENCY_END_MASK,
-* XAPM_CR_RDLATENCY_START_MASK,
-* XAPM_CR_RDLATENCY_END_MASK, XAPM_MASKID_RID_MASK
-* and XAPM_MASKID_WID_MASK macros.
-* Renamed:
-* XAPM_LATENCYID_OFFSET to XAPM_ID_OFFSET,
-* XAPM_LATENCYID_RID_MASK to XAPM_ID_RID_MASK,
-* XAPM_LATENCYID_WID_MASK to XAPM_ID_WID_MASK.
-*
-* 6.2 bss 03/02/15 Added XAPM_RID_OFFSET and XAPM_RIDMASK_OFFSET to support
-* Zynq MP APM.
-*
-*
-*****************************************************************************/
-#ifndef XAXIPMON_HW_H /* Prevent circular inclusions */
-#define XAXIPMON_HW_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files ********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xil_io.h"
-
-/************************** Constant Definitions ****************************/
-
-
-/**@name Register offsets of AXIMONITOR in the Device Config
- *
- * The following constants provide access to each of the registers of the
- * AXI PERFORMANCE MONITOR device.
- * @{
- */
-
-#define XAPM_GCC_HIGH_OFFSET 0x0000 /**< Global Clock Counter
- 32 to 63 bits */
-#define XAPM_GCC_LOW_OFFSET 0x0004 /**< Global Clock Counter Lower
- 0-31 bits */
-#define XAPM_SI_HIGH_OFFSET 0x0020 /**< Sample Interval MSB */
-#define XAPM_SI_LOW_OFFSET 0x0024 /**< Sample Interval LSB */
-#define XAPM_SICR_OFFSET 0x0028 /**< Sample Interval Control
- Register */
-#define XAPM_SR_OFFSET 0x002C /**< Sample Register */
-#define XAPM_GIE_OFFSET 0x0030 /**< Global Interrupt Enable
- Register */
-#define XAPM_IE_OFFSET 0x0034 /**< Interrupt Enable Register */
-#define XAPM_IS_OFFSET 0x0038 /**< Interrupt Status Register */
-
-#define XAPM_MSR0_OFFSET 0x0044 /**< Metric Selector 0 Register */
-#define XAPM_MSR1_OFFSET 0x0048 /**< Metric Selector 1 Register */
-#define XAPM_MSR2_OFFSET 0x004C /**< Metric Selector 2 Register */
-
-#define XAPM_MC0_OFFSET 0x0100 /**< Metric Counter 0 Register */
-#define XAPM_INC0_OFFSET 0x0104 /**< Incrementer 0 Register */
-#define XAPM_RANGE0_OFFSET 0x0108 /**< Range 0 Register */
-#define XAPM_MC0LOGEN_OFFSET 0x010C /**< Metric Counter 0
- Log Enable Register */
-#define XAPM_MC1_OFFSET 0x0110 /**< Metric Counter 1 Register */
-#define XAPM_INC1_OFFSET 0x0114 /**< Incrementer 1 Register */
-#define XAPM_RANGE1_OFFSET 0x0118 /**< Range 1 Register */
-#define XAPM_MC1LOGEN_OFFSET 0x011C /**< Metric Counter 1
- Log Enable Register */
-#define XAPM_MC2_OFFSET 0x0120 /**< Metric Counter 2 Register */
-#define XAPM_INC2_OFFSET 0x0124 /**< Incrementer 2 Register */
-#define XAPM_RANGE2_OFFSET 0x0128 /**< Range 2 Register */
-#define XAPM_MC2LOGEN_OFFSET 0x012C /**< Metric Counter 2
- Log Enable Register */
-#define XAPM_MC3_OFFSET 0x0130 /**< Metric Counter 3 Register */
-#define XAPM_INC3_OFFSET 0x0134 /**< Incrementer 3 Register */
-#define XAPM_RANGE3_OFFSET 0x0138 /**< Range 3 Register */
-#define XAPM_MC3LOGEN_OFFSET 0x013C /**< Metric Counter 3
- Log Enable Register */
-#define XAPM_MC4_OFFSET 0x0140 /**< Metric Counter 4 Register */
-#define XAPM_INC4_OFFSET 0x0144 /**< Incrementer 4 Register */
-#define XAPM_RANGE4_OFFSET 0x0148 /**< Range 4 Register */
-#define XAPM_MC4LOGEN_OFFSET 0x014C /**< Metric Counter 4
- Log Enable Register */
-#define XAPM_MC5_OFFSET 0x0150 /**< Metric Counter 5
- Register */
-#define XAPM_INC5_OFFSET 0x0154 /**< Incrementer 5 Register */
-#define XAPM_RANGE5_OFFSET 0x0158 /**< Range 5 Register */
-#define XAPM_MC5LOGEN_OFFSET 0x015C /**< Metric Counter 5
- Log Enable Register */
-#define XAPM_MC6_OFFSET 0x0160 /**< Metric Counter 6
- Register */
-#define XAPM_INC6_OFFSET 0x0164 /**< Incrementer 6 Register */
-#define XAPM_RANGE6_OFFSET 0x0168 /**< Range 6 Register */
-#define XAPM_MC6LOGEN_OFFSET 0x016C /**< Metric Counter 6
- Log Enable Register */
-#define XAPM_MC7_OFFSET 0x0170 /**< Metric Counter 7
- Register */
-#define XAPM_INC7_OFFSET 0x0174 /**< Incrementer 7 Register */
-#define XAPM_RANGE7_OFFSET 0x0178 /**< Range 7 Register */
-#define XAPM_MC7LOGEN_OFFSET 0x017C /**< Metric Counter 7
- Log Enable Register */
-#define XAPM_MC8_OFFSET 0x0180 /**< Metric Counter 8
- Register */
-#define XAPM_INC8_OFFSET 0x0184 /**< Incrementer 8 Register */
-#define XAPM_RANGE8_OFFSET 0x0188 /**< Range 8 Register */
-#define XAPM_MC8LOGEN_OFFSET 0x018C /**< Metric Counter 8
- Log Enable Register */
-#define XAPM_MC9_OFFSET 0x0190 /**< Metric Counter 9
- Register */
-#define XAPM_INC9_OFFSET 0x0194 /**< Incrementer 9 Register */
-#define XAPM_RANGE9_OFFSET 0x0198 /**< Range 9 Register */
-#define XAPM_MC9LOGEN_OFFSET 0x019C /**< Metric Counter 9
- Log Enable Register */
-#define XAPM_SMC0_OFFSET 0x0200 /**< Sampled Metric Counter
- 0 Register */
-#define XAPM_SINC0_OFFSET 0x0204 /**< Sampled Incrementer
- 0 Register */
-#define XAPM_SMC1_OFFSET 0x0210 /**< Sampled Metric Counter
- 1 Register */
-#define XAPM_SINC1_OFFSET 0x0214 /**< Sampled Incrementer
- 1 Register */
-#define XAPM_SMC2_OFFSET 0x0220 /**< Sampled Metric Counter
- 2 Register */
-#define XAPM_SINC2_OFFSET 0x0224 /**< Sampled Incrementer
- 2 Register */
-#define XAPM_SMC3_OFFSET 0x0230 /**< Sampled Metric Counter
- 3 Register */
-#define XAPM_SINC3_OFFSET 0x0234 /**< Sampled Incrementer
- 3 Register */
-#define XAPM_SMC4_OFFSET 0x0240 /**< Sampled Metric Counter
- 4 Register */
-#define XAPM_SINC4_OFFSET 0x0244 /**< Sampled Incrementer
- 4 Register */
-#define XAPM_SMC5_OFFSET 0x0250 /**< Sampled Metric Counter
- 5 Register */
-#define XAPM_SINC5_OFFSET 0x0254 /**< Sampled Incrementer
- 5 Register */
-#define XAPM_SMC6_OFFSET 0x0260 /**< Sampled Metric Counter
- 6 Register */
-#define XAPM_SINC6_OFFSET 0x0264 /**< Sampled Incrementer
- 6 Register */
-#define XAPM_SMC7_OFFSET 0x0270 /**< Sampled Metric Counter
- 7 Register */
-#define XAPM_SINC7_OFFSET 0x0274 /**< Sampled Incrementer
- 7 Register */
-#define XAPM_SMC8_OFFSET 0x0280 /**< Sampled Metric Counter
- 8 Register */
-#define XAPM_SINC8_OFFSET 0x0284 /**< Sampled Incrementer
- 8 Register */
-#define XAPM_SMC9_OFFSET 0x0290 /**< Sampled Metric Counter
- 9 Register */
-#define XAPM_SINC9_OFFSET 0x0294 /**< Sampled Incrementer
- 9 Register */
-
-#define XAPM_MC10_OFFSET 0x01A0 /**< Metric Counter 10
- Register */
-#define XAPM_MC11_OFFSET 0x01B0 /**< Metric Counter 11
- Register */
-#define XAPM_MC12_OFFSET 0x0500 /**< Metric Counter 12
- Register */
-#define XAPM_MC13_OFFSET 0x0510 /**< Metric Counter 13
- Register */
-#define XAPM_MC14_OFFSET 0x0520 /**< Metric Counter 14
- Register */
-#define XAPM_MC15_OFFSET 0x0530 /**< Metric Counter 15
- Register */
-#define XAPM_MC16_OFFSET 0x0540 /**< Metric Counter 16
- Register */
-#define XAPM_MC17_OFFSET 0x0550 /**< Metric Counter 17
- Register */
-#define XAPM_MC18_OFFSET 0x0560 /**< Metric Counter 18
- Register */
-#define XAPM_MC19_OFFSET 0x0570 /**< Metric Counter 19
- Register */
-#define XAPM_MC20_OFFSET 0x0580 /**< Metric Counter 20
- Register */
-#define XAPM_MC21_OFFSET 0x0590 /**< Metric Counter 21
- Register */
-#define XAPM_MC22_OFFSET 0x05A0 /**< Metric Counter 22
- Register */
-#define XAPM_MC23_OFFSET 0x05B0 /**< Metric Counter 23
- Register */
-#define XAPM_MC24_OFFSET 0x0700 /**< Metric Counter 24
- Register */
-#define XAPM_MC25_OFFSET 0x0710 /**< Metric Counter 25
- Register */
-#define XAPM_MC26_OFFSET 0x0720 /**< Metric Counter 26
- Register */
-#define XAPM_MC27_OFFSET 0x0730 /**< Metric Counter 27
- Register */
-#define XAPM_MC28_OFFSET 0x0740 /**< Metric Counter 28
- Register */
-#define XAPM_MC29_OFFSET 0x0750 /**< Metric Counter 29
- Register */
-#define XAPM_MC30_OFFSET 0x0760 /**< Metric Counter 30
- Register */
-#define XAPM_MC31_OFFSET 0x0770 /**< Metric Counter 31
- Register */
-#define XAPM_MC32_OFFSET 0x0780 /**< Metric Counter 32
- Register */
-#define XAPM_MC33_OFFSET 0x0790 /**< Metric Counter 33
- Register */
-#define XAPM_MC34_OFFSET 0x07A0 /**< Metric Counter 34
- Register */
-#define XAPM_MC35_OFFSET 0x07B0 /**< Metric Counter 35
- Register */
-#define XAPM_MC36_OFFSET 0x0900 /**< Metric Counter 36
- Register */
-#define XAPM_MC37_OFFSET 0x0910 /**< Metric Counter 37
- Register */
-#define XAPM_MC38_OFFSET 0x0920 /**< Metric Counter 38
- Register */
-#define XAPM_MC39_OFFSET 0x0930 /**< Metric Counter 39
- Register */
-#define XAPM_MC40_OFFSET 0x0940 /**< Metric Counter 40
- Register */
-#define XAPM_MC41_OFFSET 0x0950 /**< Metric Counter 41
- Register */
-#define XAPM_MC42_OFFSET 0x0960 /**< Metric Counter 42
- Register */
-#define XAPM_MC43_OFFSET 0x0970 /**< Metric Counter 43
- Register */
-#define XAPM_MC44_OFFSET 0x0980 /**< Metric Counter 44
- Register */
-#define XAPM_MC45_OFFSET 0x0990 /**< Metric Counter 45
- Register */
-#define XAPM_MC46_OFFSET 0x09A0 /**< Metric Counter 46
- Register */
-#define XAPM_MC47_OFFSET 0x09B0 /**< Metric Counter 47
- Register */
-
-#define XAPM_SMC10_OFFSET 0x02A0 /**< Sampled Metric Counter
- 10 Register */
-#define XAPM_SMC11_OFFSET 0x02B0 /**< Sampled Metric Counter
- 11 Register */
-#define XAPM_SMC12_OFFSET 0x0600 /**< Sampled Metric Counter
- 12 Register */
-#define XAPM_SMC13_OFFSET 0x0610 /**< Sampled Metric Counter
- 13 Register */
-#define XAPM_SMC14_OFFSET 0x0620 /**< Sampled Metric Counter
- 14 Register */
-#define XAPM_SMC15_OFFSET 0x0630 /**< Sampled Metric Counter
- 15 Register */
-#define XAPM_SMC16_OFFSET 0x0640 /**< Sampled Metric Counter
- 16 Register */
-#define XAPM_SMC17_OFFSET 0x0650 /**< Sampled Metric Counter
- 17 Register */
-#define XAPM_SMC18_OFFSET 0x0660 /**< Sampled Metric Counter
- 18 Register */
-#define XAPM_SMC19_OFFSET 0x0670 /**< Sampled Metric Counter
- 19 Register */
-#define XAPM_SMC20_OFFSET 0x0680 /**< Sampled Metric Counter
- 20 Register */
-#define XAPM_SMC21_OFFSET 0x0690 /**< Sampled Metric Counter
- 21 Register */
-#define XAPM_SMC22_OFFSET 0x06A0 /**< Sampled Metric Counter
- 22 Register */
-#define XAPM_SMC23_OFFSET 0x06B0 /**< Sampled Metric Counter
- 23 Register */
-#define XAPM_SMC24_OFFSET 0x0800 /**< Sampled Metric Counter
- 24 Register */
-#define XAPM_SMC25_OFFSET 0x0810 /**< Sampled Metric Counter
- 25 Register */
-#define XAPM_SMC26_OFFSET 0x0820 /**< Sampled Metric Counter
- 26 Register */
-#define XAPM_SMC27_OFFSET 0x0830 /**< Sampled Metric Counter
- 27 Register */
-#define XAPM_SMC28_OFFSET 0x0840 /**< Sampled Metric Counter
- 28 Register */
-#define XAPM_SMC29_OFFSET 0x0850 /**< Sampled Metric Counter
- 29 Register */
-#define XAPM_SMC30_OFFSET 0x0860 /**< Sampled Metric Counter
- 30 Register */
-#define XAPM_SMC31_OFFSET 0x0870 /**< Sampled Metric Counter
- 31 Register */
-#define XAPM_SMC32_OFFSET 0x0880 /**< Sampled Metric Counter
- 32 Register */
-#define XAPM_SMC33_OFFSET 0x0890 /**< Sampled Metric Counter
- 33 Register */
-#define XAPM_SMC34_OFFSET 0x08A0 /**< Sampled Metric Counter
- 34 Register */
-#define XAPM_SMC35_OFFSET 0x08B0 /**< Sampled Metric Counter
- 35 Register */
-#define XAPM_SMC36_OFFSET 0x0A00 /**< Sampled Metric Counter
- 36 Register */
-#define XAPM_SMC37_OFFSET 0x0A10 /**< Sampled Metric Counter
- 37 Register */
-#define XAPM_SMC38_OFFSET 0x0A20 /**< Sampled Metric Counter
- 38 Register */
-#define XAPM_SMC39_OFFSET 0x0A30 /**< Sampled Metric Counter
- 39 Register */
-#define XAPM_SMC40_OFFSET 0x0A40 /**< Sampled Metric Counter
- 40 Register */
-#define XAPM_SMC41_OFFSET 0x0A50 /**< Sampled Metric Counter
- 41 Register */
-#define XAPM_SMC42_OFFSET 0x0A60 /**< Sampled Metric Counter
- 42 Register */
-#define XAPM_SMC43_OFFSET 0x0A70 /**< Sampled Metric Counter
- 43 Register */
-#define XAPM_SMC44_OFFSET 0x0A80 /**< Sampled Metric Counter
- 44 Register */
-#define XAPM_SMC45_OFFSET 0x0A90 /**< Sampled Metric Counter
- 45 Register */
-#define XAPM_SMC46_OFFSET 0x0AA0 /**< Sampled Metric Counter
- 46 Register */
-#define XAPM_SMC47_OFFSET 0x0AB0 /**< Sampled Metric Counter
- 47 Register */
-
-#define XAPM_CTL_OFFSET 0x0300 /**< Control Register */
-
-#define XAPM_ID_OFFSET 0x0304 /**< Latency ID Register */
-
-#define XAPM_IDMASK_OFFSET 0x0308 /**< ID Mask Register */
-
-#define XAPM_RID_OFFSET 0x030C /**< Latency Write ID Register */
-
-#define XAPM_RIDMASK_OFFSET 0x0310 /**< Read ID Mask Register */
-
-#define XAPM_FEC_OFFSET 0x0400 /**< Flag Enable
- Control Register */
-
-#define XAPM_SWD_OFFSET 0x0404 /**< Software-written
- Data Register */
-
-/* @} */
-
-/**
- * @name AXI Monitor Sample Interval Control Register mask(s)
- * @{
- */
-
-#define XAPM_SICR_MCNTR_RST_MASK 0x00000100 /**< Enable the Metric
- Counter Reset */
-#define XAPM_SICR_LOAD_MASK 0x00000002 /**< Load the Sample Interval
- * Register Value into the
- * counter */
-#define XAPM_SICR_ENABLE_MASK 0x00000001 /**< Enable the downcounter */
-
-/*@}*/
-
-
-/** @name Interrupt Status/Enable Register Bit Definitions and Masks
- * @{
- */
-
-#define XAPM_IXR_MC9_OVERFLOW_MASK 0x00001000 /**< Metric Counter 9
- * Overflow> */
-#define XAPM_IXR_MC8_OVERFLOW_MASK 0x00000800 /**< Metric Counter 8
- * Overflow> */
-#define XAPM_IXR_MC7_OVERFLOW_MASK 0x00000400 /**< Metric Counter 7
- * Overflow> */
-#define XAPM_IXR_MC6_OVERFLOW_MASK 0x00000200 /**< Metric Counter 6
- * Overflow> */
-#define XAPM_IXR_MC5_OVERFLOW_MASK 0x00000100 /**< Metric Counter 5
- * Overflow> */
-#define XAPM_IXR_MC4_OVERFLOW_MASK 0x00000080 /**< Metric Counter 4
- * Overflow> */
-#define XAPM_IXR_MC3_OVERFLOW_MASK 0x00000040 /**< Metric Counter 3
- * Overflow> */
-#define XAPM_IXR_MC2_OVERFLOW_MASK 0x00000020 /**< Metric Counter 2
- * Overflow> */
-#define XAPM_IXR_MC1_OVERFLOW_MASK 0x00000010 /**< Metric Counter 1
- * Overflow> */
-#define XAPM_IXR_MC0_OVERFLOW_MASK 0x00000008 /**< Metric Counter 0
- * Overflow> */
-#define XAPM_IXR_FIFO_FULL_MASK 0x00000004 /**< Event Log FIFO
- * full> */
-#define XAPM_IXR_SIC_OVERFLOW_MASK 0x00000002 /**< Sample Interval
- * Counter Overflow> */
-#define XAPM_IXR_GCC_OVERFLOW_MASK 0x00000001 /**< Global Clock Counter
- * Overflow> */
-#define XAPM_IXR_ALL_MASK (XAPM_IXR_SIC_OVERFLOW_MASK | \
- XAPM_IXR_GCC_OVERFLOW_MASK | \
- XAPM_IXR_FIFO_FULL_MASK | \
- XAPM_IXR_MC0_OVERFLOW_MASK | \
- XAPM_IXR_MC1_OVERFLOW_MASK | \
- XAPM_IXR_MC2_OVERFLOW_MASK | \
- XAPM_IXR_MC3_OVERFLOW_MASK | \
- XAPM_IXR_MC4_OVERFLOW_MASK | \
- XAPM_IXR_MC5_OVERFLOW_MASK | \
- XAPM_IXR_MC6_OVERFLOW_MASK | \
- XAPM_IXR_MC7_OVERFLOW_MASK | \
- XAPM_IXR_MC8_OVERFLOW_MASK | \
- XAPM_IXR_MC9_OVERFLOW_MASK)
-/* @} */
-
-/**
- * @name AXI Monitor Control Register mask(s)
- * @{
- */
-
-#define XAPM_CR_FIFO_RESET_MASK 0x02000000
- /**< FIFO Reset */
-#define XAPM_CR_GCC_RESET_MASK 0x00020000
- /**< Global Clk
- Counter Reset */
-#define XAPM_CR_GCC_ENABLE_MASK 0x00010000
- /**< Global Clk
- Counter Enable */
-#define XAPM_CR_EVTLOG_EXTTRIGGER_MASK 0x00000200
- /**< Enable External trigger
- to start event Log */
-#define XAPM_CR_EVENTLOG_ENABLE_MASK 0x00000100
- /**< Event Log Enable */
-
-#define XAPM_CR_RDLATENCY_END_MASK 0x00000080
- /**< Write Latency
- End point */
-#define XAPM_CR_RDLATENCY_START_MASK 0x00000040
- /**< Read Latency
- Start point */
-#define XAPM_CR_WRLATENCY_END_MASK 0x00000020
- /**< Write Latency
- End point */
-#define XAPM_CR_WRLATENCY_START_MASK 0x00000010
- /**< Write Latency
- Start point */
-#define XAPM_CR_IDFILTER_ENABLE_MASK 0x00000008
- /**< ID Filter Enable */
-
-#define XAPM_CR_MCNTR_EXTTRIGGER_MASK 0x00000004
- /**< Enable External
- trigger to start
- Metric Counters */
-#define XAPM_CR_MCNTR_RESET_MASK 0x00000002
- /**< Metrics Counter
- Reset */
-#define XAPM_CR_MCNTR_ENABLE_MASK 0x00000001
- /**< Metrics Counter
- Enable */
-/*@}*/
-
-/**
- * @name AXI Monitor ID Register mask(s)
- * @{
- */
-
-#define XAPM_ID_RID_MASK 0xFFFF0000 /**< Read ID */
-
-#define XAPM_ID_WID_MASK 0x0000FFFF /**< Write ID */
-
-/*@}*/
-
-/**
- * @name AXI Monitor ID Mask Register mask(s)
- * @{
- */
-
-#define XAPM_MASKID_RID_MASK 0xFFFF0000 /**< Read ID Mask */
-
-#define XAPM_MASKID_WID_MASK 0x0000FFFF /**< Write ID Mask*/
-
-/*@}*/
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/*****************************************************************************/
-/**
-*
-* Read a register of the AXI Performance Monitor device. This macro provides
-* register access to all registers using the register offsets defined above.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset is the offset of the register to read.
-*
-* @return The contents of the register.
-*
-* @note C-style Signature:
-* u32 XAxiPmon_ReadReg(u32 BaseAddress, u32 RegOffset);
-*
-******************************************************************************/
-#define XAxiPmon_ReadReg(BaseAddress, RegOffset) \
- (Xil_In32((BaseAddress) + (RegOffset)))
-
-/*****************************************************************************/
-/**
-*
-* Write a register of the AXI Performance Monitor device. This macro provides
-* register access to all registers using the register offsets defined above.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset is the offset of the register to write.
-* @param Data is the value to write to the register.
-*
-* @return None.
-*
-* @note C-style Signature:
-* void XAxiPmon_WriteReg(u32 BaseAddress,
-* u32 RegOffset,u32 Data)
-*
-******************************************************************************/
-#define XAxiPmon_WriteReg(BaseAddress, RegOffset, Data) \
- (Xil_Out32((BaseAddress) + (RegOffset), (Data)))
-
-/************************** Function Prototypes ******************************/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* End of protection macro. */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcanps.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcanps.h
deleted file mode 100644
index 9c4c24211..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcanps.h
+++ /dev/null
@@ -1,567 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xcanps.h
-*
-* The Xilinx CAN driver component. This component supports the Xilinx
-* CAN Controller.
-*
-* The CAN Controller supports the following features:
-* - Confirms to the ISO 11898-1, CAN 2.0A and CAN 2.0B standards.
-* - Supports both Standard (11 bit Identifier) and Extended (29 bit
-* Identifier) frames.
-* - Supports Bit Rates up to 1 Mbps.
-* - Transmit message object FIFO with a user configurable depth of
-* up to 64 message objects.
-* - Transmit prioritization through one TX High Priority Buffer.
-* - Receive message object FIFO with a user configurable depth of
-* up to 64 message objects.
-* - Watermark interrupts for Rx FIFO with configurable Watermark.
-* - Acceptance filtering with 4 acceptance filters.
-* - Sleep mode with automatic wake up.
-* - Loop Back mode for diagnostic applications.
-* - Snoop mode for diagnostic applications.
-* - Maskable Error and Status Interrupts.
-* - Readable Error Counters.
-* - External PHY chip required.
-* - Receive Timestamp.
-*
-* The device driver supports all the features listed above, if applicable.
-*
-* Driver Description
-*
-* The device driver enables higher layer software (e.g., an application) to
-* communicate to the CAN. The driver handles transmission and reception of
-* CAN frames, as well as configuration of the controller. The driver is simply a
-* pass-through mechanism between a protocol stack and the CAN. A single device
-* driver can support multiple CANs.
-*
-* Since the driver is a simple pass-through mechanism between a protocol stack
-* and the CAN, no assembly or disassembly of CAN frames is done at the
-* driver-level. This assumes that the protocol stack passes a correctly
-* formatted CAN frame to the driver for transmission, and that the driver
-* does not validate the contents of an incoming frame
-*
-* Operation Modes
-*
-* The CAN controller supports the following modes of operation:
-* - Configuration Mode: In this mode the CAN timing parameters and
-* Baud Rate Pre-scalar parameters can be changed. In this mode the CAN
-* controller loses synchronization with the CAN bus and drives a
-* constant recessive bit on the bus line. The Error Counter Register are
-* reset. The CAN controller does not receive or transmit any messages
-* even if there are pending transmit requests from the TX FIFO or the TX
-* High Priority Buffer. The Storage FIFOs and the CAN configuration
-* registers are still accessible.
-* - Normal Mode:In Normal Mode the CAN controller participates in bus
-* communication, by transmitting and receiving messages.
-* - Sleep Mode: In Sleep Mode the CAN Controller does not transmit any
-* messages. However, if any other node transmits a message, then the CAN
-* Controller receives the transmitted message and exits from Sleep Mode.
-* If there are new transmission requests from either the TX FIFO or the
-* TX High Priority Buffer when the CAN Controller is in Sleep Mode, these
-* requests are not serviced, and the CAN Controller continues to remain
-* in Sleep Mode. Interrupts are generated when the CAN controller enters
-* Sleep mode or Wakes up from Sleep mode.
-* - Loop Back Mode: In Loop Back mode, the CAN controller transmits a
-* recessive bit stream on to the CAN Bus. Any message that is transmitted
-* is looped back to the �Rx� line and acknowledged. The CAN controller
-* thus receives any message that it transmits. It does not participate in
-* normal bus communication and does not receive any messages that are
-* transmitted by other CAN nodes. This mode is used for diagnostic
-* purposes.
-* - Snoop Mode: In Snoop mode, the CAN controller transmits a
-* recessive bit stream on to the CAN Bus and does not participate
-* in normal bus communication but receives messages that are transmitted
-* by other CAN nodes. This mode is used for diagnostic purposes.
-*
-*
-* Buffer Alignment
-*
-* It is important to note that frame buffers passed to the driver must be
-* 32-bit aligned.
-*
-* Receive Address Filtering
-*
-* The device can be set to accept frames whose Identifiers match any of the
-* 4 filters set in the Acceptance Filter Mask/ID registers.
-*
-* The incoming Identifier is masked with the bits in the Acceptance Filter Mask
-* Register. This value is compared with the result of masking the bits in the
-* Acceptance Filter ID Register with the Acceptance Filter Mask Register. If
-* both these values are equal, the message will be stored in the RX FIFO.
-*
-* Acceptance Filtering is performed by each of the defined acceptance filters.
-* If the incoming identifier passes through any acceptance filter then the
-* frame is stored in the RX FIFO.
-*
-* If the Accpetance Filters are not set up then all the received messages are
-* stroed in the RX FIFO.
-*
-* PHY Communication
-*
-* This driver does not provide any mechanism for directly programming PHY.
-*
-* Interrupts
-*
-* The driver has no dependencies on the interrupt controller. The driver
-* provides an interrupt handler. User of this driver needs to provide
-* callback functions. An interrupt handler example is available with
-* the driver.
-*
-* Threads
-*
-* This driver is not thread safe. Any needs for threads or thread mutual
-* exclusion must be satisfied by the layer above this driver.
-*
-* Device Reset
-*
-* Bus Off interrupt that can occur in the device requires a device reset.
-* The user is responsible for resetting the device and re-configuring it
-* based on its needs (the driver does not save the current configuration).
-* When integrating into an RTOS, these reset and re-configure obligations are
-* taken care of by the OS adapter software if it exists for that RTOS.
-*
-* Device Configuration
-*
-* The device can be configured in various ways during the FPGA implementation
-* process. Configuration parameters are stored in the xcanps_g.c files.
-* A table is defined where each entry contains configuration information
-* for a CAN device. This information includes such things as the base address
-* of the memory-mapped device.
-*
-* Asserts
-*
-* Asserts are used within all Xilinx drivers to enforce constraints on argument
-* values. Asserts can be turned off on a system-wide basis by defining, at
-* compile time, the NDEBUG identifier. By default, asserts are turned on and it
-* is recommended that users leave asserts on during development.
-*
-* Building the driver
-*
-* The XCanPs driver is composed of several source files. This allows the user
-* to build and link only those parts of the driver that are necessary.
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ----- -------- -----------------------------------------------
-* 1.00a xd/sv 01/12/10 First release
-* 1.01a bss 12/27/11 Added the APIs XCanPs_SetTxIntrWatermark and
-* XCanPs_GetTxIntrWatermark.
-* Updated the Register/bit definitions
-* Changed XCANPS_RXFWIR_RXFLL_MASK to XCANPS_WIR_FW_MASK
-* Changed XCANPS_RXWIR_OFFSET to XCANPS_WIR_OFFSET
-* Added XCANPS_IXR_TXFEMP_MASK for Tx Fifo Empty
-* Changed XCANPS_IXR_RXFLL_MASK to
-* XCANPS_IXR_RXFWMFLL_MASK
-* Changed
-* XCANPS_TXBUF_ID_OFFSET to XCANPS_TXHPB_ID_OFFSET
-* XCANPS_TXBUF_DLC_OFFSET to XCANPS_TXHPB_DLC_OFFSET
-* XCANPS_TXBUF_DW1_OFFSET to XCANPS_TXHPB_DW1_OFFSET
-* XCANPS_TXBUF_DW2_OFFSET to XCANPS_TXHPB_DW2_OFFSET
-* 2.1 adk 23/08/14 Fixed CR:798792 Peripheral test for CANPS IP in
-* SDK claims a 40kbps baud rate but it's not.
-* 3.0 adk 09/12/14 Added support for Zynq Ultrascale Mp.Also code
-* modified for MISRA-C:2012 compliance.
-*
-*
-******************************************************************************/
-#ifndef XCANPS_H /* prevent circular inclusions */
-#define XCANPS_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xstatus.h"
-#include "xcanps_hw.h"
-#include "xil_types.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name CAN operation modes
- * @{
- */
-#define XCANPS_MODE_CONFIG 0x00000001U /**< Configuration mode */
-#define XCANPS_MODE_NORMAL 0x00000002U /**< Normal mode */
-#define XCANPS_MODE_LOOPBACK 0x00000004U /**< Loop Back mode */
-#define XCANPS_MODE_SLEEP 0x00000008U /**< Sleep mode */
-#define XCANPS_MODE_SNOOP 0x00000010U /**< Snoop mode */
-/* @} */
-
-/** @name Callback identifiers used as parameters to XCanPs_SetHandler()
- * @{
- */
-#define XCANPS_HANDLER_SEND 1U /**< Handler type for frame sending interrupt */
-#define XCANPS_HANDLER_RECV 2U /**< Handler type for frame reception interrupt*/
-#define XCANPS_HANDLER_ERROR 3U /**< Handler type for error interrupt */
-#define XCANPS_HANDLER_EVENT 4U /**< Handler type for all other interrupts */
-/* @} */
-
-/**************************** Type Definitions *******************************/
-
-/**
- * This typedef contains configuration information for a device.
- */
-typedef struct {
- u16 DeviceId; /**< Unique ID of device */
- u32 BaseAddr; /**< Register base address */
-} XCanPs_Config;
-
-/******************************************************************************/
-/**
- * Callback type for frame sending and reception interrupts.
- *
- * @param CallBackRef is a callback reference passed in by the upper layer
- * when setting the callback functions, and passed back to the
- * upper layer when the callback is invoked.
-*******************************************************************************/
-typedef void (*XCanPs_SendRecvHandler) (void *CallBackRef);
-
-/******************************************************************************/
-/**
- * Callback type for error interrupt.
- *
- * @param CallBackRef is a callback reference passed in by the upper layer
- * when setting the callback functions, and passed back to the
- * upper layer when the callback is invoked.
- * @param ErrorMask is a bit mask indicating the cause of the error. Its
- * value equals 'OR'ing one or more XCANPS_ESR_* values defined in
- * xcanps_hw.h
-*******************************************************************************/
-typedef void (*XCanPs_ErrorHandler) (void *CallBackRef, u32 ErrorMask);
-
-/******************************************************************************/
-/**
- * Callback type for all kinds of interrupts except sending frame interrupt,
- * receiving frame interrupt, and error interrupt.
- *
- * @param CallBackRef is a callback reference passed in by the upper layer
- * when setting the callback functions, and passed back to the
- * upper layer when the callback is invoked.
- * @param Mask is a bit mask indicating the pending interrupts. Its value
- * equals 'OR'ing one or more XCANPS_IXR_* defined in xcanps_hw.h
-*******************************************************************************/
-typedef void (*XCanPs_EventHandler) (void *CallBackRef, u32 Mask);
-
-/**
- * The XCanPs driver instance data. The user is required to allocate a
- * variable of this type for every CAN device in the system. A pointer
- * to a variable of this type is then passed to the driver API functions.
- */
-typedef struct {
- XCanPs_Config CanConfig; /**< Device configuration */
- u32 IsReady; /**< Device is initialized and ready */
-
- /**
- * Callback and callback reference for TXOK interrupt.
- */
- XCanPs_SendRecvHandler SendHandler;
- void *SendRef;
-
- /**
- * Callback and callback reference for RXOK/RXNEMP/RXFLL interrupts.
- */
- XCanPs_SendRecvHandler RecvHandler;
- void *RecvRef;
-
- /**
- * Callback and callback reference for ERROR interrupt.
- */
- XCanPs_ErrorHandler ErrorHandler;
- void *ErrorRef;
-
- /**
- * Callback and callback reference for RXOFLW/RXUFLW/TXBFLL/TXFLL/
- * Wakeup/Sleep/Bus off/ARBLST interrupts.
- */
- XCanPs_EventHandler EventHandler;
- void *EventRef;
-
-} XCanPs;
-
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/****************************************************************************/
-/**
-*
-* This macro checks if the transmission is complete.
-*
-* @param InstancePtr is a pointer to the XCanPs instance.
-*
-* @return
-* - TRUE if the transmission is done.
-* - FALSE if the transmission is not done.
-*
-* @note C-Style signature:
-* int XCanPs_IsTxDone(XCanPs *InstancePtr)
-*
-*******************************************************************************/
-#define XCanPs_IsTxDone(InstancePtr) \
- (((XCanPs_ReadReg(((InstancePtr)->CanConfig.BaseAddr), \
- XCANPS_ISR_OFFSET) & XCANPS_IXR_TXOK_MASK) != (u32)0) ? TRUE : FALSE)
-
-
-/****************************************************************************/
-/**
-*
-* This macro checks if the transmission FIFO is full.
-*
-* @param InstancePtr is a pointer to the XCanPs instance.
-*
-* @return
-* - TRUE if TX FIFO is full.
-* - FALSE if the TX FIFO is NOT full.
-*
-* @note C-Style signature:
-* int XCanPs_IsTxFifoFull(XCanPs *InstancePtr)
-*
-*****************************************************************************/
-#define XCanPs_IsTxFifoFull(InstancePtr) \
- (((XCanPs_ReadReg(((InstancePtr)->CanConfig.BaseAddr), \
- XCANPS_SR_OFFSET) & XCANPS_SR_TXFLL_MASK) != (u32)0) ? TRUE : FALSE)
-
-
-/****************************************************************************/
-/**
-*
-* This macro checks if the Transmission High Priority Buffer is full.
-*
-* @param InstancePtr is a pointer to the XCanPs instance.
-*
-* @return
-* - TRUE if the TX High Priority Buffer is full.
-* - FALSE if the TX High Priority Buffer is NOT full.
-*
-* @note C-Style signature:
-* int XCanPs_IsHighPriorityBufFull(XCanPs *InstancePtr)
-*
-*****************************************************************************/
-#define XCanPs_IsHighPriorityBufFull(InstancePtr) \
- (((XCanPs_ReadReg(((InstancePtr)->CanConfig.BaseAddr), \
- XCANPS_SR_OFFSET) & XCANPS_SR_TXBFLL_MASK) != (u32)0) ? TRUE : FALSE)
-
-
-/****************************************************************************/
-/**
-*
-* This macro checks if the receive FIFO is empty.
-*
-* @param InstancePtr is a pointer to the XCanPs instance.
-*
-* @return
-* - TRUE if RX FIFO is empty.
-* - FALSE if the RX FIFO is NOT empty.
-*
-* @note C-Style signature:
-* int XCanPs_IsRxEmpty(XCanPs *InstancePtr)
-*
-*****************************************************************************/
-#define XCanPs_IsRxEmpty(InstancePtr) \
- (((XCanPs_ReadReg(((InstancePtr)->CanConfig.BaseAddr), \
- XCANPS_ISR_OFFSET) & XCANPS_IXR_RXNEMP_MASK) != (u32)0) ? FALSE : TRUE)
-
-
-/****************************************************************************/
-/**
-*
-* This macro checks if the CAN device is ready for the driver to change
-* Acceptance Filter Identifier Registers (AFIR) and Acceptance Filter Mask
-* Registers (AFMR).
-*
-* AFIR and AFMR for a filter are changeable only after the filter is disabled
-* and this routine returns FALSE. The filter can be disabled using the
-* XCanPs_AcceptFilterDisable function.
-*
-* Use the XCanPs_Accept_* functions for configuring the acceptance filters.
-*
-* @param InstancePtr is a pointer to the XCanPs instance.
-*
-* @return
-* - TRUE if the device is busy and NOT ready to accept writes to
-* AFIR and AFMR.
-* - FALSE if the device is ready to accept writes to AFIR and
-* AFMR.
-*
-* @note C-Style signature:
-* int XCanPs_IsAcceptFilterBusy(XCanPs *InstancePtr)
-*
-*****************************************************************************/
-#define XCanPs_IsAcceptFilterBusy(InstancePtr) \
- (((XCanPs_ReadReg(((InstancePtr)->CanConfig.BaseAddr), \
- XCANPS_SR_OFFSET) & XCANPS_SR_ACFBSY_MASK) != (u32)0) ? TRUE : FALSE)
-
-
-/****************************************************************************/
-/**
-*
-* This macro calculates CAN message identifier value given identifier field
-* values.
-*
-* @param StandardId contains Standard Message ID value.
-* @param SubRemoteTransReq contains Substitute Remote Transmission
-* Request value.
-* @param IdExtension contains Identifier Extension value.
-* @param ExtendedId contains Extended Message ID value.
-* @param RemoteTransReq contains Remote Transmission Request value.
-*
-* @return Message Identifier value.
-*
-* @note C-Style signature:
-* u32 XCanPs_CreateIdValue(u32 StandardId,
-* u32 SubRemoteTransReq,
-* u32 IdExtension, u32 ExtendedId,
-* u32 RemoteTransReq)
-*
-* Read the CAN specification for meaning of each parameter.
-*
-*****************************************************************************/
-#define XCanPs_CreateIdValue(StandardId, SubRemoteTransReq, IdExtension, \
- ExtendedId, RemoteTransReq) \
- ((((StandardId) << XCANPS_IDR_ID1_SHIFT) & XCANPS_IDR_ID1_MASK) | \
- (((SubRemoteTransReq) << XCANPS_IDR_SRR_SHIFT) & XCANPS_IDR_SRR_MASK)|\
- (((IdExtension) << XCANPS_IDR_IDE_SHIFT) & XCANPS_IDR_IDE_MASK) | \
- (((ExtendedId) << XCANPS_IDR_ID2_SHIFT) & XCANPS_IDR_ID2_MASK) | \
- ((RemoteTransReq) & XCANPS_IDR_RTR_MASK))
-
-
-/****************************************************************************/
-/**
-*
-* This macro calculates value for Data Length Code register given Data
-* Length Code value.
-*
-* @param DataLengCode indicates Data Length Code value.
-*
-* @return Value that can be assigned to Data Length Code register.
-*
-* @note C-Style signature:
-* u32 XCanPs_CreateDlcValue(u32 DataLengCode)
-*
-* Read the CAN specification for meaning of Data Length Code.
-*
-*****************************************************************************/
-#define XCanPs_CreateDlcValue(DataLengCode) \
- (((DataLengCode) << XCANPS_DLCR_DLC_SHIFT) & XCANPS_DLCR_DLC_MASK)
-
-
-/****************************************************************************/
-/**
-*
-* This macro clears the timestamp in the Timestamp Control Register.
-*
-* @param InstancePtr is a pointer to the XCanPs instance.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XCanPs_ClearTimestamp(XCanPs *InstancePtr)
-*
-*****************************************************************************/
-#define XCanPs_ClearTimestamp(InstancePtr) \
- XCanPs_WriteReg((InstancePtr)->CanConfig.BaseAddr, \
- XCANPS_TCR_OFFSET, XCANPS_TCR_CTS_MASK)
-
-/************************** Function Prototypes ******************************/
-
-/*
- * Functions in xcanps.c
- */
-s32 XCanPs_CfgInitialize(XCanPs *InstancePtr, XCanPs_Config *ConfigPtr,
- u32 EffectiveAddr);
-
-void XCanPs_Reset(XCanPs *InstancePtr);
-u8 XCanPs_GetMode(XCanPs *InstancePtr);
-void XCanPs_EnterMode(XCanPs *InstancePtr, u8 OperationMode);
-u32 XCanPs_GetStatus(XCanPs *InstancePtr);
-void XCanPs_GetBusErrorCounter(XCanPs *InstancePtr, u8 *RxErrorCount,
- u8 *TxErrorCount);
-u32 XCanPs_GetBusErrorStatus(XCanPs *InstancePtr);
-void XCanPs_ClearBusErrorStatus(XCanPs *InstancePtr, u32 Mask);
-s32 XCanPs_Send(XCanPs *InstancePtr, u32 *FramePtr);
-s32 XCanPs_Recv(XCanPs *InstancePtr, u32 *FramePtr);
-s32 XCanPs_SendHighPriority(XCanPs *InstancePtr, u32 *FramePtr);
-void XCanPs_AcceptFilterEnable(XCanPs *InstancePtr, u32 FilterIndexes);
-void XCanPs_AcceptFilterDisable(XCanPs *InstancePtr, u32 FilterIndexes);
-u32 XCanPs_AcceptFilterGetEnabled(XCanPs *InstancePtr);
-s32 XCanPs_AcceptFilterSet(XCanPs *InstancePtr, u32 FilterIndex,
- u32 MaskValue, u32 IdValue);
-void XCanPs_AcceptFilterGet(XCanPs *InstancePtr, u32 FilterIndex,
- u32 *MaskValue, u32 *IdValue);
-
-s32 XCanPs_SetBaudRatePrescaler(XCanPs *InstancePtr, u8 Prescaler);
-u8 XCanPs_GetBaudRatePrescaler(XCanPs *InstancePtr);
-s32 XCanPs_SetBitTiming(XCanPs *InstancePtr, u8 SyncJumpWidth,
- u8 TimeSegment2, u8 TimeSegment1);
-void XCanPs_GetBitTiming(XCanPs *InstancePtr, u8 *SyncJumpWidth,
- u8 *TimeSegment2, u8 *TimeSegment1);
-
-s32 XCanPs_SetRxIntrWatermark(XCanPs *InstancePtr, u8 Threshold);
-u8 XCanPs_GetRxIntrWatermark(XCanPs *InstancePtr);
-s32 XCanPs_SetTxIntrWatermark(XCanPs *InstancePtr, u8 Threshold);
-u8 XCanPs_GetTxIntrWatermark(XCanPs *InstancePtr);
-
-/*
- * Diagnostic functions in xcanps_selftest.c
- */
-s32 XCanPs_SelfTest(XCanPs *InstancePtr);
-
-/*
- * Functions in xcanps_intr.c
- */
-void XCanPs_IntrEnable(XCanPs *InstancePtr, u32 Mask);
-void XCanPs_IntrDisable(XCanPs *InstancePtr, u32 Mask);
-u32 XCanPs_IntrGetEnabled(XCanPs *InstancePtr);
-u32 XCanPs_IntrGetStatus(XCanPs *InstancePtr);
-void XCanPs_IntrClear(XCanPs *InstancePtr, u32 Mask);
-void XCanPs_IntrHandler(void *InstancePtr);
-s32 XCanPs_SetHandler(XCanPs *InstancePtr, u32 HandlerType,
- void *CallBackFunc, void *CallBackRef);
-
-/*
- * Functions in xcanps_sinit.c
- */
-XCanPs_Config *XCanPs_LookupConfig(u16 DeviceId);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcanps_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcanps_hw.h
deleted file mode 100644
index 22f9b0725..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcanps_hw.h
+++ /dev/null
@@ -1,366 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xcanps_hw.h
-*
-* This header file contains the identifiers and basic driver functions (or
-* macros) that can be used to access the device. Other driver functions
-* are defined in xcanps.h.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ----- -------- -----------------------------------------------
-* 1.00a xd/sv 01/12/10 First release
-* 1.01a sbs 12/27/11 Updated the Register/bit definitions
-* Changed XCANPS_RXFWIR_RXFLL_MASK to XCANPS_WIR_FW_MASK
-* Changed XCANPS_RXWIR_OFFSET to XCANPS_WIR_OFFSET
-* Added XCANPS_IXR_TXFEMP_MASK for Tx Fifo Empty
-* Changed XCANPS_IXR_RXFLL_MASK to
-* XCANPS_IXR_RXFWMFLL_MASK
-* Changed
-* XCANPS_TXBUF_ID_OFFSET to XCANPS_TXHPB_ID_OFFSET
-* XCANPS_TXBUF_DLC_OFFSET to XCANPS_TXHPB_DLC_OFFSET
-* XCANPS_TXBUF_DW1_OFFSET to XCANPS_TXHPB_DW1_OFFSET
-* XCANPS_TXBUF_DW2_OFFSET to XCANPS_TXHPB_DW2_OFFSET
-* 1.02a adk 08/08/13 Updated for inclding the function prototype
-* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
-*
-*
-******************************************************************************/
-
-#ifndef XCANPS_HW_H /* prevent circular inclusions */
-#define XCANPS_HW_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xil_io.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Register offsets for the CAN. Each register is 32 bits.
- * @{
- */
-#define XCANPS_SRR_OFFSET 0x00000000U /**< Software Reset Register */
-#define XCANPS_MSR_OFFSET 0x00000004U /**< Mode Select Register */
-#define XCANPS_BRPR_OFFSET 0x00000008U /**< Baud Rate Prescaler */
-#define XCANPS_BTR_OFFSET 0x0000000CU /**< Bit Timing Register */
-#define XCANPS_ECR_OFFSET 0x00000010U /**< Error Counter Register */
-#define XCANPS_ESR_OFFSET 0x00000014U /**< Error Status Register */
-#define XCANPS_SR_OFFSET 0x00000018U /**< Status Register */
-
-#define XCANPS_ISR_OFFSET 0x0000001CU /**< Interrupt Status Register */
-#define XCANPS_IER_OFFSET 0x00000020U /**< Interrupt Enable Register */
-#define XCANPS_ICR_OFFSET 0x00000024U /**< Interrupt Clear Register */
-#define XCANPS_TCR_OFFSET 0x00000028U /**< Timestamp Control Register */
-#define XCANPS_WIR_OFFSET 0x0000002CU /**< Watermark Interrupt Reg */
-
-#define XCANPS_TXFIFO_ID_OFFSET 0x00000030U /**< TX FIFO ID */
-#define XCANPS_TXFIFO_DLC_OFFSET 0x00000034U /**< TX FIFO DLC */
-#define XCANPS_TXFIFO_DW1_OFFSET 0x00000038U /**< TX FIFO Data Word 1 */
-#define XCANPS_TXFIFO_DW2_OFFSET 0x0000003CU /**< TX FIFO Data Word 2 */
-
-#define XCANPS_TXHPB_ID_OFFSET 0x00000040U /**< TX High Priority Buffer ID */
-#define XCANPS_TXHPB_DLC_OFFSET 0x00000044U /**< TX High Priority Buffer DLC */
-#define XCANPS_TXHPB_DW1_OFFSET 0x00000048U /**< TX High Priority Buf Data 1 */
-#define XCANPS_TXHPB_DW2_OFFSET 0x0000004CU /**< TX High Priority Buf Data Word 2 */
-
-#define XCANPS_RXFIFO_ID_OFFSET 0x00000050U /**< RX FIFO ID */
-#define XCANPS_RXFIFO_DLC_OFFSET 0x00000054U /**< RX FIFO DLC */
-#define XCANPS_RXFIFO_DW1_OFFSET 0x00000058U /**< RX FIFO Data Word 1 */
-#define XCANPS_RXFIFO_DW2_OFFSET 0x0000005CU /**< RX FIFO Data Word 2 */
-
-#define XCANPS_AFR_OFFSET 0x00000060U /**< Acceptance Filter Register */
-#define XCANPS_AFMR1_OFFSET 0x00000064U /**< Acceptance Filter Mask 1 */
-#define XCANPS_AFIR1_OFFSET 0x00000068U /**< Acceptance Filter ID 1 */
-#define XCANPS_AFMR2_OFFSET 0x0000006CU /**< Acceptance Filter Mask 2 */
-#define XCANPS_AFIR2_OFFSET 0x00000070U /**< Acceptance Filter ID 2 */
-#define XCANPS_AFMR3_OFFSET 0x00000074U /**< Acceptance Filter Mask 3 */
-#define XCANPS_AFIR3_OFFSET 0x00000078U /**< Acceptance Filter ID 3 */
-#define XCANPS_AFMR4_OFFSET 0x0000007CU /**< Acceptance Filter Mask 4 */
-#define XCANPS_AFIR4_OFFSET 0x00000080U /**< Acceptance Filter ID 4 */
-/* @} */
-
-/** @name Software Reset Register (SRR) Bit Definitions and Masks
- * @{
- */
-#define XCANPS_SRR_CEN_MASK 0x00000002U /**< Can Enable */
-#define XCANPS_SRR_SRST_MASK 0x00000001U /**< Reset */
-/* @} */
-
-/** @name Mode Select Register (MSR) Bit Definitions and Masks
- * @{
- */
-#define XCANPS_MSR_SNOOP_MASK 0x00000004U /**< Snoop Mode Select */
-#define XCANPS_MSR_LBACK_MASK 0x00000002U /**< Loop Back Mode Select */
-#define XCANPS_MSR_SLEEP_MASK 0x00000001U /**< Sleep Mode Select */
-/* @} */
-
-/** @name Baud Rate Prescaler register (BRPR) Bit Definitions and Masks
- * @{
- */
-#define XCANPS_BRPR_BRP_MASK 0x000000FFU /**< Baud Rate Prescaler */
-/* @} */
-
-/** @name Bit Timing Register (BTR) Bit Definitions and Masks
- * @{
- */
-#define XCANPS_BTR_SJW_MASK 0x00000180U /**< Synchronization Jump Width */
-#define XCANPS_BTR_SJW_SHIFT 7U
-#define XCANPS_BTR_TS2_MASK 0x00000070U /**< Time Segment 2 */
-#define XCANPS_BTR_TS2_SHIFT 4U
-#define XCANPS_BTR_TS1_MASK 0x0000000FU /**< Time Segment 1 */
-/* @} */
-
-/** @name Error Counter Register (ECR) Bit Definitions and Masks
- * @{
- */
-#define XCANPS_ECR_REC_MASK 0x0000FF00U /**< Receive Error Counter */
-#define XCANPS_ECR_REC_SHIFT 8U
-#define XCANPS_ECR_TEC_MASK 0x000000FFU /**< Transmit Error Counter */
-/* @} */
-
-/** @name Error Status Register (ESR) Bit Definitions and Masks
- * @{
- */
-#define XCANPS_ESR_ACKER_MASK 0x00000010U /**< ACK Error */
-#define XCANPS_ESR_BERR_MASK 0x00000008U /**< Bit Error */
-#define XCANPS_ESR_STER_MASK 0x00000004U /**< Stuff Error */
-#define XCANPS_ESR_FMER_MASK 0x00000002U /**< Form Error */
-#define XCANPS_ESR_CRCER_MASK 0x00000001U /**< CRC Error */
-/* @} */
-
-/** @name Status Register (SR) Bit Definitions and Masks
- * @{
- */
-#define XCANPS_SR_SNOOP_MASK 0x00001000U /**< Snoop Mask */
-#define XCANPS_SR_ACFBSY_MASK 0x00000800U /**< Acceptance Filter busy */
-#define XCANPS_SR_TXFLL_MASK 0x00000400U /**< TX FIFO is full */
-#define XCANPS_SR_TXBFLL_MASK 0x00000200U /**< TX High Priority Buffer full */
-#define XCANPS_SR_ESTAT_MASK 0x00000180U /**< Error Status */
-#define XCANPS_SR_ESTAT_SHIFT 7U
-#define XCANPS_SR_ERRWRN_MASK 0x00000040U /**< Error Warning */
-#define XCANPS_SR_BBSY_MASK 0x00000020U /**< Bus Busy */
-#define XCANPS_SR_BIDLE_MASK 0x00000010U /**< Bus Idle */
-#define XCANPS_SR_NORMAL_MASK 0x00000008U /**< Normal Mode */
-#define XCANPS_SR_SLEEP_MASK 0x00000004U /**< Sleep Mode */
-#define XCANPS_SR_LBACK_MASK 0x00000002U /**< Loop Back Mode */
-#define XCANPS_SR_CONFIG_MASK 0x00000001U /**< Configuration Mode */
-/* @} */
-
-/** @name Interrupt Status/Enable/Clear Register Bit Definitions and Masks
- * @{
- */
-#define XCANPS_IXR_TXFEMP_MASK 0x00004000U /**< Tx Fifo Empty Interrupt */
-#define XCANPS_IXR_TXFWMEMP_MASK 0x00002000U /**< Tx Fifo Watermark Empty */
-#define XCANPS_IXR_RXFWMFLL_MASK 0x00001000U /**< Rx FIFO Watermark Full */
-#define XCANPS_IXR_WKUP_MASK 0x00000800U /**< Wake up Interrupt */
-#define XCANPS_IXR_SLP_MASK 0x00000400U /**< Sleep Interrupt */
-#define XCANPS_IXR_BSOFF_MASK 0x00000200U /**< Bus Off Interrupt */
-#define XCANPS_IXR_ERROR_MASK 0x00000100U /**< Error Interrupt */
-#define XCANPS_IXR_RXNEMP_MASK 0x00000080U /**< RX FIFO Not Empty Interrupt */
-#define XCANPS_IXR_RXOFLW_MASK 0x00000040U /**< RX FIFO Overflow Interrupt */
-#define XCANPS_IXR_RXUFLW_MASK 0x00000020U /**< RX FIFO Underflow Interrupt */
-#define XCANPS_IXR_RXOK_MASK 0x00000010U /**< New Message Received Intr */
-#define XCANPS_IXR_TXBFLL_MASK 0x00000008U /**< TX High Priority Buf Full */
-#define XCANPS_IXR_TXFLL_MASK 0x00000004U /**< TX FIFO Full Interrupt */
-#define XCANPS_IXR_TXOK_MASK 0x00000002U /**< TX Successful Interrupt */
-#define XCANPS_IXR_ARBLST_MASK 0x00000001U /**< Arbitration Lost Interrupt */
-#define XCANPS_IXR_ALL ((u32)XCANPS_IXR_RXFWMFLL_MASK | \
- (u32)XCANPS_IXR_WKUP_MASK | \
- (u32)XCANPS_IXR_SLP_MASK | \
- (u32)XCANPS_IXR_BSOFF_MASK | \
- (u32)XCANPS_IXR_ERROR_MASK | \
- (u32)XCANPS_IXR_RXNEMP_MASK | \
- (u32)XCANPS_IXR_RXOFLW_MASK | \
- (u32)XCANPS_IXR_RXUFLW_MASK | \
- (u32)XCANPS_IXR_RXOK_MASK | \
- (u32)XCANPS_IXR_TXBFLL_MASK | \
- (u32)XCANPS_IXR_TXFLL_MASK | \
- (u32)XCANPS_IXR_TXOK_MASK | \
- (u32)XCANPS_IXR_ARBLST_MASK)
-/* @} */
-
-/** @name CAN Timestamp Control Register (TCR) Bit Definitions and Masks
- * @{
- */
-#define XCANPS_TCR_CTS_MASK 0x00000001U /**< Clear Timestamp counter mask */
-/* @} */
-
-/** @name CAN Watermark Register (WIR) Bit Definitions and Masks
- * @{
- */
-#define XCANPS_WIR_FW_MASK 0x0000003FU /**< Rx Full Threshold mask */
-#define XCANPS_WIR_EW_MASK 0x00003F00U /**< Tx Empty Threshold mask */
-#define XCANPS_WIR_EW_SHIFT 0x00000008U /**< Tx Empty Threshold shift */
-
-/* @} */
-
-/** @name CAN Frame Identifier (TX High Priority Buffer/TX/RX/Acceptance Filter
- Mask/Acceptance Filter ID)
- * @{
- */
-#define XCANPS_IDR_ID1_MASK 0xFFE00000U /**< Standard Messg Identifier */
-#define XCANPS_IDR_ID1_SHIFT 21U
-#define XCANPS_IDR_SRR_MASK 0x00100000U /**< Substitute Remote TX Req */
-#define XCANPS_IDR_SRR_SHIFT 20U
-#define XCANPS_IDR_IDE_MASK 0x00080000U /**< Identifier Extension */
-#define XCANPS_IDR_IDE_SHIFT 19U
-#define XCANPS_IDR_ID2_MASK 0x0007FFFEU /**< Extended Message Ident */
-#define XCANPS_IDR_ID2_SHIFT 1U
-#define XCANPS_IDR_RTR_MASK 0x00000001U /**< Remote TX Request */
-/* @} */
-
-/** @name CAN Frame Data Length Code (TX High Priority Buffer/TX/RX)
- * @{
- */
-#define XCANPS_DLCR_DLC_MASK 0xF0000000U /**< Data Length Code */
-#define XCANPS_DLCR_DLC_SHIFT 28U
-#define XCANPS_DLCR_TIMESTAMP_MASK 0x0000FFFFU /**< Timestamp Mask (Rx only) */
-
-/* @} */
-
-/** @name CAN Frame Data Word 1 (TX High Priority Buffer/TX/RX)
- * @{
- */
-#define XCANPS_DW1R_DB0_MASK 0xFF000000U /**< Data Byte 0 */
-#define XCANPS_DW1R_DB0_SHIFT 24U
-#define XCANPS_DW1R_DB1_MASK 0x00FF0000U /**< Data Byte 1 */
-#define XCANPS_DW1R_DB1_SHIFT 16U
-#define XCANPS_DW1R_DB2_MASK 0x0000FF00U /**< Data Byte 2 */
-#define XCANPS_DW1R_DB2_SHIFT 8U
-#define XCANPS_DW1R_DB3_MASK 0x000000FFU /**< Data Byte 3 */
-/* @} */
-
-/** @name CAN Frame Data Word 2 (TX High Priority Buffer/TX/RX)
- * @{
- */
-#define XCANPS_DW2R_DB4_MASK 0xFF000000U /**< Data Byte 4 */
-#define XCANPS_DW2R_DB4_SHIFT 24U
-#define XCANPS_DW2R_DB5_MASK 0x00FF0000U /**< Data Byte 5 */
-#define XCANPS_DW2R_DB5_SHIFT 16U
-#define XCANPS_DW2R_DB6_MASK 0x0000FF00U /**< Data Byte 6 */
-#define XCANPS_DW2R_DB6_SHIFT 8U
-#define XCANPS_DW2R_DB7_MASK 0x000000FFU /**< Data Byte 7 */
-/* @} */
-
-/** @name Acceptance Filter Register (AFR) Bit Definitions and Masks
- * @{
- */
-#define XCANPS_AFR_UAF4_MASK 0x00000008U /**< Use Acceptance Filter No.4 */
-#define XCANPS_AFR_UAF3_MASK 0x00000004U /**< Use Acceptance Filter No.3 */
-#define XCANPS_AFR_UAF2_MASK 0x00000002U /**< Use Acceptance Filter No.2 */
-#define XCANPS_AFR_UAF1_MASK 0x00000001U /**< Use Acceptance Filter No.1 */
-#define XCANPS_AFR_UAF_ALL_MASK ((u32)XCANPS_AFR_UAF4_MASK | \
- (u32)XCANPS_AFR_UAF3_MASK | \
- (u32)XCANPS_AFR_UAF2_MASK | \
- (u32)XCANPS_AFR_UAF1_MASK)
-/* @} */
-
-/** @name CAN frame length constants
- * @{
- */
-#define XCANPS_MAX_FRAME_SIZE sizeof(u32)*16U /**< Maximum CAN frame length in bytes */
-/* @} */
-
-/* For backwards compatibilty */
-#define XCANPS_TXBUF_ID_OFFSET XCANPS_TXHPB_ID_OFFSET
-#define XCANPS_TXBUF_DLC_OFFSET XCANPS_TXHPB_DLC_OFFSET
-#define XCANPS_TXBUF_DW1_OFFSET XCANPS_TXHPB_DW1_OFFSET
-#define XCANPS_TXBUF_DW2_OFFSET XCANPS_TXHPB_DW2_OFFSET
-
-#define XCANPS_RXFWIR_RXFLL_MASK XCANPS_WIR_FW_MASK
-#define XCANPS_RXWIR_OFFSET XCANPS_WIR_OFFSET
-#define XCANPS_IXR_RXFLL_MASK XCANPS_IXR_RXFWMFLL_MASK
-
-
-
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/****************************************************************************/
-/**
-*
-* This macro reads the given register.
-*
-* @param BaseAddr is the base address of the device.
-* @param RegOffset is the register offset to be read.
-*
-* @return The 32-bit value of the register
-*
-* @note None.
-*
-*****************************************************************************/
-#define XCanPs_ReadReg(BaseAddr, RegOffset) \
- Xil_In32((BaseAddr) + (u32)(RegOffset))
-
-
-/****************************************************************************/
-/**
-*
-* This macro writes the given register.
-*
-* @param BaseAddr is the base address of the device.
-* @param RegOffset is the register offset to be written.
-* @param Data is the 32-bit value to write to the register.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-#define XCanPs_WriteReg(BaseAddr, RegOffset, Data) \
- Xil_Out32((BaseAddr) + (u32)(RegOffset), (u32)(Data))
-
-/************************** Function Prototypes ******************************/
-/*
- * Perform reset operation to the CanPs interface
- */
-void XCanPs_ResetHw(u32 BaseAddr);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcsudma.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcsudma.h
deleted file mode 100644
index 831bcfccd..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcsudma.h
+++ /dev/null
@@ -1,414 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* The CSU_DMA is present inside CSU (Configuration Security Unit) module which
-* is located within the Low-Power Subsystem (LPS) internal to the PS.
-* CSU_DMA allows the CSU to move data efficiently between the memory (32 bit
-* AXI interface) and the CSU stream peripherals (SHA, AES and PCAP) via Secure
-* Stream Switch (SSS).
-*
-* The CSU_DMA is a 2 channel simple DMA, allowing separate control of the SRC
-* (read) channel and DST (write) channel. The DMA is effectively able to
-* transfer data:
-* - From PS-side to the SSS-side (SRC DMA only)
-* - From SSS-side to the PS-side (DST DMA only)
-* - Simultaneous PS-side to SSS_side and SSS-side to the PS-side
-*
-* Initialization & Configuration
-*
-* The device driver enables higher layer software (e.g., an application) to
-* communicate to the CSU_DMA core.
-*
-* XCsuDma_CfgInitialize() API is used to initialize the CSU_DMA core.
-* The user needs to first call the XCsuDma_LookupConfig() API which returns
-* the Configuration structure pointer which is passed as a parameter to the
-* XCsuDma_CfgInitialize() API.
-*
-* Interrupts
-* This driver will not support handling of interrupts user should write handler
-* to handle the interrupts.
-*
-* Virtual Memory
-*
-* This driver supports Virtual Memory. The RTOS is responsible for calculating
-* the correct device base address in Virtual Memory space.
-*
-* Threads
-*
-* This driver is not thread safe. Any needs for threads or thread mutual
-* exclusion must be satisfied by the layer above this driver.
-*
-* Asserts
-*
-* Asserts are used within all Xilinx drivers to enforce constraints on argument
-* values. Asserts can be turned off on a system-wide basis by defining, at
-* compile time, the NDEBUG identifier. By default, asserts are turned on and it
-* is recommended that users leave asserts on during development.
-*
-* Building the driver
-*
-* The XCsuDma driver is composed of several source files. This allows the user
-* to build and link only those parts of the driver that are necessary.
-*
-* @file xcsudma.h
-*
-* This header file contains identifiers and register-level driver functions (or
-* macros), range macros, structure typedefs that can be used to access the
-* Xilinx CSU_DMA core instance.
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- -----------------------------------------------------
-* 1.0 vnsld 22/10/14 First release
-*
-*
-******************************************************************************/
-
-#ifndef XCSUDMA_H_
-#define XCSUDMA_H_ /**< Prevent circular inclusions
- * by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xcsudma_hw.h"
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xstatus.h"
-#include "xil_cache.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name CSU_DMA Channels
- * @{
- */
-typedef enum {
- XCSUDMA_SRC_CHANNEL = 0U, /**< Source Channel of CSU_DMA */
- XCSUDMA_DST_CHANNEL /**< Destination Channel of CSU_DMA */
-}XCsuDma_Channel;
-/*@}*/
-
-/** @name CSU_DMA pause types
- * @{
- */
-typedef enum {
- XCSUDMA_PAUSE_MEMORY, /**< Pauses memory data transfer
- * to/from CSU_DMA */
- XCSUDMA_PAUSE_STREAM, /**< Pauses stream data transfer
- * to/from CSU_DMA */
-}XCsuDma_PauseType;
-
-/*@}*/
-
-
-/** @name Ranges of Size
- * @{
- */
-#define XCSUDMA_SIZE_MAX 0x07FFFFFF /**< Maximum allowed no of words */
-
-/*@}*/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/*****************************************************************************/
-/**
-*
-* This function resets the CSU_DMA core.
-*
-* @param None.
-*
-* @return None.
-*
-* @note None.
-* C-style signature:
-* void XCsuDma_Reset()
-*
-******************************************************************************/
-#define XCsuDma_Reset() \
- Xil_Out32(((u32)(XCSU_BASEADDRESS) + (u32)(XCSU_DMA_RESET_OFFSET)), \
- (u32)(XCSUDMA_RESET_SET_MASK)); \
- Xil_Out32(((u32)(XCSU_BASEADDRESS) + (u32)(XCSU_DMA_RESET_OFFSET)), \
- (u32)(XCSUDMA_RESET_UNSET_MASK));
-
-/*****************************************************************************/
-/**
-* This function will be in busy while loop until the data transfer is
-* completed.
-*
-* @param InstancePtr is a pointer to XCsuDma instance to be worked on.
-* @param Channel represents the type of channel either it is Source or
-* Destination.
-* Source channel - XCSUDMA_SRC_CHANNEL
-* Destination Channel - XCSUDMA_DST_CHANNEL
-*
-* @return None.
-*
-* @note This function should be called after XCsuDma_Transfer in polled
-* mode to wait until the data gets transfered completely.
-* C-style signature:
-* void XCsuDma_WaitForDone(XCsuDma *InstancePtr,
-* XCsuDma_Channel Channel)
-*
-******************************************************************************/
-#define XCsuDma_WaitForDone(InstancePtr,Channel) \
- while((XCsuDma_ReadReg(((InstancePtr)->Config.BaseAddress), \
- ((u32)(XCSUDMA_I_STS_OFFSET) + \
- ((u32)(Channel) * (u32)(XCSUDMA_OFFSET_DIFF)))) & \
- (u32)(XCSUDMA_IXR_DONE_MASK)) != (XCSUDMA_IXR_DONE_MASK))
-
-/*****************************************************************************/
-/**
-*
-* This function returns the number of completed SRC/DST DMA transfers that
-* have not been acknowledged by software based on the channel selection.
-*
-* @param InstancePtr is a pointer to XCsuDma instance to be worked on.
-* @param Channel represents the type of channel either it is Source or
-* Destination.
-* Source channel - XCSUDMA_SRC_CHANNEL
-* Destination Channel - XCSUDMA_DST_CHANNEL
-*
-* @return Count is number of completed DMA transfers but not acknowledged
-* (Range is 0 to 7).
-* - 000 - All finished transfers have been acknowledged.
-* - Count - Count number of finished transfers are still
-* outstanding.
-*
-* @note None.
-* C-style signature:
-* u8 XCsuDma_GetDoneCount(XCsuDma *InstancePtr,
-* XCsuDma_Channel Channel)
-*
-******************************************************************************/
-#define XCsuDma_GetDoneCount(InstancePtr, Channel) \
- ((XCsuDma_ReadReg(((InstancePtr)->Config.BaseAddress), \
- ((u32)(XCSUDMA_STS_OFFSET) + \
- ((u32)(Channel) * (u32)(XCSUDMA_OFFSET_DIFF)))) & \
- (u32)(XCSUDMA_STS_DONE_CNT_MASK)) >> \
- (u32)(XCSUDMA_STS_DONE_CNT_SHIFT))
-
-/*****************************************************************************/
-/**
-*
-* This function returns the current SRC/DST FIFO level in 32 bit words of the
-* selected channel
-* @param InstancePtr is a pointer to XCsuDma instance to be worked on.
-* @param Channel represents the type of channel either it is Source or
-* Destination.
-* Source channel - XCSUDMA_SRC_CHANNEL
-* Destination Channel - XCSUDMA_DST_CHANNEL
-*
-* @return FIFO level. (Range is 0 to 128)
-* - 0 Indicates empty
-* - Any number 1 to 128 indicates the number of entries in FIFO.
-*
-* @note None.
-* C-style signature:
-* u8 XCsuDma_GetFIFOLevel(XCsuDma *InstancePtr,
-* XCsuDma_Channel Channel)
-*
-******************************************************************************/
-#define XCsuDma_GetFIFOLevel(InstancePtr, Channel) \
- ((XCsuDma_ReadReg(((InstancePtr)->Config.BaseAddress), \
- ((u32)(XCSUDMA_STS_OFFSET) + \
- ((u32)(Channel) * (u32)(XCSUDMA_OFFSET_DIFF)))) & \
- (u32)(XCSUDMA_STS_FIFO_LEVEL_MASK)) >> \
- (u32)(XCSUDMA_STS_FIFO_LEVEL_SHIFT))
-
-/*****************************************************************************/
-/**
-*
-* This function returns the current number of read(src)/write(dst) outstanding
-* commands based on the type of channel selected.
-*
-* @param InstancePtr is a pointer to XCsuDma instance to be worked on.
-* @param Channel represents the type of channel either it is Source or
-* Destination.
-* Source channel - XCSUDMA_SRC_CHANNEL
-* Destination Channel - XCSUDMA_DST_CHANNEL
-*
-* @return Count of outstanding commands. (Range is 0 to 9).
-*
-* @note None.
-* C-style signature:
-* u8 XCsuDma_GetWROutstandCount(XCsuDma *InstancePtr,
-* XCsuDma_Channel Channel)
-*
-******************************************************************************/
-#define XCsuDma_GetWROutstandCount(InstancePtr, Channel) \
- ((XCsuDma_ReadReg(((InstancePtr)->Config.BaseAddress), \
- ((u32)(XCSUDMA_STS_OFFSET) + \
- ((u32)(Channel) * (u32)(XCSUDMA_OFFSET_DIFF)))) & \
- (u32)(XCUSDMA_STS_OUTSTDG_MASK)) >> \
- (u32)(XCUSDMA_STS_OUTSTDG_SHIFT))
-
-/*****************************************************************************/
-/**
-*
-* This function returns the status of Channel either it is busy or not.
-*
-* @param InstancePtr is a pointer to XCsuDma instance to be worked on.
-* @param Channel represents the type of channel either it is Source or
-* Destination.
-* Source channel - XCSUDMA_SRC_CHANNEL
-* Destination Channel - XCSUDMA_DST_CHANNEL
-*
-* @return Returns the current status of the core.
-* - TRUE represents core is currently busy.
-* - FALSE represents core is not involved in any transfers.
-*
-* @note None.
-* C-style signature:
-* s32 XCsuDma_IsBusy(XCsuDma *InstancePtr, XCsuDma_Channel Channel)
-*
-******************************************************************************/
-
-#define XCsuDma_IsBusy(InstancePtr, Channel) \
- ((XCsuDma_ReadReg(((InstancePtr)->Config.BaseAddress), \
- ((u32)(XCSUDMA_STS_OFFSET) + \
- ((u32)(Channel) * (u32)(XCSUDMA_OFFSET_DIFF)))) & \
- (u32)(XCSUDMA_STS_BUSY_MASK)) == (XCSUDMA_STS_BUSY_MASK)) ? \
- (TRUE) : (FALSE)
-
-
-/**************************** Type Definitions *******************************/
-
-/**
-* This typedef contains configuration information for a CSU_DMA core.
-* Each CSU_DMA core should have a configuration structure associated.
-*/
-typedef struct {
- u16 DeviceId; /**< DeviceId is the unique ID of the
- * device */
- u32 BaseAddress; /**< BaseAddress is the physical base address
- * of the device's registers */
-} XCsuDma_Config;
-
-
-/******************************************************************************/
-/**
-*
-* The XCsuDma driver instance data structure. A pointer to an instance data
-* structure is passed around by functions to refer to a specific driver
-* instance.
-*/
-typedef struct {
- XCsuDma_Config Config; /**< Hardware configuration */
- u32 IsReady; /**< Device and the driver instance
- * are initialized */
-}XCsuDma;
-
-
-/******************************************************************************/
-/**
-* This typedef contains all the configuration feilds which needs to be set
-* before the start of the data transfer. All these feilds of CSU_DMA can be
-* configured by using XCsuDma_SetConfig API.
-*/
-typedef struct {
- u8 SssFifoThesh; /**< SSS FIFO threshold value */
- u8 ApbErr; /**< ABP invalid access error */
- u8 EndianType; /**< Type of endianess */
- u8 AxiBurstType; /**< Type of AXI bus */
- u32 TimeoutValue; /**< Time out value */
- u8 FifoThresh; /**< FIFO threshold value */
- u8 Acache; /**< AXI CACHE selection */
- u8 RouteBit; /**< Selection of Route */
- u8 TimeoutEn; /**< Enable of time out counters */
- u16 TimeoutPre; /**< Pre scaler value */
- u8 MaxOutCmds; /**< Maximum number of outstanding
- * commands */
-}XCsuDma_Configure;
-
-/*****************************************************************************/
-
-
-/************************** Function Prototypes ******************************/
-
-XCsuDma_Config *XCsuDma_LookupConfig(u16 DeviceId);
-
-s32 XCsuDma_CfgInitialize(XCsuDma *InstancePtr, XCsuDma_Config *CfgPtr,
- u32 EffectiveAddr);
-void XCsuDma_Transfer(XCsuDma *InstancePtr, XCsuDma_Channel Channel,
- UINTPTR Addr, u32 Size, u8 EnDataLast);
-void XCsuDma_LoopBackTransfer(XCsuDma *InstancePtr, u64 SrcAddr, u64 DstAddr,
- u32 Size);
-u64 XCsuDma_GetAddr(XCsuDma *InstancePtr, XCsuDma_Channel Channel);
-u32 XCsuDma_GetSize(XCsuDma *InstancePtr, XCsuDma_Channel Channel);
-
-void XCsuDma_Pause(XCsuDma *InstancePtr, XCsuDma_Channel Channel,
- XCsuDma_PauseType Type);
-s32 XCsuDma_IsPaused(XCsuDma *InstancePtr, XCsuDma_Channel Channel,
- XCsuDma_PauseType Type);
-void XCsuDma_Resume(XCsuDma *InstancePtr, XCsuDma_Channel Channel,
- XCsuDma_PauseType Type);
-
-u32 XCsuDma_GetCheckSum(XCsuDma *InstancePtr);
-void XCsuDma_ClearCheckSum(XCsuDma *InstancePtr);
-
-void XCsuDma_SetConfig(XCsuDma *InstancePtr, XCsuDma_Channel Channel,
- XCsuDma_Configure *ConfigurValues);
-void XCsuDma_GetConfig(XCsuDma *InstancePtr, XCsuDma_Channel Channel,
- XCsuDma_Configure *ConfigurValues);
-void XCsuDma_ClearDoneCount(XCsuDma *InstancePtr, XCsuDma_Channel Channel);
-
-void XCsuDma_SetSafetyCheck(XCsuDma *InstancePtr, u32 Value);
-u32 XCsuDma_GetSafetyCheck(XCsuDma *InstancePtr);
-
-/* Interrupt related APIs */
-u32 XCsuDma_IntrGetStatus(XCsuDma *InstancePtr, XCsuDma_Channel Channel);
-void XCsuDma_IntrClear(XCsuDma *InstancePtr, XCsuDma_Channel Channel,
- u32 Mask);
-void XCsuDma_EnableIntr(XCsuDma *InstancePtr, XCsuDma_Channel Channel,
- u32 Mask);
-void XCsuDma_DisableIntr(XCsuDma *InstancePtr, XCsuDma_Channel Channel,
- u32 Mask);
-u32 XCsuDma_GetIntrMask(XCsuDma *InstancePtr, XCsuDma_Channel Channel);
-
-s32 XCsuDma_SelfTest(XCsuDma *InstancePtr);
-
-/******************************************************************************/
-
-#ifdef __cplusplus
-}
-
-#endif
-
-#endif /* End of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcsudma_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcsudma_hw.h
deleted file mode 100644
index 76e401c2b..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcsudma_hw.h
+++ /dev/null
@@ -1,308 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xcsudma_hw.h
-*
-* This header file contains identifiers and register-level driver functions (or
-* macros) that can be used to access the Xilinx CSU_DMA core.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- ------------------------------------------------------
-* 1.0 vnsld 22/10/14 First release
-*
-*
-******************************************************************************/
-
-#ifndef XCSUDMA_HW_H_
-#define XCSUDMA_HW_H_ /**< Prevent circular inclusions
- * by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xil_io.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Registers offsets
- * @{
- */
-#define XCSUDMA_ADDR_OFFSET 0x000 /**< Address Register Offset */
-#define XCSUDMA_SIZE_OFFSET 0x004 /**< Size Register Offset */
-#define XCSUDMA_STS_OFFSET 0x008 /**< Status Register Offset */
-#define XCSUDMA_CTRL_OFFSET 0x00C /**< Control Register Offset */
-#define XCSUDMA_CRC_OFFSET 0x010 /**< CheckSum Register Offset */
-#define XCSUDMA_I_STS_OFFSET 0x014 /**< Interrupt Status Register
- * Offset */
-#define XCSUDMA_I_EN_OFFSET 0x018 /**< Interrupt Enable Register
- * Offset */
-#define XCSUDMA_I_DIS_OFFSET 0x01C /**< Interrupt Disable Register
- * Offset */
-#define XCSUDMA_I_MASK_OFFSET 0x020 /**< Interrupt Mask Register Offset */
-#define XCSUDMA_CTRL2_OFFSET 0x024 /**< Interrupt Control Register 2
- * Offset */
-#define XCSUDMA_ADDR_MSB_OFFSET 0x028 /**< Address's MSB Register Offset */
-#define XCSUDMA_SAFETY_CHK_OFFSET 0xFF8 /**< Safety Check Field Offset */
-#define XCSUDMA_FUTURE_ECO_OFFSET 0xFFC /**< Future potential ECO Offset */
-/*@}*/
-
-/** @name CSU Base address and CSU_DMA reset offset
- * @{
- */
-#define XCSU_BASEADDRESS 0xFFCA0000
- /**< CSU Base Address */
-#define XCSU_DMA_RESET_OFFSET 0x0000000CU /**< CSU_DMA Reset offset */
-/*@}*/
-
-/** @name CSU_DMA Reset register bit masks
- * @{
- */
-#define XCSUDMA_RESET_SET_MASK 0x00000001U /**< Reset set mask */
-#define XCSUDMA_RESET_UNSET_MASK 0x00000000U /**< Reset unset mask*/
-/*@}*/
-
-/** @name Offset difference for Source and destination
- * @{
- */
-#define XCSUDMA_OFFSET_DIFF 0x00000800U /**< Offset difference for
- * source and
- * destination channels */
-/*@}*/
-
-/** @name Address register bit masks
- * @{
- */
-#define XCSUDMA_ADDR_MASK 0xFFFFFFFCU /**< Address mask */
-#define XCSUDMA_ADDR_LSB_MASK 0x00000003U /**< Address alignment check
- * mask */
-/*@}*/
-
-/** @name Size register bit masks and shifts
- * @{
- */
-#define XCSUDMA_SIZE_MASK 0x1FFFFFFCU /**< Mask for size */
-#define XCSUDMA_LAST_WORD_MASK 0x00000001U /**< Last word check bit mask*/
-#define XCSUDMA_SIZE_SHIFT 2U /**< Shift for size */
-/*@}*/
-
-/** @name Status register bit masks and shifts
- * @{
- */
-#define XCSUDMA_STS_DONE_CNT_MASK 0x0000E000U /**< Count done mask */
-#define XCSUDMA_STS_FIFO_LEVEL_MASK 0x00001FE0U /**< FIFO level mask */
-#define XCUSDMA_STS_OUTSTDG_MASK 0x0000001EU /**< No.of outstanding
- * read/write
- * commands mask */
-#define XCSUDMA_STS_BUSY_MASK 0x00000001U /**< Busy mask */
-#define XCSUDMA_STS_DONE_CNT_SHIFT 13U /**< Shift for Count
- * done */
-#define XCSUDMA_STS_FIFO_LEVEL_SHIFT 5U /**< Shift for FIFO
- * level */
-#define XCUSDMA_STS_OUTSTDG_SHIFT 1U /**< Shift for No.of
- * outstanding
- * read/write
- * commands */
-/*@}*/
-
-/** @name Control register bit masks and shifts
- * @{
- */
-#define XCSUDMA_CTRL_SSS_FIFOTHRESH_MASK 0xFE000000U /**< SSS FIFO threshold
- * value mask */
-#define XCSUDMA_CTRL_APB_ERR_MASK 0x01000000U /**< APB register
- * access error
- * mask */
-#define XCSUDMA_CTRL_ENDIAN_MASK 0x00800000U /**< Endianess mask */
-#define XCSUDMA_CTRL_BURST_MASK 0x00400000U /**< AXI burst type
- * mask */
-#define XCSUDMA_CTRL_TIMEOUT_MASK 0x003FFC00U /**< Time out value
- * mask */
-#define XCSUDMA_CTRL_FIFO_THRESH_MASK 0x000003FCU /**< FIFO threshold
- * mask */
-#define XCSUDMA_CTRL_PAUSE_MEM_MASK 0x00000001U /**< Memory pause
- * mask */
-#define XCSUDMA_CTRL_PAUSE_STRM_MASK 0x00000002U /**< Stream pause
- * mask */
-#define XCSUDMA_CTRL_SSS_FIFOTHRESH_SHIFT 25U /**< SSS FIFO threshold
- * shift */
-#define XCSUDMA_CTRL_APB_ERR_SHIFT 24U /**< APB error shift */
-#define XCSUDMA_CTRL_ENDIAN_SHIFT 23U /**< Endianess shift */
-#define XCSUDMA_CTRL_BURST_SHIFT 22U /**< AXI burst type
- * shift */
-#define XCSUDMA_CTRL_TIMEOUT_SHIFT 10U /**< Time out value
- * shift */
-#define XCSUDMA_CTRL_FIFO_THRESH_SHIFT 2U /**< FIFO thresh
- * shift */
-/*@}*/
-
-/** @name CheckSum register bit masks
- * @{
- */
-#define XCSUDMA_CRC_RESET_MASK 0x00000000U /**< Mask to reset
- * value of
- * check sum */
-/*@}*/
-
-/** @name Interrupt Enable/Disable/Mask/Status registers bit masks
- * @{
- */
-#define XCSUDMA_IXR_FIFO_OVERFLOW_MASK 0x00000001U /**< FIFO overflow
- * mask, it is valid
- * only to Destination
- * Channel */
-#define XCSUDMA_IXR_INVALID_APB_MASK 0x00000040U /**< Invalid APB access
- * mask */
-#define XCSUDMA_IXR_FIFO_THRESHHIT_MASK 0x00000020U /**< FIFO threshold hit
- * indicator mask */
-#define XCSUDMA_IXR_TIMEOUT_MEM_MASK 0x00000010U /**< Time out counter
- * expired to access
- * memory mask */
-#define XCSUDMA_IXR_TIMEOUT_STRM_MASK 0x00000008U /**< Time out counter
- * expired to access
- * stream mask */
-#define XCSUDMA_IXR_AXI_WRERR_MASK 0x00000004U /**< AXI Read/Write
- * error mask */
-#define XCSUDMA_IXR_DONE_MASK 0x00000002U /**< Done mask */
-#define XCSUDMA_IXR_MEM_DONE_MASK 0x00000001U /**< Memory done
- * mask, it is valid
- * only for source
- * channel*/
-#define XCSUDMA_IXR_SRC_MASK 0x0000007FU
- /**< ((XCSUDMA_IXR_INVALID_APB_MASK)|
- (XCSUDMA_IXR_FIFO_THRESHHIT_MASK) |
- (XCSUDMA_IXR_TIMEOUT_MEM_MASK) |
- (XCSUDMA_IXR_TIMEOUT_STRM_MASK) |
- (XCSUDMA_IXR_AXI_WRERR_MASK) |
- (XCSUDMA_IXR_DONE_MASK) |
- (XCSUDMA_IXR_MEM_DONE_MASK)) */
- /**< All interrupt mask
- * for source */
-#define XCSUDMA_IXR_DST_MASK 0x000000FEU
- /**< ((XCSUDMA_IXR_FIFO_OVERFLOW_MASK) |
- (XCSUDMA_IXR_INVALID_APB_MASK) |
- (XCSUDMA_IXR_FIFO_THRESHHIT_MASK) |
- (XCSUDMA_IXR_TIMEOUT_MEM_MASK) |
- (XCSUDMA_IXR_TIMEOUT_STRM_MASK) |
- (XCSUDMA_IXR_AXI_WRERR_MASK) |
- (XCSUDMA_IXR_DONE_MASK)) */
- /**< All interrupt mask
- * for destination */
-/*@}*/
-
-/** @name Control register 2 bit masks and shifts
- * @{
- */
-#define XCSUDMA_CTRL2_RESERVED_MASK 0x083F0000U /**< Reserved bits
- * mask */
-#define XCSUDMA_CTRL2_ACACHE_MASK 0X07000000U /**< AXI CACHE mask */
-#define XCSUDMA_CTRL2_ROUTE_MASK 0x00800000U /**< Route mask */
-#define XCSUDMA_CTRL2_TIMEOUT_EN_MASK 0x00400000U /**< Time out counters
- * enable mask */
-#define XCSUDMA_CTRL2_TIMEOUT_PRE_MASK 0x0000FFF0U /**< Time out pre
- * mask */
-#define XCSUDMA_CTRL2_MAXCMDS_MASK 0x0000000FU /**< Maximum commands
- * mask */
-#define XCSUDMA_CTRL2_RESET_MASK 0x0000FFF8U /**< Reset mask */
-#define XCSUDMA_CTRL2_ACACHE_SHIFT 24U /**< Shift for
- * AXI R/W CACHE */
-#define XCSUDMA_CTRL2_ROUTE_SHIFT 23U /**< Shift for route */
-#define XCSUDMA_CTRL2_TIMEOUT_EN_SHIFT 22U /**< Shift for Timeout
- * enable feild */
-#define XCSUDMA_CTRL2_TIMEOUT_PRE_SHIFT 4U /**< Shift for Timeout
- * pre feild */
-/*@}*/
-
-/** @name MSB Address register bit masks and shifts
- * @{
- */
-#define XCSUDMA_MSB_ADDR_MASK 0x0001FFFFU /**< MSB bits of address
- * mask */
-#define XCSUDMA_MSB_ADDR_SHIFT 32U /**< Shift for MSB bits of
- * address */
-/*@}*/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-#define XCsuDma_In32 Xil_In32 /**< Input operation */
-#define XCsuDma_Out32 Xil_Out32 /**< Output operation */
-
-/*****************************************************************************/
-/**
-*
-* This macro reads the given register.
-*
-* @param BaseAddress is the Xilinx base address of the CSU_DMA core.
-* @param RegOffset is the register offset of the register.
-*
-* @return The 32-bit value of the register.
-*
-* @note C-style signature:
-* u32 XCsuDma_ReadReg(u32 BaseAddress, u32 RegOffset)
-*
-******************************************************************************/
-#define XCsuDma_ReadReg(BaseAddress, RegOffset) \
- XCsuDma_In32((BaseAddress) + (u32)(RegOffset))
-
-/*****************************************************************************/
-/**
-*
-* This macro writes the value into the given register.
-*
-* @param BaseAddress is the Xilinx base address of the CSU_DMA core.
-* @param RegOffset is the register offset of the register.
-* @param Data is the 32-bit value to write to the register.
-*
-* @return None.
-*
-* @note C-style signature:
-* void XCsuDma_WriteReg(u32 BaseAddress, u32 RegOffset, u32 Data)
-*
-******************************************************************************/
-#define XCsuDma_WriteReg(BaseAddress, RegOffset, Data) \
- XCsuDma_Out32((BaseAddress) + (u32)(RegOffset), (u32)(Data))
-
-
-#ifdef __cplusplus
-}
-
-#endif
-
-
-#endif /* End of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xemacps.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xemacps.h
deleted file mode 100644
index adb2f4b21..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xemacps.h
+++ /dev/null
@@ -1,783 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/****************************************************************************/
-/**
- *
- * @file xemacps.h
- *
- * The Xilinx Embedded Processor Block Ethernet driver.
- *
- * For a full description of XEMACPS features, please see the hardware spec.
- * This driver supports the following features:
- * - Memory mapped access to host interface registers
- * - Statistics counter registers for RMON/MIB
- * - API for interrupt driven frame transfers for hardware configured DMA
- * - Virtual memory support
- * - Unicast, broadcast, and multicast receive address filtering
- * - Full and half duplex operation
- * - Automatic PAD & FCS insertion and stripping
- * - Flow control
- * - Support up to four 48bit addresses
- * - Address checking for four specific 48bit addresses
- * - VLAN frame support
- * - Pause frame support
- * - Large frame support up to 1536 bytes
- * - Checksum offload
- *
- * Driver Description
- *
- * The device driver enables higher layer software (e.g., an application) to
- * communicate to the XEmacPs. The driver handles transmission and reception
- * of Ethernet frames, as well as configuration and control. No pre or post
- * processing of frame data is performed. The driver does not validate the
- * contents of an incoming frame in addition to what has already occurred in
- * hardware.
- * A single device driver can support multiple devices even when those devices
- * have significantly different configurations.
- *
- * Initialization & Configuration
- *
- * The XEmacPs_Config structure is used by the driver to configure itself.
- * This configuration structure is typically created by the tool-chain based
- * on hardware build properties.
- *
- * The driver instance can be initialized in
- *
- * - XEmacPs_CfgInitialize(InstancePtr, CfgPtr, EffectiveAddress): Uses a
- * configuration structure provided by the caller. If running in a system
- * with address translation, the provided virtual memory base address
- * replaces the physical address present in the configuration structure.
- *
- * The device supports DMA only as current development plan. No FIFO mode is
- * supported. The driver expects to start the DMA channels and expects that
- * the user has set up the buffer descriptor lists.
- *
- * Interrupts and Asynchronous Callbacks
- *
- * The driver has no dependencies on the interrupt controller. When an
- * interrupt occurs, the handler will perform a small amount of
- * housekeeping work, determine the source of the interrupt, and call the
- * appropriate callback function. All callbacks are registered by the user
- * level application.
- *
- * Virtual Memory
- *
- * All virtual to physical memory mappings must occur prior to accessing the
- * driver API.
- *
- * For DMA transactions, user buffers supplied to the driver must be in terms
- * of their physical address.
- *
- * DMA
- *
- * The DMA engine uses buffer descriptors (BDs) to describe Ethernet frames.
- * These BDs are typically chained together into a list the hardware follows
- * when transferring data in and out of the packet buffers. Each BD describes
- * a memory region containing either a full or partial Ethernet packet.
- *
- * Interrupt coalescing is not suppoted from this built-in DMA engine.
- *
- * This API requires the user to understand how the DMA operates. The
- * following paragraphs provide some explanation, but the user is encouraged
- * to read documentation in xemacps_bdring.h as well as study example code
- * that accompanies this driver.
- *
- * The API is designed to get BDs to and from the DMA engine in the most
- * efficient means possible. The first step is to establish a memory region
- * to contain all BDs for a specific channel. This is done with
- * XEmacPs_BdRingCreate(). This function sets up a BD ring that hardware will
- * follow as BDs are processed. The ring will consist of a user defined number
- * of BDs which will all be partially initialized. For example on the transmit
- * channel, the driver will initialize all BDs' so that they are configured
- * for transmit. The more fields that can be permanently setup at
- * initialization, then the fewer accesses will be needed to each BD while
- * the DMA engine is in operation resulting in better throughput and CPU
- * utilization. The best case initialization would require the user to set
- * only a frame buffer address and length prior to submitting the BD to the
- * engine.
- *
- * BDs move through the engine with the help of functions
- * XEmacPs_BdRingAlloc(), XEmacPs_BdRingToHw(), XEmacPs_BdRingFromHw(),
- * and XEmacPs_BdRingFree().
- * All these functions handle BDs that are in place. That is, there are no
- * copies of BDs kept anywhere and any BD the user interacts with is an actual
- * BD from the same ring hardware accesses.
- *
- * BDs in the ring go through a series of states as follows:
- * 1. Idle. The driver controls BDs in this state.
- * 2. The user has data to transfer. XEmacPs_BdRingAlloc() is called to
- * reserve BD(s). Once allocated, the user may setup the BD(s) with
- * frame buffer address, length, and other attributes. The user controls
- * BDs in this state.
- * 3. The user submits BDs to the DMA engine with XEmacPs_BdRingToHw. BDs
- * in this state are either waiting to be processed by hardware, are in
- * process, or have been processed. The DMA engine controls BDs in this
- * state.
- * 4. Processed BDs are retrieved with XEmacEpv_BdRingFromHw() by the
- * user. Once retrieved, the user can examine each BD for the outcome of
- * the DMA transfer. The user controls BDs in this state. After examining
- * the BDs the user calls XEmacPs_BdRingFree() which places the BDs back
- * into state 1.
- *
- * Each of the four BD accessor functions operate on a set of BDs. A set is
- * defined as a segment of the BD ring consisting of one or more BDs. The user
- * views the set as a pointer to the first BD along with the number of BDs for
- * that set. The set can be navigated by using macros XEmacPs_BdNext(). The
- * user must exercise extreme caution when changing BDs in a set as there is
- * nothing to prevent doing a mBdNext past the end of the set and modifying a
- * BD out of bounds.
- *
- * XEmacPs_BdRingAlloc() + XEmacPs_BdRingToHw(), as well as
- * XEmacPs_BdRingFromHw() + XEmacPs_BdRingFree() are designed to be used in
- * tandem. The same BD set retrieved with BdRingAlloc should be the same one
- * provided to hardware with BdRingToHw. Same goes with BdRingFromHw and
- * BdRIngFree.
- *
- * Alignment & Data Cache Restrictions
- *
- * Due to the design of the hardware, all RX buffers, BDs need to be 4-byte
- * aligned. Please reference xemacps_bd.h for cache related macros.
- *
- * DMA Tx:
- *
- * - If frame buffers exist in cached memory, then they must be flushed
- * prior to committing them to hardware.
- *
- * DMA Rx:
- *
- * - If frame buffers exist in cached memory, then the cache must be
- * invalidated for the memory region containing the frame prior to data
- * access
- *
- * Both cache invalidate/flush are taken care of in driver code.
- *
- * Buffer Copying
- *
- * The driver is designed for a zero-copy buffer scheme. That is, the driver
- * will not copy buffers. This avoids potential throughput bottlenecks within
- * the driver. If byte copying is required, then the transfer will take longer
- * to complete.
- *
- * Checksum Offloading
- *
- * The Embedded Processor Block Ethernet can be configured to perform IP, TCP
- * and UDP checksum offloading in both receive and transmit directions.
- *
- * IP packets contain a 16-bit checksum field, which is the 16-bit 1s
- * complement of the 1s complement sum of all 16-bit words in the header.
- * TCP and UDP packets contain a 16-bit checksum field, which is the 16-bit
- * 1s complement of the 1s complement sum of all 16-bit words in the header,
- * the data and a conceptual pseudo header.
- *
- * To calculate these checksums in software requires each byte of the packet
- * to be read. For TCP and UDP this can use a large amount of processing power.
- * Offloading the checksum calculation to hardware can result in significant
- * performance improvements.
- *
- * The transmit checksum offload is only available to use DMA in packet buffer
- * mode. This is because the complete frame to be transmitted must be read
- * into the packet buffer memory before the checksum can be calculated and
- * written to the header at the beginning of the frame.
- *
- * For IP, TCP or UDP receive checksum offload to be useful, the operating
- * system containing the protocol stack must be aware that this offload is
- * available so that it can make use of the fact that the hardware has verified
- * the checksum.
- *
- * When receive checksum offloading is enabled in the hardware, the IP header
- * checksum is checked, where the packet meets the following criteria:
- *
- * 1. If present, the VLAN header must be four octets long and the CFI bit
- * must not be set.
- * 2. Encapsulation must be RFC 894 Ethernet Type Encoding or RFC 1042 SNAP
- * encoding.
- * 3. IP v4 packet.
- * 4. IP header is of a valid length.
- * 5. Good IP header checksum.
- * 6. No IP fragmentation.
- * 7. TCP or UDP packet.
- *
- * When an IP, TCP or UDP frame is received, the receive buffer descriptor
- * gives an indication if the hardware was able to verify the checksums.
- * There is also an indication if the frame had SNAP encapsulation. These
- * indication bits will replace the type ID match indication bits when the
- * receive checksum offload is enabled.
- *
- * If any of the checksums are verified incorrect by the hardware, the packet
- * is discarded and the appropriate statistics counter incremented.
- *
- * PHY Interfaces
- *
- * RGMII 1.3 is the only interface supported.
- *
- * Asserts
- *
- * Asserts are used within all Xilinx drivers to enforce constraints on
- * parameters. Asserts can be turned off on a system-wide basis by defining,
- * at compile time, the NDEBUG identifier. By default, asserts are turned on
- * and it is recommended that users leave asserts on during development. For
- * deployment use -DNDEBUG compiler switch to remove assert code.
- *
- * @note
- *
- * Xilinx drivers are typically composed of two parts, one is the driver
- * and the other is the adapter. The driver is independent of OS and processor
- * and is intended to be highly portable. The adapter is OS-specific and
- * facilitates communication between the driver and an OS.
- * This driver is intended to be RTOS and processor independent. Any needs for
- * dynamic memory management, threads or thread mutual exclusion, or cache
- * control must be satisfied bythe layer above this driver.
- *
- *
- * MODIFICATION HISTORY:
- *
- * Ver Who Date Changes
- * ----- ---- -------- -------------------------------------------------------
- * 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.
- * 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.
- * 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.
- * 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.
- * 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.
- * 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.
- * 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.
- * 2.1 srt 07/15/14 Add support for Zynq Ultrascale Mp GEM specification and 64-bit
- * 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).
- * 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
- * check for arch64.
- * Remove "used bit set" from TX error interrupt masks.
- *
- *
- ****************************************************************************/
-
-#ifndef XEMACPS_H /* prevent circular inclusions */
-#define XEMACPS_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files ********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xstatus.h"
-#include "xemacps_hw.h"
-#include "xemacps_bd.h"
-#include "xemacps_bdring.h"
-
-/************************** Constant Definitions ****************************/
-
-/*
- * Device information
- */
-#define XEMACPS_DEVICE_NAME "xemacps"
-#define XEMACPS_DEVICE_DESC "Xilinx PS 10/100/1000 MAC"
-
-
-/** @name Configuration options
- *
- * Device configuration options. See the XEmacPs_SetOptions(),
- * XEmacPs_ClearOptions() and XEmacPs_GetOptions() for information on how to
- * use options.
- *
- * The default state of the options are noted and are what the device and
- * driver will be set to after calling XEmacPs_Reset() or
- * XEmacPs_Initialize().
- *
- * @{
- */
-
-#define XEMACPS_PROMISC_OPTION 0x00000001U
-/**< Accept all incoming packets.
- * This option defaults to disabled (cleared) */
-
-#define XEMACPS_FRAME1536_OPTION 0x00000002U
-/**< Frame larger than 1516 support for Tx & Rx.
- * This option defaults to disabled (cleared) */
-
-#define XEMACPS_VLAN_OPTION 0x00000004U
-/**< VLAN Rx & Tx frame support.
- * This option defaults to disabled (cleared) */
-
-#define XEMACPS_FLOW_CONTROL_OPTION 0x00000010U
-/**< Enable recognition of flow control frames on Rx
- * This option defaults to enabled (set) */
-
-#define XEMACPS_FCS_STRIP_OPTION 0x00000020U
-/**< Strip FCS and PAD from incoming frames. Note: PAD from VLAN frames is not
- * stripped.
- * This option defaults to enabled (set) */
-
-#define XEMACPS_FCS_INSERT_OPTION 0x00000040U
-/**< Generate FCS field and add PAD automatically for outgoing frames.
- * This option defaults to disabled (cleared) */
-
-#define XEMACPS_LENTYPE_ERR_OPTION 0x00000080U
-/**< Enable Length/Type error checking for incoming frames. When this option is
- * set, the MAC will filter frames that have a mismatched type/length field
- * and if XEMACPS_REPORT_RXERR_OPTION is set, the user is notified when these
- * types of frames are encountered. When this option is cleared, the MAC will
- * allow these types of frames to be received.
- *
- * This option defaults to disabled (cleared) */
-
-#define XEMACPS_TRANSMITTER_ENABLE_OPTION 0x00000100U
-/**< Enable the transmitter.
- * This option defaults to enabled (set) */
-
-#define XEMACPS_RECEIVER_ENABLE_OPTION 0x00000200U
-/**< Enable the receiver
- * This option defaults to enabled (set) */
-
-#define XEMACPS_BROADCAST_OPTION 0x00000400U
-/**< Allow reception of the broadcast address
- * This option defaults to enabled (set) */
-
-#define XEMACPS_MULTICAST_OPTION 0x00000800U
-/**< Allows reception of multicast addresses programmed into hash
- * This option defaults to disabled (clear) */
-
-#define XEMACPS_RX_CHKSUM_ENABLE_OPTION 0x00001000U
-/**< Enable the RX checksum offload
- * This option defaults to enabled (set) */
-
-#define XEMACPS_TX_CHKSUM_ENABLE_OPTION 0x00002000U
-/**< Enable the TX checksum offload
- * This option defaults to enabled (set) */
-
-#define XEMACPS_JUMBO_ENABLE_OPTION 0x00004000U
-
-#define XEMACPS_DEFAULT_OPTIONS \
- ((u32)XEMACPS_FLOW_CONTROL_OPTION | \
- (u32)XEMACPS_FCS_INSERT_OPTION | \
- (u32)XEMACPS_FCS_STRIP_OPTION | \
- (u32)XEMACPS_BROADCAST_OPTION | \
- (u32)XEMACPS_LENTYPE_ERR_OPTION | \
- (u32)XEMACPS_TRANSMITTER_ENABLE_OPTION | \
- (u32)XEMACPS_RECEIVER_ENABLE_OPTION | \
- (u32)XEMACPS_RX_CHKSUM_ENABLE_OPTION | \
- (u32)XEMACPS_TX_CHKSUM_ENABLE_OPTION)
-
-/**< Default options set when device is initialized or reset */
-/*@}*/
-
-/** @name Callback identifiers
- *
- * These constants are used as parameters to XEmacPs_SetHandler()
- * @{
- */
-#define XEMACPS_HANDLER_DMASEND 1U
-#define XEMACPS_HANDLER_DMARECV 2U
-#define XEMACPS_HANDLER_ERROR 3U
-/*@}*/
-
-/* Constants to determine the configuration of the hardware device. They are
- * used to allow the driver to verify it can operate with the hardware.
- */
-#define XEMACPS_MDIO_DIV_DFT MDC_DIV_32 /**< Default MDIO clock divisor */
-
-/* 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_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 + \
- XEMACPS_HDR_VLAN_SIZE + XEMACPS_TRL_SIZE)
-#define XEMACPS_MAX_VLAN_FRAME_SIZE_JUMBO (XEMACPS_MTU_JUMBO + XEMACPS_HDR_SIZE + \
- XEMACPS_HDR_VLAN_SIZE + XEMACPS_TRL_SIZE)
-
-/* DMACR Bust length hash defines */
-
-#define XEMACPS_SINGLE_BURST 0x00000001
-#define XEMACPS_4BYTE_BURST 0x00000004
-#define XEMACPS_8BYTE_BURST 0x00000008
-#define XEMACPS_16BYTE_BURST 0x00000010
-
-
-/**************************** Type Definitions ******************************/
-/** @name Typedefs for callback functions
- *
- * These callbacks are invoked in interrupt context.
- * @{
- */
-/**
- * Callback invoked when frame(s) have been sent or received in interrupt
- * driven DMA mode. To set the send callback, invoke XEmacPs_SetHandler().
- *
- * @param CallBackRef is user data assigned when the callback was set.
- *
- * @note
- * See xemacps_hw.h for bitmasks definitions and the device hardware spec for
- * further information on their meaning.
- *
- */
-typedef void (*XEmacPs_Handler) (void *CallBackRef);
-
-/**
- * Callback when an asynchronous error occurs. To set this callback, invoke
- * XEmacPs_SetHandler() with XEMACPS_HANDLER_ERROR in the HandlerType
- * paramter.
- *
- * @param CallBackRef is user data assigned when the callback was set.
- * @param Direction defines either receive or transmit error(s) has occurred.
- * @param ErrorWord definition varies with Direction
- *
- */
-typedef void (*XEmacPs_ErrHandler) (void *CallBackRef, u8 Direction,
- u32 ErrorWord);
-
-/*@}*/
-
-/**
- * This typedef contains configuration information for a device.
- */
-typedef struct {
- u16 DeviceId; /**< Unique ID of device */
- UINTPTR BaseAddress;/**< Physical base address of IPIF registers */
-} XEmacPs_Config;
-
-
-/**
- * The XEmacPs driver instance data. The user is required to allocate a
- * structure of this type for every XEmacPs device in the system. A pointer
- * 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_BdRing TxBdRing; /* Transmit BD ring */
- XEmacPs_BdRing RxBdRing; /* Receive BD ring */
-
- XEmacPs_Handler SendHandler;
- XEmacPs_Handler RecvHandler;
- void *SendRef;
- void *RecvRef;
-
- XEmacPs_ErrHandler ErrorHandler;
- void *ErrorRef;
- u32 Version;
- u32 RxBufMask;
- u32 MaxMtuSize;
- u32 MaxFrameSize;
- u32 MaxVlanFrameSize;
-
-} XEmacPs;
-
-
-/***************** Macros (Inline Functions) Definitions ********************/
-
-/****************************************************************************/
-/**
-* Retrieve the Tx ring object. This object can be used in the various Ring
-* API functions.
-*
-* @param InstancePtr is the DMA channel to operate on.
-*
-* @return TxBdRing attribute
-*
-* @note
-* C-style signature:
-* XEmacPs_BdRing XEmacPs_GetTxRing(XEmacPs *InstancePtr)
-*
-*****************************************************************************/
-#define XEmacPs_GetTxRing(InstancePtr) ((InstancePtr)->TxBdRing)
-
-/****************************************************************************/
-/**
-* Retrieve the Rx ring object. This object can be used in the various Ring
-* API functions.
-*
-* @param InstancePtr is the DMA channel to operate on.
-*
-* @return RxBdRing attribute
-*
-* @note
-* C-style signature:
-* XEmacPs_BdRing XEmacPs_GetRxRing(XEmacPs *InstancePtr)
-*
-*****************************************************************************/
-#define XEmacPs_GetRxRing(InstancePtr) ((InstancePtr)->RxBdRing)
-
-/****************************************************************************/
-/**
-*
-* Enable interrupts specified in Mask. The corresponding interrupt for
-* each bit set to 1 in Mask, will be enabled.
-*
-* @param InstancePtr is a pointer to the instance to be worked on.
-* @param Mask contains a bit mask of interrupts to enable. The mask can
-* be formed using a set of bitwise or'd values.
-*
-* @note
-* The state of the transmitter and receiver are not modified by this function.
-* C-style signature
-* void XEmacPs_IntEnable(XEmacPs *InstancePtr, u32 Mask)
-*
-*****************************************************************************/
-#define XEmacPs_IntEnable(InstancePtr, Mask) \
- XEmacPs_WriteReg((InstancePtr)->Config.BaseAddress, \
- XEMACPS_IER_OFFSET, \
- ((Mask) & XEMACPS_IXR_ALL_MASK));
-
-/****************************************************************************/
-/**
-*
-* Disable interrupts specified in Mask. The corresponding interrupt for
-* each bit set to 1 in Mask, will be enabled.
-*
-* @param InstancePtr is a pointer to the instance to be worked on.
-* @param Mask contains a bit mask of interrupts to disable. The mask can
-* be formed using a set of bitwise or'd values.
-*
-* @note
-* The state of the transmitter and receiver are not modified by this function.
-* C-style signature
-* void XEmacPs_IntDisable(XEmacPs *InstancePtr, u32 Mask)
-*
-*****************************************************************************/
-#define XEmacPs_IntDisable(InstancePtr, Mask) \
- XEmacPs_WriteReg((InstancePtr)->Config.BaseAddress, \
- XEMACPS_IDR_OFFSET, \
- ((Mask) & XEMACPS_IXR_ALL_MASK));
-
-/****************************************************************************/
-/**
-*
-* Enable interrupts specified in Mask. The corresponding interrupt for
-* each bit set to 1 in Mask, will be enabled.
-*
-* @param InstancePtr is a pointer to the instance to be worked on.
-* @param Mask contains a bit mask of interrupts to enable. The mask can
-* be formed using a set of bitwise or'd values.
-*
-* @note
-* The state of the transmitter and receiver are not modified by this function.
-* C-style signature
-* void XEmacPs_IntQ1Enable(XEmacPs *InstancePtr, u32 Mask)
-*
-*****************************************************************************/
-#define XEmacPs_IntQ1Enable(InstancePtr, Mask) \
- XEmacPs_WriteReg((InstancePtr)->Config.BaseAddress, \
- XEMACPS_INTQ1_IER_OFFSET, \
- ((Mask) & XEMACPS_INTQ1_IXR_ALL_MASK));
-
-/****************************************************************************/
-/**
-*
-* Disable interrupts specified in Mask. The corresponding interrupt for
-* each bit set to 1 in Mask, will be enabled.
-*
-* @param InstancePtr is a pointer to the instance to be worked on.
-* @param Mask contains a bit mask of interrupts to disable. The mask can
-* be formed using a set of bitwise or'd values.
-*
-* @note
-* The state of the transmitter and receiver are not modified by this function.
-* C-style signature
-* void XEmacPs_IntDisable(XEmacPs *InstancePtr, u32 Mask)
-*
-*****************************************************************************/
-#define XEmacPs_IntQ1Disable(InstancePtr, Mask) \
- XEmacPs_WriteReg((InstancePtr)->Config.BaseAddress, \
- XEMACPS_INTQ1_IDR_OFFSET, \
- ((Mask) & XEMACPS_INTQ1_IXR_ALL_MASK));
-
-/****************************************************************************/
-/**
-*
-* This macro triggers trasmit circuit to send data currently in TX buffer(s).
-*
-* @param InstancePtr is a pointer to the XEmacPs instance to be worked on.
-*
-* @return
-*
-* @note
-*
-* Signature: void XEmacPs_Transmit(XEmacPs *InstancePtr)
-*
-*****************************************************************************/
-#define XEmacPs_Transmit(InstancePtr) \
- XEmacPs_WriteReg((InstancePtr)->Config.BaseAddress, \
- XEMACPS_NWCTRL_OFFSET, \
- (XEmacPs_ReadReg((InstancePtr)->Config.BaseAddress, \
- XEMACPS_NWCTRL_OFFSET) | XEMACPS_NWCTRL_STARTTX_MASK))
-
-/****************************************************************************/
-/**
-*
-* This macro determines if the device is configured with checksum offloading
-* on the receive channel
-*
-* @param InstancePtr is a pointer to the XEmacPs instance to be worked on.
-*
-* @return
-*
-* Boolean TRUE if the device is configured with checksum offloading, or
-* FALSE otherwise.
-*
-* @note
-*
-* Signature: u32 XEmacPs_IsRxCsum(XEmacPs *InstancePtr)
-*
-*****************************************************************************/
-#define XEmacPs_IsRxCsum(InstancePtr) \
- ((XEmacPs_ReadReg((InstancePtr)->Config.BaseAddress, \
- XEMACPS_NWCFG_OFFSET) & XEMACPS_NWCFG_RXCHKSUMEN_MASK) != 0U \
- ? TRUE : FALSE)
-
-/****************************************************************************/
-/**
-*
-* This macro determines if the device is configured with checksum offloading
-* on the transmit channel
-*
-* @param InstancePtr is a pointer to the XEmacPs instance to be worked on.
-*
-* @return
-*
-* Boolean TRUE if the device is configured with checksum offloading, or
-* FALSE otherwise.
-*
-* @note
-*
-* Signature: u32 XEmacPs_IsTxCsum(XEmacPs *InstancePtr)
-*
-*****************************************************************************/
-#define XEmacPs_IsTxCsum(InstancePtr) \
- ((XEmacPs_ReadReg((InstancePtr)->Config.BaseAddress, \
- XEMACPS_DMACR_OFFSET) & XEMACPS_DMACR_TCPCKSUM_MASK) != 0U \
- ? TRUE : FALSE)
-
-/************************** Function Prototypes *****************************/
-
-/*
- * Initialization functions in xemacps.c
- */
-LONG XEmacPs_CfgInitialize(XEmacPs *InstancePtr, XEmacPs_Config *CfgPtr,
- 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);
-
-/*
- * Lookup configuration in xemacps_sinit.c
- */
-XEmacPs_Config *XEmacPs_LookupConfig(u16 DeviceId);
-
-/*
- * Interrupt-related functions in xemacps_intr.c
- * 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 XEmacPs_IntrHandler(void *XEmacPsPtr);
-
-/*
- * MAC configuration/control functions in XEmacPs_control.c
- */
-LONG XEmacPs_SetOptions(XEmacPs *InstancePtr, u32 Options);
-LONG XEmacPs_ClearOptions(XEmacPs *InstancePtr, u32 Options);
-u32 XEmacPs_GetOptions(XEmacPs *InstancePtr);
-
-LONG XEmacPs_SetMacAddress(XEmacPs *InstancePtr, void *AddressPtr, u8 Index);
-LONG XEmacPs_DeleteHash(XEmacPs *InstancePtr, void *AddressPtr);
-void XEmacPs_GetMacAddress(XEmacPs *InstancePtr, void *AddressPtr, u8 Index);
-
-LONG XEmacPs_SetHash(XEmacPs *InstancePtr, void *AddressPtr);
-void XEmacPs_ClearHash(XEmacPs *InstancePtr);
-void XEmacPs_GetHash(XEmacPs *InstancePtr, void *AddressPtr);
-
-void XEmacPs_SetMdioDivisor(XEmacPs *InstancePtr,
- 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);
-LONG XEmacPs_PhyWrite(XEmacPs *InstancePtr, u32 PhyAddress,
- u32 RegisterNum, u16 PhyData);
-LONG XEmacPs_SetTypeIdCheck(XEmacPs *InstancePtr, u32 Id_Check, u8 Index);
-
-LONG XEmacPs_SendPausePacket(XEmacPs *InstancePtr);
-void XEmacPs_DMABLengthUpdate(XEmacPs *InstancePtr, s32 BLength);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xemacps_bd.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xemacps_bd.h
deleted file mode 100644
index 41e0ab845..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xemacps_bd.h
+++ /dev/null
@@ -1,799 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
- *
- * @file xemacps_bd.h
- *
- * This header provides operations to manage buffer descriptors in support
- * of scatter-gather DMA.
- *
- * The API exported by this header defines abstracted macros that allow the
- * user to read/write specific BD fields.
- *
- * Buffer Descriptors
- *
- * A buffer descriptor (BD) defines a DMA transaction. The macros defined by
- * this header file allow access to most fields within a BD to tailor a DMA
- * transaction according to user and hardware requirements. See the hardware
- * IP DMA spec for more information on BD fields and how they affect transfers.
- *
- * The XEmacPs_Bd structure defines a BD. The organization of this structure
- * is driven mainly by the hardware for use in scatter-gather DMA transfers.
- *
- * Performance
- *
- * Limiting I/O to BDs can improve overall performance of the DMA channel.
- *
- *
- * MODIFICATION HISTORY:
- *
- * Ver Who Date Changes
- * ----- ---- -------- -------------------------------------------------------
- * 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.
- * 3.0 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
- * 3.0 hk 02/20/15 Added support for jumbo frames.
- * Disable extended mode. Perform all 64 bit changes under
- * check for arch64.
- *
- *
- *
- * ***************************************************************************
- */
-
-#ifndef XEMACPS_BD_H /* prevent circular inclusions */
-#define XEMACPS_BD_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include
-#include "xil_types.h"
-#include "xil_assert.h"
-
-/************************** Constant Definitions *****************************/
-
-/**************************** Type Definitions *******************************/
-#ifdef __aarch64__
-/* Minimum BD alignment */
-#define XEMACPS_DMABD_MINIMUM_ALIGNMENT 64U
-#else
-/* Minimum BD alignment */
-#define XEMACPS_DMABD_MINIMUM_ALIGNMENT 4U
-#endif
-
-/**
- * The XEmacPs_Bd is the type for buffer descriptors (BDs).
- */
-#define XEMACPS_BD_NUM_WORDS 2U
-typedef UINTPTR XEmacPs_Bd[XEMACPS_BD_NUM_WORDS];
-
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/*****************************************************************************/
-/**
- * Zero out BD fields
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @return Nothing
- *
- * @note
- * C-style signature:
- * void XEmacPs_BdClear(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdClear(BdPtr) \
- memset((BdPtr), 0, sizeof(XEmacPs_Bd))
-
-/****************************************************************************/
-/**
-*
-* Read the given Buffer Descriptor word.
-*
-* @param BaseAddress is the base address of the BD to read
-* @param Offset is the word offset to be read
-*
-* @return The 32-bit value of the field
-*
-* @note
-* C-style signature:
-* u32 XEmacPs_BdRead(UINTPTR BaseAddress, UINTPTR Offset)
-*
-*****************************************************************************/
-#define XEmacPs_BdRead(BaseAddress, Offset) \
- (*(u32 *)((UINTPTR)((void*)(BaseAddress)) + (u32)(Offset)))
-
-/****************************************************************************/
-/**
-*
-* Write the given Buffer Descriptor word.
-*
-* @param BaseAddress is the base address of the BD to write
-* @param Offset is the word offset to be written
-* @param Data is the 32-bit value to write to the field
-*
-* @return None.
-*
-* @note
-* C-style signature:
-* void XEmacPs_BdWrite(UINTPTR BaseAddress, UINTPTR Offset, UINTPTR Data)
-*
-*****************************************************************************/
-#define XEmacPs_BdWrite(BaseAddress, Offset, Data) \
- (*(u32 *)((UINTPTR)(void*)(BaseAddress) + (u32)(Offset)) = (u32)(Data))
-
-/*****************************************************************************/
-/**
- * Set the BD's Address field (word 0).
- *
- * @param BdPtr is the BD pointer to operate on
- * @param Addr is the value to write to BD's status field.
- *
- * @note :
- *
- * C-style signature:
- * void XEmacPs_BdSetAddressTx(XEmacPs_Bd* BdPtr, UINTPTR Addr)
- *
- *****************************************************************************/
-#ifdef __aarch64__
-#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));
-#else
-#define XEmacPs_BdSetAddressTx(BdPtr, Addr) \
- XEmacPs_BdWrite((BdPtr), XEMACPS_BD_ADDR_OFFSET, (u32)(Addr))
-#endif
-
-/*****************************************************************************/
-/**
- * Set the BD's Address field (word 0).
- *
- * @param BdPtr is the BD pointer to operate on
- * @param Addr is the value to write to BD's status field.
- *
- * @note : Due to some bits are mixed within recevie BD's address field,
- * read-modify-write is performed.
- *
- * C-style signature:
- * void XEmacPs_BdSetAddressRx(XEmacPs_Bd* BdPtr, UINTPTR Addr)
- *
- *****************************************************************************/
-#ifdef __aarch64__
-#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));
-#else
-#define XEmacPs_BdSetAddressRx(BdPtr, Addr) \
- XEmacPs_BdWrite((BdPtr), XEMACPS_BD_ADDR_OFFSET, \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_OFFSET) & \
- ~XEMACPS_RXBUF_ADD_MASK) | (UINTPTR)(Addr)))
-#endif
-
-/*****************************************************************************/
-/**
- * Set the BD's Status field (word 1).
- *
- * @param BdPtr is the BD pointer to operate on
- * @param Data is the value to write to BD's status field.
- *
- * @note
- * C-style signature:
- * void XEmacPs_BdSetStatus(XEmacPs_Bd* BdPtr, UINTPTR Data)
- *
- *****************************************************************************/
-#define XEmacPs_BdSetStatus(BdPtr, Data) \
- XEmacPs_BdWrite((BdPtr), XEMACPS_BD_STAT_OFFSET, \
- XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) | (Data))
-
-
-/*****************************************************************************/
-/**
- * Retrieve the BD's Packet DMA transfer status word (word 1).
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @return Status word
- *
- * @note
- * C-style signature:
- * u32 XEmacPs_BdGetStatus(XEmacPs_Bd* BdPtr)
- *
- * Due to the BD bit layout differences in transmit and receive. User's
- * caution is required.
- *****************************************************************************/
-#define XEmacPs_BdGetStatus(BdPtr) \
- XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET)
-
-
-/*****************************************************************************/
-/**
- * Get the address (bits 0..31) of the BD's buffer address (word 0)
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdGetBufAddr(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#ifdef __aarch64__
-#define XEmacPs_BdGetBufAddr(BdPtr) \
- (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))
-#endif
-
-/*****************************************************************************/
-/**
- * Set transfer length in bytes for the given BD. The length must be set each
- * time a BD is submitted to hardware.
- *
- * @param BdPtr is the BD pointer to operate on
- * @param LenBytes is the number of bytes to transfer.
- *
- * @note
- * C-style signature:
- * void XEmacPs_BdSetLength(XEmacPs_Bd* BdPtr, u32 LenBytes)
- *
- *****************************************************************************/
-#define XEmacPs_BdSetLength(BdPtr, LenBytes) \
- XEmacPs_BdWrite((BdPtr), XEMACPS_BD_STAT_OFFSET, \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- ~XEMACPS_TXBUF_LEN_MASK) | (LenBytes)))
-
-
-
-/*****************************************************************************/
-/**
- * Set transfer length in bytes for the given BD. The length must be set each
- * time a BD is submitted to hardware.
- *
- * @param BdPtr is the BD pointer to operate on
- * @param LenBytes is the number of bytes to transfer.
- *
- * @note
- * C-style signature:
- * void XEmacPs_BdSetLength(XEmacPs_Bd* BdPtr, u32 LenBytes)
- *
- *****************************************************************************/
-#define XEmacPs_BdSetLength(BdPtr, LenBytes) \
- XEmacPs_BdWrite((BdPtr), XEMACPS_BD_STAT_OFFSET, \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- ~XEMACPS_TXBUF_LEN_MASK) | (LenBytes)))
-
-
-/*****************************************************************************/
-/**
- * Retrieve the BD length field.
- *
- * For Tx channels, the returned value is the same as that written with
- * XEmacPs_BdSetLength().
- *
- * For Rx channels, the returned value is the size of the received packet.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @return Length field processed by hardware or set by
- * XEmacPs_BdSetLength().
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdGetLength(XEmacPs_Bd* BdPtr)
- * XEAMCPS_RXBUF_LEN_MASK is same as XEMACPS_TXBUF_LEN_MASK.
- *
- *****************************************************************************/
-#define XEmacPs_BdGetLength(BdPtr) \
- (XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- XEMACPS_RXBUF_LEN_MASK)
-
-/*****************************************************************************/
-/**
- * Retrieve the RX frame size.
- *
- * The returned value is the size of the received packet.
- * This API supports jumbo frame sizes if enabled.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @return Length field processed by hardware or set by
- * XEmacPs_BdSetLength().
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_GetRxFrameSize(XEmacPs* InstancePtr, XEmacPs_Bd* BdPtr)
- * RxBufMask is dependent on whether jumbo is enabled or not.
- *
- *****************************************************************************/
-#define XEmacPs_GetRxFrameSize(InstancePtr, BdPtr) \
- (XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- (InstancePtr)->RxBufMask)
-
-/*****************************************************************************/
-/**
- * Test whether the given BD has been marked as the last BD of a packet.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @return TRUE if BD represents the "Last" BD of a packet, FALSE otherwise
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdIsLast(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsLast(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- XEMACPS_RXBUF_EOF_MASK)!=0U ? TRUE : FALSE)
-
-
-/*****************************************************************************/
-/**
- * Tell the DMA engine that the given transmit BD marks the end of the current
- * packet to be processed.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * void XEmacPs_BdSetLast(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdSetLast(BdPtr) \
- (XEmacPs_BdWrite((BdPtr), XEMACPS_BD_STAT_OFFSET, \
- XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) | \
- XEMACPS_TXBUF_LAST_MASK))
-
-
-/*****************************************************************************/
-/**
- * Tell the DMA engine that the current packet does not end with the given
- * BD.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * void XEmacPs_BdClearLast(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdClearLast(BdPtr) \
- (XEmacPs_BdWrite((BdPtr), XEMACPS_BD_STAT_OFFSET, \
- XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- ~XEMACPS_TXBUF_LAST_MASK))
-
-
-/*****************************************************************************/
-/**
- * Set this bit to mark the last descriptor in the receive buffer descriptor
- * list.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * void XEmacPs_BdSetRxWrap(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-/*#define XEmacPs_BdSetRxWrap(BdPtr) \
- (XEmacPs_BdWrite((BdPtr), XEMACPS_BD_ADDR_OFFSET, \
- XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_OFFSET) | \
- XEMACPS_RXBUF_WRAP_MASK))
-*/
-
-/*****************************************************************************/
-/**
- * Determine the wrap bit of the receive BD which indicates end of the
- * BD list.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * u8 XEmacPs_BdIsRxWrap(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsRxWrap(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_OFFSET) & \
- XEMACPS_RXBUF_WRAP_MASK)!=0U ? TRUE : FALSE)
-
-
-/*****************************************************************************/
-/**
- * Sets this bit to mark the last descriptor in the transmit buffer
- * descriptor list.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * void XEmacPs_BdSetTxWrap(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-/*#define XEmacPs_BdSetTxWrap(BdPtr) \
- (XEmacPs_BdWrite((BdPtr), XEMACPS_BD_STAT_OFFSET, \
- XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) | \
- XEMACPS_TXBUF_WRAP_MASK))
-*/
-
-/*****************************************************************************/
-/**
- * Determine the wrap bit of the transmit BD which indicates end of the
- * BD list.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * u8 XEmacPs_BdGetTxWrap(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsTxWrap(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- XEMACPS_TXBUF_WRAP_MASK)!=0U ? TRUE : FALSE)
-
-
-/*****************************************************************************/
-/*
- * Must clear this bit to enable the MAC to write data to the receive
- * buffer. Hardware sets this bit once it has successfully written a frame to
- * memory. Once set, software has to clear the bit before the buffer can be
- * used again. This macro clear the new bit of the receive BD.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * void XEmacPs_BdClearRxNew(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdClearRxNew(BdPtr) \
- (XEmacPs_BdWrite((BdPtr), XEMACPS_BD_ADDR_OFFSET, \
- XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_OFFSET) & \
- ~XEMACPS_RXBUF_NEW_MASK))
-
-
-/*****************************************************************************/
-/**
- * Determine the new bit of the receive BD.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdIsRxNew(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsRxNew(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_OFFSET) & \
- XEMACPS_RXBUF_NEW_MASK)!=0U ? TRUE : FALSE)
-
-
-/*****************************************************************************/
-/**
- * Software sets this bit to disable the buffer to be read by the hardware.
- * Hardware sets this bit for the first buffer of a frame once it has been
- * successfully transmitted. This macro sets this bit of transmit BD to avoid
- * confusion.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * void XEmacPs_BdSetTxUsed(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdSetTxUsed(BdPtr) \
- (XEmacPs_BdWrite((BdPtr), XEMACPS_BD_STAT_OFFSET, \
- XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) | \
- XEMACPS_TXBUF_USED_MASK))
-
-
-/*****************************************************************************/
-/**
- * Software clears this bit to enable the buffer to be read by the hardware.
- * Hardware sets this bit for the first buffer of a frame once it has been
- * successfully transmitted. This macro clears this bit of transmit BD.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * void XEmacPs_BdClearTxUsed(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdClearTxUsed(BdPtr) \
- (XEmacPs_BdWrite((BdPtr), XEMACPS_BD_STAT_OFFSET, \
- XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- ~XEMACPS_TXBUF_USED_MASK))
-
-
-/*****************************************************************************/
-/**
- * Determine the used bit of the transmit BD.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdIsTxUsed(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsTxUsed(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- XEMACPS_TXBUF_USED_MASK)!=0U ? TRUE : FALSE)
-
-
-/*****************************************************************************/
-/**
- * Determine if a frame fails to be transmitted due to too many retries.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdIsTxRetry(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsTxRetry(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- XEMACPS_TXBUF_RETRY_MASK)!=0U ? TRUE : FALSE)
-
-
-/*****************************************************************************/
-/**
- * Determine if a frame fails to be transmitted due to data can not be
- * feteched in time or buffers are exhausted.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdIsTxUrun(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsTxUrun(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- XEMACPS_TXBUF_URUN_MASK)!=0U ? TRUE : FALSE)
-
-
-/*****************************************************************************/
-/**
- * Determine if a frame fails to be transmitted due to buffer is exhausted
- * mid-frame.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdIsTxExh(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsTxExh(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- XEMACPS_TXBUF_EXH_MASK)!=0U ? TRUE : FALSE)
-
-
-/*****************************************************************************/
-/**
- * Sets this bit, no CRC will be appended to the current frame. This control
- * bit must be set for the first buffer in a frame and will be ignored for
- * the subsequent buffers of a frame.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * This bit must be clear when using the transmit checksum generation offload,
- * otherwise checksum generation and substitution will not occur.
- *
- * C-style signature:
- * UINTPTR XEmacPs_BdSetTxNoCRC(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdSetTxNoCRC(BdPtr) \
- (XEmacPs_BdWrite((BdPtr), XEMACPS_BD_STAT_OFFSET, \
- XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) | \
- XEMACPS_TXBUF_NOCRC_MASK))
-
-
-/*****************************************************************************/
-/**
- * Clear this bit, CRC will be appended to the current frame. This control
- * bit must be set for the first buffer in a frame and will be ignored for
- * the subsequent buffers of a frame.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * This bit must be clear when using the transmit checksum generation offload,
- * otherwise checksum generation and substitution will not occur.
- *
- * C-style signature:
- * UINTPTR XEmacPs_BdClearTxNoCRC(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdClearTxNoCRC(BdPtr) \
- (XEmacPs_BdWrite((BdPtr), XEMACPS_BD_STAT_OFFSET, \
- XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- ~XEMACPS_TXBUF_NOCRC_MASK))
-
-
-/*****************************************************************************/
-/**
- * Determine the broadcast bit of the receive BD.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdIsRxBcast(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsRxBcast(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- XEMACPS_RXBUF_BCAST_MASK)!=0U ? TRUE : FALSE)
-
-
-/*****************************************************************************/
-/**
- * Determine the multicast hash bit of the receive BD.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdIsRxMultiHash(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsRxMultiHash(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- XEMACPS_RXBUF_MULTIHASH_MASK)!=0U ? TRUE : FALSE)
-
-
-/*****************************************************************************/
-/**
- * Determine the unicast hash bit of the receive BD.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdIsRxUniHash(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsRxUniHash(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- XEMACPS_RXBUF_UNIHASH_MASK)!=0U ? TRUE : FALSE)
-
-
-/*****************************************************************************/
-/**
- * Determine if the received frame is a VLAN Tagged frame.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdIsRxVlan(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsRxVlan(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- XEMACPS_RXBUF_VLAN_MASK)!=0U ? TRUE : FALSE)
-
-
-/*****************************************************************************/
-/**
- * Determine if the received frame has Type ID of 8100h and null VLAN
- * identifier(Priority tag).
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdIsRxPri(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsRxPri(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- XEMACPS_RXBUF_PRI_MASK)!=0U ? TRUE : FALSE)
-
-
-/*****************************************************************************/
-/**
- * Determine if the received frame's Concatenation Format Indicator (CFI) of
- * the frames VLANTCI field was set.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdIsRxCFI(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsRxCFI(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- XEMACPS_RXBUF_CFI_MASK)!=0U ? TRUE : FALSE)
-
-
-/*****************************************************************************/
-/**
- * Determine the End Of Frame (EOF) bit of the receive BD.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdGetRxEOF(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsRxEOF(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- XEMACPS_RXBUF_EOF_MASK)!=0U ? TRUE : FALSE)
-
-
-/*****************************************************************************/
-/**
- * Determine the Start Of Frame (SOF) bit of the receive BD.
- *
- * @param BdPtr is the BD pointer to operate on
- *
- * @note
- * C-style signature:
- * UINTPTR XEmacPs_BdGetRxSOF(XEmacPs_Bd* BdPtr)
- *
- *****************************************************************************/
-#define XEmacPs_BdIsRxSOF(BdPtr) \
- ((XEmacPs_BdRead((BdPtr), XEMACPS_BD_STAT_OFFSET) & \
- XEMACPS_RXBUF_SOF_MASK)!=0U ? TRUE : FALSE)
-
-
-/************************** Function Prototypes ******************************/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xemacps_bdring.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xemacps_bdring.h
deleted file mode 100644
index b678c5401..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xemacps_bdring.h
+++ /dev/null
@@ -1,235 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xemacps_bdring.h
-*
-* The Xiline EmacPs Buffer Descriptor ring driver. This is part of EmacPs
-* DMA functionalities.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -------------------------------------------------------
-* 1.00a wsy 01/10/10 First release
-* 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.
-*
-*
-*
-******************************************************************************/
-
-#ifndef XEMACPS_BDRING_H /* prevent curcular inclusions */
-#define XEMACPS_BDRING_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**************************** Type Definitions *******************************/
-
-/** 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
- of adjacent BDs */
- XEmacPs_Bd *FreeHead;
- /**< 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 */
- XEmacPs_Bd *BdaRestart;
- /**< BDA to load when channel is started */
-
- u32 HwCnt; /**< Number of BDs in work group */
- u32 PreCnt; /**< Number of BDs in pre-work group */
- u32 FreeCnt; /**< Number of allocatable BDs in the free group */
- u32 PostCnt; /**< Number of BDs in post-work group */
- u32 AllCnt; /**< Total Number of BDs for channel */
-} XEmacPs_BdRing;
-
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/*****************************************************************************/
-/**
-* Use this macro at initialization time to determine how many BDs will fit
-* in a BD list within the given memory constraints.
-*
-* The results of this macro can be provided to XEmacPs_BdRingCreate().
-*
-* @param Alignment specifies what byte alignment the BDs must fall on and
-* must be a power of 2 to get an accurate calculation (32, 64, 128,...)
-* @param Bytes is the number of bytes to be used to store BDs.
-*
-* @return Number of BDs that can fit in the given memory area
-*
-* @note
-* C-style signature:
-* u32 XEmacPs_BdRingCntCalc(u32 Alignment, u32 Bytes)
-*
-******************************************************************************/
-#define XEmacPs_BdRingCntCalc(Alignment, Bytes) \
- (u32)((Bytes) / (sizeof(XEmacPs_Bd)))
-
-/*****************************************************************************/
-/**
-* Use this macro at initialization time to determine how many bytes of memory
-* is required to contain a given number of BDs at a given alignment.
-*
-* @param Alignment specifies what byte alignment the BDs must fall on. This
-* parameter must be a power of 2 to get an accurate calculation (32, 64,
-* 128,...)
-* @param NumBd is the number of BDs to calculate memory size requirements for
-*
-* @return The number of bytes of memory required to create a BD list with the
-* given memory constraints.
-*
-* @note
-* C-style signature:
-* u32 XEmacPs_BdRingMemCalc(u32 Alignment, u32 NumBd)
-*
-******************************************************************************/
-#define XEmacPs_BdRingMemCalc(Alignment, NumBd) \
- (u32)(sizeof(XEmacPs_Bd) * (NumBd))
-
-/****************************************************************************/
-/**
-* Return the total number of BDs allocated by this channel with
-* XEmacPs_BdRingCreate().
-*
-* @param RingPtr is the DMA channel to operate on.
-*
-* @return The total number of BDs allocated for this channel.
-*
-* @note
-* C-style signature:
-* u32 XEmacPs_BdRingGetCnt(XEmacPs_BdRing* RingPtr)
-*
-*****************************************************************************/
-#define XEmacPs_BdRingGetCnt(RingPtr) ((RingPtr)->AllCnt)
-
-/****************************************************************************/
-/**
-* Return the number of BDs allocatable with XEmacPs_BdRingAlloc() for pre-
-* processing.
-*
-* @param RingPtr is the DMA channel to operate on.
-*
-* @return The number of BDs currently allocatable.
-*
-* @note
-* C-style signature:
-* u32 XEmacPs_BdRingGetFreeCnt(XEmacPs_BdRing* RingPtr)
-*
-*****************************************************************************/
-#define XEmacPs_BdRingGetFreeCnt(RingPtr) ((RingPtr)->FreeCnt)
-
-/****************************************************************************/
-/**
-* Return the next BD from BdPtr in a list.
-*
-* @param RingPtr is the DMA channel to operate on.
-* @param BdPtr is the BD to operate on.
-*
-* @return The next BD in the list relative to the BdPtr parameter.
-*
-* @note
-* C-style signature:
-* XEmacPs_Bd *XEmacPs_BdRingNext(XEmacPs_BdRing* RingPtr,
-* XEmacPs_Bd *BdPtr)
-*
-*****************************************************************************/
-#define XEmacPs_BdRingNext(RingPtr, BdPtr) \
- (((UINTPTR)((void *)(BdPtr)) >= (RingPtr)->HighBdAddr) ? \
- (XEmacPs_Bd*)((void*)(RingPtr)->BaseBdAddr) : \
- (XEmacPs_Bd*)((UINTPTR)((void *)(BdPtr)) + (RingPtr)->Separation))
-
-/****************************************************************************/
-/**
-* Return the previous BD from BdPtr in the list.
-*
-* @param RingPtr is the DMA channel to operate on.
-* @param BdPtr is the BD to operate on
-*
-* @return The previous BD in the list relative to the BdPtr parameter.
-*
-* @note
-* C-style signature:
-* XEmacPs_Bd *XEmacPs_BdRingPrev(XEmacPs_BdRing* RingPtr,
-* XEmacPs_Bd *BdPtr)
-*
-*****************************************************************************/
-#define XEmacPs_BdRingPrev(RingPtr, BdPtr) \
- (((UINTPTR)(BdPtr) <= (RingPtr)->BaseBdAddr) ? \
- (XEmacPs_Bd*)(RingPtr)->HighBdAddr : \
- (XEmacPs_Bd*)((UINTPTR)(BdPtr) - (RingPtr)->Separation))
-
-/************************** Function Prototypes ******************************/
-
-/*
- * Scatter gather DMA related functions in xemacps_bdring.c
- */
-LONG XEmacPs_BdRingCreate(XEmacPs_BdRing * RingPtr, UINTPTR PhysAddr,
- UINTPTR VirtAddr, u32 Alignment, u32 BdCount);
-LONG XEmacPs_BdRingClone(XEmacPs_BdRing * RingPtr, XEmacPs_Bd * SrcBdPtr,
- u8 Direction);
-LONG XEmacPs_BdRingAlloc(XEmacPs_BdRing * RingPtr, u32 NumBd,
- XEmacPs_Bd ** BdSetPtr);
-LONG XEmacPs_BdRingUnAlloc(XEmacPs_BdRing * RingPtr, u32 NumBd,
- XEmacPs_Bd * BdSetPtr);
-LONG XEmacPs_BdRingToHw(XEmacPs_BdRing * RingPtr, u32 NumBd,
- XEmacPs_Bd * BdSetPtr);
-LONG XEmacPs_BdRingFree(XEmacPs_BdRing * RingPtr, u32 NumBd,
- XEmacPs_Bd * BdSetPtr);
-u32 XEmacPs_BdRingFromHwTx(XEmacPs_BdRing * RingPtr, u32 BdLimit,
- XEmacPs_Bd ** BdSetPtr);
-u32 XEmacPs_BdRingFromHwRx(XEmacPs_BdRing * RingPtr, u32 BdLimit,
- XEmacPs_Bd ** BdSetPtr);
-LONG XEmacPs_BdRingCheck(XEmacPs_BdRing * RingPtr, u8 Direction);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* end of protection macros */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xenv.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xenv.h
deleted file mode 100644
index c2f76ee26..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xenv.h
+++ /dev/null
@@ -1,187 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2002 - 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xenv.h
-*
-* Defines common services that are typically found in a host operating.
-* environment. This include file simply includes an OS specific file based
-* on the compile-time constant BUILD_ENV_*, where * is the name of the target
-* environment.
-*
-* All services are defined as macros.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -----------------------------------------------
-* 1.00b ch 10/24/02 Added XENV_LINUX
-* 1.00a rmm 04/17/02 First release
-*
-*
-******************************************************************************/
-
-#ifndef XENV_H /* prevent circular inclusions */
-#define XENV_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Select which target environment we are operating under
- */
-
-/* VxWorks target environment */
-#if defined XENV_VXWORKS
-#include "xenv_vxworks.h"
-
-/* Linux target environment */
-#elif defined XENV_LINUX
-#include "xenv_linux.h"
-
-/* Unit test environment */
-#elif defined XENV_UNITTEST
-#include "ut_xenv.h"
-
-/* Integration test environment */
-#elif defined XENV_INTTEST
-#include "int_xenv.h"
-
-/* Standalone environment selected */
-#else
-#include "xenv_standalone.h"
-#endif
-
-
-/*
- * The following comments specify the types and macro wrappers that are
- * expected to be defined by the target specific header files
- */
-
-/**************************** Type Definitions *******************************/
-
-/*****************************************************************************/
-/**
- *
- * XENV_TIME_STAMP
- *
- * A structure that contains a time stamp used by other time stamp macros
- * defined below. This structure is processor dependent.
- */
-
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/*****************************************************************************/
-/**
- *
- * XENV_MEM_COPY(void *DestPtr, void *SrcPtr, unsigned Bytes)
- *
- * Copies a non-overlapping block of memory.
- *
- * @param DestPtr is the destination address to copy data to.
- * @param SrcPtr is the source address to copy data from.
- * @param Bytes is the number of bytes to copy.
- *
- * @return None
- */
-
-/*****************************************************************************/
-/**
- *
- * XENV_MEM_FILL(void *DestPtr, char Data, unsigned Bytes)
- *
- * Fills an area of memory with constant data.
- *
- * @param DestPtr is the destination address to set.
- * @param Data contains the value to set.
- * @param Bytes is the number of bytes to set.
- *
- * @return None
- */
-/*****************************************************************************/
-/**
- *
- * XENV_TIME_STAMP_GET(XTIME_STAMP *StampPtr)
- *
- * Samples the processor's or external timer's time base counter.
- *
- * @param StampPtr is the storage for the retrieved time stamp.
- *
- * @return None
- */
-
-/*****************************************************************************/
-/**
- *
- * XENV_TIME_STAMP_DELTA_US(XTIME_STAMP *Stamp1Ptr, XTIME_STAMP* Stamp2Ptr)
- *
- * Computes the delta between the two time stamps.
- *
- * @param Stamp1Ptr - First sampled time stamp.
- * @param Stamp1Ptr - Sedond sampled time stamp.
- *
- * @return An unsigned int value with units of microseconds.
- */
-
-/*****************************************************************************/
-/**
- *
- * XENV_TIME_STAMP_DELTA_MS(XTIME_STAMP *Stamp1Ptr, XTIME_STAMP* Stamp2Ptr)
- *
- * Computes the delta between the two time stamps.
- *
- * @param Stamp1Ptr - First sampled time stamp.
- * @param Stamp1Ptr - Sedond sampled time stamp.
- *
- * @return An unsigned int value with units of milliseconds.
- */
-
-/*****************************************************************************//**
- *
- * XENV_USLEEP(unsigned delay)
- *
- * Delay the specified number of microseconds.
- *
- * @param delay is the number of microseconds to delay.
- *
- * @return None
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xenv_standalone.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xenv_standalone.h
deleted file mode 100644
index edab9db71..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xenv_standalone.h
+++ /dev/null
@@ -1,368 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2002 - 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xenv_standalone.h
-*
-* Defines common services specified by xenv.h.
-*
-* @note
-* This file is not intended to be included directly by driver code.
-* Instead, the generic xenv.h file is intended to be included by driver
-* code.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -----------------------------------------------
-* 1.00a wgr 02/28/07 Added cache handling macros.
-* 1.00a wgr 02/27/07 Simplified code. Deprecated old-style macro names.
-* 1.00a rmm 01/24/06 Implemented XENV_USLEEP. Assume implementation is being
-* used under Xilinx standalone BSP.
-* 1.00a xd 11/03/04 Improved support for doxygen.
-* 1.00a rmm 03/21/02 First release
-* 1.00a wgr 03/22/07 Converted to new coding style.
-* 1.00a rpm 06/29/07 Added udelay macro for standalone
-* 1.00a xd 07/19/07 Included xparameters.h as XPAR_ constants are referred
-* to in MICROBLAZE section
-* 1.00a ecm 09/19/08 updated for v7.20 of Microblaze, new functionality
-*
-*
-*
-*
-******************************************************************************/
-
-#ifndef XENV_STANDALONE_H
-#define XENV_STANDALONE_H
-
-#include "xil_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-/******************************************************************************
- *
- * Get the processor dependent includes
- *
- ******************************************************************************/
-
-#include
-
-#if defined __MICROBLAZE__
-# include "mb_interface.h"
-# include "xparameters.h" /* XPAR constants used below in MB section */
-
-#elif defined __PPC__
-# include "sleep.h"
-# include "xcache_l.h" /* also include xcache_l.h for caching macros */
-#endif
-
-/******************************************************************************
- *
- * MEMCPY / MEMSET related macros.
- *
- * The following are straight forward implementations of memset and memcpy.
- *
- * NOTE: memcpy may not work if source and target memory area are overlapping.
- *
- ******************************************************************************/
-/*****************************************************************************/
-/**
- *
- * Copies a non-overlapping block of memory.
- *
- * @param DestPtr
- * Destination address to copy data to.
- *
- * @param SrcPtr
- * Source address to copy data from.
- *
- * @param Bytes
- * Number of bytes to copy.
- *
- * @return None.
- *
- * @note
- * The use of XENV_MEM_COPY is deprecated. Use memcpy() instead.
- *
- * @note
- * This implemention MAY BREAK work if source and target memory
- * area are overlapping.
- *
- *****************************************************************************/
-
-#define XENV_MEM_COPY(DestPtr, SrcPtr, Bytes) \
- memcpy((void *) DestPtr, (const void *) SrcPtr, (size_t) Bytes)
-
-
-
-/*****************************************************************************/
-/**
- *
- * Fills an area of memory with constant data.
- *
- * @param DestPtr
- * Destination address to copy data to.
- *
- * @param Data
- * Value to set.
- *
- * @param Bytes
- * Number of bytes to copy.
- *
- * @return None.
- *
- * @note
- * The use of XENV_MEM_FILL is deprecated. Use memset() instead.
- *
- *****************************************************************************/
-
-#define XENV_MEM_FILL(DestPtr, Data, Bytes) \
- memset((void *) DestPtr, (s32) Data, (size_t) Bytes)
-
-
-
-/******************************************************************************
- *
- * TIME related macros
- *
- ******************************************************************************/
-
-/**
- * A structure that contains a time stamp used by other time stamp macros
- * defined below. This structure is processor dependent.
- */
-typedef s32 XENV_TIME_STAMP;
-
-/*****************************************************************************/
-/**
- *
- * Time is derived from the 64 bit PPC timebase register
- *
- * @param StampPtr is the storage for the retrieved time stamp.
- *
- * @return None.
- *
- * @note
- *
- * Signature: void XENV_TIME_STAMP_GET(XTIME_STAMP *StampPtr)
- *
- * This macro must be implemented by the user.
- *
- *****************************************************************************/
-#define XENV_TIME_STAMP_GET(StampPtr)
-
-/*****************************************************************************/
-/**
- *
- * This macro is not yet implemented and always returns 0.
- *
- * @param Stamp1Ptr is the first sampled time stamp.
- * @param Stamp2Ptr is the second sampled time stamp.
- *
- * @return 0
- *
- * @note
- *
- * This macro must be implemented by the user.
- *
- *****************************************************************************/
-#define XENV_TIME_STAMP_DELTA_US(Stamp1Ptr, Stamp2Ptr) (0)
-
-/*****************************************************************************/
-/**
- *
- * This macro is not yet implemented and always returns 0.
- *
- * @param Stamp1Ptr is the first sampled time stamp.
- * @param Stamp2Ptr is the second sampled time stamp.
- *
- * @return 0
- *
- * @note
- *
- * This macro must be implemented by the user.
- *
- *****************************************************************************/
-#define XENV_TIME_STAMP_DELTA_MS(Stamp1Ptr, Stamp2Ptr) (0)
-
-/*****************************************************************************/
-/**
- * XENV_USLEEP(unsigned delay)
- *
- * Delay the specified number of microseconds. Not implemented without OS
- * support.
- *
- * @param delay
- * Number of microseconds to delay.
- *
- * @return None.
- *
- *****************************************************************************/
-
-#ifdef __PPC__
-#define XENV_USLEEP(delay) usleep(delay)
-#define udelay(delay) usleep(delay)
-#else
-#define XENV_USLEEP(delay)
-#define udelay(delay)
-#endif
-
-
-/******************************************************************************
- *
- * CACHE handling macros / mappings
- *
- ******************************************************************************/
-/******************************************************************************
- *
- * Processor independent macros
- *
- ******************************************************************************/
-
-#define XCACHE_ENABLE_CACHE() \
- { XCACHE_ENABLE_DCACHE(); XCACHE_ENABLE_ICACHE(); }
-
-#define XCACHE_DISABLE_CACHE() \
- { XCACHE_DISABLE_DCACHE(); XCACHE_DISABLE_ICACHE(); }
-
-
-/******************************************************************************
- *
- * MicroBlaze case
- *
- * NOTE: Currently the following macros will only work on systems that contain
- * only ONE MicroBlaze processor. Also, the macros will only be enabled if the
- * system is built using a xparameters.h file.
- *
- ******************************************************************************/
-
-#if defined __MICROBLAZE__
-
-/* Check if MicroBlaze data cache was built into the core.
- */
-#if (XPAR_MICROBLAZE_USE_DCACHE == 1)
-# define XCACHE_ENABLE_DCACHE() microblaze_enable_dcache()
-# define XCACHE_DISABLE_DCACHE() microblaze_disable_dcache()
-# define XCACHE_INVALIDATE_DCACHE() microblaze_invalidate_dcache()
-
-# define XCACHE_INVALIDATE_DCACHE_RANGE(Addr, Len) \
- microblaze_invalidate_dcache_range((s32)(Addr), (s32)(Len))
-
-#if (XPAR_MICROBLAZE_DCACHE_USE_WRITEBACK == 1)
-# define XCACHE_FLUSH_DCACHE() microblaze_flush_dcache()
-# define XCACHE_FLUSH_DCACHE_RANGE(Addr, Len) \
- microblaze_flush_dcache_range((s32)(Addr), (s32)(Len))
-#else
-# define XCACHE_FLUSH_DCACHE() microblaze_invalidate_dcache()
-# define XCACHE_FLUSH_DCACHE_RANGE(Addr, Len) \
- microblaze_invalidate_dcache_range((s32)(Addr), (s32)(Len))
-#endif /*XPAR_MICROBLAZE_DCACHE_USE_WRITEBACK*/
-
-#else
-# define XCACHE_ENABLE_DCACHE()
-# define XCACHE_DISABLE_DCACHE()
-# define XCACHE_INVALIDATE_DCACHE_RANGE(Addr, Len)
-# define XCACHE_FLUSH_DCACHE_RANGE(Addr, Len)
-#endif /*XPAR_MICROBLAZE_USE_DCACHE*/
-
-
-/* Check if MicroBlaze instruction cache was built into the core.
- */
-#if (XPAR_MICROBLAZE_USE_ICACHE == 1)
-# define XCACHE_ENABLE_ICACHE() microblaze_enable_icache()
-# define XCACHE_DISABLE_ICACHE() microblaze_disable_icache()
-
-# define XCACHE_INVALIDATE_ICACHE() microblaze_invalidate_icache()
-
-# define XCACHE_INVALIDATE_ICACHE_RANGE(Addr, Len) \
- microblaze_invalidate_icache_range((s32)(Addr), (s32)(Len))
-
-#else
-# define XCACHE_ENABLE_ICACHE()
-# define XCACHE_DISABLE_ICACHE()
-#endif /*XPAR_MICROBLAZE_USE_ICACHE*/
-
-
-/******************************************************************************
- *
- * PowerPC case
- *
- * Note that the XCACHE_ENABLE_xxx functions are hardcoded to enable a
- * specific memory region (0x80000001). Each bit (0-30) in the regions
- * bitmask stands for 128MB of memory. Bit 31 stands for the upper 2GB
- * range.
- *
- * regions --> cached address range
- * ------------|--------------------------------------------------
- * 0x80000000 | [0, 0x7FFFFFF]
- * 0x00000001 | [0xF8000000, 0xFFFFFFFF]
- * 0x80000001 | [0, 0x7FFFFFF],[0xF8000000, 0xFFFFFFFF]
- *
- ******************************************************************************/
-
-#elif defined __PPC__
-
-#define XCACHE_ENABLE_DCACHE() XCache_EnableDCache(0x80000001)
-#define XCACHE_DISABLE_DCACHE() XCache_DisableDCache()
-#define XCACHE_ENABLE_ICACHE() XCache_EnableICache(0x80000001)
-#define XCACHE_DISABLE_ICACHE() XCache_DisableICache()
-
-#define XCACHE_INVALIDATE_DCACHE_RANGE(Addr, Len) \
- XCache_InvalidateDCacheRange((u32)(Addr), (u32)(Len))
-
-#define XCACHE_FLUSH_DCACHE_RANGE(Addr, Len) \
- XCache_FlushDCacheRange((u32)(Addr), (u32)(Len))
-
-#define XCACHE_INVALIDATE_ICACHE() XCache_InvalidateICache()
-
-
-/******************************************************************************
- *
- * Unknown processor / architecture
- *
- ******************************************************************************/
-
-#else
-/* #error "Unknown processor / architecture. Must be MicroBlaze or PowerPC." */
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* #ifndef XENV_STANDALONE_H */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xgpiops.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xgpiops.h
deleted file mode 100644
index ef9a7f05a..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xgpiops.h
+++ /dev/null
@@ -1,277 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xgpiops.h
-*
-* The Xilinx PS GPIO driver. This driver supports the Xilinx PS GPIO
-* Controller.
-*
-* The GPIO Controller supports the following features:
-* - 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
-* memory, or cache control must be satisfied by the layer above this driver.
-
-* This driver supports all the features listed above, if applicable.
-*
-* Driver Description
-*
-* The device driver enables higher layer software (e.g., an application) to
-* communicate to the GPIO.
-*
-* Interrupts
-*
-* The driver provides interrupt management functions and an interrupt handler.
-* Users of this driver need to provide callback functions. An interrupt handler
-* example is available with the driver.
-*
-* Threads
-*
-* This driver is not thread safe. Any needs for threads or thread mutual
-* exclusion must be satisfied by the layer above this driver.
-*
-* Asserts
-*
-* Asserts are used within all Xilinx drivers to enforce constraints on argument
-* values. Asserts can be turned off on a system-wide basis by defining, at
-* compile time, the NDEBUG identifier. By default, asserts are turned on and it
-* is recommended that users leave asserts on during development.
-*
-* Building the driver
-*
-* The XGpioPs driver is composed of several source files. This allows the user
-* to build and link only those parts of the driver that are necessary.
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -----------------------------------------------
-* 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.
-* 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
-* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
-*
-*
-*
-******************************************************************************/
-#ifndef XGPIOPS_H /* prevent circular inclusions */
-#define XGPIOPS_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xstatus.h"
-#include "xgpiops_hw.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Interrupt types
- * @{
- * The following constants define the interrupt types that can be set for each
- * GPIO pin.
- */
-#define XGPIOPS_IRQ_TYPE_EDGE_RISING 0x00U /**< Interrupt on Rising edge */
-#define XGPIOPS_IRQ_TYPE_EDGE_FALLING 0x01U /**< Interrupt Falling edge */
-#define XGPIOPS_IRQ_TYPE_EDGE_BOTH 0x02U /**< Interrupt on both edges */
-#define XGPIOPS_IRQ_TYPE_LEVEL_HIGH 0x03U /**< Interrupt on high level */
-#define XGPIOPS_IRQ_TYPE_LEVEL_LOW 0x04U /**< Interrupt on low level */
-/*@}*/
-
-#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_MAX_BANKS 0x06U /**< Max banks in a GPIO device */
-#define XGPIOPS_BANK_MAX_PINS (u32)32 /**< Max pins in a GPIO bank */
-
-#define XGPIOPS_DEVICE_MAX_PIN_NUM (u32)174 /*< Max pins in the ZynqMP 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
- */
-#else
-
-#define XGPIOPS_MAX_BANKS 0x04U /**< Max banks in a GPIO device */
-#define XGPIOPS_BANK_MAX_PINS (u32)32 /**< Max pins in a GPIO bank */
-
-#define XGPIOPS_DEVICE_MAX_PIN_NUM (u32)118 /*< Max pins in the GPIO device
- * 0 - 31, Bank 0
- * 32 - 53, Bank 1
- * 54 - 85, Bank 2
- * 86 - 117, Bank 3
- */
-
-
-#endif
-/**************************** Type Definitions *******************************/
-
-/****************************************************************************/
-/**
- * This handler data type allows the user to define a callback function to
- * handle the interrupts for the GPIO device. The application using this
- * driver is expected to define a handler of this type, to support interrupt
- * driven mode. The handler executes in an interrupt context such that minimal
- * 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.
- * @param Bank is the bank for which the interrupt status has changed.
- * @param Status is the Interrupt status of the GPIO bank.
- *
- *****************************************************************************/
-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 */
-} XGpioPs_Config;
-
-/**
- * The XGpioPs driver instance data. The user is required to allocate a
- * variable of this type for the GPIO device in the system. A pointer
- * 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 */
-} XGpioPs;
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/************************** Function Prototypes ******************************/
-
-/*
- * Functions in xgpiops.c
- */
-s32 XGpioPs_CfgInitialize(XGpioPs *InstancePtr, XGpioPs_Config *ConfigPtr,
- u32 EffectiveAddr);
-
-/*
- * Bank APIs in xgpiops.c
- */
-u32 XGpioPs_Read(XGpioPs *InstancePtr, u8 Bank);
-void XGpioPs_Write(XGpioPs *InstancePtr, u8 Bank, u32 Data);
-void XGpioPs_SetDirection(XGpioPs *InstancePtr, u8 Bank, u32 Direction);
-u32 XGpioPs_GetDirection(XGpioPs *InstancePtr, u8 Bank);
-void XGpioPs_SetOutputEnable(XGpioPs *InstancePtr, u8 Bank, u32 OpEnable);
-u32 XGpioPs_GetOutputEnable(XGpioPs *InstancePtr, u8 Bank);
-void XGpioPs_GetBankPin(u8 PinNumber, u8 *BankNumber, u8 *PinNumberInBank);
-
-/*
- * Pin APIs in xgpiops.c
- */
-u32 XGpioPs_ReadPin(XGpioPs *InstancePtr, u32 Pin);
-void XGpioPs_WritePin(XGpioPs *InstancePtr, u32 Pin, u32 Data);
-void XGpioPs_SetDirectionPin(XGpioPs *InstancePtr, u32 Pin, u32 Direction);
-u32 XGpioPs_GetDirectionPin(XGpioPs *InstancePtr, u32 Pin);
-void XGpioPs_SetOutputEnablePin(XGpioPs *InstancePtr, u32 Pin, u32 OpEnable);
-u32 XGpioPs_GetOutputEnablePin(XGpioPs *InstancePtr, u32 Pin);
-
-/*
- * Diagnostic functions in xgpiops_selftest.c
- */
-s32 XGpioPs_SelfTest(XGpioPs *InstancePtr);
-
-/*
- * Functions in xgpiops_intr.c
- */
-/*
- * Bank APIs in xgpiops_intr.c
- */
-void XGpioPs_IntrEnable(XGpioPs *InstancePtr, u8 Bank, u32 Mask);
-void XGpioPs_IntrDisable(XGpioPs *InstancePtr, u8 Bank, u32 Mask);
-u32 XGpioPs_IntrGetEnabled(XGpioPs *InstancePtr, u8 Bank);
-u32 XGpioPs_IntrGetStatus(XGpioPs *InstancePtr, u8 Bank);
-void XGpioPs_IntrClear(XGpioPs *InstancePtr, u8 Bank, u32 Mask);
-void XGpioPs_SetIntrType(XGpioPs *InstancePtr, u8 Bank, u32 IntrType,
- u32 IntrPolarity, u32 IntrOnAny);
-void XGpioPs_GetIntrType(XGpioPs *InstancePtr, u8 Bank, u32 *IntrType,
- u32 *IntrPolarity, u32 *IntrOnAny);
-void XGpioPs_SetCallbackHandler(XGpioPs *InstancePtr, void *CallBackRef,
- XGpioPs_Handler FuncPointer);
-void XGpioPs_IntrHandler(XGpioPs *InstancePtr);
-
-/*
- * Pin APIs in xgpiops_intr.c
- */
-void XGpioPs_SetIntrTypePin(XGpioPs *InstancePtr, u32 Pin, u8 IrqType);
-u8 XGpioPs_GetIntrTypePin(XGpioPs *InstancePtr, u32 Pin);
-
-void XGpioPs_IntrEnablePin(XGpioPs *InstancePtr, u32 Pin);
-void XGpioPs_IntrDisablePin(XGpioPs *InstancePtr, u32 Pin);
-u32 XGpioPs_IntrGetEnabledPin(XGpioPs *InstancePtr, u32 Pin);
-u32 XGpioPs_IntrGetStatusPin(XGpioPs *InstancePtr, u32 Pin);
-void XGpioPs_IntrClearPin(XGpioPs *InstancePtr, u32 Pin);
-
-/*
- * Functions in xgpiops_sinit.c
- */
-XGpioPs_Config *XGpioPs_LookupConfig(u16 DeviceId);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_cache.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_cache.h
deleted file mode 100644
index 940133290..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_cache.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xil_cache.h
-*
-* Contains required functions for the ARM cache functionality
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -----------------------------------------------
-* 5.00 pkp 05/29/14 First release
-*
-*
-******************************************************************************/
-#ifndef XIL_CACHE_H
-#define XIL_CACHE_H
-
-#include "xil_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void Xil_DCacheEnable(void);
-void Xil_DCacheDisable(void);
-void Xil_DCacheInvalidate(void);
-void Xil_DCacheInvalidateRange(INTPTR adr, u32 len);
-void Xil_DCacheInvalidateLine(INTPTR adr);
-void Xil_DCacheFlush(void);
-void Xil_DCacheFlushRange(INTPTR adr, u32 len);
-void Xil_DCacheFlushLine(INTPTR adr);
-
-void Xil_ICacheEnable(void);
-void Xil_ICacheDisable(void);
-void Xil_ICacheInvalidate(void);
-void Xil_ICacheInvalidateRange(INTPTR adr, u32 len);
-void Xil_ICacheInvalidateLine(INTPTR adr);
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_hal.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_hal.h
deleted file mode 100644
index e29d2a79d..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_hal.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xil_hal.h
-*
-* Contains all the HAL header files.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -------------------------------------------------------
-* 1.00a hbm 07/28/09 Initial release
-*
-*
-*
-* @note
-*
-******************************************************************************/
-
-#ifndef XIL_HAL_H
-#define XIL_HAL_H
-
-#include "xil_cache.h"
-#include "xil_io.h"
-#include "xil_assert.h"
-#include "xil_exception.h"
-#include "xil_types.h"
-
-#endif
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_macroback.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_macroback.h
deleted file mode 100644
index f5316efbf..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_macroback.h
+++ /dev/null
@@ -1,1052 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-
-/*********************************************************************/
-/**
- * @file xil_macroback.h
- *
- * This header file is meant to bring back the removed _m macros.
- * This header file must be included last.
- * The following macros are not defined here due to the driver change:
- * XGpio_mSetDataDirection
- * XGpio_mGetDataReg
- * XGpio_mSetDataReg
- * XIIC_RESET
- * XIIC_CLEAR_STATS
- * XSpi_mReset
- * XSysAce_mSetCfgAddr
- * XSysAce_mIsCfgDone
- * XTft_mSetPixel
- * XTft_mGetPixel
- * XWdtTb_mEnableWdt
- * XWdtTb_mDisbleWdt
- * XWdtTb_mRestartWdt
- * XWdtTb_mGetTimebaseReg
- * XWdtTb_mHasReset
- *
- * Please refer the corresonding driver document for replacement.
- *
- *********************************************************************/
-
-#ifndef XIL_MACROBACK_H
-#define XIL_MACROBACK_H
-
-/*********************************************************************/
-/**
- * Macros for Driver XCan
- *
- *********************************************************************/
-#ifndef XCan_mReadReg
-#define XCan_mReadReg XCan_ReadReg
-#endif
-
-#ifndef XCan_mWriteReg
-#define XCan_mWriteReg XCan_WriteReg
-#endif
-
-#ifndef XCan_mIsTxDone
-#define XCan_mIsTxDone XCan_IsTxDone
-#endif
-
-#ifndef XCan_mIsTxFifoFull
-#define XCan_mIsTxFifoFull XCan_IsTxFifoFull
-#endif
-
-#ifndef XCan_mIsHighPriorityBufFull
-#define XCan_mIsHighPriorityBufFull XCan_IsHighPriorityBufFull
-#endif
-
-#ifndef XCan_mIsRxEmpty
-#define XCan_mIsRxEmpty XCan_IsRxEmpty
-#endif
-
-#ifndef XCan_mIsAcceptFilterBusy
-#define XCan_mIsAcceptFilterBusy XCan_IsAcceptFilterBusy
-#endif
-
-#ifndef XCan_mCreateIdValue
-#define XCan_mCreateIdValue XCan_CreateIdValue
-#endif
-
-#ifndef XCan_mCreateDlcValue
-#define XCan_mCreateDlcValue XCan_CreateDlcValue
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XDmaCentral
- *
- *********************************************************************/
-#ifndef XDmaCentral_mWriteReg
-#define XDmaCentral_mWriteReg XDmaCentral_WriteReg
-#endif
-
-#ifndef XDmaCentral_mReadReg
-#define XDmaCentral_mReadReg XDmaCentral_ReadReg
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XDsAdc
- *
- *********************************************************************/
-#ifndef XDsAdc_mWriteReg
-#define XDsAdc_mWriteReg XDsAdc_WriteReg
-#endif
-
-#ifndef XDsAdc_mReadReg
-#define XDsAdc_mReadReg XDsAdc_ReadReg
-#endif
-
-#ifndef XDsAdc_mIsEmpty
-#define XDsAdc_mIsEmpty XDsAdc_IsEmpty
-#endif
-
-#ifndef XDsAdc_mSetFstmReg
-#define XDsAdc_mSetFstmReg XDsAdc_SetFstmReg
-#endif
-
-#ifndef XDsAdc_mGetFstmReg
-#define XDsAdc_mGetFstmReg XDsAdc_GetFstmReg
-#endif
-
-#ifndef XDsAdc_mEnableConversion
-#define XDsAdc_mEnableConversion XDsAdc_EnableConversion
-#endif
-
-#ifndef XDsAdc_mDisableConversion
-#define XDsAdc_mDisableConversion XDsAdc_DisableConversion
-#endif
-
-#ifndef XDsAdc_mGetFifoOccyReg
-#define XDsAdc_mGetFifoOccyReg XDsAdc_GetFifoOccyReg
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XDsDac
- *
- *********************************************************************/
-#ifndef XDsDac_mWriteReg
-#define XDsDac_mWriteReg XDsDac_WriteReg
-#endif
-
-#ifndef XDsDac_mReadReg
-#define XDsDac_mReadReg XDsDac_ReadReg
-#endif
-
-#ifndef XDsDac_mIsEmpty
-#define XDsDac_mIsEmpty XDsDac_IsEmpty
-#endif
-
-#ifndef XDsDac_mFifoIsFull
-#define XDsDac_mFifoIsFull XDsDac_FifoIsFull
-#endif
-
-#ifndef XDsDac_mGetVacancy
-#define XDsDac_mGetVacancy XDsDac_GetVacancy
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XEmacLite
- *
- *********************************************************************/
-#ifndef XEmacLite_mReadReg
-#define XEmacLite_mReadReg XEmacLite_ReadReg
-#endif
-
-#ifndef XEmacLite_mWriteReg
-#define XEmacLite_mWriteReg XEmacLite_WriteReg
-#endif
-
-#ifndef XEmacLite_mGetTxStatus
-#define XEmacLite_mGetTxStatus XEmacLite_GetTxStatus
-#endif
-
-#ifndef XEmacLite_mSetTxStatus
-#define XEmacLite_mSetTxStatus XEmacLite_SetTxStatus
-#endif
-
-#ifndef XEmacLite_mGetRxStatus
-#define XEmacLite_mGetRxStatus XEmacLite_GetRxStatus
-#endif
-
-#ifndef XEmacLite_mSetRxStatus
-#define XEmacLite_mSetRxStatus XEmacLite_SetRxStatus
-#endif
-
-#ifndef XEmacLite_mIsTxDone
-#define XEmacLite_mIsTxDone XEmacLite_IsTxDone
-#endif
-
-#ifndef XEmacLite_mIsRxEmpty
-#define XEmacLite_mIsRxEmpty XEmacLite_IsRxEmpty
-#endif
-
-#ifndef XEmacLite_mNextTransmitAddr
-#define XEmacLite_mNextTransmitAddr XEmacLite_NextTransmitAddr
-#endif
-
-#ifndef XEmacLite_mNextReceiveAddr
-#define XEmacLite_mNextReceiveAddr XEmacLite_NextReceiveAddr
-#endif
-
-#ifndef XEmacLite_mIsMdioConfigured
-#define XEmacLite_mIsMdioConfigured XEmacLite_IsMdioConfigured
-#endif
-
-#ifndef XEmacLite_mIsLoopbackConfigured
-#define XEmacLite_mIsLoopbackConfigured XEmacLite_IsLoopbackConfigured
-#endif
-
-#ifndef XEmacLite_mGetReceiveDataLength
-#define XEmacLite_mGetReceiveDataLength XEmacLite_GetReceiveDataLength
-#endif
-
-#ifndef XEmacLite_mGetTxActive
-#define XEmacLite_mGetTxActive XEmacLite_GetTxActive
-#endif
-
-#ifndef XEmacLite_mSetTxActive
-#define XEmacLite_mSetTxActive XEmacLite_SetTxActive
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XGpio
- *
- *********************************************************************/
-#ifndef XGpio_mWriteReg
-#define XGpio_mWriteReg XGpio_WriteReg
-#endif
-
-#ifndef XGpio_mReadReg
-#define XGpio_mReadReg XGpio_ReadReg
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XHwIcap
- *
- *********************************************************************/
-#ifndef XHwIcap_mFifoWrite
-#define XHwIcap_mFifoWrite XHwIcap_FifoWrite
-#endif
-
-#ifndef XHwIcap_mFifoRead
-#define XHwIcap_mFifoRead XHwIcap_FifoRead
-#endif
-
-#ifndef XHwIcap_mSetSizeReg
-#define XHwIcap_mSetSizeReg XHwIcap_SetSizeReg
-#endif
-
-#ifndef XHwIcap_mGetControlReg
-#define XHwIcap_mGetControlReg XHwIcap_GetControlReg
-#endif
-
-#ifndef XHwIcap_mStartConfig
-#define XHwIcap_mStartConfig XHwIcap_StartConfig
-#endif
-
-#ifndef XHwIcap_mStartReadBack
-#define XHwIcap_mStartReadBack XHwIcap_StartReadBack
-#endif
-
-#ifndef XHwIcap_mGetStatusReg
-#define XHwIcap_mGetStatusReg XHwIcap_GetStatusReg
-#endif
-
-#ifndef XHwIcap_mIsTransferDone
-#define XHwIcap_mIsTransferDone XHwIcap_IsTransferDone
-#endif
-
-#ifndef XHwIcap_mIsDeviceBusy
-#define XHwIcap_mIsDeviceBusy XHwIcap_IsDeviceBusy
-#endif
-
-#ifndef XHwIcap_mIntrGlobalEnable
-#define XHwIcap_mIntrGlobalEnable XHwIcap_IntrGlobalEnable
-#endif
-
-#ifndef XHwIcap_mIntrGlobalDisable
-#define XHwIcap_mIntrGlobalDisable XHwIcap_IntrGlobalDisable
-#endif
-
-#ifndef XHwIcap_mIntrGetStatus
-#define XHwIcap_mIntrGetStatus XHwIcap_IntrGetStatus
-#endif
-
-#ifndef XHwIcap_mIntrDisable
-#define XHwIcap_mIntrDisable XHwIcap_IntrDisable
-#endif
-
-#ifndef XHwIcap_mIntrEnable
-#define XHwIcap_mIntrEnable XHwIcap_IntrEnable
-#endif
-
-#ifndef XHwIcap_mIntrGetEnabled
-#define XHwIcap_mIntrGetEnabled XHwIcap_IntrGetEnabled
-#endif
-
-#ifndef XHwIcap_mIntrClear
-#define XHwIcap_mIntrClear XHwIcap_IntrClear
-#endif
-
-#ifndef XHwIcap_mGetWrFifoVacancy
-#define XHwIcap_mGetWrFifoVacancy XHwIcap_GetWrFifoVacancy
-#endif
-
-#ifndef XHwIcap_mGetRdFifoOccupancy
-#define XHwIcap_mGetRdFifoOccupancy XHwIcap_GetRdFifoOccupancy
-#endif
-
-#ifndef XHwIcap_mSliceX2Col
-#define XHwIcap_mSliceX2Col XHwIcap_SliceX2Col
-#endif
-
-#ifndef XHwIcap_mSliceY2Row
-#define XHwIcap_mSliceY2Row XHwIcap_SliceY2Row
-#endif
-
-#ifndef XHwIcap_mSliceXY2Slice
-#define XHwIcap_mSliceXY2Slice XHwIcap_SliceXY2Slice
-#endif
-
-#ifndef XHwIcap_mReadReg
-#define XHwIcap_mReadReg XHwIcap_ReadReg
-#endif
-
-#ifndef XHwIcap_mWriteReg
-#define XHwIcap_mWriteReg XHwIcap_WriteReg
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XIic
- *
- *********************************************************************/
-#ifndef XIic_mReadReg
-#define XIic_mReadReg XIic_ReadReg
-#endif
-
-#ifndef XIic_mWriteReg
-#define XIic_mWriteReg XIic_WriteReg
-#endif
-
-#ifndef XIic_mEnterCriticalRegion
-#define XIic_mEnterCriticalRegion XIic_IntrGlobalDisable
-#endif
-
-#ifndef XIic_mExitCriticalRegion
-#define XIic_mExitCriticalRegion XIic_IntrGlobalEnable
-#endif
-
-#ifndef XIIC_GINTR_DISABLE
-#define XIIC_GINTR_DISABLE XIic_IntrGlobalDisable
-#endif
-
-#ifndef XIIC_GINTR_ENABLE
-#define XIIC_GINTR_ENABLE XIic_IntrGlobalEnable
-#endif
-
-#ifndef XIIC_IS_GINTR_ENABLED
-#define XIIC_IS_GINTR_ENABLED XIic_IsIntrGlobalEnabled
-#endif
-
-#ifndef XIIC_WRITE_IISR
-#define XIIC_WRITE_IISR XIic_WriteIisr
-#endif
-
-#ifndef XIIC_READ_IISR
-#define XIIC_READ_IISR XIic_ReadIisr
-#endif
-
-#ifndef XIIC_WRITE_IIER
-#define XIIC_WRITE_IIER XIic_WriteIier
-#endif
-
-#ifndef XIic_mClearIisr
-#define XIic_mClearIisr XIic_ClearIisr
-#endif
-
-#ifndef XIic_mSend7BitAddress
-#define XIic_mSend7BitAddress XIic_Send7BitAddress
-#endif
-
-#ifndef XIic_mDynSend7BitAddress
-#define XIic_mDynSend7BitAddress XIic_DynSend7BitAddress
-#endif
-
-#ifndef XIic_mDynSendStartStopAddress
-#define XIic_mDynSendStartStopAddress XIic_DynSendStartStopAddress
-#endif
-
-#ifndef XIic_mDynSendStop
-#define XIic_mDynSendStop XIic_DynSendStop
-#endif
-
-#ifndef XIic_mSend10BitAddrByte1
-#define XIic_mSend10BitAddrByte1 XIic_Send10BitAddrByte1
-#endif
-
-#ifndef XIic_mSend10BitAddrByte2
-#define XIic_mSend10BitAddrByte2 XIic_Send10BitAddrByte2
-#endif
-
-#ifndef XIic_mSend7BitAddr
-#define XIic_mSend7BitAddr XIic_Send7BitAddr
-#endif
-
-#ifndef XIic_mDisableIntr
-#define XIic_mDisableIntr XIic_DisableIntr
-#endif
-
-#ifndef XIic_mEnableIntr
-#define XIic_mEnableIntr XIic_EnableIntr
-#endif
-
-#ifndef XIic_mClearIntr
-#define XIic_mClearIntr XIic_ClearIntr
-#endif
-
-#ifndef XIic_mClearEnableIntr
-#define XIic_mClearEnableIntr XIic_ClearEnableIntr
-#endif
-
-#ifndef XIic_mFlushRxFifo
-#define XIic_mFlushRxFifo XIic_FlushRxFifo
-#endif
-
-#ifndef XIic_mFlushTxFifo
-#define XIic_mFlushTxFifo XIic_FlushTxFifo
-#endif
-
-#ifndef XIic_mReadRecvByte
-#define XIic_mReadRecvByte XIic_ReadRecvByte
-#endif
-
-#ifndef XIic_mWriteSendByte
-#define XIic_mWriteSendByte XIic_WriteSendByte
-#endif
-
-#ifndef XIic_mSetControlRegister
-#define XIic_mSetControlRegister XIic_SetControlRegister
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XIntc
- *
- *********************************************************************/
-#ifndef XIntc_mMasterEnable
-#define XIntc_mMasterEnable XIntc_MasterEnable
-#endif
-
-#ifndef XIntc_mMasterDisable
-#define XIntc_mMasterDisable XIntc_MasterDisable
-#endif
-
-#ifndef XIntc_mEnableIntr
-#define XIntc_mEnableIntr XIntc_EnableIntr
-#endif
-
-#ifndef XIntc_mDisableIntr
-#define XIntc_mDisableIntr XIntc_DisableIntr
-#endif
-
-#ifndef XIntc_mAckIntr
-#define XIntc_mAckIntr XIntc_AckIntr
-#endif
-
-#ifndef XIntc_mGetIntrStatus
-#define XIntc_mGetIntrStatus XIntc_GetIntrStatus
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XLlDma
- *
- *********************************************************************/
-#ifndef XLlDma_mBdRead
-#define XLlDma_mBdRead XLlDma_BdRead
-#endif
-
-#ifndef XLlDma_mBdWrite
-#define XLlDma_mBdWrite XLlDma_BdWrite
-#endif
-
-#ifndef XLlDma_mWriteReg
-#define XLlDma_mWriteReg XLlDma_WriteReg
-#endif
-
-#ifndef XLlDma_mReadReg
-#define XLlDma_mReadReg XLlDma_ReadReg
-#endif
-
-#ifndef XLlDma_mBdClear
-#define XLlDma_mBdClear XLlDma_BdClear
-#endif
-
-#ifndef XLlDma_mBdSetStsCtrl
-#define XLlDma_mBdSetStsCtrl XLlDma_BdSetStsCtrl
-#endif
-
-#ifndef XLlDma_mBdGetStsCtrl
-#define XLlDma_mBdGetStsCtrl XLlDma_BdGetStsCtrl
-#endif
-
-#ifndef XLlDma_mBdSetLength
-#define XLlDma_mBdSetLength XLlDma_BdSetLength
-#endif
-
-#ifndef XLlDma_mBdGetLength
-#define XLlDma_mBdGetLength XLlDma_BdGetLength
-#endif
-
-#ifndef XLlDma_mBdSetId
-#define XLlDma_mBdSetId XLlDma_BdSetId
-#endif
-
-#ifndef XLlDma_mBdGetId
-#define XLlDma_mBdGetId XLlDma_BdGetId
-#endif
-
-#ifndef XLlDma_mBdSetBufAddr
-#define XLlDma_mBdSetBufAddr XLlDma_BdSetBufAddr
-#endif
-
-#ifndef XLlDma_mBdGetBufAddr
-#define XLlDma_mBdGetBufAddr XLlDma_BdGetBufAddr
-#endif
-
-#ifndef XLlDma_mBdGetLength
-#define XLlDma_mBdGetLength XLlDma_BdGetLength
-#endif
-
-#ifndef XLlDma_mGetTxRing
-#define XLlDma_mGetTxRing XLlDma_GetTxRing
-#endif
-
-#ifndef XLlDma_mGetRxRing
-#define XLlDma_mGetRxRing XLlDma_GetRxRing
-#endif
-
-#ifndef XLlDma_mGetCr
-#define XLlDma_mGetCr XLlDma_GetCr
-#endif
-
-#ifndef XLlDma_mSetCr
-#define XLlDma_mSetCr XLlDma_SetCr
-#endif
-
-#ifndef XLlDma_mBdRingCntCalc
-#define XLlDma_mBdRingCntCalc XLlDma_BdRingCntCalc
-#endif
-
-#ifndef XLlDma_mBdRingMemCalc
-#define XLlDma_mBdRingMemCalc XLlDma_BdRingMemCalc
-#endif
-
-#ifndef XLlDma_mBdRingGetCnt
-#define XLlDma_mBdRingGetCnt XLlDma_BdRingGetCnt
-#endif
-
-#ifndef XLlDma_mBdRingGetFreeCnt
-#define XLlDma_mBdRingGetFreeCnt XLlDma_BdRingGetFreeCnt
-#endif
-
-#ifndef XLlDma_mBdRingSnapShotCurrBd
-#define XLlDma_mBdRingSnapShotCurrBd XLlDma_BdRingSnapShotCurrBd
-#endif
-
-#ifndef XLlDma_mBdRingNext
-#define XLlDma_mBdRingNext XLlDma_BdRingNext
-#endif
-
-#ifndef XLlDma_mBdRingPrev
-#define XLlDma_mBdRingPrev XLlDma_BdRingPrev
-#endif
-
-#ifndef XLlDma_mBdRingGetSr
-#define XLlDma_mBdRingGetSr XLlDma_BdRingGetSr
-#endif
-
-#ifndef XLlDma_mBdRingSetSr
-#define XLlDma_mBdRingSetSr XLlDma_BdRingSetSr
-#endif
-
-#ifndef XLlDma_mBdRingGetCr
-#define XLlDma_mBdRingGetCr XLlDma_BdRingGetCr
-#endif
-
-#ifndef XLlDma_mBdRingSetCr
-#define XLlDma_mBdRingSetCr XLlDma_BdRingSetCr
-#endif
-
-#ifndef XLlDma_mBdRingBusy
-#define XLlDma_mBdRingBusy XLlDma_BdRingBusy
-#endif
-
-#ifndef XLlDma_mBdRingIntEnable
-#define XLlDma_mBdRingIntEnable XLlDma_BdRingIntEnable
-#endif
-
-#ifndef XLlDma_mBdRingIntDisable
-#define XLlDma_mBdRingIntDisable XLlDma_BdRingIntDisable
-#endif
-
-#ifndef XLlDma_mBdRingIntGetEnabled
-#define XLlDma_mBdRingIntGetEnabled XLlDma_BdRingIntGetEnabled
-#endif
-
-#ifndef XLlDma_mBdRingGetIrq
-#define XLlDma_mBdRingGetIrq XLlDma_BdRingGetIrq
-#endif
-
-#ifndef XLlDma_mBdRingAckIrq
-#define XLlDma_mBdRingAckIrq XLlDma_BdRingAckIrq
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XMbox
- *
- *********************************************************************/
-#ifndef XMbox_mWriteReg
-#define XMbox_mWriteReg XMbox_WriteReg
-#endif
-
-#ifndef XMbox_mReadReg
-#define XMbox_mReadReg XMbox_ReadReg
-#endif
-
-#ifndef XMbox_mWriteMBox
-#define XMbox_mWriteMBox XMbox_WriteMBox
-#endif
-
-#ifndef XMbox_mReadMBox
-#define XMbox_mReadMBox XMbox_ReadMBox
-#endif
-
-#ifndef XMbox_mFSLReadMBox
-#define XMbox_mFSLReadMBox XMbox_FSLReadMBox
-#endif
-
-#ifndef XMbox_mFSLWriteMBox
-#define XMbox_mFSLWriteMBox XMbox_FSLWriteMBox
-#endif
-
-#ifndef XMbox_mFSLIsEmpty
-#define XMbox_mFSLIsEmpty XMbox_FSLIsEmpty
-#endif
-
-#ifndef XMbox_mFSLIsFull
-#define XMbox_mFSLIsFull XMbox_FSLIsFull
-#endif
-
-#ifndef XMbox_mIsEmpty
-#define XMbox_mIsEmpty XMbox_IsEmptyHw
-#endif
-
-#ifndef XMbox_mIsFull
-#define XMbox_mIsFull XMbox_IsFullHw
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XMpmc
- *
- *********************************************************************/
-#ifndef XMpmc_mReadReg
-#define XMpmc_mReadReg XMpmc_ReadReg
-#endif
-
-#ifndef XMpmc_mWriteReg
-#define XMpmc_mWriteReg XMpmc_WriteReg
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XMutex
- *
- *********************************************************************/
-#ifndef XMutex_mWriteReg
-#define XMutex_mWriteReg XMutex_WriteReg
-#endif
-
-#ifndef XMutex_mReadReg
-#define XMutex_mReadReg XMutex_ReadReg
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XPcie
- *
- *********************************************************************/
-#ifndef XPcie_mReadReg
-#define XPcie_mReadReg XPcie_ReadReg
-#endif
-
-#ifndef XPcie_mWriteReg
-#define XPcie_mWriteReg XPcie_WriteReg
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XSpi
- *
- *********************************************************************/
-#ifndef XSpi_mIntrGlobalEnable
-#define XSpi_mIntrGlobalEnable XSpi_IntrGlobalEnable
-#endif
-
-#ifndef XSpi_mIntrGlobalDisable
-#define XSpi_mIntrGlobalDisable XSpi_IntrGlobalDisable
-#endif
-
-#ifndef XSpi_mIsIntrGlobalEnabled
-#define XSpi_mIsIntrGlobalEnabled XSpi_IsIntrGlobalEnabled
-#endif
-
-#ifndef XSpi_mIntrGetStatus
-#define XSpi_mIntrGetStatus XSpi_IntrGetStatus
-#endif
-
-#ifndef XSpi_mIntrClear
-#define XSpi_mIntrClear XSpi_IntrClear
-#endif
-
-#ifndef XSpi_mIntrEnable
-#define XSpi_mIntrEnable XSpi_IntrEnable
-#endif
-
-#ifndef XSpi_mIntrDisable
-#define XSpi_mIntrDisable XSpi_IntrDisable
-#endif
-
-#ifndef XSpi_mIntrGetEnabled
-#define XSpi_mIntrGetEnabled XSpi_IntrGetEnabled
-#endif
-
-#ifndef XSpi_mSetControlReg
-#define XSpi_mSetControlReg XSpi_SetControlReg
-#endif
-
-#ifndef XSpi_mGetControlReg
-#define XSpi_mGetControlReg XSpi_GetControlReg
-#endif
-
-#ifndef XSpi_mGetStatusReg
-#define XSpi_mGetStatusReg XSpi_GetStatusReg
-#endif
-
-#ifndef XSpi_mSetSlaveSelectReg
-#define XSpi_mSetSlaveSelectReg XSpi_SetSlaveSelectReg
-#endif
-
-#ifndef XSpi_mGetSlaveSelectReg
-#define XSpi_mGetSlaveSelectReg XSpi_GetSlaveSelectReg
-#endif
-
-#ifndef XSpi_mEnable
-#define XSpi_mEnable XSpi_Enable
-#endif
-
-#ifndef XSpi_mDisable
-#define XSpi_mDisable XSpi_Disable
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XSysAce
- *
- *********************************************************************/
-#ifndef XSysAce_mGetControlReg
-#define XSysAce_mGetControlReg XSysAce_GetControlReg
-#endif
-
-#ifndef XSysAce_mSetControlReg
-#define XSysAce_mSetControlReg XSysAce_SetControlReg
-#endif
-
-#ifndef XSysAce_mOrControlReg
-#define XSysAce_mOrControlReg XSysAce_OrControlReg
-#endif
-
-#ifndef XSysAce_mAndControlReg
-#define XSysAce_mAndControlReg XSysAce_AndControlReg
-#endif
-
-#ifndef XSysAce_mGetErrorReg
-#define XSysAce_mGetErrorReg XSysAce_GetErrorReg
-#endif
-
-#ifndef XSysAce_mGetStatusReg
-#define XSysAce_mGetStatusReg XSysAce_GetStatusReg
-#endif
-
-#ifndef XSysAce_mWaitForLock
-#define XSysAce_mWaitForLock XSysAce_WaitForLock
-#endif
-
-#ifndef XSysAce_mEnableIntr
-#define XSysAce_mEnableIntr XSysAce_EnableIntr
-#endif
-
-#ifndef XSysAce_mDisableIntr
-#define XSysAce_mDisableIntr XSysAce_DisableIntr
-#endif
-
-#ifndef XSysAce_mIsReadyForCmd
-#define XSysAce_mIsReadyForCmd XSysAce_IsReadyForCmd
-#endif
-
-#ifndef XSysAce_mIsMpuLocked
-#define XSysAce_mIsMpuLocked XSysAce_IsMpuLocked
-#endif
-
-#ifndef XSysAce_mIsIntrEnabled
-#define XSysAce_mIsIntrEnabled XSysAce_IsIntrEnabled
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XSysMon
- *
- *********************************************************************/
-#ifndef XSysMon_mIsEventSamplingModeSet
-#define XSysMon_mIsEventSamplingModeSet XSysMon_IsEventSamplingModeSet
-#endif
-
-#ifndef XSysMon_mIsDrpBusy
-#define XSysMon_mIsDrpBusy XSysMon_IsDrpBusy
-#endif
-
-#ifndef XSysMon_mIsDrpLocked
-#define XSysMon_mIsDrpLocked XSysMon_IsDrpLocked
-#endif
-
-#ifndef XSysMon_mRawToTemperature
-#define XSysMon_mRawToTemperature XSysMon_RawToTemperature
-#endif
-
-#ifndef XSysMon_mRawToVoltage
-#define XSysMon_mRawToVoltage XSysMon_RawToVoltage
-#endif
-
-#ifndef XSysMon_mTemperatureToRaw
-#define XSysMon_mTemperatureToRaw XSysMon_TemperatureToRaw
-#endif
-
-#ifndef XSysMon_mVoltageToRaw
-#define XSysMon_mVoltageToRaw XSysMon_VoltageToRaw
-#endif
-
-#ifndef XSysMon_mReadReg
-#define XSysMon_mReadReg XSysMon_ReadReg
-#endif
-
-#ifndef XSysMon_mWriteReg
-#define XSysMon_mWriteReg XSysMon_WriteReg
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XTmrCtr
- *
- *********************************************************************/
-#ifndef XTimerCtr_mReadReg
-#define XTimerCtr_mReadReg XTimerCtr_ReadReg
-#endif
-
-#ifndef XTmrCtr_mWriteReg
-#define XTmrCtr_mWriteReg XTmrCtr_WriteReg
-#endif
-
-#ifndef XTmrCtr_mSetControlStatusReg
-#define XTmrCtr_mSetControlStatusReg XTmrCtr_SetControlStatusReg
-#endif
-
-#ifndef XTmrCtr_mGetControlStatusReg
-#define XTmrCtr_mGetControlStatusReg XTmrCtr_GetControlStatusReg
-#endif
-
-#ifndef XTmrCtr_mGetTimerCounterReg
-#define XTmrCtr_mGetTimerCounterReg XTmrCtr_GetTimerCounterReg
-#endif
-
-#ifndef XTmrCtr_mSetLoadReg
-#define XTmrCtr_mSetLoadReg XTmrCtr_SetLoadReg
-#endif
-
-#ifndef XTmrCtr_mGetLoadReg
-#define XTmrCtr_mGetLoadReg XTmrCtr_GetLoadReg
-#endif
-
-#ifndef XTmrCtr_mEnable
-#define XTmrCtr_mEnable XTmrCtr_Enable
-#endif
-
-#ifndef XTmrCtr_mDisable
-#define XTmrCtr_mDisable XTmrCtr_Disable
-#endif
-
-#ifndef XTmrCtr_mEnableIntr
-#define XTmrCtr_mEnableIntr XTmrCtr_EnableIntr
-#endif
-
-#ifndef XTmrCtr_mDisableIntr
-#define XTmrCtr_mDisableIntr XTmrCtr_DisableIntr
-#endif
-
-#ifndef XTmrCtr_mLoadTimerCounterReg
-#define XTmrCtr_mLoadTimerCounterReg XTmrCtr_LoadTimerCounterReg
-#endif
-
-#ifndef XTmrCtr_mHasEventOccurred
-#define XTmrCtr_mHasEventOccurred XTmrCtr_HasEventOccurred
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XUartLite
- *
- *********************************************************************/
-#ifndef XUartLite_mUpdateStats
-#define XUartLite_mUpdateStats XUartLite_UpdateStats
-#endif
-
-#ifndef XUartLite_mWriteReg
-#define XUartLite_mWriteReg XUartLite_WriteReg
-#endif
-
-#ifndef XUartLite_mReadReg
-#define XUartLite_mReadReg XUartLite_ReadReg
-#endif
-
-#ifndef XUartLite_mClearStats
-#define XUartLite_mClearStats XUartLite_ClearStats
-#endif
-
-#ifndef XUartLite_mSetControlReg
-#define XUartLite_mSetControlReg XUartLite_SetControlReg
-#endif
-
-#ifndef XUartLite_mGetStatusReg
-#define XUartLite_mGetStatusReg XUartLite_GetStatusReg
-#endif
-
-#ifndef XUartLite_mIsReceiveEmpty
-#define XUartLite_mIsReceiveEmpty XUartLite_IsReceiveEmpty
-#endif
-
-#ifndef XUartLite_mIsTransmitFull
-#define XUartLite_mIsTransmitFull XUartLite_IsTransmitFull
-#endif
-
-#ifndef XUartLite_mIsIntrEnabled
-#define XUartLite_mIsIntrEnabled XUartLite_IsIntrEnabled
-#endif
-
-#ifndef XUartLite_mEnableIntr
-#define XUartLite_mEnableIntr XUartLite_EnableIntr
-#endif
-
-#ifndef XUartLite_mDisableIntr
-#define XUartLite_mDisableIntr XUartLite_DisableIntr
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XUartNs550
- *
- *********************************************************************/
-#ifndef XUartNs550_mUpdateStats
-#define XUartNs550_mUpdateStats XUartNs550_UpdateStats
-#endif
-
-#ifndef XUartNs550_mReadReg
-#define XUartNs550_mReadReg XUartNs550_ReadReg
-#endif
-
-#ifndef XUartNs550_mWriteReg
-#define XUartNs550_mWriteReg XUartNs550_WriteReg
-#endif
-
-#ifndef XUartNs550_mClearStats
-#define XUartNs550_mClearStats XUartNs550_ClearStats
-#endif
-
-#ifndef XUartNs550_mGetLineStatusReg
-#define XUartNs550_mGetLineStatusReg XUartNs550_GetLineStatusReg
-#endif
-
-#ifndef XUartNs550_mGetLineControlReg
-#define XUartNs550_mGetLineControlReg XUartNs550_GetLineControlReg
-#endif
-
-#ifndef XUartNs550_mSetLineControlReg
-#define XUartNs550_mSetLineControlReg XUartNs550_SetLineControlReg
-#endif
-
-#ifndef XUartNs550_mEnableIntr
-#define XUartNs550_mEnableIntr XUartNs550_EnableIntr
-#endif
-
-#ifndef XUartNs550_mDisableIntr
-#define XUartNs550_mDisableIntr XUartNs550_DisableIntr
-#endif
-
-#ifndef XUartNs550_mIsReceiveData
-#define XUartNs550_mIsReceiveData XUartNs550_IsReceiveData
-#endif
-
-#ifndef XUartNs550_mIsTransmitEmpty
-#define XUartNs550_mIsTransmitEmpty XUartNs550_IsTransmitEmpty
-#endif
-
-/*********************************************************************/
-/**
- * Macros for Driver XUsb
- *
- *********************************************************************/
-#ifndef XUsb_mReadReg
-#define XUsb_mReadReg XUsb_ReadReg
-#endif
-
-#ifndef XUsb_mWriteReg
-#define XUsb_mWriteReg XUsb_WriteReg
-#endif
-
-#endif
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_testio.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_testio.h
deleted file mode 100644
index 2fd4d5790..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_testio.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xil_testmemend.h
-*
-* This file contains utility functions to teach endian related memory
-* IO functions.
-*
-* Memory test description
-*
-* A subset of the memory tests can be selected or all of the tests can be run
-* in order. If there is an error detected by a subtest, the test stops and the
-* failure code is returned. Further tests are not run even if all of the tests
-* are selected.
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -----------------------------------------------
-* 1.00 hbm 08/05/09 First release
-*
-*
-******************************************************************************/
-
-#ifndef XIL_TESTIO_H /* prevent circular inclusions */
-#define XIL_TESTIO_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-#include "xil_types.h"
-
-/************************** Constant Definitions *****************************/
-
-
-#define XIL_TESTIO_DEFAULT 0
-#define XIL_TESTIO_LE 1
-#define XIL_TESTIO_BE 2
-
-/**************************** Type Definitions *******************************/
-
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-
-/************************** Function Prototypes ******************************/
-
-extern s32 Xil_TestIO8(u8 *Addr, s32 Length, u8 Value);
-extern s32 Xil_TestIO16(u16 *Addr, s32 Length, u16 Value, s32 Kind, s32 Swap);
-extern s32 Xil_TestIO32(u32 *Addr, s32 Length, u32 Value, s32 Kind, s32 Swap);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_testmem.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_testmem.h
deleted file mode 100644
index 1b67a5214..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_testmem.h
+++ /dev/null
@@ -1,162 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xil_testmem.h
-*
-* This file contains utility functions to test memory.
-*
-* Memory test description
-*
-* A subset of the memory tests can be selected or all of the tests can be run
-* in order. If there is an error detected by a subtest, the test stops and the
-* failure code is returned. Further tests are not run even if all of the tests
-* are selected.
-*
-* Subtest descriptions:
-*
-* XIL_TESTMEM_ALLMEMTESTS:
-* Runs all of the following tests
-*
-* XIL_TESTMEM_INCREMENT:
-* Incrementing Value Test.
-* This test starts at 'XIL_TESTMEM_INIT_VALUE' and uses the
-* incrementing value as the test value for memory.
-*
-* XIL_TESTMEM_WALKONES:
-* Walking Ones Test.
-* This test uses a walking '1' as the test value for memory.
-* location 1 = 0x00000001
-* location 2 = 0x00000002
-* ...
-*
-* XIL_TESTMEM_WALKZEROS:
-* Walking Zero's Test.
-* This test uses the inverse value of the walking ones test
-* as the test value for memory.
-* location 1 = 0xFFFFFFFE
-* location 2 = 0xFFFFFFFD
-* ...
-*
-* XIL_TESTMEM_INVERSEADDR:
-* Inverse Address Test.
-* This test uses the inverse of the address of the location under test
-* as the test value for memory.
-*
-* XIL_TESTMEM_FIXEDPATTERN:
-* Fixed Pattern Test.
-* This test uses the provided patters as the test value for memory.
-* If zero is provided as the pattern the test uses '0xDEADBEEF".
-*
-*
-* WARNING
-*
-* The tests are DESTRUCTIVE. Run before any initialized memory spaces
-* have been set up.
-*
-* The address provided to the memory tests is not checked for
-* validity except for the NULL case. It is possible to provide a code-space
-* pointer for this test to start with and ultimately destroy executable code
-* causing random failures.
-*
-* @note
-*
-* Used for spaces where the address range of the region is smaller than
-* the data width. If the memory range is greater than 2 ** width,
-* the patterns used in XIL_TESTMEM_WALKONES and XIL_TESTMEM_WALKZEROS will
-* repeat on a boundry of a power of two making it more difficult to detect
-* addressing errors. The XIL_TESTMEM_INCREMENT and XIL_TESTMEM_INVERSEADDR
-* tests suffer the same problem. Ideally, if large blocks of memory are to be
-* tested, break them up into smaller regions of memory to allow the test
-* patterns used not to repeat over the region tested.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -----------------------------------------------
-* 1.00a hbm 08/25/09 First release
-*
-*
-******************************************************************************/
-
-#ifndef XIL_TESTMEM_H /* prevent circular inclusions */
-#define XIL_TESTMEM_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-#include "xil_types.h"
-
-/************************** Constant Definitions *****************************/
-
-
-/**************************** Type Definitions *******************************/
-
-/* xutil_memtest defines */
-
-#define XIL_TESTMEM_INIT_VALUE 1U
-
-/** @name Memory subtests
- * @{
- */
-/**
- * See the detailed description of the subtests in the file description.
- */
-#define XIL_TESTMEM_ALLMEMTESTS 0x00U
-#define XIL_TESTMEM_INCREMENT 0x01U
-#define XIL_TESTMEM_WALKONES 0x02U
-#define XIL_TESTMEM_WALKZEROS 0x03U
-#define XIL_TESTMEM_INVERSEADDR 0x04U
-#define XIL_TESTMEM_FIXEDPATTERN 0x05U
-#define XIL_TESTMEM_MAXTEST XIL_TESTMEM_FIXEDPATTERN
-/* @} */
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-
-/************************** Function Prototypes ******************************/
-
-/* xutil_testmem prototypes */
-
-extern s32 Xil_TestMem32(u32 *Addr, u32 Words, u32 Pattern, u8 Subtest);
-extern s32 Xil_TestMem16(u16 *Addr, u32 Words, u16 Pattern, u8 Subtest);
-extern s32 Xil_TestMem8(u8 *Addr, u32 Words, u8 Pattern, u8 Subtest);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xipipsu.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xipipsu.h
deleted file mode 100644
index 81edd534d..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xipipsu.h
+++ /dev/null
@@ -1,277 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
- * @file xipipsu.h
- *
- * This is the header file for implementation of IPIPSU driver.
- * Inter Processor Interrupt (IPI) is used for communication between
- * different processors on ZynqMP SoC. Each IPI register set has Trigger, Status
- * and Observation registers for communication between processors. Each IPI path
- * has a 32 byte buffer associated with it and these buffers are located in the
- * XPPU RAM. This driver supports the following operations:
- *
- * - Trigger IPIs to CPUs on the SoC
- * - Write and Read Message buffers
- * - Read the status of Observation Register to get status of Triggered IPI
- * - Enable/Disable IPIs from selected Masters
- * - Read the Status register to get the source of an incoming IPI
- *
- * Initialization
- * The config data for the driver is loaded and is based on the HW build. The
- * XIpiPsu_Config data structure contains all the data related to the
- * IPI driver instance and also teh available Target CPUs.
- *
- * Sending an IPI
- * The following steps can be followed to send an IPI:
- * - Write the Message into Message Buffer using XIpiPsu_WriteMessage()
- * - Trigger IPI using XIpiPsu_TriggerIpi()
- * - Wait for Ack using XIpiPsu_PollForAck()
- * - Read response using XIpiPsu_ReadMessage()
- *
- * @note XIpiPsu_GetObsStatus() before sending an IPI to ensure that the
- * previous IPI was serviced by the target
- *
- * Receiving an IPI
- * To receive an IPI, the following sequence can be followed:
- * - Register an interrupt handler for the IPIs interrupt ID
- * - Enable the required sources using XIpiPsu_InterruptEnable()
- * - In the interrupt handler, Check for source using XIpiPsu_GetInterruptStatus
- * - Read the message form source using XIpiPsu_ReadMessage()
- * - Write the response using XIpiPsu_WriteMessage()
- * - Ack the IPI using XIpiPsu_ClearInterruptStatus()
- *
- * @note XIpiPsu_Reset can be used at startup to clear the status and
- * disable all sources
- *
- */
-/*****************************************************************************/
-#ifndef XIPIPSU_H_
-#define XIPIPSU_H_
-
-
-/***************************** Include Files *********************************/
-#include "xil_io.h"
-#include "xstatus.h"
-#include "xipipsu_hw.h"
-
-/************************** Constant Definitions *****************************/
-#define XIPIPSU_BUF_TYPE_MSG (0x00000001U)
-#define XIPIPSU_BUF_TYPE_RESP (0x00000002U)
-#define XIPIPSU_MAX_MSG_LEN XIPIPSU_MSG_BUF_SIZE
-/**************************** Type Definitions *******************************/
-/**
- * Data structure used to refer IPI Targets
- */
-typedef struct {
- u32 Mask; /**< Bit Mask for the target */
- u32 BufferIndex; /**< Buffer Index used for calculating buffer address */
-} XIpiPsu_Target;
-
-/**
- * This typedef contains configuration information for the device.
- */
-typedef struct {
- u32 DeviceId; /**< Unique ID of device */
- u32 BaseAddress; /**< Base address of the device */
- u32 BitMask; /**< BitMask to be used to identify this CPU */
- u32 BufferIndex; /**< Index of the IPI Message Buffer */
- u32 IntId; /**< Interrupt ID on GIC **/
- u32 TargetCount; /**< Number of available IPI Targets */
- XIpiPsu_Target TargetList[XIPIPSU_MAX_TARGETS] ; /** < List of IPI Targets */
-} XIpiPsu_Config;
-
-/**
- * The XIpiPsu driver instance data. The user is required to allocate a
- * variable of this type for each IPI device in the system. A pointer
- * to a variable of this type is then passed to the driver API functions.
- */
-typedef struct {
- XIpiPsu_Config Config; /**< Configuration structure */
- u32 IsReady; /**< Device is initialized and ready */
- u32 Options; /**< Options set in the device */
-} XIpiPsu;
-
-/***************** Macros (Inline Functions) Definitions *********************/
-/**
-*
-* Read the register specified by the base address and offset
-*
-* @param BaseAddress is the base address of the IPI instance
-* @param RegOffset is the offset of the register relative to base
-*
-* @return Value of the specified register
-* @note
-* C-style signature
-* u32 XIpiPsu_ReadReg(u32 BaseAddress, u32 RegOffset)
-*
-*****************************************************************************/
-
-#define XIpiPsu_ReadReg(BaseAddress, RegOffset) \
- Xil_In32((BaseAddress) + (RegOffset))
-
-/****************************************************************************/
-/**
-*
-* Write a value into a register specified by base address and offset
-*
-* @param BaseAddress is the base address of the IPI instance
-* @param RegOffset is the offset of the register relative to base
-* @param Data is a 32-bit value that is to be written into the specified register
-*
-* @note
-* C-style signature
-* void XIpiPsu_WriteReg(u32 BaseAddress, u32 RegOffset, u32 Data)
-*
-*****************************************************************************/
-
-#define XIpiPsu_WriteReg(BaseAddress, RegOffset, Data) \
- Xil_Out32(((BaseAddress) + (RegOffset)), (Data))
-
-/****************************************************************************/
-/**
-*
-* Enable interrupts specified in Mask. The corresponding interrupt for
-* each bit set to 1 in Mask, will be enabled.
-*
-* @param InstancePtr is a pointer to the instance to be worked on.
-* @param Mask contains a bit mask of interrupts to enable. The mask can
-* be formed using a set of bitwise or'd values of individual CPU masks
-*
-* @note
-* C-style signature
-* void XIpiPsu_InterruptEnable(XIpiPsu *InstancePtr, u32 Mask)
-*
-*****************************************************************************/
-#define XIpiPsu_InterruptEnable(InstancePtr, Mask) \
- XIpiPsu_WriteReg((InstancePtr)->Config.BaseAddress, \
- XIPIPSU_IER_OFFSET, \
- ((Mask) & XIPIPSU_ALL_MASK));
-
-/****************************************************************************/
-/**
-*
-* Disable interrupts specified in Mask. The corresponding interrupt for
-* each bit set to 1 in Mask, will be disabled.
-*
-* @param InstancePtr is a pointer to the instance to be worked on.
-* @param Mask contains a bit mask of interrupts to disable. The mask can
-* be formed using a set of bitwise or'd values of individual CPU masks
-*
-* @note
-* C-style signature
-* void XIpiPsu_InterruptDisable(XIpiPsu *InstancePtr, u32 Mask)
-*
-*****************************************************************************/
-#define XIpiPsu_InterruptDisable(InstancePtr, Mask) \
- XIpiPsu_WriteReg((InstancePtr)->Config.BaseAddress, \
- XIPIPSU_IDR_OFFSET, \
- ((Mask) & XIPIPSU_ALL_MASK));
-/****************************************************************************/
-/**
-*
-* Get the STATUS REGISTER of the current IPI instance.
-*
-* @param InstancePtr is a pointer to the instance to be worked on.
-* @return Returns the Interrupt Status register(ISR) contents
-* @note User needs to parse this 32-bit value to check the source CPU
-* C-style signature
-* u32 XIpiPsu_GetInterruptStatus(XIpiPsu *InstancePtr)
-*
-*****************************************************************************/
-#define XIpiPsu_GetInterruptStatus(InstancePtr) \
- XIpiPsu_ReadReg((InstancePtr)->Config.BaseAddress, \
- XIPIPSU_ISR_OFFSET)
-/****************************************************************************/
-/**
-*
-* Clear the STATUS REGISTER of the current IPI instance.
-* The corresponding interrupt status for
-* each bit set to 1 in Mask, will be cleared
-*
-* @param InstancePtr is a pointer to the instance to be worked on.
-* @param Mask corresponding to the source CPU*
-*
-* @note This function should be used after handling the IPI.
-* Clearing the status will automatically clear the corresponding bit in
-* OBSERVATION register of Source CPU
-* C-style signature
-* void XIpiPsu_ClearInterruptStatus(XIpiPsu *InstancePtr, u32 Mask)
-*
-*****************************************************************************/
-
-#define XIpiPsu_ClearInterruptStatus(InstancePtr, Mask) \
- XIpiPsu_WriteReg((InstancePtr)->Config.BaseAddress, \
- XIPIPSU_ISR_OFFSET, \
- ((Mask) & XIPIPSU_ALL_MASK));
-/****************************************************************************/
-/**
-*
-* Get the OBSERVATION REGISTER of the current IPI instance.
-*
-* @param InstancePtr is a pointer to the instance to be worked on.
-* @return Returns the Observation register(OBS) contents
-* @note User needs to parse this 32-bit value to check the status of
-* individual CPUs
-* C-style signature
-* u32 XIpiPsu_GetObsStatus(XIpiPsu *InstancePtr)
-*
-*****************************************************************************/
-#define XIpiPsu_GetObsStatus(InstancePtr) \
- XIpiPsu_ReadReg((InstancePtr)->Config.BaseAddress, \
- XIPIPSU_OBS_OFFSET)
-/****************************************************************************/
-/************************** Function Prototypes *****************************/
-
-/* Static lookup function implemented in xipipsu_sinit.c */
-
-XIpiPsu_Config *XIpiPsu_LookupConfig(u32 DeviceId);
-
-/* Interface Functions implemented in xipipsu.c */
-
-XStatus XIpiPsu_CfgInitialize(XIpiPsu *InstancePtr, XIpiPsu_Config * CfgPtr,
- UINTPTR EffectiveAddress);
-
-void XIpiPsu_Reset(XIpiPsu *InstancePtr);
-
-XStatus XIpiPsu_TriggerIpi(XIpiPsu *InstancePtr, u32 DestCpuMask);
-
-XStatus XIpiPsu_PollForAck(XIpiPsu *InstancePtr, u32 DestCpuMask,
- u32 TimeOutCount);
-
-XStatus XIpiPsu_ReadMessage(XIpiPsu *InstancePtr, u32 SrcCpuMask, u32 *MsgPtr,
- u32 MsgLength, u8 BufType);
-
-XStatus XIpiPsu_WriteMessage(XIpiPsu *InstancePtr, u32 DestCpuMask, u32 *MsgPtr,
- u32 MsgLength, u8 BufType);
-
-#endif /* XIPIPSU_H_ */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xipipsu_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xipipsu_hw.h
deleted file mode 100644
index 2f3fb0830..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xipipsu_hw.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/**
-*
-* @file xipipsu_hw.h
-*
-* This file contains macro definitions for low level HW related params
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- --- -------- -----------------------------------------------.
-* 1.0 mjr 03/15/15 First release
-*
-*
-*
-******************************************************************************/
-#ifndef XIPIPSU_HW_H_ /* prevent circular inclusions */
-#define XIPIPSU_HW_H_ /* by using protection macros */
-
-/************************** Constant Definitions *****************************/
-/* Message RAM related params */
-#define XIPIPSU_MSG_RAM_BASE 0xFF990000U
-#define XIPIPSU_MSG_BUF_SIZE 8U /* Size in Words */
-#define XIPIPSU_MAX_BUFF_INDEX 7
-
-/* EIGHT pairs of TWO buffers(msg+resp) of THIRTY TWO bytes each */
-#define XIPIPSU_BUFFER_OFFSET_GROUP (8U * 2U * 32U)
-#define XIPIPSU_BUFFER_OFFSET_TARGET (32U * 2U)
-#define XIPIPSU_BUFFER_OFFSET_RESPONSE (32U)
-
-/* Max Number of IPI slots on the device */
-#define XIPIPSU_MAX_TARGETS 11
-
-/* Register Offsets for each member of IPI Register Set */
-#define XIPIPSU_TRIG_OFFSET 0x00U
-#define XIPIPSU_OBS_OFFSET 0x04U
-#define XIPIPSU_ISR_OFFSET 0x10U
-#define XIPIPSU_IMR_OFFSET 0x14U
-#define XIPIPSU_IER_OFFSET 0x18U
-#define XIPIPSU_IDR_OFFSET 0x1CU
-
-/* MASK of all valid IPI bits in above registers */
-#define XIPIPSU_ALL_MASK 0x0F0F0301U
-
-#endif /* XIPIPSU_HW_H_ */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu.h
deleted file mode 100644
index 134116f2b..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu.h
+++ /dev/null
@@ -1,584 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xnandpsu.h
-*
-* This file implements a driver to support Arasan NAND controller
-* present in Zynq Ultrascale Mp.
-*
-* Driver Initialization
-*
-* The function call XNandPsu_CfgInitialize() should be called by the application
-* before any other function in the driver. The initialization function takes
-* device specific data (like device id, instance id, and base address) and
-* initializes the XNandPsu instance with the device specific data.
-*
-* Device Geometry
-*
-* NAND flash device is memory device and it is segmented into areas called
-* Logical Unit(s) (LUN) and further in to blocks and pages. A NAND flash device
-* can have multiple LUN. LUN is sequential raw of multiple blocks of the same
-* size. A block is the smallest erasable unit of data within the Flash array of
-* a LUN. The size of each block is based on a power of 2. There is no
-* restriction on the number of blocks within the LUN. A block contains a number
-* of pages. A page is the smallest addressable unit for read and program
-* operations. The arrangement of LUN, blocks, and pages is referred to by this
-* module as the part's geometry.
-*
-* The cells within the part can be programmed from a logic 1 to a logic 0
-* and not the other way around. To change a cell back to a logic 1, the
-* entire block containing that cell must be erased. When a block is erased
-* all bytes contain the value 0xFF. The number of times a block can be
-* erased is finite. Eventually the block will wear out and will no longer
-* be capable of erasure. As of this writing, the typical flash block can
-* be erased 100,000 or more times.
-*
-* The jobs done by this driver typically are:
-* - 8-bit operational mode
-* - Read, Write, and Erase operation
-*
-* Write Operation
-*
-* The write call can be used to write a minimum of one byte and a maximum
-* entire flash. If the address offset specified to write is out of flash or if
-* the number of bytes specified from the offset exceed flash boundaries
-* an error is reported back to the user. The write is blocking in nature in that
-* the control is returned back to user only after the write operation is
-* completed successfully or an error is reported.
-*
-* Read Operation
-*
-* The read call can be used to read a minimum of one byte and maximum of
-* entire flash. If the address offset specified to read is out of flash or if
-* the number of bytes specified from the offset exceed flash boundaries
-* an error is reported back to the user. The read is blocking in nature in that
-* the control is returned back to user only after the read operation is
-* completed successfully or an error is reported.
-*
-* Erase Operation
-*
-* The erase operations are provided to erase a Block in the Flash memory. The
-* erase call is blocking in nature in that the control is returned back to user
-* only after the erase operation is completed successfully or an error is
-* reported.
-*
-* @note Driver has been renamed to nandpsu after change in
-* naming convention.
-*
-* This driver is intended to be RTOS and processor independent. It works with
-* physical addresses only. Any needs for dynamic memory management, threads,
-* mutual exclusion, virtual memory, cache control, or HW write protection
-* management must be satisfied by the layer above this driver.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- ---------- -----------------------------------------------
-* 1.0 nm 05/06/2014 First release
-* 2.0 sb 01/12/2015 Removed Null checks for Buffer passed
-* as parameter to Read API's
-* - XNandPsu_Read()
-* - XNandPsu_ReadPage
-* Modified
-* - XNandPsu_SetFeature()
-* - XNandPsu_GetFeature()
-* and made them public.
-* Removed Failure Return for BCF Error check in
-* XNandPsu_ReadPage() and added BCH_Error counter
-* in the instance pointer structure.
-* Added XNandPsu_Prepare_Cmd API
-* Replaced
-* - XNandPsu_IntrStsEnable
-* - XNandPsu_IntrStsClear
-* - XNandPsu_IntrClear
-* - XNandPsu_SetProgramReg
-* with XNandPsu_WriteReg call
-* Modified xnandpsu.c file API's with above changes.
-* Corrected the program command for Set Feature API.
-* Modified
-* - XNandPsu_OnfiReadStatus
-* - XNandPsu_GetFeature
-* - XNandPsu_SetFeature
-* to add support for DDR mode.
-* Changed Convention for SLC/MLC
-* SLC --> HAMMING
-* MLC --> BCH
-* SlcMlc --> IsBCH
-* Added support for writing BBT signature and version
-* in page section by enabling XNANDPSU_BBT_NO_OOB.
-* Removed extra DMA mode initialization from
-* the XNandPsu_CfgInitialize API.
-* Modified
-* - XNandPsu_SetEccAddrSize
-* ECC address now is calculated based upon the
-* size of spare area
-* Modified Block Erase API, removed clearing of
-* packet register before erase.
-* Clearing Data Interface Register before
-* XNandPsu_OnfiReset call.
-* Modified XNandPsu_ChangeTimingMode API supporting
-* SDR and NVDDR interface for timing modes 0 to 5.
-* Modified Bbt Signature and Version Offset value for
-* Oob and No-Oob region.
-*
-*
-******************************************************************************/
-
-#ifndef XNANDPSU_H /* prevent circular inclusions */
-#define XNANDPSU_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-#include "xil_types.h"
-#include
-#include "xstatus.h"
-#include "xil_assert.h"
-#include "xnandpsu_hw.h"
-#include "xnandpsu_onfi.h"
-#include "xil_cache.h"
-/************************** Constant Definitions *****************************/
-
-#define XNANDPSU_DEBUG
-
-#define XNANDPSU_MAX_TARGETS 1U /**< ce_n0, ce_n1 */
-#define XNANDPSU_MAX_PKT_SIZE 0x7FFU /**< Max packet size */
-#define XNANDPSU_MAX_PKT_COUNT 0xFFFU /**< Max packet count */
-
-#define XNANDPSU_PAGE_SIZE_512 512U /**< 512 bytes page */
-#define XNANDPSU_PAGE_SIZE_2K 2048U /**< 2K bytes page */
-#define XNANDPSU_PAGE_SIZE_4K 4096U /**< 4K bytes page */
-#define XNANDPSU_PAGE_SIZE_8K 8192U /**< 8K bytes page */
-#define XNANDPSU_PAGE_SIZE_16K 16384U /**< 16K bytes page */
-#define XNANDPSU_PAGE_SIZE_1K_16BIT 1024U /**< 16-bit 2K bytes page */
-#define XNANDPSU_MAX_PAGE_SIZE 16384U /**< Max page size supported */
-
-#define XNANDPSU_BUS_WIDTH_8 0U /**< 8-bit bus width */
-#define XNANDPSU_BUS_WIDTH_16 1U /**< 16-bit bus width */
-
-#define XNANDPSU_HAMMING 0x1U /**< Hamming Flash */
-#define XNANDPSU_BCH 0x2U /**< BCH Flash */
-
-#define XNANDPSU_MAX_BLOCKS 32768U /**< Max number of Blocks */
-#define XNANDPSU_MAX_SPARE_SIZE 0x800U /**< Max spare bytes of a NAND
- flash page of 16K */
-
-#define XNANDPSU_INTR_POLL_TIMEOUT 10000U
-
-#define XNANDPSU_SDR_CLK ((u16)100U * (u16)1000U * (u16)1000U)
-#define XNANDPSU_NVDDR_CLK_0 ((u16)20U * (u16)1000U * (u16)1000U)
-#define XNANDPSU_NVDDR_CLK_1 ((u16)33U * (u16)1000U * (u16)1000U)
-#define XNANDPSU_NVDDR_CLK_2 ((u16)50U * (u16)1000U * (u16)1000U)
-#define XNANDPSU_NVDDR_CLK_3 ((u16)66U * (u16)1000U * (u16)1000U)
-#define XNANDPSU_NVDDR_CLK_4 ((u16)83U * (u16)1000U * (u16)1000U)
-#define XNANDPSU_NVDDR_CLK_5 ((u16)100U * (u16)1000U * (u16)1000U)
-
-/**
- * The XNandPsu_Config structure contains configuration information for NAND
- * controller.
- */
-typedef struct {
- u16 DeviceId; /**< Instance ID of NAND flash controller */
- u32 BaseAddress; /**< Base address of NAND flash controller */
-} XNandPsu_Config;
-
-/**
- * The XNandPsu_DataInterface enum contains flash operating mode.
- */
-typedef enum {
- XNANDPSU_SDR = 0U, /**< Single Data Rate */
- XNANDPSU_NVDDR /**< Double Data Rate */
-} XNandPsu_DataInterface;
-
-/**
- * XNandPsu_TimingMode enum contains timing modes.
- */
-typedef enum {
- XNANDPSU_SDR0 = 0U,
- XNANDPSU_SDR1,
- XNANDPSU_SDR2,
- XNANDPSU_SDR3,
- XNANDPSU_SDR4,
- XNANDPSU_SDR5,
- XNANDPSU_NVDDR0,
- XNANDPSU_NVDDR1,
- XNANDPSU_NVDDR2,
- XNANDPSU_NVDDR3,
- XNANDPSU_NVDDR4,
- XNANDPSU_NVDDR5
-} XNandPsu_TimingMode;
-
-/**
- * The XNandPsu_SWMode enum contains the driver operating mode.
- */
-typedef enum {
- XNANDPSU_POLLING = 0, /**< Polling */
- XNANDPSU_INTERRUPT /**< Interrupt */
-} XNandPsu_SWMode;
-
-/**
- * The XNandPsu_DmaMode enum contains the controller MDMA mode.
- */
-typedef enum {
- XNANDPSU_PIO = 0, /**< PIO Mode */
- XNANDPSU_SDMA, /**< SDMA Mode */
- XNANDPSU_MDMA /**< MDMA Mode */
-} XNandPsu_DmaMode;
-
-/**
- * The XNandPsu_EccMode enum contains ECC functionality.
- */
-typedef enum {
- XNANDPSU_NONE = 0,
- XNANDPSU_HWECC,
- XNANDPSU_EZNAND,
- XNANDPSU_ONDIE
-} XNandPsu_EccMode;
-
-/**
- * The XNandPsu_BbtOption enum contains the BBT storage option.
- */
-typedef enum {
- XNANDPSU_BBT_OOB = 0, /**< OOB area */
- XNANDPSU_BBT_NO_OOB, /**< No OOB i.e page area */
-} XNandPsu_BbtOption;
-
-/**
- * Bad block table descriptor
- */
-typedef struct {
- u32 PageOffset[XNANDPSU_MAX_TARGETS];
- /**< Page offset where BBT resides */
- u32 SigOffset; /**< Signature offset in Spare area */
- u32 VerOffset; /**< Offset of BBT version */
- u32 SigLength; /**< Length of the signature */
- u32 MaxBlocks; /**< Max blocks to search for BBT */
- char Signature[4]; /**< BBT signature */
- u8 Version[XNANDPSU_MAX_TARGETS];
- /**< BBT version */
- u32 Valid; /**< BBT descriptor is valid or not */
- XNandPsu_BbtOption Option; /**< BBT Oob option enabled/disabled */
-} XNandPsu_BbtDesc;
-
-/**
- * Bad block pattern
- */
-typedef struct {
- u32 Options; /**< Options to search the bad block pattern */
- u32 Offset; /**< Offset to search for specified pattern */
- u32 Length; /**< Number of bytes to check the pattern */
- u8 Pattern[2]; /**< Pattern format to search for */
-} XNandPsu_BadBlockPattern;
-
-/**
- * The XNandPsu_Geometry structure contains the ONFI geometry information.
- */
-typedef struct {
- /*
- * Parameter page information
- */
- u32 BytesPerPage; /**< Number of bytes per page */
- u16 SpareBytesPerPage; /**< Number of spare bytes per page */
- u32 PagesPerBlock; /**< Number of pages per block */
- u32 BlocksPerLun; /**< Number of blocks per LUN */
- u8 NumLuns; /**< Number of LUN's */
- u8 RowAddrCycles; /**< Row address cycles */
- u8 ColAddrCycles; /**< Column address cycles */
- u8 NumBitsPerCell; /**< Number of bits per cell (Hamming/BCH) */
- u8 NumBitsECC; /**< Number of bits ECC correctability */
- u32 EccCodeWordSize; /**< ECC codeword size */
- /*
- * Driver specific information
- */
- u32 BlockSize; /**< Block size */
- u32 NumTargetPages; /**< Total number of pages in a Target */
- u32 NumTargetBlocks; /**< Total number of blocks in a Target */
- u64 TargetSize; /**< Target size in bytes */
- u8 NumTargets; /**< Number of targets present */
- u32 NumPages; /**< Total number of pages */
- u32 NumBlocks; /**< Total number of blocks */
- u64 DeviceSize; /**< Total flash size in bytes */
-} XNandPsu_Geometry;
-
-/**
- * The XNandPsu_Features structure contains the ONFI features information.
- */
-typedef struct {
- u32 BusWidth;
- u32 NvDdr;
- u32 EzNand;
- u32 OnDie;
- u32 ExtPrmPage;
-} XNandPsu_Features;
-
-/**
- * The XNandPsu_EccMatrix structure contains ECC features information.
- */
-typedef struct {
- u16 PageSize;
- u16 CodeWordSize;
- u8 NumEccBits;
- u8 IsBCH;
- u16 EccAddr;
- u16 EccSize;
-} XNandPsu_EccMatrix;
-
-/**
- * The XNandPsu_EccCfg structure contains ECC configuration.
- */
-typedef struct {
- u16 EccAddr;
- u16 EccSize;
- u16 CodeWordSize;
- u8 NumEccBits;
- u8 IsBCH;
-} XNandPsu_EccCfg;
-
-/**
- * The XNandPsu structure contains the driver instance data. The user is
- * required to allocate a variable of this type for the NAND controller.
- * A pointer to a variable of this type is then passed to the driver API
- * functions.
- */
-typedef struct {
- u32 IsReady; /**< Device is initialized and ready */
- XNandPsu_Config Config;
- u16 Ecc_Stat_PerPage_flips; /**< Ecc Correctable Error Counter for Current Page */
- u32 Ecc_Stats_total_flips; /**< Total Ecc Errors Corrected */
- XNandPsu_DataInterface DataInterface;
- XNandPsu_TimingMode TimingMode;
- XNandPsu_SWMode Mode; /**< Driver operating mode */
- XNandPsu_DmaMode DmaMode; /**< MDMA mode enabled/disabled */
- XNandPsu_EccMode EccMode; /**< ECC Mode */
- XNandPsu_EccCfg EccCfg; /**< ECC configuration */
- XNandPsu_Geometry Geometry; /**< Flash geometry */
- XNandPsu_Features Features; /**< ONFI features */
- u8 PartialDataBuf[XNANDPSU_MAX_PAGE_SIZE] __attribute__ ((aligned(64)));
- /**< Partial read/write buffer */
- /* Bad block table definitions */
- XNandPsu_BbtDesc BbtDesc; /**< Bad block table descriptor */
- XNandPsu_BbtDesc BbtMirrorDesc; /**< Mirror BBT descriptor */
- XNandPsu_BadBlockPattern BbPattern; /**< Bad block pattern to
- search */
- u8 Bbt[XNANDPSU_MAX_BLOCKS >> 2]; /**< Bad block table array */
-} XNandPsu;
-
-/******************* Macro Definitions (Inline Functions) *******************/
-
-/*****************************************************************************/
-/**
- * This macro sets the bitmask in the register.
- *
- * @param InstancePtr is a pointer to the XNandPsu instance of the
- * controller.
- * @param RegOffset is the register offset.
- * @param BitMask is the bitmask.
- *
- * @note C-style signature:
- * void XNandPsu_SetBits(XNandPsu *InstancePtr, u32 RegOffset,
- * u32 BitMask)
- *
- *****************************************************************************/
-#define XNandPsu_SetBits(InstancePtr, RegOffset, BitMask) \
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress, \
- (RegOffset), \
- ((u32)(XNandPsu_ReadReg((InstancePtr)->Config.BaseAddress, \
- (RegOffset)) | (BitMask))))
-
-/*****************************************************************************/
-/**
- * This macro clears the bitmask in the register.
- *
- * @param InstancePtr is a pointer to the XNandPsu instance of the
- * controller.
- * @param RegOffset is the register offset.
- * @param BitMask is the bitmask.
- *
- * @note C-style signature:
- * void XNandPsu_ClrBits(XNandPsu *InstancePtr, u32 RegOffset,
- * u32 BitMask)
- *
- *****************************************************************************/
-#define XNandPsu_ClrBits(InstancePtr, RegOffset, BitMask) \
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress, \
- (RegOffset), \
- ((u32)(XNandPsu_ReadReg((InstancePtr)->Config.BaseAddress, \
- (RegOffset)) & ~(BitMask))))
-
-/*****************************************************************************/
-/**
- * This macro clears and updates the bitmask in the register.
- *
- * @param InstancePtr is a pointer to the XNandPsu instance of the
- * controller.
- * @param RegOffset is the register offset.
- * @param Mask is the bitmask.
- * @param Value is the register value to write.
- *
- * @note C-style signature:
- * void XNandPsu_ReadModifyWrite(XNandPsu *InstancePtr,
- * u32 RegOffset, u32 Mask, u32 Val)
- *
- *****************************************************************************/
-#define XNandPsu_ReadModifyWrite(InstancePtr, RegOffset, Mask, Value) \
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress, \
- (RegOffset), \
- ((u32)((u32)(XNandPsu_ReadReg((InstancePtr)->Config.BaseAddress,\
- (u32)(RegOffset)) & (u32)(~(Mask))) | (u32)(Value))))
-
-/*****************************************************************************/
-/**
- * This macro enables bitmask in Interrupt Signal Enable register.
- *
- * @param InstancePtr is a pointer to the XNandPsu instance of the
- * controller.
- * @param Mask is the bitmask.
- *
- * @note C-style signature:
- * void XNandPsu_IntrSigEnable(XNandPsu *InstancePtr, u32 Mask)
- *
- *****************************************************************************/
-#define XNandPsu_IntrSigEnable(InstancePtr, Mask) \
- XNandPsu_SetBits((InstancePtr), \
- XNANDPSU_INTR_SIG_EN_OFFSET, \
- (Mask))
-
-/*****************************************************************************/
-/**
- * This macro clears bitmask in Interrupt Signal Enable register.
- *
- * @param InstancePtr is a pointer to the XNandPsu instance of the
- * controller.
- * @param Mask is the bitmask.
- *
- * @note C-style signature:
- * void XNandPsu_IntrSigClear(XNandPsu *InstancePtr, u32 Mask)
- *
- *****************************************************************************/
-#define XNandPsu_IntrSigClear(InstancePtr, Mask) \
- XNandPsu_ClrBits((InstancePtr), \
- XNANDPSU_INTR_SIG_EN_OFFSET, \
- (Mask))
-
-/*****************************************************************************/
-/**
- * This macro enables bitmask in Interrupt Status Enable register.
- *
- * @param InstancePtr is a pointer to the XNandPsu instance of the
- * controller.
- * @param Mask is the bitmask.
- *
- * @note C-style signature:
- * void XNandPsu_IntrStsEnable(XNandPsu *InstancePtr, u32 Mask)
- *
- *****************************************************************************/
-#define XNandPsu_IntrStsEnable(InstancePtr, Mask) \
- XNandPsu_SetBits((InstancePtr), \
- XNANDPSU_INTR_STS_EN_OFFSET, \
- (Mask))
-
-/*****************************************************************************/
-/**
- * This macro checks for the ONFI ID.
- *
- * @param Buff is the buffer holding ONFI ID
- *
- * @note none.
- *
- *****************************************************************************/
-#define IS_ONFI(Buff) \
- (Buff[0] == (u8)'O') && (Buff[1] == (u8)'N') && \
- (Buff[2] == (u8)'F') && (Buff[3] == (u8)'I')
-
-/************************** Function Prototypes *****************************/
-
-s32 XNandPsu_CfgInitialize(XNandPsu *InstancePtr, XNandPsu_Config *ConfigPtr,
- u32 EffectiveAddr);
-
-s32 XNandPsu_Erase(XNandPsu *InstancePtr, u64 Offset, u64 Length);
-
-s32 XNandPsu_Write(XNandPsu *InstancePtr, u64 Offset, u64 Length,
- u8 *SrcBuf);
-
-s32 XNandPsu_Read(XNandPsu *InstancePtr, u64 Offset, u64 Length,
- u8 *DestBuf);
-
-s32 XNandPsu_EraseBlock(XNandPsu *InstancePtr, u32 Target, u32 Block);
-
-s32 XNandPsu_WriteSpareBytes(XNandPsu *InstancePtr, u32 Page, u8 *Buf);
-
-s32 XNandPsu_ReadSpareBytes(XNandPsu *InstancePtr, u32 Page, u8 *Buf);
-
-s32 XNandPsu_ChangeTimingMode(XNandPsu *InstancePtr,
- XNandPsu_DataInterface NewIntf,
- XNandPsu_TimingMode NewMode);
-
-s32 XNandPsu_GetFeature(XNandPsu *InstancePtr, u32 Target, u8 Feature,
- u8 *Buf);
-
-s32 XNandPsu_SetFeature(XNandPsu *InstancePtr, u32 Target, u8 Feature,
- u8 *Buf);
-
-s32 XNandPsu_ScanBbt(XNandPsu *InstancePtr);
-
-s32 XNandPsu_MarkBlockBad(XNandPsu *InstancePtr, u32 Block);
-
-void XNandPsu_EnableDmaMode(XNandPsu *InstancePtr);
-
-void XNandPsu_DisableDmaMode(XNandPsu *InstancePtr);
-
-void XNandPsu_EnableEccMode(XNandPsu *InstancePtr);
-
-void XNandPsu_DisableEccMode(XNandPsu *InstancePtr);
-
-void XNandPsu_Prepare_Cmd(XNandPsu *InstancePtr, u8 Cmd1, u8 Cmd2, u8 EccState,
- u8 DmaMode, u8 AddrCycles);
-
-void XNandPsu_EnableBbtOobMode(XNandPsu *InstancePtr);
-
-void XNandPsu_DisableBbtOobMode(XNandPsu *InstancePtr);
-/*
- * XNandPsu_LookupConfig in xnandpsu_sinit.c
- */
-XNandPsu_Config *XNandPsu_LookupConfig(u16 DeviceID);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* XNANDPSU_H end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu_bbm.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu_bbm.h
deleted file mode 100644
index c128d9657..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu_bbm.h
+++ /dev/null
@@ -1,211 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xnandpsu_bbm.h
-*
-* This file implements the Bad Block Management(BBM) functionality. This is
-* similar to the Bad Block Management which is a part of the MTD subsystem in
-* Linux. The factory marked bad blocks are scanned initially and a Bad Block
-* Table(BBT) is created in the memory. This table is also written to the flash
-* so that upon reboot, the BBT is read back from the flash and loaded into the
-* memory instead of scanning every time. The Bad Block Table(BBT) is written
-* into one of the the last four blocks in the flash memory. The last four
-* blocks are marked as Reserved so that user can't erase/program those blocks.
-*
-* There are two bad block tables, a primary table and a mirror table. The
-* tables are versioned and incrementing version number is used to detect and
-* recover from interrupted updates. Each table is stored in a separate block,
-* beginning in the first page of that block. Only two blocks would be necessary
-* in the absence of bad blocks within the last four; the range of four provides
-* a little slack in case one or two of those blocks is bad. These blocks are
-* marked as reserved and cannot be programmed by the user. A NAND Flash device
-* with 3 or more factory bad blocks in the last 4 cannot be used. The bad block
-* table signature is written into the spare data area of the pages containing
-* bad block table so that upon rebooting the bad block table signature is
-* searched and the bad block table is loaded into RAM. The signature is "Bbt0"
-* for primary Bad Block Table and "1tbB" for Mirror Bad Block Table. The
-* version offset follows the signature offset in the spare data area. The
-* version number increments on every update to the bad block table and the
-* version wraps at 0xff.
-*
-* Each block in the Bad Block Table(BBT) is represented by 2 bits.
-* The two bits are encoded as follows in RAM BBT.
-* 0'b00 -> Good Block
-* 0'b01 -> Block is bad due to wear
-* 0'b10 -> Reserved block
-* 0'b11 -> Factory marked bad block
-*
-* While writing to the flash the two bits are encoded as follows.
-* 0'b00 -> Factory marked bad block
-* 0'b01 -> Reserved block
-* 0'b10 -> Block is bad due to wear
-* 0'b11 -> Good Block
-*
-* The user can check for the validity of the block using the API
-* XNandPsu_IsBlockBad and take the action based on the return value. Also user
-* can update the bad block table using XNandPsu_MarkBlockBad API.
-*
-* @note None
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- ---------- -----------------------------------------------
-* 1.0 nm 05/06/2014 First release
-* 2.0 sb 01/12/2015 Added support for writing BBT signature and version
-* in page section by enabling XNANDPSU_BBT_NO_OOB.
-* Modified Bbt Signature and Version Offset value for
-* Oob and No-Oob region.
-*
-*
-******************************************************************************/
-#ifndef XNANDPSU_BBM_H /* prevent circular inclusions */
-#define XNANDPSU_BBM_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-#include "xnandpsu.h"
-
-/************************** Constant Definitions *****************************/
-/*
- * Block definitions for RAM based Bad Block Table (BBT)
- */
-#define XNANDPSU_BLOCK_GOOD 0x0U /**< Block is good */
-#define XNANDPSU_BLOCK_BAD 0x1U /**< Block is bad */
-#define XNANDPSU_BLOCK_RESERVED 0x2U /**< Reserved block */
-#define XNANDPSU_BLOCK_FACTORY_BAD 0x3U /**< Factory marked bad
- block */
-/*
- * Block definitions for FLASH based Bad Block Table (BBT)
- */
-#define XNANDPSU_FLASH_BLOCK_GOOD 0x3U /**< Block is good */
-#define XNANDPSU_FLASH_BLOCK_BAD 0x2U /**< Block is bad */
-#define XNANDPSU_FLASH_BLOCK_RESERVED 0x1U /**< Reserved block */
-#define XNANDPSU_FLASH_BLOCK_FAC_BAD 0x0U /**< Factory marked bad
- block */
-
-#define XNANDPSU_BBT_SCAN_2ND_PAGE 0x00000001U /**< Scan the
- second page
- for bad block
- information
- */
-#define XNANDPSU_BBT_DESC_PAGE_OFFSET 0U /**< Page offset of Bad
- Block Table Desc */
-#define XNANDPSU_BBT_DESC_SIG_OFFSET 8U /**< Bad Block Table
- signature offset */
-#define XNANDPSU_BBT_DESC_VER_OFFSET 12U /**< Bad block Table
- version offset */
-#define XNANDPSU_NO_OOB_BBT_DESC_SIG_OFFSET 0U /**< Bad Block Table
- signature offset in
- page memory */
-#define XNANDPSU_NO_OOB_BBT_DESC_VER_OFFSET 4U /**< Bad block Table
- version offset in
- page memory */
-#define XNANDPSU_BBT_DESC_SIG_LEN 4U /**< Bad block Table
- signature length */
-#define XNANDPSU_BBT_DESC_MAX_BLOCKS 64U /**< Bad block Table
- max blocks */
-
-#define XNANDPSU_BBT_BLOCK_SHIFT 2U /**< Block shift value
- for a block in BBT */
-#define XNANDPSU_BBT_ENTRY_NUM_BLOCKS 4U /**< Num of blocks in
- one BBT entry */
-#define XNANDPSU_BB_PTRN_OFF_SML_PAGE 5U /**< Bad block pattern
- offset in a page */
-#define XNANDPSU_BB_PTRN_LEN_SML_PAGE 1U /**< Bad block pattern
- length */
-#define XNANDPSU_BB_PTRN_OFF_LARGE_PAGE 0U /**< Bad block pattern
- offset in a large
- page */
-#define XNANDPSU_BB_PTRN_LEN_LARGE_PAGE 2U /**< Bad block pattern
- length */
-#define XNANDPSU_BB_PATTERN 0xFFU /**< Bad block pattern
- to search in a page
- */
-#define XNANDPSU_BLOCK_TYPE_MASK 0x03U /**< Block type mask */
-#define XNANDPSU_BLOCK_SHIFT_MASK 0x06U /**< Block shift mask
- for a Bad Block Table
- entry byte */
-
-#define XNANDPSU_ONDIE_SIG_OFFSET 0x4U
-#define XNANDPSU_ONDIE_VER_OFFSET 0x14U
-
-#define XNANDPSU_BBT_VERSION_LENGTH 1U
-#define XNANDPSU_BBT_SIG_LENGTH 4U
-
-#define XNANDPSU_BBT_BUF_LENGTH ((XNANDPSU_MAX_BLOCKS >> \
- XNANDPSU_BBT_BLOCK_SHIFT) + \
- (XNANDPSU_BBT_DESC_SIG_OFFSET + \
- XNANDPSU_BBT_SIG_LENGTH + \
- XNANDPSU_BBT_VERSION_LENGTH))
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/****************************************************************************/
-/**
-*
-* This macro returns the Block shift value corresponding to a Block.
-*
-* @param Block is the block number.
-*
-* @return Block shift value
-*
-* @note None.
-*
-*****************************************************************************/
-#define XNandPsu_BbtBlockShift(Block) \
- ((u8)(((Block) * 2U) & XNANDPSU_BLOCK_SHIFT_MASK))
-
-/************************** Variable Definitions *****************************/
-
-/************************** Function Prototypes ******************************/
-
-void XNandPsu_InitBbtDesc(XNandPsu *InstancePtr);
-
-s32 XNandPsu_ScanBbt(XNandPsu *InstancePtr);
-
-s32 XNandPsu_IsBlockBad(XNandPsu *InstancePtr, u32 Block);
-
-s32 XNandPsu_MarkBlockBad(XNandPsu *InstancePtr, u32 Block);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu_hw.h
deleted file mode 100644
index f59b5b661..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu_hw.h
+++ /dev/null
@@ -1,504 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xnandpsu_hw.h
-*
-* This file contains identifiers and low-level macros/functions for the Arasan
-* NAND flash controller driver.
-*
-* See xnandpsu.h for more information.
-*
-* @note None
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- ---------- -----------------------------------------------
-* 1.0 nm 05/06/2014 First Release
-* 2.0 sb 11/04/2014 Changed XNANDPSU_ECC_SLC_MLC_MASK to
-* XNANDPSU_ECC_HAMMING_BCH_MASK.
-*
-*
-******************************************************************************/
-
-#ifndef XNANDPSU_HW_H /* prevent circular inclusions */
-#define XNANDPSU_HW_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-#include "xil_io.h"
-
-/************************** Constant Definitions *****************************/
-
-/************************** Register Offset Definitions **********************/
-
-#define XNANDPSU_PKT_OFFSET 0x00U /**< Packet Register */
-#define XNANDPSU_MEM_ADDR1_OFFSET 0x04U /**< Memory Address
- Register 1 */
-#define XNANDPSU_MEM_ADDR2_OFFSET 0x08U /**< Memory Address
- Register 2 */
-#define XNANDPSU_CMD_OFFSET 0x0CU /**< Command Register */
-#define XNANDPSU_PROG_OFFSET 0x10U /**< Program Register */
-#define XNANDPSU_INTR_STS_EN_OFFSET 0x14U /**< Interrupt Status
- Enable Register */
-#define XNANDPSU_INTR_SIG_EN_OFFSET 0x18U /**< Interrupt Signal
- Enable Register */
-#define XNANDPSU_INTR_STS_OFFSET 0x1CU /**< Interrupt Status
- Register */
-#define XNANDPSU_READY_BUSY_OFFSET 0x20U /**< Ready/Busy status
- Register */
-#define XNANDPSU_FLASH_STS_OFFSET 0x28U /**< Flash Status Register */
-#define XNANDPSU_TIMING_OFFSET 0x2CU /**< Timing Register */
-#define XNANDPSU_BUF_DATA_PORT_OFFSET 0x30U /**< Buffer Data Port
- Register */
-#define XNANDPSU_ECC_OFFSET 0x34U /**< ECC Register */
-#define XNANDPSU_ECC_ERR_CNT_OFFSET 0x38U /**< ECC Error Count
- Register */
-#define XNANDPSU_ECC_SPR_CMD_OFFSET 0x3CU /**< ECC Spare Command
- Register */
-#define XNANDPSU_ECC_CNT_1BIT_OFFSET 0x40U /**< Error Count 1bit
- Register */
-#define XNANDPSU_ECC_CNT_2BIT_OFFSET 0x44U /**< Error Count 2bit
- Register */
-#define XNANDPSU_ECC_CNT_3BIT_OFFSET 0x48U /**< Error Count 3bit
- Register */
-#define XNANDPSU_ECC_CNT_4BIT_OFFSET 0x4CU /**< Error Count 4bit
- Register */
-#define XNANDPSU_CPU_REL_OFFSET 0x58U /**< CPU Release Register */
-#define XNANDPSU_ECC_CNT_5BIT_OFFSET 0x5CU /**< Error Count 5bit
- Register */
-#define XNANDPSU_ECC_CNT_6BIT_OFFSET 0x60U /**< Error Count 6bit
- Register */
-#define XNANDPSU_ECC_CNT_7BIT_OFFSET 0x64U /**< Error Count 7bit
- Register */
-#define XNANDPSU_ECC_CNT_8BIT_OFFSET 0x68U /**< Error Count 8bit
- Register */
-#define XNANDPSU_DATA_INTF_OFFSET 0x6CU /**< Data Interface Register */
-#define XNANDPSU_DMA_SYS_ADDR0_OFFSET 0x50U /**< DMA System Address 0
- Register */
-#define XNANDPSU_DMA_SYS_ADDR1_OFFSET 0x24U /**< DMA System Address 1
- Register */
-#define XNANDPSU_DMA_BUF_BND_OFFSET 0x54U /**< DMA Buffer Boundary
- Register */
-#define XNANDPSU_SLV_DMA_CONF_OFFSET 0x80U /**< Slave DMA Configuration
- Register */
-
-/** @name Packet Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_PKT_PKT_SIZE_MASK 0x000007FFU /**< Packet Size */
-#define XNANDPSU_PKT_PKT_CNT_MASK 0x00FFF000U /**< Packet Count*/
-#define XNANDPSU_PKT_PKT_CNT_SHIFT 12U /**< Packet Count Shift */
-/* @} */
-
-/** @name Memory Address Register 1 bit definitions and masks
- * @{
- */
-#define XNANDPSU_MEM_ADDR1_COL_ADDR_MASK 0x0000FFFFU /**< Column Address
- Mask */
-#define XNANDPSU_MEM_ADDR1_PG_ADDR_MASK 0xFFFF0000U /**< Page, Block
- Address Mask */
-#define XNANDPSU_MEM_ADDR1_PG_ADDR_SHIFT 16U /**< Page Shift */
-/* @} */
-
-/** @name Memory Address Register 2 bit definitions and masks
- * @{
- */
-#define XNANDPSU_MEM_ADDR2_MEM_ADDR_MASK 0x000000FFU /**< Memory Address
- */
-#define XNANDPSU_MEM_ADDR2_BUS_WIDTH_MASK 0x01000000U /**< Bus Width */
-#define XNANDPSU_MEM_ADDR2_NFC_BCH_MODE_MASK 0x0E000000U /**< BCH Mode
- Value */
-#define XNANDPSU_MEM_ADDR2_MODE_MASK 0x30000000U /**< Flash
- Connection Mode */
-#define XNANDPSU_MEM_ADDR2_CHIP_SEL_MASK 0xC0000000U /**< Chip Select */
-#define XNANDPSU_MEM_ADDR2_CHIP_SEL_SHIFT 30U /**< Chip select
- shift */
-#define XNANDPSU_MEM_ADDR2_BUS_WIDTH_SHIFT 24U /**< Bus width shift */
-#define XNANDPSU_MEM_ADDR2_NFC_BCH_MODE_SHIFT 25U
-/* @} */
-
-/** @name Command Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_CMD_CMD1_MASK 0x000000FFU /**< 1st Cycle
- Command */
-#define XNANDPSU_CMD_CMD2_MASK 0x0000FF00U /**< 2nd Cycle
- Command */
-#define XNANDPSU_CMD_PG_SIZE_MASK 0x03800000U /**< Page Size */
-#define XNANDPSU_CMD_DMA_EN_MASK 0x0C000000U /**< DMA Enable
- Mode */
-#define XNANDPSU_CMD_ADDR_CYCLES_MASK 0x70000000U /**< Number of
- Address Cycles */
-#define XNANDPSU_CMD_ECC_ON_MASK 0x80000000U /**< ECC ON/OFF */
-#define XNANDPSU_CMD_CMD2_SHIFT 8U /**< 2nd Cycle Command
- Shift */
-#define XNANDPSU_CMD_PG_SIZE_SHIFT 23U /**< Page Size Shift */
-#define XNANDPSU_CMD_DMA_EN_SHIFT 26U /**< DMA Enable Shift */
-#define XNANDPSU_CMD_ADDR_CYCLES_SHIFT 28U /**< Number of Address
- Cycles Shift */
-#define XNANDPSU_CMD_ECC_ON_SHIFT 31U /**< ECC ON/OFF */
-/* @} */
-
-/** @name Program Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_PROG_RD_MASK 0x00000001U /**< Read */
-#define XNANDPSU_PROG_MUL_DIE_MASK 0x00000002U /**< Multi Die */
-#define XNANDPSU_PROG_BLK_ERASE_MASK 0x00000004U /**< Block Erase */
-#define XNANDPSU_PROG_RD_STS_MASK 0x00000008U /**< Read Status */
-#define XNANDPSU_PROG_PG_PROG_MASK 0x00000010U /**< Page Program */
-#define XNANDPSU_PROG_MUL_DIE_RD_MASK 0x00000020U /**< Multi Die Rd */
-#define XNANDPSU_PROG_RD_ID_MASK 0x00000040U /**< Read ID */
-#define XNANDPSU_PROG_RD_PRM_PG_MASK 0x00000080U /**< Read Param
- Page */
-#define XNANDPSU_PROG_RST_MASK 0x00000100U /**< Reset */
-#define XNANDPSU_PROG_GET_FEATURES_MASK 0x00000200U /**< Get Features */
-#define XNANDPSU_PROG_SET_FEATURES_MASK 0x00000400U /**< Set Features */
-#define XNANDPSU_PROG_RD_UNQ_ID_MASK 0x00000800U /**< Read Unique
- ID */
-#define XNANDPSU_PROG_RD_STS_ENH_MASK 0x00001000U /**< Read Status
- Enhanced */
-#define XNANDPSU_PROG_RD_INTRLVD_MASK 0x00002000U /**< Read
- Interleaved */
-#define XNANDPSU_PROG_CHNG_RD_COL_ENH_MASK 0x00004000U /**< Change Read
- Column
- Enhanced */
-#define XNANDPSU_PROG_COPY_BACK_INTRLVD_MASK 0x00008000U /**< Copy Back
- Interleaved */
-#define XNANDPSU_PROG_RD_CACHE_START_MASK 0x00010000U /**< Read Cache
- Start */
-#define XNANDPSU_PROG_RD_CACHE_SEQ_MASK 0x00020000U /**< Read Cache
- Sequential */
-#define XNANDPSU_PROG_RD_CACHE_RAND_MASK 0x00040000U /**< Read Cache
- Random */
-#define XNANDPSU_PROG_RD_CACHE_END_MASK 0x00080000U /**< Read Cache
- End */
-#define XNANDPSU_PROG_SMALL_DATA_MOVE_MASK 0x00100000U /**< Small Data
- Move */
-#define XNANDPSU_PROG_CHNG_ROW_ADDR_MASK 0x00200000U /**< Change Row
- Address */
-#define XNANDPSU_PROG_CHNG_ROW_ADDR_END_MASK 0x00400000U /**< Change Row
- Address End */
-#define XNANDPSU_PROG_RST_LUN_MASK 0x00800000U /**< Reset LUN */
-#define XNANDPSU_PROG_PGM_PG_CLR_MASK 0x01000000U /**< Enhanced
- Program Page
- Register Clear */
-#define XNANDPSU_PROG_VOL_SEL_MASK 0x02000000U /**< Volume Select */
-#define XNANDPSU_PROG_ODT_CONF_MASK 0x04000000U /**< ODT Configure */
-/* @} */
-
-/** @name Interrupt Status Enable Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_INTR_STS_EN_BUFF_WR_RDY_STS_EN_MASK 0x00000001U /**< Buffer
- Write Ready
- Status
- Enable */
-#define XNANDPSU_INTR_STS_EN_BUFF_RD_RDY_STS_EN_MASK 0x00000002U /**< Buffer
- Read Ready
- Status
- Enable */
-#define XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK 0x00000004U /**< Transfer
- Complete
- Status
- Enable */
-#define XNANDPSU_INTR_STS_EN_MUL_BIT_ERR_STS_EN_MASK 0x00000008U /**< Multi
- Bit Error
- Status
- Enable */
-#define XNANDPSU_INTR_STS_EN_ERR_INTR_STS_EN_MASK 0x00000010U /**< Single
- Bit Error
- Status
- Enable,
- BCH Detect
- Error
- Status
- Enable */
-#define XNANDPSU_INTR_STS_EN_DMA_INT_STS_EN_MASK 0x00000040U /**< DMA
- Status
- Enable */
-#define XNANDPSU_INTR_STS_EN_ERR_AHB_STS_EN_MASK 0x00000080U /**< Error
- AHB Status
- Enable */
-/* @} */
-
-/** @name Interrupt Signal Enable Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_INTR_SIG_EN_BUFF_WR_RDY_STS_EN_MASK 0x00000001U /**< Buffer
- Write Ready
- Signal
- Enable */
-#define XNANDPSU_INTR_SIG_EN_BUFF_RD_RDY_STS_EN_MASK 0x00000002U /**< Buffer
- Read Ready
- Signal
- Enable */
-#define XNANDPSU_INTR_SIG_EN_TRANS_COMP_STS_EN_MASK 0x00000004U /**< Transfer
- Complete
- Signal
- Enable */
-#define XNANDPSU_INTR_SIG_EN_MUL_BIT_ERR_STS_EN_MASK 0x00000008U /**< Multi
- Bit Error
- Signal
- Enable */
-#define XNANDPSU_INTR_SIG_EN_ERR_INTR_STS_EN_MASK 0x00000010U /**< Single
- Bit Error
- Signal
- Enable,
- BCH Detect
- Error
- Signal
- Enable */
-#define XNANDPSU_INTR_SIG_EN_DMA_INT_STS_EN_MASK 0x00000040U /**< DMA
- Signal
- Enable */
-#define XNANDPSU_INTR_SIG_EN_ERR_AHB_STS_EN_MASK 0x00000080U /**< Error
- AHB Signal
- Enable */
-/* @} */
-
-/** @name Interrupt Status Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_INTR_STS_BUFF_WR_RDY_STS_EN_MASK 0x00000001U /**< Buffer
- Write
- Ready */
-#define XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK 0x00000002U /**< Buffer
- Read
- Ready */
-#define XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK 0x00000004U /**< Transfer
- Complete */
-#define XNANDPSU_INTR_STS_MUL_BIT_ERR_STS_EN_MASK 0x00000008U /**< Multi
- Bit Error */
-#define XNANDPSU_INTR_STS_ERR_INTR_STS_EN_MASK 0x00000010U /**< Single
- Bit Error,
- BCH Detect
- Error */
-#define XNANDPSU_INTR_STS_DMA_INT_STS_EN_MASK 0x00000040U /**< DMA
- Interrupt
- */
-#define XNANDPSU_INTR_STS_ERR_AHB_STS_EN_MASK 0x00000080U /**< Error
- AHB */
-/* @} */
-
-/** @name Interrupt bit definitions and masks
- * @{
- */
-#define XNANDPSU_INTR_BUFF_WR_RDY_STS_EN_MASK 0x00000001U /**< Buffer Write
- Ready Status
- Enable */
-#define XNANDPSU_INTR_BUFF_RD_RDY_STS_EN_MASK 0x00000002U /**< Buffer Read
- Ready Status
- Enable */
-#define XNANDPSU_INTR_TRANS_COMP_STS_EN_MASK 0x00000004U /**< Transfer
- Complete Status
- Enable */
-#define XNANDPSU_INTR_MUL_BIT_ERR_STS_EN_MASK 0x00000008U /**< Multi Bit Error
- Status Enable */
-#define XNANDPSU_INTR_ERR_INTR_STS_EN_MASK 0x00000010U /**< Single Bit Error
- Status Enable,
- BCH Detect Error
- Status Enable */
-#define XNANDPSU_INTR_DMA_INT_STS_EN_MASK 0x00000040U /**< DMA Status
- Enable */
-#define XNANDPSU_INTR_ERR_AHB_STS_EN_MASK 0x00000080U /**< Error AHB Status
- Enable */
-/* @} */
-
-/** @name ID2 Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_ID2_DEVICE_ID2_MASK 0x000000FFU /**< MSB Device ID */
-/* @} */
-
-/** @name Flash Status Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_FLASH_STS_FLASH_STS_MASK 0x0000FFFFU /**< Flash Status
- Value */
-/* @} */
-
-/** @name Timing Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_TIMING_TCCS_TIME_MASK 0x00000003U /**< Change column
- setup time */
-#define XNANDPSU_TIMING_SLOW_FAST_TCAD_MASK 0x00000004U /**< Slow/Fast device
- */
-#define XNANDPSU_TIMING_DQS_BUFF_SEL_MASK 0x00000078U /**< Write/Read data
- transaction value
- */
-#define XNANDPSU_TIMING_TADL_TIME_MASK 0x00007F80U /**< Address latch
- enable to Data
- loading time */
-/* @} */
-
-/** @name ECC Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_ECC_ADDR_MASK 0x0000FFFFU /**< ECC address */
-#define XNANDPSU_ECC_SIZE_MASK 0x01FF0000U /**< ECC size */
-#define XNANDPSU_ECC_HAMMING_BCH_MASK 0x02000000U /**< Hamming/BCH
- support */
-/* @} */
-
-/** @name ECC Error Count Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_ECC_ERR_CNT_PKT_BND_ERR_CNT_MASK 0x000000FFU /**< Packet
- bound error
- count */
-#define XNANDPSU_ECC_ERR_CNT_PG_BND_ERR_CNT_MASK 0x0000FF00U /**< Page
- bound error
- count */
-/* @} */
-
-/** @name ECC Spare Command Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_ECC_SPR_CMD_SPR_CMD_MASK 0x000000FFU /**< ECC
- spare
- command */
-#define XNANDPSU_ECC_SPR_CMD_ECC_ADDR_CYCLES_MASK 0x70000000U /**< Number
- of ECC/
- spare
- address
- cycles */
-/* @} */
-
-/** @name Data Interface Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_DATA_INTF_SDR_MASK 0x00000007U /**< SDR mode */
-#define XNANDPSU_DATA_INTF_NVDDR_MASK 0x00000038U /**< NVDDR mode */
-#define XNANDPSU_DATA_INTF_NVDDR2_MASK 0x000001C0U /**< NVDDR2 mode */
-#define XNANDPSU_DATA_INTF_DATA_INTF_MASK 0x00000600U /**< Data
- Interface */
-#define XNANDPSU_DATA_INTF_NVDDR_SHIFT 3U /**< NVDDR mode shift */
-#define XNANDPSU_DATA_INTF_DATA_INTF_SHIFT 9U /**< Data Interface Shift */
-/* @} */
-
-/** @name DMA Buffer Boundary Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_DMA_BUF_BND_BND_MASK 0x00000007U /**< DMA buffer
- boundary */
-#define XNANDPSU_DMA_BUF_BND_4K 0x0U
-#define XNANDPSU_DMA_BUF_BND_8K 0x1U
-#define XNANDPSU_DMA_BUF_BND_16K 0x2U
-#define XNANDPSU_DMA_BUF_BND_32K 0x3U
-#define XNANDPSU_DMA_BUF_BND_64K 0x4U
-#define XNANDPSU_DMA_BUF_BND_128K 0x5U
-#define XNANDPSU_DMA_BUF_BND_256K 0x6U
-#define XNANDPSU_DMA_BUF_BND_512K 0x7U
-/* @} */
-
-/** @name Slave DMA Configuration Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_SLV_DMA_CONF_SDMA_TX_RX_MASK 0x00000001U /**< Slave
- DMA
- Transfer
- Direction
- */
-#define XNANDPSU_SLV_DMA_CONF_DMA_TRANS_CNT_MASK 0x001FFFFEU /**< Slave
- DMA
- Transfer
- Count */
-#define XNANDPSU_SLV_DMA_CONF_DMA_BURST_SIZE_MASK 0x00E00000U /**< Slave
- DMA
- Burst
- Size */
-#define XNANDPSU_SLV_DMA_CONF_DMA_TMOUT_CNT_VAL_MASK 0x0F000000U /**< DMA
- Timeout
- Counter
- Value */
-#define XNANDPSU_SLV_DMA_CONF_SDMA_EN_MASK 0x10000000U /**< Slave
- DMA
- Enable */
-/* @} */
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/****************************************************************************/
-/**
-*
-* This macro reads the given register.
-*
-* @param BaseAddress is the base address of controller registers.
-* @param RegOffset is the register offset to be read.
-*
-* @return The 32-bit value of the register.
-*
-* @note C-style signature:
-* u32 XNandPsu_ReadReg(u32 BaseAddress, u32 RegOffset)
-*
-*****************************************************************************/
-#define XNandPsu_ReadReg(BaseAddress, RegOffset) \
- Xil_In32((BaseAddress) + (RegOffset))
-
-/****************************************************************************/
-/**
-*
-* This macro writes the given register.
-*
-* @param BaseAddress is the the base address of controller registers.
-* @param RegOffset is the register offset to be written.
-* @param Data is the the 32-bit value to write to the register.
-*
-* @return None.
-*
-* @note C-style signature:
-* void XNandPsu_WriteReg(u32 BaseAddress, u32 RegOffset, u32 Data)
-*
-******************************************************************************/
-#define XNandPsu_WriteReg(BaseAddress, RegOffset, Data) \
- Xil_Out32(((BaseAddress) + (RegOffset)), (Data))
-
-/************************** Function Prototypes ******************************/
-
-/************************** Variable Definitions *****************************/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* XNANDPSU_HW_H end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu_onfi.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu_onfi.h
deleted file mode 100644
index 41da5569c..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xnandpsu_onfi.h
+++ /dev/null
@@ -1,340 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xnandpsu_onfi.h
-*
-* This file defines all the ONFI 3.1 specific commands and values.
-*
-* @note None
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- ---------- -----------------------------------------------
-* 1.0 nm 05/06/2014 First release
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------- -------- ---------------------------------------------------
-* 5.00 pkp 05/29/14 First release
-*
-*
-* @note
-*
-* None.
-*
-******************************************************************************/
-
-#ifndef _XPARAMETERS_PS_H_
-#define _XPARAMETERS_PS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/************************** Constant Definitions *****************************/
-
-/*
- * This block contains constant declarations for the peripherals
- * within the hardblock
- */
-
-/* Canonical definitions for DDR MEMORY */
-#define XPAR_DDR_MEM_BASEADDR 0x00000000U
-#define XPAR_DDR_MEM_HIGHADDR 0x3FFFFFFFU
-
-/* Canonical definitions for Interrupts */
-#define XPAR_XUARTPS_0_INTR XPS_UART0_INT_ID
-#define XPAR_XUARTPS_1_INTR XPS_UART1_INT_ID
-#define XPAR_XIICPS_0_INTR XPS_I2C0_INT_ID
-#define XPAR_XIICPS_1_INTR XPS_I2C1_INT_ID
-#define XPAR_XSPIPS_0_INTR XPS_SPI0_INT_ID
-#define XPAR_XSPIPS_1_INTR XPS_SPI1_INT_ID
-#define XPAR_XCANPS_0_INTR XPS_CAN0_INT_ID
-#define XPAR_XCANPS_1_INTR XPS_CAN1_INT_ID
-#define XPAR_XGPIOPS_0_INTR XPS_GPIO_INT_ID
-#define XPAR_XEMACPS_0_INTR XPS_GEM0_INT_ID
-#define XPAR_XEMACPS_0_WAKE_INTR XPS_GEM0_WAKE_INT_ID
-#define XPAR_XEMACPS_1_INTR XPS_GEM1_INT_ID
-#define XPAR_XEMACPS_1_WAKE_INTR XPS_GEM1_WAKE_INT_ID
-#define XPAR_XEMACPS_2_INTR XPS_GEM2_INT_ID
-#define XPAR_XEMACPS_2_WAKE_INTR XPS_GEM2_WAKE_INT_ID
-#define XPAR_XEMACPS_3_INTR XPS_GEM3_INT_ID
-#define XPAR_XEMACPS_3_WAKE_INTR XPS_GEM3_WAKE_INT_ID
-#define XPAR_XSDIOPS_0_INTR XPS_SDIO0_INT_ID
-#define XPAR_XQSPIPS_0_INTR XPS_QSPI_INT_ID
-#define XPAR_XSDIOPS_1_INTR XPS_SDIO1_INT_ID
-#define XPAR_XWDTPS_0_INTR XPS_WDT_INT_ID
-#define XPAR_XDCFG_0_INTR XPS_DVC_INT_ID
-#define XPAR_SCUTIMER_INTR XPS_SCU_TMR_INT_ID
-#define XPAR_SCUWDT_INTR XPS_SCU_WDT_INT_ID
-#define XPAR_XTTCPS_0_INTR XPS_TTC0_0_INT_ID
-#define XPAR_XTTCPS_1_INTR XPS_TTC0_1_INT_ID
-#define XPAR_XTTCPS_2_INTR XPS_TTC0_2_INT_ID
-#define XPAR_XTTCPS_3_INTR XPS_TTC1_0_INT_ID
-#define XPAR_XTTCPS_4_INTR XPS_TTC1_1_INT_ID
-#define XPAR_XTTCPS_5_INTR XPS_TTC1_2_INT_ID
-#define XPAR_XTTCPS_6_INTR XPS_TTC2_0_INT_ID
-#define XPAR_XTTCPS_7_INTR XPS_TTC2_1_INT_ID
-#define XPAR_XTTCPS_8_INTR XPS_TTC2_2_INT_ID
-#define XPAR_XTTCPS_9_INTR XPS_TTC3_0_INT_ID
-#define XPAR_XTTCPS_10_INTR XPS_TTC3_1_INT_ID
-#define XPAR_XTTCPS_11_INTR XPS_TTC3_2_INT_ID
-#define XPAR_XDMAPS_0_FAULT_INTR XPS_DMA0_ABORT_INT_ID
-#define XPAR_XDMAPS_0_DONE_INTR_0 XPS_DMA0_INT_ID
-#define XPAR_XDMAPS_0_DONE_INTR_1 XPS_DMA1_INT_ID
-#define XPAR_XDMAPS_0_DONE_INTR_2 XPS_DMA2_INT_ID
-#define XPAR_XDMAPS_0_DONE_INTR_3 XPS_DMA3_INT_ID
-#define XPAR_XDMAPS_0_DONE_INTR_4 XPS_DMA4_INT_ID
-#define XPAR_XDMAPS_0_DONE_INTR_5 XPS_DMA5_INT_ID
-#define XPAR_XDMAPS_0_DONE_INTR_6 XPS_DMA6_INT_ID
-#define XPAR_XDMAPS_0_DONE_INTR_7 XPS_DMA7_INT_ID
-#define XPAR_XNANDPS8_0_INTR XPS_NAND_INT_ID
-#define XPAR_XADMAPS_0_INTR XPS_ADMA_CH0_INT_ID
-#define XPAR_XADMAPS_1_INTR XPS_ADMA_CH1_INT_ID
-#define XPAR_XADMAPS_2_INTR XPS_ADMA_CH2_INT_ID
-#define XPAR_XADMAPS_3_INTR XPS_ADMA_CH3_INT_ID
-#define XPAR_XADMAPS_4_INTR XPS_ADMA_CH4_INT_ID
-#define XPAR_XADMAPS_5_INTR XPS_ADMA_CH5_INT_ID
-#define XPAR_XADMAPS_6_INTR XPS_ADMA_CH6_INT_ID
-#define XPAR_XADMAPS_7_INTR XPS_ADMA_CH7_INT_ID
-#define XPAR_XCSUDMA_INTR XPS_CSU_DMA_INT_ID
-#define XPAR_XMPU_LPD_INTR XPS_XMPU_LPD_INT_ID
-#define XPAR_XZDMAPS_0_INTR XPS_ZDMA_CH0_INT_ID
-#define XPAR_XZDMAPS_1_INTR XPS_ZDMA_CH1_INT_ID
-#define XPAR_XZDMAPS_2_INTR XPS_ZDMA_CH2_INT_ID
-#define XPAR_XZDMAPS_3_INTR XPS_ZDMA_CH3_INT_ID
-#define XPAR_XZDMAPS_4_INTR XPS_ZDMA_CH4_INT_ID
-#define XPAR_XZDMAPS_5_INTR XPS_ZDMA_CH5_INT_ID
-#define XPAR_XZDMAPS_6_INTR XPS_ZDMA_CH6_INT_ID
-#define XPAR_XZDMAPS_7_INTR XPS_ZDMA_CH7_INT_ID
-#define XPAR_XMPU_FPD_INTR XPS_XMPU_FPD_INT_ID
-#define XPAR_XCCI_FPD_INTR XPS_FPD_CCI_INT_ID
-#define XPAR_XSMMU_FPD_INTR XPS_FPD_SMMU_INT_ID
-#define XPAR_XUSBPS_0_INTR XPS_USB3_0_ENDPT_INT_ID
-#define XPAR_XUSBPS_1_INTR XPS_USB3_1_ENDPT_INT_ID
-
-/* Canonical definitions for SCU GIC */
-#define XPAR_SCUGIC_NUM_INSTANCES 1U
-#define XPAR_SCUGIC_SINGLE_DEVICE_ID 0U
-#define XPAR_SCUGIC_CPU_BASEADDR (XPS_SCU_PERIPH_BASE + 0x00001000U)
-#define XPAR_SCUGIC_DIST_BASEADDR (XPS_SCU_PERIPH_BASE + 0x00002000U)
-#define XPAR_SCUGIC_ACK_BEFORE 0U
-
-#define XPAR_CPU_CORTEXA53_CORE_CLOCK_FREQ_HZ XPAR_CPU_CORTEXA53_0_CPU_CLK_FREQ_HZ
-
-
-/*
- * This block contains constant declarations for the peripherals
- * within the hardblock. These have been put for backwards compatibilty
- */
-
-
-#define XPS_SYS_CTRL_BASEADDR 0xFF180000U
-#define XPS_SCU_PERIPH_BASE 0xF9000000U
-
-
-
-/* Shared Peripheral Interrupts (SPI) */
-
-/* FIXME */
-/*#define XPS_FPGA0_INT_ID 100U */
-#define XPS_FPGA1_INT_ID 62U
-#define XPS_FPGA2_INT_ID 63U
-#define XPS_FPGA3_INT_ID 64U
-#define XPS_FPGA4_INT_ID 65U
-#define XPS_FPGA5_INT_ID 66U
-#define XPS_FPGA6_INT_ID 67U
-#define XPS_FPGA7_INT_ID 68U
-#define XPS_DMA4_INT_ID 72U
-#define XPS_DMA5_INT_ID 73U
-#define XPS_DMA6_INT_ID 74U
-#define XPS_DMA7_INT_ID 75U
-#define XPS_FPGA8_INT_ID 84U
-#define XPS_FPGA9_INT_ID 85U
-#define XPS_FPGA10_INT_ID 86U
-#define XPS_FPGA11_INT_ID 87U
-#define XPS_FPGA12_INT_ID 88U
-#define XPS_FPGA13_INT_ID 89U
-#define XPS_FPGA14_INT_ID 90U
-#define XPS_FPGA15_INT_ID 91U
-
-/* Updated Interrupt-IDs */
-#define XPS_OCMINTR_INT_ID (10U + 32U)
-#define XPS_NAND_INT_ID (14U + 32U)
-#define XPS_QSPI_INT_ID (15U + 32U)
-#define XPS_GPIO_INT_ID (16U + 32U)
-#define XPS_I2C0_INT_ID (17U + 32U)
-#define XPS_I2C1_INT_ID (18U + 32U)
-#define XPS_SPI0_INT_ID (19U + 32U)
-#define XPS_SPI1_INT_ID (20U + 32U)
-#define XPS_UART0_INT_ID (21U + 32U)
-#define XPS_UART1_INT_ID (22U + 32U)
-#define XPS_CAN0_INT_ID (23U + 32U)
-#define XPS_CAN1_INT_ID (24U + 32U)
-#define XPS_WDT_INT_ID (52U + 32U)
-#define XPS_TTC0_0_INT_ID (36U + 32U)
-#define XPS_TTC0_1_INT_ID (37U + 32U)
-#define XPS_TTC0_2_INT_ID (38U + 32U)
-#define XPS_TTC1_0_INT_ID (39U + 32U)
-#define XPS_TTC1_1_INT_ID (40U + 32U)
-#define XPS_TTC1_2_INT_ID (41U + 32U)
-#define XPS_TTC2_0_INT_ID (42U + 32U)
-#define XPS_TTC2_1_INT_ID (43U + 32U)
-#define XPS_TTC2_2_INT_ID (44U + 32U)
-#define XPS_TTC3_0_INT_ID (45U + 32U)
-#define XPS_TTC3_1_INT_ID (46U + 32U)
-#define XPS_TTC3_2_INT_ID (47U + 32U)
-#define XPS_SDIO0_INT_ID (48U + 32U)
-#define XPS_SDIO1_INT_ID (49U + 32U)
-#define XPS_GEM0_INT_ID (57U + 32U)
-#define XPS_GEM0_WAKE_INT_ID (58U + 32U)
-#define XPS_GEM1_INT_ID (59U + 32U)
-#define XPS_GEM1_WAKE_INT_ID (60U + 32U)
-#define XPS_GEM2_INT_ID (61U + 32U)
-#define XPS_GEM2_WAKE_INT_ID (62U + 32U)
-#define XPS_GEM3_INT_ID (63U + 32U)
-#define XPS_GEM3_WAKE_INT_ID (64U + 32U)
-#define XPS_USB3_0_ENDPT_INT_ID (65U + 32U)
-#define XPS_USB3_1_ENDPT_INT_ID (70U + 32U)
-#define XPS_ADMA_CH0_INT_ID (77U + 32U)
-#define XPS_ADMA_CH1_INT_ID (78U + 32U)
-#define XPS_ADMA_CH2_INT_ID (79U + 32U)
-#define XPS_ADMA_CH3_INT_ID (80U + 32U)
-#define XPS_ADMA_CH4_INT_ID (81U + 32U)
-#define XPS_ADMA_CH5_INT_ID (82U + 32U)
-#define XPS_ADMA_CH6_INT_ID (83U + 32U)
-#define XPS_ADMA_CH7_INT_ID (84U + 32U)
-#define XPS_CSU_DMA_INT_ID (86U + 32U)
-#define XPS_XMPU_LPD_INT_ID (88U + 32U)
-#define XPS_ZDMA_CH0_INT_ID (124U + 32U)
-#define XPS_ZDMA_CH1_INT_ID (125U + 32U)
-#define XPS_ZDMA_CH2_INT_ID (126U + 32U)
-#define XPS_ZDMA_CH3_INT_ID (127U + 32U)
-#define XPS_ZDMA_CH4_INT_ID (128U + 32U)
-#define XPS_ZDMA_CH5_INT_ID (129U + 32U)
-#define XPS_ZDMA_CH6_INT_ID (130U + 32U)
-#define XPS_ZDMA_CH7_INT_ID (131U + 32U)
-#define XPS_XMPU_FPD_INT_ID (134U + 32U)
-#define XPS_FPD_CCI_INT_ID (154U + 32U)
-#define XPS_FPD_SMMU_INT_ID (155U + 32U)
-
-/* Private Peripheral Interrupts (PPI) */
-/*#define XPS_GLOBAL_TMR_INT_ID 27 SCU Global Timer interrupt */
-/*#define XPS_FIQ_INT_ID 28 FIQ from FPGA fabric */
-/*#define XPS_SCU_TMR_INT_ID 29 SCU Private Timer interrupt */
-/*#define XPS_SCU_WDT_INT_ID 30 SCU Private WDT interrupt */
-/*#define XPS_IRQ_INT_ID 31 IRQ from FPGA fabric */
-
-/* REDEFINES for TEST APP */
-/* Definitions for UART */
-#define XPAR_PS7_UART_0_INTR XPS_UART0_INT_ID
-#define XPAR_PS7_UART_1_INTR XPS_UART1_INT_ID
-#define XPAR_PS7_USB_0_INTR XPS_USB0_INT_ID
-#define XPAR_PS7_USB_1_INTR XPS_USB1_INT_ID
-#define XPAR_PS7_I2C_0_INTR XPS_I2C0_INT_ID
-#define XPAR_PS7_I2C_1_INTR XPS_I2C1_INT_ID
-#define XPAR_PS7_SPI_0_INTR XPS_SPI0_INT_ID
-#define XPAR_PS7_SPI_1_INTR XPS_SPI1_INT_ID
-#define XPAR_PS7_CAN_0_INTR XPS_CAN0_INT_ID
-#define XPAR_PS7_CAN_1_INTR XPS_CAN1_INT_ID
-#define XPAR_PS7_GPIO_0_INTR XPS_GPIO_INT_ID
-#define XPAR_PS7_ETHERNET_0_INTR XPS_GEM0_INT_ID
-#define XPAR_PS7_ETHERNET_0_WAKE_INTR XPS_GEM0_WAKE_INT_ID
-#define XPAR_PS7_ETHERNET_1_INTR XPS_GEM1_INT_ID
-#define XPAR_PS7_ETHERNET_1_WAKE_INTR XPS_GEM1_WAKE_INT_ID
-#define XPAR_PS7_ETHERNET_2_INTR XPS_GEM2_INT_ID
-#define XPAR_PS7_ETHERNET_2_WAKE_INTR XPS_GEM2_WAKE_INT_ID
-#define XPAR_PS7_ETHERNET_3_INTR XPS_GEM3_INT_ID
-#define XPAR_PS7_ETHERNET_3_WAKE_INTR XPS_GEM3_WAKE_INT_ID
-
-#define XPAR_PS7_QSPI_0_INTR XPS_QSPI_INT_ID
-#define XPAR_PS7_WDT_0_INTR XPS_WDT_INT_ID
-#define XPAR_PS7_SCUWDT_0_INTR XPS_SCU_WDT_INT_ID
-#define XPAR_PS7_SCUTIMER_0_INTR XPS_SCU_TMR_INT_ID
-#define XPAR_PS7_XADC_0_INTR XPS_SYSMON_INT_ID
-
-#define XPAR_XADCPS_NUM_INSTANCES 1U
-#define XPAR_XADCPS_0_DEVICE_ID 0U
-#define XPAR_XADCPS_0_BASEADDR (0xF8007000U)
-#define XPAR_XADCPS_INT_ID XPS_SYSMON_INT_ID
-
-/* For backwards compatibilty */
-#define XPAR_XUARTPS_0_CLOCK_HZ XPAR_XUARTPS_0_UART_CLK_FREQ_HZ
-#define XPAR_XUARTPS_1_CLOCK_HZ XPAR_XUARTPS_1_UART_CLK_FREQ_HZ
-#define XPAR_XTTCPS_0_CLOCK_HZ XPAR_XTTCPS_0_TTC_CLK_FREQ_HZ
-#define XPAR_XTTCPS_1_CLOCK_HZ XPAR_XTTCPS_1_TTC_CLK_FREQ_HZ
-#define XPAR_XTTCPS_2_CLOCK_HZ XPAR_XTTCPS_2_TTC_CLK_FREQ_HZ
-#define XPAR_XTTCPS_3_CLOCK_HZ XPAR_XTTCPS_3_TTC_CLK_FREQ_HZ
-#define XPAR_XTTCPS_4_CLOCK_HZ XPAR_XTTCPS_4_TTC_CLK_FREQ_HZ
-#define XPAR_XTTCPS_5_CLOCK_HZ XPAR_XTTCPS_5_TTC_CLK_FREQ_HZ
-#define XPAR_XIICPS_0_CLOCK_HZ XPAR_XIICPS_0_I2C_CLK_FREQ_HZ
-#define XPAR_XIICPS_1_CLOCK_HZ XPAR_XIICPS_1_I2C_CLK_FREQ_HZ
-
-#define XPAR_XQSPIPS_0_CLOCK_HZ XPAR_XQSPIPS_0_QSPI_CLK_FREQ_HZ
-
-#ifdef XPAR_CPU_CORTEXA53_0_CPU_CLK_FREQ_HZ
-#define XPAR_CPU_CORTEXA53_CORE_CLOCK_FREQ_HZ XPAR_CPU_CORTEXA53_0_CPU_CLK_FREQ_HZ
-#endif
-
-#ifdef XPAR_CPU_CORTEXA53_1_CPU_CLK_FREQ_HZ
-#define XPAR_CPU_CORTEXA53_CORE_CLOCK_FREQ_HZ XPAR_CPU_CORTEXA53_1_CPU_CLK_FREQ_HZ
-#endif
-
-#define XPAR_SCUTIMER_DEVICE_ID 0U
-#define XPAR_SCUWDT_DEVICE_ID 0U
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xplatform_info.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xplatform_info.h
deleted file mode 100644
index d71a692c1..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xplatform_info.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xplatform_info.h
-*
-* This file contains definitions for various platforms available
-*
-******************************************************************************/
-
-#ifndef XPLATFORM_INFO_H /* prevent circular inclusions */
-#define XPLATFORM_INFO_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-
-/************************** Constant Definitions *****************************/
-
-#define XPAR_CSU_BASEADDR 0xFFCA0000U
-#define XPAR_CSU_VER_OFFSET 0x00000044U
-
-#define XPLAT_ZYNQ_ULTRA_MP 0x1
-#define XPLAT_ZYNQ_ULTRA_MPVEL 0x2
-#define XPLAT_ZYNQ_ULTRA_MPQEMU 0x3
-#define XPLAT_ZYNQ 0x4
-#define XPLAT_MICROBLAZE 0x5
-
-#define XPLAT_INFO_MASK (0xF)
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-
-u32 XGetPlatform_Info();
-
-#if defined (ARMR5) || (__aarch64__)
-u32 XGet_Zynq_UltraMp_Platform_info();
-#endif
-/************************** Function Prototypes ******************************/
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xpseudo_asm.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xpseudo_asm.h
deleted file mode 100644
index e5e02751d..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xpseudo_asm.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xpseudo_asm.h
-*
-* This header file contains macros for using inline assembler code.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -----------------------------------------------
-* 5.00 pkp 05/29/14 First release
-*
-*
-******************************************************************************/
-#ifndef XPSEUDO_ASM_H
-#define XPSEUDO_ASM_H
-#include "xreg_cortexa53.h"
-#include "xpseudo_asm_gcc.h"
-
-#endif /* XPSEUDO_ASM_H */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xqspipsu.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xqspipsu.h
deleted file mode 100644
index 9395ea260..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xqspipsu.h
+++ /dev/null
@@ -1,263 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xqspipsu.h
-*
-* This is the header file for the implementation of QSPIPSU driver.
-* Generic QSPI interface allows for communication to any QSPI slave device.
-* GQSPI contains a GENFIFO into which the bus transfers required are to be
-* pushed with appropriate configuration. The controller provides TX and RX
-* FIFO's and a DMA to be used for RX transfers. The controller executes each
-* GENFIFO entry noting the configuration and places data on the bus as required
-*
-* The different options in GENFIFO are as follows:
-* IMM_DATA : Can be one byte of data to be transmitted, number of clocks or
-* number of bytes in transfer.
-* DATA_XFER : Indicates that data/clocks need to be transmitted or received.
-* EXPONENT : e when 2^e bytes are involved in transfer.
-* SPI_MODE : SPI/Dual SPI/Quad SPI
-* CS : Lower or Upper CS or Both
-* Bus : Lower or Upper Bus or Both
-* TX : When selected, controller transmits data in IMM or fetches number of
-* bytes mentioned form TX FIFO. If not selected, dummies are pumped.
-* RX : When selected, controller receives and fills the RX FIFO/allows RX DMA
-* of requested number of bytes. If not selected, RX data is discarded.
-* Stripe : Byte stripe over lower and upper bus or not.
-* Poll : Polls response to match for to a set value (used along with POLL_CFG
-* registers) and then proceeds to next GENFIFO entry.
-* This feature is not currently used in the driver.
-*
-* GENFIFO has manual and auto start options.
-* All DMA requests need a 4-byte aligned destination address buffer and
-* size of transfer should also be a multiple of 4.
-* This driver supports DMA RX and IO RX.
-*
-* Initialization:
-* This driver uses the GQSPI controller with RX DMA. It supports both
-* interrupt and polled transfers. Manual start of GENFIFO is used.
-* XQspiPsu_CfgInitialize() initializes the instance variables.
-* Additional setting can be done using SetOptions/ClearOptions functions
-* and SelectSlave function.
-*
-* Transfer:
-* Polled or Interrupt transfers can be done. The transfer function needs the
-* message(s) to be transmitted in the form of an array of type XQspiPsu_Msg.
-* This is supposed to contain the byte count and any TX/RX buffers as required.
-* Flags can be used indicate further information such as whether the message
-* should be striped. The transfer functions form and write GENFIFO entries,
-* check the status of the transfer and report back to the application
-* when done.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- --- -------- -----------------------------------------------.
-* 1.0 hk 08/21/14 First release
-* sk 03/13/15 Added IO mode support.
-* hk 03/18/15 Switch to I/O mode before clearing RX FIFO.
-* Clear and disbale DMA interrupts/status in abort.
-* Use DMA DONE bit instead of BUSY as recommended.
-*
-*
-*
-******************************************************************************/
-#ifndef _XQSPIPSU_H_ /* prevent circular inclusions */
-#define _XQSPIPSU_H_ /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xstatus.h"
-#include "xqspipsu_hw.h"
-
-/**************************** Type Definitions *******************************/
-/**
- * The handler data type allows the user to define a callback function to
- * handle the asynchronous processing for the QSPIPSU device. The application
- * using this driver is expected to define a handler of this type to support
- * interrupt driven mode. The handler executes in an interrupt context, so
- * only minimal processing should be performed.
- *
- * @param CallBackRef is the callback reference passed in by the upper
- * layer when setting the callback functions, and passed back to
- * the upper layer when the callback is invoked. Its type is
- * not important to the driver, so it is a void pointer.
- * @param StatusEvent holds one or more status events that have occurred.
- * See the XQspiPsu_SetStatusHandler() for details on the status
- * events that can be passed in the callback.
- * @param ByteCount indicates how many bytes of data were successfully
- * transferred. This may be less than the number of bytes
- * requested if the status event indicates an error.
- */
-typedef void (*XQspiPsu_StatusHandler) (void *CallBackRef, u32 StatusEvent,
- unsigned ByteCount);
-
-/**
- * This typedef contains configuration information for a flash message.
- */
-typedef struct {
- u8 *TxBfrPtr;
- u8 *RxBfrPtr;
- u32 ByteCount;
- u32 BusWidth;
- u32 Flags;
-} XQspiPsu_Msg;
-
-/**
- * This typedef contains configuration information for the device.
- */
-typedef struct {
- u16 DeviceId; /**< Unique ID of device */
- u32 BaseAddress; /**< Base address of the device */
- u32 InputClockHz; /**< Input clock frequency */
- u8 ConnectionMode; /**< Single, Stacked and Parallel mode */
- u8 BusWidth; /**< Bus width available on board */
-} XQspiPsu_Config;
-
-/**
- * The XQspiPsu driver instance data. The user is required to allocate a
- * variable of this type for every QSPIPSU device in the system. A pointer
- * to a variable of this type is then passed to the driver API functions.
- */
-typedef struct {
- XQspiPsu_Config Config; /**< Configuration structure */
- u32 IsReady; /**< Device is initialized and ready */
-
- u8 *SendBufferPtr; /**< Buffer to send (state) */
- u8 *RecvBufferPtr; /**< Buffer to receive (state) */
- u8 *GenFifoBufferPtr; /**< Gen FIFO entries */
- int TxBytes; /**< Number of bytes to transfer (state) */
- int RxBytes; /**< Number of bytes left to transfer(state) */
- int GenFifoEntries; /**< Number of Gen FIFO entries remaining */
- u32 IsBusy; /**< A transfer is in progress (state) */
- u32 ReadMode; /**< DMA or IO mode */
- u32 GenFifoCS;
- u32 GenFifoBus;
- int NumMsg;
- int MsgCnt;
- int IsUnaligned;
- XQspiPsu_Msg *Msg;
- XQspiPsu_StatusHandler StatusHandler;
- void *StatusRef; /**< Callback reference for status handler */
-} XQspiPsu;
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-#define XQSPIPSU_READMODE_DMA 0x0
-#define XQSPIPSU_READMODE_IO 0x1
-
-#define XQSPIPSU_SELECT_FLASH_CS_LOWER 0x1
-#define XQSPIPSU_SELECT_FLASH_CS_UPPER 0x2
-#define XQSPIPSU_SELECT_FLASH_CS_BOTH 0x3
-
-#define XQSPIPSU_SELECT_FLASH_BUS_LOWER 0x1
-#define XQSPIPSU_SELECT_FLASH_BUS_UPPER 0x2
-#define XQSPIPSU_SELECT_FLASH_BUS_BOTH 0x3
-
-#define XQSPIPSU_SELECT_MODE_SPI 0x1
-#define XQSPIPSU_SELECT_MODE_DUALSPI 0x2
-#define XQSPIPSU_SELECT_MODE_QUADSPI 0x4
-
-#define XQSPIPSU_GENFIFO_CS_SETUP 0x04
-#define XQSPIPSU_GENFIFO_CS_HOLD 0x03
-
-#define XQSPIPSU_CLK_ACTIVE_LOW_OPTION 0x2
-#define XQSPIPSU_CLK_PHASE_1_OPTION 0x4
-#define XQSPIPSU_MANUAL_START_OPTION 0x8
-
-#define XQSPIPSU_GENFIFO_EXP_START 0x100
-
-#define XQSPIPSU_DMA_BYTES_MAX 0x10000000
-
-#define XQSPIPSU_CLK_PRESCALE_2 0x00
-#define XQSPIPSU_CLK_PRESCALE_4 0x01
-#define XQSPIPSU_CLK_PRESCALE_8 0x02
-#define XQSPIPSU_CLK_PRESCALE_16 0x03
-#define XQSPIPSU_CLK_PRESCALE_32 0x04
-#define XQSPIPSU_CLK_PRESCALE_64 0x05
-#define XQSPIPSU_CLK_PRESCALE_128 0x06
-#define XQSPIPSU_CLK_PRESCALE_256 0x07
-#define XQSPIPSU_CR_PRESC_MAXIMUM 7
-
-#define XQSPIPSU_CONNECTION_MODE_SINGLE 0
-#define XQSPIPSU_CONNECTION_MODE_STACKED 1
-#define XQSPIPSU_CONNECTION_MODE_PARALLEL 2
-
-/* Add more flags as required */
-#define XQSPIPSU_MSG_FLAG_STRIPE 0x1
-
-#define XQspiPsu_Select(InstancePtr) XQspiPsu_Out32((InstancePtr->Config.BaseAddress) + XQSPIPSU_SEL_OFFSET, XQSPIPSU_SEL_MASK)
-
-#define XQspiPsu_Enable(InstancePtr) XQspiPsu_Out32((InstancePtr->Config.BaseAddress) + XQSPIPSU_EN_OFFSET, XQSPIPSU_EN_MASK)
-
-#define XQspiPsu_Disable(InstancePtr) XQspiPsu_Out32((InstancePtr->Config.BaseAddress) + XQSPIPSU_EN_OFFSET, 0x0)
-
-#define XQspiPsu_IsManualStart(InstancePtr) ((XQspiPsu_GetOptions(InstancePtr) & XQSPIPSU_MANUAL_START_OPTION) ? TRUE : FALSE)
-
-/************************** Function Prototypes ******************************/
-
-/* Initialization and reset */
-XQspiPsu_Config *XQspiPsu_LookupConfig(u16 DeviceId);
-int XQspiPsu_CfgInitialize(XQspiPsu *InstancePtr, XQspiPsu_Config *ConfigPtr,
- u32 EffectiveAddr);
-void XQspiPsu_Reset(XQspiPsu *InstancePtr);
-void XQspiPsu_Abort(XQspiPsu *InstancePtr);
-
-/* Transfer functions and handlers */
-int XQspiPsu_PolledTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
- unsigned NumMsg);
-int XQspiPsu_InterruptTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
- unsigned NumMsg);
-int XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr);
-void XQspiPsu_SetStatusHandler(XQspiPsu *InstancePtr, void *CallBackRef,
- XQspiPsu_StatusHandler FuncPtr);
-
-/* Configuration functions */
-int XQspiPsu_SetClkPrescaler(XQspiPsu *InstancePtr, u8 Prescaler);
-void XQspiPsu_SelectFlash(XQspiPsu *InstancePtr, u8 FlashCS, u8 FlashBus);
-int XQspiPsu_SetOptions(XQspiPsu *InstancePtr, u32 Options);
-int XQspiPsu_ClearOptions(XQspiPsu *InstancePtr, u32 Options);
-u32 XQspiPsu_GetOptions(XQspiPsu *InstancePtr);
-int XQspiPsu_SetReadMode(XQspiPsu *InstancePtr, u32 Mode);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _XQSPIPSU_H_ */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xqspipsu_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xqspipsu_hw.h
deleted file mode 100644
index bd189ba7a..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xqspipsu_hw.h
+++ /dev/null
@@ -1,837 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xqspipsu_hw.h
-*
-* This file contains low level access funcitons using the base address
-* directly without an instance.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- --- -------- -----------------------------------------------.
-* 1.0 hk 08/21/14 First release
-* hk 03/18/15 Add DMA status register masks required.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- -------- -------- -----------------------------------------------
-* 5.00 pkp 05/29/14 First release
-*
-*
-******************************************************************************/
-#ifndef XREG_CORTEXA53_H
-#define XREG_CORTEXA53_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/* GPRs */
-#define XREG_GPR0 x0
-#define XREG_GPR1 x1
-#define XREG_GPR2 x2
-#define XREG_GPR3 x3
-#define XREG_GPR4 x4
-#define XREG_GPR5 x5
-#define XREG_GPR6 x6
-#define XREG_GPR7 x7
-#define XREG_GPR8 x8
-#define XREG_GPR9 x9
-#define XREG_GPR10 x10
-#define XREG_GPR11 x11
-#define XREG_GPR12 x12
-#define XREG_GPR13 x13
-#define XREG_GPR14 x14
-#define XREG_GPR15 x15
-#define XREG_GPR16 x16
-#define XREG_GPR17 x17
-#define XREG_GPR18 x18
-#define XREG_GPR19 x19
-#define XREG_GPR20 x20
-#define XREG_GPR21 x21
-#define XREG_GPR22 x22
-#define XREG_GPR23 x23
-#define XREG_GPR24 x24
-#define XREG_GPR25 x25
-#define XREG_GPR26 x26
-#define XREG_GPR27 x27
-#define XREG_GPR28 x28
-#define XREG_GPR29 x29
-#define XREG_GPR30 x30
-#define XREG_CPSR cpsr
-
-/* Current Processor Status Register (CPSR) Bits */
-#define XREG_CPSR_MODE_BITS 0x1F
-#define XREG_CPSR_EL3h_MODE 0xD
-#define XREG_CPSR_EL3t_MODE 0xC
-#define XREG_CPSR_EL2h_MODE 0x9
-#define XREG_CPSR_EL2t_MODE 0x8
-#define XREG_CPSR_EL1h_MODE 0x5
-#define XREG_CPSR_EL1t_MODE 0x4
-#define XREG_CPSR_EL0t_MODE 0x0
-
-#define XREG_CPSR_IRQ_ENABLE 0x80
-#define XREG_CPSR_FIQ_ENABLE 0x40
-
-#define XREG_CPSR_N_BIT 0x80000000U
-#define XREG_CPSR_Z_BIT 0x40000000U
-#define XREG_CPSR_C_BIT 0x20000000U
-#define XREG_CPSR_V_BIT 0x10000000U
-
-/* FPSID bits */
-#define XREG_FPSID_IMPLEMENTER_BIT (24U)
-#define XREG_FPSID_IMPLEMENTER_MASK (0x000000FFU << FPSID_IMPLEMENTER_BIT)
-#define XREG_FPSID_SOFTWARE (0X00000001U<<23U)
-#define XREG_FPSID_ARCH_BIT (16U)
-#define XREG_FPSID_ARCH_MASK (0x0000000FU << FPSID_ARCH_BIT)
-#define XREG_FPSID_PART_BIT (8U)
-#define XREG_FPSID_PART_MASK (0x000000FFU << FPSID_PART_BIT)
-#define XREG_FPSID_VARIANT_BIT (4U)
-#define XREG_FPSID_VARIANT_MASK (0x0000000FU << FPSID_VARIANT_BIT)
-#define XREG_FPSID_REV_BIT (0U)
-#define XREG_FPSID_REV_MASK (0x0000000FU << FPSID_REV_BIT)
-
-/* FPSCR bits */
-#define XREG_FPSCR_N_BIT (0X00000001U << 31U)
-#define XREG_FPSCR_Z_BIT (0X00000001U << 30U)
-#define XREG_FPSCR_C_BIT (0X00000001U << 29U)
-#define XREG_FPSCR_V_BIT (0X00000001U << 28U)
-#define XREG_FPSCR_QC (0X00000001U << 27U)
-#define XREG_FPSCR_AHP (0X00000001U << 26U)
-#define XREG_FPSCR_DEFAULT_NAN (0X00000001U << 25U)
-#define XREG_FPSCR_FLUSHTOZERO (0X00000001U << 24U)
-#define XREG_FPSCR_ROUND_NEAREST (0X00000000U << 22U)
-#define XREG_FPSCR_ROUND_PLUSINF (0X00000001U << 22U)
-#define XREG_FPSCR_ROUND_MINUSINF (0X00000002U << 22U)
-#define XREG_FPSCR_ROUND_TOZERO (0X00000003U << 22U)
-#define XREG_FPSCR_RMODE_BIT (22U)
-#define XREG_FPSCR_RMODE_MASK (0X00000003U << FPSCR_RMODE_BIT)
-#define XREG_FPSCR_STRIDE_BIT (20U)
-#define XREG_FPSCR_STRIDE_MASK (0X00000003U << FPSCR_STRIDE_BIT)
-#define XREG_FPSCR_LENGTH_BIT (16U)
-#define XREG_FPSCR_LENGTH_MASK (0X00000007U << FPSCR_LENGTH_BIT)
-#define XREG_FPSCR_IDC (0X00000001U << 7U)
-#define XREG_FPSCR_IXC (0X00000001U << 4U)
-#define XREG_FPSCR_UFC (0X00000001U << 3U)
-#define XREG_FPSCR_OFC (0X00000001U << 2U)
-#define XREG_FPSCR_DZC (0X00000001U << 1U)
-#define XREG_FPSCR_IOC (0X00000001U << 0U)
-
-/* MVFR0 bits */
-#define XREG_MVFR0_RMODE_BIT (28U)
-#define XREG_MVFR0_RMODE_MASK (0x0000000FU << XREG_MVFR0_RMODE_BIT)
-#define XREG_MVFR0_SHORT_VEC_BIT (24U)
-#define XREG_MVFR0_SHORT_VEC_MASK (0x0000000FU << XREG_MVFR0_SHORT_VEC_BIT)
-#define XREG_MVFR0_SQRT_BIT (20U)
-#define XREG_MVFR0_SQRT_MASK (0x0000000FU << XREG_MVFR0_SQRT_BIT)
-#define XREG_MVFR0_DIVIDE_BIT (16U)
-#define XREG_MVFR0_DIVIDE_MASK (0x0000000FU << XREG_MVFR0_DIVIDE_BIT)
-#define XREG_MVFR0_EXEC_TRAP_BIT (0X00000012U)
-#define XREG_MVFR0_EXEC_TRAP_MASK (0X0000000FU << XREG_MVFR0_EXEC_TRAP_BIT)
-#define XREG_MVFR0_DP_BIT (8U)
-#define XREG_MVFR0_DP_MASK (0x0000000FU << XREG_MVFR0_DP_BIT)
-#define XREG_MVFR0_SP_BIT (4U)
-#define XREG_MVFR0_SP_MASK (0x0000000FU << XREG_MVFR0_SP_BIT)
-#define XREG_MVFR0_A_SIMD_BIT (0U)
-#define XREG_MVFR0_A_SIMD_MASK (0x0000000FU << MVFR0_A_SIMD_BIT)
-
-/* FPEXC bits */
-#define XREG_FPEXC_EX (0X00000001U << 31U)
-#define XREG_FPEXC_EN (0X00000001U << 30U)
-#define XREG_FPEXC_DEX (0X00000001U << 29U)
-
-
-#define XREG_CONTROL_DCACHE_BIT (0X00000001U<<2U)
-#define XREG_CONTROL_ICACHE_BIT (0X00000001U<<12U)
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* XREG_CORTEXA53_H */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xsdps_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xsdps_hw.h
deleted file mode 100644
index a9670d0fc..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xsdps_hw.h
+++ /dev/null
@@ -1,605 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2013 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xsdps_hw.h
-*
-* This header file contains the identifiers and basic HW access driver
-* functions (or macros) that can be used to access the device. Other driver
-* functions are defined in xsdps.h.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- --- -------- -----------------------------------------------
-* 1.00a hk/sg 10/17/13 Initial release
-*
-*
-*
-******************************************************************************/
-
-#ifndef SD_HW_H_
-#define SD_HW_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xil_io.h"
-#include "xparameters.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Register Map
- *
- * Register offsets from the base address of an SD device.
- * @{
- */
-
-#define XSDPS_SDMA_SYS_ADDR_OFFSET 0x00 /**< SDMA System Address
- Register */
-#define XSDPS_BLK_SIZE_OFFSET 0x04 /**< Block Size Register */
-#define XSDPS_BLK_CNT_OFFSET 0x06 /**< Block Count Register */
-#define XSDPS_ARGMT_OFFSET 0x08 /**< Argument Register */
-#define XSDPS_XFER_MODE_OFFSET 0x0C /**< Transfer Mode Register */
-#define XSDPS_CMD_OFFSET 0x0E /**< Command Register */
-#define XSDPS_RESP0_OFFSET 0x10 /**< Response0 Register */
-#define XSDPS_RESP1_OFFSET 0x14 /**< Response1 Register */
-#define XSDPS_RESP2_OFFSET 0x18 /**< Response2 Register */
-#define XSDPS_RESP3_OFFSET 0x1C /**< Response3 Register */
-#define XSDPS_BUF_DAT_PORT_OFFSET 0x20 /**< Buffer Data Port */
-#define XSDPS_PRES_STATE_OFFSET 0x24 /**< Present State */
-#define XSDPS_HOST_CTRL1_OFFSET 0x28 /**< Host Control 1 */
-#define XSDPS_POWER_CTRL_OFFSET 0x29 /**< Power Control */
-#define XSDPS_BLK_GAP_CTRL_OFFSET 0x2A /**< Block Gap Control */
-#define XSDPS_WAKE_UP_CTRL_OFFSET 0x2B /**< Wake Up Control */
-#define XSDPS_CLK_CTRL_OFFSET 0x2C /**< Clock Control */
-#define XSDPS_TIMEOUT_CTRL_OFFSET 0x2E /**< Timeout Control */
-#define XSDPS_SW_RST_OFFSET 0x2F /**< Software Reset */
-#define XSDPS_NORM_INTR_STS_OFFSET 0x30 /**< Normal Interrupt
- Status Register */
-#define XSDPS_ERR_INTR_STS_OFFSET 0x32 /**< Error Interrupt
- Status Register */
-#define XSDPS_NORM_INTR_STS_EN_OFFSET 0x34 /**< Normal Interrupt
- Status Enable Register */
-#define XSDPS_ERR_INTR_STS_EN_OFFSET 0x36 /**< Error Interrupt
- Status Enable Register */
-#define XSDPS_NORM_INTR_SIG_EN_OFFSET 0x38 /**< Normal Interrupt
- Signal Enable Register */
-#define XSDPS_ERR_INTR_SIG_EN_OFFSET 0x3A /**< Error Interrupt
- Signal Enable Register */
-
-#define XSDPS_AUTO_CMD12_ERR_STS_OFFSET 0x3C /**< Auto CMD12 Error Status
- Register */
-#define XSDPS_HOST_CTRL2_OFFSET 0x3E /**< Host Control2 Register */
-#define XSDPS_CAPS_OFFSET 0x40 /**< Capabilities Register */
-#define XSDPS_CAPS_EXT_OFFSET 0x44 /**< Capabilities Extended */
-#define XSDPS_MAX_CURR_CAPS_OFFSET 0x48 /**< Maximum Current
- Capabilities Register */
-#define XSDPS_MAX_CURR_CAPS_EXT_OFFSET 0x4C /**< Maximum Current
- Capabilities Ext Register */
-#define XSDPS_FE_ERR_INT_STS_OFFSET 0x52 /**< Force Event for
- Error Interrupt Status */
-#define XSDPS_FE_AUTO_CMD12_EIS_OFFSET 0x50 /**< Auto CM12 Error Interrupt
- Status Register */
-#define XSDPS_ADMA_ERR_STS_OFFSET 0x54 /**< ADMA Error Status
- Register */
-#define XSDPS_ADMA_SAR_OFFSET 0x58 /**< ADMA System Address
- Register */
-#define XSDPS_ADMA_SAR_EXT_OFFSET 0x5C /**< ADMA System Address
- Extended Register */
-#define XSDPS_PRE_VAL_1_OFFSET 0x60 /**< Preset Value Register */
-#define XSDPS_PRE_VAL_2_OFFSET 0x64 /**< Preset Value Register */
-#define XSDPS_PRE_VAL_3_OFFSET 0x68 /**< Preset Value Register */
-#define XSDPS_PRE_VAL_4_OFFSET 0x6C /**< Preset Value Register */
-#define XSDPS_SHARED_BUS_CTRL_OFFSET 0xE0 /**< Shared Bus Control
- Register */
-#define XSDPS_SLOT_INTR_STS_OFFSET 0xFC /**< Slot Interrupt Status
- Register */
-#define XSDPS_HOST_CTRL_VER_OFFSET 0xFE /**< Host Controller Version
- Register */
-
-/* @} */
-
-/** @name Control Register - Host control, Power control,
- * Block Gap control and Wakeup control
- *
- * This register contains bits for various configuration options of
- * the SD host controller. Read/Write apart from the reserved bits.
- * @{
- */
-
-#define XSDPS_HC_LED_MASK 0x00000001 /**< LED Control */
-#define XSDPS_HC_WIDTH_MASK 0x00000002 /**< Bus width */
-#define XSDPS_HC_SPEED_MASK 0x00000004 /**< High Speed */
-#define XSDPS_HC_DMA_MASK 0x00000018 /**< DMA Mode Select */
-#define XSDPS_HC_DMA_SDMA_MASK 0x00000000 /**< SDMA Mode */
-#define XSDPS_HC_DMA_ADMA1_MASK 0x00000008 /**< ADMA1 Mode */
-#define XSDPS_HC_DMA_ADMA2_32_MASK 0x00000010 /**< ADMA2 Mode - 32 bit */
-#define XSDPS_HC_DMA_ADMA2_64_MASK 0x00000018 /**< ADMA2 Mode - 64 bit */
-#define XSDPS_HC_EXT_BUS_WIDTH 0x00000020 /**< Bus width - 8 bit */
-#define XSDPS_HC_CARD_DET_TL_MASK 0x00000040 /**< Card Detect Tst Lvl */
-#define XSDPS_HC_CARD_DET_SD_MASK 0x00000080 /**< Card Detect Sig Det */
-
-#define XSDPS_PC_BUS_PWR_MASK 0x00000001 /**< Bus Power Control */
-#define XSDPS_PC_BUS_VSEL_MASK 0x0000000E /**< Bus Voltage Select */
-#define XSDPS_PC_BUS_VSEL_3V3_MASK 0x0000000E /**< Bus Voltage 3.3V */
-#define XSDPS_PC_BUS_VSEL_3V0_MASK 0x0000000C /**< Bus Voltage 3.0V */
-#define XSDPS_PC_BUS_VSEL_1V8_MASK 0x0000000A /**< Bus Voltage 1.8V */
-
-#define XSDPS_BGC_STP_REQ_MASK 0x00000001 /**< Block Gap Stop Req */
-#define XSDPS_BGC_CNT_REQ_MASK 0x00000002 /**< Block Gap Cont Req */
-#define XSDPS_BGC_RWC_MASK 0x00000004 /**< Block Gap Rd Wait */
-#define XSDPS_BGC_INTR_MASK 0x00000008 /**< Block Gap Intr */
-#define XSDPS_BGC_SPI_MODE_MASK 0x00000010 /**< Block Gap SPI Mode */
-#define XSDPS_BGC_BOOT_EN_MASK 0x00000020 /**< Block Gap Boot Enb */
-#define XSDPS_BGC_ALT_BOOT_EN_MASK 0x00000040 /**< Block Gap Alt BootEn */
-#define XSDPS_BGC_BOOT_ACK_MASK 0x00000080 /**< Block Gap Boot Ack */
-
-#define XSDPS_WC_WUP_ON_INTR_MASK 0x00000001 /**< Wakeup Card Intr */
-#define XSDPS_WC_WUP_ON_INSRT_MASK 0x00000002 /**< Wakeup Card Insert */
-#define XSDPS_WC_WUP_ON_REM_MASK 0x00000004 /**< Wakeup Card Removal */
-
-/* @} */
-
-/** @name Control Register - Clock control, Timeout control & Software reset
- *
- * This register contains bits for configuration options of clock, timeout and
- * software reset.
- * Read/Write except for Inter_Clock_Stable bit (read only) and reserved bits.
- * @{
- */
-
-#define XSDPS_CC_INT_CLK_EN_MASK 0x00000001
-#define XSDPS_CC_INT_CLK_STABLE_MASK 0x00000002
-#define XSDPS_CC_SD_CLK_EN_MASK 0x00000004
-#define XSDPS_CC_SD_CLK_GEN_SEL_MASK 0x00000020
-#define XSDPS_CC_SDCLK_FREQ_SEL_EXT_MASK 0x000000C0
-#define XSDPS_CC_SDCLK_FREQ_SEL_MASK 0x0000FF00
-#define XSDPS_CC_SDCLK_FREQ_D256_MASK 0x00008000
-#define XSDPS_CC_SDCLK_FREQ_D128_MASK 0x00004000
-#define XSDPS_CC_SDCLK_FREQ_D64_MASK 0x00002000
-#define XSDPS_CC_SDCLK_FREQ_D32_MASK 0x00001000
-#define XSDPS_CC_SDCLK_FREQ_D16_MASK 0x00000800
-#define XSDPS_CC_SDCLK_FREQ_D8_MASK 0x00000400
-#define XSDPS_CC_SDCLK_FREQ_D4_MASK 0x00000200
-#define XSDPS_CC_SDCLK_FREQ_D2_MASK 0x00000100
-#define XSDPS_CC_SDCLK_FREQ_BASE_MASK 0x00000000
-
-#define XSDPS_TC_CNTR_VAL_MASK 0x0000000F
-
-#define XSDPS_SWRST_ALL_MASK 0x00000001
-#define XSDPS_SWRST_CMD_LINE_MASK 0x00000002
-#define XSDPS_SWRST_DAT_LINE_MASK 0x00000004
-
-#define XSDPS_CC_MAX_NUM_OF_DIV 9
-#define XSDPS_CC_DIV_SHIFT 8
-
-/* @} */
-
-/** @name SD Interrupt Registers
- *
- * Normal and Error Interrupt Status Register
- * This register shows the normal and error interrupt status.
- * Status enable register affects reads of this register.
- * If Signal enable register is set and the corresponding status bit is set,
- * interrupt is generated.
- * Write to clear except
- * Error_interrupt and Card_Interrupt bits - Read only
- *
- * Normal and Error Interrupt Status Enable Register
- * Setting this register bits enables Interrupt status.
- * Read/Write except Fixed_to_0 bit (Read only)
- *
- * Normal and Error Interrupt Signal Enable Register
- * This register is used to select which interrupt status is
- * indicated to the Host System as the interrupt.
- * Read/Write except Fixed_to_0 bit (Read only)
- *
- * All three registers have same bit definitions
- * @{
- */
-
-#define XSDPS_INTR_CC_MASK 0x00000001 /**< Command Complete */
-#define XSDPS_INTR_TC_MASK 0x00000002 /**< Transfer Complete */
-#define XSDPS_INTR_BGE_MASK 0x00000004 /**< Block Gap Event */
-#define XSDPS_INTR_DMA_MASK 0x00000008 /**< DMA Interrupt */
-#define XSDPS_INTR_BWR_MASK 0x00000010 /**< Buffer Write Ready */
-#define XSDPS_INTR_BRR_MASK 0x00000020 /**< Buffer Read Ready */
-#define XSDPS_INTR_CARD_INSRT_MASK 0x00000040 /**< Card Insert */
-#define XSDPS_INTR_CARD_REM_MASK 0x00000080 /**< Card Remove */
-#define XSDPS_INTR_CARD_MASK 0x00000100 /**< Card Interrupt */
-#define XSDPS_INTR_INT_A_MASK 0x00000200 /**< INT A Interrupt */
-#define XSDPS_INTR_INT_B_MASK 0x00000400 /**< INT B Interrupt */
-#define XSDPS_INTR_INT_C_MASK 0x00000800 /**< INT C Interrupt */
-#define XSDPS_INTR_RE_TUNING_MASK 0x00001000 /**< Re-Tuning Interrupt */
-#define XSDPS_INTR_BOOT_TERM_MASK 0x00002000 /**< Boot Terminate
- Interrupt */
-#define XSDPS_INTR_BOOT_ACK_RECV_MASK 0x00004000 /**< Boot Ack Recv
- Interrupt */
-#define XSDPS_INTR_ERR_MASK 0x00008000 /**< Error Interrupt */
-#define XSDPS_NORM_INTR_ALL_MASK 0x0000FFFF
-
-#define XSDPS_INTR_ERR_CT_MASK 0x00000001 /**< Command Timeout
- Error */
-#define XSDPS_INTR_ERR_CCRC_MASK 0x00000002 /**< Command CRC Error */
-#define XSDPS_INTR_ERR_CEB_MASK 0x00000004 /**< Command End Bit
- Error */
-#define XSDPS_INTR_ERR_CI_MASK 0x00000008 /**< Command Index Error */
-#define XSDPS_INTR_ERR_DT_MASK 0x00000010 /**< Data Timeout Error */
-#define XSDPS_INTR_ERR_DCRC_MASK 0x00000020 /**< Data CRC Error */
-#define XSDPS_INTR_ERR_DEB_MASK 0x00000040 /**< Data End Bit Error */
-#define XSDPS_INTR_ERR_I_LMT_MASK 0x00000080 /**< Current Limit Error */
-#define XSDPS_INTR_ERR_AUTO_CMD12_MASK 0x00000100 /**< Auto CMD12 Error */
-#define XSDPS_INTR_ERR_ADMA_MASK 0x00000200 /**< ADMA Error */
-#define XSDPS_INTR_ERR_TR_MASK 0x00001000 /**< Tuning Error */
-#define XSDPS_INTR_VEND_SPF_ERR_MASK 0x0000E000 /**< Vendor Specific
- Error */
-#define XSDPS_ERROR_INTR_ALL_MASK 0x0000F3FF /**< Mask for error bits */
-/* @} */
-
-/** @name Block Size and Block Count Register
- *
- * This register contains the block count for current transfer,
- * block size and SDMA buffer size.
- * Read/Write except for reserved bits.
- * @{
- */
-
-#define XSDPS_BLK_SIZE_MASK 0x00000FFF /**< Transfer Block Size */
-#define XSDPS_SDMA_BUFF_SIZE_MASK 0x00007000 /**< Host SDMA Buffer Size */
-#define XSDPS_BLK_CNT_MASK 0x0000FFFF /**< Block Count for
- Current Transfer */
-
-/* @} */
-
-/** @name Transfer Mode and Command Register
- *
- * The Transfer Mode register is used to control the data transfers and
- * Command register is used for command generation
- * Read/Write except for reserved bits.
- * @{
- */
-
-#define XSDPS_TM_DMA_EN_MASK 0x00000001 /**< DMA Enable */
-#define XSDPS_TM_BLK_CNT_EN_MASK 0x00000002 /**< Block Count Enable */
-#define XSDPS_TM_AUTO_CMD12_EN_MASK 0x00000004 /**< Auto CMD12 Enable */
-#define XSDPS_TM_DAT_DIR_SEL_MASK 0x00000010 /**< Data Transfer
- Direction Select */
-#define XSDPS_TM_MUL_SIN_BLK_SEL_MASK 0x00000020 /**< Multi/Single
- Block Select */
-
-#define XSDPS_CMD_RESP_SEL_MASK 0x00000003 /**< Response Type
- Select */
-#define XSDPS_CMD_RESP_NONE_MASK 0x00000000 /**< No Response */
-#define XSDPS_CMD_RESP_L136_MASK 0x00000001 /**< Response length 138 */
-#define XSDPS_CMD_RESP_L48_MASK 0x00000002 /**< Response length 48 */
-#define XSDPS_CMD_RESP_L48_BSY_CHK_MASK 0x00000003 /**< Response length 48 &
- check busy after
- response */
-#define XSDPS_CMD_CRC_CHK_EN_MASK 0x00000008 /**< Command CRC Check
- Enable */
-#define XSDPS_CMD_INX_CHK_EN_MASK 0x00000010 /**< Command Index Check
- Enable */
-#define XSDPS_DAT_PRESENT_SEL_MASK 0x00000020 /**< Data Present Select */
-#define XSDPS_CMD_TYPE_MASK 0x000000C0 /**< Command Type */
-#define XSDPS_CMD_TYPE_NORM_MASK 0x00000000 /**< CMD Type - Normal */
-#define XSDPS_CMD_TYPE_SUSPEND_MASK 0x00000040 /**< CMD Type - Suspend */
-#define XSDPS_CMD_TYPE_RESUME_MASK 0x00000080 /**< CMD Type - Resume */
-#define XSDPS_CMD_TYPE_ABORT_MASK 0x000000C0 /**< CMD Type - Abort */
-#define XSDPS_CMD_MASK 0x00003F00 /**< Command Index Mask -
- Set to CMD0-63,
- AMCD0-63 */
-
-/* @} */
-
-/** @name Capabilities Register
- *
- * Capabilities register is a read only register which contains
- * information about the host controller.
- * Sufficient if read once after power on.
- * Read Only
- * @{
- */
-#define XSDPS_CAP_TOUT_CLK_FREQ_MASK 0x0000003F /**< Timeout clock freq
- select */
-#define XSDPS_CAP_TOUT_CLK_UNIT_MASK 0x00000080 /**< Timeout clock unit -
- MHz/KHz */
-#define XSDPS_CAP_MAX_BLK_LEN_MASK 0x00030000 /**< Max block length */
-#define XSDPS_CAP_MAX_BLK_LEN_512B_MASK 0x00000000 /**< Max block 512 bytes */
-#define XSDPS_CAP_EXT_MEDIA_BUS_MASK 0x00040000 /**< Extended media bus */
-#define XSDPS_CAP_ADMA2_MASK 0x00080000 /**< ADMA2 support */
-#define XSDPS_CAP_HIGH_SPEED_MASK 0x00200000 /**< High speed support */
-#define XSDPS_CAP_SDMA_MASK 0x00400000 /**< SDMA support */
-#define XSDPS_CAP_SUSP_RESUME_MASK 0x00800000 /**< Suspend/Resume
- support */
-#define XSDPS_CAP_VOLT_3V3_MASK 0x01000000 /**< 3.3V support */
-#define XSDPS_CAP_VOLT_3V0_MASK 0x02000000 /**< 3.0V support */
-#define XSDPS_CAP_VOLT_1V8_MASK 0x04000000 /**< 1.8V support */
-#define XSDPS_CAP_INTR_MODE_MASK 0x08000000 /**< Interrupt mode
- support */
-#define XSDPS_CAP_SYS_BUS_64_MASK 0x10000000 /**< 64 bit system bus
- support */
-#define XSDPS_CAP_SPI_MODE_MASK 0x20000000 /**< SPI mode */
-#define XSDPS_CAP_SPI_BLOCK_MODE_MASK 0x20000000 /**< SPI block mode */
-/* @} */
-
-/** @name Present State Register
- *
- * Gives the current status of the host controller
- * Read Only
- * @{
- */
-
-#define XSDPS_PSR_INHIBIT_CMD_MASK 0x00000001 /**< Command inhibit - CMD */
-#define XSDPS_PSR_INHIBIT_DAT_MASK 0x00000002 /**< Command Inhibit - DAT */
-#define XSDPS_PSR_DAT_ACTIVE_MASK 0x00000004 /**< DAT line active */
-#define XSDPS_PSR_WR_ACTIVE_MASK 0x00000100 /**< Write transfer active */
-#define XSDPS_PSR_RD_ACTIVE_MASK 0x00000200 /**< Read transfer active */
-#define XSDPS_PSR_BUFF_WR_EN_MASK 0x00000400 /**< Buffer write enable */
-#define XSDPS_PSR_BUFF_RD_EN_MASK 0x00000800 /**< Buffer read enable */
-#define XSDPS_PSR_CARD_INSRT_MASK 0x00010000 /**< Card inserted */
-#define XSDPS_PSR_CARD_STABLE_MASK 0x00020000 /**< Card state stable */
-#define XSDPS_PSR_CARD_DPL_MASK 0x00040000 /**< Card detect pin level */
-#define XSDPS_PSR_WPS_PL_MASK 0x00080000 /**< Write protect switch
- pin level */
-
-/* @} */
-
-/** @name Block size mask for 512 bytes
- *
- * Block size mask for 512 bytes - This is the default block size.
- * @{
- */
-
-#define XSDPS_BLK_SIZE_512_MASK 0x200
-
-/* @} */
-
-/** @name Commands
- *
- * Constant definitions for commands and response related to SD
- * @{
- */
-
-#define XSDPS_APP_CMD_PREFIX 0x8000
-#define CMD0 0x0000
-#define CMD1 0x0100
-#define CMD2 0x0200
-#define CMD3 0x0300
-#define CMD4 0x0400
-#define CMD5 0x0500
-#define CMD6 0x0600
-#define ACMD6 (XSDPS_APP_CMD_PREFIX + 0x0600)
-#define CMD7 0x0700
-#define CMD8 0x0800
-#define CMD9 0x0900
-#define CMD10 0x0A00
-#define CMD12 0x0C00
-#define ACMD13 (XSDPS_APP_CMD_PREFIX + 0x0D00)
-#define CMD16 0x1000
-#define CMD17 0x1100
-#define CMD18 0x1200
-#define CMD23 0x1700
-#define ACMD23 (XSDPS_APP_CMD_PREFIX + 0x1700)
-#define CMD24 0x1800
-#define CMD25 0x1900
-#define CMD41 0x2900
-#define ACMD41 (XSDPS_APP_CMD_PREFIX + 0x2900)
-#define ACMD42 (XSDPS_APP_CMD_PREFIX + 0x2A00)
-#define ACMD51 (XSDPS_APP_CMD_PREFIX + 0x3300)
-#define CMD52 0x3400
-#define CMD55 0x3700
-#define CMD58 0x3A00
-
-#define RESP_NONE XSDPS_CMD_RESP_NONE_MASK
-#define RESP_R1 XSDPS_CMD_RESP_L48_MASK | XSDPS_CMD_CRC_CHK_EN_MASK | \
- XSDPS_CMD_INX_CHK_EN_MASK
-
-#define RESP_R1B XSDPS_CMD_RESP_L48_BSY_CHK_MASK | \
- XSDPS_CMD_CRC_CHK_EN_MASK | XSDPS_CMD_INX_CHK_EN_MASK
-
-#define RESP_R2 XSDPS_CMD_RESP_L136_MASK | XSDPS_CMD_CRC_CHK_EN_MASK
-#define RESP_R3 XSDPS_CMD_RESP_L48_MASK
-
-#define RESP_R6 XSDPS_CMD_RESP_L48_BSY_CHK_MASK | \
- XSDPS_CMD_CRC_CHK_EN_MASK | XSDPS_CMD_INX_CHK_EN_MASK
-
-/* @} */
-
-/** @name ADMA2 Descriptor related definitions
- *
- * ADMA2 Descriptor related definitions
- * @{
- */
-
-#define XSDPS_DESC_MAX_LENGTH 65536
-
-#define XSDPS_DESC_VALID (0x1 << 0)
-#define XSDPS_DESC_END (0x1 << 1)
-#define XSDPS_DESC_INT (0x1 << 2)
-#define XSDPS_DESC_TRAN (0x2 << 4)
-
-/* @} */
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-#define XSdPs_In32 Xil_In32
-#define XSdPs_Out32 Xil_Out32
-
-#define XSdPs_In16 Xil_In16
-#define XSdPs_Out16 Xil_Out16
-
-#define XSdPs_In8 Xil_In8
-#define XSdPs_Out8 Xil_Out8
-
-/****************************************************************************/
-/**
-* Read a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to the target register.
-*
-* @return The value read from the register.
-*
-* @note C-Style signature:
-* u32 XSdPs_ReadReg(u32 BaseAddress. int RegOffset)
-*
-******************************************************************************/
-#define XSdPs_ReadReg(BaseAddress, RegOffset) \
- XSdPs_In32((BaseAddress) + (RegOffset))
-
-/***************************************************************************/
-/**
-* Write to a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to target register.
-* @param RegisterValue is the value to be written to the register.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XSdPs_WriteReg(u32 BaseAddress, int RegOffset,
-* u32 RegisterValue)
-*
-******************************************************************************/
-#define XSdPs_WriteReg(BaseAddress, RegOffset, RegisterValue) \
- XSdPs_Out32((BaseAddress) + (RegOffset), (RegisterValue))
-
-/****************************************************************************/
-/**
-* Read a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to the target register.
-*
-* @return The value read from the register.
-*
-* @note C-Style signature:
-* u16 XSdPs_ReadReg(u32 BaseAddress. int RegOffset)
-*
-******************************************************************************/
-#define XSdPs_ReadReg16(BaseAddress, RegOffset) \
- XSdPs_In16((BaseAddress) + (RegOffset))
-
-/***************************************************************************/
-/**
-* Write to a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to target register.
-* @param RegisterValue is the value to be written to the register.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XSdPs_WriteReg(u32 BaseAddress, int RegOffset,
-* u16 RegisterValue)
-*
-******************************************************************************/
-#define XSdPs_WriteReg16(BaseAddress, RegOffset, RegisterValue) \
- XSdPs_Out16((BaseAddress) + (RegOffset), (RegisterValue))
-
-/****************************************************************************/
-/**
-* Read a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to the target register.
-*
-* @return The value read from the register.
-*
-* @note C-Style signature:
-* u8 XSdPs_ReadReg(u32 BaseAddress. int RegOffset)
-*
-******************************************************************************/
-#define XSdPs_ReadReg8(BaseAddress, RegOffset) \
- XSdPs_In8((BaseAddress) + (RegOffset))
-
-/***************************************************************************/
-/**
-* Write to a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to target register.
-* @param RegisterValue is the value to be written to the register.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XSdPs_WriteReg(u32 BaseAddress, int RegOffset,
-* u8 RegisterValue)
-*
-******************************************************************************/
-#define XSdPs_WriteReg8(BaseAddress, RegOffset, RegisterValue) \
- XSdPs_Out8((BaseAddress) + (RegOffset), (RegisterValue))
-
-/***************************************************************************/
-/**
-* Macro to get present status register
-*
-* @param BaseAddress contains the base address of the device.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XSdPs_WriteReg(u32 BaseAddress, int RegOffset,
-* u8 RegisterValue)
-*
-******************************************************************************/
-#define XSdPs_GetPresentStatusReg(BaseAddress) \
- XSdPs_In32((BaseAddress) + (XSDPS_PRES_STATE_OFFSET))
-
-/************************** Function Prototypes ******************************/
-
-/************************** Variable Definitions *****************************/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SD_HW_H_ */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xspips.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xspips.h
deleted file mode 100644
index 3d699105e..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xspips.h
+++ /dev/null
@@ -1,691 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xspips.h
-*
-* This file contains the implementation of the XSpiPs driver. It works for
-* both the master and slave mode. User documentation for the driver functions
-* is contained in this file in the form of comment blocks at the front of each
-* function.
-*
-* An SPI device connects to an SPI bus through a 4-wire serial interface.
-* The SPI bus is a full-duplex, synchronous bus that facilitates communication
-* between one master and one slave. The device is always full-duplex,
-* which means that for every byte sent, one is received, and vice-versa.
-* The master controls the clock, so it can regulate when it wants to
-* send or receive data. The slave is under control of the master, it must
-* respond quickly since it has no control of the clock and must send/receive
-* data as fast or as slow as the master does.
-*
-* Initialization & Configuration
-*
-* The XSpiPs_Config structure is used by the driver to configure itself. This
-* configuration structure is typically created by the tool-chain based on HW
-* build properties.
-*
-* To support multiple runtime loading and initialization strategies employed by
-* various operating systems, the driver instance can be initialized in the
-* following way:
-* - XSpiPs_LookupConfig(DeviceId) - Use the devide identifier to find the
-* static configuration structure defined in xspips_g.c. This is setup by
-* the tools. For some operating systems the config structure will be
-* initialized by the software and this call is not needed.
-* - XSpiPs_CfgInitialize(InstancePtr, CfgPtr, EffectiveAddr) - Uses a
-* configuration structure provided by the caller. If running in a system
-* with address translation, the provided virtual memory base address
-* replaces the physical address present in the configuration structure.
-*
-* Multiple Masters
-*
-* More than one master can exist, but arbitration is the responsibility of
-* the higher layer software. The device driver does not perform any type of
-* arbitration.
-*
-* Multiple Slaves
-*
-* Contention between multiple masters is detected by the hardware, in which
-* case a mode fault occurs on the device. The device is disabled immediately
-* by hardware, and the current word transfer is stopped. The Aborted word
-* transfer due to the mode fault is resumed once the devie is enabled again.
-*
-* Modes of Operation
-*
-* There are four modes to perform a data transfer and the selection of a mode
-* is based on Chip Select(CS) and Start. These two options individually, can
-* be controlled either by software(Manual) or hardware(Auto).
-* - Auto CS: Chip select is automatically asserted as soon as the first word
-* is written into the TXFIFO and deasserted when the TXFIFO becomes
-* empty
-* - Manual CS: Software must assert and deassert CS.
-* - Auto Start: Data transmission starts as soon as there is data in the
-* TXFIFO and stalls when the TXFIFO is empty
-* - Manual Start: Software must start data transmission at the beginning of
-* the transaction or whenever the TXFIFO has become empty
-*
-* The preferred combination is Manual CS and Auto Start.
-* In this combination, the software asserts CS before loading any data into
-* TXFIFO. In Auto Start mode, whenever data is in TXFIFO, controller sends it
-* out until TXFIFO becomes empty. The software reads the RXFIFO whenever the
-* data is available. If no further data, software disables CS.
-*
-* Risks/challenges of other combinations:
-* - Manual CS and Manual Start: Manual Start bit should be set after each
-* TXFIFO write otherwise there could be a race condition where the TXFIFO
-* becomes empty before the new word is written. In that case the
-* transmission stops.
-* - Auto CS with Manual or Auto Start: It is very difficult for software to
-* keep the TXFIFO filled. Whenever the TXFIFO runs empty, CS is deasserted.
-* This results in a single transaction to be split into multiple pieces each
-* with its own chip select. This will result in garbage data to be sent.
-*
-* Interrupts
-*
-* The user must connect the interrupt handler of the driver,
-* XSpiPs_InterruptHandler, to an interrupt system such that it will be
-* called when an interrupt occurs. This function does not save and restore
-* the processor context such that the user must provide this processing.
-*
-* The driver handles the following interrupts:
-* - Data Transmit Register/FIFO Underflow
-* - Data Receive Register/FIFO Full
-* - Data Receive Register/FIFO Not Empty
-* - Data Transmit Register/FIFO Full
-* - Data Transmit Register/FIFO Overwater
-* - Mode Fault Error
-* - Data Receive Register/FIFO Overrun
-*
-* The Data Transmit Register/FIFO Overwater interrupt -- indicates that the
-* SPI device has transmitted the data available to transmit, and now its data
-* register and FIFO is ready to accept more data. The driver uses this
-* interrupt to indicate progress while sending data. The driver may have
-* more data to send, in which case the data transmit register and FIFO is
-* filled for subsequent transmission. When this interrupt arrives and all
-* the data has been sent, the driver invokes the status callback with a
-* value of XST_SPI_TRANSFER_DONE to inform the upper layer software that
-* all data has been sent.
-*
-* The Data Transmit Register/FIFO Underflow interrupt -- indicates that,
-* as slave, the SPI device was required to transmit but there was no data
-* available to transmit in the transmit register (or FIFO). This may not
-* be an error if the master is not expecting data. But in the case where
-* the master is expecting data, this serves as a notification of such a
-* condition. The driver reports this condition to the upper layer
-* software through the status handler.
-*
-* The Data Receive Register/FIFO Overrun interrupt -- indicates that the SPI
-* device received data and subsequently dropped the data because the data
-* receive register and FIFO was full. The interrupt applies to both master
-* and slave operation. The driver reports this condition to the upper layer
-* software through the status handler. This likely indicates a problem with
-* the higher layer protocol, or a problem with the slave performance.
-*
-* The Mode Fault Error interrupt -- indicates that while configured as a
-* master, the device was selected as a slave by another master. This can be
-* used by the application for arbitration in a multimaster environment or to
-* indicate a problem with arbitration. When this interrupt occurs, the
-* driver invokes the status callback with a status value of
-* XST_SPI_MODE_FAULT. It is up to the application to resolve the conflict.
-* When configured as a slave, Mode Fault Error interrupt indicates that a slave
-* device was selected as a slave by a master, but the slave device was
-* disabled. When configured as a master, Mode Fault Error interrupt indicates
-* that another SPI device is acting as a master on the bus.
-*
-*
-* Polled Operation
-*
-* Transfer in polled mode is supported through a separate interface function
-* XSpiPs_PolledTransfer(). Unlike the transfer function in the interrupt mode,
-* this function blocks until all data has been sent/received.
-*
-* Device Busy
-*
-* Some operations are disallowed when the device is busy. The driver tracks
-* whether a device is busy. The device is considered busy when a data transfer
-* request is outstanding, and is considered not busy only when that transfer
-* completes (or is aborted with a mode fault error). This applies to both
-* master and slave devices.
-*
-* Device Configuration
-*
-* The device can be configured in various ways during the FPGA implementation
-* process. Configuration parameters are stored in the xspips_g.c file or
-* passed in via XSpiPs_CfgInitialize(). A table is defined where each entry
-* contains configuration information for an SPI device, including the base
-* address for the device.
-*
-* RTOS Independence
-*
-* This driver is intended to be RTOS and processor independent. It works with
-* physical addresses only. Any needs for dynamic memory management, threads or
-* thread mutual exclusion, virtual memory, or cache control must be satisfied
-* by the layer above this driver.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- -----------------------------------------------
-* 1.00 drg/jz 01/25/10 First release
-* 1.00 sdm 10/25/11 Removed the Divide by 2 in the SPI Clock Prescaler
-* options as this is not supported in the device.
-* 1.01 sg 03/07/12 Updated the code to always clear the relevant bits
-* before writing to config register.
-* Always clear the slave select bits before write and
-* clear the bits to no slave at the end of transfer
-* Modified the Polled transfer transmit/receive logic.
-* Tx should wait on TXOW Interrupt and Rx on RXNEMTY.
-* 1.02 sg 05/31/12 Updated XSPIPS_FIFO_DEPTH to 128 from 32 to match HW
-* for CR 658289
-* 1.03 sg 09/21/12 Added memory barrier dmb in polled transfer and
-* interrupt handler to overcome the clock domain
-* crossing issue in the controller. For CR #679252.
-* 1.04a sg 01/30/13 Created XSPIPS_MANUAL_START_OPTION. Created macros
-* XSpiPs_IsMaster, XSpiPs_IsManualStart and
-* XSpiPs_IsManualChipSelect. Changed SPI
-* Enable/Disable macro argument from BaseAddress to
-* Instance Pointer. Added DelayNss argument to SetDelays
-* and GetDelays API's. Added macros to set/get the
-* RX Watermark value.Created macros XSpiPs_IsMaster,
-* XSpiPs_IsManualStart and XSpiPs_IsManualChipSelect.
-* Changed SPI transfer logic for polled and interrupt
-* modes to be based on filled tx fifo count and receive
-* based on it. RXNEMPTY interrupt is not used.
-* SetSlaveSelect API logic is modified to drive the bit
-* position low based on the slave select value
-* requested. GetSlaveSelect API will return the value
-* based on bit position that is low.
-* Created XSPIPS_CR_MODF_GEN_EN_MASK macro and added it
-* to XSPIPS_CR_RESET_STATE. Created
-* XSPIPS_IXR_WR_TO_CLR_MASK for interrupts which need
-* write-to-clear. Added shift and mask macros for d_nss
-* parameter. Added Rx Watermark mask.
-* 1.05a hk 26/04/13 Added disable and enable in XSpiPs_SetOptions when
-* CPOL/CPHA bits are set/reset. Fix for CR#707669.
-* 1.06a hk 08/22/13 Changed GetSlaveSelect function. CR# 727866.
-* Added masking ConfigReg before writing in SetSlaveSel
-* Added extended slave select support - CR#722569.
-* Added prototypes of reset API and related constant
-* definitions.
-* Added check for MODF in polled transfer function.
-* 3.0 vm 12/09/14 Modified driver source code for MISRA-C:2012 compliance.
-* Support for Zynq Ultrascale Mp added.
-*
-*
-*
-******************************************************************************/
-#ifndef XSPIPS_H /* prevent circular inclusions */
-#define XSPIPS_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xstatus.h"
-#include "xspips_hw.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Configuration options
- *
- * The following options are supported to enable/disable certain features of
- * an SPI device. Each of the options is a bit mask, so more than one may be
- * specified.
- *
- * The Master option configures the SPI device as a master.
- * By default, the device is a slave.
- *
- * The Active Low Clock option configures the device's clock polarity.
- * Setting this option means the clock is active low and the SCK signal idles
- * high. By default, the clock is active high and SCK idles low.
- *
- * The Clock Phase option configures the SPI device for one of two
- * transfer formats. A clock phase of 0, the default, means data is valid on
- * the first SCK edge (rising or falling) after the slave select (SS) signal
- * has been asserted. A clock phase of 1 means data is valid on the second SCK
- * edge (rising or falling) after SS has been asserted.
- *
- * The Slave Select Decode Enable option selects how the SPI_SS_outN are
- * controlled by the SPI Slave Select Decode bits.
- * 0: Use this setting for the standard configuration of up to three slave
- * select outputs. Only one of the three slave select outputs will be low.
- * (Default)
- * 1: Use this setting for the optional configuration of an additional decoder
- * to support 8 slave select outputs. SPI_SS_outN reflects the value in the
- * register.
- *
- * The SPI Force Slave Select option is used to enable manual control of
- * the signals SPI_SS_outN.
- * 0: The SPI_SS_outN signals are controlled by the SPI controller during
- * transfers. (Default)
- * 1: The SPI_SS_outN signal indicated by the Slave Select Control bit is
- * forced active (driven low) regardless of any transfers in progress.
- *
- * NOTE: The driver will handle setting and clearing the Slave Select when
- * the user sets the "FORCE_SSELECT_OPTION". Using this option will allow the
- * SPI clock to be set to a faster speed. If the SPI clock is too fast, the
- * processor cannot empty and refill the FIFOs before the TX FIFO is empty
- * When the SPI hardware is controlling the Slave Select signals, this
- * will cause slave to be de-selected and terminate the transfer.
- *
- * The Manual Start option is used to enable manual control of
- * the Start command to perform data transfer.
- * 0: The Start command is controlled by the SPI controller during
- * transfers(Default). Data transmission starts as soon as there is data in
- * the TXFIFO and stalls when the TXFIFO is empty
- * 1: The Start command must be issued by software to perform data transfer.
- * Bit 15 of Configuration register is used to issue Start command. This bit
- * must be set whenever TXFIFO is filled with new data.
- *
- * NOTE: The driver will set the Manual Start Enable bit in Configuration
- * Register, if Manual Start option is selected. Software will issue
- * Manual Start command whenever TXFIFO is filled with data. When there is
- * no further data, driver will clear the Manual Start Enable bit.
- *
- * @{
- */
-#define XSPIPS_MASTER_OPTION 0x00000001U /**< Master mode option */
-#define XSPIPS_CLK_ACTIVE_LOW_OPTION 0x00000002U /**< Active Low Clock option */
-#define XSPIPS_CLK_PHASE_1_OPTION 0x00000004U /**< Clock Phase one option */
-#define XSPIPS_DECODE_SSELECT_OPTION 0x00000008U /**< Select 16 slaves Option */
-#define XSPIPS_FORCE_SSELECT_OPTION 0x00000010U /**< Force Slave Select */
-#define XSPIPS_MANUAL_START_OPTION 0x00000020U /**< Manual Start mode option */
-/*@}*/
-
-
-/** @name SPI Clock Prescaler options
- * The SPI Clock Prescaler Configuration bits are used to program master mode
- * bit rate. The bit rate can be programmed in divide-by-two decrements from
- * pclk/4 to pclk/256.
- *
- * @{
- */
-
-#define XSPIPS_CLK_PRESCALE_4 0x01U /**< PCLK/4 Prescaler */
-#define XSPIPS_CLK_PRESCALE_8 0x02U /**< PCLK/8 Prescaler */
-#define XSPIPS_CLK_PRESCALE_16 0x03U /**< PCLK/16 Prescaler */
-#define XSPIPS_CLK_PRESCALE_32 0x04U /**< PCLK/32 Prescaler */
-#define XSPIPS_CLK_PRESCALE_64 0x05U /**< PCLK/64 Prescaler */
-#define XSPIPS_CLK_PRESCALE_128 0x06U /**< PCLK/128 Prescaler */
-#define XSPIPS_CLK_PRESCALE_256 0x07U /**< PCLK/256 Prescaler */
-/*@}*/
-
-
-/** @name Callback events
- *
- * These constants specify the handler events that are passed to
- * a handler from the driver. These constants are not bit masks such that
- * only one will be passed at a time to the handler.
- *
- * @{
- */
-#define XSPIPS_EVENT_MODE_FAULT 1U /**< Mode fault error */
-#define XSPIPS_EVENT_TRANSFER_DONE 2U /**< Transfer done */
-#define XSPIPS_EVENT_TRANSMIT_UNDERRUN 3U /**< TX FIFO empty */
-#define XSPIPS_EVENT_RECEIVE_OVERRUN 4U /**< Receive data loss because
- RX FIFO full */
-/*@}*/
-
-
-/**************************** Type Definitions *******************************/
-/**
- * The handler data type allows the user to define a callback function to
- * handle the asynchronous processing for the SPI device. The application
- * using this driver is expected to define a handler of this type to support
- * interrupt driven mode. The handler executes in an interrupt context, so
- * only minimal processing should be performed.
- *
- * @param CallBackRef is the callback reference passed in by the upper
- * layer when setting the callback functions, and passed back to
- * the upper layer when the callback is invoked. Its type is
- * not important to the driver, so it is a void pointer.
- * @param StatusEvent holds one or more status events that have occurred.
- * See the XSpiPs_SetStatusHandler() for details on the status
- * events that can be passed in the callback.
- * @param ByteCount indicates how many bytes of data were successfully
- * transferred. This may be less than the number of bytes
- * requested if the status event indicates an error.
- */
-typedef void (*XSpiPs_StatusHandler) (void *CallBackRef, u32 StatusEvent,
- u32 ByteCount);
-
-/**
- * This typedef contains configuration information for the device.
- */
-typedef struct {
- u16 DeviceId; /**< Unique ID of device */
- u32 BaseAddress; /**< Base address of the device */
- u32 InputClockHz; /**< Input clock frequency */
-} XSpiPs_Config;
-
-/**
- * The XSpiPs driver instance data. The user is required to allocate a
- * variable of this type for every SPI device in the system. A pointer
- * to a variable of this type is then passed to the driver API functions.
- */
-typedef struct {
- XSpiPs_Config Config; /**< Configuration structure */
- u32 IsReady; /**< Device is initialized and ready */
-
- u8 *SendBufferPtr; /**< Buffer to send (state) */
- u8 *RecvBufferPtr; /**< Buffer to receive (state) */
- u32 RequestedBytes; /**< Number of bytes to transfer (state) */
- u32 RemainingBytes; /**< Number of bytes left to transfer(state) */
- u32 IsBusy; /**< A transfer is in progress (state) */
- u32 SlaveSelect; /**< The slave select value when
- XSPIPS_FORCE_SSELECT_OPTION is set */
-
- XSpiPs_StatusHandler StatusHandler;
- void *StatusRef; /**< Callback reference for status handler */
-
-} XSpiPs;
-
-/***************** Macros (Inline Functions) Definitions *********************/
-/****************************************************************************/
-/*
-*
-* Check in OptionsTable if Manual Start Option is enabled or disabled.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return
-* - TRUE if option is set
-* - FALSE if option is not set
-*
-* @note C-Style signature:
-* u8 XSpiPs_IsManualStart(XSpiPs *InstancePtr);
-*
-*****************************************************************************/
-#define XSpiPs_IsManualStart(InstancePtr) \
- (((XSpiPs_GetOptions(InstancePtr) & \
- XSPIPS_MANUAL_START_OPTION) != (u32)0U) ? TRUE : FALSE)
-
-/****************************************************************************/
-/*
-*
-* Check in OptionsTable if Manual Chip Select Option is enabled or disabled.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return
-* - TRUE if option is set
-* - FALSE if option is not set
-*
-* @note C-Style signature:
-* u8 XSpiPs_IsManualChipSelect(XSpiPs *InstancePtr);
-*
-*****************************************************************************/
-#define XSpiPs_IsManualChipSelect(InstancePtr) \
- (((XSpiPs_GetOptions(InstancePtr) & \
- XSPIPS_FORCE_SSELECT_OPTION) != (u32)0U) ? TRUE : FALSE)
-
-/****************************************************************************/
-/*
-*
-* Check in OptionsTable if Decode Slave Select option is enabled or disabled.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return
-* - TRUE if option is set
-* - FALSE if option is not set
-*
-* @note C-Style signature:
-* u8 XSpiPs_IsDecodeSSelect(XSpiPs *InstancePtr);
-*
-*****************************************************************************/
-#define XSpiPs_IsDecodeSSelect(InstancePtr) \
- (((XSpiPs_GetOptions(InstancePtr) & \
- XSPIPS_DECODE_SSELECT_OPTION) != (u32)0U) ? TRUE : FALSE)
-
-/****************************************************************************/
-/*
-*
-* Check in OptionsTable if Master Option is enabled or disabled.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return
-* - TRUE if option is set
-* - FALSE if option is not set
-*
-* @note C-Style signature:
-* u8 XSpiPs_IsMaster(XSpiPs *InstancePtr);
-*
-*****************************************************************************/
-#define XSpiPs_IsMaster(InstancePtr) \
- (((XSpiPs_GetOptions(InstancePtr) & \
- XSPIPS_MASTER_OPTION) != (u32)0U) ? TRUE : FALSE)
-
-/****************************************************************************/
-/**
-*
-* Set the contents of the slave idle count register.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-* @param RegisterValue is the value to be writen, valid values are
-* 0-255.
-*
-* @return None
-*
-* @note
-* C-Style signature:
-* void XSpiPs_SetSlaveIdle(XSpiPs *InstancePtr, u32 RegisterValue)
-*
-*****************************************************************************/
-#define XSpiPs_SetSlaveIdle(InstancePtr, RegisterValue) \
- XSpiPs_Out32(((InstancePtr)->Config.BaseAddress) + \
- XSPIPS_SICR_OFFSET, (RegisterValue))
-
-/****************************************************************************/
-/**
-*
-* Get the contents of the slave idle count register. Use the XSPIPS_SICR_*
-* constants defined in xspips_hw.h to interpret the bit-mask returned.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return 8-bit value representing the contents of the SIC register.
-*
-* @note C-Style signature:
-* u32 XSpiPs_GetSlaveIdle(XSpiPs *InstancePtr)
-*
-*****************************************************************************/
-#define XSpiPs_GetSlaveIdle(InstancePtr) \
- XSpiPs_In32(((InstancePtr)->Config.BaseAddress) + \
- XSPIPS_SICR_OFFSET)
-
-/****************************************************************************/
-/**
-*
-* Set the contents of the transmit FIFO watermark register.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-* @param RegisterValue is the value to be written, valid values
-* are 1-128.
-*
-* @return None.
-*
-* @note
-* C-Style signature:
-* void XSpiPs_SetTXWatermark(XSpiPs *InstancePtr, u32 RegisterValue)
-*
-*****************************************************************************/
-#define XSpiPs_SetTXWatermark(InstancePtr, RegisterValue) \
- XSpiPs_Out32(((InstancePtr)->Config.BaseAddress) + \
- XSPIPS_TXWR_OFFSET, (RegisterValue))
-
-/****************************************************************************/
-/**
-*
-* Get the contents of the transmit FIFO watermark register.
-* Use the XSPIPS_TXWR_* constants defined xspips_hw.h to interpret
-* the bit-mask returned.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return 8-bit value representing the contents of the TXWR register.
-*
-* @note C-Style signature:
-* u32 XSpiPs_GetTXWatermark(u32 *InstancePtr)
-*
-*****************************************************************************/
-#define XSpiPs_GetTXWatermark(InstancePtr) \
- XSpiPs_In32(((InstancePtr)->Config.BaseAddress) + XSPIPS_TXWR_OFFSET)
-
-/****************************************************************************/
-/**
-*
-* Set the contents of the receive FIFO watermark register.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-* @param RegisterValue is the value to be written, valid values
-* are 1-128.
-*
-* @return None.
-*
-* @note
-* C-Style signature:
-* void XSpiPs_SetRXWatermark(XSpiPs *InstancePtr, u32 RegisterValue)
-*
-*****************************************************************************/
-#define XSpiPs_SetRXWatermark(InstancePtr, RegisterValue) \
- XSpiPs_Out32(((InstancePtr)->Config.BaseAddress) + \
- XSPIPS_RXWR_OFFSET, (RegisterValue))
-
-/****************************************************************************/
-/**
-*
-* Get the contents of the receive FIFO watermark register.
-* Use the XSPIPS_RXWR_* constants defined xspips_hw.h to interpret
-* the bit-mask returned.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return A 8-bit value representing the contents of the RXWR register.
-*
-* @note C-Style signature:
-* u32 XSpiPs_GetRXWatermark(u32 *InstancePtr)
-*
-*****************************************************************************/
-#define XSpiPs_GetRXWatermark(InstancePtr) \
- XSpiPs_In32(((InstancePtr)->Config.BaseAddress) + XSPIPS_RXWR_OFFSET)
-
-/****************************************************************************/
-/**
-*
-* Enable the device and uninhibit master transactions.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XSpiPs_Enable(u32 *InstancePtr)
-*
-*****************************************************************************/
-#define XSpiPs_Enable(InstancePtr) \
- XSpiPs_Out32(((InstancePtr)->Config.BaseAddress) + XSPIPS_ER_OFFSET, \
- XSPIPS_ER_ENABLE_MASK)
-
-/****************************************************************************/
-/**
-*
-* Disable the device.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XSpiPs_Disable(u32 *InstancePtr)
-*
-*****************************************************************************/
-#define XSpiPs_Disable(InstancePtr) \
- XSpiPs_Out32(((InstancePtr)->Config.BaseAddress) + XSPIPS_ER_OFFSET, 0U)
-
-/************************** Function Prototypes ******************************/
-
-/*
- * Initialization function, implemented in xspips_sinit.c
- */
-XSpiPs_Config *XSpiPs_LookupConfig(u16 DeviceId);
-
-/*
- * Functions implemented in xspips.c
- */
-s32 XSpiPs_CfgInitialize(XSpiPs *InstancePtr, XSpiPs_Config * ConfigPtr,
- u32 EffectiveAddr);
-
-void XSpiPs_Reset(XSpiPs *InstancePtr);
-
-s32 XSpiPs_Transfer(XSpiPs *InstancePtr, u8 *SendBufPtr, u8 *RecvBufPtr,
- u32 ByteCount);
-
-s32 XSpiPs_PolledTransfer(XSpiPs *InstancePtr, u8 *SendBufPtr,
- u8 *RecvBufPtr, u32 ByteCount);
-
-void XSpiPs_SetStatusHandler(XSpiPs *InstancePtr, void *CallBackRef,
- XSpiPs_StatusHandler FunctionPtr);
-void XSpiPs_InterruptHandler(XSpiPs *InstancePtr);
-
-void XSpiPs_Abort(XSpiPs *InstancePtr);
-
-s32 XSpiPs_SetSlaveSelect(XSpiPs *InstancePtr, u8 SlaveSel);
-u8 XSpiPs_GetSlaveSelect(XSpiPs *InstancePtr);
-
-/*
- * Functions for selftest, in xspips_selftest.c
- */
-s32 XSpiPs_SelfTest(XSpiPs *InstancePtr);
-
-/*
- * Functions for options, in xspips_options.c
- */
-s32 XSpiPs_SetOptions(XSpiPs *InstancePtr, u32 Options);
-u32 XSpiPs_GetOptions(XSpiPs *InstancePtr);
-
-s32 XSpiPs_SetClkPrescaler(XSpiPs *InstancePtr, u8 Prescaler);
-u8 XSpiPs_GetClkPrescaler(XSpiPs *InstancePtr);
-
-s32 XSpiPs_SetDelays(XSpiPs *InstancePtr, u8 DelayNss, u8 DelayBtwn,
- u8 DelayAfter, u8 DelayInit);
-void XSpiPs_GetDelays(XSpiPs *InstancePtr, u8 *DelayNss, u8 *DelayBtwn,
- u8 *DelayAfter, u8 *DelayInit);
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xspips_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xspips_hw.h
deleted file mode 100644
index 897340369..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xspips_hw.h
+++ /dev/null
@@ -1,310 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xspips_hw.h
-*
-* This header file contains the identifiers and basic driver functions (or
-* macros) that can be used to access the device. Other driver functions
-* are defined in xspips.h.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- -----------------------------------------------
-* 1.00 drg/jz 01/25/10 First release
-* 1.02a sg 05/31/12 Updated XSPIPS_FIFO_DEPTH to 128 from 32 to match HW
-* for CR 658289
-* 1.04a sg 01/30/13 Created XSPIPS_CR_MODF_GEN_EN_MASK macro and added it
-* to XSPIPS_CR_RESET_STATE. Created
-* XSPIPS_IXR_WR_TO_CLR_MASK for interrupts which need
-* write-to-clear. Added shift and mask macros for d_nss
-* parameter. Added Rx Watermark mask.
-* 1.06a hk 08/22/13 Added prototypes of reset API and related constant
-* definitions.
-* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
-*
-*
-*
-******************************************************************************/
-
-#ifndef XSPIPS_HW_H /* prevent circular inclusions */
-#define XSPIPS_HW_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xil_io.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Register Map
- *
- * Register offsets from the base address of an SPI device.
- * @{
- */
-#define XSPIPS_CR_OFFSET 0x00U /**< Configuration */
-#define XSPIPS_SR_OFFSET 0x04U /**< Interrupt Status */
-#define XSPIPS_IER_OFFSET 0x08U /**< Interrupt Enable */
-#define XSPIPS_IDR_OFFSET 0x0CU /**< Interrupt Disable */
-#define XSPIPS_IMR_OFFSET 0x10U /**< Interrupt Enabled Mask */
-#define XSPIPS_ER_OFFSET 0x14U /**< Enable/Disable Register */
-#define XSPIPS_DR_OFFSET 0x18U /**< Delay Register */
-#define XSPIPS_TXD_OFFSET 0x1CU /**< Data Transmit Register */
-#define XSPIPS_RXD_OFFSET 0x20U /**< Data Receive Register */
-#define XSPIPS_SICR_OFFSET 0x24U /**< Slave Idle Count */
-#define XSPIPS_TXWR_OFFSET 0x28U /**< Transmit FIFO Watermark */
-#define XSPIPS_RXWR_OFFSET 0x2CU /**< Receive FIFO Watermark */
-/* @} */
-
-/** @name Configuration Register
- *
- * This register contains various control bits that
- * affects the operation of an SPI device. Read/Write.
- * @{
- */
-#define XSPIPS_CR_MODF_GEN_EN_MASK 0x00020000U /**< Modefail Generation
- Enable */
-#define XSPIPS_CR_MANSTRT_MASK 0x00010000U /**< Manual Transmission Start */
-#define XSPIPS_CR_MANSTRTEN_MASK 0x00008000U /**< Manual Transmission Start
- Enable */
-#define XSPIPS_CR_SSFORCE_MASK 0x00004000U /**< Force Slave Select */
-#define XSPIPS_CR_SSCTRL_MASK 0x00003C00U /**< Slave Select Decode */
-#define XSPIPS_CR_SSCTRL_SHIFT 10U /**< Slave Select Decode shift */
-#define XSPIPS_CR_SSCTRL_MAXIMUM 0xFU /**< Slave Select maximum value */
-#define XSPIPS_CR_SSDECEN_MASK 0x00000200U /**< Slave Select Decode Enable */
-
-#define XSPIPS_CR_PRESC_MASK 0x00000038U /**< Prescaler Setting */
-#define XSPIPS_CR_PRESC_SHIFT 3U /**< Prescaler shift */
-#define XSPIPS_CR_PRESC_MAXIMUM 0x07U /**< Prescaler maximum value */
-
-#define XSPIPS_CR_CPHA_MASK 0x00000004U /**< Phase Configuration */
-#define XSPIPS_CR_CPOL_MASK 0x00000002U /**< Polarity Configuration */
-
-#define XSPIPS_CR_MSTREN_MASK 0x00000001U /**< Master Mode Enable */
-#define XSPIPS_CR_RESET_STATE 0x00020000U /**< Mode Fail Generation Enable */
-/* @} */
-
-
-/** @name SPI Interrupt Registers
- *
- * SPI Status Register
- *
- * This register holds the interrupt status flags for an SPI device. Some
- * of the flags are level triggered, which means that they are set as long
- * as the interrupt condition exists. Other flags are edge triggered,
- * which means they are set once the interrupt condition occurs and remain
- * set until they are cleared by software. The interrupts are cleared by
- * writing a '1' to the interrupt bit position in the Status Register.
- * Read/Write.
- *
- * SPI Interrupt Enable Register
- *
- * This register is used to enable chosen interrupts for an SPI device.
- * Writing a '1' to a bit in this register sets the corresponding bit in the
- * SPI Interrupt Mask register. Write only.
- *
- * SPI Interrupt Disable Register
- *
- * This register is used to disable chosen interrupts for an SPI device.
- * Writing a '1' to a bit in this register clears the corresponding bit in the
- * SPI Interrupt Mask register. Write only.
- *
- * SPI Interrupt Mask Register
- *
- * This register shows the enabled/disabled interrupts of an SPI device.
- * Read only.
- *
- * All four registers have the same bit definitions. They are only defined once
- * for each of the Interrupt Enable Register, Interrupt Disable Register,
- * Interrupt Mask Register, and Channel Interrupt Status Register
- * @{
- */
-
-#define XSPIPS_IXR_TXUF_MASK 0x00000040U /**< Tx FIFO Underflow */
-#define XSPIPS_IXR_RXFULL_MASK 0x00000020U /**< Rx FIFO Full */
-#define XSPIPS_IXR_RXNEMPTY_MASK 0x00000010U /**< Rx FIFO Not Empty */
-#define XSPIPS_IXR_TXFULL_MASK 0x00000008U /**< Tx FIFO Full */
-#define XSPIPS_IXR_TXOW_MASK 0x00000004U /**< Tx FIFO Overwater */
-#define XSPIPS_IXR_MODF_MASK 0x00000002U /**< Mode Fault */
-#define XSPIPS_IXR_RXOVR_MASK 0x00000001U /**< Rx FIFO Overrun */
-#define XSPIPS_IXR_DFLT_MASK 0x00000027U /**< Default interrupts
- mask */
-#define XSPIPS_IXR_WR_TO_CLR_MASK 0x00000043U /**< Interrupts which
- need write to clear */
-#define XSPIPS_ISR_RESET_STATE 0x04U /**< Default to tx/rx
- * reg empty */
-#define XSPIPS_IXR_DISABLE_ALL_MASK 0x00000043U /**< Disable all
- * interrupts */
-/* @} */
-
-
-/** @name Enable Register
- *
- * This register is used to enable or disable an SPI device.
- * Read/Write
- * @{
- */
-#define XSPIPS_ER_ENABLE_MASK 0x00000001U /**< SPI Enable Bit Mask */
-/* @} */
-
-
-/** @name Delay Register
- *
- * This register is used to program timing delays in
- * slave mode. Read/Write
- * @{
- */
-#define XSPIPS_DR_NSS_MASK 0xFF000000U /**< Delay for slave select
- * de-assertion between
- * word transfers mask */
-#define XSPIPS_DR_NSS_SHIFT 24U /**< Delay for slave select
- * de-assertion between
- * word transfers shift */
-#define XSPIPS_DR_BTWN_MASK 0x00FF0000U /**< Delay Between Transfers mask */
-#define XSPIPS_DR_BTWN_SHIFT 16U /**< Delay Between Transfers shift */
-#define XSPIPS_DR_AFTER_MASK 0x0000FF00U /**< Delay After Transfers mask */
-#define XSPIPS_DR_AFTER_SHIFT 8U /**< Delay After Transfers shift */
-#define XSPIPS_DR_INIT_MASK 0x000000FFU /**< Delay Initially mask */
-/* @} */
-
-
-/** @name Slave Idle Count Registers
- *
- * This register defines the number of pclk cycles the slave waits for a the
- * SPI clock to become stable in quiescent state before it can detect the start
- * of the next transfer in CPHA = 1 mode.
- * Read/Write
- *
- * @{
- */
-#define XSPIPS_SICR_MASK 0x000000FFU /**< Slave Idle Count Mask */
-/* @} */
-
-
-
-/** @name Transmit FIFO Watermark Register
- *
- * This register defines the watermark setting for the Transmit FIFO. The
- * transmit FIFO is 128 bytes deep, so the register is 7 bits. Valid values
- * are 1 to 128.
- *
- * @{
- */
-#define XSPIPS_TXWR_MASK 0x0000007FU /**< Transmit Watermark Mask */
-#define XSPIPS_TXWR_RESET_VALUE 0x00000001U /**< Transmit Watermark
- * register reset value */
-/* @} */
-
-/** @name Receive FIFO Watermark Register
- *
- * This register defines the watermark setting for the Receive FIFO. The
- * receive FIFO is 128 bytes deep, so the register is 7 bits. Valid values
- * are 1 to 128.
- *
- * @{
- */
-#define XSPIPS_RXWR_MASK 0x0000007FU /**< Receive Watermark Mask */
-#define XSPIPS_RXWR_RESET_VALUE 0x00000001U /**< Receive Watermark
- * register reset value */
-/* @} */
-
-/** @name FIFO Depth
- *
- * This macro provides the depth of transmit FIFO and receive FIFO.
- *
- * @{
- */
-#define XSPIPS_FIFO_DEPTH 128U /**< FIFO depth of Tx and Rx */
-/* @} */
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-#define XSpiPs_In32 Xil_In32
-#define XSpiPs_Out32 Xil_Out32
-
-/****************************************************************************/
-/**
-* Read a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to the target register.
-*
-* @return The value read from the register.
-*
-* @note C-Style signature:
-* u32 XSpiPs_ReadReg(u32 BaseAddress. int RegOffset)
-*
-******************************************************************************/
-#define XSpiPs_ReadReg(BaseAddress, RegOffset) \
- XSpiPs_In32((BaseAddress) + (RegOffset))
-
-/***************************************************************************/
-/**
-* Write to a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to target register.
-* @param RegisterValue is the value to be written to the register.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XSpiPs_WriteReg(u32 BaseAddress, int RegOffset,
-* u32 RegisterValue)
-*
-******************************************************************************/
-#define XSpiPs_WriteReg(BaseAddress, RegOffset, RegisterValue) \
- XSpiPs_Out32((BaseAddress) + (RegOffset), (RegisterValue))
-
-/************************** Function Prototypes ******************************/
-
-void XSpiPs_ResetHw(u32 BaseAddress);
-
-/************************** Variable Definitions *****************************/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xtime_l.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xtime_l.h
deleted file mode 100644
index fd75790a4..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xtime_l.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-* @file xtime_l.h
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- ---------------------------------------------------
-* 5.00 pkp 05/29/14 First release
-*
-*
-* @note None.
-*
-******************************************************************************/
-
-#ifndef XTIME_H /* prevent circular inclusions */
-#define XTIME_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xparameters.h"
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/**************************** Type Definitions *******************************/
-
-typedef u64 XTime;
-
-/************************** Constant Definitions *****************************/
-
-/* Global Timer is always clocked at half of the CPU frequency */
-#define COUNTS_PER_SECOND 0x007A1200U
-
-#define XIOU_SCNTRS_BASEADDR 0XFF260000U
-#define XIOU_SCNTRS_CNT_CNTRL_REG_OFFSET 0x00000000U
-#define XIOU_SCNTRS_FREQ_REG_OFFSET 0x00000020U
-#define XIOU_SCNTRS_FREQ 0x02FAF080U /* 50 MHz */
-#define XIOU_SCNTRS_CNT_CNTRL_REG_EN 0X00000001U
-
-/************************** Variable Definitions *****************************/
-
-/************************** Function Prototypes ******************************/
-
-void XTime_SetTime(XTime Xtime_Global);
-void XTime_GetTime(XTime *Xtime_Global);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* XTIME_H */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xttcps_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xttcps_hw.h
deleted file mode 100644
index 8f12e3c10..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xttcps_hw.h
+++ /dev/null
@@ -1,209 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xttcps_hw.h
-*
-* This file defines the hardware interface to one of the three timer counters
-* in the Ps block.
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- -------------------------------------------------
-* 1.00a drg/jz 01/21/10 First release
-* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
-*
-*
-*
-******************************************************************************/
-
-#ifndef XTTCPS_HW_H /* prevent circular inclusions */
-#define XTTCPS_HW_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xil_io.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Register Map
- *
- * Register offsets from the base address of the device.
- *
- * @{
- */
-#define XTTCPS_CLK_CNTRL_OFFSET 0x00000000U /**< Clock Control Register */
-#define XTTCPS_CNT_CNTRL_OFFSET 0x0000000CU /**< Counter Control Register*/
-#define XTTCPS_COUNT_VALUE_OFFSET 0x00000018U /**< Current Counter Value */
-#define XTTCPS_INTERVAL_VAL_OFFSET 0x00000024U /**< Interval Count Value */
-#define XTTCPS_MATCH_0_OFFSET 0x00000030U /**< Match 1 value */
-#define XTTCPS_MATCH_1_OFFSET 0x0000003CU /**< Match 2 value */
-#define XTTCPS_MATCH_2_OFFSET 0x00000048U /**< Match 3 value */
-#define XTTCPS_ISR_OFFSET 0x00000054U /**< Interrupt Status Register */
-#define XTTCPS_IER_OFFSET 0x00000060U /**< Interrupt Enable Register */
-/* @} */
-
-/** @name Clock Control Register
- * Clock Control Register definitions
- * @{
- */
-#define XTTCPS_CLK_CNTRL_PS_EN_MASK 0x00000001U /**< Prescale enable */
-#define XTTCPS_CLK_CNTRL_PS_VAL_MASK 0x0000001EU /**< Prescale value */
-#define XTTCPS_CLK_CNTRL_PS_VAL_SHIFT 1U /**< Prescale shift */
-#define XTTCPS_CLK_CNTRL_PS_DISABLE 16U /**< Prescale disable */
-#define XTTCPS_CLK_CNTRL_SRC_MASK 0x00000020U /**< Clock source */
-#define XTTCPS_CLK_CNTRL_EXT_EDGE_MASK 0x00000040U /**< External Clock edge */
-/* @} */
-
-/** @name Counter Control Register
- * Counter Control Register definitions
- * @{
- */
-#define XTTCPS_CNT_CNTRL_DIS_MASK 0x00000001U /**< Disable the counter */
-#define XTTCPS_CNT_CNTRL_INT_MASK 0x00000002U /**< Interval mode */
-#define XTTCPS_CNT_CNTRL_DECR_MASK 0x00000004U /**< Decrement mode */
-#define XTTCPS_CNT_CNTRL_MATCH_MASK 0x00000008U /**< Match mode */
-#define XTTCPS_CNT_CNTRL_RST_MASK 0x00000010U /**< Reset counter */
-#define XTTCPS_CNT_CNTRL_EN_WAVE_MASK 0x00000020U /**< Enable waveform */
-#define XTTCPS_CNT_CNTRL_POL_WAVE_MASK 0x00000040U /**< Waveform polarity */
-#define XTTCPS_CNT_CNTRL_RESET_VALUE 0x00000021U /**< Reset value */
-/* @} */
-
-/** @name Current Counter Value Register
- * Current Counter Value Register definitions
- * @{
- */
-#define XTTCPS_COUNT_VALUE_MASK 0x0000FFFFU /**< 16-bit counter value */
-/* @} */
-
-/** @name Interval Value Register
- * Interval Value Register is the maximum value the counter will count up or
- * down to.
- * @{
- */
-#define XTTCPS_INTERVAL_VAL_MASK 0x0000FFFFU /**< 16-bit Interval value*/
-/* @} */
-
-/** @name Match Registers
- * Definitions for Match registers, each timer counter has three match
- * registers.
- * @{
- */
-#define XTTCPS_MATCH_MASK 0x0000FFFFU /**< 16-bit Match value */
-#define XTTCPS_NUM_MATCH_REG 3U /**< Num of Match reg */
-/* @} */
-
-/** @name Interrupt Registers
- * Following register bit mask is for all interrupt registers.
- *
- * @{
- */
-#define XTTCPS_IXR_INTERVAL_MASK 0x00000001U /**< Interval Interrupt */
-#define XTTCPS_IXR_MATCH_0_MASK 0x00000002U /**< Match 1 Interrupt */
-#define XTTCPS_IXR_MATCH_1_MASK 0x00000004U /**< Match 2 Interrupt */
-#define XTTCPS_IXR_MATCH_2_MASK 0x00000008U /**< Match 3 Interrupt */
-#define XTTCPS_IXR_CNT_OVR_MASK 0x00000010U /**< Counter Overflow */
-#define XTTCPS_IXR_ALL_MASK 0x0000001FU /**< All valid Interrupts */
-/* @} */
-
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/****************************************************************************/
-/**
-*
-* Read the given Timer Counter register.
-*
-* @param BaseAddress is the base address of the timer counter device.
-* @param RegOffset is the register offset to be read
-*
-* @return The 32-bit value of the register
-*
-* @note C-style signature:
-* u32 XTtcPs_ReadReg(u32 BaseAddress, u32 RegOffset)
-*
-*****************************************************************************/
-#define XTtcPs_ReadReg(BaseAddress, RegOffset) \
- (Xil_In32((BaseAddress) + (u32)(RegOffset)))
-
-/****************************************************************************/
-/**
-*
-* Write the given Timer Counter register.
-*
-* @param BaseAddress is the base address of the timer counter device.
-* @param RegOffset is the register offset to be written
-* @param Data is the 32-bit value to write to the register
-*
-* @return None.
-*
-* @note C-style signature:
-* void XTtcPs_WriteReg(XTtcPs BaseAddress, u32 RegOffset,
-* u32 Data)
-*
-*****************************************************************************/
-#define XTtcPs_WriteReg(BaseAddress, RegOffset, Data) \
- (Xil_Out32((BaseAddress) + (u32)(RegOffset), (u32)(Data)))
-
-/****************************************************************************/
-/**
-*
-* Calculate a match register offset using the Match Register index.
-*
-* @param MatchIndex is the 0-2 value of the match register
-*
-* @return MATCH_N_OFFSET.
-*
-* @note C-style signature:
-* u32 XTtcPs_Match_N_Offset(u8 MatchIndex)
-*
-*****************************************************************************/
-#define XTtcPs_Match_N_Offset(MatchIndex) \
- ((u32)XTTCPS_MATCH_0_OFFSET + ((u32)(12U) * (u32)(MatchIndex)))
-
-/************************** Function Prototypes ******************************/
-
-/************************** Variable Definitions *****************************/
-#ifdef __cplusplus
-}
-#endif
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xuartps_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xuartps_hw.h
deleted file mode 100644
index a47629dae..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xuartps_hw.h
+++ /dev/null
@@ -1,424 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xuartps_hw.h
-*
-* This header file contains the hardware interface of an XUartPs device.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- ----------------------------------------------
-* 1.00 drg/jz 01/12/10 First Release
-* 1.03a sg 09/04/12 Added defines for XUARTPS_IXR_TOVR, XUARTPS_IXR_TNFUL
-* and XUARTPS_IXR_TTRIG.
-* Modified the names of these defines
-* XUARTPS_MEDEMSR_DCDX to XUARTPS_MODEMSR_DDCD
-* XUARTPS_MEDEMSR_RIX to XUARTPS_MODEMSR_TERI
-* XUARTPS_MEDEMSR_DSRX to XUARTPS_MODEMSR_DDSR
-* XUARTPS_MEDEMSR_CTSX to XUARTPS_MODEMSR_DCTS
-* 1.05a hk 08/22/13 Added prototype for uart reset and related
-* constant definitions.
-* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
-*
-*
-*
-******************************************************************************/
-#ifndef XUARTPS_HW_H /* prevent circular inclusions */
-#define XUARTPS_HW_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xil_io.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Register Map
- *
- * Register offsets for the UART.
- * @{
- */
-#define XUARTPS_CR_OFFSET 0x0000U /**< Control Register [8:0] */
-#define XUARTPS_MR_OFFSET 0x0004U /**< Mode Register [9:0] */
-#define XUARTPS_IER_OFFSET 0x0008U /**< Interrupt Enable [12:0] */
-#define XUARTPS_IDR_OFFSET 0x000CU /**< Interrupt Disable [12:0] */
-#define XUARTPS_IMR_OFFSET 0x0010U /**< Interrupt Mask [12:0] */
-#define XUARTPS_ISR_OFFSET 0x0014U /**< Interrupt Status [12:0]*/
-#define XUARTPS_BAUDGEN_OFFSET 0x0018U /**< Baud Rate Generator [15:0] */
-#define XUARTPS_RXTOUT_OFFSET 0x001CU /**< RX Timeout [7:0] */
-#define XUARTPS_RXWM_OFFSET 0x0020U /**< RX FIFO Trigger Level [5:0] */
-#define XUARTPS_MODEMCR_OFFSET 0x0024U /**< Modem Control [5:0] */
-#define XUARTPS_MODEMSR_OFFSET 0x0028U /**< Modem Status [8:0] */
-#define XUARTPS_SR_OFFSET 0x002CU /**< Channel Status [14:0] */
-#define XUARTPS_FIFO_OFFSET 0x0030U /**< FIFO [7:0] */
-#define XUARTPS_BAUDDIV_OFFSET 0x0034U /**< Baud Rate Divider [7:0] */
-#define XUARTPS_FLOWDEL_OFFSET 0x0038U /**< Flow Delay [5:0] */
-#define XUARTPS_TXWM_OFFSET 0x0044U /**< TX FIFO Trigger Level [5:0] */
-/* @} */
-
-/** @name Control Register
- *
- * The Control register (CR) controls the major functions of the device.
- *
- * Control Register Bit Definition
- */
-
-#define XUARTPS_CR_STOPBRK 0x00000100U /**< Stop transmission of break */
-#define XUARTPS_CR_STARTBRK 0x00000080U /**< Set break */
-#define XUARTPS_CR_TORST 0x00000040U /**< RX timeout counter restart */
-#define XUARTPS_CR_TX_DIS 0x00000020U /**< TX disabled. */
-#define XUARTPS_CR_TX_EN 0x00000010U /**< TX enabled */
-#define XUARTPS_CR_RX_DIS 0x00000008U /**< RX disabled. */
-#define XUARTPS_CR_RX_EN 0x00000004U /**< RX enabled */
-#define XUARTPS_CR_EN_DIS_MASK 0x0000003CU /**< Enable/disable Mask */
-#define XUARTPS_CR_TXRST 0x00000002U /**< TX logic reset */
-#define XUARTPS_CR_RXRST 0x00000001U /**< RX logic reset */
-/* @}*/
-
-
-/** @name Mode Register
- *
- * The mode register (MR) defines the mode of transfer as well as the data
- * format. If this register is modified during transmission or reception,
- * data validity cannot be guaranteed.
- *
- * Mode Register Bit Definition
- * @{
- */
-#define XUARTPS_MR_CCLK 0x00000400U /**< Input clock selection */
-#define XUARTPS_MR_CHMODE_R_LOOP 0x00000300U /**< Remote loopback mode */
-#define XUARTPS_MR_CHMODE_L_LOOP 0x00000200U /**< Local loopback mode */
-#define XUARTPS_MR_CHMODE_ECHO 0x00000100U /**< Auto echo mode */
-#define XUARTPS_MR_CHMODE_NORM 0x00000000U /**< Normal mode */
-#define XUARTPS_MR_CHMODE_SHIFT 8U /**< Mode shift */
-#define XUARTPS_MR_CHMODE_MASK 0x00000300U /**< Mode mask */
-#define XUARTPS_MR_STOPMODE_2_BIT 0x00000080U /**< 2 stop bits */
-#define XUARTPS_MR_STOPMODE_1_5_BIT 0x00000040U /**< 1.5 stop bits */
-#define XUARTPS_MR_STOPMODE_1_BIT 0x00000000U /**< 1 stop bit */
-#define XUARTPS_MR_STOPMODE_SHIFT 6U /**< Stop bits shift */
-#define XUARTPS_MR_STOPMODE_MASK 0x000000A0U /**< Stop bits mask */
-#define XUARTPS_MR_PARITY_NONE 0x00000020U /**< No parity mode */
-#define XUARTPS_MR_PARITY_MARK 0x00000018U /**< Mark parity mode */
-#define XUARTPS_MR_PARITY_SPACE 0x00000010U /**< Space parity mode */
-#define XUARTPS_MR_PARITY_ODD 0x00000008U /**< Odd parity mode */
-#define XUARTPS_MR_PARITY_EVEN 0x00000000U /**< Even parity mode */
-#define XUARTPS_MR_PARITY_SHIFT 3U /**< Parity setting shift */
-#define XUARTPS_MR_PARITY_MASK 0x00000038U /**< Parity mask */
-#define XUARTPS_MR_CHARLEN_6_BIT 0x00000006U /**< 6 bits data */
-#define XUARTPS_MR_CHARLEN_7_BIT 0x00000004U /**< 7 bits data */
-#define XUARTPS_MR_CHARLEN_8_BIT 0x00000000U /**< 8 bits data */
-#define XUARTPS_MR_CHARLEN_SHIFT 1U /**< Data Length shift */
-#define XUARTPS_MR_CHARLEN_MASK 0x00000006U /**< Data length mask */
-#define XUARTPS_MR_CLKSEL 0x00000001U /**< Input clock selection */
-/* @} */
-
-
-/** @name Interrupt Registers
- *
- * Interrupt control logic uses the interrupt enable register (IER) and the
- * interrupt disable register (IDR) to set the value of the bits in the
- * interrupt mask register (IMR). The IMR determines whether to pass an
- * interrupt to the interrupt status register (ISR).
- * Writing a 1 to IER Enbables an interrupt, writing a 1 to IDR disables an
- * interrupt. IMR and ISR are read only, and IER and IDR are write only.
- * Reading either IER or IDR returns 0x00.
- *
- * All four registers have the same bit definitions.
- *
- * @{
- */
-#define XUARTPS_IXR_TOVR 0x00001000U /**< Tx FIFO Overflow interrupt */
-#define XUARTPS_IXR_TNFUL 0x00000800U /**< Tx FIFO Nearly Full interrupt */
-#define XUARTPS_IXR_TTRIG 0x00000400U /**< Tx Trig interrupt */
-#define XUARTPS_IXR_DMS 0x00000200U /**< Modem status change interrupt */
-#define XUARTPS_IXR_TOUT 0x00000100U /**< Timeout error interrupt */
-#define XUARTPS_IXR_PARITY 0x00000080U /**< Parity error interrupt */
-#define XUARTPS_IXR_FRAMING 0x00000040U /**< Framing error interrupt */
-#define XUARTPS_IXR_OVER 0x00000020U /**< Overrun error interrupt */
-#define XUARTPS_IXR_TXFULL 0x00000010U /**< TX FIFO full interrupt. */
-#define XUARTPS_IXR_TXEMPTY 0x00000008U /**< TX FIFO empty interrupt. */
-#define XUARTPS_IXR_RXFULL 0x00000004U /**< RX FIFO full interrupt. */
-#define XUARTPS_IXR_RXEMPTY 0x00000002U /**< RX FIFO empty interrupt. */
-#define XUARTPS_IXR_RXOVR 0x00000001U /**< RX FIFO trigger interrupt. */
-#define XUARTPS_IXR_MASK 0x00001FFFU /**< Valid bit mask */
-/* @} */
-
-
-/** @name Baud Rate Generator Register
- *
- * The baud rate generator control register (BRGR) is a 16 bit register that
- * controls the receiver bit sample clock and baud rate.
- * Valid values are 1 - 65535.
- *
- * Bit Sample Rate = CCLK / BRGR, where the CCLK is selected by the MR_CCLK bit
- * in the MR register.
- * @{
- */
-#define XUARTPS_BAUDGEN_DISABLE 0x00000000U /**< Disable clock */
-#define XUARTPS_BAUDGEN_MASK 0x0000FFFFU /**< Valid bits mask */
-#define XUARTPS_BAUDGEN_RESET_VAL 0x0000028BU /**< Reset value */
-
-/** @name Baud Divisor Rate register
- *
- * The baud rate divider register (BDIV) controls how much the bit sample
- * rate is divided by. It sets the baud rate.
- * Valid values are 0x04 to 0xFF. Writing a value less than 4 will be ignored.
- *
- * Baud rate = CCLK / ((BAUDDIV + 1) x BRGR), where the CCLK is selected by
- * the MR_CCLK bit in the MR register.
- * @{
- */
-#define XUARTPS_BAUDDIV_MASK 0x000000FFU /**< 8 bit baud divider mask */
-#define XUARTPS_BAUDDIV_RESET_VAL 0x0000000FU /**< Reset value */
-/* @} */
-
-
-/** @name Receiver Timeout Register
- *
- * Use the receiver timeout register (RTR) to detect an idle condition on
- * the receiver data line.
- *
- * @{
- */
-#define XUARTPS_RXTOUT_DISABLE 0x00000000U /**< Disable time out */
-#define XUARTPS_RXTOUT_MASK 0x000000FFU /**< Valid bits mask */
-
-/** @name Receiver FIFO Trigger Level Register
- *
- * Use the Receiver FIFO Trigger Level Register (RTRIG) to set the value at
- * which the RX FIFO triggers an interrupt event.
- * @{
- */
-
-#define XUARTPS_RXWM_DISABLE 0x00000000U /**< Disable RX trigger interrupt */
-#define XUARTPS_RXWM_MASK 0x0000003FU /**< Valid bits mask */
-#define XUARTPS_RXWM_RESET_VAL 0x00000020U /**< Reset value */
-/* @} */
-
-/** @name Transmit FIFO Trigger Level Register
- *
- * Use the Transmit FIFO Trigger Level Register (TTRIG) to set the value at
- * which the TX FIFO triggers an interrupt event.
- * @{
- */
-
-#define XUARTPS_TXWM_MASK 0x0000003FU /**< Valid bits mask */
-#define XUARTPS_TXWM_RESET_VAL 0x00000020U /**< Reset value */
-/* @} */
-
-/** @name Modem Control Register
- *
- * This register (MODEMCR) controls the interface with the modem or data set,
- * or a peripheral device emulating a modem.
- *
- * @{
- */
-#define XUARTPS_MODEMCR_FCM 0x00000010U /**< Flow control mode */
-#define XUARTPS_MODEMCR_RTS 0x00000002U /**< Request to send */
-#define XUARTPS_MODEMCR_DTR 0x00000001U /**< Data terminal ready */
-/* @} */
-
-/** @name Modem Status Register
- *
- * This register (MODEMSR) indicates the current state of the control lines
- * from a modem, or another peripheral device, to the CPU. In addition, four
- * bits of the modem status register provide change information. These bits
- * are set to a logic 1 whenever a control input from the modem changes state.
- *
- * Note: Whenever the DCTS, DDSR, TERI, or DDCD bit is set to logic 1, a modem
- * status interrupt is generated and this is reflected in the modem status
- * register.
- *
- * @{
- */
-#define XUARTPS_MODEMSR_FCMS 0x00000100U /**< Flow control mode (FCMS) */
-#define XUARTPS_MODEMSR_DCD 0x00000080U /**< Complement of DCD input */
-#define XUARTPS_MODEMSR_RI 0x00000040U /**< Complement of RI input */
-#define XUARTPS_MODEMSR_DSR 0x00000020U /**< Complement of DSR input */
-#define XUARTPS_MODEMSR_CTS 0x00000010U /**< Complement of CTS input */
-#define XUARTPS_MODEMSR_DDCD 0x00000008U /**< Delta DCD indicator */
-#define XUARTPS_MODEMSR_TERI 0x00000004U /**< Trailing Edge Ring Indicator */
-#define XUARTPS_MODEMSR_DDSR 0x00000002U /**< Change of DSR */
-#define XUARTPS_MODEMSR_DCTS 0x00000001U /**< Change of CTS */
-/* @} */
-
-/** @name Channel Status Register
- *
- * The channel status register (CSR) is provided to enable the control logic
- * to monitor the status of bits in the channel interrupt status register,
- * even if these are masked out by the interrupt mask register.
- *
- * @{
- */
-#define XUARTPS_SR_TNFUL 0x00004000U /**< TX FIFO Nearly Full Status */
-#define XUARTPS_SR_TTRIG 0x00002000U /**< TX FIFO Trigger Status */
-#define XUARTPS_SR_FLOWDEL 0x00001000U /**< RX FIFO fill over flow delay */
-#define XUARTPS_SR_TACTIVE 0x00000800U /**< TX active */
-#define XUARTPS_SR_RACTIVE 0x00000400U /**< RX active */
-#define XUARTPS_SR_DMS 0x00000200U /**< Delta modem status change */
-#define XUARTPS_SR_TOUT 0x00000100U /**< RX timeout */
-#define XUARTPS_SR_PARITY 0x00000080U /**< RX parity error */
-#define XUARTPS_SR_FRAME 0x00000040U /**< RX frame error */
-#define XUARTPS_SR_OVER 0x00000020U /**< RX overflow error */
-#define XUARTPS_SR_TXFULL 0x00000010U /**< TX FIFO full */
-#define XUARTPS_SR_TXEMPTY 0x00000008U /**< TX FIFO empty */
-#define XUARTPS_SR_RXFULL 0x00000004U /**< RX FIFO full */
-#define XUARTPS_SR_RXEMPTY 0x00000002U /**< RX FIFO empty */
-#define XUARTPS_SR_RXOVR 0x00000001U /**< RX FIFO fill over trigger */
-/* @} */
-
-/** @name Flow Delay Register
- *
- * Operation of the flow delay register (FLOWDEL) is very similar to the
- * receive FIFO trigger register. An internal trigger signal activates when the
- * FIFO is filled to the level set by this register. This trigger will not
- * cause an interrupt, although it can be read through the channel status
- * register. In hardware flow control mode, RTS is deactivated when the trigger
- * becomes active. RTS only resets when the FIFO level is four less than the
- * level of the flow delay trigger and the flow delay trigger is not activated.
- * A value less than 4 disables the flow delay.
- * @{
- */
-#define XUARTPS_FLOWDEL_MASK XUARTPS_RXWM_MASK /**< Valid bit mask */
-/* @} */
-
-
-
-/*
- * Defines for backwards compatabilty, will be removed
- * in the next version of the driver
- */
-#define XUARTPS_MEDEMSR_DCDX XUARTPS_MODEMSR_DDCD
-#define XUARTPS_MEDEMSR_RIX XUARTPS_MODEMSR_TERI
-#define XUARTPS_MEDEMSR_DSRX XUARTPS_MODEMSR_DDSR
-#define XUARTPS_MEDEMSR_CTSX XUARTPS_MODEMSR_DCTS
-
-
-
-/**************************** Type Definitions *******************************/
-
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/****************************************************************************/
-/**
-* Read a UART register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the base address of the
-* device.
-*
-* @return The value read from the register.
-*
-* @note C-Style signature:
-* u32 XUartPs_ReadReg(u32 BaseAddress, int RegOffset)
-*
-******************************************************************************/
-#define XUartPs_ReadReg(BaseAddress, RegOffset) \
- Xil_In32((BaseAddress) + (u32)(RegOffset))
-
-/***************************************************************************/
-/**
-* Write a UART register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the base address of the
-* device.
-* @param RegisterValue is the value to be written to the register.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XUartPs_WriteReg(u32 BaseAddress, int RegOffset,
-* u16 RegisterValue)
-*
-******************************************************************************/
-#define XUartPs_WriteReg(BaseAddress, RegOffset, RegisterValue) \
- Xil_Out32((BaseAddress) + (u32)(RegOffset), (u32)(RegisterValue))
-
-/****************************************************************************/
-/**
-* Determine if there is receive data in the receiver and/or FIFO.
-*
-* @param BaseAddress contains the base address of the device.
-*
-* @return TRUE if there is receive data, FALSE otherwise.
-*
-* @note C-Style signature:
-* u32 XUartPs_IsReceiveData(u32 BaseAddress)
-*
-******************************************************************************/
-#define XUartPs_IsReceiveData(BaseAddress) \
- !((Xil_In32((BaseAddress) + XUARTPS_SR_OFFSET) & \
- (u32)XUARTPS_SR_RXEMPTY) == (u32)XUARTPS_SR_RXEMPTY)
-
-/****************************************************************************/
-/**
-* Determine if a byte of data can be sent with the transmitter.
-*
-* @param BaseAddress contains the base address of the device.
-*
-* @return TRUE if the TX FIFO is full, FALSE if a byte can be put in the
-* FIFO.
-*
-* @note C-Style signature:
-* u32 XUartPs_IsTransmitFull(u32 BaseAddress)
-*
-******************************************************************************/
-#define XUartPs_IsTransmitFull(BaseAddress) \
- ((Xil_In32((BaseAddress) + XUARTPS_SR_OFFSET) & \
- (u32)XUARTPS_SR_TXFULL) == (u32)XUARTPS_SR_TXFULL)
-
-/************************** Function Prototypes ******************************/
-
-void XUartPs_SendByte(u32 BaseAddress, u8 Data);
-
-u8 XUartPs_RecvByte(u32 BaseAddress);
-
-void XUartPs_ResetHw(u32 BaseAddress);
-
-/************************** Variable Definitions *****************************/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xusbpsu.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xusbpsu.h
deleted file mode 100644
index a7ad3d7e7..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xusbpsu.h
+++ /dev/null
@@ -1,569 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/****************************************************************************/
-/**
-*
-* @file xusbpsu.h
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ----- -------- -----------------------------------------------------
-* 1.00a bss 01/22/15 First release
-* 1.00a bss 03/18/15 Added support for Non-control endpoints
-* Added mass storage example
-*
-*
-*
-*****************************************************************************/
-#ifndef XUSBPSU_H /* Prevent circular inclusions */
-#define XUSBPSU_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files ********************************/
-#include "xparameters.h"
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xstatus.h"
-#include "xusbpsu_hw.h"
-
-/************************** Constant Definitions ****************************/
-
-#define ALIGNMENT_CACHELINE __attribute__ ((aligned(64)))
-
-#define XUSBPSU_PHY_TIMEOUT 5000 /* in micro seconds */
-
-#define XUSBPSU_EP_DIR_IN 1
-#define XUSBPSU_EP_DIR_OUT 0
-
-#define USB_ENDPOINT_NUMBER_MASK 0x0f /* in bEndpointAddress */
-#define USB_ENDPOINT_DIR_MASK 0x80
-
-#define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */
-#define USB_ENDPOINT_XFER_CONTROL 0
-#define USB_ENDPOINT_XFER_ISOC 1
-#define USB_ENDPOINT_XFER_BULK 2
-#define USB_ENDPOINT_XFER_INT 3
-#define USB_ENDPOINT_MAX_ADJUSTABLE 0x80
-
-#define TEST_J 1
-#define TEST_K 2
-#define TEST_SE0_NAK 3
-#define TEST_PACKET 4
-#define TEST_FORCE_ENABLE 5
-
-#define XUSBPSU_NUM_TRBS 8
-
-#define XUSBPSU_EVENT_PENDING (1 << 0)
-
-#define XUSBPSU_EP_ENABLED (1 << 0)
-#define XUSBPSU_EP_STALL (1 << 1)
-#define XUSBPSU_EP_WEDGE (1 << 2)
-#define XUSBPSU_EP_BUSY (1 << 4)
-#define XUSBPSU_EP_PENDING_REQUEST (1 << 5)
-#define XUSBPSU_EP_MISSED_ISOC (1 << 6)
-
-#define XUSBPSU_GHWPARAMS0 0
-#define XUSBPSU_GHWPARAMS1 1
-#define XUSBPSU_GHWPARAMS2 2
-#define XUSBPSU_GHWPARAMS3 3
-#define XUSBPSU_GHWPARAMS4 4
-#define XUSBPSU_GHWPARAMS5 5
-#define XUSBPSU_GHWPARAMS6 6
-#define XUSBPSU_GHWPARAMS7 7
-
-/* HWPARAMS0 */
-#define XUSBPSU_MODE(n) ((n) & 0x7)
-#define XUSBPSU_MDWIDTH(n) (((n) & 0xff00) >> 8)
-
-/* HWPARAMS1 */
-#define XUSBPSU_NUM_INT(n) (((n) & (0x3f << 15)) >> 15)
-
-/* HWPARAMS3 */
-#define XUSBPSU_NUM_IN_EPS_MASK (0x1f << 18)
-#define XUSBPSU_NUM_EPS_MASK (0x3f << 12)
-#define XUSBPSU_NUM_EPS(p) (((p) & \
- (XUSBPSU_NUM_EPS_MASK)) >> 12)
-#define XUSBPSU_NUM_IN_EPS(p) (((p) & \
- (XUSBPSU_NUM_IN_EPS_MASK)) >> 18)
-
-/* HWPARAMS7 */
-#define XUSBPSU_RAM1_DEPTH(n) ((n) & 0xffff)
-
-#define XUSBPSU_DEPEVT_XFERCOMPLETE 0x01
-#define XUSBPSU_DEPEVT_XFERINPROGRESS 0x02
-#define XUSBPSU_DEPEVT_XFERNOTREADY 0x03
-#define XUSBPSU_DEPEVT_STREAMEVT 0x06
-#define XUSBPSU_DEPEVT_EPCMDCMPLT 0x07
-
-/* Within XferNotReady */
-#define DEPEVT_STATUS_TRANSFER_ACTIVE (1 << 3)
-
-/* Within XferComplete */
-#define DEPEVT_STATUS_BUSERR (1 << 0)
-#define DEPEVT_STATUS_SHORT (1 << 1)
-#define DEPEVT_STATUS_IOC (1 << 2)
-#define DEPEVT_STATUS_LST (1 << 3)
-
-/* Stream event only */
-#define DEPEVT_STREAMEVT_FOUND 1
-#define DEPEVT_STREAMEVT_NOTFOUND 2
-
-/* Control-only Status */
-#define DEPEVT_STATUS_CONTROL_DATA 1
-#define DEPEVT_STATUS_CONTROL_STATUS 2
-#define DEPEVT_STATUS_CONTROL_DATA_INVALTRB 9
-#define DEPEVT_STATUS_CONTROL_STATUS_INVALTRB 0xA
-
-#define XUSBPSU_ENDPOINTS_NUM 12
-
-#define XUSBPSU_EVENT_SIZE 4 /* bytes */
-#define XUSBPSU_EVENT_MAX_NUM 64 /* 2 events/endpoint */
-#define XUSBPSU_EVENT_BUFFERS_SIZE (XUSBPSU_EVENT_SIZE * \
- XUSBPSU_EVENT_MAX_NUM)
-
-#define XUSBPSU_EVENT_TYPE_MASK 0xfe
-
-#define XUSBPSU_EVENT_TYPE_DEV 0
-#define XUSBPSU_EVENT_TYPE_CARKIT 3
-#define XUSBPSU_EVENT_TYPE_I2C 4
-
-#define XUSBPSU_DEVICE_EVENT_DISCONNECT 0
-#define XUSBPSU_DEVICE_EVENT_RESET 1
-#define XUSBPSU_DEVICE_EVENT_CONNECT_DONE 2
-#define XUSBPSU_DEVICE_EVENT_LINK_STATUS_CHANGE 3
-#define XUSBPSU_DEVICE_EVENT_WAKEUP 4
-#define XUSBPSU_DEVICE_EVENT_HIBER_REQ 5
-#define XUSBPSU_DEVICE_EVENT_EOPF 6
-#define XUSBPSU_DEVICE_EVENT_SOF 7
-#define XUSBPSU_DEVICE_EVENT_ERRATIC_ERROR 9
-#define XUSBPSU_DEVICE_EVENT_CMD_CMPL 10
-#define XUSBPSU_DEVICE_EVENT_OVERFLOW 11
-
-#define XUSBPSU_GEVNTCOUNT_MASK 0xfffc
-
-/*
- * Control Endpoint state
- */
-#define XUSBPSU_EP0_SETUP_PHASE 1 /**< Setup Phase */
-#define XUSBPSU_EP0_DATA_PHASE 2 /**< Data Phase */
-#define XUSBPSU_EP0_STATUS_PHASE 3 /**< Status Pahse */
-
-/*
- * Link State
- */
-#define XUSBPSU_LINK_STATE_U0 0x00 /**< in HS - ON */
-#define XUSBPSU_LINK_STATE_U1 0x01
-#define XUSBPSU_LINK_STATE_U2 0x02 /**< in HS - SLEEP */
-#define XUSBPSU_LINK_STATE_U3 0x03 /**< in HS - SUSPEND */
-#define XUSBPSU_LINK_STATE_SS_DIS 0x04
-#define XUSBPSU_LINK_STATE_RX_DET 0x05
-#define XUSBPSU_LINK_STATE_SS_INACT 0x06
-#define XUSBPSU_LINK_STATE_POLL 0x07
-#define XUSBPSU_LINK_STATE_RECOV 0x08
-#define XUSBPSU_LINK_STATE_HRESET 0x09
-#define XUSBPSU_LINK_STATE_CMPLY 0x0A
-#define XUSBPSU_LINK_STATE_LPBK 0x0B
-#define XUSBPSU_LINK_STATE_RESET 0x0E
-#define XUSBPSU_LINK_STATE_RESUME 0x0F
-#define XUSBPSU_LINK_STATE_MASK 0x0F
-
-/*
- * Device States
- */
-#define XUSBPSU_STATE_ATTACHED 0
-#define XUSBPSU_STATE_POWERED 1
-#define XUSBPSU_STATE_DEFAULT 2
-#define XUSBPSU_STATE_ADDRESS 3
-#define XUSBPSU_STATE_CONFIGURED 4
-#define XUSBPSU_STATE_SUSPENDED 5
-
-/*
- * Device Speeds
- */
-#define XUSBPSU_SPEED_UNKNOWN 0
-#define XUSBPSU_SPEED_LOW 1
-#define XUSBPSU_SPEED_FULL 2
-#define XUSBPSU_SPEED_HIGH 3
-#define XUSBPSU_SPEED_SUPER 4
-
-
-
-/**************************** Type Definitions ******************************/
-
-/**
- * This typedef contains configuration information for the XUSBPSU
- * device.
- */
-typedef struct {
- u16 DeviceId; /**< Unique ID of controller */
- u32 BaseAddress; /**< Core register base address */
-} XUsbPsu_Config;
-
-/**
- * Software Event buffer representation
- */
-struct XUsbPsu_EvtBuffer {
- void *BuffAddr;
- u32 Offset;
- u32 Count;
- u32 Flags;
-};
-
-/**
- * Transfer Request Block - Hardware format
- */
-struct XUsbPsu_Trb {
- u32 BufferPtrLow;
- u32 BufferPtrHigh;
- u32 Size;
- u32 Ctrl;
-} __attribute__((packed));
-
-
-/*
- * Endpoint Parameters
- */
-struct XUsbPsu_EpParams {
- u32 Param2; /**< Parameter 2 */
- u32 Param1; /**< Parameter 1 */
- u32 Param0; /**< Parameter 0 */
-};
-
-/**
- * USB Standard Control Request
- */
-typedef struct {
- u8 bRequestType;
- u8 bRequest;
- u16 wValue;
- u16 wIndex;
- u16 wLength;
-} __attribute__ ((packed)) SetupPacket;
-
-/**
- * Endpoint representation
- */
-struct XUsbPsu_Ep {
- void (*Handler)(void *, u32, u32);
- /** < User handler called
- * when data is sent for IN Ep
- * and received for OUT Ep
- */
- struct XUsbPsu_Trb EpTrb ALIGNMENT_CACHELINE;/**< TRB used by endpoint */
- u32 EpStatus; /**< Flags to represent Endpoint status */
- u32 RequestedBytes; /**< RequestedBytes for transfer */
- u32 BytesTxed; /**< Actual Bytes transferred */
- u32 Cmd; /**< command issued to EP lately */
- u16 MaxSize; /**< Size of endpoint */
- u8 *BufferPtr; /**< Buffer location */
- u8 ResourceIndex; /**< Resource Index assigned to
- * Endpoint by core
- */
- u8 PhyEpNum; /**< Physical Endpoint Number in core */
- u8 UsbEpNum; /**< USB Endpoint Number */
- u8 Type; /**< Type of Endpoint -
- * Control/BULK/INTERRUPT/ISOC
- */
- u8 Direction; /**< Direction - EP_DIR_OUT/EP_DIR_IN */
- u8 UnalignedTx;
-};
-
-/**
- * USB Device Controller representation
- */
-struct XUsbPsu {
- SetupPacket SetupData ALIGNMENT_CACHELINE;
- /**< Setup Packet buffer */
- struct XUsbPsu_Trb Ep0_Trb ALIGNMENT_CACHELINE;
- /**< TRB for control transfers */
- XUsbPsu_Config *ConfigPtr; /**< Configuration info pointer */
- struct XUsbPsu_Ep eps[XUSBPSU_ENDPOINTS_NUM]; /**< Endpoints */
- struct XUsbPsu_EvtBuffer Evt;
- struct XUsbPsu_EpParams EpParams;
- u32 BaseAddress; /**< Core register base address */
- u32 MaxSpeed;
- u32 DevDescSize;
- u32 ConfigDescSize;
- void (*Chapter9)(struct XUsbPsu *, SetupPacket *);
- void (*ClassHandler)(struct XUsbPsu *, SetupPacket *);
- void *DevDesc;
- void *ConfigDesc;
- u8 EventBuffer[XUSBPSU_EVENT_BUFFERS_SIZE]
- __attribute__((aligned(XUSBPSU_EVENT_BUFFERS_SIZE)));
- u8 NumOutEps;
- u8 NumInEps;
- u8 ControlDir;
- u8 IsInTestMode;
- u8 TestMode;
- u8 Speed;
- u8 State;
- u8 Ep0State;
- u8 LinkState;
- u8 UnalignedTx;
- u8 IsConfigDone;
- u8 IsThreeStage;
-};
-
-struct XUsbPsu_Event_Type {
- u32 Is_DevEvt:1;
- u32 Type:7;
- u32 Reserved8_31:24;
-} __attribute__((packed));
-
-/**
- * struct XUsbPsu_event_depvt - Device Endpoint Events
- * @Is_EpEvt: indicates this is an endpoint event
- * @endpoint_number: number of the endpoint
- * @endpoint_event: The event we have:
- * 0x00 - Reserved
- * 0x01 - XferComplete
- * 0x02 - XferInProgress
- * 0x03 - XferNotReady
- * 0x04 - RxTxFifoEvt (IN->Underrun, OUT->Overrun)
- * 0x05 - Reserved
- * 0x06 - StreamEvt
- * 0x07 - EPCmdCmplt
- * @Reserved11_10: Reserved, don't use.
- * @Status: Indicates the status of the event. Refer to databook for
- * more information.
- * @Parameters: Parameters of the current event. Refer to databook for
- * more information.
- */
-struct XUsbPsu_Event_Epevt {
- u32 Is_EpEvt:1;
- u32 Epnumber:5;
- u32 Endpoint_Event:4;
- u32 Reserved11_10:2;
- u32 Status:4;
- u32 Parameters:16;
-} __attribute__((packed));
-
-/**
- * struct XUsbPsu_event_devt - Device Events
- * @Is_DevEvt: indicates this is a non-endpoint event
- * @Device_Event: indicates it's a device event. Should read as 0x00
- * @Type: indicates the type of device event.
- * 0 - DisconnEvt
- * 1 - USBRst
- * 2 - ConnectDone
- * 3 - ULStChng
- * 4 - WkUpEvt
- * 5 - Reserved
- * 6 - EOPF
- * 7 - SOF
- * 8 - Reserved
- * 9 - ErrticErr
- * 10 - CmdCmplt
- * 11 - EvntOverflow
- * 12 - VndrDevTstRcved
- * @Reserved15_12: Reserved, not used
- * @Event_Info: Information about this event
- * @Reserved31_25: Reserved, not used
- */
-struct XUsbPsu_Event_Devt {
- u32 Is_DevEvt:1;
- u32 Device_Event:7;
- u32 Type:4;
- u32 Reserved15_12:4;
- u32 Event_Info:9;
- u32 Reserved31_25:7;
-} __attribute__((packed));
-
-/**
- * struct XUsbPsu_event_gevt - Other Core Events
- * @one_bit: indicates this is a non-endpoint event (not used)
- * @device_event: indicates it's (0x03) Carkit or (0x04) I2C event.
- * @phy_port_number: self-explanatory
- * @reserved31_12: Reserved, not used.
- */
-struct XUsbPsu_Event_Gevt {
- u32 Is_GlobalEvt:1;
- u32 Device_Event:7;
- u32 Phy_Port_Number:4;
- u32 Reserved31_12:20;
-} __attribute__((packed));
-
-/**
- * union XUsbPsu_event - representation of Event Buffer contents
- * @raw: raw 32-bit event
- * @type: the type of the event
- * @depevt: Device Endpoint Event
- * @devt: Device Event
- * @gevt: Global Event
- */
-union XUsbPsu_Event {
- u32 Raw;
- struct XUsbPsu_Event_Type Type;
- struct XUsbPsu_Event_Epevt Epevt;
- struct XUsbPsu_Event_Devt Devt;
- struct XUsbPsu_Event_Gevt Gevt;
-};
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-#define IS_ALIGNED(x, a) (((x) & ((typeof(x))(a) - 1)) == 0)
-
-#define roundup(x, y) ( \
-{ \
- const typeof(y) __y = y; \
- (((x) + (__y - 1)) / __y) * __y; \
-} \
-)
-
-#define DECLARE_DEV_DESC(Instance, desc) \
- (Instance).DevDesc = &(desc); \
- (Instance).DevDescSize = sizeof((desc))
-
-#define DECLARE_CONFIG_DESC(Instance, desc) \
- (Instance).ConfigDesc = &(desc); \
- (Instance).ConfigDescSize = sizeof((desc))
-
-/************************** Function Prototypes ******************************/
-
-/*
- * Functions in xusbpsu.c
- */
-int XUsbPsu_Wait_Clear_Timeout(struct XUsbPsu *InstancePtr, u32 Offset,
- u32 BitMask, u32 Timeout);
-int XUsbPsu_Wait_Set_Timeout(struct XUsbPsu *InstancePtr, u32 Offset,
- u32 BitMask, u32 Timeout);
-void XUsbPsu_SetMode(struct XUsbPsu *InstancePtr, u32 mode);
-void XUsbPsu_PhyReset(struct XUsbPsu *InstancePtr);
-void XUsbPsu_EventBuffersSetup(struct XUsbPsu *InstancePtr);
-void XUsbPsu_EventBuffersReset(struct XUsbPsu *InstancePtr);
-void XUsbPsu_CoreNumEps(struct XUsbPsu *InstancePtr);
-void XUsbPsu_cache_hwparams(struct XUsbPsu *InstancePtr);
-int XUsbPsu_CoreInit(struct XUsbPsu *InstancePtr);
-void XUsbPsu_EnableIntr(struct XUsbPsu *InstancePtr, u32 Mask);
-void XUsbPsu_DisableIntr(struct XUsbPsu *InstancePtr, u32 Mask);
-int XUsbPsu_CfgInitialize(struct XUsbPsu *InstancePtr,
- XUsbPsu_Config *ConfigPtr, u32 BaseAddress);
-int XUsbPsu_Start(struct XUsbPsu *InstancePtr);
-int XUsbPsu_Stop(struct XUsbPsu *InstancePtr);
-int XUsbPsu_SetTestMode(struct XUsbPsu *InstancePtr, int mode);
-u32 XUsbPsu_GetLinkState(struct XUsbPsu *InstancePtr);
-int XUsbPsu_SetLinkState(struct XUsbPsu *InstancePtr,
- u8 state);
-int XUsbPsu_SendGenericCmd(struct XUsbPsu *InstancePtr,
- int cmd, u32 param);
-void XUsbPsu_SetSpeed(struct XUsbPsu *InstancePtr, u32 Speed);
-int XUsbPsu_SetDeviceAddress(struct XUsbPsu *InstancePtr, u16 Addr);
-
-/*
- * Functions in xusbpsu_endpoint.c
- */
-struct XUsbPsu_EpParams *XUsbPsu_GetEpParams(struct XUsbPsu *InstancePtr);
-u32 XUsbPsu_EpGetTransferIndex(struct XUsbPsu *InstancePtr, u8 UsbEpNum,
- u8 dir);
-const char *XUsbPsu_EpCmdString(u8 cmd);
-int XUsbPsu_SendEpCmd(struct XUsbPsu *InstancePtr, u8 ep, u8 direction,
- u32 cmd, struct XUsbPsu_EpParams *params);
-int XUsbPsu_StartEpConfig(struct XUsbPsu *InstancePtr, u32 ep,
- u8 dir);
-int XUsbPsu_SetEpConfig(struct XUsbPsu *InstancePtr, u8 ep, u8 dir,
- u16 size, u8 type);
-int XUsbPsu_SetXferResource(struct XUsbPsu *InstancePtr, u8 ep, u8 dir);
-int XUsbPsu_EpEnable(struct XUsbPsu *InstancePtr, u8 UsbEp, u8 dir,
- u16 maxsize, u8 type);
-int XUsbPsu_EpDisable(struct XUsbPsu *InstancePtr, u8 UsbEp, u8 dir);
-int XUsbPsu_EnableControlEp(struct XUsbPsu *InstancePtr, u16 size);
-void XUsbPsu_InitializeEps(struct XUsbPsu *InstancePtr);
-void XUsbPsu_StopTransfer(struct XUsbPsu *InstancePtr, u8 ep, u8 dir);
-void XUsbPsu_ClearStalls(struct XUsbPsu *InstancePtr);
-int XUsbPsu_EpBufferSend(struct XUsbPsu *InstancePtr, u8 EpNum,
- u8 *BufferPtr, u32 BufferLen);
-int XUsbPsu_EpBufferRecv(struct XUsbPsu *InstancePtr, u8 EpNum,
- u8 *BufferPtr, u32 length);
-void XUsbPsu_EpSetStall(struct XUsbPsu *InstancePtr, u8 epnum, u8 Dir);
-void XUsbPsu_EpClearStall(struct XUsbPsu *InstancePtr, u8 epnum, u8 Dir);
-void XUsbPsu_SetEpHandler(struct XUsbPsu *InstancePtr, u8 epnum,
- u8 dir, void (*Handler)(void *, u32, u32));
-int XUsbPsu_IsEpStalled(struct XUsbPsu *InstancePtr, u8 Epnum, u8 Dir);
-
-/*
- * Functions in xusbpsu_controltransfers.c
- */
-int XUsbPsu_RecvSetup(struct XUsbPsu *InstancePtr);
-void XUsbPsu_Ep0StallRestart(struct XUsbPsu *InstancePtr);
-int XUsbPsu_SetConfiguration(struct XUsbPsu *InstancePtr,
- SetupPacket *ctrl);
-void XUsbPsu_Ep0DataDone(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *event);
-void XUsbPsu_Ep0StatusDone(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *event);
-void XUsbPsu_Ep0XferComplete(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *event);
-int XUsbPsu_Ep0StartStatus(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *event);
-void XUsbPsu_Ep0_EndControlData(struct XUsbPsu *InstancePtr,
- struct XUsbPsu_Ep *dep);
-void XUsbPsu_Ep0XferNotReady(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *event);
-void XUsbPsu_Ep0Intr(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *event);
-int XUsbPsu_Ep0Send(struct XUsbPsu *InstancePtr, u8 *BufferPtr,
- u32 BufferLen);
-int XUsbPsu_Ep0Recv(struct XUsbPsu *InstancePtr, u8 *BufferPtr, u32 Length);
-
-/*
- * Functions in xusbpsu_intr.c
- */
-void XUsbPsu_EpInterrupt(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *event);
-void XUsbPsu_DisconnectIntr(struct XUsbPsu *InstancePtr);
-void XUsbPsu_ResetIntr(struct XUsbPsu *InstancePtr);
-void XUsbPsu_ConnDoneIntr(struct XUsbPsu *InstancePtr);
-void XUsbPsu_LinkStsChangeIntr(struct XUsbPsu *InstancePtr,
- u32 evtinfo);
-void XUsbPsu_DevInterrupt(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Devt *event);
-void XUsbPsu_ProcessEvent(struct XUsbPsu *InstancePtr,
- const union XUsbPsu_Event *event);
-void XUsbPsu_ProcessEvtBuffer(struct XUsbPsu *InstancePtr);
-void XUsbPsu_IntrHandler(void *XUsbPsu);
-
-/*
- * Functions in xusbpsu_sinit.c
- */
-XUsbPsu_Config *XUsbPsu_LookupConfig(u16 DeviceId);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* End of protection macro. */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xusbpsu_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xusbpsu_hw.h
deleted file mode 100644
index cd5cd33ec..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xusbpsu_hw.h
+++ /dev/null
@@ -1,457 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/****************************************************************************/
-/**
-*
-* @file xusbpsu_hw.h
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ----- -------- -----------------------------------------------------
-* 1.00a bss 01/22/15 First release
-*
-*
-*
-*****************************************************************************/
-
-#ifndef XUSBPSU_HW_H /* Prevent circular inclusions */
-#define XUSBPSU_HW_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files ********************************/
-
-/************************** Constant Definitions ****************************/
-
-/**@name Register offsets
- *
- * The following constants provide access to each of the registers of the
- * USBPSU device.
- * @{
- */
-
-/* XUSBPSU registers memory space boundries */
-#define XUSBPSU_GLOBALS_REGS_START 0xc100
-#define XUSBPSU_GLOBALS_REGS_END 0xc6ff
-#define XUSBPSU_DEVICE_REGS_START 0xc700
-#define XUSBPSU_DEVICE_REGS_END 0xcbff
-#define XUSBPSU_OTG_REGS_START 0xcc00
-#define XUSBPSU_OTG_REGS_END 0xccff
-
-/* Global Registers */
-#define XUSBPSU_GSBUSCFG0 0xc100
-#define XUSBPSU_GSBUSCFG1 0xc104
-#define XUSBPSU_GTXTHRCFG 0xc108
-#define XUSBPSU_GRXTHRCFG 0xc10c
-#define XUSBPSU_GCTL 0xc110
-#define XUSBPSU_GEVTEN 0xc114
-#define XUSBPSU_GSTS 0xc118
-#define XUSBPSU_GSNPSID 0xc120
-#define XUSBPSU_GGPIO 0xc124
-#define XUSBPSU_GUID 0xc128
-#define XUSBPSU_GUCTL 0xc12c
-#define XUSBPSU_GBUSERRADDR0 0xc130
-#define XUSBPSU_GBUSERRADDR1 0xc134
-#define XUSBPSU_GPRTBIMAP0 0xc138
-#define XUSBPSU_GPRTBIMAP1 0xc13c
-#define XUSBPSU_GHWPARAMS0_OFFSET 0xc140
-#define XUSBPSU_GHWPARAMS1_OFFSET 0xc144
-#define XUSBPSU_GHWPARAMS2_OFFSET 0xc148
-#define XUSBPSU_GHWPARAMS3_OFFSET 0xc14c
-#define XUSBPSU_GHWPARAMS4_OFFSET 0xc150
-#define XUSBPSU_GHWPARAMS5_OFFSET 0xc154
-#define XUSBPSU_GHWPARAMS6_OFFSET 0xc158
-#define XUSBPSU_GHWPARAMS7_OFFSET 0xc15c
-#define XUSBPSU_GDBGFIFOSPACE 0xc160
-#define XUSBPSU_GDBGLTSSM 0xc164
-#define XUSBPSU_GPRTBIMAP_HS0 0xc180
-#define XUSBPSU_GPRTBIMAP_HS1 0xc184
-#define XUSBPSU_GPRTBIMAP_FS0 0xc188
-#define XUSBPSU_GPRTBIMAP_FS1 0xc18c
-
-#define XUSBPSU_GUSB2PHYCFG(n) (0xc200 + (n * 0x04))
-#define XUSBPSU_GUSB2I2CCTL(n) (0xc240 + (n * 0x04))
-
-#define XUSBPSU_GUSB2PHYACC(n) (0xc280 + (n * 0x04))
-
-#define XUSBPSU_GUSB3PIPECTL(n) (0xc2c0 + (n * 0x04))
-
-#define XUSBPSU_GTXFIFOSIZ(n) (0xc300 + (n * 0x04))
-#define XUSBPSU_GRXFIFOSIZ(n) (0xc380 + (n * 0x04))
-
-#define XUSBPSU_GEVNTADRLO(n) (0xc400 + (n * 0x10))
-#define XUSBPSU_GEVNTADRHI(n) (0xc404 + (n * 0x10))
-#define XUSBPSU_GEVNTSIZ(n) (0xc408 + (n * 0x10))
-#define XUSBPSU_GEVNTCOUNT(n) (0xc40c + (n * 0x10))
-
-#define XUSBPSU_GHWPARAMS8 0xc600
-
-/* Device Registers */
-#define XUSBPSU_DCFG 0xc700
-#define XUSBPSU_DCTL 0xc704
-#define XUSBPSU_DEVTEN 0xc708
-#define XUSBPSU_DSTS 0xc70c
-#define XUSBPSU_DGCMDPAR 0xc710
-#define XUSBPSU_DGCMD 0xc714
-#define XUSBPSU_DALEPENA 0xc720
-#define XUSBPSU_DEPCMDPAR2(n) (0xc800 + (n * 0x10))
-#define XUSBPSU_DEPCMDPAR1(n) (0xc804 + (n * 0x10))
-#define XUSBPSU_DEPCMDPAR0(n) (0xc808 + (n * 0x10))
-#define XUSBPSU_DEPCMD(n) (0xc80c + (n * 0x10))
-
-/* OTG Registers */
-#define XUSBPSU_OCFG 0xcc00
-#define XUSBPSU_OCTL 0xcc04
-#define XUSBPSU_OEVT 0xcc08
-#define XUSBPSU_OEVTEN 0xcc0C
-#define XUSBPSU_OSTS 0xcc10
-
-/* Bit fields */
-
-/* Global Configuration Register */
-#define XUSBPSU_GCTL_PWRDNSCALE(n) ((n) << 19)
-#define XUSBPSU_GCTL_U2RSTECN (1 << 16)
-#define XUSBPSU_GCTL_RAMCLKSEL(x) (((x) & XUSBPSU_GCTL_CLK_MASK) << 6)
-#define XUSBPSU_GCTL_CLK_BUS (0)
-#define XUSBPSU_GCTL_CLK_PIPE (1)
-#define XUSBPSU_GCTL_CLK_PIPEHALF (2)
-#define XUSBPSU_GCTL_CLK_MASK (3)
-
-#define XUSBPSU_GCTL_PRTCAP(n) (((n) & (3 << 12)) >> 12)
-#define XUSBPSU_GCTL_PRTCAPDIR(n) ((n) << 12)
-#define XUSBPSU_GCTL_PRTCAP_HOST 1
-#define XUSBPSU_GCTL_PRTCAP_DEVICE 2
-#define XUSBPSU_GCTL_PRTCAP_OTG 3
-
-#define XUSBPSU_GCTL_CORESOFTRESET (1 << 11)
-#define XUSBPSU_GCTL_SOFITPSYNC (1 << 10)
-#define XUSBPSU_GCTL_SCALEDOWN(n) ((n) << 4)
-#define XUSBPSU_GCTL_SCALEDOWN_MASK XUSBPSU_GCTL_SCALEDOWN(3)
-#define XUSBPSU_GCTL_DISSCRAMBLE (1 << 3)
-#define XUSBPSU_GCTL_GBLHIBERNATIONEN (1 << 1)
-#define XUSBPSU_GCTL_DSBLCLKGTNG (1 << 0)
-
-/* Global Status Register Device Interrupt Mask */
-#define XUSBPSU_GSTS_DEVICE_IP_MASK 0x00000040
-
-/* Global USB2 PHY Configuration Register */
-#define XUSBPSU_GUSB2PHYCFG_PHYSOFTRST (1 << 31)
-#define XUSBPSU_GUSB2PHYCFG_SUSPHY (1 << 6)
-
-/* Global USB3 PIPE Control Register */
-#define XUSBPSU_GUSB3PIPECTL_PHYSOFTRST (1 << 31)
-#define XUSBPSU_GUSB3PIPECTL_SUSPHY (1 << 17)
-
-/* Global TX Fifo Size Register */
-#define XUSBPSU_GTXFIFOSIZ_TXFDEF(n) ((n) & 0xffff)
-#define XUSBPSU_GTXFIFOSIZ_TXFSTADDR(n) ((n) & 0xffff0000)
-
-/* Global Event Size Registers */
-#define XUSBPSU_GEVNTSIZ_INTMASK (1 << 31)
-#define XUSBPSU_GEVNTSIZ_SIZE(n) ((n) & 0xffff)
-
-/* Global HWPARAMS1 Register */
-#define XUSBPSU_GHWPARAMS1_EN_PWROPT(n) (((n) & (3 << 24)) >> 24)
-#define XUSBPSU_GHWPARAMS1_EN_PWROPT_NO 0
-#define XUSBPSU_GHWPARAMS1_EN_PWROPT_CLK 1
-#define XUSBPSU_GHWPARAMS1_EN_PWROPT_HIB 2
-#define XUSBPSU_GHWPARAMS1_PWROPT(n) ((n) << 24)
-#define XUSBPSU_GHWPARAMS1_PWROPT_MASK XUSBPSU_GHWPARAMS1_PWROPT(3)
-
-/* Global HWPARAMS4 Register */
-#define XUSBPSU_GHWPARAMS4_HIBER_SCRATCHBUFS(n) (((n) & (0x0f << 13)) >> 13)
-#define XUSBPSU_MAX_HIBER_SCRATCHBUFS 15
-
-/* Device Configuration Register */
-#define XUSBPSU_DCFG_DEVADDR(addr) ((addr) << 3)
-#define XUSBPSU_DCFG_DEVADDR_MASK XUSBPSU_DCFG_DEVADDR(0x7f)
-
-#define XUSBPSU_DCFG_SPEED_MASK 7
-#define XUSBPSU_DCFG_SUPERSPEED 4
-#define XUSBPSU_DCFG_HIGHSPEED 0
-#define XUSBPSU_DCFG_FULLSPEED2 1
-#define XUSBPSU_DCFG_LOWSPEED 2
-#define XUSBPSU_DCFG_FULLSPEED1 3
-
-#define XUSBPSU_DCFG_LPM_CAP (1 << 22)
-
-/* Device Control Register */
-#define XUSBPSU_DCTL_RUN_STOP (1 << 31)
-#define XUSBPSU_DCTL_CSFTRST (1 << 30)
-#define XUSBPSU_DCTL_LSFTRST (1 << 29)
-
-#define XUSBPSU_DCTL_HIRD_THRES_MASK (0x1f << 24)
-#define XUSBPSU_DCTL_HIRD_THRES(n) ((n) << 24)
-
-#define XUSBPSU_DCTL_APPL1RES (1 << 23)
-
-/* These apply for core versions 1.87a and earlier */
-#define XUSBPSU_DCTL_TRGTULST_MASK (0x0f << 17)
-#define XUSBPSU_DCTL_TRGTULST(n) ((n) << 17)
-#define XUSBPSU_DCTL_TRGTULST_U2 (XUSBPSU_DCTL_TRGTULST(2))
-#define XUSBPSU_DCTL_TRGTULST_U3 (XUSBPSU_DCTL_TRGTULST(3))
-#define XUSBPSU_DCTL_TRGTULST_SS_DIS (XUSBPSU_DCTL_TRGTULST(4))
-#define XUSBPSU_DCTL_TRGTULST_RX_DET (XUSBPSU_DCTL_TRGTULST(5))
-#define XUSBPSU_DCTL_TRGTULST_SS_INACT (XUSBPSU_DCTL_TRGTULST(6))
-
-/* These apply for core versions 1.94a and later */
-#define XUSBPSU_DCTL_KEEP_CONNECT (1 << 19)
-#define XUSBPSU_DCTL_L1_HIBER_EN (1 << 18)
-#define XUSBPSU_DCTL_CRS (1 << 17)
-#define XUSBPSU_DCTL_CSS (1 << 16)
-
-#define XUSBPSU_DCTL_INITU2ENA (1 << 12)
-#define XUSBPSU_DCTL_ACCEPTU2ENA (1 << 11)
-#define XUSBPSU_DCTL_INITU1ENA (1 << 10)
-#define XUSBPSU_DCTL_ACCEPTU1ENA (1 << 9)
-#define XUSBPSU_DCTL_TSTCTRL_MASK (0xf << 1)
-
-#define XUSBPSU_DCTL_ULSTCHNGREQ_MASK (0x0f << 5)
-#define XUSBPSU_DCTL_ULSTCHNGREQ(n) (((n) << 5) & XUSBPSU_DCTL_ULSTCHNGREQ_MASK)
-
-#define XUSBPSU_DCTL_ULSTCHNG_NO_ACTION (XUSBPSU_DCTL_ULSTCHNGREQ(0))
-#define XUSBPSU_DCTL_ULSTCHNG_SS_DISABLED (XUSBPSU_DCTL_ULSTCHNGREQ(4))
-#define XUSBPSU_DCTL_ULSTCHNG_RX_DETECT (XUSBPSU_DCTL_ULSTCHNGREQ(5))
-#define XUSBPSU_DCTL_ULSTCHNG_SS_INACTIVE (XUSBPSU_DCTL_ULSTCHNGREQ(6))
-#define XUSBPSU_DCTL_ULSTCHNG_RECOVERY (XUSBPSU_DCTL_ULSTCHNGREQ(8))
-#define XUSBPSU_DCTL_ULSTCHNG_COMPLIANCE (XUSBPSU_DCTL_ULSTCHNGREQ(10))
-#define XUSBPSU_DCTL_ULSTCHNG_LOOPBACK (XUSBPSU_DCTL_ULSTCHNGREQ(11))
-
-/* Device Event Enable Register */
-#define XUSBPSU_DEVTEN_VNDRDEVTSTRCVEDEN (1 << 12)
-#define XUSBPSU_DEVTEN_EVNTOVERFLOWEN (1 << 11)
-#define XUSBPSU_DEVTEN_CMDCMPLTEN (1 << 10)
-#define XUSBPSU_DEVTEN_ERRTICERREN (1 << 9)
-#define XUSBPSU_DEVTEN_SOFEN (1 << 7)
-#define XUSBPSU_DEVTEN_EOPFEN (1 << 6)
-#define XUSBPSU_DEVTEN_HIBERNATIONREQEVTEN (1 << 5)
-#define XUSBPSU_DEVTEN_WKUPEVTEN (1 << 4)
-#define XUSBPSU_DEVTEN_ULSTCNGEN (1 << 3)
-#define XUSBPSU_DEVTEN_CONNECTDONEEN (1 << 2)
-#define XUSBPSU_DEVTEN_USBRSTEN (1 << 1)
-#define XUSBPSU_DEVTEN_DISCONNEVTEN (1 << 0)
-
-/* Device Status Register */
-#define XUSBPSU_DSTS_DCNRD (1 << 29)
-
-/* This applies for core versions 1.87a and earlier */
-#define XUSBPSU_DSTS_PWRUPREQ (1 << 24)
-
-/* These apply for core versions 1.94a and later */
-#define XUSBPSU_DSTS_RSS (1 << 25)
-#define XUSBPSU_DSTS_SSS (1 << 24)
-
-#define XUSBPSU_DSTS_COREIDLE (1 << 23)
-#define XUSBPSU_DSTS_DEVCTRLHLT (1 << 22)
-
-#define XUSBPSU_DSTS_USBLNKST_MASK (0x0f << 18)
-#define XUSBPSU_DSTS_USBLNKST(n) (((n) & XUSBPSU_DSTS_USBLNKST_MASK) >> 18)
-
-#define XUSBPSU_DSTS_RXFIFOEMPTY (1 << 17)
-
-#define XUSBPSU_DSTS_SOFFN_MASK (0x3fff << 3)
-#define XUSBPSU_DSTS_SOFFN(n) (((n) & XUSBPSU_DSTS_SOFFN_MASK) >> 3)
-
-#define XUSBPSU_DSTS_CONNECTSPD (7 << 0)
-
-#define XUSBPSU_DSTS_SUPERSPEED (4 << 0)
-#define XUSBPSU_DSTS_HIGHSPEED (0 << 0)
-#define XUSBPSU_DSTS_FULLSPEED2 (1 << 0)
-#define XUSBPSU_DSTS_LOWSPEED (2 << 0)
-#define XUSBPSU_DSTS_FULLSPEED1 (3 << 0)
-
-/* Device Generic Command Register */
-#define XUSBPSU_DGCMD_SET_LMP 0x01
-#define XUSBPSU_DGCMD_SET_PERIODIC_PAR 0x02
-#define XUSBPSU_DGCMD_XMIT_FUNCTION 0x03
-
-/* These apply for core versions 1.94a and later */
-#define XUSBPSU_DGCMD_SET_SCRATCHPAD_ADDR_LO 0x04
-#define XUSBPSU_DGCMD_SET_SCRATCHPAD_ADDR_HI 0x05
-
-#define XUSBPSU_DGCMD_SELECTED_FIFO_FLUSH 0x09
-#define XUSBPSU_DGCMD_ALL_FIFO_FLUSH 0x0a
-#define XUSBPSU_DGCMD_SET_ENDPOINT_NRDY 0x0c
-#define XUSBPSU_DGCMD_RUN_SOC_BUS_LOOPBACK 0x10
-
-#define XUSBPSU_DGCMD_STATUS(n) (((n) >> 15) & 1)
-#define XUSBPSU_DGCMD_CMDACT (1 << 10)
-#define XUSBPSU_DGCMD_CMDIOC (1 << 8)
-
-/* Device Generic Command Parameter Register */
-#define XUSBPSU_DGCMDPAR_FORCE_LINKPM_ACCEPT (1 << 0)
-#define XUSBPSU_DGCMDPAR_FIFO_NUM(n) ((n) << 0)
-#define XUSBPSU_DGCMDPAR_RX_FIFO (0 << 5)
-#define XUSBPSU_DGCMDPAR_TX_FIFO (1 << 5)
-#define XUSBPSU_DGCMDPAR_LOOPBACK_DIS (0 << 0)
-#define XUSBPSU_DGCMDPAR_LOOPBACK_ENA (1 << 0)
-
-/* Device Endpoint Command Register */
-#define XUSBPSU_DEPCMD_PARAM_SHIFT 16
-#define XUSBPSU_DEPCMD_PARAM(x) ((x) << XUSBPSU_DEPCMD_PARAM_SHIFT)
-#define XUSBPSU_DEPCMD_GET_RSC_IDX(x) (((x) >> XUSBPSU_DEPCMD_PARAM_SHIFT) & \
- 0x7f)
-#define XUSBPSU_DEPCMD_STATUS(x) (((x) >> 12) & 0xF)
-#define XUSBPSU_DEPCMD_HIPRI_FORCERM (1 << 11)
-#define XUSBPSU_DEPCMD_CMDACT (1 << 10)
-#define XUSBPSU_DEPCMD_CMDIOC (1 << 8)
-
-#define XUSBPSU_DEPCMD_DEPSTARTCFG 0x09
-#define XUSBPSU_DEPCMD_ENDTRANSFER 0x08
-#define XUSBPSU_DEPCMD_UPDATETRANSFER 0x07
-#define XUSBPSU_DEPCMD_STARTTRANSFER 0x06
-#define XUSBPSU_DEPCMD_CLEARSTALL 0x05
-#define XUSBPSU_DEPCMD_SETSTALL 0x04
-#define XUSBPSU_DEPCMD_GETEPSTATE 0x03
-#define XUSBPSU_DEPCMD_SETTRANSFRESOURCE 0x02
-#define XUSBPSU_DEPCMD_SETEPCONFIG 0x01
-
-/* The EP number goes 0..31 so ep0 is always out and ep1 is always in */
-#define XUSBPSU_DALEPENA_EP(n) (1 << n)
-
-#define XUSBPSU_DEPCFG_INT_NUM(n) ((n) << 0)
-#define XUSBPSU_DEPCFG_XFER_COMPLETE_EN (1 << 8)
-#define XUSBPSU_DEPCFG_XFER_IN_PROGRESS_EN (1 << 9)
-#define XUSBPSU_DEPCFG_XFER_NOT_READY_EN (1 << 10)
-#define XUSBPSU_DEPCFG_FIFO_ERROR_EN (1 << 11)
-#define XUSBPSU_DEPCFG_STREAM_EVENT_EN (1 << 13)
-#define XUSBPSU_DEPCFG_BINTERVAL_M1(n) ((n) << 16)
-#define XUSBPSU_DEPCFG_STREAM_CAPABLE (1 << 24)
-#define XUSBPSU_DEPCFG_EP_NUMBER(n) ((n) << 25)
-#define XUSBPSU_DEPCFG_BULK_BASED (1 << 30)
-#define XUSBPSU_DEPCFG_FIFO_BASED (1 << 31)
-
-/* DEPCFG parameter 0 */
-#define XUSBPSU_DEPCFG_EP_TYPE(n) ((n) << 1)
-#define XUSBPSU_DEPCFG_MAX_PACKET_SIZE(n) ((n) << 3)
-#define XUSBPSU_DEPCFG_FIFO_NUMBER(n) ((n) << 17)
-#define XUSBPSU_DEPCFG_BURST_SIZE(n) ((n) << 22)
-#define XUSBPSU_DEPCFG_DATA_SEQ_NUM(n) ((n) << 26)
-/* This applies for core versions earlier than 1.94a */
-#define XUSBPSU_DEPCFG_IGN_SEQ_NUM (1 << 31)
-/* These apply for core versions 1.94a and later */
-#define XUSBPSU_DEPCFG_ACTION_INIT (0 << 30)
-#define XUSBPSU_DEPCFG_ACTION_RESTORE (1 << 30)
-#define XUSBPSU_DEPCFG_ACTION_MODIFY (2 << 30)
-
-/* DEPXFERCFG parameter 0 */
-#define XUSBPSU_DEPXFERCFG_NUM_XFER_RES(n) ((n) & 0xffff)
-
-#define XUSBPSU_DEPCMD_TYPE_BULK 2
-#define XUSBPSU_DEPCMD_TYPE_INTR 3
-
-/* TRB Length, PCM and Status */
-#define XUSBPSU_TRB_SIZE_MASK (0x00ffffff)
-#define XUSBPSU_TRB_SIZE_LENGTH(n) ((n) & XUSBPSU_TRB_SIZE_MASK)
-#define XUSBPSU_TRB_SIZE_PCM1(n) (((n) & 0x03) << 24)
-#define XUSBPSU_TRB_SIZE_TRBSTS(n) (((n) & (0x0f << 28)) >> 28)
-
-#define XUSBPSU_TRBSTS_OK 0
-#define XUSBPSU_TRBSTS_MISSED_ISOC 1
-#define XUSBPSU_TRBSTS_SETUP_PENDING 2
-#define XUSBPSU_TRB_STS_XFER_IN_PROG 4
-
-/* TRB Control */
-#define XUSBPSU_TRB_CTRL_HWO (1 << 0)
-#define XUSBPSU_TRB_CTRL_LST (1 << 1)
-#define XUSBPSU_TRB_CTRL_CHN (1 << 2)
-#define XUSBPSU_TRB_CTRL_CSP (1 << 3)
-#define XUSBPSU_TRB_CTRL_TRBCTL(n) (((n) & 0x3f) << 4)
-#define XUSBPSU_TRB_CTRL_ISP_IMI (1 << 10)
-#define XUSBPSU_TRB_CTRL_IOC (1 << 11)
-#define XUSBPSU_TRB_CTRL_SID_SOFN(n) (((n) & 0xffff) << 14)
-
-#define XUSBPSU_TRBCTL_NORMAL XUSBPSU_TRB_CTRL_TRBCTL(1)
-#define XUSBPSU_TRBCTL_CONTROL_SETUP XUSBPSU_TRB_CTRL_TRBCTL(2)
-#define XUSBPSU_TRBCTL_CONTROL_STATUS2 XUSBPSU_TRB_CTRL_TRBCTL(3)
-#define XUSBPSU_TRBCTL_CONTROL_STATUS3 XUSBPSU_TRB_CTRL_TRBCTL(4)
-#define XUSBPSU_TRBCTL_CONTROL_DATA XUSBPSU_TRB_CTRL_TRBCTL(5)
-#define XUSBPSU_TRBCTL_ISOCHRONOUS_FIRST XUSBPSU_TRB_CTRL_TRBCTL(6)
-#define XUSBPSU_TRBCTL_ISOCHRONOUS XUSBPSU_TRB_CTRL_TRBCTL(7)
-#define XUSBPSU_TRBCTL_LINK_TRB XUSBPSU_TRB_CTRL_TRBCTL(8)
-
-/*@}*/
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/*****************************************************************************/
-/**
-*
-* Read a register of the USBPS8 device. This macro provides register
-* access to all registers using the register offsets defined above.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Offset is the offset of the register to read.
-*
-* @return The contents of the register.
-*
-* @note C-style Signature:
-* u32 XUsbPsu_ReadReg(struct XUsbPsu *InstancePtr, u32 Offset);
-*
-******************************************************************************/
-#define XUsbPsu_ReadReg(InstancePtr, Offset) \
- Xil_In32((InstancePtr)->ConfigPtr->BaseAddress + (Offset))
-
-/*****************************************************************************/
-/**
-*
-* Write a register of the USBPS8 device. This macro provides
-* register access to all registers using the register offsets defined above.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param RegOffset is the offset of the register to write.
-* @param Data is the value to write to the register.
-*
-* @return None.
-*
-* @note C-style Signature:
-* void XUsbPsu_WriteReg(struct XUsbPsu *InstancePtr,
-* u32 Offset,u32 Data)
-*
-******************************************************************************/
-#define XUsbPsu_WriteReg(InstancePtr, Offset, Data) \
- Xil_Out32((InstancePtr)->ConfigPtr->BaseAddress + (Offset), (Data))
-
-/************************** Function Prototypes ******************************/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* End of protection macro. */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xwdtps.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xwdtps.h
deleted file mode 100644
index 498e60bee..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xwdtps.h
+++ /dev/null
@@ -1,219 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/****************************************************************************/
-/**
-*
-* @file xwdtps.h
-*
-* The Xilinx watchdog timer driver supports the Xilinx watchdog timer hardware.
-*
-* The Xilinx watchdog timer (WDT) driver supports the following features:
-* - Both Interrupt driven and Polled mode
-* - enabling and disabling the watchdog timer
-* - restarting the watchdog.
-* - initializing the most significant digit of the counter restart value.
-* - multiple individually enabling/disabling outputs
-*
-* It is the responsibility of the application to provide an interrupt handler
-* for the watchdog timer and connect it to the interrupt system if interrupt
-* driven mode is desired.
-*
-* If interrupt is enabled, the watchdog timer device generates an interrupt
-* when the counter reaches zero.
-*
-* If the hardware interrupt signal is not connected/enabled, polled mode is the
-* only option (using IsWdtExpired) for the watchdog.
-*
-* The outputs from the WDT are individually enabled/disabled using
-* _EnableOutput()/_DisableOutput(). The clock divisor ratio and initial restart
-* value of the count is configurable using _SetControlValues().
-*
-* The reset condition of the hardware has the maximum initial count in the
-* Counter Reset Value (CRV) and the WDT is disabled with the reset enable
-* enabled and the reset length set to 32 clocks. i.e.
-*
-*
-* This driver is intended to be RTOS and processor independent. It works with
-* physical addresses only. Any needs for dynamic memory management, threads
-* or thread mutual exclusion, virtual memory, or cache control must be
-* satisfied by the layer above this driver.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- -----------------------------------------------
-* 1.00a ecm/jz 01/15/10 First release
-* 1.01a asa 02/15/12 Added tcl file to generate xparameters
-* 1.02a sg 07/15/12 Removed code/APIs related to External Signal
-* Length functionality for CR 658287
-* Removed APIs XWdtPs_SetExternalSignalLength,
-* XWdtPs_GetExternalSignalLength
-* Modified the Self Test to use the Reset Length mask
-* for CR 658287
-* 3.0 pkp 12/09/14 Added support for Zynq Ultrascale Mp.Also
-* modified code for MISRA-C:2012 compliance.
-*
-*
-******************************************************************************/
-#ifndef XWDTPS_H /* prevent circular inclusions */
-#define XWDTPS_H /* by using protection macros */
-
-/***************************** Include Files *********************************/
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xstatus.h"
-#include "xwdtps_hw.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/************************** Constant Definitions *****************************/
-
-/*
- * Choices for output selections for the device, used in
- * XWdtPs_EnableOutput()/XWdtPs_DisableOutput() functions
- */
-#define XWDTPS_RESET_SIGNAL 0x01U /**< Reset signal request */
-#define XWDTPS_IRQ_SIGNAL 0x02U /**< IRQ signal request */
-
-/*
- * Control value setting flags, used in
- * XWdtPs_SetControlValues()/XWdtPs_GetControlValues() functions
- */
-#define XWDTPS_CLK_PRESCALE 0x01U /**< Clock Prescale request */
-#define XWDTPS_COUNTER_RESET 0x02U /**< Counter Reset request */
-
-/**************************** Type Definitions *******************************/
-
-/**
- * This typedef contains configuration information for the device.
- */
-typedef struct {
- u16 DeviceId; /**< Unique ID of device */
- u32 BaseAddress; /**< Base address of the device */
-} XWdtPs_Config;
-
-
-/**
- * The XWdtPs driver instance data. The user is required to allocate a
- * variable of this type for every watchdog/timer device in the system.
- * A pointer to a variable of this type is then passed to the driver API
- * functions.
- */
-typedef struct {
- XWdtPs_Config Config; /**< Hardware Configuration */
- u32 IsReady; /**< Device is initialized and ready */
- u32 IsStarted; /**< Device watchdog timer is running */
-} XWdtPs;
-
-/***************** Macros (Inline Functions) Definitions *********************/
-/****************************************************************************/
-/**
-*
-* Check if the watchdog timer has expired. This function is used for polled
-* mode and it is also used to check if the last reset was caused by the
-* watchdog timer.
-*
-* @param InstancePtr is a pointer to the XWdtPs instance.
-*
-* @return
-* - TRUE if the watchdog has expired.
-* - FALSE if the watchdog has not expired.
-*
-* @note C-style signature:
-* int XWdtPs_IsWdtExpired(XWdtPs *InstancePtr)
-*
-******************************************************************************/
-#define XWdtPs_IsWdtExpired(InstancePtr) \
-((XWdtPs_ReadReg((InstancePtr)->Config.BaseAddress, XWDTPS_SR_OFFSET) & \
- XWDTPS_SR_WDZ_MASK) == XWDTPS_SR_WDZ_MASK)
-
-
-/****************************************************************************/
-/**
-*
-* Restart the watchdog timer. An application needs to call this function
-* periodically to keep the timer from asserting the enabled output.
-*
-* @param InstancePtr is a pointer to the XWdtPs instance.
-*
-* @return None.
-*
-* @note C-style signature:
-* void XWdtPs_RestartWdt(XWdtPs *InstancePtr)
-*
-******************************************************************************/
-#define XWdtPs_RestartWdt(InstancePtr) \
- XWdtPs_WriteReg((InstancePtr)->Config.BaseAddress, \
- XWDTPS_RESTART_OFFSET, XWDTPS_RESTART_KEY_VAL)
-
-/************************** Function Prototypes ******************************/
-
-/*
- * Lookup configuration in xwdtps_sinit.c.
- */
-XWdtPs_Config *XWdtPs_LookupConfig(u16 DeviceId);
-
-/*
- * Interface functions in xwdtps.c
- */
-s32 XWdtPs_CfgInitialize(XWdtPs *InstancePtr,
- XWdtPs_Config *ConfigPtr, u32 EffectiveAddress);
-
-void XWdtPs_Start(XWdtPs *InstancePtr);
-
-void XWdtPs_Stop(XWdtPs *InstancePtr);
-
-void XWdtPs_EnableOutput(XWdtPs *InstancePtr, u8 Signal);
-
-void XWdtPs_DisableOutput(XWdtPs *InstancePtr, u8 Signal);
-
-u32 XWdtPs_GetControlValue(XWdtPs *InstancePtr, u8 Control);
-
-void XWdtPs_SetControlValue(XWdtPs *InstancePtr, u8 Control, u32 Value);
-
-/*
- * Self-test function in xwdttb_selftest.c.
- */
-s32 XWdtPs_SelfTest(XWdtPs *InstancePtr);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xwdtps_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xwdtps_hw.h
deleted file mode 100644
index 2cd3b272b..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xwdtps_hw.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/****************************************************************************/
-/**
-*
-* @file xwdtps_hw.h
-*
-* This file contains the hardware interface to the System Watch Dog Timer (WDT).
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- ---------------------------------------------
-* 1.00a ecm/jz 01/15/10 First release
-* 1.02a sg 07/15/12 Removed defines related to External Signal
-* Length functionality for CR 658287
-* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
-*
-*
-******************************************************************************/
-#ifndef XWDTPS_HW_H /* prevent circular inclusions */
-#define XWDTPS_HW_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xil_io.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Register Map
- * Offsets of registers from the start of the device
- * @{
- */
-
-#define XWDTPS_ZMR_OFFSET 0x00000000U /**< Zero Mode Register */
-#define XWDTPS_CCR_OFFSET 0x00000004U /**< Counter Control Register */
-#define XWDTPS_RESTART_OFFSET 0x00000008U /**< Restart Register */
-#define XWDTPS_SR_OFFSET 0x0000000CU /**< Status Register */
-/* @} */
-
-
-/** @name Zero Mode Register
- * This register controls how the time out is indicated and also contains
- * the access code (0xABC) to allow writes to the register
- * @{
- */
-#define XWDTPS_ZMR_WDEN_MASK 0x00000001U /**< enable the WDT */
-#define XWDTPS_ZMR_RSTEN_MASK 0x00000002U /**< enable the reset output */
-#define XWDTPS_ZMR_IRQEN_MASK 0x00000004U /**< enable the IRQ output */
-
-#define XWDTPS_ZMR_RSTLN_MASK 0x00000070U /**< set length of reset pulse */
-#define XWDTPS_ZMR_RSTLN_SHIFT 4U /**< shift for reset pulse */
-
-#define XWDTPS_ZMR_IRQLN_MASK 0x00000180U /**< set length of interrupt pulse */
-#define XWDTPS_ZMR_IRQLN_SHIFT 7U /**< shift for interrupt pulse */
-
-#define XWDTPS_ZMR_ZKEY_MASK 0x00FFF000U /**< mask for writing access key */
-#define XWDTPS_ZMR_ZKEY_VAL 0x00ABC000U /**< access key, 0xABC << 12 */
-
-/* @} */
-
-/** @name Counter Control register
- * This register controls how fast the timer runs and the reset value
- * and also contains the access code (0x248) to allow writes to the
- * register
- * @{
- */
-
-#define XWDTPS_CCR_CLKSEL_MASK 0x00000003U /**< counter clock prescale */
-
-#define XWDTPS_CCR_CRV_MASK 0x00003FFCU /**< counter reset value */
-#define XWDTPS_CCR_CRV_SHIFT 2U /**< shift for writing value */
-
-#define XWDTPS_CCR_CKEY_MASK 0x03FFC000U /**< mask for writing access key */
-#define XWDTPS_CCR_CKEY_VAL 0x00920000U /**< access key, 0x248 << 14 */
-
-/* Bit patterns for Clock prescale divider values */
-
-#define XWDTPS_CCR_PSCALE_0008 0x00000000U /**< divide clock by 8 */
-#define XWDTPS_CCR_PSCALE_0064 0x00000001U /**< divide clock by 64 */
-#define XWDTPS_CCR_PSCALE_0512 0x00000002U /**< divide clock by 512 */
-#define XWDTPS_CCR_PSCALE_4096 0x00000003U /**< divide clock by 4096 */
-
-/* @} */
-
-/** @name Restart register
- * This register resets the timer preventing a timeout. Value is specific
- * 0x1999
- * @{
- */
-
-#define XWDTPS_RESTART_KEY_VAL 0x00001999U /**< valid key */
-
-/*@}*/
-
-/** @name Status register
- * This register indicates timer reached zero count.
- * @{
- */
-#define XWDTPS_SR_WDZ_MASK 0x00000001U /**< time out occurred */
-
-/*@}*/
-
-/**************************** Type Definitions *******************************/
-
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/****************************************************************************/
-/**
-*
-* Read the given register.
-*
-* @param BaseAddress is the base address of the device
-* @param RegOffset is the register offset to be read
-*
-* @return The 32-bit value of the register
-*
-* @note C-style signature:
-* u32 XWdtPs_ReadReg(u32 BaseAddress, u32 RegOffset)
-*
-*****************************************************************************/
-#define XWdtPs_ReadReg(BaseAddress, RegOffset) \
- Xil_In32((BaseAddress) + (u32)(RegOffset))
-
-/****************************************************************************/
-/**
-*
-* Write the given register.
-*
-* @param BaseAddress is the base address of the device
-* @param RegOffset is the register offset to be written
-* @param Data is the 32-bit value to write to the register
-*
-* @return None.
-*
-* @note C-style signature:
-* void XWdtPs_WriteReg(u32 BaseAddress, u32 RegOffset, u32 Data)
-*
-*****************************************************************************/
-#define XWdtPs_WriteReg(BaseAddress, RegOffset, Data) \
- Xil_Out32((BaseAddress) + (u32)(RegOffset), (u32)(Data))
-
-
-/************************** Function Prototypes ******************************/
-
-
-/************************** Variable Definitions *****************************/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xzdma.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xzdma.h
deleted file mode 100644
index af8430e66..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xzdma.h
+++ /dev/null
@@ -1,669 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* ZDMA is a general purpose DMA designed to support memory to memory and memory
-* to IO buffer transfers. ALTO has two instance of general purpose ZDMA.
-* One is located in FPD (full power domain) which is GDMA and other is located
-* in LPD (low power domain) which is ADMA.
-*
-* GMDA & ADMA are configured each with 8 DMA channels and and each channel can
-* be programmed secure or non-secure.
-* Each channel is divided into two functional sides, Source (Read) and
-* Destination (Write). Each DMA channel can be independently programmed
-* in one of following DMA modes.
-* - Simple DMA
-* - Normal data transfer from source to destination.
-* - Write Only mode.
-* - Read Only mode.
-* - Scatter Gather DMA
-* - Only Normal mode it can't support other two modes.
-* In Scatter gather descriptor can be of 3 types
-* - Linear descriptor.
-* - Linked list descriptor
-* - Hybrid descriptor (Combination of both Linear and Linked list)
-* Our driver will not support Hybrid type of descriptor.
-*
-* Initialization & Configuration
-*
-* The device driver enables higher layer software (e.g., an application) to
-* communicate to the ZDMA core.
-*
-* XZDma_CfgInitialize() API is used to initialize the ZDMA core.
-* The user needs to first call the XZDma_LookupConfig() API which returns
-* the Configuration structure pointer which is passed as a parameter to the
-* XZDma_CfgInitialize() API.
-*
-* Interrupts
-* The driver provides an interrupt handler XZDma_IntrHandler for handling
-* the interrupt from the ZDMA core. The users of this driver have to
-* register this handler with the interrupt system and provide the callback
-* functions by using XZDma_SetCallBack API. In this version Descriptor done
-* option is disabled.
-*
-* Virtual Memory
-*
-* This driver supports Virtual Memory. The RTOS is responsible for calculating
-* the correct device base address in Virtual Memory space.
-*
-* Threads
-*
-* This driver is not thread safe. Any needs for threads or thread mutual
-* exclusion must be satisfied by the layer above this driver.
-*
-* Asserts
-*
-* Asserts are used within all Xilinx drivers to enforce constraints on argument
-* values. Asserts can be turned off on a system-wide basis by defining, at
-* compile time, the NDEBUG identifier. By default, asserts are turned on and it
-* is recommended that users leave asserts on during development.
-*
-* Building the driver
-*
-* The XZDma driver is composed of several source files. This allows the user
-* to build and link only those parts of the driver that are necessary.
-*
-* @file xzdma.h
-*
-* This header file contains identifiers and register-level driver functions (or
-* macros), range macros, structure typedefs that can be used to access the
-* Xilinx ZDMA core instance.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- ------------------------------------------------------
-* 1.0 vns 2/27/15 First release
-*
-*
-******************************************************************************/
-#ifndef XZDMA_H_
-#define XZDMA_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xzdma_hw.h"
-#include "xil_assert.h"
-#include "xstatus.h"
-#include "xil_cache.h"
-
-/************************** Constant Definitions *****************************/
-
-
-/**************************** Type Definitions *******************************/
-
-/** @name ZDMA Handler Types
- * @{
- */
-typedef enum {
- XZDMA_HANDLER_DONE, /**< For Done Handler */
- XZDMA_HANDLER_ERROR, /**< For Error Handler */
-} XZDma_Handler;
-/*@}*/
-
-/** @name ZDMA Descriptors Types
- * @{
- */
-typedef enum {
- XZDMA_LINEAR, /**< Linear descriptor */
- XZDMA_LINKEDLIST, /**< Linked list descriptor */
-} XZDma_DscrType;
-/*@}*/
-
-/** @name ZDMA Operation modes
- * @{
- */
-typedef enum {
- XZDMA_NORMAL_MODE, /**< Normal transfer from source to
- * destination*/
- XZDMA_WRONLY_MODE, /**< Write only mode */
- XZDMA_RDONLY_MODE /**< Read only mode */
-} XZDma_Mode;
-/*@}*/
-
-/** @name ZDMA state
- * @{
- */
-typedef enum {
- XZDMA_IDLE, /**< ZDMA is in Idle state */
- XZDMA_PAUSE, /**< Paused state */
- XZDMA_BUSY, /**< Busy state */
-} XZDmaState;
-/*@}*/
-
-/** @name ZDMA AXI Burst type
- * @{
- */
-typedef enum {
- XZDMA_FIXED_BURST = 0, /**< Fixed burst type */
- XZDMA_INCR_BURST /**< Increment burst type */
-} XZDma_BurstType;
-/*@}*/
-
-/******************************************************************************/
-/**
-* This typedef contains scatter gather descriptor fields for ZDMA core.
-*/
-typedef struct {
- void *SrcDscrPtr; /**< Source Descriptor pointer */
- void *DstDscrPtr; /**< Destination Descriptor pointer */
- u32 DscrCount; /**< Count of descriptors available */
- XZDma_DscrType DscrType;/**< Type of descriptor either Linear or
- * Linked list type */
-} XZDma_Descriptor;
-
-/******************************************************************************/
-/**
-* This typedef contains scatter gather descriptor fields for ZDMA core.
-*/
-typedef struct {
- u64 Address; /**< Address */
- u32 Size; /**< Word2, Size of data */
- u32 Cntl; /**< Word3 Control data */
- u64 NextDscr; /**< Address of next descriptor */
- u64 Reserved; /**< Reserved address */
-} __attribute__ ((packed)) XZDma_LlDscr;
-
-/******************************************************************************/
-/**
-* This typedef contains Linear descriptor fields for ZDMA core.
-*/
-typedef struct {
- u64 Address; /**< Address */
- u32 Size; /**< Word3, Size of data */
- u32 Cntl; /**< Word4, control data */
-} __attribute__ ((packed)) XZDma_LiDscr;
-
-/******************************************************************************/
-/**
-*
-* This typedef contains the data configurations of ZDMA core
-*/
-typedef struct {
- u8 OverFetch; /**< Enable Over fetch */
- u8 SrcIssue; /**< Outstanding transactions for Source */
- XZDma_BurstType SrcBurstType;
- /**< Burst type for SRC */
- u8 SrcBurstLen; /**< AXI length for data read */
- XZDma_BurstType DstBurstType;
- /**< Burst type for DST */
- u8 DstBurstLen; /**< AXI length for data write */
- u8 SrcCache; /**< AXI cache bits for data read */
- u8 SrcQos; /**< AXI QOS bits for data read */
- u8 DstCache; /**< AXI cache bits for data write */
- u8 DstQos; /**< AXI QOS bits for data write */
-} XZDma_DataConfig;
-
-/******************************************************************************/
-/**
-*
-* This typedef contains the descriptor configurations of ZDMA core
-*/
-typedef struct{
- u8 AxCoherent; /**< AXI transactions are coherent or non-coherent */
- u8 AXCache; /**< AXI cache for DSCR fetch */
- u8 AXQos; /**< Qos bit for DSCR fetch */
-} XZDma_DscrConfig;
-
-/******************************************************************************/
-/**
-* Callback type for Completion of all data transfers.
-*
-* @param CallBackRef is a callback reference passed in by the upper layer
-* when setting the callback functions, and passed back to the
-* upper layer when the callback is invoked.
-*******************************************************************************/
-typedef void (*XZDma_DoneHandler) (void *CallBackRef);
-
-/******************************************************************************/
-/**
-* Callback type for all error interrupts.
-*
-* @param CallBackRef is a callback reference passed in by the upper layer
-* when setting the callback functions, and passed back to the
-* upper layer when the callback is invoked.
-* @param ErrorMask is a bit mask indicating the cause of the error. Its
-* value equals 'OR'ing one or more XZDMA_IXR_* values defined in
-* xzdma_hw.h
-****************************************************************************/
-typedef void (*XZDma_ErrorHandler) (void *CallBackRef, u32 ErrorMask);
-
-/**
-* This typedef contains configuration information for a ZDMA core
-* Each ZDMA core should have a configuration structure associated.
-*/
-typedef struct {
- u16 DeviceId; /**< Device Id of ZDMA */
- u32 BaseAddress; /**< BaseAddress of ZDMA */
- u8 DmaType; /**< Type of DMA */
-} XZDma_Config;
-
-/******************************************************************************/
-/**
-*
-* The XZDma driver instance data structure. A pointer to an instance data
-* structure is passed around by functions to refer to a specific driver
-* instance.
-*/
-typedef struct {
- XZDma_Config Config; /**< Hardware configuration */
- u32 IsReady; /**< Device and the driver instance
- * are initialized */
- u32 IntrMask; /**< Mask for enabling interrupts */
-
- XZDma_Mode Mode; /**< Mode of ZDMA core to be operated */
- u8 IsSgDma; /**< Is ZDMA core is in scatter gather or
- * not will be specified */
- XZDma_Descriptor Descriptor; /**< It contains information about
- * descriptors */
-
- XZDma_DoneHandler DoneHandler; /**< Call back for transfer
- * done interrupt */
- void *DoneRef; /**< To be passed to the done
- * interrupt callback */
-
- XZDma_ErrorHandler ErrorHandler;/**< Call back for error
- * interrupt */
- void *ErrorRef; /**< To be passed to the error
- * interrupt callback */
- XZDma_DataConfig DataConfig; /**< Current configurations */
- XZDma_DscrConfig DscrConfig; /**< Current configurations */
- XZDmaState ChannelState; /**< ZDMA channel is busy */
-
-} XZDma;
-
-/******************************************************************************/
-/**
-*
-* This typedef contains the fields for transfer of data.
-*/
-typedef struct {
- UINTPTR SrcAddr; /**< Source address */
- UINTPTR DstAddr; /**< Destination Address */
- u32 Size; /**< Size of the data to be transferred */
- u8 SrcCoherent; /**< Source coherent */
- u8 DstCoherent; /**< Destination coherent */
- u8 Pause; /**< Will pause data transmission after
- * this transfer only for SG mode */
-} XZDma_Transfer;
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/*****************************************************************************/
-/**
-*
-* This function returns interrupt status read from Interrupt Status Register.
-* Use the XZDMA_IXR_DMA_*_MASK constants defined in xzdma_hw.h to interpret the
-* returned value.
-*
-* @param InstancePtr is a pointer to the XZDma instance.
-*
-* @return The pending interrupts of the ZDMA core.
-* Use the masks specified in xzdma_hw.h to interpret
-* the returned value.
-* @note
-* C-style signature:
-* void XZDma_IntrGetStatus(XZDma *InstancePtr)
-*
-******************************************************************************/
-#define XZDma_IntrGetStatus(InstancePtr) \
- XZDma_ReadReg((InstancePtr)->Config.BaseAddress, XZDMA_CH_ISR_OFFSET)
-
-/*****************************************************************************/
-/**
-*
-* This function clears interrupt(s). Every bit set in Interrupt Status
-* Register indicates that a specific type of interrupt is occurring, and this
-* function clears one or more interrupts by writing a bit mask to Interrupt
-* Clear Register.
-*
-* @param InstancePtr is a pointer to the XZDma instance.
-* @param Mask is the type of the interrupts to enable. Use OR'ing of
-* XZDMA_IXR_DMA_*_MASK constants defined in xzdma_hw.h to create
-* this parameter value.
-*
-* @return None.
-*
-* @note
-* C-style signature:
-* void XZDma_IntrClear(XZDma *InstancePtr)
-*
-******************************************************************************/
-#define XZDma_IntrClear(InstancePtr, Mask) \
- XZDma_WriteReg( (InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_ISR_OFFSET, ((u32)(Mask) & (u32)XZDMA_IXR_ALL_INTR_MASK))
-
-/*****************************************************************************/
-/**
-*
-* This function returns interrupt mask to know which interrupts are
-* enabled and which of them were disabled.
-*
-* @param InstancePtr is a pointer to the XZDma instance.
-*
-* @return The current interrupt mask. The mask indicates which interrupts
-* are enabled/disabled.
-* 0 bit represents .....corresponding interrupt is enabled.
-* 1 bit represents .....Corresponding interrupt is disabled.
-*
-* @note
-* C-style signature:
-* void XZDma_GetIntrMask(XZDma *InstancePtr)
-*
-******************************************************************************/
-#define XZDma_GetIntrMask(InstancePtr) \
- XZDma_ReadReg((InstancePtr)->Config.BaseAddress, \
- (u32)(XZDMA_CH_IMR_OFFSET))
-
-/*****************************************************************************/
-/**
-*
-* This function enables individual interrupts of the ZDMA core by updating
-* the Interrupt Enable register.
-*
-* @param InstancePtr is a pointer to the XZDma instance.
-* @param Mask is the type of the interrupts to enable. Use OR'ing of
-* XZDMA_IXR_DMA_*_MASK constants defined in xzdma_hw.h to create
-* this parameter value.
-*
-* @return None.
-*
-* @note The existing enabled interrupt(s) will remain enabled.
-* C-style signature:
-* void XZDma_EnableIntr(XZDma *InstancePtr, u32 Mask)
-*
-******************************************************************************/
-#define XZDma_EnableIntr(InstancePtr, Mask) \
- (InstancePtr)->IntrMask = ((InstancePtr)->IntrMask | (Mask))
-
-/*****************************************************************************/
-/**
-*
-* This function disables individual interrupts of the ZDMA core by updating
-* the Interrupt Disable register.
-*
-* @param InstancePtr is a pointer to the XZDma instance.
-* @param Mask is the type of the interrupts to disable. Use OR'ing of
-* XZDMA_IXR_DMA_*_MASK constants defined in xzdma_hw.h to create
-* this parameter value.
-*
-* @return None.
-*
-* @note The existing disabled interrupt(s) will remain disabled.
-* C-style signature:
-* void XZDma_DisableIntr(XZDma *InstancePtr, u32 Mask)
-*
-******************************************************************************/
-#define XZDma_DisableIntr(InstancePtr, Mask) \
- XZDma_WriteReg( (InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_IDS_OFFSET, \
- ((u32)XZDma_ReadReg((InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_IDS_OFFSET) | ((u32)(Mask) & (u32)XZDMA_IXR_ALL_INTR_MASK)))
-
-/*****************************************************************************/
-/**
-*
-* This function returns source current payload address under process
-* of ZDMA core.
-*
-* @param InstancePtr is a pointer to the XZDma instance.
-*
-* @return None.
-*
-* @note This address may not be precise due to ZDMA pipeline structure
-* C-style signature:
-* u64 XZDma_SrcCurPyld(XZDma *InstancePtr)
-*
-******************************************************************************/
-#define XZDma_SrcCurPyld(InstancePtr) \
- ((u64)(XZDma_ReadReg((InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_SRC_CUR_PYLD_LSB_OFFSET)) | \
- ((u64)(XZDma_ReadReg((InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_SRC_CUR_PYLD_MSB_OFFSET)) << XZDMA_WORD1_MSB_SHIFT))
-
-/*****************************************************************************/
-/**
-*
-* This function returns destination current payload address under process
-* of ZDMA core.
-*
-* @param InstancePtr is a pointer to the XZDma instance.
-*
-* @return None.
-*
-* @note This address may not be precise due to ZDMA pipeline structure
-* C-style signature:
-* u64 XZDma_DstCurPyld(XZDma *InstancePtr)
-*
-******************************************************************************/
-#define XZDma_DstCurPyld(InstancePtr) \
- ((u64)(XZDma_ReadReg((InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_DST_CUR_PYLD_LSB_OFFSET)) | \
- ((u64)(XZDma_ReadReg((InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_DST_CUR_PYLD_MSB_OFFSET)) << XZDMA_WORD1_MSB_SHIFT))
-
-/*****************************************************************************/
-/**
-*
-* This function returns source descriptor current payload address under
-* process of ZDMA core.
-*
-* @param InstancePtr is a pointer to the XZDma instance.
-*
-* @return None.
-*
-* @note This address may not be precise due to ZDMA pipeline structure
-* C-style signature:
-* u64 XZDma_SrcDscrCurPyld(XZDma *InstancePtr)
-*
-******************************************************************************/
-#define XZDma_SrcDscrCurPyld(InstancePtr) \
- ((u64)(XZDma_ReadReg((InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_SRC_CUR_DSCR_LSB_OFFSET)) | \
- ((u64)(XZDma_ReadReg((InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_SRC_CUR_DSCR_MSB_OFFSET)) << XZDMA_WORD1_MSB_SHIFT))
-
-
-/*****************************************************************************/
-/**
-*
-* This function returns destination descriptor current payload address under
-* process of ZDMA core.
-*
-* @param InstancePtr is a pointer to the XZDma instance.
-*
-* @return None.
-*
-* @note This address may not be precise due to ZDMA pipeline structure
-* C-style signature:
-* u64 XZDma_DstDscrCurPyld(XZDma *InstancePtr)
-*
-******************************************************************************/
-#define XZDma_DstDscrCurPyld(InstancePtr) \
- ((u64)(XZDma_ReadReg((InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_DST_CUR_DSCR_LSB_OFFSET)) | \
- ((u64)(XZDma_ReadReg((InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_DST_CUR_DSCR_MSB_OFFSET)) << XZDMA_WORD1_MSB_SHIFT))
-
-/*****************************************************************************/
-/**
-*
-* This function gets the count of total bytes transferred through core
-* since last clear in ZDMA core.
-*
-* @param InstancePtr is a pointer to the XZDma instance.
-*
-* @return None.
-*
-* @note
-* C-style signature:
-* void XZDma_GetTotalByte(XZDma *InstancePtr)
-*
-******************************************************************************/
-#define XZDma_GetTotalByte(InstancePtr) \
- XZDma_ReadReg((InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_TOTAL_BYTE_OFFSET)
-
-/*****************************************************************************/
-/**
-*
-* This function clears the count of total bytes transferred in ZDMA core.
-*
-* @param InstancePtr is a pointer to the XZDma instance.
-*
-* @return None.
-*
-* @note
-* C-style signature:
-* void XZDma_TotalByteClear(XZDma *InstancePtr)
-*
-******************************************************************************/
-#define XZDma_TotalByteClear(InstancePtr) \
- XZDma_WriteReg((InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_TOTAL_BYTE_OFFSET, \
- XZDma_ReadReg((InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_TOTAL_BYTE_OFFSET))
-
-/*****************************************************************************/
-/**
-*
-* This function gets the total number of Interrupt count for source after last
-* call of this API.
-*
-* @param InstancePtr is a pointer to the XZDma instance.
-*
-* @return None.
-*
-* @note Once this API is called then count will become zero.
-* C-style signature:
-* void XZDma_GetSrcIntrCnt(XZDma *InstancePtr)
-*
-******************************************************************************/
-#define XZDma_GetSrcIntrCnt(InstancePtr) \
- XZDma_ReadReg((InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_IRQ_SRC_ACCT_OFFSET)
-
-/*****************************************************************************/
-/**
-*
-* This function gets the total number of Interrupt count for destination
-* after last call of this API.
-*
-* @param InstancePtr is a pointer to the XZDma instance.
-*
-* @return None.
-*
-* @note Once this API is called then count will become zero.
-* C-style signature:
-* void XZDma_GetDstIntrCnt(XZDma *InstancePtr)
-*
-******************************************************************************/
-#define XZDma_GetDstIntrCnt(InstancePtr) \
- XZDma_ReadReg((InstancePtr)->Config.BaseAddress, \
- XZDMA_CH_IRQ_DST_ACCT_OFFSET)
-
-/*****************************************************************************/
-/**
-*
-* This function Enable's the ZDMA core for initiating the data transfer once the
-* data transfer completes it will be automatically disabled.
-*
-* @param InstancePtr is a pointer to the XZDma instance.
-*
-* @return None.
-*
-* @note None.
-* C-style signature:
-* void XZDma_EnableCh(XZDma *InstancePtr)
-*
-******************************************************************************/
-#define XZDma_EnableCh(InstancePtr) \
- XZDma_WriteReg((InstancePtr)->Config.BaseAddress, \
- (XZDMA_CH_CTRL2_OFFSET), (XZDMA_CH_CTRL2_EN_MASK))
-
-/*****************************************************************************/
-/**
-*
-* This function Disable's the ZDMA core.
-*
-* @param InstancePtr is a pointer to the XZDma instance.
-*
-* @return None.
-*
-* @note None.
-* C-style signature:
-* void XZDma_DisableCh(XZDma *InstancePtr)
-*
-******************************************************************************/
-#define XZDma_DisableCh(InstancePtr) \
- XZDma_WriteReg((InstancePtr)->Config.BaseAddress,\
- (XZDMA_CH_CTRL2_OFFSET), (XZDMA_CH_CTRL2_DIS_MASK))
-
-/************************ Prototypes of functions **************************/
-
-XZDma_Config *XZDma_LookupConfig(u16 DeviceId);
-
-s32 XZDma_CfgInitialize(XZDma *InstancePtr, XZDma_Config *CfgPtr,
- u32 EffectiveAddr);
-s32 XZDma_SetMode(XZDma *InstancePtr, u8 IsSgDma, XZDma_Mode Mode);
-u32 XZDma_CreateBDList(XZDma *InstancePtr, XZDma_DscrType TypeOfDscr,
- UINTPTR Dscr_MemPtr, u32 NoOfBytes);
-s32 XZDma_SetChDataConfig(XZDma *InstancePtr, XZDma_DataConfig *Configure);
-void XZDma_GetChDataConfig(XZDma *InstancePtr, XZDma_DataConfig *Configure);
-s32 XZDma_SetChDscrConfig(XZDma *InstancePtr, XZDma_DscrConfig *Configure);
-void XZDma_GetChDscrConfig(XZDma *InstancePtr, XZDma_DscrConfig *Configure);
-s32 XZDma_Start(XZDma *InstancePtr, XZDma_Transfer *Data, u32 Num);
-void XZDma_WOData(XZDma *InstancePtr, u32 *Buffer);
-void XZDma_Resume(XZDma *InstancePtr);
-void XZDma_Reset(XZDma *InstancePtr);
-XZDmaState XZDma_ChannelState(XZDma *InstancePtr);
-
-s32 XZDma_SelfTest(XZDma *InstancePtr);
-
-void XZDma_IntrHandler(void *Instance);
-s32 XZDma_SetCallBack(XZDma *InstancePtr, XZDma_Handler HandlerType,
- void *CallBackFunc, void *CallBackRef);
-
-/*@}*/
-
-#ifdef __cplusplus
-}
-
-#endif
-
-#endif /* XZDMA_H_ */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_2/src/xaxipmon_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_2/src/xaxipmon_hw.h
deleted file mode 100644
index 7fc4ae088..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_2/src/xaxipmon_hw.h
+++ /dev/null
@@ -1,566 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2012 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/****************************************************************************/
-/**
-*
-* @file xaxipmon_hw.h
-*
-* This header file contains identifiers and basic driver functions (or
-* macros) that can be used to access the AXI Performance Monitor.
-*
-* Refer to the device specification for more information about this driver.
-*
-* @note None.
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ----- -------- -----------------------------------------------------
-* 1.00a bss 02/27/12 First release
-* 2.00a bss 06/23/12 Updated to support v2_00a version of IP.
-* 3.00a bss 09/03/12 Deleted XAPM_AGENT_OFFSET Macro to support
-* v2_01a version of IP.
-* 3.01a bss 10/25/12 To support new version of IP:
-* Added XAPM_MCXLOGEN_OFFSET and
-* XAPM_CR_EXTERNAL_TRIGGER_MASK macros.
-* 4.00a bss 01/17/13 To support new version of IP:
-* Added XAPM_LATENCYID_OFFSET,
-* XAPM_CR_EVTLOG_EXTTRIGGER_MASK,
-* XAPM_LATENCYID_RID_MASK and XAPM_LATENCYID_WID_MASK
-* 5.00a bss 08/26/13 To support new version of IP:
-* Added Macros XAPM_MC10_OFFSET to XAPM_MC47_OFFSET,
-* XAPM_SMC10_OFFSET to XAPM_SMC47_OFFSET.
-* Added macro XAPM_IDMASK_OFFSET, XAPM_SR_OFFSET.
-* Added XAPM_CR_IDFILTER_ENABLE_MASK,
-* XAPM_CR_WRLATENCY_START_MASK,
-* XAPM_CR_WRLATENCY_END_MASK,
-* XAPM_CR_RDLATENCY_START_MASK,
-* XAPM_CR_RDLATENCY_END_MASK, XAPM_MASKID_RID_MASK
-* and XAPM_MASKID_WID_MASK macros.
-* Renamed:
-* XAPM_LATENCYID_OFFSET to XAPM_ID_OFFSET,
-* XAPM_LATENCYID_RID_MASK to XAPM_ID_RID_MASK,
-* XAPM_LATENCYID_WID_MASK to XAPM_ID_WID_MASK.
-*
-* 6.2 bss 03/02/15 Added XAPM_RID_OFFSET and XAPM_RIDMASK_OFFSET to support
-* Zynq MP APM.
-*
+*
+* MODIFICATION HISTORY:
+*
+* Ver Who Date Changes
+* ----- ----- -------- -----------------------------------------------------
+* 1.00a bss 02/27/12 First release
+* 2.00a bss 06/23/12 Updated to support v2_00a version of IP.
+* 3.00a bss 09/03/12 Deleted XAPM_AGENT_OFFSET Macro to support
+* v2_01a version of IP.
+* 3.01a bss 10/25/12 To support new version of IP:
+* Added XAPM_MCXLOGEN_OFFSET and
+* XAPM_CR_EXTERNAL_TRIGGER_MASK macros.
+* 4.00a bss 01/17/13 To support new version of IP:
+* Added XAPM_LATENCYID_OFFSET,
+* XAPM_CR_EVTLOG_EXTTRIGGER_MASK,
+* XAPM_LATENCYID_RID_MASK and XAPM_LATENCYID_WID_MASK
+* 5.00a bss 08/26/13 To support new version of IP:
+* Added Macros XAPM_MC10_OFFSET to XAPM_MC47_OFFSET,
+* XAPM_SMC10_OFFSET to XAPM_SMC47_OFFSET.
+* Added macro XAPM_IDMASK_OFFSET, XAPM_SR_OFFSET.
+* Added XAPM_CR_IDFILTER_ENABLE_MASK,
+* XAPM_CR_WRLATENCY_START_MASK,
+* XAPM_CR_WRLATENCY_END_MASK,
+* XAPM_CR_RDLATENCY_START_MASK,
+* XAPM_CR_RDLATENCY_END_MASK, XAPM_MASKID_RID_MASK
+* and XAPM_MASKID_WID_MASK macros.
+* Renamed:
+* XAPM_LATENCYID_OFFSET to XAPM_ID_OFFSET,
+* XAPM_LATENCYID_RID_MASK to XAPM_ID_RID_MASK,
+* XAPM_LATENCYID_WID_MASK to XAPM_ID_WID_MASK.
+*
+* 6.2 bss 03/02/15 Added XAPM_RID_OFFSET and XAPM_RIDMASK_OFFSET to support
+* Zynq MP APM.
+*
+* 6.3 kvn 07/02/15 Modified code according to MISRA-C:2012 guidelines.
+*
+*
+*****************************************************************************/
+#ifndef XAXIPMON_HW_H /* Prevent circular inclusions */
+#define XAXIPMON_HW_H /* by using protection macros */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************** Include Files ********************************/
+
+#include "xil_types.h"
+#include "xil_assert.h"
+#include "xil_io.h"
+
+/************************** Constant Definitions ****************************/
+
+
+/**@name Register offsets of AXIMONITOR in the Device Config
+ *
+ * The following constants provide access to each of the registers of the
+ * AXI PERFORMANCE MONITOR device.
+ * @{
+ */
+
+#define XAPM_GCC_HIGH_OFFSET 0x00000000U /**< Global Clock Counter
+ 32 to 63 bits */
+#define XAPM_GCC_LOW_OFFSET 0x00000004U /**< Global Clock Counter Lower
+ 0-31 bits */
+#define XAPM_SI_HIGH_OFFSET 0x00000020U /**< Sample Interval MSB */
+#define XAPM_SI_LOW_OFFSET 0x00000024U /**< Sample Interval LSB */
+#define XAPM_SICR_OFFSET 0x00000028U /**< Sample Interval Control
+ Register */
+#define XAPM_SR_OFFSET 0x0000002CU /**< Sample Register */
+#define XAPM_GIE_OFFSET 0x00000030U /**< Global Interrupt Enable
+ Register */
+#define XAPM_IE_OFFSET 0x00000034U /**< Interrupt Enable Register */
+#define XAPM_IS_OFFSET 0x00000038U /**< Interrupt Status Register */
+
+#define XAPM_MSR0_OFFSET 0x00000044U /**< Metric Selector 0 Register */
+#define XAPM_MSR1_OFFSET 0x00000048U /**< Metric Selector 1 Register */
+#define XAPM_MSR2_OFFSET 0x0000004CU /**< Metric Selector 2 Register */
+
+#define XAPM_MC0_OFFSET 0x00000100U /**< Metric Counter 0 Register */
+#define XAPM_INC0_OFFSET 0x00000104U /**< Incrementer 0 Register */
+#define XAPM_RANGE0_OFFSET 0x00000108U /**< Range 0 Register */
+#define XAPM_MC0LOGEN_OFFSET 0x0000010CU /**< Metric Counter 0
+ Log Enable Register */
+#define XAPM_MC1_OFFSET 0x00000110U /**< Metric Counter 1 Register */
+#define XAPM_INC1_OFFSET 0x00000114U /**< Incrementer 1 Register */
+#define XAPM_RANGE1_OFFSET 0x00000118U /**< Range 1 Register */
+#define XAPM_MC1LOGEN_OFFSET 0x0000011CU /**< Metric Counter 1
+ Log Enable Register */
+#define XAPM_MC2_OFFSET 0x00000120U /**< Metric Counter 2 Register */
+#define XAPM_INC2_OFFSET 0x00000124U /**< Incrementer 2 Register */
+#define XAPM_RANGE2_OFFSET 0x00000128U /**< Range 2 Register */
+#define XAPM_MC2LOGEN_OFFSET 0x0000012CU /**< Metric Counter 2
+ Log Enable Register */
+#define XAPM_MC3_OFFSET 0x00000130U /**< Metric Counter 3 Register */
+#define XAPM_INC3_OFFSET 0x00000134U /**< Incrementer 3 Register */
+#define XAPM_RANGE3_OFFSET 0x00000138U /**< Range 3 Register */
+#define XAPM_MC3LOGEN_OFFSET 0x0000013CU /**< Metric Counter 3
+ Log Enable Register */
+#define XAPM_MC4_OFFSET 0x00000140U /**< Metric Counter 4 Register */
+#define XAPM_INC4_OFFSET 0x00000144U /**< Incrementer 4 Register */
+#define XAPM_RANGE4_OFFSET 0x00000148U /**< Range 4 Register */
+#define XAPM_MC4LOGEN_OFFSET 0x0000014CU /**< Metric Counter 4
+ Log Enable Register */
+#define XAPM_MC5_OFFSET 0x00000150U /**< Metric Counter 5
+ Register */
+#define XAPM_INC5_OFFSET 0x00000154U /**< Incrementer 5 Register */
+#define XAPM_RANGE5_OFFSET 0x00000158U /**< Range 5 Register */
+#define XAPM_MC5LOGEN_OFFSET 0x0000015CU /**< Metric Counter 5
+ Log Enable Register */
+#define XAPM_MC6_OFFSET 0x00000160U /**< Metric Counter 6
+ Register */
+#define XAPM_INC6_OFFSET 0x00000164U /**< Incrementer 6 Register */
+#define XAPM_RANGE6_OFFSET 0x00000168U /**< Range 6 Register */
+#define XAPM_MC6LOGEN_OFFSET 0x0000016CU /**< Metric Counter 6
+ Log Enable Register */
+#define XAPM_MC7_OFFSET 0x00000170U /**< Metric Counter 7
+ Register */
+#define XAPM_INC7_OFFSET 0x00000174U /**< Incrementer 7 Register */
+#define XAPM_RANGE7_OFFSET 0x00000178U /**< Range 7 Register */
+#define XAPM_MC7LOGEN_OFFSET 0x0000017CU /**< Metric Counter 7
+ Log Enable Register */
+#define XAPM_MC8_OFFSET 0x00000180U /**< Metric Counter 8
+ Register */
+#define XAPM_INC8_OFFSET 0x00000184U /**< Incrementer 8 Register */
+#define XAPM_RANGE8_OFFSET 0x00000188U /**< Range 8 Register */
+#define XAPM_MC8LOGEN_OFFSET 0x0000018CU /**< Metric Counter 8
+ Log Enable Register */
+#define XAPM_MC9_OFFSET 0x00000190U /**< Metric Counter 9
+ Register */
+#define XAPM_INC9_OFFSET 0x00000194U /**< Incrementer 9 Register */
+#define XAPM_RANGE9_OFFSET 0x00000198U /**< Range 9 Register */
+#define XAPM_MC9LOGEN_OFFSET 0x0000019CU /**< Metric Counter 9
+ Log Enable Register */
+#define XAPM_SMC0_OFFSET 0x00000200U /**< Sampled Metric Counter
+ 0 Register */
+#define XAPM_SINC0_OFFSET 0x00000204U /**< Sampled Incrementer
+ 0 Register */
+#define XAPM_SMC1_OFFSET 0x00000210U /**< Sampled Metric Counter
+ 1 Register */
+#define XAPM_SINC1_OFFSET 0x00000214U /**< Sampled Incrementer
+ 1 Register */
+#define XAPM_SMC2_OFFSET 0x00000220U /**< Sampled Metric Counter
+ 2 Register */
+#define XAPM_SINC2_OFFSET 0x00000224U /**< Sampled Incrementer
+ 2 Register */
+#define XAPM_SMC3_OFFSET 0x00000230U /**< Sampled Metric Counter
+ 3 Register */
+#define XAPM_SINC3_OFFSET 0x00000234U /**< Sampled Incrementer
+ 3 Register */
+#define XAPM_SMC4_OFFSET 0x00000240U /**< Sampled Metric Counter
+ 4 Register */
+#define XAPM_SINC4_OFFSET 0x00000244U /**< Sampled Incrementer
+ 4 Register */
+#define XAPM_SMC5_OFFSET 0x00000250U /**< Sampled Metric Counter
+ 5 Register */
+#define XAPM_SINC5_OFFSET 0x00000254U /**< Sampled Incrementer
+ 5 Register */
+#define XAPM_SMC6_OFFSET 0x00000260U /**< Sampled Metric Counter
+ 6 Register */
+#define XAPM_SINC6_OFFSET 0x00000264U /**< Sampled Incrementer
+ 6 Register */
+#define XAPM_SMC7_OFFSET 0x00000270U /**< Sampled Metric Counter
+ 7 Register */
+#define XAPM_SINC7_OFFSET 0x00000274U /**< Sampled Incrementer
+ 7 Register */
+#define XAPM_SMC8_OFFSET 0x00000280U /**< Sampled Metric Counter
+ 8 Register */
+#define XAPM_SINC8_OFFSET 0x00000284U /**< Sampled Incrementer
+ 8 Register */
+#define XAPM_SMC9_OFFSET 0x00000290U /**< Sampled Metric Counter
+ 9 Register */
+#define XAPM_SINC9_OFFSET 0x00000294U /**< Sampled Incrementer
+ 9 Register */
+
+#define XAPM_MC10_OFFSET 0x000001A0U /**< Metric Counter 10
+ Register */
+#define XAPM_MC11_OFFSET 0x000001B0U /**< Metric Counter 11
+ Register */
+#define XAPM_MC12_OFFSET 0x00000500U /**< Metric Counter 12
+ Register */
+#define XAPM_MC13_OFFSET 0x00000510U /**< Metric Counter 13
+ Register */
+#define XAPM_MC14_OFFSET 0x00000520U /**< Metric Counter 14
+ Register */
+#define XAPM_MC15_OFFSET 0x00000530U /**< Metric Counter 15
+ Register */
+#define XAPM_MC16_OFFSET 0x00000540U /**< Metric Counter 16
+ Register */
+#define XAPM_MC17_OFFSET 0x00000550U /**< Metric Counter 17
+ Register */
+#define XAPM_MC18_OFFSET 0x00000560U /**< Metric Counter 18
+ Register */
+#define XAPM_MC19_OFFSET 0x00000570U /**< Metric Counter 19
+ Register */
+#define XAPM_MC20_OFFSET 0x00000580U /**< Metric Counter 20
+ Register */
+#define XAPM_MC21_OFFSET 0x00000590U /**< Metric Counter 21
+ Register */
+#define XAPM_MC22_OFFSET 0x000005A0U /**< Metric Counter 22
+ Register */
+#define XAPM_MC23_OFFSET 0x000005B0U /**< Metric Counter 23
+ Register */
+#define XAPM_MC24_OFFSET 0x00000700U /**< Metric Counter 24
+ Register */
+#define XAPM_MC25_OFFSET 0x00000710U /**< Metric Counter 25
+ Register */
+#define XAPM_MC26_OFFSET 0x00000720U /**< Metric Counter 26
+ Register */
+#define XAPM_MC27_OFFSET 0x00000730U /**< Metric Counter 27
+ Register */
+#define XAPM_MC28_OFFSET 0x00000740U /**< Metric Counter 28
+ Register */
+#define XAPM_MC29_OFFSET 0x00000750U /**< Metric Counter 29
+ Register */
+#define XAPM_MC30_OFFSET 0x00000760U /**< Metric Counter 30
+ Register */
+#define XAPM_MC31_OFFSET 0x00000770U /**< Metric Counter 31
+ Register */
+#define XAPM_MC32_OFFSET 0x00000780U /**< Metric Counter 32
+ Register */
+#define XAPM_MC33_OFFSET 0x00000790U /**< Metric Counter 33
+ Register */
+#define XAPM_MC34_OFFSET 0x000007A0U /**< Metric Counter 34
+ Register */
+#define XAPM_MC35_OFFSET 0x000007B0U /**< Metric Counter 35
+ Register */
+#define XAPM_MC36_OFFSET 0x00000900U /**< Metric Counter 36
+ Register */
+#define XAPM_MC37_OFFSET 0x00000910U /**< Metric Counter 37
+ Register */
+#define XAPM_MC38_OFFSET 0x00000920U /**< Metric Counter 38
+ Register */
+#define XAPM_MC39_OFFSET 0x00000930U /**< Metric Counter 39
+ Register */
+#define XAPM_MC40_OFFSET 0x00000940U /**< Metric Counter 40
+ Register */
+#define XAPM_MC41_OFFSET 0x00000950U /**< Metric Counter 41
+ Register */
+#define XAPM_MC42_OFFSET 0x00000960U /**< Metric Counter 42
+ Register */
+#define XAPM_MC43_OFFSET 0x00000970U /**< Metric Counter 43
+ Register */
+#define XAPM_MC44_OFFSET 0x00000980U /**< Metric Counter 44
+ Register */
+#define XAPM_MC45_OFFSET 0x00000990U /**< Metric Counter 45
+ Register */
+#define XAPM_MC46_OFFSET 0x000009A0U /**< Metric Counter 46
+ Register */
+#define XAPM_MC47_OFFSET 0x000009B0U /**< Metric Counter 47
+ Register */
+
+#define XAPM_SMC10_OFFSET 0x000002A0U /**< Sampled Metric Counter
+ 10 Register */
+#define XAPM_SMC11_OFFSET 0x000002B0U /**< Sampled Metric Counter
+ 11 Register */
+#define XAPM_SMC12_OFFSET 0x00000600U /**< Sampled Metric Counter
+ 12 Register */
+#define XAPM_SMC13_OFFSET 0x00000610U /**< Sampled Metric Counter
+ 13 Register */
+#define XAPM_SMC14_OFFSET 0x00000620U /**< Sampled Metric Counter
+ 14 Register */
+#define XAPM_SMC15_OFFSET 0x00000630U /**< Sampled Metric Counter
+ 15 Register */
+#define XAPM_SMC16_OFFSET 0x00000640U /**< Sampled Metric Counter
+ 16 Register */
+#define XAPM_SMC17_OFFSET 0x00000650U /**< Sampled Metric Counter
+ 17 Register */
+#define XAPM_SMC18_OFFSET 0x00000660U /**< Sampled Metric Counter
+ 18 Register */
+#define XAPM_SMC19_OFFSET 0x00000670U /**< Sampled Metric Counter
+ 19 Register */
+#define XAPM_SMC20_OFFSET 0x00000680U /**< Sampled Metric Counter
+ 20 Register */
+#define XAPM_SMC21_OFFSET 0x00000690U /**< Sampled Metric Counter
+ 21 Register */
+#define XAPM_SMC22_OFFSET 0x000006A0U /**< Sampled Metric Counter
+ 22 Register */
+#define XAPM_SMC23_OFFSET 0x000006B0U /**< Sampled Metric Counter
+ 23 Register */
+#define XAPM_SMC24_OFFSET 0x00000800U /**< Sampled Metric Counter
+ 24 Register */
+#define XAPM_SMC25_OFFSET 0x00000810U /**< Sampled Metric Counter
+ 25 Register */
+#define XAPM_SMC26_OFFSET 0x00000820U /**< Sampled Metric Counter
+ 26 Register */
+#define XAPM_SMC27_OFFSET 0x00000830U /**< Sampled Metric Counter
+ 27 Register */
+#define XAPM_SMC28_OFFSET 0x00000840U /**< Sampled Metric Counter
+ 28 Register */
+#define XAPM_SMC29_OFFSET 0x00000850U /**< Sampled Metric Counter
+ 29 Register */
+#define XAPM_SMC30_OFFSET 0x00000860U /**< Sampled Metric Counter
+ 30 Register */
+#define XAPM_SMC31_OFFSET 0x00000870U /**< Sampled Metric Counter
+ 31 Register */
+#define XAPM_SMC32_OFFSET 0x00000880U /**< Sampled Metric Counter
+ 32 Register */
+#define XAPM_SMC33_OFFSET 0x00000890U /**< Sampled Metric Counter
+ 33 Register */
+#define XAPM_SMC34_OFFSET 0x000008A0U /**< Sampled Metric Counter
+ 34 Register */
+#define XAPM_SMC35_OFFSET 0x000008B0U /**< Sampled Metric Counter
+ 35 Register */
+#define XAPM_SMC36_OFFSET 0x00000A00U /**< Sampled Metric Counter
+ 36 Register */
+#define XAPM_SMC37_OFFSET 0x00000A10U /**< Sampled Metric Counter
+ 37 Register */
+#define XAPM_SMC38_OFFSET 0x00000A20U /**< Sampled Metric Counter
+ 38 Register */
+#define XAPM_SMC39_OFFSET 0x00000A30U /**< Sampled Metric Counter
+ 39 Register */
+#define XAPM_SMC40_OFFSET 0x00000A40U /**< Sampled Metric Counter
+ 40 Register */
+#define XAPM_SMC41_OFFSET 0x00000A50U /**< Sampled Metric Counter
+ 41 Register */
+#define XAPM_SMC42_OFFSET 0x00000A60U /**< Sampled Metric Counter
+ 42 Register */
+#define XAPM_SMC43_OFFSET 0x00000A70U /**< Sampled Metric Counter
+ 43 Register */
+#define XAPM_SMC44_OFFSET 0x00000A80U /**< Sampled Metric Counter
+ 44 Register */
+#define XAPM_SMC45_OFFSET 0x00000A90U /**< Sampled Metric Counter
+ 45 Register */
+#define XAPM_SMC46_OFFSET 0x00000AA0U /**< Sampled Metric Counter
+ 46 Register */
+#define XAPM_SMC47_OFFSET 0x00000AB0U /**< Sampled Metric Counter
+ 47 Register */
+
+#define XAPM_CTL_OFFSET 0x00000300U /**< Control Register */
+
+#define XAPM_ID_OFFSET 0x00000304U /**< Latency ID Register */
+
+#define XAPM_IDMASK_OFFSET 0x00000308U /**< ID Mask Register */
+
+#define XAPM_RID_OFFSET 0x0000030CU /**< Latency Write ID Register */
+
+#define XAPM_RIDMASK_OFFSET 0x00000310U /**< Read ID Mask Register */
+
+#define XAPM_FEC_OFFSET 0x00000400U /**< Flag Enable
+ Control Register */
+
+#define XAPM_SWD_OFFSET 0x00000404U /**< Software-written
+ Data Register */
+
+/* @} */
+
+/**
+ * @name AXI Monitor Sample Interval Control Register mask(s)
+ * @{
+ */
+
+#define XAPM_SICR_MCNTR_RST_MASK 0x00000100U /**< Enable the Metric
+ Counter Reset */
+#define XAPM_SICR_LOAD_MASK 0x00000002U /**< Load the Sample Interval
+ * Register Value into the
+ * counter */
+#define XAPM_SICR_ENABLE_MASK 0x00000001U /**< Enable the downcounter */
+
+/*@}*/
+
+
+/** @name Interrupt Status/Enable Register Bit Definitions and Masks
+ * @{
+ */
+
+#define XAPM_IXR_MC9_OVERFLOW_MASK 0x00001000U /**< Metric Counter 9
+ * Overflow> */
+#define XAPM_IXR_MC8_OVERFLOW_MASK 0x00000800U /**< Metric Counter 8
+ * Overflow> */
+#define XAPM_IXR_MC7_OVERFLOW_MASK 0x00000400U /**< Metric Counter 7
+ * Overflow> */
+#define XAPM_IXR_MC6_OVERFLOW_MASK 0x00000200U /**< Metric Counter 6
+ * Overflow> */
+#define XAPM_IXR_MC5_OVERFLOW_MASK 0x00000100U /**< Metric Counter 5
+ * Overflow> */
+#define XAPM_IXR_MC4_OVERFLOW_MASK 0x00000080U /**< Metric Counter 4
+ * Overflow> */
+#define XAPM_IXR_MC3_OVERFLOW_MASK 0x00000040U /**< Metric Counter 3
+ * Overflow> */
+#define XAPM_IXR_MC2_OVERFLOW_MASK 0x00000020U /**< Metric Counter 2
+ * Overflow> */
+#define XAPM_IXR_MC1_OVERFLOW_MASK 0x00000010U /**< Metric Counter 1
+ * Overflow> */
+#define XAPM_IXR_MC0_OVERFLOW_MASK 0x00000008U /**< Metric Counter 0
+ * Overflow> */
+#define XAPM_IXR_FIFO_FULL_MASK 0x00000004U /**< Event Log FIFO
+ * full> */
+#define XAPM_IXR_SIC_OVERFLOW_MASK 0x00000002U /**< Sample Interval
+ * Counter Overflow> */
+#define XAPM_IXR_GCC_OVERFLOW_MASK 0x00000001U /**< Global Clock Counter
+ * Overflow> */
+#define XAPM_IXR_ALL_MASK (XAPM_IXR_SIC_OVERFLOW_MASK | \
+ XAPM_IXR_GCC_OVERFLOW_MASK | \
+ XAPM_IXR_FIFO_FULL_MASK | \
+ XAPM_IXR_MC0_OVERFLOW_MASK | \
+ XAPM_IXR_MC1_OVERFLOW_MASK | \
+ XAPM_IXR_MC2_OVERFLOW_MASK | \
+ XAPM_IXR_MC3_OVERFLOW_MASK | \
+ XAPM_IXR_MC4_OVERFLOW_MASK | \
+ XAPM_IXR_MC5_OVERFLOW_MASK | \
+ XAPM_IXR_MC6_OVERFLOW_MASK | \
+ XAPM_IXR_MC7_OVERFLOW_MASK | \
+ XAPM_IXR_MC8_OVERFLOW_MASK | \
+ XAPM_IXR_MC9_OVERFLOW_MASK)
+/* @} */
+
+/**
+ * @name AXI Monitor Control Register mask(s)
+ * @{
+ */
+
+#define XAPM_CR_FIFO_RESET_MASK 0x02000000U
+ /**< FIFO Reset */
+#define XAPM_CR_GCC_RESET_MASK 0x00020000U
+ /**< Global Clk
+ Counter Reset */
+#define XAPM_CR_GCC_ENABLE_MASK 0x00010000U
+ /**< Global Clk
+ Counter Enable */
+#define XAPM_CR_EVTLOG_EXTTRIGGER_MASK 0x00000200U
+ /**< Enable External trigger
+ to start event Log */
+#define XAPM_CR_EVENTLOG_ENABLE_MASK 0x00000100U
+ /**< Event Log Enable */
+
+#define XAPM_CR_RDLATENCY_END_MASK 0x00000080U
+ /**< Write Latency
+ End point */
+#define XAPM_CR_RDLATENCY_START_MASK 0x00000040U
+ /**< Read Latency
+ Start point */
+#define XAPM_CR_WRLATENCY_END_MASK 0x00000020U
+ /**< Write Latency
+ End point */
+#define XAPM_CR_WRLATENCY_START_MASK 0x00000010U
+ /**< Write Latency
+ Start point */
+#define XAPM_CR_IDFILTER_ENABLE_MASK 0x00000008U
+ /**< ID Filter Enable */
+
+#define XAPM_CR_MCNTR_EXTTRIGGER_MASK 0x00000004U
+ /**< Enable External
+ trigger to start
+ Metric Counters */
+#define XAPM_CR_MCNTR_RESET_MASK 0x00000002U
+ /**< Metrics Counter
+ Reset */
+#define XAPM_CR_MCNTR_ENABLE_MASK 0x00000001U
+ /**< Metrics Counter
+ Enable */
+/*@}*/
+
+/**
+ * @name AXI Monitor ID Register mask(s)
+ * @{
+ */
+
+#define XAPM_ID_RID_MASK 0xFFFF0000U /**< Read ID */
+
+#define XAPM_ID_WID_MASK 0x0000FFFFU /**< Write ID */
+
+/*@}*/
+
+/**
+ * @name AXI Monitor ID Mask Register mask(s)
+ * @{
+ */
+
+#define XAPM_MASKID_RID_MASK 0xFFFF0000U /**< Read ID Mask */
+
+#define XAPM_MASKID_WID_MASK 0x0000FFFFU /**< Write ID Mask*/
+
+/*@}*/
+
+/**************************** Type Definitions *******************************/
+
+/***************** Macros (Inline Functions) Definitions *********************/
+
+/*****************************************************************************/
+/**
+*
+* Read a register of the AXI Performance Monitor device. This macro provides
+* register access to all registers using the register offsets defined above.
+*
+* @param BaseAddress contains the base address of the device.
+* @param RegOffset is the offset of the register to read.
+*
+* @return The contents of the register.
+*
+* @note C-style Signature:
+* u32 XAxiPmon_ReadReg(u32 BaseAddress, u32 RegOffset);
+*
+******************************************************************************/
+#define XAxiPmon_ReadReg(BaseAddress, RegOffset) \
+ (Xil_In32((BaseAddress) + (RegOffset)))
+
+/*****************************************************************************/
+/**
+*
+* Write a register of the AXI Performance Monitor device. This macro provides
+* register access to all registers using the register offsets defined above.
+*
+* @param BaseAddress contains the base address of the device.
+* @param RegOffset is the offset of the register to write.
+* @param Data is the value to write to the register.
+*
+* @return None.
+*
+* @note C-style Signature:
+* void XAxiPmon_WriteReg(u32 BaseAddress,
+* u32 RegOffset,u32 Data)
+*
+******************************************************************************/
+#define XAxiPmon_WriteReg(BaseAddress, RegOffset, Data) \
+ (Xil_Out32((BaseAddress) + (RegOffset), (Data)))
+
+/************************** Function Prototypes ******************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* End of protection macro. */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_2/src/xaxipmon_selftest.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_4/src/xaxipmon_selftest.c
similarity index 89%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_2/src/xaxipmon_selftest.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_4/src/xaxipmon_selftest.c
index 5d5d2c007..df2a9da66 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_2/src/xaxipmon_selftest.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_4/src/xaxipmon_selftest.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2012 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2012 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -33,6 +33,8 @@
/**
*
* @file xaxipmon_selftest.c
+* @addtogroup axipmon_v6_3
+* @{
*
* This file contains a diagnostic self test function for the XAxiPmon driver.
* The self test function does a simple read/write test of the Alarm Threshold
@@ -50,6 +52,7 @@
* ----- ----- -------- -----------------------------------------------------
* 1.00a bss 02/24/12 First release
* 2.00a bss 06/23/12 Updated to support v2_00a version of IP.
+* 6.3 kvn 07/02/15 Modified code according to MISRA-C:2012 guidelines.
*
*
*****************************************************************************/
@@ -65,8 +68,8 @@
* to the Range Registers of Incrementers
*/
-#define XAPM_TEST_RANGEUPPER_VALUE 16 /**< Test Value for Upper Range */
-#define XAPM_TEST_RANGELOWER_VALUE 8 /**< Test Value for Lower Range */
+#define XAPM_TEST_RANGEUPPER_VALUE 16U /**< Test Value for Upper Range */
+#define XAPM_TEST_RANGELOWER_VALUE 8U /**< Test Value for Lower Range */
/**************************** Type Definitions ******************************/
@@ -98,11 +101,11 @@
* device status after the reset operation.
*
******************************************************************************/
-int XAxiPmon_SelfTest(XAxiPmon *InstancePtr)
+s32 XAxiPmon_SelfTest(XAxiPmon *InstancePtr)
{
- int Status;
- u16 RangeUpper;
- u16 RangeLower;
+ s32 Status;
+ u16 RangeUpper = 0U;
+ u16 RangeLower = 0U;
/*
* Assert the argument
@@ -114,7 +117,7 @@ int XAxiPmon_SelfTest(XAxiPmon *InstancePtr)
/*
* Reset the device to get it back to its default state
*/
- XAxiPmon_ResetMetricCounter(InstancePtr);
+ (void)XAxiPmon_ResetMetricCounter(InstancePtr);
XAxiPmon_ResetGlobalClkCounter(InstancePtr);
/*
@@ -138,7 +141,7 @@ int XAxiPmon_SelfTest(XAxiPmon *InstancePtr)
/*
* Reset the device again to its default state.
*/
- XAxiPmon_ResetMetricCounter(InstancePtr);
+ (void)XAxiPmon_ResetMetricCounter(InstancePtr);
XAxiPmon_ResetGlobalClkCounter(InstancePtr);
/*
@@ -146,3 +149,4 @@ int XAxiPmon_SelfTest(XAxiPmon *InstancePtr)
*/
return Status;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_2/src/xaxipmon_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_4/src/xaxipmon_sinit.c
similarity index 92%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_2/src/xaxipmon_sinit.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_4/src/xaxipmon_sinit.c
index 06343dcd0..737d80b48 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_2/src/xaxipmon_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/axipmon_v6_4/src/xaxipmon_sinit.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2012 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2012 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -33,6 +33,8 @@
/**
*
* @file xaxipmon_sinit.c
+* @addtogroup axipmon_v6_3
+* @{
*
* This file contains the implementation of the XAxiPmon driver's static
* initialization functionality.
@@ -47,6 +49,7 @@
* ----- ----- -------- -----------------------------------------------------
* 1.00a bss 02/27/12 First release
* 2.00a bss 06/23/12 Updated to support v2_00a version of IP.
+* 6.3 kvn 07/02/15 Modified code according to MISRA-C:2012 guidelines.
*
*
******************************************************************************/
@@ -89,12 +92,13 @@ XAxiPmon_Config *XAxiPmon_LookupConfig(u16 DeviceId)
XAxiPmon_Config *CfgPtr = NULL;
u32 Index;
- for (Index=0; Index < XPAR_XAXIPMON_NUM_INSTANCES; Index++) {
+ for (Index=0U; Index < (u32)XPAR_XAXIPMON_NUM_INSTANCES; Index++) {
if (XAxiPmon_ConfigTable[Index].DeviceId == DeviceId) {
CfgPtr = &XAxiPmon_ConfigTable[Index];
break;
}
}
- return CfgPtr;
+ return (XAxiPmon_Config *)CfgPtr;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/Makefile
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/Makefile
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/Makefile
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps.c
index d4ba8d893..243b3a81b 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps.c
@@ -33,6 +33,8 @@
/**
*
* @file xcanps.c
+* @addtogroup canps_v3_0
+* @{
*
* Functions in this file are the minimum required functions for the XCanPs
* driver. See xcanps.h for a detailed description of the driver.
@@ -490,9 +492,9 @@ s32 XCanPs_Send(XCanPs *InstancePtr, u32 *FramePtr)
XCanPs_WriteReg(InstancePtr->CanConfig.BaseAddr,
XCANPS_TXFIFO_DLC_OFFSET, FramePtr[1]);
XCanPs_WriteReg(InstancePtr->CanConfig.BaseAddr,
- XCANPS_TXFIFO_DW1_OFFSET, FramePtr[2]);
+ XCANPS_TXFIFO_DW1_OFFSET, Xil_EndianSwap32(FramePtr[2]));
XCanPs_WriteReg(InstancePtr->CanConfig.BaseAddr,
- XCANPS_TXFIFO_DW2_OFFSET, FramePtr[3]);
+ XCANPS_TXFIFO_DW2_OFFSET, Xil_EndianSwap32(FramePtr[3]));
Status = XST_SUCCESS;
}
@@ -537,10 +539,10 @@ s32 XCanPs_Recv(XCanPs *InstancePtr, u32 *FramePtr)
XCANPS_RXFIFO_ID_OFFSET);
FramePtr[1] = XCanPs_ReadReg(InstancePtr->CanConfig.BaseAddr,
XCANPS_RXFIFO_DLC_OFFSET);
- FramePtr[2] = XCanPs_ReadReg(InstancePtr->CanConfig.BaseAddr,
- XCANPS_RXFIFO_DW1_OFFSET);
- FramePtr[3] = XCanPs_ReadReg(InstancePtr->CanConfig.BaseAddr,
- XCANPS_RXFIFO_DW2_OFFSET);
+ FramePtr[2] = Xil_EndianSwap32(XCanPs_ReadReg(InstancePtr->CanConfig.BaseAddr,
+ XCANPS_RXFIFO_DW1_OFFSET));
+ FramePtr[3] = Xil_EndianSwap32(XCanPs_ReadReg(InstancePtr->CanConfig.BaseAddr,
+ XCANPS_RXFIFO_DW2_OFFSET));
/*
* Clear RXNEMP bit in ISR. This allows future XCanPs_IsRxEmpty() call
@@ -597,9 +599,9 @@ s32 XCanPs_SendHighPriority(XCanPs *InstancePtr, u32 *FramePtr)
XCanPs_WriteReg(InstancePtr->CanConfig.BaseAddr,
XCANPS_TXHPB_DLC_OFFSET, FramePtr[1]);
XCanPs_WriteReg(InstancePtr->CanConfig.BaseAddr,
- XCANPS_TXHPB_DW1_OFFSET, FramePtr[2]);
+ XCANPS_TXHPB_DW1_OFFSET, Xil_EndianSwap32(FramePtr[2]));
XCanPs_WriteReg(InstancePtr->CanConfig.BaseAddr,
- XCANPS_TXHPB_DW2_OFFSET, FramePtr[3]);
+ XCANPS_TXHPB_DW2_OFFSET, Xil_EndianSwap32(FramePtr[3]));
Status = XST_SUCCESS;
}
@@ -1200,3 +1202,4 @@ static void StubHandler(void)
{
Xil_AssertVoidAlways();
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps.h
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps.h
index 9c4c24211..b180e37ec 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps.h
@@ -33,6 +33,9 @@
/**
*
* @file xcanps.h
+* @addtogroup canps_v3_0
+* @{
+* @details
*
* The Xilinx CAN driver component. This component supports the Xilinx
* CAN Controller.
@@ -197,6 +200,10 @@
* SDK claims a 40kbps baud rate but it's not.
* 3.0 adk 09/12/14 Added support for Zynq Ultrascale Mp.Also code
* modified for MISRA-C:2012 compliance.
+* 3.1 adk 10/11/15 Fixed CR#911958 Add support for Tx Watermark example.
+* Data mismatch while sending data less than 8 bytes.
+* 3.1 nsk 12/21/15 Updated XCanPs_IntrHandler in xcanps_intr.c to handle
+* error interrupts correctly. CR#925615
*
*
******************************************************************************/
@@ -565,3 +572,4 @@ XCanPs_Config *XCanPs_LookupConfig(u16 DeviceId);
#endif
#endif /* end of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_g.c
similarity index 89%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_g.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_g.c
index 487b9d8a7..b45c5b2d6 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_g.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_g.c
@@ -1,59 +1,55 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Driver configuration
-*
-*******************************************************************/
-
-#include "xparameters.h"
-#include "xcanps.h"
-
-/*
-* The configuration table for devices
-*/
-
-XCanPs_Config XCanPs_ConfigTable[] =
-{
- {
- XPAR_PSU_CAN_0_DEVICE_ID,
- XPAR_PSU_CAN_0_BASEADDR
- },
- {
- XPAR_PSU_CAN_1_DEVICE_ID,
- XPAR_PSU_CAN_1_BASEADDR
- }
-};
-
-
+
+/*******************************************************************
+*
+* CAUTION: This file is automatically generated by HSI.
+* Version:
+* DO NOT EDIT.
+*
+* Copyright (C) 2010-2016 Xilinx, Inc. All Rights Reserved.*
+*Permission is hereby granted, free of charge, to any person obtaining a copy
+*of this software and associated documentation files (the Software), to deal
+*in the Software without restriction, including without limitation the rights
+*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*copies of the Software, and to permit persons to whom the Software is
+*furnished to do so, subject to the following conditions:
+*
+*The above copyright notice and this permission notice shall be included in
+*all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+*(a) running on a Xilinx device, or
+*(b) that interact with a Xilinx device through a bus or interconnect.
+*
+*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+*XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+*Except as contained in this notice, the name of the Xilinx shall not be used
+*in advertising or otherwise to promote the sale, use or other dealings in
+*this Software without prior written authorization from Xilinx.
+*
+
+*
+* Description: Driver configuration
+*
+*******************************************************************/
+
+#include "xparameters.h"
+#include "xcanps.h"
+
+/*
+* The configuration table for devices
+*/
+
+XCanPs_Config XCanPs_ConfigTable[] =
+{
+ {
+ XPAR_PSU_CAN_1_DEVICE_ID,
+ XPAR_PSU_CAN_1_BASEADDR
+ }
+};
+
+
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_hw.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_hw.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_hw.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_hw.c
index 4fa95c6a0..bbb96120a 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_hw.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_hw.c
@@ -33,6 +33,8 @@
/**
*
* @file xcanps_hw.c
+* @addtogroup canps_v3_0
+* @{
*
* This file contains the implementation of the canps interface reset sequence
*
@@ -88,3 +90,4 @@ void XCanPs_ResetHw(u32 BaseAddr)
XCanPs_WriteReg(BaseAddr, XCANPS_SRR_OFFSET, \
XCANPS_SRR_SRST_MASK);
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_hw.h
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_hw.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_hw.h
index 22f9b0725..9fe681aaf 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_hw.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_hw.h
@@ -33,6 +33,8 @@
/**
*
* @file xcanps_hw.h
+* @addtogroup canps_v3_0
+* @{
*
* This header file contains the identifiers and basic driver functions (or
* macros) that can be used to access the device. Other driver functions
@@ -364,3 +366,4 @@ void XCanPs_ResetHw(u32 BaseAddr);
#endif
#endif /* end of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_intr.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_intr.c
similarity index 96%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_intr.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_intr.c
index f3ad9d270..f6721ca75 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_intr.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_intr.c
@@ -33,6 +33,8 @@
/**
*
* @file xcanps_intr.c
+* @addtogroup canps_v3_0
+* @{
*
* This file contains functions related to CAN interrupt handling.
*
@@ -43,6 +45,8 @@
* ----- ----- -------- -----------------------------------------------
* 1.00a xd/sv 01/12/10 First release
* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
+* 3.1 nsk 12/21/15 Updated XCanPs_IntrHandler to handle error
+* interrupts correctly. CR#925615
*
*
******************************************************************************/
@@ -88,7 +92,7 @@ void XCanPs_IntrEnable(XCanPs *InstancePtr, u32 Mask)
* Write to the IER to enable the specified interrupts.
*/
IntrValue = XCanPs_IntrGetEnabled(InstancePtr);
- IntrValue |= Mask & XCANPS_IXR_ALL;
+ IntrValue |= Mask;
XCanPs_WriteReg(InstancePtr->CanConfig.BaseAddr,
XCANPS_IER_OFFSET, IntrValue);
}
@@ -231,6 +235,7 @@ void XCanPs_IntrHandler(void *InstancePtr)
{
u32 PendingIntr;
u32 EventIntr;
+ u32 ErrorStatus;
XCanPs *CanPtr = (XCanPs *) ((void *)InstancePtr);
Xil_AssertVoid(CanPtr != NULL);
@@ -250,13 +255,12 @@ void XCanPs_IntrHandler(void *InstancePtr)
*/
if (((PendingIntr & XCANPS_IXR_ERROR_MASK) != (u32)0) &&
(CanPtr->ErrorHandler != NULL)) {
- CanPtr->ErrorHandler(CanPtr->ErrorRef,
- XCanPs_GetBusErrorStatus(CanPtr));
+ ErrorStatus = XCanPs_GetBusErrorStatus(CanPtr);
+ CanPtr->ErrorHandler(CanPtr->ErrorRef,ErrorStatus);
/*
* Clear Error Status Register.
*/
- XCanPs_ClearBusErrorStatus(CanPtr,
- XCanPs_GetBusErrorStatus(CanPtr));
+ XCanPs_ClearBusErrorStatus(CanPtr,ErrorStatus);
}
/*
@@ -322,7 +326,7 @@ void XCanPs_IntrHandler(void *InstancePtr)
/*
* A frame was transmitted successfully.
*/
- if (((PendingIntr & XCANPS_IXR_TXOK_MASK) != (u32)0) &&
+ if (((PendingIntr & (XCANPS_IXR_TXOK_MASK | XCANPS_IXR_TXFWMEMP_MASK)) != (u32)0) &&
(CanPtr->SendHandler != NULL)) {
CanPtr->SendHandler(CanPtr->SendRef);
}
@@ -414,3 +418,4 @@ s32 XCanPs_SetHandler(XCanPs *InstancePtr, u32 HandlerType,
return Status;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_selftest.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_selftest.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_selftest.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_selftest.c
index c8a441ab8..8bc77d7f4 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_selftest.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_selftest.c
@@ -33,6 +33,8 @@
/**
*
* @file xcanps_selftest.c
+* @addtogroup canps_v3_0
+* @{
*
* This file contains a diagnostic self-test function for the XCanPs driver.
*
@@ -229,3 +231,4 @@ s32 XCanPs_SelfTest(XCanPs *InstancePtr)
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_sinit.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_sinit.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_sinit.c
index 3eed412e1..230c429b3 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_0/src/xcanps_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/canps_v3_1/src/xcanps_sinit.c
@@ -33,6 +33,8 @@
/**
*
* @file xcanps_sinit.c
+* @addtogroup canps_v3_0
+* @{
*
* This file contains the implementation of the XCanPs driver's static
* initialization functionality.
@@ -98,3 +100,4 @@ XCanPs_Config *XCanPs_LookupConfig(u16 DeviceId)
return (XCanPs_Config *)CfgPtr;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/coresightps_dcc_v1_2/src/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/coresightps_dcc_v1_2/src/Makefile
new file mode 100644
index 000000000..007162d8c
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/coresightps_dcc_v1_2/src/Makefile
@@ -0,0 +1,40 @@
+COMPILER=
+ARCHIVER=
+CP=cp
+COMPILER_FLAGS=
+EXTRA_COMPILER_FLAGS=
+LIB=libxil.a
+
+CC_FLAGS = $(COMPILER_FLAGS)
+ECC_FLAGS = $(EXTRA_COMPILER_FLAGS)
+
+RELEASEDIR=../../../lib
+INCLUDEDIR=../../../include
+INCLUDES=-I./. -I${INCLUDEDIR}
+
+OUTS = *.o
+
+LIBSOURCES:=*.c
+INCLUDEFILES:=*.h
+
+OBJECTS = $(addsuffix .o, $(basename $(wildcard *.c)))
+
+libs: banner coresightps_dcc_comp_libs clean
+
+%.o: %.c
+ ${COMPILER} $(CC_FLAGS) $(ECC_FLAGS) $(INCLUDES) -o $@ $<
+
+banner:
+ echo "Compiling coresightps_dcc"
+
+coresightps_dcc_comp_libs: ${OBJECTS}
+ $(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OBJECTS}
+
+.PHONY: include
+include: coresightps_dcc_includes
+
+coresightps_dcc_includes:
+ ${CP} ${INCLUDEFILES} ${INCLUDEDIR}
+
+clean:
+ rm -rf ${OBJECTS}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/coresightps_dcc_v1_2/src/xcoresightpsdcc.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/coresightps_dcc_v1_2/src/xcoresightpsdcc.c
new file mode 100644
index 000000000..e999f6f5d
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/coresightps_dcc_v1_2/src/xcoresightpsdcc.c
@@ -0,0 +1,181 @@
+/******************************************************************************
+*
+* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+* (a) running on a Xilinx device, or
+* (b) that interact with a Xilinx device through a bus or interconnect.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*
+* Except as contained in this notice, the name of the Xilinx shall not be used
+* in advertising or otherwise to promote the sale, use or other dealings in
+* this Software without prior written authorization from Xilinx.
+*
+******************************************************************************/
+/*****************************************************************************/
+/**
+*
+* @file xcoresightpsdcc.c
+* @addtogroup coresightps_dcc_v1_1
+* @{
+*
+* Functions in this file are the minimum required functions for the
+* XCoreSightPs driver.
+*
+* @note None.
+*
+*
+*
+* MODIFICATION HISTORY:
+*
+* Ver Who Date Changes
+* ----- ----- -------- -----------------------------------------------
+* 1.00 kvn 02/14/15 First release
+* 1.1 kvn 06/12/15 Add support for Zynq Ultrascale+ MP.
+* kvn 08/18/15 Modified Makefile according to compiler changes.
+* 1.2 kvn 10/09/15 Add support for IAR Compiler.
+*
+*
+*
+******************************************************************************/
+
+/***************************** Include Files *********************************/
+
+#include
+#include
+
+#ifdef __ICCARM__
+#define INLINE
+#else
+#define INLINE __inline
+#endif
+
+/* DCC Status Bits */
+#define XCORESIGHTPS_DCC_STATUS_RX (1 << 30)
+#define XCORESIGHTPS_DCC_STATUS_TX (1 << 29)
+
+static INLINE u32 XCoresightPs_DccGetStatus(void);
+
+/****************************************************************************/
+/**
+*
+* This functions sends a single byte using the DCC. It is blocking in that it
+* waits for the transmitter to become non-full before it writes the byte to
+* the transmit register.
+*
+* @param BaseAddress is a dummy parameter to match the function proto
+* of functions for other stdio devices.
+* @param Data is the byte of data to send
+*
+* @return None.
+*
+* @note None.
+*
+******************************************************************************/
+void XCoresightPs_DccSendByte(u32 BaseAddress, u8 Data)
+{
+ (void) BaseAddress;
+ while (XCoresightPs_DccGetStatus() & XCORESIGHTPS_DCC_STATUS_TX)
+ dsb();
+#ifdef __aarch64__
+ asm volatile ("msr dbgdtrtx_el0, %0" : : "r" (Data));
+#elif defined (__GNUC__) || defined (__ICCARM__)
+ asm volatile("mcr p14, 0, %0, c0, c5, 0"
+ : : "r" (Data));
+#else
+ {
+ volatile register u32 Reg __asm("cp14:0:c0:c5:0");
+ Reg = Data;
+ }
+#endif
+ isb();
+
+}
+
+/****************************************************************************/
+/**
+*
+* This functions receives a single byte using the DCC. It is blocking in that
+* it waits for the receiver to become non-empty before it reads from the
+* receive register.
+*
+* @param BaseAddress is a dummy parameter to match the function proto
+* of functions for other stdio devices.
+*
+* @return The byte of data received.
+*
+* @note None.
+*
+******************************************************************************/
+u8 XCoresightPs_DccRecvByte(u32 BaseAddress)
+{
+ u8 Data;
+ (void) BaseAddress;
+
+ while (!(XCoresightPs_DccGetStatus() & XCORESIGHTPS_DCC_STATUS_RX))
+ dsb();
+
+#ifdef __aarch64__
+ asm volatile ("mrs %0, dbgdtrrx_el0" : "=r" (Data));
+#elif defined (__GNUC__) || defined (__ICCARM__)
+ asm volatile("mrc p14, 0, %0, c0, c5, 0"
+ : "=r" (Data));
+#else
+ {
+ volatile register u32 Reg __asm("cp14:0:c0:c5:0");
+ Data = Reg;
+ }
+#endif
+ isb();
+
+ return Data;
+}
+
+
+/****************************************************************************/
+/**INLINE
+*
+* This functions read the status register of the DCC.
+*
+* @param BaseAddress is the base address of the device
+*
+* @return The contents of the Status Register.
+*
+* @note None.
+*
+******************************************************************************/
+static INLINE u32 XCoresightPs_DccGetStatus(void)
+{
+ u32 Status;
+
+#ifdef __aarch64__
+ asm volatile ("mrs %0, mdccsr_el0" : "=r" (Status));
+#elif defined (__GNUC__) || defined (__ICCARM__)
+ asm volatile("mrc p14, 0, %0, c0, c1, 0"
+ : "=r" (Status) : : "cc");
+#else
+ {
+ volatile register u32 Reg __asm("cp14:0:c0:c1:0");
+ Status = Reg;
+ }
+#endif
+ return Status;
+}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_mmu.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/coresightps_dcc_v1_2/src/xcoresightpsdcc.h
similarity index 67%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_mmu.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/coresightps_dcc_v1_2/src/xcoresightpsdcc.h
index d74b3d930..6bab7ae09 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_mmu.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/coresightps_dcc_v1_2/src/xcoresightpsdcc.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -31,49 +31,40 @@
******************************************************************************/
/*****************************************************************************/
/**
-* @file xil_mmu.h
*
+* @file xcoresightpsdcc.h
+* @addtogroup coresightps_dcc_v1_1
+* @{
+* @details
+*
+* CoreSight driver component.
+*
+* The coresight is a part of debug communication channel (DCC) group. Jtag UART
+* for ARM uses DCC. Each ARM core has its own DCC, so one need to select an
+* ARM target in XSDB console before running the jtag terminal command. Using the
+* coresight driver component, the output stream can be directed to a log file.
+*
+* @note None.
*
*
*
* MODIFICATION HISTORY:
*
-* Ver Who Date Changes
-* ----- ---- -------- ---------------------------------------------------
-* 5.00 pkp 05/29/14 First release
-*
+* Ver Who Date Changes
+* ----- ----- -------- -----------------------------------------------
+* 1.00 kvn 02/14/15 First release
+* 1.1 kvn 06/12/15 Add support for Zynq Ultrascale+ MP.
+* kvn 08/18/15 Modified Makefile according to compiler changes.
*
-* @note
-*
-* None.
+*
*
******************************************************************************/
-#ifndef XIL_MMU_H
-#define XIL_MMU_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
/***************************** Include Files *********************************/
-#include "xil_types.h"
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/**************************** Type Definitions *******************************/
-
-/************************** Constant Definitions *****************************/
-
-/************************** Variable Definitions *****************************/
-
-/************************** Function Prototypes ******************************/
-
-void Xil_SetTlbAttributes(INTPTR Addr, u64 attrib);
+#include
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+void XCoresightPs_DccSendByte(u32 BaseAddress, u8 Data);
-#endif /* XIL_MMU_H */
+u8 XCoresightPs_DccRecvByte(u32 BaseAddress);
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/cpu_cortexa53_v1_0/src/xcpu_cortexa53.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/cpu_cortexa53_v1_0/src/xcpu_cortexa53.h
deleted file mode 100644
index cbdfc1705..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/cpu_cortexa53_v1_0/src/xcpu_cortexa53.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xcpu_cortexa53.h
-*
-* dummy file
-*
-******************************************************************************/
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/cpu_cortexa53_v1_0/src/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/cpu_cortexa53_v1_1/src/Makefile
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/cpu_cortexa53_v1_0/src/Makefile
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/cpu_cortexa53_v1_1/src/Makefile
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcpu_cortexa53.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/cpu_cortexa53_v1_1/src/xcpu_cortexa53.h
similarity index 96%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcpu_cortexa53.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/cpu_cortexa53_v1_1/src/xcpu_cortexa53.h
index cbdfc1705..6083206d0 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xcpu_cortexa53.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/cpu_cortexa53_v1_1/src/xcpu_cortexa53.h
@@ -33,7 +33,11 @@
/**
*
* @file xcpu_cortexa53.h
+* @addtogroup cpu_cortexa53_v1_0
+* @{
+* @details
*
* dummy file
*
******************************************************************************/
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma.c
index 186e3619a..2f6a62e50 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma.c
@@ -34,6 +34,8 @@
/**
*
* @file xcsudma.c
+* @addtogroup csudma_v1_0
+* @{
*
* This file contains the implementation of the interface functions for CSU_DMA
* driver. Refer to the header file xcsudma.h for more detailed information.
@@ -762,3 +764,4 @@ void XCsuDma_GetConfig(XCsuDma *InstancePtr, XCsuDma_Channel Channel,
(u8)((Data & (u32)(XCSUDMA_CTRL2_MAXCMDS_MASK)));
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma.h
index 831bcfccd..fe63530a5 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma.h
@@ -82,6 +82,9 @@
* to build and link only those parts of the driver that are necessary.
*
* @file xcsudma.h
+* @addtogroup csudma_v1_0
+* @{
+* @details
*
* This header file contains identifiers and register-level driver functions (or
* macros), range macros, structure typedefs that can be used to access the
@@ -412,3 +415,4 @@ s32 XCsuDma_SelfTest(XCsuDma *InstancePtr);
#endif
#endif /* End of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_g.c
index 7157ccebf..b3fb65f5b 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_g.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_g.c
@@ -1,55 +1,55 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Driver configuration
-*
-*******************************************************************/
-
-#include "xparameters.h"
-#include "xcsudma.h"
-
-/*
-* The configuration table for devices
-*/
-
-XCsuDma_Config XCsuDma_ConfigTable[] =
-{
- {
- XPAR_PSU_CSUDMA_DEVICE_ID,
- XPAR_PSU_CSUDMA_BASEADDR
- }
-};
-
-
+
+/*******************************************************************
+*
+* CAUTION: This file is automatically generated by HSI.
+* Version:
+* DO NOT EDIT.
+*
+* Copyright (C) 2010-2016 Xilinx, Inc. All Rights Reserved.*
+*Permission is hereby granted, free of charge, to any person obtaining a copy
+*of this software and associated documentation files (the Software), to deal
+*in the Software without restriction, including without limitation the rights
+*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*copies of the Software, and to permit persons to whom the Software is
+*furnished to do so, subject to the following conditions:
+*
+*The above copyright notice and this permission notice shall be included in
+*all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+*(a) running on a Xilinx device, or
+*(b) that interact with a Xilinx device through a bus or interconnect.
+*
+*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+*XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+*Except as contained in this notice, the name of the Xilinx shall not be used
+*in advertising or otherwise to promote the sale, use or other dealings in
+*this Software without prior written authorization from Xilinx.
+*
+
+*
+* Description: Driver configuration
+*
+*******************************************************************/
+
+#include "xparameters.h"
+#include "xcsudma.h"
+
+/*
+* The configuration table for devices
+*/
+
+XCsuDma_Config XCsuDma_ConfigTable[] =
+{
+ {
+ XPAR_PSU_CSUDMA_DEVICE_ID,
+ XPAR_PSU_CSUDMA_BASEADDR
+ }
+};
+
+
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_hw.h
index 76e401c2b..6b2c2cdb8 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_hw.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_hw.h
@@ -33,6 +33,8 @@
/**
*
* @file xcsudma_hw.h
+* @addtogroup csudma_v1_0
+* @{
*
* This header file contains identifiers and register-level driver functions (or
* macros) that can be used to access the Xilinx CSU_DMA core.
@@ -306,3 +308,4 @@ extern "C" {
#endif /* End of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_intr.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_intr.c
index 0f60da81f..9f37e4582 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_intr.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_intr.c
@@ -34,6 +34,8 @@
/**
*
* @file xcsudma_intr.c
+* @addtogroup csudma_v1_0
+* @{
*
* This file contains interrupt related functions of Xilinx CSU_DMA core.
* Please see xcsudma.h for more details of the driver.
@@ -269,3 +271,4 @@ u32 XCsuDma_GetIntrMask(XCsuDma *InstancePtr, XCsuDma_Channel Channel)
((u32)(XCSUDMA_I_MASK_OFFSET) +
((u32)Channel * (u32)(XCSUDMA_OFFSET_DIFF)))));
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_selftest.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_selftest.c
index dd0f5498f..f61910fd4 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_selftest.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_selftest.c
@@ -34,6 +34,8 @@
/**
*
* @file xcsudma_selftest.c
+* @addtogroup csudma_v1_0
+* @{
*
* This file contains a diagnostic self-test function for the CSU_DMA driver.
* Refer to the header file xcsudma.h for more detailed information.
@@ -120,3 +122,4 @@ s32 XCsuDma_SelfTest(XCsuDma *InstancePtr)
return Status;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_sinit.c
index f0301dac9..10e5c14f6 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/csudma_v1_0/src/xcsudma_sinit.c
@@ -34,6 +34,8 @@
/**
*
* @file xcsudma_sinit.c
+* @addtogroup csudma_v1_0
+* @{
*
* This file contains static initialization methods for Xilinx CSU_DMA core.
*
@@ -102,3 +104,4 @@ XCsuDma_Config *XCsuDma_LookupConfig(u16 DeviceId)
return (XCsuDma_Config *)CfgPtr;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_hw.h
deleted file mode 100644
index 4b8f582ce..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_hw.h
+++ /dev/null
@@ -1,647 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xemacps_hw.h
-*
-* This header file contains identifiers and low-level driver functions (or
-* macros) that can be used to access the PS Ethernet MAC (XEmacPs) device.
-* High-level driver functions are defined in xemacps.h.
-*
-* @note
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -------------------------------------------------------
-* 1.00a wsy 01/10/10 First release.
-* 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.
-* 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.
-* 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.
-* Remove "used bit set" from TX error interrupt masks.
-*
-*
-******************************************************************************/
-
-#ifndef XEMACPS_HW_H /* prevent circular inclusions */
-#define XEMACPS_HW_H /* by using protection macros */
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xil_io.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/************************** Constant Definitions *****************************/
-
-#define XEMACPS_MAX_MAC_ADDR 4U /**< Maxmum number of mac address
- supported */
-#define XEMACPS_MAX_TYPE_ID 4U /**< Maxmum number of type id supported */
-
-#ifdef __aarch64__
-#define XEMACPS_BD_ALIGNMENT 64U /**< Minimum buffer descriptor alignment
- on the local bus */
-#else
-
-#define XEMACPS_BD_ALIGNMENT 4U /**< Minimum buffer descriptor alignment
- on the local bus */
-#endif
-#define XEMACPS_RX_BUF_ALIGNMENT 4U /**< Minimum buffer alignment when using
- options that impose alignment
- restrictions on the buffer data on
- the local bus */
-
-/** @name Direction identifiers
- *
- * These are used by several functions and callbacks that need
- * to specify whether an operation specifies a send or receive channel.
- * @{
- */
-#define XEMACPS_SEND 1U /**< send direction */
-#define XEMACPS_RECV 2U /**< receive direction */
-/*@}*/
-
-/** @name MDC clock division
- * currently supporting 8, 16, 32, 48, 64, 96, 128, 224.
- * @{
- */
-typedef enum { MDC_DIV_8 = 0U, MDC_DIV_16, MDC_DIV_32, MDC_DIV_48,
- MDC_DIV_64, MDC_DIV_96, MDC_DIV_128, MDC_DIV_224
-} XEmacPs_MdcDiv;
-
-/*@}*/
-
-#define XEMACPS_RX_BUF_SIZE 1536U /**< Specify the receive buffer size in
- bytes, 64, 128, ... 10240 */
-#define XEMACPS_RX_BUF_SIZE_JUMBO 10240U
-
-#define XEMACPS_RX_BUF_UNIT 64U /**< Number of receive buffer bytes as a
- unit, this is HW setup */
-
-#define XEMACPS_MAX_RXBD 128U /**< Size of RX buffer descriptor queues */
-#define XEMACPS_MAX_TXBD 128U /**< Size of TX buffer descriptor queues */
-
-#define XEMACPS_MAX_HASH_BITS 64U /**< Maximum value for hash bits. 2**6 */
-
-/* Register offset definitions. Unless otherwise noted, register access is
- * 32 bit. Names are self explained here.
- */
-
-#define XEMACPS_NWCTRL_OFFSET 0x00000000U /**< Network Control reg */
-#define XEMACPS_NWCFG_OFFSET 0x00000004U /**< Network Config reg */
-#define XEMACPS_NWSR_OFFSET 0x00000008U /**< Network Status reg */
-
-#define XEMACPS_DMACR_OFFSET 0x00000010U /**< DMA Control reg */
-#define XEMACPS_TXSR_OFFSET 0x00000014U /**< TX Status reg */
-#define XEMACPS_RXQBASE_OFFSET 0x00000018U /**< RX Q Base address reg */
-#define XEMACPS_TXQBASE_OFFSET 0x0000001CU /**< TX Q Base address reg */
-#define XEMACPS_RXSR_OFFSET 0x00000020U /**< RX Status reg */
-
-#define XEMACPS_ISR_OFFSET 0x00000024U /**< Interrupt Status reg */
-#define XEMACPS_IER_OFFSET 0x00000028U /**< Interrupt Enable reg */
-#define XEMACPS_IDR_OFFSET 0x0000002CU /**< Interrupt Disable reg */
-#define XEMACPS_IMR_OFFSET 0x00000030U /**< Interrupt Mask reg */
-
-#define XEMACPS_PHYMNTNC_OFFSET 0x00000034U /**< Phy Maintaince reg */
-#define XEMACPS_RXPAUSE_OFFSET 0x00000038U /**< RX Pause Time reg */
-#define XEMACPS_TXPAUSE_OFFSET 0x0000003CU /**< TX Pause Time reg */
-
-#define XEMACPS_JUMBOMAXLEN_OFFSET 0x00000048U /**< Jumbo max length reg */
-
-#define XEMACPS_HASHL_OFFSET 0x00000080U /**< Hash Low address reg */
-#define XEMACPS_HASHH_OFFSET 0x00000084U /**< Hash High address reg */
-
-#define XEMACPS_LADDR1L_OFFSET 0x00000088U /**< Specific1 addr low reg */
-#define XEMACPS_LADDR1H_OFFSET 0x0000008CU /**< Specific1 addr high reg */
-#define XEMACPS_LADDR2L_OFFSET 0x00000090U /**< Specific2 addr low reg */
-#define XEMACPS_LADDR2H_OFFSET 0x00000094U /**< Specific2 addr high reg */
-#define XEMACPS_LADDR3L_OFFSET 0x00000098U /**< Specific3 addr low reg */
-#define XEMACPS_LADDR3H_OFFSET 0x0000009CU /**< Specific3 addr high reg */
-#define XEMACPS_LADDR4L_OFFSET 0x000000A0U /**< Specific4 addr low reg */
-#define XEMACPS_LADDR4H_OFFSET 0x000000A4U /**< Specific4 addr high reg */
-
-#define XEMACPS_MATCH1_OFFSET 0x000000A8U /**< Type ID1 Match reg */
-#define XEMACPS_MATCH2_OFFSET 0x000000ACU /**< Type ID2 Match reg */
-#define XEMACPS_MATCH3_OFFSET 0x000000B0U /**< Type ID3 Match reg */
-#define XEMACPS_MATCH4_OFFSET 0x000000B4U /**< Type ID4 Match reg */
-
-#define XEMACPS_STRETCH_OFFSET 0x000000BCU /**< IPG Stretch reg */
-
-#define XEMACPS_OCTTXL_OFFSET 0x00000100U /**< Octects transmitted Low
- reg */
-#define XEMACPS_OCTTXH_OFFSET 0x00000104U /**< Octects transmitted High
- reg */
-
-#define XEMACPS_TXCNT_OFFSET 0x00000108U /**< Error-free Frmaes
- transmitted counter */
-#define XEMACPS_TXBCCNT_OFFSET 0x0000010CU /**< Error-free Broadcast
- Frames counter*/
-#define XEMACPS_TXMCCNT_OFFSET 0x00000110U /**< Error-free Multicast
- Frame counter */
-#define XEMACPS_TXPAUSECNT_OFFSET 0x00000114U /**< Pause Frames Transmitted
- Counter */
-#define XEMACPS_TX64CNT_OFFSET 0x00000118U /**< Error-free 64 byte Frames
- Transmitted counter */
-#define XEMACPS_TX65CNT_OFFSET 0x0000011CU /**< Error-free 65-127 byte
- Frames Transmitted
- counter */
-#define XEMACPS_TX128CNT_OFFSET 0x00000120U /**< Error-free 128-255 byte
- Frames Transmitted
- counter*/
-#define XEMACPS_TX256CNT_OFFSET 0x00000124U /**< Error-free 256-511 byte
- Frames transmitted
- counter */
-#define XEMACPS_TX512CNT_OFFSET 0x00000128U /**< Error-free 512-1023 byte
- Frames transmitted
- counter */
-#define XEMACPS_TX1024CNT_OFFSET 0x0000012CU /**< Error-free 1024-1518 byte
- Frames transmitted
- counter */
-#define XEMACPS_TX1519CNT_OFFSET 0x00000130U /**< Error-free larger than
- 1519 byte Frames
- transmitted counter */
-#define XEMACPS_TXURUNCNT_OFFSET 0x00000134U /**< TX under run error
- counter */
-
-#define XEMACPS_SNGLCOLLCNT_OFFSET 0x00000138U /**< Single Collision Frame
- Counter */
-#define XEMACPS_MULTICOLLCNT_OFFSET 0x0000013CU /**< Multiple Collision Frame
- Counter */
-#define XEMACPS_EXCESSCOLLCNT_OFFSET 0x00000140U /**< Excessive Collision Frame
- Counter */
-#define XEMACPS_LATECOLLCNT_OFFSET 0x00000144U /**< Late Collision Frame
- Counter */
-#define XEMACPS_TXDEFERCNT_OFFSET 0x00000148U /**< Deferred Transmission
- Frame Counter */
-#define XEMACPS_TXCSENSECNT_OFFSET 0x0000014CU /**< Transmit Carrier Sense
- Error Counter */
-
-#define XEMACPS_OCTRXL_OFFSET 0x00000150U /**< Octects Received register
- Low */
-#define XEMACPS_OCTRXH_OFFSET 0x00000154U /**< Octects Received register
- High */
-
-#define XEMACPS_RXCNT_OFFSET 0x00000158U /**< Error-free Frames
- Received Counter */
-#define XEMACPS_RXBROADCNT_OFFSET 0x0000015CU /**< Error-free Broadcast
- Frames Received Counter */
-#define XEMACPS_RXMULTICNT_OFFSET 0x00000160U /**< Error-free Multicast
- Frames Received Counter */
-#define XEMACPS_RXPAUSECNT_OFFSET 0x00000164U /**< Pause Frames
- Received Counter */
-#define XEMACPS_RX64CNT_OFFSET 0x00000168U /**< Error-free 64 byte Frames
- Received Counter */
-#define XEMACPS_RX65CNT_OFFSET 0x0000016CU /**< Error-free 65-127 byte
- Frames Received Counter */
-#define XEMACPS_RX128CNT_OFFSET 0x00000170U /**< Error-free 128-255 byte
- Frames Received Counter */
-#define XEMACPS_RX256CNT_OFFSET 0x00000174U /**< Error-free 256-512 byte
- Frames Received Counter */
-#define XEMACPS_RX512CNT_OFFSET 0x00000178U /**< Error-free 512-1023 byte
- Frames Received Counter */
-#define XEMACPS_RX1024CNT_OFFSET 0x0000017CU /**< Error-free 1024-1518 byte
- Frames Received Counter */
-#define XEMACPS_RX1519CNT_OFFSET 0x00000180U /**< Error-free 1519-max byte
- Frames Received Counter */
-#define XEMACPS_RXUNDRCNT_OFFSET 0x00000184U /**< Undersize Frames Received
- Counter */
-#define XEMACPS_RXOVRCNT_OFFSET 0x00000188U /**< Oversize Frames Received
- Counter */
-#define XEMACPS_RXJABCNT_OFFSET 0x0000018CU /**< Jabbers Received
- Counter */
-#define XEMACPS_RXFCSCNT_OFFSET 0x00000190U /**< Frame Check Sequence
- Error Counter */
-#define XEMACPS_RXLENGTHCNT_OFFSET 0x00000194U /**< Length Field Error
- Counter */
-#define XEMACPS_RXSYMBCNT_OFFSET 0x00000198U /**< Symbol Error Counter */
-#define XEMACPS_RXALIGNCNT_OFFSET 0x0000019CU /**< Alignment Error Counter */
-#define XEMACPS_RXRESERRCNT_OFFSET 0x000001A0U /**< Receive Resource Error
- Counter */
-#define XEMACPS_RXORCNT_OFFSET 0x000001A4U /**< Receive Overrun Counter */
-#define XEMACPS_RXIPCCNT_OFFSET 0x000001A8U /**< IP header Checksum Error
- Counter */
-#define XEMACPS_RXTCPCCNT_OFFSET 0x000001ACU /**< TCP Checksum Error
- Counter */
-#define XEMACPS_RXUDPCCNT_OFFSET 0x000001B0U /**< UDP Checksum Error
- Counter */
-#define XEMACPS_LAST_OFFSET 0x000001B4U /**< Last statistic counter
- 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 */
-#define XEMACPS_1588_INC_OFFSET 0x000001DCU /**< 1588 nanosecond
- increment counter */
-#define XEMACPS_PTP_TXSEC_OFFSET 0x000001E0U /**< 1588 PTP transmit second
- counter */
-#define XEMACPS_PTP_TXNANOSEC_OFFSET 0x000001E4U /**< 1588 PTP transmit
- nanosecond counter */
-#define XEMACPS_PTP_RXSEC_OFFSET 0x000001E8U /**< 1588 PTP receive second
- counter */
-#define XEMACPS_PTP_RXNANOSEC_OFFSET 0x000001ECU /**< 1588 PTP receive
- nanosecond counter */
-#define XEMACPS_PTPP_TXSEC_OFFSET 0x000001F0U /**< 1588 PTP peer transmit
- second counter */
-#define XEMACPS_PTPP_TXNANOSEC_OFFSET 0x000001F4U /**< 1588 PTP peer transmit
- nanosecond counter */
-#define XEMACPS_PTPP_RXSEC_OFFSET 0x000001F8U /**< 1588 PTP peer receive
- second counter */
-#define XEMACPS_PTPP_RXNANOSEC_OFFSET 0x000001FCU /**< 1588 PTP peer receive
- 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 */
-#define XEMACPS_MSBBUF_QBASE_OFFSET 0x000004C8U /**< MSB Buffer Q Base
- reg */
-#define XEMACPS_INTQ1_IER_OFFSET 0x00000600U /**< Interrupt Q1 Enable
- reg */
-#define XEMACPS_INTQ1_IDR_OFFSET 0x00000620U /**< Interrupt Q1 Disable
- reg */
-#define XEMACPS_INTQ1_IMR_OFFSET 0x00000640U /**< Interrupt Q1 Mask
- reg */
-
-/* Define some bit positions for registers. */
-
-/** @name network control register bit definitions
- * @{
- */
-#define XEMACPS_NWCTRL_FLUSH_DPRAM_MASK 0x00040000U /**< Flush a packet from
- Rx SRAM */
-#define XEMACPS_NWCTRL_ZEROPAUSETX_MASK 0x00000800U /**< Transmit zero quantum
- pause frame */
-#define XEMACPS_NWCTRL_PAUSETX_MASK 0x00000800U /**< Transmit pause frame */
-#define XEMACPS_NWCTRL_HALTTX_MASK 0x00000400U /**< Halt transmission
- after current frame */
-#define XEMACPS_NWCTRL_STARTTX_MASK 0x00000200U /**< Start tx (tx_go) */
-
-#define XEMACPS_NWCTRL_STATWEN_MASK 0x00000080U /**< Enable writing to
- stat counters */
-#define XEMACPS_NWCTRL_STATINC_MASK 0x00000040U /**< Increment statistic
- registers */
-#define XEMACPS_NWCTRL_STATCLR_MASK 0x00000020U /**< Clear statistic
- registers */
-#define XEMACPS_NWCTRL_MDEN_MASK 0x00000010U /**< Enable MDIO port */
-#define XEMACPS_NWCTRL_TXEN_MASK 0x00000008U /**< Enable transmit */
-#define XEMACPS_NWCTRL_RXEN_MASK 0x00000004U /**< Enable receive */
-#define XEMACPS_NWCTRL_LOOPEN_MASK 0x00000002U /**< local loopback */
-/*@}*/
-
-/** @name network configuration register bit definitions
- * @{
- */
-#define XEMACPS_NWCFG_BADPREAMBEN_MASK 0x20000000U /**< disable rejection of
- non-standard preamble */
-#define XEMACPS_NWCFG_IPDSTRETCH_MASK 0x10000000U /**< enable transmit IPG */
-#define XEMACPS_NWCFG_FCSIGNORE_MASK 0x04000000U /**< disable rejection of
- FCS error */
-#define XEMACPS_NWCFG_HDRXEN_MASK 0x02000000U /**< RX half duplex */
-#define XEMACPS_NWCFG_RXCHKSUMEN_MASK 0x01000000U /**< enable RX checksum
- offload */
-#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_MDCCLKDIV_MASK 0x001C0000U /**< MDC Mask PCLK divisor */
-#define XEMACPS_NWCFG_FCSREM_MASK 0x00020000U /**< Discard FCS from
- received frames */
-#define XEMACPS_NWCFG_LENERRDSCRD_MASK 0x00010000U
-/**< RX length error discard */
-#define XEMACPS_NWCFG_RXOFFS_MASK 0x0000C000U /**< RX buffer offset */
-#define XEMACPS_NWCFG_PAUSEEN_MASK 0x00002000U /**< Enable pause RX */
-#define XEMACPS_NWCFG_RETRYTESTEN_MASK 0x00001000U /**< Retry test */
-#define XEMACPS_NWCFG_XTADDMACHEN_MASK 0x00000200U
-/**< External address match enable */
-#define XEMACPS_NWCFG_1000_MASK 0x00000400U /**< 1000 Mbps */
-#define XEMACPS_NWCFG_1536RXEN_MASK 0x00000100U /**< Enable 1536 byte
- frames reception */
-#define XEMACPS_NWCFG_UCASTHASHEN_MASK 0x00000080U /**< Receive unicast hash
- frames */
-#define XEMACPS_NWCFG_MCASTHASHEN_MASK 0x00000040U /**< Receive multicast hash
- frames */
-#define XEMACPS_NWCFG_BCASTDI_MASK 0x00000020U /**< Do not receive
- broadcast frames */
-#define XEMACPS_NWCFG_COPYALLEN_MASK 0x00000010U /**< Copy all frames */
-#define XEMACPS_NWCFG_JUMBO_MASK 0x00000008U /**< Jumbo frames */
-#define XEMACPS_NWCFG_NVLANDISC_MASK 0x00000004U /**< Receive only VLAN
- frames */
-#define XEMACPS_NWCFG_FDEN_MASK 0x00000002U/**< full duplex */
-#define XEMACPS_NWCFG_100_MASK 0x00000001U /**< 100 Mbps */
-#define XEMACPS_NWCFG_RESET_MASK 0x00080000U/**< reset value */
-/*@}*/
-
-/** @name network status register bit definitaions
- * @{
- */
-#define XEMACPS_NWSR_MDIOIDLE_MASK 0x00000004U /**< PHY management idle */
-#define XEMACPS_NWSR_MDIO_MASK 0x00000002U /**< Status of mdio_in */
-/*@}*/
-
-
-/** @name MAC address register word 1 mask
- * @{
- */
-#define XEMACPS_LADDR_MACH_MASK 0x0000FFFFU /**< Address bits[47:32]
- bit[31:0] are in BOTTOM */
-/*@}*/
-
-
-/** @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_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 */
-#define XEMACPS_DMACR_INCR16_AHB_BURST 0x00000010U /**< 16 bytes AHB bursts */
-/*@}*/
-
-/** @name transmit status register bit definitions
- * @{
- */
-#define XEMACPS_TXSR_HRESPNOK_MASK 0x00000100U /**< Transmit hresp not OK */
-#define XEMACPS_TXSR_URUN_MASK 0x00000040U /**< Transmit underrun */
-#define XEMACPS_TXSR_TXCOMPL_MASK 0x00000020U /**< Transmit completed OK */
-#define XEMACPS_TXSR_BUFEXH_MASK 0x00000010U /**< Transmit buffs exhausted
- mid frame */
-#define XEMACPS_TXSR_TXGO_MASK 0x00000008U /**< Status of go flag */
-#define XEMACPS_TXSR_RXOVR_MASK 0x00000004U /**< Retry limit exceeded */
-#define XEMACPS_TXSR_FRAMERX_MASK 0x00000002U /**< Collision tx frame */
-#define XEMACPS_TXSR_USEDREAD_MASK 0x00000001U /**< TX buffer used bit set */
-
-#define XEMACPS_TXSR_ERROR_MASK ((u32)XEMACPS_TXSR_HRESPNOK_MASK | \
- (u32)XEMACPS_TXSR_URUN_MASK | \
- (u32)XEMACPS_TXSR_BUFEXH_MASK | \
- (u32)XEMACPS_TXSR_RXOVR_MASK | \
- (u32)XEMACPS_TXSR_FRAMERX_MASK | \
- (u32)XEMACPS_TXSR_USEDREAD_MASK)
-/*@}*/
-
-/**
- * @name receive status register bit definitions
- * @{
- */
-#define XEMACPS_RXSR_HRESPNOK_MASK 0x00000008U /**< Receive hresp not OK */
-#define XEMACPS_RXSR_RXOVR_MASK 0x00000004U /**< Receive overrun */
-#define XEMACPS_RXSR_FRAMERX_MASK 0x00000002U /**< Frame received OK */
-#define XEMACPS_RXSR_BUFFNA_MASK 0x00000001U /**< RX buffer used bit set */
-
-#define XEMACPS_RXSR_ERROR_MASK ((u32)XEMACPS_RXSR_HRESPNOK_MASK | \
- (u32)XEMACPS_RXSR_RXOVR_MASK | \
- (u32)XEMACPS_RXSR_BUFFNA_MASK)
-/*@}*/
-
-/**
- * @name Interrupt Q1 status register bit definitions
- * @{
- */
-#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)
-
-/*@}*/
-
-/**
- * @name interrupts bit definitions
- * Bits definitions are same in XEMACPS_ISR_OFFSET,
- * XEMACPS_IER_OFFSET, XEMACPS_IDR_OFFSET, and XEMACPS_IMR_OFFSET
- * @{
- */
-#define XEMACPS_IXR_PTPPSTX_MASK 0x02000000U /**< PTP Psync transmitted */
-#define XEMACPS_IXR_PTPPDRTX_MASK 0x01000000U /**< PTP Pdelay_req
- transmitted */
-#define XEMACPS_IXR_PTPSTX_MASK 0x00800000U /**< PTP Sync transmitted */
-#define XEMACPS_IXR_PTPDRTX_MASK 0x00400000U /**< PTP Delay_req transmitted
- */
-#define XEMACPS_IXR_PTPPSRX_MASK 0x00200000U /**< PTP Psync received */
-#define XEMACPS_IXR_PTPPDRRX_MASK 0x00100000U /**< PTP Pdelay_req received */
-#define XEMACPS_IXR_PTPSRX_MASK 0x00080000U /**< PTP Sync received */
-#define XEMACPS_IXR_PTPDRRX_MASK 0x00040000U /**< PTP Delay_req received */
-#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
- 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_TX_ERR_MASK ((u32)XEMACPS_IXR_TXEXH_MASK | \
- (u32)XEMACPS_IXR_RETRY_MASK | \
- (u32)XEMACPS_IXR_URUN_MASK)
-
-
-#define XEMACPS_IXR_RX_ERR_MASK ((u32)XEMACPS_IXR_HRESPNOK_MASK | \
- (u32)XEMACPS_IXR_RXUSED_MASK | \
- (u32)XEMACPS_IXR_RXOVR_MASK)
-
-/*@}*/
-
-/** @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 */
-/*@}*/
-
-/* Transmit buffer descriptor status words offset
- * @{
- */
-#define XEMACPS_BD_ADDR_OFFSET 0x00000000U /**< word 0/addr of BDs */
-#define XEMACPS_BD_STAT_OFFSET 0x00000004U /**< word 1/status of BDs */
-#define XEMACPS_BD_ADDR_HI_OFFSET 0x00000008U /**< word 2/addr of BDs */
-
-/*
- * @}
- */
-
-/* Transmit buffer descriptor status words bit positions.
- * Transmit buffer descriptor consists of two 32-bit registers,
- * the first - word0 contains a 32-bit address pointing to the location of
- * the transmit data.
- * The following register - word1, consists of various information to control
- * the XEmacPs transmit process. After transmit, this is updated with status
- * information, whether the frame was transmitted OK or why it had failed.
- * @{
- */
-#define XEMACPS_TXBUF_USED_MASK 0x80000000U /**< Used bit. */
-#define XEMACPS_TXBUF_WRAP_MASK 0x40000000U /**< Wrap bit, last descriptor */
-#define XEMACPS_TXBUF_RETRY_MASK 0x20000000U /**< Retry limit exceeded */
-#define XEMACPS_TXBUF_URUN_MASK 0x10000000U /**< Transmit underrun occurred */
-#define XEMACPS_TXBUF_EXH_MASK 0x08000000U /**< Buffers exhausted */
-#define XEMACPS_TXBUF_TCP_MASK 0x04000000U /**< Late collision. */
-#define XEMACPS_TXBUF_NOCRC_MASK 0x00010000U /**< No CRC */
-#define XEMACPS_TXBUF_LAST_MASK 0x00008000U /**< Last buffer */
-#define XEMACPS_TXBUF_LEN_MASK 0x00003FFFU /**< Mask for length field */
-/*
- * @}
- */
-
-/* Receive buffer descriptor status words bit positions.
- * Receive buffer descriptor consists of two 32-bit registers,
- * the first - word0 contains a 32-bit word aligned address pointing to the
- * address of the buffer. The lower two bits make up the wrap bit indicating
- * the last descriptor and the ownership bit to indicate it has been used by
- * the XEmacPs.
- * The following register - word1, contains status information regarding why
- * the frame was received (the filter match condition) as well as other
- * useful info.
- * @{
- */
-#define XEMACPS_RXBUF_BCAST_MASK 0x80000000U /**< Broadcast frame */
-#define XEMACPS_RXBUF_MULTIHASH_MASK 0x40000000U /**< Multicast hashed frame */
-#define XEMACPS_RXBUF_UNIHASH_MASK 0x20000000U /**< Unicast hashed frame */
-#define XEMACPS_RXBUF_EXH_MASK 0x08000000U /**< buffer exhausted */
-#define XEMACPS_RXBUF_AMATCH_MASK 0x06000000U /**< Specific address
- matched */
-#define XEMACPS_RXBUF_IDFOUND_MASK 0x01000000U /**< Type ID matched */
-#define XEMACPS_RXBUF_IDMATCH_MASK 0x00C00000U /**< ID matched mask */
-#define XEMACPS_RXBUF_VLAN_MASK 0x00200000U /**< VLAN tagged */
-#define XEMACPS_RXBUF_PRI_MASK 0x00100000U /**< Priority tagged */
-#define XEMACPS_RXBUF_VPRI_MASK 0x000E0000U /**< Vlan priority */
-#define XEMACPS_RXBUF_CFI_MASK 0x00010000U /**< CFI frame */
-#define XEMACPS_RXBUF_EOF_MASK 0x00008000U /**< End of frame. */
-#define XEMACPS_RXBUF_SOF_MASK 0x00004000U /**< Start of frame. */
-#define XEMACPS_RXBUF_LEN_MASK 0x00001FFFU /**< Mask for length field */
-#define XEMACPS_RXBUF_LEN_JUMBO_MASK 0x00003FFFU /**< Mask for jumbo length */
-
-#define XEMACPS_RXBUF_WRAP_MASK 0x00000002U /**< Wrap bit, last BD */
-#define XEMACPS_RXBUF_NEW_MASK 0x00000001U /**< Used bit.. */
-#define XEMACPS_RXBUF_ADD_MASK 0xFFFFFFFCU /**< Mask for address */
-/*
- * @}
- */
-
-/*
- * Define appropriate I/O access method to memory mapped I/O or other
- * interface if necessary.
- */
-
-#define XEmacPs_In32 Xil_In32
-#define XEmacPs_Out32 Xil_Out32
-
-
-/****************************************************************************/
-/**
-*
-* Read the given register.
-*
-* @param BaseAddress is the base address of the device
-* @param RegOffset is the register offset to be read
-*
-* @return The 32-bit value of the register
-*
-* @note
-* C-style signature:
-* u32 XEmacPs_ReadReg(u32 BaseAddress, u32 RegOffset)
-*
-*****************************************************************************/
-#define XEmacPs_ReadReg(BaseAddress, RegOffset) \
- XEmacPs_In32((BaseAddress) + (u32)(RegOffset))
-
-
-/****************************************************************************/
-/**
-*
-* Write the given register.
-*
-* @param BaseAddress is the base address of the device
-* @param RegOffset is the register offset to be written
-* @param Data is the 32-bit value to write to the register
-*
-* @return None.
-*
-* @note
-* C-style signature:
-* void XEmacPs_WriteReg(u32 BaseAddress, u32 RegOffset,
-* u32 Data)
-*
-*****************************************************************************/
-#define XEmacPs_WriteReg(BaseAddress, RegOffset, Data) \
- XEmacPs_Out32((BaseAddress) + (u32)(RegOffset), (u32)(Data))
-
-/************************** Function Prototypes *****************************/
-/*
- * Perform reset operation to the emacps interface
- */
-void XEmacPs_ResetHw(u32 BaseAddr);
-
-#ifdef __cplusplus
- }
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/Makefile
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/Makefile
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/Makefile
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps.c
similarity index 95%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps.c
index 40de3a064..26df03c3d 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps.c
@@ -33,6 +33,8 @@
/**
*
* @file xemacps.c
+* @addtogroup emacps_v3_1
+* @{
*
* The XEmacPs driver. Functions in this file are the minimum required functions
* for this driver. See xemacps.h for a detailed description of the driver.
@@ -49,6 +51,7 @@
* 3.0 hk 02/20/15 Added support for jumbo frames. Increase AHB burst.
* Disable extended mode. Perform all 64 bit changes under
* check for arch64.
+* 3.1 hk 08/10/15 Update upper 32 bit tx and rx queue ptr registers
*
*
******************************************************************************/
@@ -323,11 +326,16 @@ void XEmacPs_Reset(XEmacPs *InstancePtr)
XEMACPS_NWCTRL_MDEN_MASK) &
(u32)(~XEMACPS_NWCTRL_LOOPEN_MASK));
+ Reg = XEmacPs_ReadReg(InstancePtr->Config.BaseAddress,
+ 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;
+
XEmacPs_WriteReg(InstancePtr->Config.BaseAddress,
- XEMACPS_NWCFG_OFFSET,
- ((u32)XEMACPS_NWCFG_100_MASK |
- (u32)XEMACPS_NWCFG_FDEN_MASK |
- (u32)XEMACPS_NWCFG_UCASTHASHEN_MASK));
+ XEMACPS_NWCFG_OFFSET, Reg);
if (InstancePtr->Version > 2) {
XEmacPs_WriteReg(InstancePtr->Config.BaseAddress, XEMACPS_NWCFG_OFFSET,
(XEmacPs_ReadReg(InstancePtr->Config.BaseAddress, XEMACPS_NWCFG_OFFSET) |
@@ -375,9 +383,6 @@ void XEmacPs_Reset(XEmacPs *InstancePtr)
XEmacPs_WriteReg(InstancePtr->Config.BaseAddress, XEMACPS_ISR_OFFSET,
Reg);
- XEmacPs_WriteReg(InstancePtr->Config.BaseAddress,
- XEMACPS_PHYMNTNC_OFFSET, 0x0U);
-
XEmacPs_ClearHash(InstancePtr);
for (i = 1U; i < 5U; i++) {
@@ -468,9 +473,17 @@ void XEmacPs_SetQueuePtr(XEmacPs *InstancePtr, UINTPTR QPtr, u8 QueueNum,
(QPtr & ULONG64_LO_MASK));
}
#ifdef __aarch64__
- /* Set the MSB of Queue start address */
- XEmacPs_WriteReg(InstancePtr->Config.BaseAddress,
- XEMACPS_MSBBUF_QBASE_OFFSET,
- (u32)((QPtr & (u32)ULONG64_HI_MASK) >> 32U));
+ 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));
+ }
#endif
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps.h
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps.h
index adb2f4b21..f12092bec 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2010 - 2016 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -33,6 +33,9 @@
/**
*
* @file xemacps.h
+* @addtogroup emacps_v3_1
+* @{
+* @details
*
* The Xilinx Embedded Processor Block Ethernet driver.
*
@@ -309,6 +312,10 @@
* Disable extended mode. Perform all 64 bit changes under
* check for arch64.
* Remove "used bit set" from TX error interrupt masks.
+ * 3.1 hk 07/27/15 Do not call error handler with '0' error code when
+ * there is no error. CR# 869403
+ * 08/10/15 Update upper 32 bit tx and rx queue ptr registers.
+ * 3.2 hk 02/22/16 Added SGMII support for Zynq Ultrascale+ MPSoC.
*
*
****************************************************************************/
@@ -410,6 +417,7 @@ extern "C" {
* This option defaults to enabled (set) */
#define XEMACPS_JUMBO_ENABLE_OPTION 0x00004000U
+#define XEMACPS_SGMII_ENABLE_OPTION 0x00008000U
#define XEMACPS_DEFAULT_OPTIONS \
((u32)XEMACPS_FLOW_CONTROL_OPTION | \
@@ -781,3 +789,4 @@ void XEmacPs_DMABLengthUpdate(XEmacPs *InstancePtr, s32 BLength);
#endif
#endif /* end of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_bd.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_bd.h
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_bd.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_bd.h
index 41e0ab845..52c5f7e7e 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_bd.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_bd.h
@@ -33,6 +33,8 @@
/**
*
* @file xemacps_bd.h
+* @addtogroup emacps_v3_1
+* @{
*
* This header provides operations to manage buffer descriptors in support
* of scatter-gather DMA.
@@ -66,6 +68,7 @@
* 3.0 hk 02/20/15 Added support for jumbo frames.
* Disable extended mode. Perform all 64 bit changes under
* check for arch64.
+ * 3.2 hk 11/18/15 Change BD typedef and number of words.
*
*
*
@@ -91,16 +94,17 @@ extern "C" {
#ifdef __aarch64__
/* Minimum BD alignment */
#define XEMACPS_DMABD_MINIMUM_ALIGNMENT 64U
+#define XEMACPS_BD_NUM_WORDS 4U
#else
/* Minimum BD alignment */
#define XEMACPS_DMABD_MINIMUM_ALIGNMENT 4U
+#define XEMACPS_BD_NUM_WORDS 2U
#endif
/**
* The XEmacPs_Bd is the type for buffer descriptors (BDs).
*/
-#define XEMACPS_BD_NUM_WORDS 2U
-typedef UINTPTR XEmacPs_Bd[XEMACPS_BD_NUM_WORDS];
+typedef u32 XEmacPs_Bd[XEMACPS_BD_NUM_WORDS];
/***************** Macros (Inline Functions) Definitions *********************/
@@ -797,3 +801,4 @@ typedef UINTPTR XEmacPs_Bd[XEMACPS_BD_NUM_WORDS];
#endif
#endif /* end of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_bdring.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_bdring.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_bdring.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_bdring.c
index 32a1e535f..d837e1df1 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_bdring.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_bdring.c
@@ -33,6 +33,8 @@
/**
*
* @file xemacps_bdring.c
+* @addtogroup emacps_v3_1
+* @{
*
* This file implements buffer descriptor ring related functions.
*
@@ -1070,3 +1072,4 @@ static void XEmacPs_BdSetTxWrap(UINTPTR BdPtr)
*TempPtr = DataValueTx;
}
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_bdring.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_bdring.h
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_bdring.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_bdring.h
index b678c5401..de78cf28f 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_bdring.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_bdring.h
@@ -33,6 +33,8 @@
/**
*
* @file xemacps_bdring.h
+* @addtogroup emacps_v3_1
+* @{
*
* The Xiline EmacPs Buffer Descriptor ring driver. This is part of EmacPs
* DMA functionalities.
@@ -233,3 +235,4 @@ LONG XEmacPs_BdRingCheck(XEmacPs_BdRing * RingPtr, u8 Direction);
#endif /* end of protection macros */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_control.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_control.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_control.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_control.c
index 69a6e4d7d..f52451a8c 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_control.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_control.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2009 - 2015 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2009 - 2016 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -33,6 +33,8 @@
/**
*
* @file xemacps_control.c
+* @addtogroup emacps_v3_1
+* @{
*
* Functions in this file implement general purpose command and control related
* functionality. See xemacps.h for a detailed description of the driver.
@@ -49,6 +51,7 @@
* 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.0 hk 02/20/15 Added support for jumbo frames.
+ * 3.2 hk 02/22/16 Added SGMII support for Zynq Ultrascale+ MPSoC.
*
*****************************************************************************/
@@ -545,6 +548,12 @@ LONG XEmacPs_SetOptions(XEmacPs *InstancePtr, u32 Options)
InstancePtr->RxBufMask = XEMACPS_RXBUF_LEN_JUMBO_MASK;
}
+ if (((Options & XEMACPS_SGMII_ENABLE_OPTION) != 0x00000000U) &&
+ (InstancePtr->Version > 2)) {
+ RegNewNetCfg |= (XEMACPS_NWCFG_SGMIIEN_MASK |
+ XEMACPS_NWCFG_PCSSEL_MASK);
+ }
+
/* Officially change the NET_CONFIG registers if it needs to be
* modified.
*/
@@ -704,6 +713,12 @@ LONG XEmacPs_ClearOptions(XEmacPs *InstancePtr, u32 Options)
InstancePtr->RxBufMask = XEMACPS_RXBUF_LEN_MASK;
}
+ if (((Options & XEMACPS_SGMII_ENABLE_OPTION) != 0x00000000U) &&
+ (InstancePtr->Version > 2)) {
+ RegNewNetCfg &= (u32)(~(XEMACPS_NWCFG_SGMIIEN_MASK |
+ XEMACPS_NWCFG_PCSSEL_MASK));
+ }
+
/* Officially change the NET_CONFIG registers if it needs to be
* modified.
*/
@@ -1156,3 +1171,4 @@ void XEmacPs_DMABLengthUpdate(XEmacPs *InstancePtr, s32 BLength)
XEmacPs_WriteReg(InstancePtr->Config.BaseAddress, XEMACPS_DMACR_OFFSET,
Reg);
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_g.c
similarity index 83%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_g.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_g.c
index 2dbf8b924..6a7cc7866 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_g.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_g.c
@@ -1,67 +1,55 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Driver configuration
-*
-*******************************************************************/
-
-#include "xparameters.h"
-#include "xemacps.h"
-
-/*
-* The configuration table for devices
-*/
-
-XEmacPs_Config XEmacPs_ConfigTable[] =
-{
- {
- XPAR_PSU_ETHERNET_0_DEVICE_ID,
- XPAR_PSU_ETHERNET_0_BASEADDR
- },
- {
- XPAR_PSU_ETHERNET_1_DEVICE_ID,
- XPAR_PSU_ETHERNET_1_BASEADDR
- },
- {
- XPAR_PSU_ETHERNET_2_DEVICE_ID,
- XPAR_PSU_ETHERNET_2_BASEADDR
- },
- {
- XPAR_PSU_ETHERNET_3_DEVICE_ID,
- XPAR_PSU_ETHERNET_3_BASEADDR
- }
-};
-
-
+
+/*******************************************************************
+*
+* CAUTION: This file is automatically generated by HSI.
+* Version:
+* DO NOT EDIT.
+*
+* Copyright (C) 2010-2016 Xilinx, Inc. All Rights Reserved.*
+*Permission is hereby granted, free of charge, to any person obtaining a copy
+*of this software and associated documentation files (the Software), to deal
+*in the Software without restriction, including without limitation the rights
+*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*copies of the Software, and to permit persons to whom the Software is
+*furnished to do so, subject to the following conditions:
+*
+*The above copyright notice and this permission notice shall be included in
+*all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+*(a) running on a Xilinx device, or
+*(b) that interact with a Xilinx device through a bus or interconnect.
+*
+*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+*XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+*Except as contained in this notice, the name of the Xilinx shall not be used
+*in advertising or otherwise to promote the sale, use or other dealings in
+*this Software without prior written authorization from Xilinx.
+*
+
+*
+* Description: Driver configuration
+*
+*******************************************************************/
+
+#include "xparameters.h"
+#include "xemacps.h"
+
+/*
+* The configuration table for devices
+*/
+
+XEmacPs_Config XEmacPs_ConfigTable[] =
+{
+ {
+ XPAR_PSU_ETHERNET_3_DEVICE_ID,
+ XPAR_PSU_ETHERNET_3_BASEADDR
+ }
+};
+
+
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_hw.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_hw.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_hw.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_hw.c
index db01faad3..daba38397 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_hw.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_hw.c
@@ -33,6 +33,8 @@
/**
*
* @file xemacps_hw.c
+* @addtogroup emacps_v3_1
+* @{
*
* This file contains the implementation of the ethernet interface reset sequence
*
@@ -118,3 +120,4 @@ void XEmacPs_ResetHw(u32 BaseAddr)
XEmacPs_WriteReg(BaseAddr,XEMACPS_HASHL_OFFSET,0x0U);
XEmacPs_WriteReg(BaseAddr,XEMACPS_HASHH_OFFSET,0x0U);
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xemacps_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_hw.h
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xemacps_hw.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_hw.h
index 4b8f582ce..953cc6265 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xemacps_hw.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_hw.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2010 - 2016 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -33,6 +33,8 @@
/**
*
* @file xemacps_hw.h
+* @addtogroup emacps_v3_1
+* @{
*
* This header file contains identifiers and low-level driver functions (or
* macros) that can be used to access the PS Ethernet MAC (XEmacPs) device.
@@ -57,6 +59,8 @@
* 3.0 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
* 3.0 hk 03/18/15 Added support for jumbo frames.
* Remove "used bit set" from TX error interrupt masks.
+* 3.1 hk 08/10/15 Update upper 32 bit tx and rx queue ptr register offsets.
+* 3.2 hk 02/22/16 Added SGMII support for Zynq Ultrascale+ MPSoC.
*
*
******************************************************************************/
@@ -298,7 +302,9 @@ typedef enum { MDC_DIV_8 = 0U, MDC_DIV_16, MDC_DIV_32, MDC_DIV_48,
reg */
#define XEMACPS_RXQ1BASE_OFFSET 0x00000480U /**< RX Q1 Base address
reg */
-#define XEMACPS_MSBBUF_QBASE_OFFSET 0x000004C8U /**< MSB Buffer Q Base
+#define XEMACPS_MSBBUF_TXQBASE_OFFSET 0x000004C8U /**< MSB Buffer TX Q Base
+ reg */
+#define XEMACPS_MSBBUF_RXQBASE_OFFSET 0x000004D4U /**< MSB Buffer RX Q Base
reg */
#define XEMACPS_INTQ1_IER_OFFSET 0x00000600U /**< Interrupt Q1 Enable
reg */
@@ -339,6 +345,7 @@ typedef enum { MDC_DIV_8 = 0U, MDC_DIV_16, MDC_DIV_32, MDC_DIV_48,
#define XEMACPS_NWCFG_BADPREAMBEN_MASK 0x20000000U /**< disable rejection of
non-standard preamble */
#define XEMACPS_NWCFG_IPDSTRETCH_MASK 0x10000000U /**< enable transmit IPG */
+#define XEMACPS_NWCFG_SGMIIEN_MASK 0x08000000U /**< SGMII Enable */
#define XEMACPS_NWCFG_FCSIGNORE_MASK 0x04000000U /**< disable rejection of
FCS error */
#define XEMACPS_NWCFG_HDRXEN_MASK 0x02000000U /**< RX half duplex */
@@ -358,6 +365,7 @@ typedef enum { MDC_DIV_8 = 0U, MDC_DIV_16, MDC_DIV_32, MDC_DIV_48,
#define XEMACPS_NWCFG_RETRYTESTEN_MASK 0x00001000U /**< Retry test */
#define XEMACPS_NWCFG_XTADDMACHEN_MASK 0x00000200U
/**< External address match enable */
+#define XEMACPS_NWCFG_PCSSEL_MASK 0x00000800U /**< PCS Select */
#define XEMACPS_NWCFG_1000_MASK 0x00000400U /**< 1000 Mbps */
#define XEMACPS_NWCFG_1536RXEN_MASK 0x00000100U /**< Enable 1536 byte
frames reception */
@@ -645,3 +653,4 @@ void XEmacPs_ResetHw(u32 BaseAddr);
#endif
#endif /* end of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_intr.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_intr.c
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_intr.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_intr.c
index 1c59e6c63..59636c4ef 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_intr.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_intr.c
@@ -33,6 +33,8 @@
/**
*
* @file xemacps_intr.c
+* @addtogroup emacps_v3_1
+* @{
*
* Functions in this file implement general purpose interrupt processing related
* functionality. See xemacps.h for a detailed description of the driver.
@@ -55,6 +57,8 @@
* 2.1 srt 07/15/14 Add support for Zynq Ultrascale Mp GEM specification
* 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
*
******************************************************************************/
@@ -226,8 +230,11 @@ void XEmacPs_IntrHandler(void *XEmacPsPtr)
XEmacPs_WriteReg(InstancePtr->Config.BaseAddress,
XEMACPS_NWCTRL_OFFSET, RegCtrl);
}
- InstancePtr->ErrorHandler(InstancePtr->ErrorRef, XEMACPS_RECV,
- RegSR);
+
+ if(RegSR != 0) {
+ InstancePtr->ErrorHandler(InstancePtr->ErrorRef,
+ XEMACPS_RECV, RegSR);
+ }
}
/* When XEMACPS_IXR_TXCOMPL_MASK is flaged, XEMACPS_IXR_TXUSED_MASK
@@ -258,3 +265,4 @@ void XEmacPs_IntrHandler(void *XEmacPsPtr)
}
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_sinit.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_sinit.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_sinit.c
index 67822625e..1bc5b3b19 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_0/src/xemacps_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/emacps_v3_2/src/xemacps_sinit.c
@@ -33,6 +33,8 @@
/**
*
* @file xemacps_sinit.c
+* @addtogroup emacps_v3_1
+* @{
*
* This file contains lookup method by device ID when success, it returns
* pointer to config table to be used to initialize the device.
@@ -92,3 +94,4 @@ XEmacPs_Config *XEmacPs_LookupConfig(u16 DeviceId)
return (XEmacPs_Config *)(CfgPtr);
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_hw.h
deleted file mode 100644
index 2f4ea8041..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_hw.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xgpiops_hw.h
-*
-* This header file contains the identifiers and basic driver functions (or
-* macros) that can be used to access the device. Other driver functions
-* are defined in xgpiops.h.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -------------------------------------------------
-* 1.00a sv 01/15/10 First Release
-* 1.02a hk 08/22/13 Added low level reset API function prototype and
-* related constant definitions
-* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
-*
-*
-******************************************************************************/
-#ifndef XGPIOPS_HW_H /* prevent circular inclusions */
-#define XGPIOPS_HW_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xil_io.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Register offsets for the GPIO. Each register is 32 bits.
- * @{
- */
-#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 */
-/* @} */
-
-/** @name Register offsets for each Bank.
- * @{
- */
-#define XGPIOPS_DATA_MASK_OFFSET 0x00000008U /* Data/Mask Registers offset */
-#define XGPIOPS_DATA_BANK_OFFSET 0x00000004U /* Data Registers offset */
-#define XGPIOPS_REG_MASK_OFFSET 0x00000040U /* Registers offset */
-/* @} */
-
-/* For backwards compatibility */
-#define XGPIOPS_BYPM_MASK_OFFSET (u32)0x40
-
-/** @name Interrupt type reset values for each bank
- * @{
- */
-#ifdef XPAR_PSU_GPIO_0_BASEADDR
-#define XGPIOPS_INTTYPE_BANK0_RESET 0x3FFFFFFFU
-#define XGPIOPS_INTTYPE_BANK1_RESET 0x3FFFFFFFU
-#define XGPIOPS_INTTYPE_BANK2_RESET 0x3FFFFFFFU
-#define XGPIOPS_INTTYPE_BANK3_RESET 0xFFFFFFFFU
-#define XGPIOPS_INTTYPE_BANK4_RESET 0xFFFFFFFFU
-#define XGPIOPS_INTTYPE_BANK5_RESET 0xFFFFFFFFU
-#else
-
-#define XGPIOPS_INTTYPE_BANK0_RESET 0xFFFFFFFFU
-#define XGPIOPS_INTTYPE_BANK1_RESET 0x3FFFFFFFU
-#define XGPIOPS_INTTYPE_BANK2_RESET 0xFFFFFFFFU
-#define XGPIOPS_INTTYPE_BANK3_RESET 0xFFFFFFFFU
-#endif
-/* @} */
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/****************************************************************************/
-/**
-*
-* This macro reads the given register.
-*
-* @param BaseAddr is the base address of the device.
-* @param RegOffset is the register offset to be read.
-*
-* @return The 32-bit value of the register
-*
-* @note None.
-*
-*****************************************************************************/
-#define XGpioPs_ReadReg(BaseAddr, RegOffset) \
- Xil_In32((BaseAddr) + (u32)(RegOffset))
-
-/****************************************************************************/
-/**
-*
-* This macro writes to the given register.
-*
-* @param BaseAddr is the base address of the device.
-* @param RegOffset is the offset of the register to be written.
-* @param Data is the 32-bit value to write to the register.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-#define XGpioPs_WriteReg(BaseAddr, RegOffset, Data) \
- Xil_Out32((BaseAddr) + (u32)(RegOffset), (u32)(Data))
-
-/************************** Function Prototypes ******************************/
-
-void XGpioPs_ResetHw(u32 BaseAddress);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* XGPIOPS_HW_H */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/Makefile
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/Makefile
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/Makefile
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops.c
similarity index 82%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops.c
index cc7910e59..90eedb87d 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops.c
@@ -33,6 +33,8 @@
/**
*
* @file xgpiops.c
+* @addtogroup gpiops_v3_1
+* @{
*
* The XGpioPs driver. Functions in this file are the minimum required functions
* for this driver. See xgpiops.h for a detailed description of the driver.
@@ -49,6 +51,7 @@
* for output pins on all banks during initialization.
* 2.1 hk 04/29/14 Use Input data register DATA_RO for read. CR# 771667.
* 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.
*
*
*
@@ -95,6 +98,7 @@ s32 XGpioPs_CfgInitialize(XGpioPs *InstancePtr, XGpioPs_Config *ConfigPtr,
u32 EffectiveAddr)
{
s32 Status = XST_SUCCESS;
+ u8 i;
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(ConfigPtr != NULL);
Xil_AssertNonvoid(EffectiveAddr != (u32)0);
@@ -106,29 +110,44 @@ s32 XGpioPs_CfgInitialize(XGpioPs *InstancePtr, XGpioPs_Config *ConfigPtr,
InstancePtr->GpioConfig.BaseAddr = EffectiveAddr;
InstancePtr->GpioConfig.DeviceId = ConfigPtr->DeviceId;
InstancePtr->Handler = StubHandler;
+ InstancePtr->Platform = XGetPlatform_Info();
+
+ /* Initialize the Bank data based on platform */
+ if (InstancePtr->Platform == XPLAT_ZYNQ_ULTRA_MP) {
+ /*
+ * Max pins in the ZynqMP 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
+ */
+ InstancePtr->MaxPinNum = (u32)174;
+ InstancePtr->MaxBanks = (u8)6;
+ } else {
+ /*
+ * Max pins in the GPIO device
+ * 0 - 31, Bank 0
+ * 32 - 53, Bank 1
+ * 54 - 85, Bank 2
+ * 86 - 117, Bank 3
+ */
+ InstancePtr->MaxPinNum = (u32)118;
+ InstancePtr->MaxBanks = (u8)4;
+ }
/*
* By default, interrupts are not masked in GPIO. Disable
* interrupts for all pins in all the 4 banks.
*/
- XGpioPs_WriteReg(InstancePtr->GpioConfig.BaseAddr,
- XGPIOPS_INTDIS_OFFSET, 0xFFFFFFFFU);
-
- XGpioPs_WriteReg(InstancePtr->GpioConfig.BaseAddr,
- ((u32)(1) * XGPIOPS_REG_MASK_OFFSET) +
- XGPIOPS_INTDIS_OFFSET, 0xFFFFFFFFU);
-
- XGpioPs_WriteReg(InstancePtr->GpioConfig.BaseAddr,
- ((u32)(2) * XGPIOPS_REG_MASK_OFFSET) +
- XGPIOPS_INTDIS_OFFSET, 0xFFFFFFFFU);
-
- XGpioPs_WriteReg(InstancePtr->GpioConfig.BaseAddr,
- ((u32)(3) * XGPIOPS_REG_MASK_OFFSET) +
- XGPIOPS_INTDIS_OFFSET, 0xFFFFFFFFU);
+ for (i=0;iMaxBanks;i++) {
+ XGpioPs_WriteReg(InstancePtr->GpioConfig.BaseAddr,
+ ((u32)(i) * XGPIOPS_REG_MASK_OFFSET) +
+ XGPIOPS_INTDIS_OFFSET, 0xFFFFFFFFU);
+ }
- /*
- * Indicate the component is now ready to use.
- */
+ /* Indicate the component is now ready to use. */
InstancePtr->IsReady = XIL_COMPONENT_IS_READY;
return Status;
@@ -141,7 +160,7 @@ s32 XGpioPs_CfgInitialize(XGpioPs *InstancePtr, XGpioPs_Config *ConfigPtr,
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Bank is the bank number of the GPIO to operate on.
-* Valid values are 0 to XGPIOPS_MAX_BANKS - 1.
+* Valid values are 0-3 in Zynq and 0-5 in Zynq Ultrascale+ MP.
*
* @return Current value of the Data register.
*
@@ -153,7 +172,7 @@ u32 XGpioPs_Read(XGpioPs *InstancePtr, u8 Bank)
{
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(Bank < XGPIOPS_MAX_BANKS);
+ Xil_AssertNonvoid(Bank < InstancePtr->MaxBanks);
return XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
((u32)(Bank) * XGPIOPS_DATA_BANK_OFFSET) +
@@ -167,7 +186,7 @@ u32 XGpioPs_Read(XGpioPs *InstancePtr, u8 Bank)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Pin is the pin number for which the data has to be read.
-* Valid values are 0 to XGPIOPS_DEVICE_MAX_PIN_NUM - 1.
+* Valid values are 0-117 in Zynq and 0-173 in Zynq Ultrascale+ MP.
* See xgpiops.h for the mapping of the pin numbers in the banks.
*
* @return Current value of the Pin (0 or 1).
@@ -183,11 +202,9 @@ u32 XGpioPs_ReadPin(XGpioPs *InstancePtr, u32 Pin)
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(Pin < XGPIOPS_DEVICE_MAX_PIN_NUM);
+ Xil_AssertNonvoid(Pin < InstancePtr->MaxPinNum);
- /*
- * Get the Bank number and Pin number within the bank.
- */
+ /* Get the Bank number and Pin number within the bank. */
XGpioPs_GetBankPin((u8)Pin, &Bank, &PinNumber);
return (XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
@@ -203,7 +220,7 @@ u32 XGpioPs_ReadPin(XGpioPs *InstancePtr, u32 Pin)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Bank is the bank number of the GPIO to operate on.
-* Valid values are 0 to XGPIOPS_MAX_BANKS - 1.
+* Valid values are 0-3 in Zynq and 0-5 in Zynq Ultrascale+ MP.
* @param Data is the value to be written to the Data register.
*
* @return None.
@@ -216,7 +233,7 @@ void XGpioPs_Write(XGpioPs *InstancePtr, u8 Bank, u32 Data)
{
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertVoid(Bank < XGPIOPS_MAX_BANKS);
+ Xil_AssertVoid(Bank < InstancePtr->MaxBanks);
XGpioPs_WriteReg(InstancePtr->GpioConfig.BaseAddr,
((u32)(Bank) * XGPIOPS_DATA_BANK_OFFSET) +
@@ -230,7 +247,7 @@ void XGpioPs_Write(XGpioPs *InstancePtr, u8 Bank, u32 Data)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Pin is the pin number to which the Data is to be written.
-* Valid values are 0 to XGPIOPS_DEVICE_MAX_PIN_NUM - 1.
+* Valid values are 0-117 in Zynq and 0-173 in Zynq Ultrascale+ MP.
* @param Data is the data to be written to the specified pin (0 or 1).
*
* @return None.
@@ -250,17 +267,13 @@ void XGpioPs_WritePin(XGpioPs *InstancePtr, u32 Pin, u32 Data)
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertVoid(Pin < XGPIOPS_DEVICE_MAX_PIN_NUM);
+ Xil_AssertVoid(Pin < InstancePtr->MaxPinNum);
- /*
- * Get the Bank number and Pin number within the bank.
- */
+ /* Get the Bank number and Pin number within the bank. */
XGpioPs_GetBankPin((u8)Pin, &Bank, &PinNumber);
if (PinNumber > 15U) {
- /*
- * There are only 16 data bits in bit maskable register.
- */
+ /* There are only 16 data bits in bit maskable register. */
PinNumber -= (u8)16;
RegOffset = XGPIOPS_DATA_MSW_OFFSET;
} else {
@@ -287,7 +300,7 @@ void XGpioPs_WritePin(XGpioPs *InstancePtr, u32 Pin, u32 Data)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Bank is the bank number of the GPIO to operate on.
-* Valid values are 0 to XGPIOPS_MAX_BANKS - 1.
+* Valid values are 0-3 in Zynq and 0-5 in Zynq Ultrascale+ MP.
* @param Direction is the 32 bit mask of the Pin direction to be set for
* all the pins in the Bank. Bits with 0 are set to Input mode,
* bits with 1 are set to Output Mode.
@@ -303,7 +316,7 @@ void XGpioPs_SetDirection(XGpioPs *InstancePtr, u8 Bank, u32 Direction)
{
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertVoid(Bank < XGPIOPS_MAX_BANKS);
+ Xil_AssertVoid(Bank < InstancePtr->MaxBanks);
XGpioPs_WriteReg(InstancePtr->GpioConfig.BaseAddr,
((u32)(Bank) * XGPIOPS_REG_MASK_OFFSET) +
@@ -317,7 +330,7 @@ void XGpioPs_SetDirection(XGpioPs *InstancePtr, u8 Bank, u32 Direction)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Pin is the pin number to which the Data is to be written.
-* Valid values are 0 to XGPIOPS_DEVICE_MAX_PIN_NUM - 1.
+* Valid values are 0-117 in Zynq and 0-173 in Zynq Ultrascale+ MP.
* @param Direction is the direction to be set for the specified pin.
* Valid values are 0 for Input Direction, 1 for Output Direction.
*
@@ -332,12 +345,10 @@ void XGpioPs_SetDirectionPin(XGpioPs *InstancePtr, u32 Pin, u32 Direction)
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertVoid(Pin < XGPIOPS_DEVICE_MAX_PIN_NUM);
+ Xil_AssertVoid(Pin < InstancePtr->MaxPinNum);
Xil_AssertVoid(Direction <= (u32)1);
- /*
- * Get the Bank number and Pin number within the bank.
- */
+ /* Get the Bank number and Pin number within the bank. */
XGpioPs_GetBankPin((u8)Pin, &Bank, &PinNumber);
DirModeReg = XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
@@ -362,7 +373,7 @@ void XGpioPs_SetDirectionPin(XGpioPs *InstancePtr, u32 Pin, u32 Direction)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Bank is the bank number of the GPIO to operate on.
-* Valid values are 0 to XGPIOPS_MAX_BANKS - 1.
+* Valid values are 0-3 in Zynq and 0-5 in Zynq Ultrascale+ MP.
*
* return Returns a 32 bit mask of the Direction register. Bits with 0 are
* in Input mode, bits with 1 are in Output Mode.
@@ -374,7 +385,7 @@ u32 XGpioPs_GetDirection(XGpioPs *InstancePtr, u8 Bank)
{
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(Bank < XGPIOPS_MAX_BANKS);
+ Xil_AssertNonvoid(Bank < InstancePtr->MaxBanks);
return XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
((u32)(Bank) * XGPIOPS_REG_MASK_OFFSET) +
@@ -389,7 +400,7 @@ u32 XGpioPs_GetDirection(XGpioPs *InstancePtr, u8 Bank)
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Pin is the pin number for which the Direction is to be
* retrieved.
-* Valid values are 0 to XGPIOPS_DEVICE_MAX_PIN_NUM - 1.
+* Valid values are 0-117 in Zynq and 0-173 in Zynq Ultrascale+ MP.
*
* @return Direction of the specified pin.
* - 0 for Input Direction
@@ -405,11 +416,9 @@ u32 XGpioPs_GetDirectionPin(XGpioPs *InstancePtr, u32 Pin)
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(Pin < XGPIOPS_DEVICE_MAX_PIN_NUM);
+ Xil_AssertNonvoid(Pin < InstancePtr->MaxPinNum);
- /*
- * Get the Bank number and Pin number within the bank.
- */
+ /* Get the Bank number and Pin number within the bank. */
XGpioPs_GetBankPin((u8)Pin, &Bank, &PinNumber);
return (XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
@@ -424,7 +433,7 @@ u32 XGpioPs_GetDirectionPin(XGpioPs *InstancePtr, u32 Pin)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Bank is the bank number of the GPIO to operate on.
-* Valid values are 0 to XGPIOPS_MAX_BANKS - 1.
+* Valid values are 0-3 in Zynq and 0-5 in Zynq Ultrascale+ MP.
* @param OpEnable is the 32 bit mask of the Output Enables to be set for
* all the pins in the Bank. The Output Enable of bits with 0 are
* disabled, the Output Enable of bits with 1 are enabled.
@@ -440,7 +449,7 @@ void XGpioPs_SetOutputEnable(XGpioPs *InstancePtr, u8 Bank, u32 OpEnable)
{
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertVoid(Bank < XGPIOPS_MAX_BANKS);
+ Xil_AssertVoid(Bank < InstancePtr->MaxBanks);
XGpioPs_WriteReg(InstancePtr->GpioConfig.BaseAddr,
((u32)(Bank) * XGPIOPS_REG_MASK_OFFSET) +
@@ -454,7 +463,7 @@ void XGpioPs_SetOutputEnable(XGpioPs *InstancePtr, u8 Bank, u32 OpEnable)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Pin is the pin number to which the Data is to be written.
-* Valid values are 0 to XGPIOPS_DEVICE_MAX_PIN_NUM - 1.
+* Valid values are 0-117 in Zynq and 0-173 in Zynq Ultrascale+ MP.
* @param OpEnable specifies whether the Output Enable for the specified
* pin should be enabled.
* Valid values are 0 for Disabling Output Enable,
@@ -473,12 +482,10 @@ void XGpioPs_SetOutputEnablePin(XGpioPs *InstancePtr, u32 Pin, u32 OpEnable)
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertVoid(Pin < XGPIOPS_DEVICE_MAX_PIN_NUM);
+ Xil_AssertVoid(Pin < InstancePtr->MaxPinNum);
Xil_AssertVoid(OpEnable <= (u32)1);
- /*
- * Get the Bank number and Pin number within the bank.
- */
+ /* Get the Bank number and Pin number within the bank. */
XGpioPs_GetBankPin((u8)Pin, &Bank, &PinNumber);
OpEnableReg = XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
@@ -502,7 +509,7 @@ void XGpioPs_SetOutputEnablePin(XGpioPs *InstancePtr, u32 Pin, u32 OpEnable)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Bank is the bank number of the GPIO to operate on.
-* Valid values are 0 to XGPIOPS_MAX_BANKS - 1.
+* Valid values are 0-3 in Zynq and 0-5 in Zynq Ultrascale+ MP.
*
* return Returns a a 32 bit mask of the Output Enable register.
* Bits with 0 are in Disabled state, bits with 1 are in
@@ -515,7 +522,7 @@ u32 XGpioPs_GetOutputEnable(XGpioPs *InstancePtr, u8 Bank)
{
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(Bank < XGPIOPS_MAX_BANKS);
+ Xil_AssertNonvoid(Bank < InstancePtr->MaxBanks);
return XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
((u32)(Bank) * XGPIOPS_REG_MASK_OFFSET) +
@@ -530,7 +537,7 @@ u32 XGpioPs_GetOutputEnable(XGpioPs *InstancePtr, u8 Bank)
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Pin is the pin number for which the Output Enable status is to
* be retrieved.
-* Valid values are 0 to XGPIOPS_DEVICE_MAX_PIN_NUM - 1.
+* Valid values are 0-117 in Zynq and 0-173 in Zynq Ultrascale+ MP.
*
* @return Output Enable of the specified pin.
* - 0 if Output Enable is disabled for this pin
@@ -546,11 +553,9 @@ u32 XGpioPs_GetOutputEnablePin(XGpioPs *InstancePtr, u32 Pin)
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(Pin < XGPIOPS_DEVICE_MAX_PIN_NUM);
+ Xil_AssertNonvoid(Pin < InstancePtr->MaxPinNum);
- /*
- * Get the Bank number and Pin number within the bank.
- */
+ /* Get the Bank number and Pin number within the bank. */
XGpioPs_GetBankPin((u8)Pin, &Bank, &PinNumber);
return (XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
@@ -576,41 +581,43 @@ u32 XGpioPs_GetOutputEnablePin(XGpioPs *InstancePtr, u32 Pin)
*****************************************************************************/
void XGpioPs_GetBankPin(u8 PinNumber, u8 *BankNumber, u8 *PinNumberInBank)
{
- /*
- * This structure defines the mapping of the pin numbers to the banks when
- * the driver APIs are used for working on the individual pins.
- */
-#ifdef XPAR_PSU_GPIO_0_BASEADDR
- u32 XGpioPsPinTable[] = {
- (u32)25, /* 0 - 25, Bank 0 */
- (u32)51, /* 26 - 51, Bank 1 */
- (u32)77, /* 52 - 77, Bank 2 */
- (u32)109, /* 78 - 109, Bank 3 */
- (u32)141, /* 110 - 141, Bank 4 */
- (u32)173 /* 142 - 173 Bank 5 */
- };
- *BankNumber = 0U;
- while (*BankNumber < 6U) {
- if (PinNumber <= XGpioPsPinTable[*BankNumber]) {
- break;
- }
- (*BankNumber)++;
+ u32 XGpioPsPinTable[6] = {0};
+ u32 Platform = XGetPlatform_Info();
+
+ if (Platform == XPLAT_ZYNQ_ULTRA_MP) {
+ /*
+ * This structure defines the mapping of the pin numbers to the banks when
+ * the driver APIs are used for working on the individual pins.
+ */
+
+ XGpioPsPinTable[0] = (u32)25; /* 0 - 25, Bank 0 */
+ XGpioPsPinTable[1] = (u32)51; /* 26 - 51, Bank 1 */
+ XGpioPsPinTable[2] = (u32)77; /* 52 - 77, Bank 2 */
+ XGpioPsPinTable[3] = (u32)109; /* 78 - 109, Bank 3 */
+ XGpioPsPinTable[4] = (u32)141; /* 110 - 141, Bank 4 */
+ XGpioPsPinTable[5] = (u32)173; /* 142 - 173 Bank 5 */
+
+ *BankNumber = 0U;
+ while (*BankNumber < 6U) {
+ if (PinNumber <= XGpioPsPinTable[*BankNumber]) {
+ break;
}
-#else
- u32 XGpioPsPinTable[] = {
- (u32)31, /* 0 - 31, Bank 0 */
- (u32)53, /* 32 - 53, Bank 1 */
- (u32)85, /* 54 - 85, Bank 2 */
- (u32)117 /* 86 - 117 Bank 3 */
- };
- *BankNumber = 0U;
- while (*BankNumber < 4U) {
- if (PinNumber <= XGpioPsPinTable[*BankNumber]) {
- break;
+ (*BankNumber)++;
}
- (*BankNumber)++;
- }
-#endif
+ } else {
+ XGpioPsPinTable[0] = (u32)31; /* 0 - 31, Bank 0 */
+ XGpioPsPinTable[1] = (u32)53; /* 32 - 53, Bank 1 */
+ XGpioPsPinTable[2] = (u32)85; /* 54 - 85, Bank 2 */
+ XGpioPsPinTable[3] = (u32)117; /* 86 - 117 Bank 3 */
+
+ *BankNumber = 0U;
+ while (*BankNumber < 4U) {
+ if (PinNumber <= XGpioPsPinTable[*BankNumber]) {
+ break;
+ }
+ (*BankNumber)++;
+ }
+ }
if (*BankNumber == (u8)0) {
*PinNumberInBank = PinNumber;
} else {
@@ -618,3 +625,4 @@ void XGpioPs_GetBankPin(u8 PinNumber, u8 *BankNumber, u8 *PinNumberInBank)
(XGpioPsPinTable[*BankNumber - (u8)1] + (u32)1));
}
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops.h
similarity index 91%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops.h
index ef9a7f05a..102615572 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops.h
@@ -33,6 +33,9 @@
/**
*
* @file xgpiops.h
+* @addtogroup gpiops_v3_1
+* @{
+* @details
*
* The Xilinx PS GPIO driver. This driver supports the Xilinx PS GPIO
* Controller.
@@ -93,6 +96,7 @@
* 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.
*
*
*
@@ -108,6 +112,7 @@ extern "C" {
#include "xstatus.h"
#include "xgpiops_hw.h"
+#include "xplatform_info.h"
/************************** Constant Definitions *****************************/
@@ -123,6 +128,7 @@ 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 */
@@ -131,11 +137,15 @@ extern "C" {
#ifdef XPAR_PSU_GPIO_0_BASEADDR
#define XGPIOPS_BANK4 0x04U /**< GPIO Bank 4 */
#define XGPIOPS_BANK5 0x05U /**< GPIO Bank 5 */
+#endif
-#define XGPIOPS_MAX_BANKS 0x06U /**< Max banks in a GPIO device */
-#define XGPIOPS_BANK_MAX_PINS (u32)32 /**< Max pins in a GPIO bank */
+#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 (u32)174 /*< Max pins in the ZynqMP 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
@@ -143,20 +153,13 @@ extern "C" {
* 110 - 141, Bank 4
* 142 - 173, Bank 5
*/
-#else
-
-#define XGPIOPS_MAX_BANKS 0x04U /**< Max banks in a GPIO device */
-#define XGPIOPS_BANK_MAX_PINS (u32)32 /**< Max pins in a GPIO bank */
-
-#define XGPIOPS_DEVICE_MAX_PIN_NUM (u32)118 /*< Max pins in the GPIO device
+#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
*/
-
-#endif
/**************************** Type Definitions *******************************/
/****************************************************************************/
@@ -196,21 +199,20 @@ typedef struct {
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;
/***************** Macros (Inline Functions) Definitions *********************/
/************************** Function Prototypes ******************************/
-/*
- * Functions in xgpiops.c
- */
+/* Functions in xgpiops.c */
s32 XGpioPs_CfgInitialize(XGpioPs *InstancePtr, XGpioPs_Config *ConfigPtr,
u32 EffectiveAddr);
-/*
- * Bank APIs in xgpiops.c
- */
+/* Bank APIs in xgpiops.c */
u32 XGpioPs_Read(XGpioPs *InstancePtr, u8 Bank);
void XGpioPs_Write(XGpioPs *InstancePtr, u8 Bank, u32 Data);
void XGpioPs_SetDirection(XGpioPs *InstancePtr, u8 Bank, u32 Direction);
@@ -219,9 +221,7 @@ void XGpioPs_SetOutputEnable(XGpioPs *InstancePtr, u8 Bank, u32 OpEnable);
u32 XGpioPs_GetOutputEnable(XGpioPs *InstancePtr, u8 Bank);
void XGpioPs_GetBankPin(u8 PinNumber, u8 *BankNumber, u8 *PinNumberInBank);
-/*
- * Pin APIs in xgpiops.c
- */
+/* Pin APIs in xgpiops.c */
u32 XGpioPs_ReadPin(XGpioPs *InstancePtr, u32 Pin);
void XGpioPs_WritePin(XGpioPs *InstancePtr, u32 Pin, u32 Data);
void XGpioPs_SetDirectionPin(XGpioPs *InstancePtr, u32 Pin, u32 Direction);
@@ -229,17 +229,11 @@ u32 XGpioPs_GetDirectionPin(XGpioPs *InstancePtr, u32 Pin);
void XGpioPs_SetOutputEnablePin(XGpioPs *InstancePtr, u32 Pin, u32 OpEnable);
u32 XGpioPs_GetOutputEnablePin(XGpioPs *InstancePtr, u32 Pin);
-/*
- * Diagnostic functions in xgpiops_selftest.c
- */
+/* Diagnostic functions in xgpiops_selftest.c */
s32 XGpioPs_SelfTest(XGpioPs *InstancePtr);
-/*
- * Functions in xgpiops_intr.c
- */
-/*
- * Bank APIs in xgpiops_intr.c
- */
+/* Functions in xgpiops_intr.c */
+/* Bank APIs in xgpiops_intr.c */
void XGpioPs_IntrEnable(XGpioPs *InstancePtr, u8 Bank, u32 Mask);
void XGpioPs_IntrDisable(XGpioPs *InstancePtr, u8 Bank, u32 Mask);
u32 XGpioPs_IntrGetEnabled(XGpioPs *InstancePtr, u8 Bank);
@@ -253,9 +247,7 @@ void XGpioPs_SetCallbackHandler(XGpioPs *InstancePtr, void *CallBackRef,
XGpioPs_Handler FuncPointer);
void XGpioPs_IntrHandler(XGpioPs *InstancePtr);
-/*
- * Pin APIs in xgpiops_intr.c
- */
+/* Pin APIs in xgpiops_intr.c */
void XGpioPs_SetIntrTypePin(XGpioPs *InstancePtr, u32 Pin, u8 IrqType);
u8 XGpioPs_GetIntrTypePin(XGpioPs *InstancePtr, u32 Pin);
@@ -265,9 +257,7 @@ u32 XGpioPs_IntrGetEnabledPin(XGpioPs *InstancePtr, u32 Pin);
u32 XGpioPs_IntrGetStatusPin(XGpioPs *InstancePtr, u32 Pin);
void XGpioPs_IntrClearPin(XGpioPs *InstancePtr, u32 Pin);
-/*
- * Functions in xgpiops_sinit.c
- */
+/* Functions in xgpiops_sinit.c */
XGpioPs_Config *XGpioPs_LookupConfig(u16 DeviceId);
#ifdef __cplusplus
@@ -275,3 +265,4 @@ XGpioPs_Config *XGpioPs_LookupConfig(u16 DeviceId);
#endif
#endif /* end of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_g.c
similarity index 90%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_g.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_g.c
index 0ac9ce911..597b38a12 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_g.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_g.c
@@ -1,55 +1,55 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Driver configuration
-*
-*******************************************************************/
-
-#include "xparameters.h"
-#include "xgpiops.h"
-
-/*
-* The configuration table for devices
-*/
-
-XGpioPs_Config XGpioPs_ConfigTable[] =
-{
- {
- XPAR_PSU_GPIO_0_DEVICE_ID,
- XPAR_PSU_GPIO_0_BASEADDR
- }
-};
-
-
+
+/*******************************************************************
+*
+* CAUTION: This file is automatically generated by HSI.
+* Version:
+* DO NOT EDIT.
+*
+* Copyright (C) 2010-2016 Xilinx, Inc. All Rights Reserved.*
+*Permission is hereby granted, free of charge, to any person obtaining a copy
+*of this software and associated documentation files (the Software), to deal
+*in the Software without restriction, including without limitation the rights
+*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*copies of the Software, and to permit persons to whom the Software is
+*furnished to do so, subject to the following conditions:
+*
+*The above copyright notice and this permission notice shall be included in
+*all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+*(a) running on a Xilinx device, or
+*(b) that interact with a Xilinx device through a bus or interconnect.
+*
+*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+*XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+*Except as contained in this notice, the name of the Xilinx shall not be used
+*in advertising or otherwise to promote the sale, use or other dealings in
+*this Software without prior written authorization from Xilinx.
+*
+
+*
+* Description: Driver configuration
+*
+*******************************************************************/
+
+#include "xparameters.h"
+#include "xgpiops.h"
+
+/*
+* The configuration table for devices
+*/
+
+XGpioPs_Config XGpioPs_ConfigTable[] =
+{
+ {
+ XPAR_PSU_GPIO_0_DEVICE_ID,
+ XPAR_PSU_GPIO_0_BASEADDR
+ }
+};
+
+
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_hw.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_hw.c
similarity index 81%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_hw.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_hw.c
index dfa99c02f..d7a5e00f0 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_hw.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_hw.c
@@ -33,6 +33,8 @@
/**
*
* @file xgpiops_hw.c
+* @addtogroup gpiops_v3_1
+* @{
*
* This file contains low level GPIO functions.
*
@@ -43,6 +45,7 @@
* ----- ---- -------- -----------------------------------------------
* 1.02a hk 08/22/13 First Release
* 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.
*
*
*
@@ -80,11 +83,16 @@
void XGpioPs_ResetHw(u32 BaseAddress)
{
u32 BankCount;
+ u32 Platform,MaxBanks;
- /*
- * Write reset values to all mask data registers
- */
- for(BankCount = 2U; BankCount < (u32)XGPIOPS_MAX_BANKS; BankCount++) {
+ Platform = XGetPlatform_Info();
+ if (Platform == XPLAT_ZYNQ_ULTRA_MP) {
+ MaxBanks = (u32)6;
+ } else {
+ MaxBanks = (u32)4;
+ }
+ /* Write reset values to all mask data registers */
+ for(BankCount = 2U; BankCount < (u32)MaxBanks; BankCount++) {
XGpioPs_WriteReg(BaseAddress,
((BankCount * XGPIOPS_DATA_MASK_OFFSET) +
@@ -93,20 +101,16 @@ void XGpioPs_ResetHw(u32 BaseAddress)
((BankCount * XGPIOPS_DATA_MASK_OFFSET) +
XGPIOPS_DATA_MSW_OFFSET), 0x0U);
}
- /*
- * Write reset values to all output data registers
- */
- for(BankCount = 2U; BankCount < (u32)XGPIOPS_MAX_BANKS; BankCount++) {
+ /* Write reset values to all output data registers */
+ for(BankCount = 2U; BankCount < (u32)MaxBanks; BankCount++) {
XGpioPs_WriteReg(BaseAddress,
((BankCount * XGPIOPS_DATA_BANK_OFFSET) +
XGPIOPS_DATA_OFFSET), 0x0U);
}
- /*
- * Reset all registers of all 4 banks
- */
- for(BankCount = 0U; BankCount < (u32)XGPIOPS_MAX_BANKS; BankCount++) {
+ /* Reset all registers of all GPIO banks */
+ for(BankCount = 0U; BankCount < (u32)MaxBanks; BankCount++) {
XGpioPs_WriteReg(BaseAddress,
((BankCount * XGPIOPS_REG_MASK_OFFSET) +
@@ -134,42 +138,32 @@ void XGpioPs_ResetHw(u32 BaseAddress)
XGPIOPS_INTANY_OFFSET), 0x0U);
}
- /*
- * Bank 0 Int type
- */
+ /* Bank 0 Int type */
XGpioPs_WriteReg(BaseAddress, XGPIOPS_INTTYPE_OFFSET,
XGPIOPS_INTTYPE_BANK0_RESET);
- /*
- * Bank 1 Int type
- */
+ /* Bank 1 Int type */
XGpioPs_WriteReg(BaseAddress,
((u32)XGPIOPS_REG_MASK_OFFSET + (u32)XGPIOPS_INTTYPE_OFFSET),
XGPIOPS_INTTYPE_BANK1_RESET);
- /*
- * Bank 2 Int type
- */
+ /* Bank 2 Int type */
XGpioPs_WriteReg(BaseAddress,
(((u32)2 * XGPIOPS_REG_MASK_OFFSET) + XGPIOPS_INTTYPE_OFFSET),
XGPIOPS_INTTYPE_BANK2_RESET);
- /*
- * Bank 3 Int type
- */
+ /* Bank 3 Int type */
XGpioPs_WriteReg(BaseAddress,
(((u32)3 * XGPIOPS_REG_MASK_OFFSET) + XGPIOPS_INTTYPE_OFFSET),
XGPIOPS_INTTYPE_BANK3_RESET);
-#ifdef XPAR_PSU_GPIO_0_BASEADDR
- /*
- * Bank 4 Int type
- */
- XGpioPs_WriteReg(BaseAddress,
- (((u32)3 * XGPIOPS_REG_MASK_OFFSET) + XGPIOPS_INTTYPE_OFFSET),
- XGPIOPS_INTTYPE_BANK4_RESET);
- /*
- * Bank 5 Int type
- */
- XGpioPs_WriteReg(BaseAddress,
- (((u32)3 * XGPIOPS_REG_MASK_OFFSET) + XGPIOPS_INTTYPE_OFFSET),
- XGPIOPS_INTTYPE_BANK5_RESET);
-#endif
+
+ if (Platform == XPLAT_ZYNQ_ULTRA_MP) {
+ /* Bank 4 Int type */
+ XGpioPs_WriteReg(BaseAddress,
+ (((u32)4 * XGPIOPS_REG_MASK_OFFSET) + XGPIOPS_INTTYPE_OFFSET),
+ XGPIOPS_INTTYPE_BANK4_RESET);
+ /* Bank 5 Int type */
+ XGpioPs_WriteReg(BaseAddress,
+ (((u32)5 * XGPIOPS_REG_MASK_OFFSET) + XGPIOPS_INTTYPE_OFFSET),
+ XGPIOPS_INTTYPE_BANK5_RESET);
+ }
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xgpiops_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_hw.h
similarity index 90%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xgpiops_hw.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_hw.h
index 2f4ea8041..81e8d6a9f 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xgpiops_hw.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_hw.h
@@ -33,6 +33,8 @@
/**
*
* @file xgpiops_hw.h
+* @addtogroup gpiops_v3_1
+* @{
*
* This header file contains the identifiers and basic driver functions (or
* macros) that can be used to access the device. Other driver functions
@@ -47,6 +49,7 @@
* 1.02a hk 08/22/13 Added low level reset API function prototype and
* related constant definitions
* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
+* 3.1 kvn 04/13/15 Corrected reset values of banks.
*
*
******************************************************************************/
@@ -98,19 +101,18 @@ extern "C" {
* @{
*/
#ifdef XPAR_PSU_GPIO_0_BASEADDR
-#define XGPIOPS_INTTYPE_BANK0_RESET 0x3FFFFFFFU
-#define XGPIOPS_INTTYPE_BANK1_RESET 0x3FFFFFFFU
-#define XGPIOPS_INTTYPE_BANK2_RESET 0x3FFFFFFFU
-#define XGPIOPS_INTTYPE_BANK3_RESET 0xFFFFFFFFU
-#define XGPIOPS_INTTYPE_BANK4_RESET 0xFFFFFFFFU
-#define XGPIOPS_INTTYPE_BANK5_RESET 0xFFFFFFFFU
+#define XGPIOPS_INTTYPE_BANK0_RESET 0x03FFFFFFU /* Resets specific to Zynq Ultrascale+ MP */
+#define XGPIOPS_INTTYPE_BANK1_RESET 0x03FFFFFFU
+#define XGPIOPS_INTTYPE_BANK2_RESET 0x03FFFFFFU
#else
-
-#define XGPIOPS_INTTYPE_BANK0_RESET 0xFFFFFFFFU
-#define XGPIOPS_INTTYPE_BANK1_RESET 0x3FFFFFFFU
+#define XGPIOPS_INTTYPE_BANK0_RESET 0xFFFFFFFFU /* Resets specific to Zynq */
+#define XGPIOPS_INTTYPE_BANK1_RESET 0x003FFFFFU
#define XGPIOPS_INTTYPE_BANK2_RESET 0xFFFFFFFFU
-#define XGPIOPS_INTTYPE_BANK3_RESET 0xFFFFFFFFU
#endif
+
+#define XGPIOPS_INTTYPE_BANK3_RESET 0xFFFFFFFFU /* Reset common to both platforms */
+#define XGPIOPS_INTTYPE_BANK4_RESET 0xFFFFFFFFU /* Resets specific to Zynq Ultrascale+ MP */
+#define XGPIOPS_INTTYPE_BANK5_RESET 0xFFFFFFFFU
/* @} */
/**************************** Type Definitions *******************************/
@@ -159,3 +161,4 @@ void XGpioPs_ResetHw(u32 BaseAddress);
#endif /* __cplusplus */
#endif /* XGPIOPS_HW_H */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_intr.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_intr.c
similarity index 90%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_intr.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_intr.c
index 83c4c6254..c07381be6 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_intr.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_intr.c
@@ -33,6 +33,8 @@
/**
*
* @file xgpiops_intr.c
+* @addtogroup gpiops_v3_1
+* @{
*
* This file contains functions related to GPIO interrupt handling.
*
@@ -45,6 +47,7 @@
* 2.2 sk 10/13/14 Used Pin number in Bank instead of pin number
* passed to API's. 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.
*
*
******************************************************************************/
@@ -73,7 +76,7 @@ void StubHandler(void *CallBackRef, u32 Bank, u32 Status);
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Bank is the bank number of the GPIO to operate on.
-* Valid values are 0 to XGPIOPS_MAX_BANKS - 1.
+* Valid values are 0-3 in Zynq and 0-5 in Zynq Ultrascale+ MP.
* @param Mask is the bit mask of the pins for which interrupts are to
* be enabled. Bit positions of 1 will be enabled. Bit positions
* of 0 will keep the previous setting.
@@ -87,7 +90,7 @@ void XGpioPs_IntrEnable(XGpioPs *InstancePtr, u8 Bank, u32 Mask)
{
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertVoid(Bank < XGPIOPS_MAX_BANKS);
+ Xil_AssertVoid(Bank < InstancePtr->MaxBanks);
XGpioPs_WriteReg(InstancePtr->GpioConfig.BaseAddr,
((u32)(Bank) * XGPIOPS_REG_MASK_OFFSET) +
@@ -101,7 +104,7 @@ void XGpioPs_IntrEnable(XGpioPs *InstancePtr, u8 Bank, u32 Mask)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Pin is the pin number for which the interrupt is to be enabled.
-* Valid values are 0 to XGPIOPS_DEVICE_MAX_PIN_NUM - 1.
+* Valid values are 0-117 in Zynq and 0-173 in Zynq Ultrascale+ MP.
*
* @return None.
*
@@ -116,11 +119,9 @@ void XGpioPs_IntrEnablePin(XGpioPs *InstancePtr, u32 Pin)
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertVoid(Pin < XGPIOPS_DEVICE_MAX_PIN_NUM);
+ Xil_AssertVoid(Pin < InstancePtr->MaxPinNum);
- /*
- * Get the Bank number and Pin number within the bank.
- */
+ /* Get the Bank number and Pin number within the bank. */
XGpioPs_GetBankPin((u8)Pin, &Bank, &PinNumber);
IntrReg = ((u32)1 << (u32)PinNumber);
@@ -137,7 +138,7 @@ void XGpioPs_IntrEnablePin(XGpioPs *InstancePtr, u32 Pin)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Bank is the bank number of the GPIO to operate on.
-* Valid values are 0 to XGPIOPS_MAX_BANKS - 1.
+* Valid values are 0-3 in Zynq and 0-5 in Zynq Ultrascale+ MP.
* @param Mask is the bit mask of the pins for which interrupts are
* to be disabled. Bit positions of 1 will be disabled. Bit
* positions of 0 will keep the previous setting.
@@ -151,7 +152,7 @@ void XGpioPs_IntrDisable(XGpioPs *InstancePtr, u8 Bank, u32 Mask)
{
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertVoid(Bank < XGPIOPS_MAX_BANKS);
+ Xil_AssertVoid(Bank < InstancePtr->MaxBanks);
XGpioPs_WriteReg(InstancePtr->GpioConfig.BaseAddr,
((u32)(Bank) * XGPIOPS_REG_MASK_OFFSET) +
@@ -165,7 +166,7 @@ void XGpioPs_IntrDisable(XGpioPs *InstancePtr, u8 Bank, u32 Mask)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Pin is the pin number for which the interrupt is to be disabled.
-* Valid values are 0 to XGPIOPS_DEVICE_MAX_PIN_NUM - 1.
+* Valid values are 0-117 in Zynq and 0-173 in Zynq Ultrascale+ MP.
*
* @return None.
*
@@ -180,11 +181,9 @@ void XGpioPs_IntrDisablePin(XGpioPs *InstancePtr, u32 Pin)
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertVoid(Pin < XGPIOPS_DEVICE_MAX_PIN_NUM);
+ Xil_AssertVoid(Pin < InstancePtr->MaxPinNum);
- /*
- * Get the Bank number and Pin number within the bank.
- */
+ /* Get the Bank number and Pin number within the bank. */
XGpioPs_GetBankPin((u8)Pin, &Bank, &PinNumber);
IntrReg = ((u32)1 << (u32)PinNumber);
@@ -200,7 +199,7 @@ void XGpioPs_IntrDisablePin(XGpioPs *InstancePtr, u32 Pin)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Bank is the bank number of the GPIO to operate on.
-* Valid values are 0 to XGPIOPS_MAX_BANKS - 1.
+* Valid values are 0-3 in Zynq and 0-5 in Zynq Ultrascale+ MP.
*
* @return Enabled interrupt(s) in a 32-bit format. Bit positions with 1
* indicate that the interrupt for that pin is enabled, bit
@@ -216,7 +215,7 @@ u32 XGpioPs_IntrGetEnabled(XGpioPs *InstancePtr, u8 Bank)
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(Bank < XGPIOPS_MAX_BANKS);
+ Xil_AssertNonvoid(Bank < InstancePtr->MaxBanks);
IntrMask = XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
((u32)(Bank) * XGPIOPS_REG_MASK_OFFSET) +
@@ -232,7 +231,7 @@ u32 XGpioPs_IntrGetEnabled(XGpioPs *InstancePtr, u8 Bank)
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Pin is the pin number for which the interrupt enable status
* is to be known.
-* Valid values are 0 to XGPIOPS_DEVICE_MAX_PIN_NUM - 1.
+* Valid values are 0-117 in Zynq and 0-173 in Zynq Ultrascale+ MP.
*
* @return
* - TRUE if the interrupt is enabled.
@@ -249,11 +248,9 @@ u32 XGpioPs_IntrGetEnabledPin(XGpioPs *InstancePtr, u32 Pin)
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(Pin < XGPIOPS_DEVICE_MAX_PIN_NUM);
+ Xil_AssertNonvoid(Pin < InstancePtr->MaxPinNum);
- /*
- * Get the Bank number and Pin number within the bank.
- */
+ /* Get the Bank number and Pin number within the bank. */
XGpioPs_GetBankPin((u8)Pin, &Bank, &PinNumber);
IntrReg = XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
@@ -270,7 +267,7 @@ u32 XGpioPs_IntrGetEnabledPin(XGpioPs *InstancePtr, u32 Pin)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Bank is the bank number of the GPIO to operate on.
-* Valid values are 0 to XGPIOPS_MAX_BANKS - 1.
+* Valid values are 0-3 in Zynq and 0-5 in Zynq Ultrascale+ MP.
*
* @return The value read from Interrupt Status Register.
*
@@ -281,7 +278,7 @@ u32 XGpioPs_IntrGetStatus(XGpioPs *InstancePtr, u8 Bank)
{
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(Bank < XGPIOPS_MAX_BANKS);
+ Xil_AssertNonvoid(Bank < InstancePtr->MaxBanks);
return XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
((u32)(Bank) * XGPIOPS_REG_MASK_OFFSET) +
@@ -296,7 +293,7 @@ u32 XGpioPs_IntrGetStatus(XGpioPs *InstancePtr, u8 Bank)
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Pin is the pin number for which the interrupt enable status
* is to be known.
-* Valid values are 0 to XGPIOPS_DEVICE_MAX_PIN_NUM - 1.
+* Valid values are 0-117 in Zynq and 0-173 in Zynq Ultrascale+ MP.
*
* @return
* - TRUE if the interrupt has occurred.
@@ -313,11 +310,9 @@ u32 XGpioPs_IntrGetStatusPin(XGpioPs *InstancePtr, u32 Pin)
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(Pin < XGPIOPS_DEVICE_MAX_PIN_NUM);
+ Xil_AssertNonvoid(Pin < InstancePtr->MaxPinNum);
- /*
- * Get the Bank number and Pin number within the bank.
- */
+ /* Get the Bank number and Pin number within the bank. */
XGpioPs_GetBankPin((u8)Pin, &Bank, &PinNumber);
IntrReg = XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
@@ -336,7 +331,7 @@ u32 XGpioPs_IntrGetStatusPin(XGpioPs *InstancePtr, u32 Pin)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Bank is the bank number of the GPIO to operate on.
-* Valid values are 0 to XGPIOPS_MAX_BANKS - 1.
+* Valid values are 0-3 in Zynq and 0-5 in Zynq Ultrascale+ MP.
* @param Mask is the mask of the interrupts to be cleared. Bit positions
* of 1 will be cleared. Bit positions of 0 will not change the
* previous interrupt status.
@@ -348,11 +343,9 @@ void XGpioPs_IntrClear(XGpioPs *InstancePtr, u8 Bank, u32 Mask)
{
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertVoid(Bank < XGPIOPS_MAX_BANKS);
+ Xil_AssertVoid(Bank < InstancePtr->MaxBanks);
- /*
- * Clear the currently pending interrupts.
- */
+ /* Clear the currently pending interrupts. */
XGpioPs_WriteReg(InstancePtr->GpioConfig.BaseAddr,
((u32)(Bank) * XGPIOPS_REG_MASK_OFFSET) +
XGPIOPS_INTSTS_OFFSET, Mask);
@@ -366,7 +359,7 @@ void XGpioPs_IntrClear(XGpioPs *InstancePtr, u8 Bank, u32 Mask)
*
* @param InstancePtr is a pointer to the XGpioPs instance.
* @param Pin is the pin number for which the interrupt status is to be
-* cleared. Valid values are 0 to XGPIOPS_DEVICE_MAX_PIN_NUM - 1.
+* cleared. Valid values are 0-117 in Zynq and 0-173 in Zynq Ultrascale+ MP.
*
* @note None.
*
@@ -379,16 +372,12 @@ void XGpioPs_IntrClearPin(XGpioPs *InstancePtr, u32 Pin)
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertVoid(Pin < XGPIOPS_DEVICE_MAX_PIN_NUM);
+ Xil_AssertVoid(Pin < InstancePtr->MaxPinNum);
- /*
- * Get the Bank number and Pin number within the bank.
- */
+ /* Get the Bank number and Pin number within the bank. */
XGpioPs_GetBankPin((u8)Pin, &Bank, &PinNumber);
- /*
- * Clear the specified pending interrupts.
- */
+ /* Clear the specified pending interrupts. */
IntrReg = XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
((u32)(Bank) * XGPIOPS_REG_MASK_OFFSET) +
XGPIOPS_INTSTS_OFFSET);
@@ -407,7 +396,7 @@ void XGpioPs_IntrClearPin(XGpioPs *InstancePtr, u32 Pin)
*
* @param InstancePtr is a pointer to an XGpioPs instance.
* @param Bank is the bank number of the GPIO to operate on.
-* Valid values are 0 to XGPIOPS_MAX_BANKS - 1.
+* Valid values are 0-3 in Zynq and 0-5 in Zynq Ultrascale+ MP.
* @param IntrType is the 32 bit mask of the interrupt type.
* 0 means Level Sensitive and 1 means Edge Sensitive.
* @param IntrPolarity is the 32 bit mask of the interrupt polarity.
@@ -432,7 +421,7 @@ void XGpioPs_SetIntrType(XGpioPs *InstancePtr, u8 Bank, u32 IntrType,
{
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertVoid(Bank < XGPIOPS_MAX_BANKS);
+ Xil_AssertVoid(Bank < InstancePtr->MaxBanks);
XGpioPs_WriteReg(InstancePtr->GpioConfig.BaseAddr,
((u32)(Bank) * XGPIOPS_REG_MASK_OFFSET) +
@@ -455,7 +444,7 @@ void XGpioPs_SetIntrType(XGpioPs *InstancePtr, u8 Bank, u32 IntrType,
*
* @param InstancePtr is a pointer to an XGpioPs instance.
* @param Bank is the bank number of the GPIO to operate on.
-* Valid values are 0 to XGPIOPS_MAX_BANKS - 1.
+* Valid values are 0-3 in Zynq and 0-5 in Zynq Ultrascale+ MP.
* @param IntrType returns the 32 bit mask of the interrupt type.
* 0 means Level Sensitive and 1 means Edge Sensitive.
* @param IntrPolarity returns the 32 bit mask of the interrupt
@@ -477,7 +466,7 @@ void XGpioPs_GetIntrType(XGpioPs *InstancePtr, u8 Bank, u32 *IntrType,
{
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertVoid(Bank < XGPIOPS_MAX_BANKS);
+ Xil_AssertVoid(Bank < InstancePtr->MaxBanks);
*IntrType = XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
((u32)(Bank) * XGPIOPS_REG_MASK_OFFSET) +
@@ -499,7 +488,7 @@ void XGpioPs_GetIntrType(XGpioPs *InstancePtr, u8 Bank, u32 *IntrType,
*
* @param InstancePtr is a pointer to an XGpioPs instance.
* @param Pin is the pin number whose IRQ type is to be set.
-* Valid values are 0 to XGPIOPS_DEVICE_MAX_PIN_NUM - 1.
+* Valid values are 0-117 in Zynq and 0-173 in Zynq Ultrascale+ MP.
* @param IrqType is the IRQ type for GPIO Pin. Use XGPIOPS_IRQ_TYPE_*
* defined in xgpiops.h to specify the IRQ type.
*
@@ -518,12 +507,10 @@ void XGpioPs_SetIntrTypePin(XGpioPs *InstancePtr, u32 Pin, u8 IrqType)
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertVoid(Pin < XGPIOPS_DEVICE_MAX_PIN_NUM);
+ Xil_AssertVoid(Pin < InstancePtr->MaxPinNum);
Xil_AssertVoid(IrqType <= XGPIOPS_IRQ_TYPE_LEVEL_LOW);
- /*
- * Get the Bank number and Pin number within the bank.
- */
+ /* Get the Bank number and Pin number within the bank. */
XGpioPs_GetBankPin((u8)Pin, &Bank, &PinNumber);
IntrTypeReg = XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
@@ -586,7 +573,7 @@ void XGpioPs_SetIntrTypePin(XGpioPs *InstancePtr, u32 Pin, u8 IrqType)
*
* @param InstancePtr is a pointer to an XGpioPs instance.
* @param Pin is the pin number whose IRQ type is to be obtained.
-* Valid values are 0 to XGPIOPS_DEVICE_MAX_PIN_NUM - 1.
+* Valid values are 0-117 in Zynq and 0-173 in Zynq Ultrascale+ MP.
*
* @return None.
*
@@ -605,11 +592,9 @@ u8 XGpioPs_GetIntrTypePin(XGpioPs *InstancePtr, u32 Pin)
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(Pin < XGPIOPS_DEVICE_MAX_PIN_NUM);
+ Xil_AssertNonvoid(Pin < InstancePtr->MaxPinNum);
- /*
- * Get the Bank number and Pin number within the bank.
- */
+ /* Get the Bank number and Pin number within the bank. */
XGpioPs_GetBankPin((u8)Pin, &Bank, &PinNumber);
IntrType = XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
@@ -706,7 +691,7 @@ void XGpioPs_IntrHandler(XGpioPs *InstancePtr)
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- for (Bank = 0U; Bank < XGPIOPS_MAX_BANKS; Bank++) {
+ for (Bank = 0U; Bank < InstancePtr->MaxBanks; Bank++) {
IntrStatus = XGpioPs_IntrGetStatus(InstancePtr, Bank);
if (IntrStatus != (u32)0) {
IntrEnabled = XGpioPs_IntrGetEnabled(InstancePtr,
@@ -743,3 +728,4 @@ void StubHandler(void *CallBackRef, u32 Bank, u32 Status)
Xil_AssertVoidAlways();
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_selftest.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_selftest.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_selftest.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_selftest.c
index 9dcca8c12..da1973a2d 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_selftest.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_selftest.c
@@ -33,6 +33,8 @@
/**
*
* @file xgpiops_selftest.c
+* @addtogroup gpiops_v3_1
+* @{
*
* This file contains a diagnostic self-test function for the XGpioPs driver.
*
@@ -94,9 +96,7 @@ s32 XGpioPs_SelfTest(XGpioPs *InstancePtr)
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- /*
- * Disable the Interrupts for Bank 0 .
- */
+ /* Disable the Interrupts for Bank 0 . */
IntrEnabled = XGpioPs_IntrGetEnabled(InstancePtr, XGPIOPS_BANK0);
XGpioPs_IntrDisable(InstancePtr, XGPIOPS_BANK0, IntrEnabled);
@@ -130,3 +130,4 @@ s32 XGpioPs_SelfTest(XGpioPs *InstancePtr)
return Status;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_sinit.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_sinit.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_sinit.c
index d6fd4cb26..2ca008373 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_0/src/xgpiops_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/gpiops_v3_1/src/xgpiops_sinit.c
@@ -33,6 +33,8 @@
/**
*
* @file xgpiops_sinit.c
+* @addtogroup gpiops_v3_1
+* @{
*
* This file contains the implementation of the XGpioPs driver's static
* initialization functionality.
@@ -96,3 +98,4 @@ XGpioPs_Config *XGpioPs_LookupConfig(u16 DeviceId)
return (XGpioPs_Config *)CfgPtr;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps.h
deleted file mode 100644
index 9c6dc10eb..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps.h
+++ /dev/null
@@ -1,416 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xiicps.h
-*
-* This is an implementation of IIC driver in the PS block. The device can
-* be either a master or a slave on the IIC bus. This implementation supports
-* both interrupt mode transfer and polled mode transfer. Only 7-bit address
-* is used in the driver, although the hardware also supports 10-bit address.
-*
-* IIC is a 2-wire serial interface. The master controls the clock, so it can
-* regulate when it wants to send or receive data. The slave is under control of
-* the master, it must respond quickly since it has no control of the clock and
-* must send/receive data as fast or as slow as the master does.
-*
-* The higher level software must implement a higher layer protocol to inform
-* the slave what to send to the master.
-*
-* Initialization & Configuration
-*
-* The XIicPs_Config structure is used by the driver to configure itself. This
-* configuration structure is typically created by the tool-chain based on HW
-* build properties.
-*
-* To support multiple runtime loading and initialization strategies employed by
-* various operating systems, the driver instance can be initialized in the
-* following way:
-*
-* - XIicPs_LookupConfig(DeviceId) - Use the device identifier to find
-* the static configuration structure defined in xiicps_g.c. This is
-* setup by the tools. For some operating systems the config structure
-* will be initialized by the software and this call is not needed.
-*
-* - XIicPs_CfgInitialize(InstancePtr, CfgPtr, EffectiveAddr) - Uses a
-* configuration structure provided by the caller. If running in a
-* system with address translation, the provided virtual memory base
-* address replaces the physical address in the configuration
-* structure.
-*
-* Multiple Masters
-*
-* More than one master can exist, bus arbitration is defined in the IIC
-* standard. Lost of arbitration causes arbitration loss interrupt on the device.
-*
-* Multiple Slaves
-*
-* Multiple slaves are supported by selecting them with unique addresses. It is
-* up to the system designer to be sure all devices on the IIC bus have
-* unique addresses.
-*
-* Addressing
-*
-* The IIC hardware can use 7 or 10 bit addresses. The driver provides the
-* ability to control which address size is sent in messages as a master to a
-* slave device.
-*
-* FIFO Size
-* The hardware FIFO is 32 bytes deep. The user must know the limitations of
-* other IIC devices on the bus. Some are only able to receive a limited number
-* of bytes in a single transfer.
-*
-* Data Rates
-*
-* The data rate is set by values in the control register. The formula for
-* determining the correct register values is:
-* Fscl = Fpclk/(22 x (divisor_a+1) x (divisor_b+1))
-*
-* When the device is configured as a slave, the slck setting controls the
-* sample rate and so must be set to be at least as fast as the fastest scl
-* expected to be seen in the system.
-*
-* Polled Mode Operation
-*
-* This driver supports polled mode transfers.
-*
-* Interrupts
-*
-* The user must connect the interrupt handler of the driver,
-* XIicPs_InterruptHandler to an interrupt system such that it will be called
-* when an interrupt occurs. This function does not save and restore the
-* processor context such that the user must provide this processing.
-*
-* The driver handles the following interrupts:
-* - Transfer complete
-* - More Data
-* - Transfer not Acknowledged
-* - Transfer Time out
-* - Monitored slave ready - master mode only
-* - Receive Overflow
-* - Transmit FIFO overflow
-* - Receive FIFO underflow
-* - Arbitration lost
-*
-* Bus Busy
-*
-* Bus busy is checked before the setup of a master mode device, to avoid
-* unnecessary arbitration loss interrupt.
-*
-* RTOS Independence
-*
-* This driver is intended to be RTOS and processor independent. It works with
-* physical addresses only. Any needs for dynamic memory management, threads or
-* thread mutual exclusion, virtual memory, or cache control must be satisfied by
-* the layer above this driver.
-*
-*Repeated Start
-*
-* The I2C controller does not indicate completion of a receive transfer if HOLD
-* bit is set. Due to this errata, repeated start cannot be used if a receive
-* transfer is followed by any other transfer.
-*
-*
MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- -----------------------------------------------
-* 1.00a drg/jz 01/30/08 First release
-* 1.00a sdm 09/21/11 Fixed an issue in the XIicPs_SetOptions and
-* XIicPs_ClearOptions where the InstancePtr->Options
-* was not updated correctly.
-* Updated the InstancePtr->Options in the
-* XIicPs_CfgInitialize by calling XIicPs_GetOptions.
-* Updated the XIicPs_SetupMaster to not check for
-* Bus Busy condition when the Hold Bit is set.
-* Removed some unused variables.
-* 1.01a sg 03/30/12 Fixed an issue in XIicPs_MasterSendPolled where a
-* check for transfer completion is added, which indicates
-* the completion of current transfer.
-* 1.02a sg 08/29/12 Updated the logic to arrive at the best divisors
-* to achieve I2C clock with minimum error for
-* CR #674195
-* 1.03a hk 05/04/13 Initialized BestDivA and BestDivB to 0.
-* This is fix for CR#704398 to remove warning.
-* 2.0 hk 03/07/14 Added check for error status in the while loop that
-* checks for completion.
-* (XIicPs_MasterSendPolled function). CR# 762244, 764875.
-* Limited frequency set when 100KHz or 400KHz is
-* selected. This is a hardware limitation. CR#779290.
-* 2.1 hk 04/24/14 Fix for CR# 789821 to handle >14 byte transfers.
-* Explicitly reset CR and clear FIFO in Abort function
-* and state the same in the comments. CR# 784254.
-* Fix for CR# 761060 - provision for repeated start.
-* 2.2 hk 08/23/14 Slave monitor mode changes - clear FIFO, enable
-* read mode and clear transfer size register.
-* Disable NACK to avoid interrupts on each retry.
-* 2.3 sk 10/07/14 Repeated start feature deleted.
-* 3.0 sk 11/03/14 Modified TimeOut Register value to 0xFF
-* in XIicPs_Reset.
-* 12/06/14 Implemented Repeated start feature.
-* 01/31/15 Modified the code according to MISRAC 2012 Compliant.
-* 02/18/15 Implemented larger data transfer using repeated start
-* in Zynq UltraScale MP.
-*
-*
-*
-******************************************************************************/
-
-#ifndef XIICPS_H /* prevent circular inclusions */
-#define XIICPS_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xstatus.h"
-#include "xiicps_hw.h"
-#include "xplatform_info.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Configuration options
- *
- * The following options may be specified or retrieved for the device and
- * enable/disable additional features of the IIC. Each of the options
- * are bit fields, so more than one may be specified.
- *
- * @{
- */
-#define XIICPS_7_BIT_ADDR_OPTION 0x01U /**< 7-bit address mode */
-#define XIICPS_10_BIT_ADDR_OPTION 0x02U /**< 10-bit address mode */
-#define XIICPS_SLAVE_MON_OPTION 0x04U /**< Slave monitor mode */
-#define XIICPS_REP_START_OPTION 0x08U /**< Repeated Start */
-/*@}*/
-
-/** @name Callback events
- *
- * These constants specify the handler events that are passed to an application
- * event handler from the driver. These constants are bit masks such that
- * more than one event can be passed to the handler.
- *
- * @{
- */
-#define XIICPS_EVENT_COMPLETE_SEND 0x0001U /**< Transmit Complete Event*/
-#define XIICPS_EVENT_COMPLETE_RECV 0x0002U /**< Receive Complete Event*/
-#define XIICPS_EVENT_TIME_OUT 0x0004U /**< Transfer timed out */
-#define XIICPS_EVENT_ERROR 0x0008U /**< Receive error */
-#define XIICPS_EVENT_ARB_LOST 0x0010U /**< Arbitration lost */
-#define XIICPS_EVENT_NACK 0x0020U /**< NACK Received */
-#define XIICPS_EVENT_SLAVE_RDY 0x0040U /**< Slave ready */
-#define XIICPS_EVENT_RX_OVR 0x0080U /**< RX overflow */
-#define XIICPS_EVENT_TX_OVR 0x0100U /**< TX overflow */
-#define XIICPS_EVENT_RX_UNF 0x0200U /**< RX underflow */
-/*@}*/
-
-/** @name Role constants
- *
- * These constants are used to pass into the device setup routines to
- * set up the device according to transfer direction.
- */
-#define SENDING_ROLE 1 /**< Transfer direction is sending */
-#define RECVING_ROLE 0 /**< Transfer direction is receiving */
-
-/* Maximum transfer size */
-#define XIICPS_MAX_TRANSFER_SIZE (u32)(255U - 3U)
-
-/**************************** Type Definitions *******************************/
-
-/**
-* The handler data type allows the user to define a callback function to
-* respond to interrupt events in the system. This function is executed
-* in interrupt context, so amount of processing should be minimized.
-*
-* @param CallBackRef is the callback reference passed in by the upper
-* layer when setting the callback functions, and passed back to
-* the upper layer when the callback is invoked. Its type is
-* not important to the driver, so it is a void pointer.
-* @param StatusEvent indicates one or more status events that occurred.
-*/
-typedef void (*XIicPs_IntrHandler) (void *CallBackRef, u32 StatusEvent);
-
-/**
- * This typedef contains configuration information for the device.
- */
-typedef struct {
- u16 DeviceId; /**< Unique ID of device */
- u32 BaseAddress; /**< Base address of the device */
- u32 InputClockHz; /**< Input clock frequency */
-} XIicPs_Config;
-
-/**
- * The XIicPs driver instance data. The user is required to allocate a
- * variable of this type for each IIC device in the system. A pointer
- * to a variable of this type is then passed to the driver API functions.
- */
-typedef struct {
- XIicPs_Config Config; /* Configuration structure */
- u32 IsReady; /* Device is initialized and ready */
- u32 Options; /* Options set in the device */
-
- u8 *SendBufferPtr; /* Pointer to send buffer */
- u8 *RecvBufferPtr; /* Pointer to recv buffer */
- s32 SendByteCount; /* Number of bytes still expected to send */
- s32 RecvByteCount; /* Number of bytes still expected to receive */
- s32 CurrByteCount; /* No. of bytes expected in current transfer */
-
- s32 UpdateTxSize; /* If tx size register has to be updated */
- s32 IsSend; /* Whether master is sending or receiving */
- s32 IsRepeatedStart; /* Indicates if user set repeated start */
-
- XIicPs_IntrHandler StatusHandler; /* Event handler function */
- void *CallBackRef; /* Callback reference for event handler */
-} XIicPs;
-
-/***************** Macros (Inline Functions) Definitions *********************/
-/****************************************************************************/
-/*
-*
-* Place one byte into the transmit FIFO.
-*
-* @param InstancePtr is the instance of IIC
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XIicPs_SendByte(XIicPs *InstancePtr)
-*
-*****************************************************************************/
-#define XIicPs_SendByte(InstancePtr) \
-{ \
- u8 Data; \
- Data = *((InstancePtr)->SendBufferPtr); \
- XIicPs_Out32((InstancePtr)->Config.BaseAddress \
- + (u32)(XIICPS_DATA_OFFSET), \
- (u32)(Data)); \
- (InstancePtr)->SendBufferPtr += 1; \
- (InstancePtr)->SendByteCount -= 1;\
-}
-
-/****************************************************************************/
-/*
-*
-* Receive one byte from FIFO.
-*
-* @param InstancePtr is the instance of IIC
-*
-* @return None.
-*
-* @note C-Style signature:
-* u8 XIicPs_RecvByte(XIicPs *InstancePtr)
-*
-*****************************************************************************/
-#define XIicPs_RecvByte(InstancePtr) \
-{ \
- u8 *Data, Value; \
- Value = (u8)(XIicPs_In32((InstancePtr)->Config.BaseAddress \
- + (u32)XIICPS_DATA_OFFSET)); \
- Data = &Value; \
- *(InstancePtr)->RecvBufferPtr = *Data; \
- (InstancePtr)->RecvBufferPtr += 1; \
- (InstancePtr)->RecvByteCount --; \
-}
-
-/************************** Function Prototypes ******************************/
-
-/*
- * Function for configuration lookup, in xiicps_sinit.c
- */
-XIicPs_Config *XIicPs_LookupConfig(u16 DeviceId);
-
-/*
- * Functions for general setup, in xiicps.c
- */
-s32 XIicPs_CfgInitialize(XIicPs *InstancePtr, XIicPs_Config * ConfigPtr,
- u32 EffectiveAddr);
-
-void XIicPs_Abort(XIicPs *InstancePtr);
-void XIicPs_Reset(XIicPs *InstancePtr);
-
-s32 XIicPs_BusIsBusy(XIicPs *InstancePtr);
-s32 TransmitFifoFill(XIicPs *InstancePtr);
-
-/*
- * Functions for interrupts, in xiicps_intr.c
- */
-void XIicPs_SetStatusHandler(XIicPs *InstancePtr, void *CallBackRef,
- XIicPs_IntrHandler FunctionPtr);
-
-/*
- * Functions for device as master, in xiicps_master.c
- */
-void XIicPs_MasterSend(XIicPs *InstancePtr, u8 *MsgPtr, s32 ByteCount,
- u16 SlaveAddr);
-void XIicPs_MasterRecv(XIicPs *InstancePtr, u8 *MsgPtr, s32 ByteCount,
- u16 SlaveAddr);
-s32 XIicPs_MasterSendPolled(XIicPs *InstancePtr, u8 *MsgPtr, s32 ByteCount,
- u16 SlaveAddr);
-s32 XIicPs_MasterRecvPolled(XIicPs *InstancePtr, u8 *MsgPtr, s32 ByteCount,
- u16 SlaveAddr);
-void XIicPs_EnableSlaveMonitor(XIicPs *InstancePtr, u16 SlaveAddr);
-void XIicPs_DisableSlaveMonitor(XIicPs *InstancePtr);
-void XIicPs_MasterInterruptHandler(XIicPs *InstancePtr);
-
-/*
- * Functions for device as slave, in xiicps_slave.c
- */
-void XIicPs_SetupSlave(XIicPs *InstancePtr, u16 SlaveAddr);
-void XIicPs_SlaveSend(XIicPs *InstancePtr, u8 *MsgPtr, s32 ByteCount);
-void XIicPs_SlaveRecv(XIicPs *InstancePtr, u8 *MsgPtr, s32 ByteCount);
-s32 XIicPs_SlaveSendPolled(XIicPs *InstancePtr, u8 *MsgPtr, s32 ByteCount);
-s32 XIicPs_SlaveRecvPolled(XIicPs *InstancePtr, u8 *MsgPtr, s32 ByteCount);
-void XIicPs_SlaveInterruptHandler(XIicPs *InstancePtr);
-
-/*
- * Functions for selftest, in xiicps_selftest.c
- */
-s32 XIicPs_SelfTest(XIicPs *InstancePtr);
-
-/*
- * Functions for setting and getting data rate, in xiicps_options.c
- */
-s32 XIicPs_SetOptions(XIicPs *InstancePtr, u32 Options);
-s32 XIicPs_ClearOptions(XIicPs *InstancePtr, u32 Options);
-u32 XIicPs_GetOptions(XIicPs *InstancePtr);
-
-s32 XIicPs_SetSClk(XIicPs *InstancePtr, u32 FsclHz);
-u32 XIicPs_GetSClk(XIicPs *InstancePtr);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_hw.h
deleted file mode 100644
index 71b770ce4..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_hw.h
+++ /dev/null
@@ -1,380 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xiicps_hw.h
-*
-* This header file contains the hardware definition for an IIC device.
-* It includes register definitions and interface functions to read/write
-* the registers.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- -----------------------------------------------
-* 1.00a drg/jz 01/30/10 First release
-* 1.04a kpc 11/07/13 Added function prototype.
-* 3.0 sk 11/03/14 Modified the TimeOut Register value to 0xFF
-* 01/31/15 Modified the code according to MISRAC 2012 Compliant.
-*
-*
-******************************************************************************/
-#ifndef XIICPS_HW_H /* prevent circular inclusions */
-#define XIICPS_HW_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xil_io.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Register Map
- *
- * Register offsets for the IIC.
- * @{
- */
-#define XIICPS_CR_OFFSET 0x00U /**< 32-bit Control */
-#define XIICPS_SR_OFFSET 0x04U /**< Status */
-#define XIICPS_ADDR_OFFSET 0x08U /**< IIC Address */
-#define XIICPS_DATA_OFFSET 0x0CU /**< IIC FIFO Data */
-#define XIICPS_ISR_OFFSET 0x10U /**< Interrupt Status */
-#define XIICPS_TRANS_SIZE_OFFSET 0x14U /**< Transfer Size */
-#define XIICPS_SLV_PAUSE_OFFSET 0x18U /**< Slave monitor pause */
-#define XIICPS_TIME_OUT_OFFSET 0x1CU /**< Time Out */
-#define XIICPS_IMR_OFFSET 0x20U /**< Interrupt Enabled Mask */
-#define XIICPS_IER_OFFSET 0x24U /**< Interrupt Enable */
-#define XIICPS_IDR_OFFSET 0x28U /**< Interrupt Disable */
-/* @} */
-
-/** @name Control Register
- *
- * This register contains various control bits that
- * affects the operation of the IIC controller. Read/Write.
- * @{
- */
-
-#define XIICPS_CR_DIV_A_MASK 0x0000C000U /**< Clock Divisor A */
-#define XIICPS_CR_DIV_A_SHIFT 14U /**< Clock Divisor A shift */
-#define XIICPS_DIV_A_MAX 4U /**< Maximum value of Divisor A */
-#define XIICPS_CR_DIV_B_MASK 0x00003F00U /**< Clock Divisor B */
-#define XIICPS_CR_DIV_B_SHIFT 8U /**< Clock Divisor B shift */
-#define XIICPS_CR_CLR_FIFO_MASK 0x00000040U /**< Clear FIFO, auto clears*/
-#define XIICPS_CR_SLVMON_MASK 0x00000020U /**< Slave monitor mode */
-#define XIICPS_CR_HOLD_MASK 0x00000010U /**< Hold bus 1=Hold scl,
- 0=terminate transfer */
-#define XIICPS_CR_ACKEN_MASK 0x00000008U /**< Enable TX of ACK when
- Master receiver*/
-#define XIICPS_CR_NEA_MASK 0x00000004U /**< Addressing Mode 1=7 bit,
- 0=10 bit */
-#define XIICPS_CR_MS_MASK 0x00000002U /**< Master mode bit 1=Master,
- 0=Slave */
-#define XIICPS_CR_RD_WR_MASK 0x00000001U /**< Read or Write Master
- transfer 0=Transmitter,
- 1=Receiver*/
-#define XIICPS_CR_RESET_VALUE 0U /**< Reset value of the Control
- register */
-/* @} */
-
-/** @name IIC Status Register
- *
- * This register is used to indicate status of the IIC controller. Read only
- * @{
- */
-#define XIICPS_SR_BA_MASK 0x00000100U /**< Bus Active Mask */
-#define XIICPS_SR_RXOVF_MASK 0x00000080U /**< Receiver Overflow Mask */
-#define XIICPS_SR_TXDV_MASK 0x00000040U /**< Transmit Data Valid Mask */
-#define XIICPS_SR_RXDV_MASK 0x00000020U /**< Receiver Data Valid Mask */
-#define XIICPS_SR_RXRW_MASK 0x00000008U /**< Receive read/write Mask */
-/* @} */
-
-/** @name IIC Address Register
- *
- * Normal addressing mode uses add[6:0]. Extended addressing mode uses add[9:0].
- * A write access to this register always initiates a transfer if the IIC is in
- * master mode. Read/Write
- * @{
- */
-#define XIICPS_ADDR_MASK 0x000003FF /**< IIC Address Mask */
-/* @} */
-
-/** @name IIC Data Register
- *
- * When written to, the data register sets data to transmit. When read from, the
- * data register reads the last received byte of data. Read/Write
- * @{
- */
-#define XIICPS_DATA_MASK 0x000000FF /**< IIC Data Mask */
-/* @} */
-
-/** @name IIC Interrupt Registers
- *
- * IIC Interrupt Status Register
- *
- * This register holds the interrupt status flags for the IIC controller. Some
- * of the flags are level triggered
- * - i.e. are set as long as the interrupt condition exists. Other flags are
- * edge triggered, which means they are set one the interrupt condition occurs
- * then remain set until they are cleared by software.
- * The interrupts are cleared by writing a one to the interrupt bit position
- * in the Interrupt Status Register. Read/Write.
- *
- * IIC Interrupt Enable Register
- *
- * This register is used to enable interrupt sources for the IIC controller.
- * Writing a '1' to a bit in this register clears the corresponding bit in the
- * IIC Interrupt Mask register. Write only.
- *
- * IIC Interrupt Disable Register
- *
- * This register is used to disable interrupt sources for the IIC controller.
- * Writing a '1' to a bit in this register sets the corresponding bit in the
- * IIC Interrupt Mask register. Write only.
- *
- * IIC Interrupt Mask Register
- *
- * This register shows the enabled/disabled status of each IIC controller
- * interrupt source. A bit set to 1 will ignore the corresponding interrupt in
- * the status register. A bit set to 0 means the interrupt is enabled.
- * All mask bits are set and all interrupts are disabled after reset. Read only.
- *
- * All four registers have the same bit definitions. They are only defined once
- * for each of the Interrupt Enable Register, Interrupt Disable Register,
- * Interrupt Mask Register, and Interrupt Status Register
- * @{
- */
-
-#define XIICPS_IXR_ARB_LOST_MASK 0x00000200U /**< Arbitration Lost Interrupt
- mask */
-#define XIICPS_IXR_RX_UNF_MASK 0x00000080U /**< FIFO Recieve Underflow
- Interrupt mask */
-#define XIICPS_IXR_TX_OVR_MASK 0x00000040U /**< Transmit Overflow
- Interrupt mask */
-#define XIICPS_IXR_RX_OVR_MASK 0x00000020U /**< Receive Overflow Interrupt
- mask */
-#define XIICPS_IXR_SLV_RDY_MASK 0x00000010U /**< Monitored Slave Ready
- Interrupt mask */
-#define XIICPS_IXR_TO_MASK 0x00000008U /**< Transfer Time Out
- Interrupt mask */
-#define XIICPS_IXR_NACK_MASK 0x00000004U /**< NACK Interrupt mask */
-#define XIICPS_IXR_DATA_MASK 0x00000002U /**< Data Interrupt mask */
-#define XIICPS_IXR_COMP_MASK 0x00000001U /**< Transfer Complete
- Interrupt mask */
-#define XIICPS_IXR_DEFAULT_MASK 0x000002FFU /**< Default ISR Mask */
-#define XIICPS_IXR_ALL_INTR_MASK 0x000002FFU /**< All ISR Mask */
-/* @} */
-
-
-/** @name IIC Transfer Size Register
-*
-* The register's meaning varies according to the operating mode as follows:
-* - Master transmitter mode: number of data bytes still not transmitted minus
-* one
-* - Master receiver mode: number of data bytes that are still expected to be
-* received
-* - Slave transmitter mode: number of bytes remaining in the FIFO after the
-* master terminates the transfer
-* - Slave receiver mode: number of valid data bytes in the FIFO
-*
-* This register is cleared if CLR_FIFO bit in the control register is set.
-* Read/Write
-* @{
-*/
-#define XIICPS_TRANS_SIZE_MASK 0x0000003F /**< IIC Transfer Size Mask */
-#define XIICPS_FIFO_DEPTH 16 /**< Number of bytes in the FIFO */
-#define XIICPS_DATA_INTR_DEPTH 14 /**< Number of bytes at DATA intr */
-/* @} */
-
-
-/** @name IIC Slave Monitor Pause Register
-*
-* This register is associated with the slave monitor mode of the I2C interface.
-* It is meaningful only when the module is in master mode and bit SLVMON in the
-* control register is set.
-*
-* This register defines the pause interval between consecutive attempts to
-* address the slave once a write to an I2C address register is done by the
-* host. It represents the number of sclk cycles minus one between two attempts.
-*
-* The reset value of the register is 0, which results in the master repeatedly
-* trying to access the slave immediately after unsuccessful attempt.
-* Read/Write
-* @{
-*/
-#define XIICPS_SLV_PAUSE_MASK 0x0000000F /**< Slave monitor pause mask */
-/* @} */
-
-
-/** @name IIC Time Out Register
-*
-* The value of time out register represents the time out interval in number of
-* sclk cycles minus one.
-*
-* When the accessed slave holds the sclk line low for longer than the time out
-* period, thus prohibiting the I2C interface in master mode to complete the
-* current transfer, an interrupt is generated and TO interrupt flag is set.
-*
-* The reset value of the register is 0x1f.
-* Read/Write
-* @{
- */
-#define XIICPS_TIME_OUT_MASK 0x000000FFU /**< IIC Time Out mask */
-#define XIICPS_TO_RESET_VALUE 0x000000FFU /**< IIC Time Out reset value */
-/* @} */
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-#define XIicPs_In32 Xil_In32
-#define XIicPs_Out32 Xil_Out32
-
-/****************************************************************************/
-/**
-* Read an IIC register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to select the specific register.
-*
-* @return The value read from the register.
-*
-* @note C-Style signature:
-* u32 XIicPs_ReadReg(u32 BaseAddress. int RegOffset)
-*
-******************************************************************************/
-#define XIicPs_ReadReg(BaseAddress, RegOffset) \
- XIicPs_In32((BaseAddress) + (u32)(RegOffset))
-
-/***************************************************************************/
-/**
-* Write an IIC register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to select the specific register.
-* @param RegisterValue is the value to be written to the register.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XIicPs_WriteReg(u32 BaseAddress, int RegOffset, u32 RegisterValue)
-*
-******************************************************************************/
-#define XIicPs_WriteReg(BaseAddress, RegOffset, RegisterValue) \
- XIicPs_Out32((BaseAddress) + (u32)(RegOffset), (u32)(RegisterValue))
-
-/***************************************************************************/
-/**
-* Read the interrupt enable register.
-*
-* @param BaseAddress contains the base address of the device.
-*
-* @return Current bit mask that represents currently enabled interrupts.
-*
-* @note C-Style signature:
-* u32 XIicPs_ReadIER(u32 BaseAddress)
-*
-******************************************************************************/
-#define XIicPs_ReadIER(BaseAddress) \
- XIicPs_ReadReg((BaseAddress), XIICPS_IER_OFFSET)
-
-/***************************************************************************/
-/**
-* Write to the interrupt enable register.
-*
-* @param BaseAddress contains the base address of the device.
-*
-* @param IntrMask is the interrupts to be enabled.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XIicPs_EnabledInterrupts(u32 BaseAddress, u32 IntrMask)
-*
-******************************************************************************/
-#define XIicPs_EnableInterrupts(BaseAddress, IntrMask) \
- XIicPs_WriteReg((BaseAddress), XIICPS_IER_OFFSET, (IntrMask))
-
-/***************************************************************************/
-/**
-* Disable all interrupts.
-*
-* @param BaseAddress contains the base address of the device.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XIicPs_DisableAllInterrupts(u32 BaseAddress)
-*
-******************************************************************************/
-#define XIicPs_DisableAllInterrupts(BaseAddress) \
- XIicPs_WriteReg((BaseAddress), XIICPS_IDR_OFFSET, \
- XIICPS_IXR_ALL_INTR_MASK)
-
-/***************************************************************************/
-/**
-* Disable selected interrupts.
-*
-* @param BaseAddress contains the base address of the device.
-*
-* @param IntrMask is the interrupts to be disabled.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XIicPs_DisableInterrupts(u32 BaseAddress, u32 IntrMask)
-*
-******************************************************************************/
-#define XIicPs_DisableInterrupts(BaseAddress, IntrMask) \
- XIicPs_WriteReg((BaseAddress), XIICPS_IDR_OFFSET, \
- (IntrMask))
-
-/************************** Variable Definitions *****************************/
-
-/************************** Function Prototypes ******************************/
-/*
- * Perform reset operation to the I2c interface
- */
-void XIicPs_ResetHw(u32 BaseAddress);
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/Makefile
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/Makefile
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/Makefile
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps.c
index 6ea477bae..812c2ecdc 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps.c
@@ -33,6 +33,8 @@
/**
*
* @file xiicps.c
+* @addtogroup iicps_v3_0
+* @{
*
* Contains implementation of required functions for the XIicPs driver.
* See xiicps.h for detailed description of the device and driver.
@@ -327,3 +329,4 @@ s32 TransmitFifoFill(XIicPs *InstancePtr)
return InstancePtr->SendByteCount;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xiicps.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps.h
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xiicps.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps.h
index 9c6dc10eb..73ad5dc64 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xiicps.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps.h
@@ -33,6 +33,9 @@
/**
*
* @file xiicps.h
+* @addtogroup iicps_v3_0
+* @{
+* @details
*
* This is an implementation of IIC driver in the PS block. The device can
* be either a master or a slave on the IIC bus. This implementation supports
@@ -414,3 +417,4 @@ u32 XIicPs_GetSClk(XIicPs *InstancePtr);
#endif
#endif /* end of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_g.c
similarity index 90%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_g.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_g.c
index 51db30170..50f1c1413 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_g.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_g.c
@@ -1,61 +1,61 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Driver configuration
-*
-*******************************************************************/
-
-#include "xparameters.h"
-#include "xiicps.h"
-
-/*
-* The configuration table for devices
-*/
-
-XIicPs_Config XIicPs_ConfigTable[] =
-{
- {
- XPAR_PSU_I2C_0_DEVICE_ID,
- XPAR_PSU_I2C_0_BASEADDR,
- XPAR_PSU_I2C_0_I2C_CLK_FREQ_HZ
- },
- {
- XPAR_PSU_I2C_1_DEVICE_ID,
- XPAR_PSU_I2C_1_BASEADDR,
- XPAR_PSU_I2C_1_I2C_CLK_FREQ_HZ
- }
-};
-
-
+
+/*******************************************************************
+*
+* CAUTION: This file is automatically generated by HSI.
+* Version:
+* DO NOT EDIT.
+*
+* Copyright (C) 2010-2016 Xilinx, Inc. All Rights Reserved.*
+*Permission is hereby granted, free of charge, to any person obtaining a copy
+*of this software and associated documentation files (the Software), to deal
+*in the Software without restriction, including without limitation the rights
+*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*copies of the Software, and to permit persons to whom the Software is
+*furnished to do so, subject to the following conditions:
+*
+*The above copyright notice and this permission notice shall be included in
+*all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+*(a) running on a Xilinx device, or
+*(b) that interact with a Xilinx device through a bus or interconnect.
+*
+*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+*XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+*Except as contained in this notice, the name of the Xilinx shall not be used
+*in advertising or otherwise to promote the sale, use or other dealings in
+*this Software without prior written authorization from Xilinx.
+*
+
+*
+* Description: Driver configuration
+*
+*******************************************************************/
+
+#include "xparameters.h"
+#include "xiicps.h"
+
+/*
+* The configuration table for devices
+*/
+
+XIicPs_Config XIicPs_ConfigTable[] =
+{
+ {
+ XPAR_PSU_I2C_0_DEVICE_ID,
+ XPAR_PSU_I2C_0_BASEADDR,
+ XPAR_PSU_I2C_0_I2C_CLK_FREQ_HZ
+ },
+ {
+ XPAR_PSU_I2C_1_DEVICE_ID,
+ XPAR_PSU_I2C_1_BASEADDR,
+ XPAR_PSU_I2C_1_I2C_CLK_FREQ_HZ
+ }
+};
+
+
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_hw.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_hw.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_hw.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_hw.c
index e45101b8d..8b7a58fc6 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_hw.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_hw.c
@@ -33,6 +33,8 @@
/**
*
* @file xiicps_hw.c
+* @addtogroup iicps_v3_0
+* @{
*
* Contains implementation of required functions for providing the reset sequence
* to the i2c interface
@@ -106,3 +108,4 @@ void XIicPs_ResetHw(u32 BaseAddress)
/* Update the configuraqtion register with reset value */
XIicPs_WriteReg(BaseAddress, XIICPS_CR_OFFSET, 0x0U);
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xiicps_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_hw.h
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xiicps_hw.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_hw.h
index 71b770ce4..cec349928 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xiicps_hw.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_hw.h
@@ -33,6 +33,8 @@
/**
*
* @file xiicps_hw.h
+* @addtogroup iicps_v3_0
+* @{
*
* This header file contains the hardware definition for an IIC device.
* It includes register definitions and interface functions to read/write
@@ -378,3 +380,4 @@ void XIicPs_ResetHw(u32 BaseAddress);
#endif
#endif /* end of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_intr.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_intr.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_intr.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_intr.c
index b1c604f9a..de05b93b6 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_intr.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_intr.c
@@ -33,6 +33,8 @@
/**
*
* @file xiicps_intr.c
+* @addtogroup iicps_v3_0
+* @{
*
* Contains functions of the XIicPs driver for interrupt-driven transfers.
* See xiicps.h for a detailed description of the device and driver.
@@ -96,3 +98,4 @@ void XIicPs_SetStatusHandler(XIicPs *InstancePtr, void *CallBackRef,
InstancePtr->StatusHandler = FunctionPtr;
InstancePtr->CallBackRef = CallBackRef;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_master.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_master.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_master.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_master.c
index 249de73d7..d49feecdf 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_master.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_master.c
@@ -33,6 +33,8 @@
/**
*
* @file xiicps_master.c
+* @addtogroup iicps_v3_0
+* @{
*
* Handles master mode transfers.
*
@@ -137,14 +139,14 @@ void XIicPs_MasterSend(XIicPs *InstancePtr, u8 *MsgPtr, s32 ByteCount,
(void)TransmitFifoFill(InstancePtr);
+ XIicPs_EnableInterrupts(BaseAddr,
+ (u32)XIICPS_IXR_NACK_MASK | (u32)XIICPS_IXR_COMP_MASK |
+ (u32)XIICPS_IXR_ARB_LOST_MASK);
/*
* Do the address transfer to notify the slave.
*/
XIicPs_WriteReg(BaseAddr, XIICPS_ADDR_OFFSET, (u32)SlaveAddr);
- XIicPs_EnableInterrupts(BaseAddr,
- (u32)XIICPS_IXR_NACK_MASK | (u32)XIICPS_IXR_COMP_MASK |
- (u32)XIICPS_IXR_ARB_LOST_MASK);
}
/*****************************************************************************/
@@ -197,12 +199,6 @@ void XIicPs_MasterRecv(XIicPs *InstancePtr, u8 *MsgPtr, s32 ByteCount,
* Initialize for a master receiving role.
*/
(void)XIicPs_SetupMaster(InstancePtr, RECVING_ROLE);
-
- /*
- * Do the address transfer to signal the slave.
- */
- XIicPs_WriteReg(BaseAddr, XIICPS_ADDR_OFFSET, (u32)SlaveAddr);
-
/*
* Setup the transfer size register so the slave knows how much
* to send to us.
@@ -221,6 +217,11 @@ void XIicPs_MasterRecv(XIicPs *InstancePtr, u8 *MsgPtr, s32 ByteCount,
(u32)XIICPS_IXR_NACK_MASK | (u32)XIICPS_IXR_DATA_MASK |
(u32)XIICPS_IXR_RX_OVR_MASK | (u32)XIICPS_IXR_COMP_MASK |
(u32)XIICPS_IXR_ARB_LOST_MASK);
+ /*
+ * Do the address transfer to signal the slave.
+ */
+ XIicPs_WriteReg(BaseAddr, XIICPS_ADDR_OFFSET, (u32)SlaveAddr);
+
}
/*****************************************************************************/
@@ -983,3 +984,4 @@ static void MasterSendData(XIicPs *InstancePtr)
return;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_options.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_options.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_options.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_options.c
index a26bacac9..5d7427a48 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_options.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_options.c
@@ -33,6 +33,8 @@
/**
*
* @file xiicps_options.c
+* @addtogroup iicps_v3_0
+* @{
*
* Contains functions for the configuration of the XIccPs driver.
*
@@ -491,3 +493,4 @@ u32 XIicPs_GetSClk(XIicPs *InstancePtr)
return ActualFscl;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_selftest.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_selftest.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_selftest.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_selftest.c
index 0a3cf27e6..2d9e0e35e 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_selftest.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_selftest.c
@@ -33,6 +33,8 @@
/**
*
* @file xiicps_selftest.c
+* @addtogroup iicps_v3_0
+* @{
*
* This component contains the implementation of selftest functions for the
* XIicPs driver component.
@@ -127,3 +129,4 @@ s32 XIicPs_SelfTest(XIicPs *InstancePtr)
return (s32)XST_SUCCESS;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_sinit.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_sinit.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_sinit.c
index 726694062..40ee7733e 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_sinit.c
@@ -33,6 +33,8 @@
/**
*
* @file xiicps_sinit.c
+* @addtogroup iicps_v3_0
+* @{
*
* The implementation of the XIicPs component's static initialization
* functionality.
@@ -97,3 +99,4 @@ XIicPs_Config *XIicPs_LookupConfig(u16 DeviceId)
return (XIicPs_Config *)CfgPtr;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_slave.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_slave.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_slave.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_slave.c
index e1551a7a5..074b5ea2e 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_0/src/xiicps_slave.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/iicps_v3_1/src/xiicps_slave.c
@@ -32,6 +32,8 @@
/*****************************************************************************/
/**
* @file xiicps_slave.c
+* @addtogroup iicps_v3_0
+* @{
*
* Handles slave transfers
*
@@ -585,3 +587,4 @@ static s32 SlaveRecvData(XIicPs *InstancePtr)
return InstancePtr->RecvByteCount;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/Makefile
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/Makefile
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/Makefile
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/xipipsu.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/xipipsu.c
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/xipipsu.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/xipipsu.c
index 42ea2b583..f8f902330 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/xipipsu.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/xipipsu.c
@@ -33,6 +33,8 @@
/**
*
* @file xipipsu.c
+* @addtogroup ipipsu_v1_0
+* @{
*
* This file contains the implementation of the interface functions for XIpiPsu
* driver. Refer to the header file xipipsu.h for more detailed information.
@@ -43,6 +45,8 @@
* Ver Who Date Changes
* ----- ------ -------- ----------------------------------------------
* 1.00 mjr 03/15/15 First Release
+* 2.0 mjr 01/22/16 Fixed response buffer address
+* calculation. CR# 932582.
*
*
*****************************************************************************/
@@ -253,8 +257,8 @@ static u32* XIpiPsu_GetBufferAddress(XIpiPsu *InstancePtr, u32 SrcCpuMask,
+ (DestIndex * XIPIPSU_BUFFER_OFFSET_TARGET);
} else if (XIPIPSU_BUF_TYPE_RESP == BufferType) {
BufferAddr = XIPIPSU_MSG_RAM_BASE
- + (SrcIndex * XIPIPSU_BUFFER_OFFSET_GROUP)
- + (DestIndex * XIPIPSU_BUFFER_OFFSET_TARGET)
+ + (DestIndex * XIPIPSU_BUFFER_OFFSET_GROUP)
+ + (SrcIndex * XIPIPSU_BUFFER_OFFSET_TARGET)
+ (XIPIPSU_BUFFER_OFFSET_RESPONSE);
} else {
BufferAddr = 0U;
@@ -345,3 +349,4 @@ XStatus XIpiPsu_WriteMessage(XIpiPsu *InstancePtr, u32 TargetMask, u32 *MsgPtr,
return Status;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/xipipsu.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/xipipsu.h
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/xipipsu.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/xipipsu.h
index 81edd534d..7eb8e5469 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/xipipsu.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/xipipsu.h
@@ -32,6 +32,9 @@
/*****************************************************************************/
/**
* @file xipipsu.h
+* @addtogroup ipipsu_v1_0
+* @{
+* @details
*
* This is the header file for implementation of IPIPSU driver.
* Inter Processor Interrupt (IPI) is used for communication between
@@ -275,3 +278,4 @@ XStatus XIpiPsu_WriteMessage(XIpiPsu *InstancePtr, u32 DestCpuMask, u32 *MsgPtr,
u32 MsgLength, u8 BufType);
#endif /* XIPIPSU_H_ */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/xipipsu_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/xipipsu_g.c
similarity index 91%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/xipipsu_g.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/xipipsu_g.c
index d4fc2eb2e..6d32d1dc7 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/xipipsu_g.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/xipipsu_g.c
@@ -1,105 +1,105 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Driver configuration
-*
-*******************************************************************/
-
-#include "xparameters.h"
-#include "xipipsu.h"
-
-/*
-* The configuration table for devices
-*/
-
-XIpiPsu_Config XIpiPsu_ConfigTable[] =
-{
-
- {
- XPAR_PSU_IPI_0_DEVICE_ID,
- XPAR_PSU_IPI_0_BASE_ADDRESS,
- XPAR_PSU_IPI_0_BIT_MASK,
- XPAR_PSU_IPI_0_BUFFER_INDEX,
- XPAR_PSU_IPI_0_INT_ID,
- XPAR_XIPIPSU_NUM_TARGETS,
- {
-
- {
- XPAR_PSU_IPI_0_BIT_MASK,
- XPAR_PSU_IPI_0_BUFFER_INDEX
- },
- {
- XPAR_PSU_IPI_1_BIT_MASK,
- XPAR_PSU_IPI_1_BUFFER_INDEX
- },
- {
- XPAR_PSU_IPI_2_BIT_MASK,
- XPAR_PSU_IPI_2_BUFFER_INDEX
- },
- {
- XPAR_PSU_IPI_3_BIT_MASK,
- XPAR_PSU_IPI_3_BUFFER_INDEX
- },
- {
- XPAR_PSU_IPI_4_BIT_MASK,
- XPAR_PSU_IPI_4_BUFFER_INDEX
- },
- {
- XPAR_PSU_IPI_5_BIT_MASK,
- XPAR_PSU_IPI_5_BUFFER_INDEX
- },
- {
- XPAR_PSU_IPI_6_BIT_MASK,
- XPAR_PSU_IPI_6_BUFFER_INDEX
- },
- {
- XPAR_PSU_IPI_7_BIT_MASK,
- XPAR_PSU_IPI_7_BUFFER_INDEX
- },
- {
- XPAR_PSU_IPI_8_BIT_MASK,
- XPAR_PSU_IPI_8_BUFFER_INDEX
- },
- {
- XPAR_PSU_IPI_9_BIT_MASK,
- XPAR_PSU_IPI_9_BUFFER_INDEX
- },
- {
- XPAR_PSU_IPI_10_BIT_MASK,
- XPAR_PSU_IPI_10_BUFFER_INDEX
- }
- }
- }
-};
+
+/*******************************************************************
+*
+* CAUTION: This file is automatically generated by HSI.
+* Version:
+* DO NOT EDIT.
+*
+* Copyright (C) 2010-2016 Xilinx, Inc. All Rights Reserved.*
+*Permission is hereby granted, free of charge, to any person obtaining a copy
+*of this software and associated documentation files (the Software), to deal
+*in the Software without restriction, including without limitation the rights
+*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*copies of the Software, and to permit persons to whom the Software is
+*furnished to do so, subject to the following conditions:
+*
+*The above copyright notice and this permission notice shall be included in
+*all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+*(a) running on a Xilinx device, or
+*(b) that interact with a Xilinx device through a bus or interconnect.
+*
+*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+*XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+*Except as contained in this notice, the name of the Xilinx shall not be used
+*in advertising or otherwise to promote the sale, use or other dealings in
+*this Software without prior written authorization from Xilinx.
+*
+
+*
+* Description: Driver configuration
+*
+*******************************************************************/
+
+#include "xparameters.h"
+#include "xipipsu.h"
+
+/*
+* The configuration table for devices
+*/
+
+XIpiPsu_Config XIpiPsu_ConfigTable[] =
+{
+
+ {
+ XPAR_PSU_IPI_0_DEVICE_ID,
+ XPAR_PSU_IPI_0_BASE_ADDRESS,
+ XPAR_PSU_IPI_0_BIT_MASK,
+ XPAR_PSU_IPI_0_BUFFER_INDEX,
+ XPAR_PSU_IPI_0_INT_ID,
+ XPAR_XIPIPSU_NUM_TARGETS,
+ {
+
+ {
+ XPAR_PSU_IPI_0_BIT_MASK,
+ XPAR_PSU_IPI_0_BUFFER_INDEX
+ },
+ {
+ XPAR_PSU_IPI_1_BIT_MASK,
+ XPAR_PSU_IPI_1_BUFFER_INDEX
+ },
+ {
+ XPAR_PSU_IPI_2_BIT_MASK,
+ XPAR_PSU_IPI_2_BUFFER_INDEX
+ },
+ {
+ XPAR_PSU_IPI_3_BIT_MASK,
+ XPAR_PSU_IPI_3_BUFFER_INDEX
+ },
+ {
+ XPAR_PSU_IPI_4_BIT_MASK,
+ XPAR_PSU_IPI_4_BUFFER_INDEX
+ },
+ {
+ XPAR_PSU_IPI_5_BIT_MASK,
+ XPAR_PSU_IPI_5_BUFFER_INDEX
+ },
+ {
+ XPAR_PSU_IPI_6_BIT_MASK,
+ XPAR_PSU_IPI_6_BUFFER_INDEX
+ },
+ {
+ XPAR_PSU_IPI_7_BIT_MASK,
+ XPAR_PSU_IPI_7_BUFFER_INDEX
+ },
+ {
+ XPAR_PSU_IPI_8_BIT_MASK,
+ XPAR_PSU_IPI_8_BUFFER_INDEX
+ },
+ {
+ XPAR_PSU_IPI_9_BIT_MASK,
+ XPAR_PSU_IPI_9_BUFFER_INDEX
+ },
+ {
+ XPAR_PSU_IPI_10_BIT_MASK,
+ XPAR_PSU_IPI_10_BUFFER_INDEX
+ }
+ }
+ }
+};
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/xipipsu_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/xipipsu_hw.h
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/xipipsu_hw.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/xipipsu_hw.h
index 2f3fb0830..d24a8ea0a 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/xipipsu_hw.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/xipipsu_hw.h
@@ -32,6 +32,8 @@
/**
*
* @file xipipsu_hw.h
+* @addtogroup ipipsu_v1_0
+* @{
*
* This file contains macro definitions for low level HW related params
*
@@ -74,3 +76,4 @@
#define XIPIPSU_ALL_MASK 0x0F0F0301U
#endif /* XIPIPSU_HW_H_ */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/xipipsu_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/xipipsu_sinit.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/xipipsu_sinit.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/xipipsu_sinit.c
index b09bf7b98..26495c8dd 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v1_0/src/xipipsu_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ipipsu_v2_0/src/xipipsu_sinit.c
@@ -32,6 +32,8 @@
/**
*
* @file xipipsu_sinit.c
+* @addtogroup ipipsu_v1_0
+* @{
*
* The implementation of the XIpiPsu component's static initialization
* functionality.
@@ -85,3 +87,4 @@ XIpiPsu_Config *XIpiPsu_LookupConfig(u32 DeviceId)
return CfgPtr;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/Makefile
deleted file mode 100644
index 2e3955048..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/Makefile
+++ /dev/null
@@ -1,83 +0,0 @@
-#/******************************************************************************
-#*
-#* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-#*
-#* This file contains confidential and proprietary information of Xilinx, Inc.
-#* and is protected under U.S. and international copyright and other
-#* intellectual property laws.
-#*
-#* DISCLAIMER
-#* This disclaimer is not a license and does not grant any rights to the
-#* materials distributed herewith. Except as otherwise provided in a valid
-#* license issued to you by Xilinx, and to the maximum extent permitted by
-#* applicable law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND WITH ALL
-#* FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS,
-#* IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
-#* MERCHANTABILITY, NON- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE;
-#* and
-#* (2) Xilinx shall not be liable (whether in contract or tort, including
-#* negligence, or under any other theory of liability) for any loss or damage
-#* of any kind or nature related to, arising under or in connection with these
-#* materials, including for any direct, or any indirect, special, incidental,
-#* or consequential loss or damage (including loss of data, profits,
-#* goodwill, or any type of loss or damage suffered as a result of any
-#* action brought by a third party) even if such damage or loss was
-#* reasonably foreseeable or Xilinx had been advised of the possibility
-#* of the same.
-#*
-#* CRITICAL APPLICATIONS
-#* Xilinx products are not designed or intended to be fail- safe, or for use
-#* in any application requiring fail-safe performance, such as life-support
-#* or safety devices or systems, Class III medical devices, nuclear
-#* facilities, applications related to the deployment of airbags, or any
-#* other applications that could lead to death, personal injury, or severe
-#* property or environmental damage (individually and collectively,
-#* "Critical Applications"). Customer assumes the sole risk and liability
-#* of any use of Xilinx products in Critical Applications, subject only to
-#* applicable laws and regulations governing limitations on product liability.
-#*
-#* THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS PART
-#* OF THIS FILE AT ALL TIMES.
-#*
-#******************************************************************************/
-
-COMPILER=
-ARCHIVER=
-CP=cp
-COMPILER_FLAGS=
-EXTRA_COMPILER_FLAGS=
-LIB=libxil.a
-
-CC_FLAGS = $(COMPILER_FLAGS)
-ECC_FLAGS = $(EXTRA_COMPILER_FLAGS)
-
-RELEASEDIR=../../../lib
-INCLUDEDIR=../../../include
-INCLUDES=-I./. -I${INCLUDEDIR}
-
-OUTS = *.o
-
-LIBSOURCES:=*.c
-INCLUDEFILES:=*.h
-
-OBJECTS = $(addsuffix .o, $(basename $(wildcard *.c)))
-
-libs: banner xuartps_libs clean
-
-%.o: %.c
- ${COMPILER} $(CC_FLAGS) $(ECC_FLAGS) $(INCLUDES) -o $@ $<
-
-banner:
- echo "Compiling nandpsu"
-
-xuartps_libs: ${OBJECTS}
- $(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OBJECTS}
-
-.PHONY: include
-include: xuartps_includes
-
-xuartps_includes:
- ${CP} ${INCLUDEFILES} ${INCLUDEDIR}
-
-clean:
- rm -rf ${OBJECTS}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu.c
deleted file mode 100644
index 5c0346cc1..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu.c
+++ /dev/null
@@ -1,4195 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xnandpsu.c
-*
-* This file contains the implementation of the interface functions for
-* XNandPsu driver. Refer to the header file xnandpsu.h for more detailed
-* information.
-*
-* This module supports for NAND flash memory devices that conform to the
-* "Open NAND Flash Interface" (ONFI) 3.0 Specification. This modules
-* implements basic flash operations like read, write and erase.
-*
-* @note Driver has been renamed to nandpsu after change in
-* naming convention.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- ---------- -----------------------------------------------
-* 1.0 nm 05/06/2014 First release
-* 2.0 sb 01/12/2015 Removed Null checks for Buffer passed
-* as parameter to Read API's
-* - XNandPsu_Read()
-* - XNandPsu_ReadPage
-* Modified
-* - XNandPsu_SetFeature()
-* - XNandPsu_GetFeature()
-* and made them public.
-* Removed Failure Return for BCF Error check in
-* XNandPsu_ReadPage() and added BCH_Error counter
-* in the instance pointer structure.
-* Added XNandPsu_Prepare_Cmd API
-* Replaced
-* - XNandPsu_IntrStsEnable
-* - XNandPsu_IntrStsClear
-* - XNandPsu_IntrClear
-* - XNandPsu_SetProgramReg
-* with XNandPsu_WriteReg call
-* Modified xnandpsu.c file API's with above changes.
-* Corrected the program command for Set Feature API.
-* Modified
-* - XNandPsu_OnfiReadStatus
-* - XNandPsu_GetFeature
-* - XNandPsu_SetFeature
-* to add support for DDR mode.
-* Changed Convention for SLC/MLC
-* SLC --> HAMMING
-* MLC --> BCH
-* SlcMlc --> IsBCH
-* Removed extra DMA mode initialization from
-* the XNandPsu_CfgInitialize API.
-* Modified
-* - XNandPsu_SetEccAddrSize
-* ECC address now is calculated based upon the
-* size of spare area
-* Modified Block Erase API, removed clearing of
-* packet register before erase.
-* Clearing Data Interface Register before
-* XNandPsu_OnfiReset call.
-* Modified XNandPsu_ChangeTimingMode API supporting
-* SDR and NVDDR interface for timing modes 0 to 5.
-* Modified Bbt Signature and Version Offset value for
-* Oob and No-Oob region.
-*
-*
-******************************************************************************/
-
-/***************************** Include Files *********************************/
-#include "xnandpsu.h"
-#include "xnandpsu_bbm.h"
-/************************** Constant Definitions *****************************/
-
-const XNandPsu_EccMatrix EccMatrix[] = {
- /*
- * 512 byte page
- */
- {XNANDPSU_PAGE_SIZE_512, 9U, 1U, XNANDPSU_HAMMING, 0x20DU, 0x3U},
- {XNANDPSU_PAGE_SIZE_512, 9U, 4U, XNANDPSU_BCH, 0x209U, 0x7U},
- {XNANDPSU_PAGE_SIZE_512, 9U, 8U, XNANDPSU_BCH, 0x203U, 0xDU},
- /*
- * 2K byte page
- */
- {XNANDPSU_PAGE_SIZE_2K, 9U, 1U, XNANDPSU_HAMMING, 0x834U, 0xCU},
- {XNANDPSU_PAGE_SIZE_2K, 9U, 4U, XNANDPSU_BCH, 0x826U, 0x1AU},
- {XNANDPSU_PAGE_SIZE_2K, 9U, 8U, XNANDPSU_BCH, 0x80cU, 0x34U},
- {XNANDPSU_PAGE_SIZE_2K, 9U, 12U, XNANDPSU_BCH, 0x822U, 0x4EU},
- {XNANDPSU_PAGE_SIZE_2K, 10U, 24U, XNANDPSU_BCH, 0x81cU, 0x54U},
- /*
- * 4K byte page
- */
- {XNANDPSU_PAGE_SIZE_4K, 9U, 1U, XNANDPSU_HAMMING, 0x1068U, 0x18U},
- {XNANDPSU_PAGE_SIZE_4K, 9U, 4U, XNANDPSU_BCH, 0x104cU, 0x34U},
- {XNANDPSU_PAGE_SIZE_4K, 9U, 8U, XNANDPSU_BCH, 0x1018U, 0x68U},
- {XNANDPSU_PAGE_SIZE_4K, 9U, 12U, XNANDPSU_BCH, 0x1044U, 0x9CU},
- {XNANDPSU_PAGE_SIZE_4K, 10U, 24U, XNANDPSU_BCH, 0x1038U, 0xA8U},
- /*
- * 8K byte page
- */
- {XNANDPSU_PAGE_SIZE_8K, 9U, 1U, XNANDPSU_HAMMING, 0x20d0U, 0x30U},
- {XNANDPSU_PAGE_SIZE_8K, 9U, 4U, XNANDPSU_BCH, 0x2098U, 0x68U},
- {XNANDPSU_PAGE_SIZE_8K, 9U, 8U, XNANDPSU_BCH, 0x2030U, 0xD0U},
- {XNANDPSU_PAGE_SIZE_8K, 9U, 12U, XNANDPSU_BCH, 0x2088U, 0x138U},
- {XNANDPSU_PAGE_SIZE_8K, 10U, 24U, XNANDPSU_BCH, 0x2070U, 0x150U},
- /*
- * 16K byte page
- */
- {XNANDPSU_PAGE_SIZE_16K, 9U, 1U, XNANDPSU_HAMMING, 0x4460U, 0x60U},
- {XNANDPSU_PAGE_SIZE_16K, 9U, 4U, XNANDPSU_BCH, 0x43f0U, 0xD0U},
- {XNANDPSU_PAGE_SIZE_16K, 9U, 8U, XNANDPSU_BCH, 0x4320U, 0x1A0U},
- {XNANDPSU_PAGE_SIZE_16K, 9U, 12U, XNANDPSU_BCH, 0x4250U, 0x270U},
- {XNANDPSU_PAGE_SIZE_16K, 10U, 24U, XNANDPSU_BCH, 0x4220U, 0x2A0U}
-};
-
-/**************************** Type Definitions *******************************/
-static u8 isQemuPlatform = 0U;
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/************************** Function Prototypes ******************************/
-
-static s32 XNandPsu_FlashInit(XNandPsu *InstancePtr);
-
-static void XNandPsu_InitGeometry(XNandPsu *InstancePtr, OnfiParamPage *Param);
-
-static void XNandPsu_InitFeatures(XNandPsu *InstancePtr, OnfiParamPage *Param);
-
-static s32 XNandPsu_PollRegTimeout(XNandPsu *InstancePtr, u32 RegOffset,
- u32 Mask, u32 Timeout);
-
-static void XNandPsu_SetPktSzCnt(XNandPsu *InstancePtr, u32 PktSize,
- u32 PktCount);
-
-static void XNandPsu_SetPageColAddr(XNandPsu *InstancePtr, u32 Page, u16 Col);
-
-static void XNandPsu_SetPageSize(XNandPsu *InstancePtr);
-
-static void XNandPsu_SetBusWidth(XNandPsu *InstancePtr);
-
-static void XNandPsu_SelectChip(XNandPsu *InstancePtr, u32 Target);
-
-static s32 XNandPsu_OnfiReset(XNandPsu *InstancePtr, u32 Target);
-
-static s32 XNandPsu_OnfiReadStatus(XNandPsu *InstancePtr, u32 Target,
- u16 *OnfiStatus);
-
-static s32 XNandPsu_OnfiReadId(XNandPsu *InstancePtr, u32 Target, u8 IdAddr,
- u32 IdLen, u8 *Buf);
-
-static s32 XNandPsu_OnfiReadParamPage(XNandPsu *InstancePtr, u32 Target,
- u8 *Buf);
-
-static s32 XNandPsu_ProgramPage(XNandPsu *InstancePtr, u32 Target, u32 Page,
- u32 Col, u8 *Buf);
-
-static s32 XNandPsu_ReadPage(XNandPsu *InstancePtr, u32 Target, u32 Page,
- u32 Col, u8 *Buf);
-
-static s32 XNandPsu_CheckOnDie(XNandPsu *InstancePtr, OnfiParamPage *Param);
-
-static void XNandPsu_SetEccAddrSize(XNandPsu *InstancePtr);
-
-static s32 XNandPsu_ChangeReadColumn(XNandPsu *InstancePtr, u32 Target,
- u32 Col, u32 PktSize, u32 PktCount,
- u8 *Buf);
-
-static s32 XNandPsu_ChangeWriteColumn(XNandPsu *InstancePtr, u32 Target,
- u32 Col, u32 PktSize, u32 PktCount,
- u8 *Buf);
-
-static s32 XNandPsu_InitExtEcc(XNandPsu *InstancePtr, OnfiExtPrmPage *ExtPrm);
-
-/*****************************************************************************/
-/**
-*
-* This function initializes a specific XNandPsu instance. This function must
-* be called prior to using the NAND flash device to read or write any data.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param ConfigPtr points to XNandPsu device configuration structure.
-* @param EffectiveAddr is the base address of NAND flash controller.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if fail.
-*
-* @note The user needs to first call the XNandPsu_LookupConfig() API
-* which returns the Configuration structure pointer which is
-* passed as a parameter to the XNandPsu_CfgInitialize() API.
-*
-******************************************************************************/
-s32 XNandPsu_CfgInitialize(XNandPsu *InstancePtr, XNandPsu_Config *ConfigPtr,
- u32 EffectiveAddr)
-{
- s32 Status = XST_FAILURE;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(ConfigPtr != NULL);
-
- /*
- * Initialize InstancePtr Config structure
- */
- InstancePtr->Config.DeviceId = ConfigPtr->DeviceId;
- InstancePtr->Config.BaseAddress = EffectiveAddr;
- /*
- * Operate in Polling Mode
- */
- InstancePtr->Mode = XNANDPSU_POLLING;
- /*
- * Enable MDMA mode by default
- */
- InstancePtr->DmaMode = XNANDPSU_MDMA;
- InstancePtr->IsReady = XIL_COMPONENT_IS_READY;
-
- /*
- * Temporary hack for disabling the ecc on qemu as currently there
- * is no support in the utility for writing images with ecc enabled.
- */
- #define CSU_VER_REG 0xFFCA0044U
- #define CSU_VER_PLATFORM_MASK 0xF000U
- #define CSU_VER_PLATFORM_QEMU_VAL 0x3000U
- if ((*(u32 *)CSU_VER_REG & CSU_VER_PLATFORM_MASK) ==
- CSU_VER_PLATFORM_QEMU_VAL) {
- isQemuPlatform = 1U;
- }
- /*
- * Initialize the NAND flash targets
- */
- Status = XNandPsu_FlashInit(InstancePtr);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Flash init failed\r\n",__func__);
-#endif
- goto Out;
- }
- /*
- * Set ECC mode
- */
- if (InstancePtr->Features.EzNand != 0U) {
- InstancePtr->EccMode = XNANDPSU_EZNAND;
- } else if (InstancePtr->Features.OnDie != 0U) {
- InstancePtr->EccMode = XNANDPSU_ONDIE;
- } else {
- InstancePtr->EccMode = XNANDPSU_HWECC;
- }
-
- if (isQemuPlatform != 0U) {
- InstancePtr->EccMode = XNANDPSU_NONE;
- goto Out;
- }
-
- /*
- * Initialize Ecc Error flip counters
- */
- InstancePtr->Ecc_Stat_PerPage_flips = 0U;
- InstancePtr->Ecc_Stats_total_flips = 0U;
-
- /*
- * Scan for the bad block table(bbt) stored in the flash & load it in
- * memory(RAM). If bbt is not found, create bbt by scanning factory
- * marked bad blocks and store it in last good blocks of flash.
- */
- XNandPsu_InitBbtDesc(InstancePtr);
- Status = XNandPsu_ScanBbt(InstancePtr);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: BBT scan failed\r\n",__func__);
-#endif
- goto Out;
- }
-
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function initializes the NAND flash and gets the geometry information.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-static s32 XNandPsu_FlashInit(XNandPsu *InstancePtr)
-{
- u32 Target;
- u8 Id[ONFI_SIG_LEN] = {0U};
- OnfiParamPage Param = {0U};
- s32 Status = XST_FAILURE;
- u32 Index;
- u32 Crc;
- u32 PrmPgOff;
- u32 PrmPgLen;
- OnfiExtPrmPage ExtParam __attribute__ ((aligned(64)));
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- /*
- * Clear Data Interface Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_DATA_INTF_OFFSET, 0U);
-
- /* Clear DMA Buffer Boundary Register */
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DMA_BUF_BND_OFFSET, 0U);
-
- for (Target = 0U; Target < XNANDPSU_MAX_TARGETS; Target++) {
- /*
- * Reset the Target
- */
- Status = XNandPsu_OnfiReset(InstancePtr, Target);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- /*
- * Read ONFI ID
- */
- Status = XNandPsu_OnfiReadId(InstancePtr, Target,
- ONFI_READ_ID_ADDR,
- ONFI_SIG_LEN,
- (u8 *)&Id[0]);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
-
- if (!IS_ONFI(Id)) {
- if (Target == 0U) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: ONFI ID doesn't match\r\n",
- __func__);
-#endif
- Status = XST_FAILURE;
- goto Out;
- }
- }
-
- /* Read Parameter Page */
- for(Index = 0U; Index < ONFI_MND_PRM_PGS; Index++) {
- if (Index == 0U) {
- Status = XNandPsu_OnfiReadParamPage(InstancePtr,
- Target, (u8 *)&Param);
- } else {
- PrmPgOff = Index * ONFI_PRM_PG_LEN;
- PrmPgLen = ONFI_PRM_PG_LEN;
- Status = XNandPsu_ChangeReadColumn(InstancePtr,
- Target,PrmPgOff,
- ONFI_PRM_PG_LEN, 1U,
- (u8 *) &Param);
- }
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- /* Check CRC */
- Crc = XNandPsu_OnfiParamPageCrc((u8*)&Param, 0U,
- ONFI_CRC_LEN);
- if (Crc != Param.Crc) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: ONFI parameter page (%d) crc check failed\r\n",
- __func__, Index);
-#endif
- continue;
- } else {
- break;
- }
- }
- if (Index >= ONFI_MND_PRM_PGS) {
- Status = XST_FAILURE;
- goto Out;
- }
- /* Fill Geometry for the first target */
- if (Target == 0U) {
- XNandPsu_InitGeometry(InstancePtr, &Param);
- XNandPsu_InitFeatures(InstancePtr, &Param);
- if ((!InstancePtr->Features.EzNand) != 0U) {
- Status =XNandPsu_CheckOnDie(InstancePtr,&Param);
- if (Status != XST_SUCCESS) {
- InstancePtr->Features.OnDie = 0U;
- }
- }
- if (isQemuPlatform != 0U) {
- InstancePtr->Geometry.NumTargets++;
- break;
- }
- if ((InstancePtr->Geometry.NumBitsECC == 0xFFU) &&
- (InstancePtr->Features.ExtPrmPage != 0U)) {
- /* ONFI 3.1 section 5.7.1.6 & 5.7.1.7 */
- PrmPgLen = (u32)Param.ExtParamPageLen * 16U;
- PrmPgOff = (u32)((u32)Param.NumOfParamPages *
- ONFI_PRM_PG_LEN) +
- (Index * (u32)PrmPgLen);
- Status = XNandPsu_ChangeReadColumn(
- InstancePtr,
- Target,
- PrmPgOff,
- PrmPgLen, 1U,
- (u8 *)(void *)&ExtParam);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- /*
- * Check CRC
- */
- Crc = XNandPsu_OnfiParamPageCrc(
- (u8 *)&ExtParam,
- 2U,
- PrmPgLen);
- if (Crc != ExtParam.Crc) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: ONFI extended parameter page (%d) crc check failed\r\n",
- __func__, Index);
-#endif
- Status = XST_FAILURE;
- goto Out;
- }
- /*
- * Initialize Extended ECC info
- */
- Status = XNandPsu_InitExtEcc(
- InstancePtr,
- &ExtParam);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Init extended ecc failed\r\n",__func__);
-#endif
- goto Out;
- }
- }
- /* Configure ECC settings */
- XNandPsu_SetEccAddrSize(InstancePtr);
- }
- InstancePtr->Geometry.NumTargets++;
- }
- /*
- * Calculate total number of blocks and total size of flash
- */
- InstancePtr->Geometry.NumPages = InstancePtr->Geometry.NumTargets *
- InstancePtr->Geometry.NumTargetPages;
- InstancePtr->Geometry.NumBlocks = InstancePtr->Geometry.NumTargets *
- InstancePtr->Geometry.NumTargetBlocks;
- InstancePtr->Geometry.DeviceSize =
- (u64)InstancePtr->Geometry.NumTargets *
- InstancePtr->Geometry.TargetSize;
-
- Status = XST_SUCCESS;
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function initializes the geometry information from ONFI parameter page.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Param is pointer to the ONFI parameter page.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-static void XNandPsu_InitGeometry(XNandPsu *InstancePtr, OnfiParamPage *Param)
-{
- /*
- * Assert the input arguments.
- */
- Xil_AssertVoid(Param != NULL);
-
- InstancePtr->Geometry.BytesPerPage = Param->BytesPerPage;
- InstancePtr->Geometry.SpareBytesPerPage = Param->SpareBytesPerPage;
- InstancePtr->Geometry.PagesPerBlock = Param->PagesPerBlock;
- InstancePtr->Geometry.BlocksPerLun = Param->BlocksPerLun;
- InstancePtr->Geometry.NumLuns = Param->NumLuns;
- InstancePtr->Geometry.RowAddrCycles = Param->AddrCycles & 0xFU;
- InstancePtr->Geometry.ColAddrCycles = (Param->AddrCycles >> 4U) & 0xFU;
- InstancePtr->Geometry.NumBitsPerCell = Param->BitsPerCell;
- InstancePtr->Geometry.NumBitsECC = Param->EccBits;
- InstancePtr->Geometry.BlockSize = (Param->PagesPerBlock *
- Param->BytesPerPage);
- InstancePtr->Geometry.NumTargetBlocks = (Param->BlocksPerLun *
- (u32)Param->NumLuns);
- InstancePtr->Geometry.NumTargetPages = (Param->BlocksPerLun *
- (u32)Param->NumLuns *
- Param->PagesPerBlock);
- InstancePtr->Geometry.TargetSize = ((u64)Param->BlocksPerLun *
- (u64)Param->NumLuns *
- (u64)Param->PagesPerBlock *
- (u64)Param->BytesPerPage);
- InstancePtr->Geometry.EccCodeWordSize = 9U; /* 2 power of 9 = 512 */
-
-#ifdef XNANDPSU_DEBUG
- xil_printf("Manufacturer: %s\r\n", Param->DeviceManufacturer);
- xil_printf("Device Model: %s\r\n", Param->DeviceModel);
- xil_printf("Jedec ID: 0x%x\r\n", Param->JedecManufacturerId);
- xil_printf("Bytes Per Page: 0x%x\r\n", Param->BytesPerPage);
- xil_printf("Spare Bytes Per Page: 0x%x\r\n", Param->SpareBytesPerPage);
- xil_printf("Pages Per Block: 0x%x\r\n", Param->PagesPerBlock);
- xil_printf("Blocks Per LUN: 0x%x\r\n", Param->BlocksPerLun);
- xil_printf("Number of LUNs: 0x%x\r\n", Param->NumLuns);
- xil_printf("Number of bits per cell: 0x%x\r\n", Param->BitsPerCell);
- xil_printf("Number of ECC bits: 0x%x\r\n", Param->EccBits);
- xil_printf("Block Size: 0x%x\r\n", InstancePtr->Geometry.BlockSize);
-
- xil_printf("Number of Target Blocks: 0x%x\r\n",
- InstancePtr->Geometry.NumTargetBlocks);
- xil_printf("Number of Target Pages: 0x%x\r\n",
- InstancePtr->Geometry.NumTargetPages);
-
-#endif
-}
-
-/*****************************************************************************/
-/**
-*
-* This function initializes the feature list from ONFI parameter page.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Param is pointer to ONFI parameter page buffer.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-static void XNandPsu_InitFeatures(XNandPsu *InstancePtr, OnfiParamPage *Param)
-{
- /*
- * Assert the input arguments.
- */
- Xil_AssertVoid(Param != NULL);
-
- InstancePtr->Features.BusWidth = ((Param->Features & (1U << 0U)) != 0U) ?
- XNANDPSU_BUS_WIDTH_16 :
- XNANDPSU_BUS_WIDTH_8;
- InstancePtr->Features.NvDdr = ((Param->Features & (1U << 5)) != 0U) ?
- 1U : 0U;
- InstancePtr->Features.EzNand = ((Param->Features & (1U << 9)) != 0U) ?
- 1U : 0U;
- InstancePtr->Features.ExtPrmPage = ((Param->Features & (1U << 7)) != 0U) ?
- 1U : 0U;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function checks if the flash supports on-die ECC.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Param is pointer to ONFI parameter page.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-static s32 XNandPsu_CheckOnDie(XNandPsu *InstancePtr, OnfiParamPage *Param)
-{
- s32 Status = XST_FAILURE;
- u8 JedecId[2] = {0U};
- u8 EccSetFeature[4] = {0x08U, 0x00U, 0x00U, 0x00U};
- u8 EccGetFeature[4] ={0U};
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(Param != NULL);
-
- /*
- * Check if this flash supports On-Die ECC.
- * For more information, refer to Micron TN2945.
- * Micron Flash: MT29F1G08ABADA, MT29F1G08ABBDA
- * MT29F1G16ABBDA,
- * MT29F2G08ABBEA, MT29F2G16ABBEA,
- * MT29F2G08ABAEA, MT29F2G16ABAEA,
- * MT29F4G08ABBDA, MT29F4G16ABBDA,
- * MT29F4G08ABADA, MT29F4G16ABADA,
- * MT29F8G08ADBDA, MT29F8G16ADBDA,
- * MT29F8G08ADADA, MT29F8G16ADADA
- */
-
- /*
- * Read JEDEC ID
- */
- Status = XNandPsu_OnfiReadId(InstancePtr, 0U, 0x00U, 2U, &JedecId[0]);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
-
- if ((JedecId[0] == 0x2CU) &&
- /*
- * 1 Gb flash devices
- */
- ((JedecId[1] == 0xF1U) ||
- (JedecId[1] == 0xA1U) ||
- (JedecId[1] == 0xB1U) ||
- /*
- * 2 Gb flash devices
- */
- (JedecId[1] == 0xAAU) ||
- (JedecId[1] == 0xBAU) ||
- (JedecId[1] == 0xDAU) ||
- (JedecId[1] == 0xCAU) ||
- /*
- * 4 Gb flash devices
- */
- (JedecId[1] == 0xACU) ||
- (JedecId[1] == 0xBCU) ||
- (JedecId[1] == 0xDCU) ||
- (JedecId[1] == 0xCCU) ||
- /*
- * 8 Gb flash devices
- */
- (JedecId[1] == 0xA3U) ||
- (JedecId[1] == 0xB3U) ||
- (JedecId[1] == 0xD3U) ||
- (JedecId[1] == 0xC3U))) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Ondie flash detected, jedec id 0x%x 0x%x\r\n",
- __func__, JedecId[0], JedecId[1]);
-#endif
- /*
- * On-Die Set Feature
- */
- Status = XNandPsu_SetFeature(InstancePtr, 0U, 0x90U,
- &EccSetFeature[0]);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Ondie set_feature failed\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Check to see if ECC feature is set
- */
- Status = XNandPsu_GetFeature(InstancePtr, 0U, 0x90U,
- &EccGetFeature[0]);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Ondie get_feature failed\r\n",
- __func__);
-#endif
- goto Out;
- }
- if ((EccGetFeature[0] & 0x08U) != 0U) {
- InstancePtr->Features.OnDie = 1U;
- Status = XST_SUCCESS;
- }
- } else {
- /*
- * On-Die flash not found
- */
- Status = XST_FAILURE;
- }
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function enables DMA mode of controller operation.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-void XNandPsu_EnableDmaMode(XNandPsu *InstancePtr)
-{
- /*
- * Assert the input arguments.
- */
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- InstancePtr->DmaMode = XNANDPSU_MDMA;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function disables DMA mode of driver/controller operation.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-void XNandPsu_DisableDmaMode(XNandPsu *InstancePtr)
-{
- /*
- * Assert the input arguments.
- */
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- InstancePtr->DmaMode = XNANDPSU_PIO;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function enables ECC mode of driver/controller operation.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-void XNandPsu_EnableEccMode(XNandPsu *InstancePtr)
-{
- /*
- * Assert the input arguments.
- */
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- InstancePtr->EccMode = XNANDPSU_HWECC;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function disables ECC mode of driver/controller operation.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-void XNandPsu_DisableEccMode(XNandPsu *InstancePtr)
-{
- /*
- * Assert the input arguments.
- */
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- InstancePtr->EccMode = XNANDPSU_NONE;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function enables storing bbt version in oob area.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-void XNandPsu_EnableBbtOobMode(XNandPsu *InstancePtr)
-{
- /*
- * Assert the input arguments.
- */
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- InstancePtr->BbtDesc.Option = XNANDPSU_BBT_OOB;
- InstancePtr->BbtMirrorDesc.Option = XNANDPSU_BBT_OOB;
- /*
- * Setting the Signature and Version Offset
- */
- InstancePtr->BbtDesc.SigOffset = XNANDPSU_BBT_DESC_SIG_OFFSET;
- InstancePtr->BbtMirrorDesc.SigOffset = XNANDPSU_BBT_DESC_SIG_OFFSET;
- InstancePtr->BbtDesc.VerOffset = XNANDPSU_BBT_DESC_VER_OFFSET;
- InstancePtr->BbtMirrorDesc.VerOffset = XNANDPSU_BBT_DESC_VER_OFFSET;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function enables storing bbt version in no oob area i.e. page memory.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-void XNandPsu_DisableBbtOobMode(XNandPsu *InstancePtr)
-{
- /*
- * Assert the input arguments.
- */
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- InstancePtr->BbtDesc.Option = XNANDPSU_BBT_NO_OOB;
- InstancePtr->BbtMirrorDesc.Option = XNANDPSU_BBT_NO_OOB;
- /*
- * Setting the Signature and Version Offset
- */
- InstancePtr->BbtDesc.SigOffset = XNANDPSU_NO_OOB_BBT_DESC_SIG_OFFSET;
- InstancePtr->BbtMirrorDesc.SigOffset =
- XNANDPSU_NO_OOB_BBT_DESC_SIG_OFFSET;
- InstancePtr->BbtDesc.VerOffset = XNANDPSU_NO_OOB_BBT_DESC_VER_OFFSET;
- InstancePtr->BbtMirrorDesc.VerOffset =
- XNANDPSU_NO_OOB_BBT_DESC_VER_OFFSET;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function polls for a register bit set status till the timeout.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param RegOffset is the offset of register.
-* @param Mask is the bitmask.
-* @param Timeout is the timeout value.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-static s32 XNandPsu_PollRegTimeout(XNandPsu *InstancePtr, u32 RegOffset,
- u32 Mask, u32 Timeout)
-{
- s32 Status = XST_FAILURE;
- volatile u32 RegVal;
- u32 TimeoutVar = Timeout;
-
- while (TimeoutVar > 0U) {
- RegVal = XNandPsu_ReadReg(InstancePtr->Config.BaseAddress,
- RegOffset);
- if ((RegVal & Mask) != 0U) {
- break;
- }
- TimeoutVar--;
- }
-
- if (TimeoutVar <= 0U) {
- Status = XST_FAILURE;
- } else {
- Status = XST_SUCCESS;
- }
-
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sets packet size and packet count values in packet register.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param PktSize is the packet size.
-* @param PktCount is the packet count.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-static void XNandPsu_SetPktSzCnt(XNandPsu *InstancePtr, u32 PktSize,
- u32 PktCount)
-{
- /*
- * Assert the input arguments.
- */
- Xil_AssertVoid(PktSize <= XNANDPSU_MAX_PKT_SIZE);
- Xil_AssertVoid(PktCount <= XNANDPSU_MAX_PKT_COUNT);
-
- /*
- * Update Packet Register with pkt size and count
- */
- XNandPsu_ReadModifyWrite(InstancePtr, XNANDPSU_PKT_OFFSET,
- ((u32)XNANDPSU_PKT_PKT_SIZE_MASK |
- (u32)XNANDPSU_PKT_PKT_CNT_MASK),
- ((PktSize & XNANDPSU_PKT_PKT_SIZE_MASK) |
- ((PktCount << XNANDPSU_PKT_PKT_CNT_SHIFT) &
- XNANDPSU_PKT_PKT_CNT_MASK)));
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sets Page and Column values in the Memory address registers.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Page is the page value.
-* @param Col is the column value.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-static void XNandPsu_SetPageColAddr(XNandPsu *InstancePtr, u32 Page, u16 Col)
-{
- /*
- * Program Memory Address Register 1
- */
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_MEM_ADDR1_OFFSET,
- ((Col & XNANDPSU_MEM_ADDR1_COL_ADDR_MASK) |
- ((Page << (u32)XNANDPSU_MEM_ADDR1_PG_ADDR_SHIFT) &
- XNANDPSU_MEM_ADDR1_PG_ADDR_MASK)));
- /*
- * Program Memory Address Register 2
- */
- XNandPsu_ReadModifyWrite(InstancePtr, XNANDPSU_MEM_ADDR2_OFFSET,
- XNANDPSU_MEM_ADDR2_MEM_ADDR_MASK,
- ((Page >> XNANDPSU_MEM_ADDR1_PG_ADDR_SHIFT) &
- XNANDPSU_MEM_ADDR2_MEM_ADDR_MASK));
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sets the size of page in Command Register.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-static void XNandPsu_SetPageSize(XNandPsu *InstancePtr)
-{
- u32 PageSizeMask = 0;
- u32 PageSize = InstancePtr->Geometry.BytesPerPage;
-
- /*
- * Calculate page size mask
- */
- switch(PageSize) {
- case XNANDPSU_PAGE_SIZE_512:
- PageSizeMask = (0U << XNANDPSU_CMD_PG_SIZE_SHIFT);
- break;
- case XNANDPSU_PAGE_SIZE_2K:
- PageSizeMask = (1U << XNANDPSU_CMD_PG_SIZE_SHIFT);
- break;
- case XNANDPSU_PAGE_SIZE_4K:
- PageSizeMask = (2U << XNANDPSU_CMD_PG_SIZE_SHIFT);
- break;
- case XNANDPSU_PAGE_SIZE_8K:
- PageSizeMask = (3U << XNANDPSU_CMD_PG_SIZE_SHIFT);
- break;
- case XNANDPSU_PAGE_SIZE_16K:
- PageSizeMask = (4U << XNANDPSU_CMD_PG_SIZE_SHIFT);
- break;
- case XNANDPSU_PAGE_SIZE_1K_16BIT:
- PageSizeMask = (5U << XNANDPSU_CMD_PG_SIZE_SHIFT);
- break;
- default:
- /*
- * Not supported
- */
- break;
- }
- /*
- * Update Command Register
- */
- XNandPsu_ReadModifyWrite(InstancePtr, XNANDPSU_CMD_OFFSET,
- XNANDPSU_CMD_PG_SIZE_MASK, PageSizeMask);
-}
-
-/*****************************************************************************/
-/**
-*
-* This function setup the Ecc Register.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-static void XNandPsu_SetEccAddrSize(XNandPsu *InstancePtr)
-{
- u32 PageSize = InstancePtr->Geometry.BytesPerPage;
- u32 CodeWordSize = InstancePtr->Geometry.EccCodeWordSize;
- u32 NumEccBits = InstancePtr->Geometry.NumBitsECC;
- u32 Index;
- u32 Found = 0U;
- u8 BchModeVal = 0U;
-
- for (Index = 0U; Index < (sizeof(EccMatrix)/sizeof(XNandPsu_EccMatrix));
- Index++) {
- if ((EccMatrix[Index].PageSize == PageSize) &&
- (EccMatrix[Index].CodeWordSize >= CodeWordSize)) {
- if (EccMatrix[Index].NumEccBits >= NumEccBits) {
- Found = Index;
- break;
- }
- else {
- Found = Index;
- }
- }
- }
-
- if (Found != 0U) {
- if(InstancePtr->Geometry.SpareBytesPerPage < 64U) {
- InstancePtr->EccCfg.EccAddr = PageSize;
- }
- else {
- InstancePtr->EccCfg.EccAddr = PageSize +
- (InstancePtr->Geometry.SpareBytesPerPage
- - EccMatrix[Found].EccSize);
- }
- InstancePtr->EccCfg.EccSize = EccMatrix[Found].EccSize;
- InstancePtr->EccCfg.NumEccBits = EccMatrix[Found].NumEccBits;
- InstancePtr->EccCfg.CodeWordSize =
- EccMatrix[Found].CodeWordSize;
-#ifdef XNANDPSU_DEBUG
- xil_printf("ECC: addr 0x%x size 0x%x numbits %d "
- "codesz %d\r\n",
- InstancePtr->EccCfg.EccAddr,
- InstancePtr->EccCfg.EccSize,
- InstancePtr->EccCfg.NumEccBits,
- InstancePtr->EccCfg.CodeWordSize);
-#endif
- if (EccMatrix[Found].IsBCH == XNANDPSU_HAMMING) {
- InstancePtr->EccCfg.IsBCH = 0U;
- } else {
- InstancePtr->EccCfg.IsBCH = 1U;
- }
- /*
- * Write ECC register
- */
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- (u32)XNANDPSU_ECC_OFFSET,
- ((u32)InstancePtr->EccCfg.EccAddr |
- ((u32)InstancePtr->EccCfg.EccSize << (u32)16) |
- ((u32)InstancePtr->EccCfg.IsBCH << (u32)27)));
-
- if (EccMatrix[Found].IsBCH == XNANDPSU_BCH) {
- /*
- * Write memory address register 2
- */
- switch(InstancePtr->EccCfg.NumEccBits) {
- case 16U:
- BchModeVal = 0x0U;
- break;
- case 12U:
- BchModeVal = 0x1U;
- break;
- case 8U:
- BchModeVal = 0x2U;
- break;
- case 4U:
- BchModeVal = 0x3U;
- break;
- case 24U:
- BchModeVal = 0x4U;
- break;
- default:
- BchModeVal = 0x0U;
- }
- XNandPsu_ReadModifyWrite(InstancePtr,
- XNANDPSU_MEM_ADDR2_OFFSET,
- XNANDPSU_MEM_ADDR2_NFC_BCH_MODE_MASK,
- (BchModeVal <<
- (u32)XNANDPSU_MEM_ADDR2_NFC_BCH_MODE_SHIFT));
- }
- }
-}
-
-/*****************************************************************************/
-/**
-*
-* This function setup the Ecc Spare Command Register.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-static void XNandPsu_SetEccSpareCmd(XNandPsu *InstancePtr, u16 SpareCmd,
- u8 AddrCycles)
-{
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- (u32)XNANDPSU_ECC_SPR_CMD_OFFSET,
- (u32)SpareCmd | ((u32)AddrCycles << 28U));
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sets the flash bus width in memory address2 register.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-static void XNandPsu_SetBusWidth(XNandPsu *InstancePtr)
-{
- /*
- * Update Memory Address2 register with bus width
- */
- XNandPsu_ReadModifyWrite(InstancePtr, XNANDPSU_MEM_ADDR2_OFFSET,
- XNANDPSU_MEM_ADDR2_BUS_WIDTH_MASK,
- (InstancePtr->Features.BusWidth <<
- XNANDPSU_MEM_ADDR2_BUS_WIDTH_SHIFT));
-
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sets the chip select value in memory address2 register.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Target is the chip select value.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-static void XNandPsu_SelectChip(XNandPsu *InstancePtr, u32 Target)
-{
- /*
- * Update Memory Address2 register with chip select
- */
- XNandPsu_ReadModifyWrite(InstancePtr, XNANDPSU_MEM_ADDR2_OFFSET,
- XNANDPSU_MEM_ADDR2_CHIP_SEL_MASK,
- ((Target << XNANDPSU_MEM_ADDR2_CHIP_SEL_SHIFT) &
- XNANDPSU_MEM_ADDR2_CHIP_SEL_MASK));
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sends ONFI Reset command to the flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Target is the chip select value.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-static s32 XNandPsu_OnfiReset(XNandPsu *InstancePtr, u32 Target)
-{
- s32 Status = XST_FAILURE;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(Target < XNANDPSU_MAX_TARGETS);
-
- /*
- * Enable Transfer Complete Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK);
- /*
- * Program Command Register
- */
- XNandPsu_Prepare_Cmd(InstancePtr, ONFI_CMD_RST, ONFI_CMD_INVALID, 0U,
- 0U, 0U);
- /*
- * Program Memory Address Register2 for chip select
- */
- XNandPsu_SelectChip(InstancePtr, Target);
- /*
- * Set Reset in Program Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_PROG_OFFSET, XNANDPSU_PROG_RST_MASK);
-
- /*
- * Poll for Transfer Complete event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for xfer complete timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- (XNANDPSU_INTR_STS_EN_OFFSET), 0U);
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK);
-
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sends ONFI Read Status command to the flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Target is the chip select value.
-* @param OnfiStatus is the ONFI status value to return.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-static s32 XNandPsu_OnfiReadStatus(XNandPsu *InstancePtr, u32 Target,
- u16 *OnfiStatus)
-{
- s32 Status = XST_FAILURE;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(Target < XNANDPSU_MAX_TARGETS);
- Xil_AssertNonvoid(OnfiStatus != NULL);
- /*
- * Enable Transfer Complete Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK);
- /*
- * Program Command Register
- */
- XNandPsu_Prepare_Cmd(InstancePtr, ONFI_CMD_RD_STS, ONFI_CMD_INVALID,
- 0U, 0U, 0U);
- /*
- * Program Memory Address Register2 for chip select
- */
- XNandPsu_SelectChip(InstancePtr, Target);
- /*
- * Program Packet Size and Packet Count
- */
- if(InstancePtr->DataInterface == XNANDPSU_SDR){
- XNandPsu_SetPktSzCnt(InstancePtr, 1U, 1U);
- }
- else{
- XNandPsu_SetPktSzCnt(InstancePtr, 2U, 1U);
- }
-
- /*
- * Set Read Status in Program Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_PROG_OFFSET,XNANDPSU_PROG_RD_STS_MASK);
- /*
- * Poll for Transfer Complete event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for xfer complete timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK);
- /*
- * Read Flash Status
- */
- *OnfiStatus = (u8) XNandPsu_ReadReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_FLASH_STS_OFFSET);
-
-Out:
-
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sends ONFI Read ID command to the flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Target is the chip select value.
-* @param Buf is the ONFI ID value to return.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-static s32 XNandPsu_OnfiReadId(XNandPsu *InstancePtr, u32 Target, u8 IdAddr,
- u32 IdLen, u8 *Buf)
-{
- s32 Status = XST_FAILURE;
- u32 Index;
- u32 Rem;
- u32 *BufPtr = (u32 *)(void *)Buf;
- u32 RegVal;
- u32 RemIdx;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(Target < XNANDPSU_MAX_TARGETS);
- Xil_AssertNonvoid(Buf != NULL);
-
- /*
- * Enable Buffer Read Ready Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_BUFF_RD_RDY_STS_EN_MASK);
- /*
- * Program Command
- */
- XNandPsu_Prepare_Cmd(InstancePtr, ONFI_CMD_RD_ID, ONFI_CMD_INVALID, 0U,
- 0U, ONFI_READ_ID_ADDR_CYCLES);
-
- /*
- * Program Column, Page, Block address
- */
- XNandPsu_SetPageColAddr(InstancePtr, 0U, IdAddr);
- /*
- * Program Memory Address Register2 for chip select
- */
- XNandPsu_SelectChip(InstancePtr, Target);
- /*
- * Program Packet Size and Packet Count
- */
- XNandPsu_SetPktSzCnt(InstancePtr, IdLen, 1U);
- /*
- * Set Read ID in Program Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_PROG_OFFSET,XNANDPSU_PROG_RD_ID_MASK);
-
- /*
- * Poll for Buffer Read Ready event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for buf read ready timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Enable Transfer Complete Interrupt in Interrupt
- * Status Enable Register
- */
-
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK);
-
- /*
- * Clear Buffer Read Ready Interrupt in Interrupt Status
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK);
- /*
- * Read Packet Data from Data Port Register
- */
- for (Index = 0U; Index < (IdLen/4); Index++) {
- BufPtr[Index] = XNandPsu_ReadReg(
- InstancePtr->Config.BaseAddress,
- XNANDPSU_BUF_DATA_PORT_OFFSET);
- }
- Rem = IdLen % 4;
- if (Rem != 0U) {
- RegVal = XNandPsu_ReadReg(
- InstancePtr->Config.BaseAddress,
- XNANDPSU_BUF_DATA_PORT_OFFSET);
- for (RemIdx = 0U; RemIdx < Rem; RemIdx++) {
- Buf[(Index * 4U) + RemIdx] = (u8) (RegVal >>
- (RemIdx * 8U)) & 0xFFU;
- }
- }
-
- /*
- * Poll for Transfer Complete event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for xfer complete timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,0U);
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK);
-
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sends the ONFI Read Parameter Page command to flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Target is the chip select value.
-* @param PrmIndex is the index of parameter page.
-* @param Buf is the parameter page information to return.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-static s32 XNandPsu_OnfiReadParamPage(XNandPsu *InstancePtr, u32 Target,
- u8 *Buf)
-{
- s32 Status = XST_FAILURE;
- u32 *BufPtr = (u32 *)(void *)Buf;
- u32 Index;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(Target < XNANDPSU_MAX_TARGETS);
- Xil_AssertNonvoid(Buf != NULL);
-
- /*
- * Enable Buffer Read Ready Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_BUFF_RD_RDY_STS_EN_MASK);
- /*
- * Program Command
- */
- XNandPsu_Prepare_Cmd(InstancePtr, ONFI_CMD_RD_PRM_PG, ONFI_CMD_INVALID,
- 0U, 0U, ONFI_PRM_PG_ADDR_CYCLES);
- /*
- * Program Column, Page, Block address
- */
- XNandPsu_SetPageColAddr(InstancePtr, 0U, 0U);
- /*
- * Program Memory Address Register2 for chip select
- */
- XNandPsu_SelectChip(InstancePtr, Target);
- /*
- * Program Packet Size and Packet Count
- */
- XNandPsu_SetPktSzCnt(InstancePtr, ONFI_PRM_PG_LEN, 1U);
- /*
- * Set Read Parameter Page in Program Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_PROG_OFFSET,XNANDPSU_PROG_RD_PRM_PG_MASK);
-
- /*
- * Poll for Buffer Read Ready event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for buf read ready timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
-
-
- /*
- * Enable Transfer Complete Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- (XNANDPSU_INTR_STS_EN_OFFSET),
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK);
- /*
- * Clear Buffer Read Ready Interrupt in Interrupt Status
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK);
- /*
- * Read Packet Data from Data Port Register
- */
- for (Index = 0U; Index < (ONFI_PRM_PG_LEN/4); Index++) {
- BufPtr[Index] = XNandPsu_ReadReg(
- InstancePtr->Config.BaseAddress,
- XNANDPSU_BUF_DATA_PORT_OFFSET);
- }
-
- /*
- * Poll for Transfer Complete event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for xfer complete timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK);
-
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function returns the length including bad blocks from a given offset and
-* length.
-*
-* @param InstancePtr is the pointer to the XNandPsu instance.
-* @param Offset is the flash data address to read from.
-* @param Length is number of bytes to read.
-*
-* @return
-* - Return actual length including bad blocks.
-*
-* @note None.
-*
-******************************************************************************/
-static s32 XNandPsu_CalculateLength(XNandPsu *InstancePtr, u64 Offset,
- u64 Length)
-{
- s32 Status;
- u32 BlockSize;
- u32 BlockLen;
- u32 Block;
- u32 TempLen = 0;
- u64 OffsetVar = Offset;
-
- BlockSize = InstancePtr->Geometry.BlockSize;
-
- while (TempLen < Length) {
- Block = (u32) ((u32)OffsetVar/BlockSize);
- BlockLen = BlockSize - ((u32)OffsetVar % BlockSize);
- /*
- * Check if the block is bad
- */
- Status = XNandPsu_IsBlockBad(InstancePtr, Block);
- if (Status != XST_SUCCESS) {
- /*
- * Good block
- */
- TempLen += BlockLen;
- }
- if (OffsetVar >= InstancePtr->Geometry.DeviceSize) {
- Status = XST_FAILURE;
- goto Out;
- }
- OffsetVar += BlockLen;
- }
-
- Status = XST_SUCCESS;
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function writes to the flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Offset is the starting offset of flash to write.
-* @param Length is the number of bytes to write.
-* @param SrcBuf is the source data buffer to write.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-s32 XNandPsu_Write(XNandPsu *InstancePtr, u64 Offset, u64 Length, u8 *SrcBuf)
-{
- s32 Status = XST_FAILURE;
- u32 Page;
- u32 Col;
- u32 Target;
- u32 Block;
- u32 PartialBytes = 0;
- u32 NumBytes;
- u32 RemLen;
- u8 *BufPtr;
- u8 *Ptr = (u8 *)SrcBuf;
- u16 OnfiStatus;
- u64 OffsetVar = Offset;
- u64 LengthVar = Length;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(SrcBuf != NULL);
- Xil_AssertNonvoid(LengthVar != 0U);
- Xil_AssertNonvoid((OffsetVar + LengthVar) <
- InstancePtr->Geometry.DeviceSize);
-
- /*
- * Check if write operation exceeds flash size when including
- * bad blocks.
- */
- Status = XNandPsu_CalculateLength(InstancePtr, OffsetVar, LengthVar);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
-
- while (LengthVar > 0U) {
- Block = (u32) (OffsetVar/InstancePtr->Geometry.BlockSize);
- /*
- * Skip the bad blocks. Increment the offset by block size.
- * For better results, always program the flash starting at
- * a block boundary.
- */
- if (XNandPsu_IsBlockBad(InstancePtr, Block) == XST_SUCCESS) {
- OffsetVar += (u64)InstancePtr->Geometry.BlockSize;
- continue;
- }
- /*
- * Calculate Page and Column address values
- */
- Page = (u32) (OffsetVar/InstancePtr->Geometry.BytesPerPage);
- Col = (u32) (OffsetVar &
- (InstancePtr->Geometry.BytesPerPage - 1U));
- PartialBytes = 0U;
- /*
- * Check if partial write.
- * If column address is > 0 or Length is < page size
- */
- if ((Col > 0U) ||
- (LengthVar < InstancePtr->Geometry.BytesPerPage)) {
- RemLen = InstancePtr->Geometry.BytesPerPage - Col;
- PartialBytes = (RemLen < (u32)LengthVar) ?
- RemLen : (u32)LengthVar;
- }
-
- Target = (u32) (OffsetVar/InstancePtr->Geometry.TargetSize);
- if (Page > InstancePtr->Geometry.NumTargetPages) {
- Page %= InstancePtr->Geometry.NumTargetPages;
- }
-
- /*
- * Check if partial write
- */
- if (PartialBytes > 0U) {
- BufPtr = &InstancePtr->PartialDataBuf[0];
- memset(BufPtr, 0xFF,
- InstancePtr->Geometry.BytesPerPage);
- memcpy(BufPtr + Col, Ptr, PartialBytes);
-
- NumBytes = PartialBytes;
- } else {
- BufPtr = (u8 *)Ptr;
- NumBytes = (InstancePtr->Geometry.BytesPerPage <
- (u32)LengthVar) ?
- InstancePtr->Geometry.BytesPerPage :
- (u32)LengthVar;
- }
- /*
- * Program page
- */
- Status = XNandPsu_ProgramPage(InstancePtr, Target, Page, 0U,
- BufPtr);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- /*
- * ONFI ReadStatus
- */
- do {
- Status = XNandPsu_OnfiReadStatus(InstancePtr, Target,
- &OnfiStatus);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- if ((OnfiStatus & (1U << 6U)) != 0U) {
- if ((OnfiStatus & (1U << 0U)) != 0U) {
- Status = XST_FAILURE;
- goto Out;
- }
- }
- } while (((OnfiStatus >> 6U) & 0x1U) == 0U);
-
- Ptr += NumBytes;
- OffsetVar += NumBytes;
- LengthVar -= NumBytes;
- }
-
- Status = XST_SUCCESS;
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function reads from the flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Offset is the starting offset of flash to read.
-* @param Length is the number of bytes to read.
-* @param DestBuf is the destination data buffer to fill in.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-s32 XNandPsu_Read(XNandPsu *InstancePtr, u64 Offset, u64 Length, u8 *DestBuf)
-{
- s32 Status = XST_FAILURE;
- u32 Page;
- u32 Col;
- u32 Target;
- u32 Block;
- u32 PartialBytes = 0U;
- u32 RemLen;
- u32 NumBytes;
- u8 *BufPtr;
- u8 *Ptr = (u8 *)DestBuf;
- u64 OffsetVar = Offset;
- u64 LengthVar = Length;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(LengthVar != 0U);
- Xil_AssertNonvoid((OffsetVar + LengthVar) <
- InstancePtr->Geometry.DeviceSize);
-
- /*
- * Check if read operation exceeds flash size when including
- * bad blocks.
- */
- Status = XNandPsu_CalculateLength(InstancePtr, OffsetVar, LengthVar);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
-
- while (LengthVar > 0U) {
- Block = (u32) (OffsetVar/InstancePtr->Geometry.BlockSize);
- /*
- * Skip the bad block. Increment the offset by block size.
- * The flash programming utility must make sure to start
- * writing always at a block boundary and skip blocks if any.
- */
- if (XNandPsu_IsBlockBad(InstancePtr, Block) == XST_SUCCESS) {
- OffsetVar += (u64)InstancePtr->Geometry.BlockSize;
- continue;
- }
- /*
- * Calculate Page and Column address values
- */
- Page = (u32) (OffsetVar/InstancePtr->Geometry.BytesPerPage);
- Col = (u32) (OffsetVar &
- (InstancePtr->Geometry.BytesPerPage - 1U));
- PartialBytes = 0U;
- /*
- * Check if partial write.
- * If column address is > 0 or Length is < page size
- */
- if ((Col > 0U) ||
- (LengthVar < InstancePtr->Geometry.BytesPerPage)) {
- RemLen = InstancePtr->Geometry.BytesPerPage - Col;
- PartialBytes = ((u32)RemLen < (u32)LengthVar) ?
- (u32)RemLen : (u32)LengthVar;
- }
-
- Target = (u32) (OffsetVar/InstancePtr->Geometry.TargetSize);
- if (Page > InstancePtr->Geometry.NumTargetPages) {
- Page %= InstancePtr->Geometry.NumTargetPages;
- }
- /*
- * Check if partial read
- */
- if (PartialBytes > 0U) {
- BufPtr = &InstancePtr->PartialDataBuf[0];
- NumBytes = PartialBytes;
- } else {
- BufPtr = Ptr;
- NumBytes = (InstancePtr->Geometry.BytesPerPage <
- (u32)LengthVar) ?
- InstancePtr->Geometry.BytesPerPage :
- (u32)LengthVar;
- }
- /*
- * Read page
- */
- Status = XNandPsu_ReadPage(InstancePtr, Target, Page, 0U,
- BufPtr);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- if (PartialBytes > 0U) {
- memcpy(Ptr, BufPtr + Col, NumBytes);
- }
- Ptr += NumBytes;
- OffsetVar += NumBytes;
- LengthVar -= NumBytes;
- }
-
- Status = XST_SUCCESS;
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function erases the flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Offset is the starting offset of flash to erase.
-* @param Length is the number of bytes to erase.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note
-* The Offset and Length should be aligned to block size boundary
-* to get better results.
-*
-******************************************************************************/
-s32 XNandPsu_Erase(XNandPsu *InstancePtr, u64 Offset, u64 Length)
-{
- s32 Status = XST_FAILURE;
- u32 Target = 0;
- u32 StartBlock;
- u32 NumBlocks = 0;
- u32 Block;
- u32 AlignOff;
- u32 EraseLen;
- u32 BlockRemLen;
- u16 OnfiStatus;
- u64 OffsetVar = Offset;
- u64 LengthVar = Length;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(LengthVar != 0U);
- Xil_AssertNonvoid((OffsetVar + LengthVar) <
- InstancePtr->Geometry.DeviceSize);
-
- /*
- * Check if erase operation exceeds flash size when including
- * bad blocks.
- */
- Status = XNandPsu_CalculateLength(InstancePtr, OffsetVar, LengthVar);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- /*
- * Calculate number of blocks to erase
- */
- StartBlock = (u32) (OffsetVar/InstancePtr->Geometry.BlockSize);
-
- while (LengthVar > 0U) {
- Block = (u32) (OffsetVar/InstancePtr->Geometry.BlockSize);
- if (XNandPsu_IsBlockBad(InstancePtr, Block) ==
- XST_SUCCESS) {
- OffsetVar += (u64)InstancePtr->Geometry.BlockSize;
- NumBlocks++;
- continue;
- }
-
- AlignOff = (u32)OffsetVar &
- (InstancePtr->Geometry.BlockSize - (u32)1);
- if (AlignOff > 0U) {
- BlockRemLen = InstancePtr->Geometry.BlockSize -
- AlignOff;
- EraseLen = (BlockRemLen < (u32)LengthVar) ?
- BlockRemLen :(u32)LengthVar;
- } else {
- EraseLen = (InstancePtr->Geometry.BlockSize <
- (u32)LengthVar) ?
- InstancePtr->Geometry.BlockSize:
- (u32)LengthVar;
- }
- NumBlocks++;
- OffsetVar += EraseLen;
- LengthVar -= EraseLen;
- }
-
- for (Block = StartBlock; Block < (StartBlock + NumBlocks); Block++) {
- Target = Block/InstancePtr->Geometry.NumTargetBlocks;
- Block %= InstancePtr->Geometry.NumTargetBlocks;
- if (XNandPsu_IsBlockBad(InstancePtr, Block) ==
- XST_SUCCESS) {
- /*
- * Don't erase bad block
- */
- continue;
- }
- /*
- * Block Erase
- */
- Status = XNandPsu_EraseBlock(InstancePtr, Target, Block);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- /*
- * ONFI ReadStatus
- */
- do {
- Status = XNandPsu_OnfiReadStatus(InstancePtr, Target,
- &OnfiStatus);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- if ((OnfiStatus & (1U << 6U)) != 0U) {
- if ((OnfiStatus & (1U << 0U)) != 0U) {
- Status = XST_FAILURE;
- goto Out;
- }
- }
- } while (((OnfiStatus >> 6U) & 0x1U) == 0U);
- }
-
- Status = XST_SUCCESS;
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sends ONFI Program Page command to flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Target is the chip select value.
-* @param Page is the page address value to program.
-* @param Col is the column address value to program.
-* @param Buf is the data buffer to program.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-static s32 XNandPsu_ProgramPage(XNandPsu *InstancePtr, u32 Target, u32 Page,
- u32 Col, u8 *Buf)
-{
- u32 AddrCycles = InstancePtr->Geometry.RowAddrCycles +
- InstancePtr->Geometry.ColAddrCycles;
- u32 PktSize;
- u32 PktCount;
- u32 BufWrCnt = 0U;
- u32 *BufPtr = (u32 *)(void *)Buf;
- s32 Status = XST_FAILURE;
- u32 Index;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(Page < InstancePtr->Geometry.NumPages);
- Xil_AssertNonvoid(Buf != NULL);
-
- if (InstancePtr->EccCfg.CodeWordSize > 9U) {
- PktSize = 1024U;
- } else {
- PktSize = 512U;
- }
- PktCount = InstancePtr->Geometry.BytesPerPage/PktSize;
-
- XNandPsu_Prepare_Cmd(InstancePtr, ONFI_CMD_PG_PROG1, ONFI_CMD_PG_PROG2,
- 1U, 1U, (u8)AddrCycles);
-
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
-
- /*
- * Enable DMA boundary Interrupt in Interrupt Status
- * Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK |
- XNANDPSU_INTR_STS_EN_DMA_INT_STS_EN_MASK);
- } else {
- /*
- * Enable Buffer Write Ready Interrupt in Interrupt Status
- * Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_BUFF_WR_RDY_STS_EN_MASK);
- }
- /*
- * Program Page Size
- */
- XNandPsu_SetPageSize(InstancePtr);
- /*
- * Program Packet Size and Packet Count
- */
- XNandPsu_SetPktSzCnt(InstancePtr, PktSize, PktCount);
- /*
- * Program DMA system address and DMA buffer boundary
- */
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
- /*
- * Flush the Data Cache
- */
- Xil_DCacheFlushRange((INTPTR)Buf, (PktSize * PktCount));
-
-#ifdef __aarch64__
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DMA_SYS_ADDR1_OFFSET,
- (u32) (((INTPTR)Buf >> 32) & 0xFFFFFFFFU));
-#endif
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DMA_SYS_ADDR0_OFFSET,
- (u32) ((INTPTR)(void *)Buf & 0xFFFFFFFFU));
- }
- /*
- * Program Column, Page, Block address
- */
- XNandPsu_SetPageColAddr(InstancePtr, Page, (u16)Col);
- /*
- * Set Bus Width
- */
- XNandPsu_SetBusWidth(InstancePtr);
- /*
- * Program Memory Address Register2 for chip select
- */
- XNandPsu_SelectChip(InstancePtr, Target);
- /*
- * Set ECC
- */
- if (InstancePtr->EccMode == XNANDPSU_HWECC) {
- XNandPsu_SetEccSpareCmd(InstancePtr, ONFI_CMD_CHNG_WR_COL,
- InstancePtr->Geometry.ColAddrCycles);
- }
- /*
- * Set Page Program in Program Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_PROG_OFFSET,XNANDPSU_PROG_PG_PROG_MASK);
-
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
- goto WriteDmaDone;
- }
-
- while (BufWrCnt < PktCount) {
- /*
- * Poll for Buffer Write Ready event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_WR_RDY_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for buf write ready timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Increment Buffer Write Interrupt Count
- */
- BufWrCnt++;
-
- if (BufWrCnt == PktCount) {
- /*
- * Enable Transfer Complete Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK);
- } else {
- /*
- * Clear Buffer Write Ready Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
-
- }
- /*
- * Clear Buffer Write Ready Interrupt in Interrupt Status
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_WR_RDY_STS_EN_MASK);
- /*
- * Write Packet Data to Data Port Register
- */
- for (Index = 0U; Index < (PktSize/4U); Index++) {
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_BUF_DATA_PORT_OFFSET,
- BufPtr[Index]);
- }
- BufPtr += (PktSize/4U);
-
- if (BufWrCnt < PktCount) {
- /*
- * Enable Buffer Write Ready Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_BUFF_WR_RDY_STS_EN_MASK);
- } else {
- break;
- }
- }
-WriteDmaDone:
- /*
- * Poll for Transfer Complete event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for xfer complete timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
-
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK);
-
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sends ONFI Program Page command to flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Target is the chip select value.
-* @param Page is the page address value to program.
-* @param Col is the column address value to program.
-* @param Buf is the data buffer to program.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-s32 XNandPsu_WriteSpareBytes(XNandPsu *InstancePtr, u32 Page, u8 *Buf)
-{
- u32 AddrCycles = InstancePtr->Geometry.RowAddrCycles +
- InstancePtr->Geometry.ColAddrCycles;
- u32 Col = InstancePtr->Geometry.BytesPerPage;
- u32 Target = Page/InstancePtr->Geometry.NumTargetPages;
- u32 PktSize = InstancePtr->Geometry.SpareBytesPerPage;
- u32 PktCount = 1U;
- u32 BufWrCnt = 0U;
- u32 *BufPtr = (u32 *)(void *)Buf;
- u16 PreEccSpareCol = 0U;
- u16 PreEccSpareWrCnt = 0U;
- u16 PostEccSpareCol = 0U;
- u16 PostEccSpareWrCnt = 0U;
- u32 PostWrite = 0U;
- OnfiCmdFormat Cmd;
- s32 Status = XST_FAILURE;
- u32 Index;
- u32 PageVar = Page;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(PageVar < InstancePtr->Geometry.NumPages);
- Xil_AssertNonvoid(Buf != NULL);
-
- PageVar %= InstancePtr->Geometry.NumTargetPages;
-
- if (InstancePtr->EccMode == XNANDPSU_HWECC) {
- /*
- * Calculate ECC free positions before and after ECC code
- */
- PreEccSpareCol = 0x0U;
- PreEccSpareWrCnt = InstancePtr->EccCfg.EccAddr -
- (u16)InstancePtr->Geometry.BytesPerPage;
-
- PostEccSpareCol = PreEccSpareWrCnt +
- InstancePtr->EccCfg.EccSize;
- PostEccSpareWrCnt = InstancePtr->Geometry.SpareBytesPerPage -
- PostEccSpareCol;
-
- PreEccSpareWrCnt = (PreEccSpareWrCnt/4U) * 4U;
- PostEccSpareWrCnt = (PostEccSpareWrCnt/4U) * 4U;
-
- if (PreEccSpareWrCnt > 0U) {
- PktSize = PreEccSpareWrCnt;
- PktCount = 1U;
- Col = InstancePtr->Geometry.BytesPerPage +
- PreEccSpareCol;
- BufPtr = (u32 *)(void *)Buf;
- if (PostEccSpareWrCnt > 0U) {
- PostWrite = 1U;
- }
- } else if (PostEccSpareWrCnt > 0U) {
- PktSize = PostEccSpareWrCnt;
- PktCount = 1U;
- Col = InstancePtr->Geometry.BytesPerPage +
- PostEccSpareCol;
- BufPtr = (u32 *)(void *)&Buf[Col];
- } else {
- /*
- * No free spare bytes available for writing
- */
- Status = XST_FAILURE;
- goto Out;
- }
- }
-
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
- /*
- * Enable Transfer Complete Interrupt in Interrupt Status
- * Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK);
-
- } else {
- /*
- * Enable Buffer Write Ready Interrupt in Interrupt Status
- * Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_BUFF_WR_RDY_STS_EN_MASK);
-
- }
- /*
- * Program Command hack for change write column
- */
- if (PostWrite > 0U) {
- Cmd.Command1 = 0x80U;
- Cmd.Command2 = 0x00U;
- XNandPsu_Prepare_Cmd(InstancePtr, Cmd.Command1, Cmd.Command2,
- 0U , 1U, (u8)AddrCycles);
-
- } else {
- XNandPsu_Prepare_Cmd(InstancePtr, ONFI_CMD_PG_PROG1,
- ONFI_CMD_PG_PROG2, 0U , 1U, (u8)AddrCycles);
- }
- /*
- * Program Page Size
- */
- XNandPsu_SetPageSize(InstancePtr);
- /*
- * Program Packet Size and Packet Count
- */
- XNandPsu_SetPktSzCnt(InstancePtr, PktSize, PktCount);
- /*
- * Program DMA system address and DMA buffer boundary
- */
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
- /*
- * Flush the Data Cache
- */
- Xil_DCacheFlushRange((INTPTR)BufPtr, (PktSize * PktCount));
-
-#ifdef __aarch64__
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DMA_SYS_ADDR1_OFFSET,
- (u32) (((INTPTR)BufPtr >> 32) & 0xFFFFFFFFU));
-#endif
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DMA_SYS_ADDR0_OFFSET,
- (u32) ((INTPTR)(void *)BufPtr & 0xFFFFFFFFU));
-
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DMA_BUF_BND_OFFSET,
- XNANDPSU_DMA_BUF_BND_512K);
- }
- /*
- * Program Column, Page, Block address
- */
- XNandPsu_SetPageColAddr(InstancePtr, PageVar, (u16)Col);
- /*
- * Set Bus Width
- */
- XNandPsu_SetBusWidth(InstancePtr);
- /*
- * Program Memory Address Register2 for chip select
- */
- XNandPsu_SelectChip(InstancePtr, Target);
- /*
- * Set Page Program in Program Register
- */
- if (PostWrite > 0U) {
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_PROG_OFFSET,((u32)XNANDPSU_PROG_PG_PROG_MASK |
- (u32)XNANDPSU_PROG_CHNG_ROW_ADDR_MASK));
- } else {
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_PROG_OFFSET,XNANDPSU_PROG_PG_PROG_MASK);
- }
-
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
- goto WriteDmaDone;
- }
-
- while (BufWrCnt < PktCount) {
- /*
- * Poll for Buffer Write Ready event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_WR_RDY_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for buf write ready timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Increment Buffer Write Interrupt Count
- */
- BufWrCnt++;
-
- if (BufWrCnt == PktCount) {
- /*
- * Enable Transfer Complete Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK);
-
- } else {
- /*
- * Clear Buffer Write Ready Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
- }
- /*
- * Clear Buffer Write Ready Interrupt in Interrupt Status
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_WR_RDY_STS_EN_MASK);
- /*
- * Write Packet Data to Data Port Register
- */
- for (Index = 0U; Index < (PktSize/4U); Index++) {
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_BUF_DATA_PORT_OFFSET,
- BufPtr[Index]);
- }
- BufPtr += (PktSize/4U);
-
- if (BufWrCnt < PktCount) {
- /*
- * Enable Buffer Write Ready Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_BUFF_WR_RDY_STS_EN_MASK);
- } else {
- break;
- }
- }
-WriteDmaDone:
- /*
- * Poll for Transfer Complete event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for xfer complete timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
-
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK);
-
- if (InstancePtr->EccMode == XNANDPSU_HWECC) {
- if (PostWrite > 0U) {
- BufPtr = (u32 *)(void *)&Buf[PostEccSpareCol];
- Status = XNandPsu_ChangeWriteColumn(InstancePtr,
- Target,
- PostEccSpareCol, PostEccSpareWrCnt, 1U,
- (u8 *)(void *)BufPtr);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- }
- }
-Out:
-
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sends ONFI Read Page command to flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Target is the chip select value.
-* @param Page is the page address value to read.
-* @param Col is the column address value to read.
-* @param Buf is the data buffer to fill in.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-static s32 XNandPsu_ReadPage(XNandPsu *InstancePtr, u32 Target, u32 Page,
- u32 Col, u8 *Buf)
-{
- u32 AddrCycles = InstancePtr->Geometry.RowAddrCycles +
- InstancePtr->Geometry.ColAddrCycles;
- u32 PktSize;
- u32 PktCount;
- u32 BufRdCnt = 0U;
- u32 *BufPtr = (u32 *)(void *)Buf;
- s32 Status = XST_FAILURE;
- u32 Index, RegVal;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(Page < InstancePtr->Geometry.NumPages);
- Xil_AssertNonvoid(Target < XNANDPSU_MAX_TARGETS);
-
- if (InstancePtr->EccCfg.CodeWordSize > 9U) {
- PktSize = 1024U;
- } else {
- PktSize = 512U;
- }
- PktCount = InstancePtr->Geometry.BytesPerPage/PktSize;
-
- XNandPsu_Prepare_Cmd(InstancePtr, ONFI_CMD_RD1, ONFI_CMD_RD2,
- 1U, 1U, (u8)AddrCycles);
-
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
-
- /*
- * Enable DMA boundary Interrupt in Interrupt Status
- * Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK |
- XNANDPSU_INTR_STS_EN_DMA_INT_STS_EN_MASK);
-
- } else {
- /*
- * Enable Buffer Read Ready Interrupt in Interrupt Status
- * Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_BUFF_RD_RDY_STS_EN_MASK);
-
- }
- /*
- * Enable Single bit error and Multi bit error
- */
- if (InstancePtr->EccMode == XNANDPSU_HWECC) {
- /*
- * Interrupt Status Enable Register
- */
- XNandPsu_IntrStsEnable(InstancePtr,
- (XNANDPSU_INTR_STS_EN_MUL_BIT_ERR_STS_EN_MASK |
- XNANDPSU_INTR_STS_EN_ERR_INTR_STS_EN_MASK));
- }
- /*
- * Program Page Size
- */
- XNandPsu_SetPageSize(InstancePtr);
- /*
- * Program Column, Page, Block address
- */
- XNandPsu_SetPageColAddr(InstancePtr, Page, (u16)Col);
- /*
- * Program Packet Size and Packet Count
- */
- XNandPsu_SetPktSzCnt(InstancePtr, PktSize, PktCount);
- /*
- * Program DMA system address and DMA buffer boundary
- */
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
- /*
- * Invalidate the Data Cache
- */
- Xil_DCacheInvalidateRange((INTPTR)Buf, (PktSize * PktCount));
-
-#ifdef __aarch64__
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DMA_SYS_ADDR1_OFFSET,
- (u32) (((INTPTR)(void *)Buf >> 32) &
- 0xFFFFFFFFU));
-#endif
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DMA_SYS_ADDR0_OFFSET,
- (u32) ((INTPTR)(void *)Buf & 0xFFFFFFFFU));
- }
- /*
- * Set Bus Width
- */
- XNandPsu_SetBusWidth(InstancePtr);
- /*
- * Program Memory Address Register2 for chip select
- */
- XNandPsu_SelectChip(InstancePtr, Target);
- /*
- * Set ECC
- */
- if (InstancePtr->EccMode == XNANDPSU_HWECC) {
- XNandPsu_SetEccSpareCmd(InstancePtr,
- (ONFI_CMD_CHNG_RD_COL1 |
- (ONFI_CMD_CHNG_RD_COL2 << (u8)8U)),
- InstancePtr->Geometry.ColAddrCycles);
- }
-
- /*
- * Set Read command in Program Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_PROG_OFFSET,XNANDPSU_PROG_RD_MASK);
-
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
- goto ReadDmaDone;
- }
-
- while (BufRdCnt < PktCount) {
- /*
- * Poll for Buffer Read Ready event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for buf read ready timeout\r\n",
- __func__);
-#endif
- goto CheckEccError;
- }
- /*
- * Increment Buffer Read Interrupt Count
- */
- BufRdCnt++;
-
- if (BufRdCnt == PktCount) {
- /*
- * Enable Transfer Complete Interrupt in Interrupt
- * Status Enable Register
- */
- RegVal = XNandPsu_ReadReg(
- (InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET);
- RegVal &= ~XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK;
- RegVal |= XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK;
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, RegVal);
- } else {
- /*
- * Clear Buffer Read Ready Interrupt in Interrupt
- * Status Enable Register
- */
- RegVal = XNandPsu_ReadReg(
- (InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET);
- RegVal &= ~XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK;
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, RegVal);
- }
- /*
- * Clear Buffer Read Ready Interrupt in Interrupt Status
- * Register
- */
- RegVal = XNandPsu_ReadReg(
- (InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET);
- RegVal |= XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK;
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET, RegVal);
- /*
- * Read Packet Data from Data Port Register
- */
- for (Index = 0U; Index < (PktSize/4); Index++) {
- BufPtr[Index] = XNandPsu_ReadReg(
- InstancePtr->Config.BaseAddress,
- XNANDPSU_BUF_DATA_PORT_OFFSET);
- }
- BufPtr += (PktSize/4);
-
- if (BufRdCnt < PktCount) {
- /*
- * Enable Buffer Read Ready Interrupt in Interrupt
- * Status Enable Register
- */
- RegVal = XNandPsu_ReadReg(
- (InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET);
- RegVal |= XNANDPSU_INTR_STS_EN_BUFF_RD_RDY_STS_EN_MASK;
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, RegVal);
- } else {
- break;
- }
- }
-ReadDmaDone:
- /*
- * Poll for Transfer Complete event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for xfer complete timeout\r\n",
- __func__);
-#endif
- goto CheckEccError;
- }
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
-
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK);
-
-CheckEccError:
- /*
- * Check ECC Errors
- */
- if (InstancePtr->EccMode == XNANDPSU_HWECC) {
- /*
- * Hamming Multi Bit Errors
- */
- if (((u32)XNandPsu_ReadReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET) &
- (u32)XNANDPSU_INTR_STS_MUL_BIT_ERR_STS_EN_MASK) != 0U) {
-
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_MUL_BIT_ERR_STS_EN_MASK);
-
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: ECC Hamming multi bit error\r\n",
- __func__);
-#endif
- InstancePtr->Ecc_Stat_PerPage_flips =
- ((XNandPsu_ReadReg(
- InstancePtr->Config.BaseAddress,
- XNANDPSU_ECC_ERR_CNT_OFFSET) &
- 0x1FF00U) >> 8U);
- InstancePtr->Ecc_Stats_total_flips +=
- InstancePtr->Ecc_Stat_PerPage_flips;
- Status = XST_FAILURE;
- }
- /*
- * Hamming Single Bit or BCH Errors
- */
- if (((u32)XNandPsu_ReadReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET) &
- (u32)XNANDPSU_INTR_STS_ERR_INTR_STS_EN_MASK) != 0U) {
-
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_ERR_INTR_STS_EN_MASK);
-
- if (InstancePtr->EccCfg.IsBCH == 1U) {
- InstancePtr->Ecc_Stat_PerPage_flips =
- ((XNandPsu_ReadReg(
- InstancePtr->Config.BaseAddress,
- XNANDPSU_ECC_ERR_CNT_OFFSET)&
- 0x1FF00U) >> 8U);
- InstancePtr->Ecc_Stats_total_flips +=
- InstancePtr->Ecc_Stat_PerPage_flips;
- Status = XST_SUCCESS;
- }
- }
- }
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function reads spare bytes from flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Target is the chip select value.
-* @param Page is the page address value to read.
-* @param Buf is the data buffer to fill in.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-s32 XNandPsu_ReadSpareBytes(XNandPsu *InstancePtr, u32 Page, u8 *Buf)
-{
- u32 AddrCycles = InstancePtr->Geometry.RowAddrCycles +
- InstancePtr->Geometry.ColAddrCycles;
- u32 Col = InstancePtr->Geometry.BytesPerPage;
- u32 Target = Page/InstancePtr->Geometry.NumTargetPages;
- u32 PktSize = InstancePtr->Geometry.SpareBytesPerPage;
- u32 PktCount = 1U;
- u32 BufRdCnt = 0U;
- u32 *BufPtr = (u32 *)(void *)Buf;
- s32 Status = XST_FAILURE;
- u32 Index;
- u32 PageVar = Page;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(PageVar < InstancePtr->Geometry.NumPages);
- Xil_AssertNonvoid(Buf != NULL);
-
- PageVar %= InstancePtr->Geometry.NumTargetPages;
-
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
- /*
- * Enable Transfer Complete Interrupt in Interrupt Status
- * Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK);
- } else {
- /*
- * Enable Buffer Read Ready Interrupt in Interrupt Status
- * Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_BUFF_RD_RDY_STS_EN_MASK);
- }
- /*
- * Program Command
- */
- XNandPsu_Prepare_Cmd(InstancePtr, ONFI_CMD_RD1, ONFI_CMD_RD2, 0U,
- 1U, (u8)AddrCycles);
- /*
- * Program Page Size
- */
- XNandPsu_SetPageSize(InstancePtr);
- /*
- * Program Column, Page, Block address
- */
- XNandPsu_SetPageColAddr(InstancePtr, PageVar, (u16)Col);
- /*
- * Program Packet Size and Packet Count
- */
- XNandPsu_SetPktSzCnt(InstancePtr, PktSize, PktCount);
- /*
- * Program DMA system address and DMA buffer boundary
- */
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
-
- /*
- * Invalidate the Data Cache
- */
- Xil_DCacheInvalidateRange((INTPTR)Buf, (PktSize * PktCount));
-#ifdef __aarch64__
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DMA_SYS_ADDR1_OFFSET,
- (u32) (((INTPTR)(void *)Buf >> 32) &
- 0xFFFFFFFFU));
-#endif
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DMA_SYS_ADDR0_OFFSET,
- (u32) ((INTPTR)(void *)Buf & 0xFFFFFFFFU));
- }
- /*
- * Set Bus Width
- */
- XNandPsu_SetBusWidth(InstancePtr);
- /*
- * Program Memory Address Register2 for chip select
- */
- XNandPsu_SelectChip(InstancePtr, Target);
- /*
- * Set Read command in Program Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_PROG_OFFSET,XNANDPSU_PROG_RD_MASK);
-
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
- goto ReadDmaDone;
- }
-
- while (BufRdCnt < PktCount) {
- /*
- * Poll for Buffer Read Ready event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for buf read ready timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Increment Buffer Read Interrupt Count
- */
- BufRdCnt++;
-
- if (BufRdCnt == PktCount) {
- /*
- * Enable Transfer Complete Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK);
-
- } else {
- /*
- * Clear Buffer Read Ready Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
-
- }
- /*
- * Clear Buffer Read Ready Interrupt in Interrupt Status
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK);
- /*
- * Read Packet Data from Data Port Register
- */
- for (Index = 0U; Index < (PktSize/4); Index++) {
- BufPtr[Index] = XNandPsu_ReadReg(
- InstancePtr->Config.BaseAddress,
- XNANDPSU_BUF_DATA_PORT_OFFSET);
- }
- BufPtr += (PktSize/4);
-
- if (BufRdCnt < PktCount) {
- /*
- * Enable Buffer Read Ready Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_BUFF_RD_RDY_STS_EN_MASK);
- } else {
- break;
- }
- }
-ReadDmaDone:
- /*
- * Poll for Transfer Complete event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for xfer complete timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
-
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK);
-Out:
-
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sends ONFI block erase command to the flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Target is the chip select value.
-* @param Block is the block to erase.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-s32 XNandPsu_EraseBlock(XNandPsu *InstancePtr, u32 Target, u32 Block)
-{
- s32 Status = XST_FAILURE;
- u32 AddrCycles = InstancePtr->Geometry.RowAddrCycles;
- u32 Page;
- u32 ErasePage;
- u32 EraseCol;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(Target < XNANDPSU_MAX_TARGETS);
- Xil_AssertNonvoid(Block < InstancePtr->Geometry.NumBlocks);
-
- Page = Block * InstancePtr->Geometry.PagesPerBlock;
- ErasePage = (Page >> 16U) & 0xFFFFU;
- EraseCol = Page & 0xFFFFU;
-
- /*
- * Enable Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK);
-
- /*
- * Program Command
- */
- XNandPsu_Prepare_Cmd(InstancePtr, ONFI_CMD_BLK_ERASE1,
- ONFI_CMD_BLK_ERASE2, 0U , 0U, (u8)AddrCycles);
- /*
- * Program Column, Page, Block address
- */
- XNandPsu_SetPageColAddr(InstancePtr, ErasePage, (u16)EraseCol);
- /*
- * Program Memory Address Register2 for chip select
- */
- XNandPsu_SelectChip(InstancePtr, Target);
- /*
- * Set Block Erase in Program Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_PROG_OFFSET,XNANDPSU_PROG_BLK_ERASE_MASK);
- /*
- * Poll for Transfer Complete event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for xfer complete timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
-
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK);
-
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sends ONFI Get Feature command to flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Target is the chip select value.
-* @param Feature is the feature selector.
-* @param Buf is the buffer to fill feature value.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-s32 XNandPsu_GetFeature(XNandPsu *InstancePtr, u32 Target, u8 Feature,
- u8 *Buf)
-{
- s32 Status;
- u32 Index;
- u32 PktSize = 4;
- u32 PktCount = 1;
- u32 *BufPtr = (u32 *)(void *)Buf;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(Buf != NULL);
-
- if (InstancePtr->DataInterface == XNANDPSU_NVDDR) {
- PktSize = 8U;
- }
-
- /*
- * Enable Buffer Read Ready Interrupt in Interrupt Status
- * Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_BUFF_RD_RDY_STS_EN_MASK);
- /*
- * Program Command
- */
- XNandPsu_Prepare_Cmd(InstancePtr, ONFI_CMD_GET_FEATURES,
- ONFI_CMD_INVALID, 0U, 0U, 1U);
- /*
- * Program Column, Page, Block address
- */
- XNandPsu_SetPageColAddr(InstancePtr, 0x0U, Feature);
- /*
- * Program Memory Address Register2 for chip select
- */
- XNandPsu_SelectChip(InstancePtr, Target);
- /*
- * Program Packet Size and Packet Count
- */
- XNandPsu_SetPktSzCnt(InstancePtr, PktSize, PktCount);
- /*
- * Set Read Parameter Page in Program Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_PROG_OFFSET,XNANDPSU_PROG_GET_FEATURES_MASK);
- /*
- * Poll for Buffer Read Ready event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for buf read ready timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Clear Buffer Read Ready Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
-
- /*
- * Clear Buffer Read Ready Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK);
- /*
- * Enable Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK);
-
- /*
- * Read Data from Data Port Register
- */
- for (Index = 0U; Index < (PktSize/4U); Index++) {
- BufPtr[Index] = XNandPsu_ReadReg(
- InstancePtr->Config.BaseAddress,
- XNANDPSU_BUF_DATA_PORT_OFFSET);
- }
- /*
- * Poll for Transfer Complete event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for xfer complete timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
-
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK);
-
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sends ONFI Set Feature command to flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Target is the chip select value.
-* @param Feature is the feature selector.
-* @param Buf is the feature value to send.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-s32 XNandPsu_SetFeature(XNandPsu *InstancePtr, u32 Target, u8 Feature,
- u8 *Buf)
-{
- s32 Status;
- u32 Index;
- u32 PktSize = 4U;
- u32 PktCount = 1U;
- u32 *BufPtr = (u32 *)(void *)Buf;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(Buf != NULL);
- if (InstancePtr->DataInterface == XNANDPSU_NVDDR) {
- PktSize = 8U;
- }
-
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
-
- /*
- * Enable Buffer Write Ready Interrupt in Interrupt Status
- * Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_BUFF_WR_RDY_STS_EN_MASK);
-
- /*
- * Program Command
- */
- XNandPsu_Prepare_Cmd(InstancePtr, ONFI_CMD_SET_FEATURES,
- ONFI_CMD_INVALID, 0U , 0U, 1U);
- /*
- * Program Column, Page, Block address
- */
- XNandPsu_SetPageColAddr(InstancePtr, 0x0U, Feature);
- /*
- * Program Memory Address Register2 for chip select
- */
- XNandPsu_SelectChip(InstancePtr, Target);
- /*
- * Program Packet Size and Packet Count
- */
- XNandPsu_SetPktSzCnt(InstancePtr, PktSize, PktCount);
- /*
- * Set Read Parameter Page in Program Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_PROG_OFFSET,XNANDPSU_PROG_SET_FEATURES_MASK);
- /*
- * Poll for Buffer Write Ready event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_WR_RDY_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for buf write ready timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Clear Buffer Write Ready Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
-
- /*
- * Clear Buffer Write Ready Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_WR_RDY_STS_EN_MASK);
- /*
- * Enable Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- (XNANDPSU_INTR_STS_EN_OFFSET),
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK);
- /*
- * Write Data to Data Port Register
- */
- for (Index = 0U; Index < (PktSize/4U); Index++) {
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_BUF_DATA_PORT_OFFSET,
- BufPtr[Index]);
- }
- /*
- * Poll for Transfer Complete event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for xfer complete timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
-
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK);
-
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function changes clock frequency of flash controller.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param ClockFreq is the clock frequency to change.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-static void XNandPsu_ChangeClockFreq(XNandPsu *InstancePtr, u32 ClockFreq)
-{
- /*
- * Not implemented
- */
-}
-/*****************************************************************************/
-/**
-*
-* This function changes the data interface and timing mode.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param NewIntf is the new data interface.
-* @param NewMode is the new timing mode.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-s32 XNandPsu_ChangeTimingMode(XNandPsu *InstancePtr,
- XNandPsu_DataInterface NewIntf,
- XNandPsu_TimingMode NewMode)
-{
- s32 Status;
- u32 Target;
- u32 Index;
- u32 Found = 0U;
- u32 RegVal;
- u8 Buf[4] = {0U};
- u32 *Feature = (u32 *)(void *)&Buf[0];
- u32 SetFeature = 0U;
- u32 NewModeVar = NewMode;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- /*
- * Check for valid input arguments
- */
- if((NewIntf != XNANDPSU_SDR && NewIntf != XNANDPSU_NVDDR) ||
- (NewModeVar > 5U)){
- Status = XST_FAILURE;
- goto Out;
- }
-
- if(NewIntf == XNANDPSU_NVDDR){
- NewModeVar = NewModeVar | 0x10U;
- }
- /*
- * Get current data interface type and timing mode
- */
- XNandPsu_DataInterface CurIntf = InstancePtr->DataInterface;
- XNandPsu_TimingMode CurMode = InstancePtr->TimingMode;
-
- /*
- * Check if the flash is in same mode
- */
- if ((CurIntf == NewIntf) && (CurMode == NewModeVar)) {
- Status = XST_SUCCESS;
- goto Out;
- }
-
- if ((CurIntf == XNANDPSU_NVDDR) && (NewIntf == XNANDPSU_SDR)) {
-
- NewModeVar = XNANDPSU_SDR0;
-
- /*
- * Change the clock frequency
- */
- XNandPsu_ChangeClockFreq(InstancePtr, XNANDPSU_SDR_CLK);
-
- /*
- * Update Data Interface Register
- */
- RegVal = ((NewModeVar % 6U) << ((NewIntf == XNANDPSU_NVDDR) ? 3U : 0U)) |
- ((u32)NewIntf << XNANDPSU_DATA_INTF_DATA_INTF_SHIFT);
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DATA_INTF_OFFSET, RegVal);
-
- for (Target = 0U; Target < InstancePtr->Geometry.NumTargets;
- Target++) {
- Status = XNandPsu_OnfiReset(InstancePtr, Target);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- }
-
- /*
- * Set Feature
- */
- for (Target = 0U; Target < InstancePtr->Geometry.NumTargets;
- Target++) {
- Status = XNandPsu_SetFeature(InstancePtr, Target, 0x01U,
- (u8 *)&NewModeVar);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- }
-
- InstancePtr->DataInterface = NewIntf;
- InstancePtr->TimingMode = NewModeVar;
-
- for (Target = 0U; Target < InstancePtr->Geometry.NumTargets;
- Target++) {
- Status = XNandPsu_GetFeature(InstancePtr, Target, 0x01U,
- &Buf[0]);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- /*
- * Check if set_feature was successful
- */
- if ((u32)*Feature != (u32)NewModeVar) {
- Status = XST_FAILURE;
- goto Out;
- }
- }
-
- goto Out;
- }
-
- SetFeature = NewModeVar;
- if(CurIntf == XNANDPSU_NVDDR && NewIntf == XNANDPSU_NVDDR){
- SetFeature |= SetFeature << 8U;
- }
- /*
- * Set Feature
- */
- for (Target = 0U; Target < InstancePtr->Geometry.NumTargets;
- Target++) {
- Status = XNandPsu_SetFeature(InstancePtr, Target, 0x01U,
- (u8 *)&SetFeature);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- }
-
- InstancePtr->DataInterface = NewIntf;
- InstancePtr->TimingMode = NewModeVar;
- /*
- * Update Data Interface Register
- */
- RegVal = ((NewMode % 6U) << ((NewIntf == XNANDPSU_NVDDR) ? 3U : 0U)) |
- ((u32)NewIntf << XNANDPSU_DATA_INTF_DATA_INTF_SHIFT);
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DATA_INTF_OFFSET, RegVal);
-
- /*
- * Get Feature
- */
- for (Target = 0U; Target < InstancePtr->Geometry.NumTargets;
- Target++) {
- Status = XNandPsu_GetFeature(InstancePtr, Target, 0x01U,
- &Buf[0]);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
-
- /*
- * Check if set_feature was successful
- */
- if (*Feature != NewModeVar) {
- Status = XST_FAILURE;
- goto Out;
- }
- }
-
- Status = XST_SUCCESS;
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function issues change read column and reads the data into buffer
-* specified by user.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Target is the chip select value.
-* @param Col is the coulmn address.
-* @param PktSize is the number of bytes to read.
-* @param PktCount is the number of transactions to read.
-* @param Buf is the data buffer to fill in.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-static s32 XNandPsu_ChangeReadColumn(XNandPsu *InstancePtr, u32 Target,
- u32 Col, u32 PktSize, u32 PktCount,
- u8 *Buf)
-{
- u32 AddrCycles = InstancePtr->Geometry.ColAddrCycles;
- u32 BufRdCnt = 0U;
- u32 *BufPtr = (u32 *)(void *)Buf;
- s32 Status = XST_FAILURE;
- u32 Index;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(Target < XNANDPSU_MAX_TARGETS);
- Xil_AssertNonvoid(Buf != NULL);
-
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
- /*
- * Enable DMA boundary Interrupt in Interrupt Status
- * Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK |
- XNANDPSU_INTR_STS_EN_DMA_INT_STS_EN_MASK);
- } else {
- /*
- * Enable Buffer Read Ready Interrupt in Interrupt Status
- * Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_BUFF_RD_RDY_STS_EN_MASK);
- }
- /*
- * Program Command
- */
- XNandPsu_Prepare_Cmd(InstancePtr, ONFI_CMD_CHNG_RD_COL1,
- ONFI_CMD_CHNG_RD_COL2, 0U , 1U, (u8)AddrCycles);
- /*
- * Program Page Size
- */
- XNandPsu_SetPageSize(InstancePtr);
- /*
- * Program Column, Page, Block address
- */
- XNandPsu_SetPageColAddr(InstancePtr, 0U, (u16)Col);
- /*
- * Program Packet Size and Packet Count
- */
- XNandPsu_SetPktSzCnt(InstancePtr, PktSize, PktCount);
- /*
- * Program DMA system address and DMA buffer boundary
- */
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
- /*
- * Invalidate the Data Cache
- */
- Xil_DCacheInvalidateRange((INTPTR)Buf, (PktSize * PktCount));
-#ifdef __aarch64__
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DMA_SYS_ADDR1_OFFSET,
- (u32) (((INTPTR)Buf >> 32) & 0xFFFFFFFFU));
-#endif
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DMA_SYS_ADDR0_OFFSET,
- (u32) ((INTPTR)(void *)Buf & 0xFFFFFFFFU));
- }
- /*
- * Set Bus Width
- */
- XNandPsu_SetBusWidth(InstancePtr);
- /*
- * Program Memory Address Register2 for chip select
- */
- XNandPsu_SelectChip(InstancePtr, Target);
- /*
- * Set Read command in Program Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_PROG_OFFSET,XNANDPSU_PROG_RD_MASK);
-
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
- goto ReadDmaDone;
- }
-
- while (BufRdCnt < PktCount) {
- /*
- * Poll for Buffer Read Ready event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for buf read ready timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Increment Buffer Read Interrupt Count
- */
- BufRdCnt++;
-
- if (BufRdCnt == PktCount) {
- /*
- * Enable Transfer Complete Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK);
- } else {
- /*
- * Clear Buffer Read Ready Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
-
- }
- /*
- * Clear Buffer Read Ready Interrupt in Interrupt Status
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK);
- /*
- * Read Packet Data from Data Port Register
- */
- for (Index = 0U; Index < (PktSize/4); Index++) {
- BufPtr[Index] = XNandPsu_ReadReg(
- InstancePtr->Config.BaseAddress,
- XNANDPSU_BUF_DATA_PORT_OFFSET);
- }
- BufPtr += (PktSize/4U);
-
- if (BufRdCnt < PktCount) {
- /*
- * Enable Buffer Read Ready Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_BUFF_RD_RDY_STS_EN_MASK);
- } else {
- break;
- }
- }
-ReadDmaDone:
- /*
- * Poll for Transfer Complete event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for xfer complete timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
-
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK);
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function issues change read column and reads the data into buffer
-* specified by user.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Target is the chip select value.
-* @param Col is the coulmn address.
-* @param PktSize is the number of bytes to read.
-* @param PktCount is the number of transactions to read.
-* @param Buf is the data buffer to fill in.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-static s32 XNandPsu_ChangeWriteColumn(XNandPsu *InstancePtr, u32 Target,
- u32 Col, u32 PktSize, u32 PktCount,
- u8 *Buf)
-{
- u32 AddrCycles = InstancePtr->Geometry.ColAddrCycles;
- u32 BufWrCnt = 0U;
- u32 *BufPtr = (u32 *)(void *)Buf;
- s32 Status = XST_FAILURE;
- OnfiCmdFormat OnfiCommand;
- u32 Index;
-
- /*
- * Assert the input arguments.
- */
- Xil_AssertNonvoid(Target < XNANDPSU_MAX_TARGETS);
- Xil_AssertNonvoid(Buf != NULL);
-
- if (PktCount == 0U) {
- return XST_SUCCESS;
- }
-
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
- /*
- * Enable DMA boundary Interrupt in Interrupt Status
- * Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK |
- XNANDPSU_INTR_STS_EN_DMA_INT_STS_EN_MASK);
- } else {
- /*
- * Enable Buffer Write Ready Interrupt in Interrupt Status
- * Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_BUFF_WR_RDY_STS_EN_MASK);
- }
- /*
- * Change write column hack
- */
- OnfiCommand.Command1 = 0x85U;
- OnfiCommand.Command2 = 0x10U;
- XNandPsu_Prepare_Cmd(InstancePtr, OnfiCommand.Command1,
- OnfiCommand.Command2, 0U , 0U, (u8)AddrCycles);
-
- /*
- * Program Page Size
- */
- XNandPsu_SetPageSize(InstancePtr);
- /*
- * Program Column, Page, Block address
- */
- XNandPsu_SetPageColAddr(InstancePtr, 0U, (u16)Col);
- /*
- * Program Packet Size and Packet Count
- */
- XNandPsu_SetPktSzCnt(InstancePtr, PktSize, PktCount);
- /*
- * Program DMA system address and DMA buffer boundary
- */
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
-#ifdef __aarch64__
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DMA_SYS_ADDR1_OFFSET,
- (u32) (((INTPTR)Buf >> 32U) & 0xFFFFFFFFU));
-#endif
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_DMA_SYS_ADDR0_OFFSET,
- (u32) ((INTPTR)(void *)Buf & 0xFFFFFFFFU));
- }
- /*
- * Set Bus Width
- */
- XNandPsu_SetBusWidth(InstancePtr);
- /*
- * Program Memory Address Register2 for chip select
- */
- XNandPsu_SelectChip(InstancePtr, Target);
- /*
- * Set Page Program in Program Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_PROG_OFFSET,XNANDPSU_PROG_CHNG_ROW_ADDR_END_MASK);
-
- if (InstancePtr->DmaMode == XNANDPSU_MDMA) {
- goto WriteDmaDone;
- }
-
- while (BufWrCnt < PktCount) {
- /*
- * Poll for Buffer Write Ready event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_WR_RDY_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for buf write ready timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Increment Buffer Write Interrupt Count
- */
- BufWrCnt++;
-
- if (BufWrCnt == PktCount) {
- /*
- * Enable Transfer Complete Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK);
- } else {
- /*
- * Clear Buffer Write Ready Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
- }
- /*
- * Clear Buffer Write Ready Interrupt in Interrupt Status
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_BUFF_WR_RDY_STS_EN_MASK);
- /*
- * Write Packet Data to Data Port Register
- */
- for (Index = 0U; Index < (PktSize/4U); Index++) {
- XNandPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XNANDPSU_BUF_DATA_PORT_OFFSET,
- BufPtr[Index]);
- }
- BufPtr += (PktSize/4U);
-
- if (BufWrCnt < PktCount) {
- /*
- * Enable Buffer Write Ready Interrupt in Interrupt
- * Status Enable Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET,
- XNANDPSU_INTR_STS_EN_BUFF_WR_RDY_STS_EN_MASK);
- } else {
- break;
- }
- }
-WriteDmaDone:
- /*
- * Poll for Transfer Complete event
- */
- Status = XNandPsu_PollRegTimeout(
- InstancePtr,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK,
- XNANDPSU_INTR_POLL_TIMEOUT);
- if (Status != XST_SUCCESS) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Poll for xfer complete timeout\r\n",
- __func__);
-#endif
- goto Out;
- }
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Enable
- * Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_EN_OFFSET, 0U);
-
- /*
- * Clear Transfer Complete Interrupt in Interrupt Status Register
- */
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_INTR_STS_OFFSET,
- XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK);
-
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function initializes extended parameter page ECC information.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param ExtPrm is the Extended parameter page buffer.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if failed.
-*
-* @note None
-*
-******************************************************************************/
-static s32 XNandPsu_InitExtEcc(XNandPsu *InstancePtr, OnfiExtPrmPage *ExtPrm)
-{
- s32 Status = XST_FAILURE;
- u32 Index;
- u32 SectionType;
- u32 SectionLen;
- u32 Offset = 0U;
- u32 Found = 0U;
- OnfiExtEccBlock *EccBlock;
-
- if (ExtPrm->Section0Type != 0x2U) {
- Offset += (u32)ExtPrm->Section0Len;
- if (ExtPrm->Section1Type != 0x2U) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Extended ECC section not found\r\n",__func__);
-#endif
- Status = XST_FAILURE;
- } else {
- Found = 1U;
- }
- } else {
- Found = 1U;
- }
-
- if (Found != 0U) {
- EccBlock = (OnfiExtEccBlock *)&ExtPrm->SectionData[Offset];
- Xil_AssertNonvoid(EccBlock != NULL);
- if (EccBlock->CodeWordSize == 0U) {
- Status = XST_FAILURE;
- } else {
- InstancePtr->Geometry.NumBitsECC =
- EccBlock->NumBitsEcc;
- InstancePtr->Geometry.EccCodeWordSize =
- (u32)EccBlock->CodeWordSize;
- Status = XST_SUCCESS;
- }
- }
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function prepares command to be written into command register.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Cmd1 is the first Onfi Command.
-* @param Cmd1 is the second Onfi Command.
-* @param EccState is the flag to set Ecc State.
-* @param DmaMode is the flag to set DMA mode.
-*
-* @return
-* None
-*
-* @note None
-*
-******************************************************************************/
-void XNandPsu_Prepare_Cmd(XNandPsu *InstancePtr, u8 Cmd1, u8 Cmd2, u8 EccState,
- u8 DmaMode, u8 AddrCycles)
-{
- u32 RegValue = 0U;
-
- Xil_AssertVoid(InstancePtr != NULL);
-
- RegValue = (u32)Cmd1 | (((u32)Cmd2 << (u32)XNANDPSU_CMD_CMD2_SHIFT) &
- (u32)XNANDPSU_CMD_CMD2_MASK);
-
- if ((EccState != 0U) && (InstancePtr->EccMode == XNANDPSU_HWECC)) {
- RegValue |= 1U << XNANDPSU_CMD_ECC_ON_SHIFT;
- }
-
- if ((DmaMode != 0U) && (InstancePtr->DmaMode == XNANDPSU_MDMA)) {
- RegValue |= XNANDPSU_MDMA << XNANDPSU_CMD_DMA_EN_SHIFT;
- }
-
- if (AddrCycles != 0U) {
- RegValue |= (u32)AddrCycles <<
- (u32)XNANDPSU_CMD_ADDR_CYCLES_SHIFT;
- }
-
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress,
- XNANDPSU_CMD_OFFSET, RegValue);
-}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu.h
deleted file mode 100644
index 134116f2b..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu.h
+++ /dev/null
@@ -1,584 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xnandpsu.h
-*
-* This file implements a driver to support Arasan NAND controller
-* present in Zynq Ultrascale Mp.
-*
-* Driver Initialization
-*
-* The function call XNandPsu_CfgInitialize() should be called by the application
-* before any other function in the driver. The initialization function takes
-* device specific data (like device id, instance id, and base address) and
-* initializes the XNandPsu instance with the device specific data.
-*
-* Device Geometry
-*
-* NAND flash device is memory device and it is segmented into areas called
-* Logical Unit(s) (LUN) and further in to blocks and pages. A NAND flash device
-* can have multiple LUN. LUN is sequential raw of multiple blocks of the same
-* size. A block is the smallest erasable unit of data within the Flash array of
-* a LUN. The size of each block is based on a power of 2. There is no
-* restriction on the number of blocks within the LUN. A block contains a number
-* of pages. A page is the smallest addressable unit for read and program
-* operations. The arrangement of LUN, blocks, and pages is referred to by this
-* module as the part's geometry.
-*
-* The cells within the part can be programmed from a logic 1 to a logic 0
-* and not the other way around. To change a cell back to a logic 1, the
-* entire block containing that cell must be erased. When a block is erased
-* all bytes contain the value 0xFF. The number of times a block can be
-* erased is finite. Eventually the block will wear out and will no longer
-* be capable of erasure. As of this writing, the typical flash block can
-* be erased 100,000 or more times.
-*
-* The jobs done by this driver typically are:
-* - 8-bit operational mode
-* - Read, Write, and Erase operation
-*
-* Write Operation
-*
-* The write call can be used to write a minimum of one byte and a maximum
-* entire flash. If the address offset specified to write is out of flash or if
-* the number of bytes specified from the offset exceed flash boundaries
-* an error is reported back to the user. The write is blocking in nature in that
-* the control is returned back to user only after the write operation is
-* completed successfully or an error is reported.
-*
-* Read Operation
-*
-* The read call can be used to read a minimum of one byte and maximum of
-* entire flash. If the address offset specified to read is out of flash or if
-* the number of bytes specified from the offset exceed flash boundaries
-* an error is reported back to the user. The read is blocking in nature in that
-* the control is returned back to user only after the read operation is
-* completed successfully or an error is reported.
-*
-* Erase Operation
-*
-* The erase operations are provided to erase a Block in the Flash memory. The
-* erase call is blocking in nature in that the control is returned back to user
-* only after the erase operation is completed successfully or an error is
-* reported.
-*
-* @note Driver has been renamed to nandpsu after change in
-* naming convention.
-*
-* This driver is intended to be RTOS and processor independent. It works with
-* physical addresses only. Any needs for dynamic memory management, threads,
-* mutual exclusion, virtual memory, cache control, or HW write protection
-* management must be satisfied by the layer above this driver.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- ---------- -----------------------------------------------
-* 1.0 nm 05/06/2014 First release
-* 2.0 sb 01/12/2015 Removed Null checks for Buffer passed
-* as parameter to Read API's
-* - XNandPsu_Read()
-* - XNandPsu_ReadPage
-* Modified
-* - XNandPsu_SetFeature()
-* - XNandPsu_GetFeature()
-* and made them public.
-* Removed Failure Return for BCF Error check in
-* XNandPsu_ReadPage() and added BCH_Error counter
-* in the instance pointer structure.
-* Added XNandPsu_Prepare_Cmd API
-* Replaced
-* - XNandPsu_IntrStsEnable
-* - XNandPsu_IntrStsClear
-* - XNandPsu_IntrClear
-* - XNandPsu_SetProgramReg
-* with XNandPsu_WriteReg call
-* Modified xnandpsu.c file API's with above changes.
-* Corrected the program command for Set Feature API.
-* Modified
-* - XNandPsu_OnfiReadStatus
-* - XNandPsu_GetFeature
-* - XNandPsu_SetFeature
-* to add support for DDR mode.
-* Changed Convention for SLC/MLC
-* SLC --> HAMMING
-* MLC --> BCH
-* SlcMlc --> IsBCH
-* Added support for writing BBT signature and version
-* in page section by enabling XNANDPSU_BBT_NO_OOB.
-* Removed extra DMA mode initialization from
-* the XNandPsu_CfgInitialize API.
-* Modified
-* - XNandPsu_SetEccAddrSize
-* ECC address now is calculated based upon the
-* size of spare area
-* Modified Block Erase API, removed clearing of
-* packet register before erase.
-* Clearing Data Interface Register before
-* XNandPsu_OnfiReset call.
-* Modified XNandPsu_ChangeTimingMode API supporting
-* SDR and NVDDR interface for timing modes 0 to 5.
-* Modified Bbt Signature and Version Offset value for
-* Oob and No-Oob region.
-*
-*
-******************************************************************************/
-
-#ifndef XNANDPSU_H /* prevent circular inclusions */
-#define XNANDPSU_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-#include "xil_types.h"
-#include
-#include "xstatus.h"
-#include "xil_assert.h"
-#include "xnandpsu_hw.h"
-#include "xnandpsu_onfi.h"
-#include "xil_cache.h"
-/************************** Constant Definitions *****************************/
-
-#define XNANDPSU_DEBUG
-
-#define XNANDPSU_MAX_TARGETS 1U /**< ce_n0, ce_n1 */
-#define XNANDPSU_MAX_PKT_SIZE 0x7FFU /**< Max packet size */
-#define XNANDPSU_MAX_PKT_COUNT 0xFFFU /**< Max packet count */
-
-#define XNANDPSU_PAGE_SIZE_512 512U /**< 512 bytes page */
-#define XNANDPSU_PAGE_SIZE_2K 2048U /**< 2K bytes page */
-#define XNANDPSU_PAGE_SIZE_4K 4096U /**< 4K bytes page */
-#define XNANDPSU_PAGE_SIZE_8K 8192U /**< 8K bytes page */
-#define XNANDPSU_PAGE_SIZE_16K 16384U /**< 16K bytes page */
-#define XNANDPSU_PAGE_SIZE_1K_16BIT 1024U /**< 16-bit 2K bytes page */
-#define XNANDPSU_MAX_PAGE_SIZE 16384U /**< Max page size supported */
-
-#define XNANDPSU_BUS_WIDTH_8 0U /**< 8-bit bus width */
-#define XNANDPSU_BUS_WIDTH_16 1U /**< 16-bit bus width */
-
-#define XNANDPSU_HAMMING 0x1U /**< Hamming Flash */
-#define XNANDPSU_BCH 0x2U /**< BCH Flash */
-
-#define XNANDPSU_MAX_BLOCKS 32768U /**< Max number of Blocks */
-#define XNANDPSU_MAX_SPARE_SIZE 0x800U /**< Max spare bytes of a NAND
- flash page of 16K */
-
-#define XNANDPSU_INTR_POLL_TIMEOUT 10000U
-
-#define XNANDPSU_SDR_CLK ((u16)100U * (u16)1000U * (u16)1000U)
-#define XNANDPSU_NVDDR_CLK_0 ((u16)20U * (u16)1000U * (u16)1000U)
-#define XNANDPSU_NVDDR_CLK_1 ((u16)33U * (u16)1000U * (u16)1000U)
-#define XNANDPSU_NVDDR_CLK_2 ((u16)50U * (u16)1000U * (u16)1000U)
-#define XNANDPSU_NVDDR_CLK_3 ((u16)66U * (u16)1000U * (u16)1000U)
-#define XNANDPSU_NVDDR_CLK_4 ((u16)83U * (u16)1000U * (u16)1000U)
-#define XNANDPSU_NVDDR_CLK_5 ((u16)100U * (u16)1000U * (u16)1000U)
-
-/**
- * The XNandPsu_Config structure contains configuration information for NAND
- * controller.
- */
-typedef struct {
- u16 DeviceId; /**< Instance ID of NAND flash controller */
- u32 BaseAddress; /**< Base address of NAND flash controller */
-} XNandPsu_Config;
-
-/**
- * The XNandPsu_DataInterface enum contains flash operating mode.
- */
-typedef enum {
- XNANDPSU_SDR = 0U, /**< Single Data Rate */
- XNANDPSU_NVDDR /**< Double Data Rate */
-} XNandPsu_DataInterface;
-
-/**
- * XNandPsu_TimingMode enum contains timing modes.
- */
-typedef enum {
- XNANDPSU_SDR0 = 0U,
- XNANDPSU_SDR1,
- XNANDPSU_SDR2,
- XNANDPSU_SDR3,
- XNANDPSU_SDR4,
- XNANDPSU_SDR5,
- XNANDPSU_NVDDR0,
- XNANDPSU_NVDDR1,
- XNANDPSU_NVDDR2,
- XNANDPSU_NVDDR3,
- XNANDPSU_NVDDR4,
- XNANDPSU_NVDDR5
-} XNandPsu_TimingMode;
-
-/**
- * The XNandPsu_SWMode enum contains the driver operating mode.
- */
-typedef enum {
- XNANDPSU_POLLING = 0, /**< Polling */
- XNANDPSU_INTERRUPT /**< Interrupt */
-} XNandPsu_SWMode;
-
-/**
- * The XNandPsu_DmaMode enum contains the controller MDMA mode.
- */
-typedef enum {
- XNANDPSU_PIO = 0, /**< PIO Mode */
- XNANDPSU_SDMA, /**< SDMA Mode */
- XNANDPSU_MDMA /**< MDMA Mode */
-} XNandPsu_DmaMode;
-
-/**
- * The XNandPsu_EccMode enum contains ECC functionality.
- */
-typedef enum {
- XNANDPSU_NONE = 0,
- XNANDPSU_HWECC,
- XNANDPSU_EZNAND,
- XNANDPSU_ONDIE
-} XNandPsu_EccMode;
-
-/**
- * The XNandPsu_BbtOption enum contains the BBT storage option.
- */
-typedef enum {
- XNANDPSU_BBT_OOB = 0, /**< OOB area */
- XNANDPSU_BBT_NO_OOB, /**< No OOB i.e page area */
-} XNandPsu_BbtOption;
-
-/**
- * Bad block table descriptor
- */
-typedef struct {
- u32 PageOffset[XNANDPSU_MAX_TARGETS];
- /**< Page offset where BBT resides */
- u32 SigOffset; /**< Signature offset in Spare area */
- u32 VerOffset; /**< Offset of BBT version */
- u32 SigLength; /**< Length of the signature */
- u32 MaxBlocks; /**< Max blocks to search for BBT */
- char Signature[4]; /**< BBT signature */
- u8 Version[XNANDPSU_MAX_TARGETS];
- /**< BBT version */
- u32 Valid; /**< BBT descriptor is valid or not */
- XNandPsu_BbtOption Option; /**< BBT Oob option enabled/disabled */
-} XNandPsu_BbtDesc;
-
-/**
- * Bad block pattern
- */
-typedef struct {
- u32 Options; /**< Options to search the bad block pattern */
- u32 Offset; /**< Offset to search for specified pattern */
- u32 Length; /**< Number of bytes to check the pattern */
- u8 Pattern[2]; /**< Pattern format to search for */
-} XNandPsu_BadBlockPattern;
-
-/**
- * The XNandPsu_Geometry structure contains the ONFI geometry information.
- */
-typedef struct {
- /*
- * Parameter page information
- */
- u32 BytesPerPage; /**< Number of bytes per page */
- u16 SpareBytesPerPage; /**< Number of spare bytes per page */
- u32 PagesPerBlock; /**< Number of pages per block */
- u32 BlocksPerLun; /**< Number of blocks per LUN */
- u8 NumLuns; /**< Number of LUN's */
- u8 RowAddrCycles; /**< Row address cycles */
- u8 ColAddrCycles; /**< Column address cycles */
- u8 NumBitsPerCell; /**< Number of bits per cell (Hamming/BCH) */
- u8 NumBitsECC; /**< Number of bits ECC correctability */
- u32 EccCodeWordSize; /**< ECC codeword size */
- /*
- * Driver specific information
- */
- u32 BlockSize; /**< Block size */
- u32 NumTargetPages; /**< Total number of pages in a Target */
- u32 NumTargetBlocks; /**< Total number of blocks in a Target */
- u64 TargetSize; /**< Target size in bytes */
- u8 NumTargets; /**< Number of targets present */
- u32 NumPages; /**< Total number of pages */
- u32 NumBlocks; /**< Total number of blocks */
- u64 DeviceSize; /**< Total flash size in bytes */
-} XNandPsu_Geometry;
-
-/**
- * The XNandPsu_Features structure contains the ONFI features information.
- */
-typedef struct {
- u32 BusWidth;
- u32 NvDdr;
- u32 EzNand;
- u32 OnDie;
- u32 ExtPrmPage;
-} XNandPsu_Features;
-
-/**
- * The XNandPsu_EccMatrix structure contains ECC features information.
- */
-typedef struct {
- u16 PageSize;
- u16 CodeWordSize;
- u8 NumEccBits;
- u8 IsBCH;
- u16 EccAddr;
- u16 EccSize;
-} XNandPsu_EccMatrix;
-
-/**
- * The XNandPsu_EccCfg structure contains ECC configuration.
- */
-typedef struct {
- u16 EccAddr;
- u16 EccSize;
- u16 CodeWordSize;
- u8 NumEccBits;
- u8 IsBCH;
-} XNandPsu_EccCfg;
-
-/**
- * The XNandPsu structure contains the driver instance data. The user is
- * required to allocate a variable of this type for the NAND controller.
- * A pointer to a variable of this type is then passed to the driver API
- * functions.
- */
-typedef struct {
- u32 IsReady; /**< Device is initialized and ready */
- XNandPsu_Config Config;
- u16 Ecc_Stat_PerPage_flips; /**< Ecc Correctable Error Counter for Current Page */
- u32 Ecc_Stats_total_flips; /**< Total Ecc Errors Corrected */
- XNandPsu_DataInterface DataInterface;
- XNandPsu_TimingMode TimingMode;
- XNandPsu_SWMode Mode; /**< Driver operating mode */
- XNandPsu_DmaMode DmaMode; /**< MDMA mode enabled/disabled */
- XNandPsu_EccMode EccMode; /**< ECC Mode */
- XNandPsu_EccCfg EccCfg; /**< ECC configuration */
- XNandPsu_Geometry Geometry; /**< Flash geometry */
- XNandPsu_Features Features; /**< ONFI features */
- u8 PartialDataBuf[XNANDPSU_MAX_PAGE_SIZE] __attribute__ ((aligned(64)));
- /**< Partial read/write buffer */
- /* Bad block table definitions */
- XNandPsu_BbtDesc BbtDesc; /**< Bad block table descriptor */
- XNandPsu_BbtDesc BbtMirrorDesc; /**< Mirror BBT descriptor */
- XNandPsu_BadBlockPattern BbPattern; /**< Bad block pattern to
- search */
- u8 Bbt[XNANDPSU_MAX_BLOCKS >> 2]; /**< Bad block table array */
-} XNandPsu;
-
-/******************* Macro Definitions (Inline Functions) *******************/
-
-/*****************************************************************************/
-/**
- * This macro sets the bitmask in the register.
- *
- * @param InstancePtr is a pointer to the XNandPsu instance of the
- * controller.
- * @param RegOffset is the register offset.
- * @param BitMask is the bitmask.
- *
- * @note C-style signature:
- * void XNandPsu_SetBits(XNandPsu *InstancePtr, u32 RegOffset,
- * u32 BitMask)
- *
- *****************************************************************************/
-#define XNandPsu_SetBits(InstancePtr, RegOffset, BitMask) \
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress, \
- (RegOffset), \
- ((u32)(XNandPsu_ReadReg((InstancePtr)->Config.BaseAddress, \
- (RegOffset)) | (BitMask))))
-
-/*****************************************************************************/
-/**
- * This macro clears the bitmask in the register.
- *
- * @param InstancePtr is a pointer to the XNandPsu instance of the
- * controller.
- * @param RegOffset is the register offset.
- * @param BitMask is the bitmask.
- *
- * @note C-style signature:
- * void XNandPsu_ClrBits(XNandPsu *InstancePtr, u32 RegOffset,
- * u32 BitMask)
- *
- *****************************************************************************/
-#define XNandPsu_ClrBits(InstancePtr, RegOffset, BitMask) \
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress, \
- (RegOffset), \
- ((u32)(XNandPsu_ReadReg((InstancePtr)->Config.BaseAddress, \
- (RegOffset)) & ~(BitMask))))
-
-/*****************************************************************************/
-/**
- * This macro clears and updates the bitmask in the register.
- *
- * @param InstancePtr is a pointer to the XNandPsu instance of the
- * controller.
- * @param RegOffset is the register offset.
- * @param Mask is the bitmask.
- * @param Value is the register value to write.
- *
- * @note C-style signature:
- * void XNandPsu_ReadModifyWrite(XNandPsu *InstancePtr,
- * u32 RegOffset, u32 Mask, u32 Val)
- *
- *****************************************************************************/
-#define XNandPsu_ReadModifyWrite(InstancePtr, RegOffset, Mask, Value) \
- XNandPsu_WriteReg((InstancePtr)->Config.BaseAddress, \
- (RegOffset), \
- ((u32)((u32)(XNandPsu_ReadReg((InstancePtr)->Config.BaseAddress,\
- (u32)(RegOffset)) & (u32)(~(Mask))) | (u32)(Value))))
-
-/*****************************************************************************/
-/**
- * This macro enables bitmask in Interrupt Signal Enable register.
- *
- * @param InstancePtr is a pointer to the XNandPsu instance of the
- * controller.
- * @param Mask is the bitmask.
- *
- * @note C-style signature:
- * void XNandPsu_IntrSigEnable(XNandPsu *InstancePtr, u32 Mask)
- *
- *****************************************************************************/
-#define XNandPsu_IntrSigEnable(InstancePtr, Mask) \
- XNandPsu_SetBits((InstancePtr), \
- XNANDPSU_INTR_SIG_EN_OFFSET, \
- (Mask))
-
-/*****************************************************************************/
-/**
- * This macro clears bitmask in Interrupt Signal Enable register.
- *
- * @param InstancePtr is a pointer to the XNandPsu instance of the
- * controller.
- * @param Mask is the bitmask.
- *
- * @note C-style signature:
- * void XNandPsu_IntrSigClear(XNandPsu *InstancePtr, u32 Mask)
- *
- *****************************************************************************/
-#define XNandPsu_IntrSigClear(InstancePtr, Mask) \
- XNandPsu_ClrBits((InstancePtr), \
- XNANDPSU_INTR_SIG_EN_OFFSET, \
- (Mask))
-
-/*****************************************************************************/
-/**
- * This macro enables bitmask in Interrupt Status Enable register.
- *
- * @param InstancePtr is a pointer to the XNandPsu instance of the
- * controller.
- * @param Mask is the bitmask.
- *
- * @note C-style signature:
- * void XNandPsu_IntrStsEnable(XNandPsu *InstancePtr, u32 Mask)
- *
- *****************************************************************************/
-#define XNandPsu_IntrStsEnable(InstancePtr, Mask) \
- XNandPsu_SetBits((InstancePtr), \
- XNANDPSU_INTR_STS_EN_OFFSET, \
- (Mask))
-
-/*****************************************************************************/
-/**
- * This macro checks for the ONFI ID.
- *
- * @param Buff is the buffer holding ONFI ID
- *
- * @note none.
- *
- *****************************************************************************/
-#define IS_ONFI(Buff) \
- (Buff[0] == (u8)'O') && (Buff[1] == (u8)'N') && \
- (Buff[2] == (u8)'F') && (Buff[3] == (u8)'I')
-
-/************************** Function Prototypes *****************************/
-
-s32 XNandPsu_CfgInitialize(XNandPsu *InstancePtr, XNandPsu_Config *ConfigPtr,
- u32 EffectiveAddr);
-
-s32 XNandPsu_Erase(XNandPsu *InstancePtr, u64 Offset, u64 Length);
-
-s32 XNandPsu_Write(XNandPsu *InstancePtr, u64 Offset, u64 Length,
- u8 *SrcBuf);
-
-s32 XNandPsu_Read(XNandPsu *InstancePtr, u64 Offset, u64 Length,
- u8 *DestBuf);
-
-s32 XNandPsu_EraseBlock(XNandPsu *InstancePtr, u32 Target, u32 Block);
-
-s32 XNandPsu_WriteSpareBytes(XNandPsu *InstancePtr, u32 Page, u8 *Buf);
-
-s32 XNandPsu_ReadSpareBytes(XNandPsu *InstancePtr, u32 Page, u8 *Buf);
-
-s32 XNandPsu_ChangeTimingMode(XNandPsu *InstancePtr,
- XNandPsu_DataInterface NewIntf,
- XNandPsu_TimingMode NewMode);
-
-s32 XNandPsu_GetFeature(XNandPsu *InstancePtr, u32 Target, u8 Feature,
- u8 *Buf);
-
-s32 XNandPsu_SetFeature(XNandPsu *InstancePtr, u32 Target, u8 Feature,
- u8 *Buf);
-
-s32 XNandPsu_ScanBbt(XNandPsu *InstancePtr);
-
-s32 XNandPsu_MarkBlockBad(XNandPsu *InstancePtr, u32 Block);
-
-void XNandPsu_EnableDmaMode(XNandPsu *InstancePtr);
-
-void XNandPsu_DisableDmaMode(XNandPsu *InstancePtr);
-
-void XNandPsu_EnableEccMode(XNandPsu *InstancePtr);
-
-void XNandPsu_DisableEccMode(XNandPsu *InstancePtr);
-
-void XNandPsu_Prepare_Cmd(XNandPsu *InstancePtr, u8 Cmd1, u8 Cmd2, u8 EccState,
- u8 DmaMode, u8 AddrCycles);
-
-void XNandPsu_EnableBbtOobMode(XNandPsu *InstancePtr);
-
-void XNandPsu_DisableBbtOobMode(XNandPsu *InstancePtr);
-/*
- * XNandPsu_LookupConfig in xnandpsu_sinit.c
- */
-XNandPsu_Config *XNandPsu_LookupConfig(u16 DeviceID);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* XNANDPSU_H end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_bbm.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_bbm.c
deleted file mode 100644
index 2410f7af6..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_bbm.c
+++ /dev/null
@@ -1,1087 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xnandpsu_bbm.c
-*
-* This file implements the Bad Block Management (BBM) functionality.
-* See xnandpsu_bbm.h for more details.
-*
-* @note None
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- ---------- -----------------------------------------------
-* 1.0 nm 05/06/2014 First release
-* 2.0 sb 01/12/2015 Added support for writing BBT signature and version
-* in page section by enabling XNANDPSU_BBT_NO_OOB.
-* Modified Bbt Signature and Version Offset value for
-* Oob and No-Oob region.
-*
-*
-******************************************************************************/
-
-/***************************** Include Files *********************************/
-#include /**< For memcpy and memset */
-#include "xil_types.h"
-#include "xnandpsu.h"
-#include "xnandpsu_bbm.h"
-
-/************************** Constant Definitions *****************************/
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/************************** Function Prototypes ******************************/
-static s32 XNandPsu_ReadBbt(XNandPsu *InstancePtr, u32 Target);
-
-static s32 XNandPsu_SearchBbt(XNandPsu *InstancePtr, XNandPsu_BbtDesc *Desc,
- u32 Target);
-
-static void XNandPsu_CreateBbt(XNandPsu *InstancePtr, u32 Target);
-
-static void XNandPsu_ConvertBbt(XNandPsu *InstancePtr, u8 *Buf, u32 Target);
-
-static s32 XNandPsu_WriteBbt(XNandPsu *InstancePtr, XNandPsu_BbtDesc *Desc,
- XNandPsu_BbtDesc *MirrorDesc, u32 Target);
-
-static s32 XNandPsu_MarkBbt(XNandPsu* InstancePtr, XNandPsu_BbtDesc *Desc,
- u32 Target);
-
-static s32 XNandPsu_UpdateBbt(XNandPsu *InstancePtr, u32 Target);
-
-/************************** Variable Definitions *****************************/
-
-/*****************************************************************************/
-/**
-* This function initializes the Bad Block Table(BBT) descriptors with a
-* predefined pattern for searching Bad Block Table(BBT) in flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-*
-* @return
-* - NONE
-*
-******************************************************************************/
-void XNandPsu_InitBbtDesc(XNandPsu *InstancePtr)
-{
- u32 Index;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- /*
- * Initialize primary Bad Block Table(BBT)
- */
- InstancePtr->BbtDesc.Option = XNANDPSU_BBT_OOB;
- for (Index = 0U; Index < XNANDPSU_MAX_TARGETS; Index++) {
- InstancePtr->BbtDesc.PageOffset[Index] =
- XNANDPSU_BBT_DESC_PAGE_OFFSET;
- }
- if(InstancePtr->BbtDesc.Option == XNANDPSU_BBT_OOB) {
- if (InstancePtr->EccMode == XNANDPSU_ONDIE) {
- InstancePtr->BbtDesc.SigOffset =
- XNANDPSU_ONDIE_SIG_OFFSET;
- InstancePtr->BbtDesc.VerOffset =
- XNANDPSU_ONDIE_VER_OFFSET;
- } else {
- InstancePtr->BbtDesc.SigOffset =
- XNANDPSU_BBT_DESC_SIG_OFFSET;
- InstancePtr->BbtDesc.VerOffset =
- XNANDPSU_BBT_DESC_VER_OFFSET;
- }
- } else {
- InstancePtr->BbtDesc.SigOffset =
- XNANDPSU_NO_OOB_BBT_DESC_SIG_OFFSET;
- InstancePtr->BbtDesc.VerOffset =
- XNANDPSU_NO_OOB_BBT_DESC_VER_OFFSET;
- }
- InstancePtr->BbtDesc.SigLength = XNANDPSU_BBT_DESC_SIG_LEN;
- InstancePtr->BbtDesc.MaxBlocks = XNANDPSU_BBT_DESC_MAX_BLOCKS;
- (void)strcpy(&InstancePtr->BbtDesc.Signature[0], "Bbt0");
- for (Index = 0U; Index < XNANDPSU_MAX_TARGETS; Index++) {
- InstancePtr->BbtDesc.Version[Index] = 0U;
- }
- InstancePtr->BbtDesc.Valid = 0U;
-
- /*
- * Assuming that the flash device will have at least 4 blocks.
- */
- if (InstancePtr->Geometry.NumTargetBlocks <= InstancePtr->
- BbtDesc.MaxBlocks){
- InstancePtr->BbtDesc.MaxBlocks = 4U;
- }
-
- /*
- * Initialize mirror Bad Block Table(BBT)
- */
- InstancePtr->BbtMirrorDesc.Option = XNANDPSU_BBT_OOB;
- for (Index = 0U; Index < XNANDPSU_MAX_TARGETS; Index++) {
- InstancePtr->BbtMirrorDesc.PageOffset[Index] =
- XNANDPSU_BBT_DESC_PAGE_OFFSET;
- }
- if(InstancePtr->BbtMirrorDesc.Option == XNANDPSU_BBT_OOB) {
- if (InstancePtr->EccMode == XNANDPSU_ONDIE) {
- InstancePtr->BbtMirrorDesc.SigOffset =
- XNANDPSU_ONDIE_SIG_OFFSET;
- InstancePtr->BbtMirrorDesc.VerOffset =
- XNANDPSU_ONDIE_VER_OFFSET;
- } else {
- InstancePtr->BbtMirrorDesc.SigOffset =
- XNANDPSU_BBT_DESC_SIG_OFFSET;
- InstancePtr->BbtMirrorDesc.VerOffset =
- XNANDPSU_BBT_DESC_VER_OFFSET;
- }
- } else {
- InstancePtr->BbtMirrorDesc.SigOffset =
- XNANDPSU_NO_OOB_BBT_DESC_SIG_OFFSET;
- InstancePtr->BbtMirrorDesc.VerOffset =
- XNANDPSU_NO_OOB_BBT_DESC_VER_OFFSET;
- }
- InstancePtr->BbtMirrorDesc.SigLength = XNANDPSU_BBT_DESC_SIG_LEN;
- InstancePtr->BbtMirrorDesc.MaxBlocks = XNANDPSU_BBT_DESC_MAX_BLOCKS;
- (void)strcpy(&InstancePtr->BbtMirrorDesc.Signature[0], "1tbB");
- for (Index = 0U; Index < XNANDPSU_MAX_TARGETS; Index++) {
- InstancePtr->BbtMirrorDesc.Version[Index] = 0U;
- }
- InstancePtr->BbtMirrorDesc.Valid = 0U;
-
- /*
- * Assuming that the flash device will have at least 4 blocks.
- */
- if (InstancePtr->Geometry.NumTargetBlocks <= InstancePtr->
- BbtMirrorDesc.MaxBlocks){
- InstancePtr->BbtMirrorDesc.MaxBlocks = 4U;
- }
-
- /*
- * Initialize Bad block search pattern structure
- */
- if (InstancePtr->Geometry.BytesPerPage > 512U) {
- /* For flash page size > 512 bytes */
- InstancePtr->BbPattern.Options = XNANDPSU_BBT_SCAN_2ND_PAGE;
- InstancePtr->BbPattern.Offset =
- XNANDPSU_BB_PTRN_OFF_LARGE_PAGE;
- InstancePtr->BbPattern.Length =
- XNANDPSU_BB_PTRN_LEN_LARGE_PAGE;
- } else {
- InstancePtr->BbPattern.Options = XNANDPSU_BBT_SCAN_2ND_PAGE;
- InstancePtr->BbPattern.Offset =
- XNANDPSU_BB_PTRN_OFF_SML_PAGE;
- InstancePtr->BbPattern.Length =
- XNANDPSU_BB_PTRN_LEN_SML_PAGE;
- }
- for(Index = 0U; Index < XNANDPSU_BB_PTRN_LEN_LARGE_PAGE; Index++) {
- InstancePtr->BbPattern.Pattern[Index] = XNANDPSU_BB_PATTERN;
- }
-}
-
-/*****************************************************************************/
-/**
-* This function scans the NAND flash for factory marked bad blocks and creates
-* a RAM based Bad Block Table(BBT).
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-*
-* @return
-* - NONE
-*
-******************************************************************************/
-static void XNandPsu_CreateBbt(XNandPsu *InstancePtr, u32 Target)
-{
- u32 BlockIndex;
- u32 PageIndex;
- u32 Length;
- u32 BlockOffset;
- u8 BlockShift;
- u32 NumPages;
- u32 Page;
- u8 Buf[XNANDPSU_MAX_SPARE_SIZE] __attribute__ ((aligned(64))) = {0U};
- u32 StartBlock = Target * InstancePtr->Geometry.NumTargetBlocks;
- u32 NumBlocks = InstancePtr->Geometry.NumTargetBlocks;
- s32 Status;
-
- /*
- * Number of pages to search for bad block pattern
- */
- if ((InstancePtr->BbPattern.Options & XNANDPSU_BBT_SCAN_2ND_PAGE) != 0U)
- {
- NumPages = 2U;
- } else {
- NumPages = 1U;
- }
- /*
- * Scan all the blocks for factory marked bad blocks
- */
- for(BlockIndex = StartBlock; BlockIndex < (StartBlock + NumBlocks);
- BlockIndex++) {
- /*
- * Block offset in Bad Block Table(BBT) entry
- */
- BlockOffset = BlockIndex >> XNANDPSU_BBT_BLOCK_SHIFT;
- /*
- * Block shift value in the byte
- */
- BlockShift = XNandPsu_BbtBlockShift(BlockIndex);
- Page = BlockIndex * InstancePtr->Geometry.PagesPerBlock;
- /*
- * Search for the bad block pattern
- */
- for(PageIndex = 0U; PageIndex < NumPages; PageIndex++) {
- Status = XNandPsu_ReadSpareBytes(InstancePtr,
- (Page + PageIndex), &Buf[0]);
-
- if (Status != XST_SUCCESS) {
- /* Marking as bad block */
- InstancePtr->Bbt[BlockOffset] |=
- (u8)(XNANDPSU_BLOCK_FACTORY_BAD <<
- BlockShift);
- break;
- }
- /*
- * Read the spare bytes to check for bad block
- * pattern
- */
- for(Length = 0U; Length <
- InstancePtr->BbPattern.Length; Length++) {
- if (Buf[InstancePtr->BbPattern.Offset + Length]
- !=
- InstancePtr->BbPattern.Pattern[Length])
- {
- /* Bad block found */
- InstancePtr->Bbt[BlockOffset] |=
- (u8)
- (XNANDPSU_BLOCK_FACTORY_BAD <<
- BlockShift);
- break;
- }
- }
- }
- }
-}
-
-/*****************************************************************************/
-/**
-* This function reads the Bad Block Table(BBT) if present in flash. If not it
-* scans the flash for detecting factory marked bad blocks and creates a bad
-* block table and write the Bad Block Table(BBT) into the flash.
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if fail.
-*
-******************************************************************************/
-s32 XNandPsu_ScanBbt(XNandPsu *InstancePtr)
-{
- s32 Status;
- u32 Index;
- u32 BbtLen;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- /*
- * Zero the RAM based Bad Block Table(BBT) entries
- */
- BbtLen = InstancePtr->Geometry.NumBlocks >>
- XNANDPSU_BBT_BLOCK_SHIFT;
- memset(&InstancePtr->Bbt[0], 0, BbtLen);
-
- for (Index = 0U; Index < InstancePtr->Geometry.NumTargets; Index++) {
-
- if (XNandPsu_ReadBbt(InstancePtr, Index) != XST_SUCCESS) {
- /*
- * Create memory based Bad Block Table(BBT)
- */
- XNandPsu_CreateBbt(InstancePtr, Index);
- /*
- * Write the Bad Block Table(BBT) to the flash
- */
- Status = XNandPsu_WriteBbt(InstancePtr,
- &InstancePtr->BbtDesc,
- &InstancePtr->BbtMirrorDesc, Index);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- /*
- * Write the Mirror Bad Block Table(BBT) to the flash
- */
- Status = XNandPsu_WriteBbt(InstancePtr,
- &InstancePtr->BbtMirrorDesc,
- &InstancePtr->BbtDesc, Index);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- /*
- * Mark the blocks containing Bad Block Table
- * (BBT) as Reserved
- */
- Status = XNandPsu_MarkBbt(InstancePtr,
- &InstancePtr->BbtDesc,
- Index);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- Status = XNandPsu_MarkBbt(InstancePtr,
- &InstancePtr->BbtMirrorDesc,
- Index);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- }
- }
-
- Status = XST_SUCCESS;
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-* This function converts the Bad Block Table(BBT) read from the flash to the
-* RAM based Bad Block Table(BBT).
-*
-* @param InstancePtr is a pointer to the XNandPsu instance.
-* @param Buf is the buffer which contains BBT read from flash.
-*
-* @return
-* - NONE.
-*
-******************************************************************************/
-static void XNandPsu_ConvertBbt(XNandPsu *InstancePtr, u8 *Buf, u32 Target)
-{
- u32 BlockOffset;
- u8 BlockShift;
- u32 Data;
- u8 BlockType;
- u32 BlockIndex;
- u32 BbtLen = InstancePtr->Geometry.NumTargetBlocks >>
- XNANDPSU_BBT_BLOCK_SHIFT;
- u32 StartBlock = Target * InstancePtr->Geometry.NumTargetBlocks;
-
- for(BlockOffset = StartBlock; BlockOffset < (StartBlock + BbtLen);
- BlockOffset++) {
- Data = *(Buf + BlockOffset);
- /*
- * Clear the RAM based Bad Block Table(BBT) contents
- */
- InstancePtr->Bbt[BlockOffset] = 0x0U;
- /*
- * Loop through the every 4 blocks in the bitmap
- */
- for(BlockIndex = 0U; BlockIndex < XNANDPSU_BBT_ENTRY_NUM_BLOCKS;
- BlockIndex++) {
- BlockShift = XNandPsu_BbtBlockShift(BlockIndex);
- BlockType = (u8) ((Data >> BlockShift) &
- XNANDPSU_BLOCK_TYPE_MASK);
- switch(BlockType) {
- case XNANDPSU_FLASH_BLOCK_FAC_BAD:
- /* Factory bad block */
- InstancePtr->Bbt[BlockOffset] |=
- (u8)
- (XNANDPSU_BLOCK_FACTORY_BAD <<
- BlockShift);
- break;
- case XNANDPSU_FLASH_BLOCK_RESERVED:
- /* Reserved block */
- InstancePtr->Bbt[BlockOffset] |=
- (u8)
- (XNANDPSU_BLOCK_RESERVED <<
- BlockShift);
- break;
- case XNANDPSU_FLASH_BLOCK_BAD:
- /* Bad block due to wear */
- InstancePtr->Bbt[BlockOffset] |=
- (u8)(XNANDPSU_BLOCK_BAD <<
- BlockShift);
- break;
- default:
- /* Good block */
- /* The BBT entry already defaults to
- * zero */
- break;
- }
- }
- }
-}
-
-/*****************************************************************************/
-/**
-* This function searches the Bad Bloock Table(BBT) in flash and loads into the
-* memory based Bad Block Table(BBT).
-*
-* @param InstancePtr is the pointer to the XNandPsu instance.
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if fail.
-*
-******************************************************************************/
-static s32 XNandPsu_ReadBbt(XNandPsu *InstancePtr, u32 Target)
-{
- u64 Offset;
- u8 Buf[XNANDPSU_BBT_BUF_LENGTH]
- __attribute__ ((aligned(64))) = {0U};
- s32 Status1;
- s32 Status2;
- s32 Status;
- u32 BufLen;
- u8 * BufPtr = Buf;
-
- XNandPsu_BbtDesc *Desc = &InstancePtr->BbtDesc;
- XNandPsu_BbtDesc *MirrorDesc = &InstancePtr->BbtMirrorDesc;
- BufLen = InstancePtr->Geometry.NumBlocks >>
- XNANDPSU_BBT_BLOCK_SHIFT;
- if (Desc->Option == XNANDPSU_BBT_NO_OOB) {
- BufLen += Desc->VerOffset + XNANDPSU_BBT_VERSION_LENGTH;
- }
- /*
- * Search the Bad Block Table(BBT) in flash
- */
- Status1 = XNandPsu_SearchBbt(InstancePtr, Desc, Target);
- Status2 = XNandPsu_SearchBbt(InstancePtr, MirrorDesc, Target);
- if ((Status1 != XST_SUCCESS) && (Status2 != XST_SUCCESS)) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Bad block table not found\r\n",__func__);
-#endif
- Status = XST_FAILURE;
- goto Out;
- }
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Bad block table found\r\n",__func__);
-#endif
- /*
- * Bad Block Table found
- */
- if ((Desc->Valid != 0U) && (MirrorDesc->Valid != 0U)) {
- /*
- * Valid BBT & Mirror BBT found
- */
- if (Desc->Version[Target] > MirrorDesc->Version[Target]) {
- Offset = (u64)Desc->PageOffset[Target] *
- (u64)InstancePtr->Geometry.BytesPerPage;
- Status = XNandPsu_Read(InstancePtr, Offset, BufLen,
- &BufPtr[0]);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
-
- if (Desc->Option == XNANDPSU_BBT_NO_OOB){
- BufPtr = BufPtr + Desc->VerOffset +
- XNANDPSU_BBT_VERSION_LENGTH;
- }
- /*
- * Convert flash BBT to memory based BBT
- */
- XNandPsu_ConvertBbt(InstancePtr, &BufPtr[0], Target);
- MirrorDesc->Version[Target] = Desc->Version[Target];
-
- /*
- * Write the BBT to Mirror BBT location in flash
- */
- Status = XNandPsu_WriteBbt(InstancePtr, MirrorDesc,
- Desc, Target);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- } else if (Desc->Version[Target] <
- MirrorDesc->Version[Target]) {
- Offset = (u64)MirrorDesc->PageOffset[Target] *
- (u64)InstancePtr->Geometry.BytesPerPage;
- Status = XNandPsu_Read(InstancePtr, Offset, BufLen,
- &BufPtr[0]);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- if(Desc->Option == XNANDPSU_BBT_NO_OOB){
- BufPtr = BufPtr + Desc->VerOffset +
- XNANDPSU_BBT_VERSION_LENGTH;
- }
- /*
- * Convert flash BBT to memory based BBT
- */
- XNandPsu_ConvertBbt(InstancePtr, &BufPtr[0], Target);
- Desc->Version[Target] = MirrorDesc->Version[Target];
-
- /*
- * Write the Mirror BBT to BBT location in flash
- */
- Status = XNandPsu_WriteBbt(InstancePtr, Desc,
- MirrorDesc, Target);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- } else {
- /* Both are up-to-date */
- Offset = (u64)Desc->PageOffset[Target] *
- (u64)InstancePtr->Geometry.BytesPerPage;
- Status = XNandPsu_Read(InstancePtr, Offset, BufLen,
- &BufPtr[0]);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
-
- if(Desc->Option == XNANDPSU_BBT_NO_OOB){
- BufPtr = BufPtr + Desc->VerOffset +
- XNANDPSU_BBT_VERSION_LENGTH;
- }
-
- /*
- * Convert flash BBT to memory based BBT
- */
- XNandPsu_ConvertBbt(InstancePtr, &BufPtr[0], Target);
- }
- } else if (Desc->Valid != 0U) {
- /*
- * Valid Primary BBT found
- */
- Offset = (u64)Desc->PageOffset[Target] *
- (u64)InstancePtr->Geometry.BytesPerPage;
- Status = XNandPsu_Read(InstancePtr, Offset, BufLen, &BufPtr[0]);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- if(Desc->Option == XNANDPSU_BBT_NO_OOB){
- BufPtr = BufPtr + Desc->VerOffset +
- XNANDPSU_BBT_VERSION_LENGTH;
- }
- /*
- * Convert flash BBT to memory based BBT
- */
- XNandPsu_ConvertBbt(InstancePtr, &BufPtr[0], Target);
- MirrorDesc->Version[Target] = Desc->Version[Target];
-
- /*
- * Write the BBT to Mirror BBT location in flash
- */
- Status = XNandPsu_WriteBbt(InstancePtr, MirrorDesc, Desc,
- Target);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- } else {
- /*
- * Valid Mirror BBT found
- */
- Offset = (u64)MirrorDesc->PageOffset[Target] *
- (u64)InstancePtr->Geometry.BytesPerPage;
- Status = XNandPsu_Read(InstancePtr, Offset, BufLen, &BufPtr[0]);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- if(Desc->Option == XNANDPSU_BBT_NO_OOB){
- BufPtr = BufPtr + Desc->VerOffset +
- XNANDPSU_BBT_VERSION_LENGTH;
- }
-
- /*
- * Convert flash BBT to memory based BBT
- */
- XNandPsu_ConvertBbt(InstancePtr, &BufPtr[0], Target);
- Desc->Version[Target] = MirrorDesc->Version[Target];
-
- /*
- * Write the Mirror BBT to BBT location in flash
- */
- Status = XNandPsu_WriteBbt(InstancePtr, Desc, MirrorDesc,
- Target);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- }
-
- Status = XST_SUCCESS;
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-* This function searches the BBT in flash.
-*
-* @param InstancePtr is the pointer to the XNandPsu instance.
-* @param Desc is the BBT descriptor pattern to search.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if fail.
-*
-******************************************************************************/
-static s32 XNandPsu_SearchBbt(XNandPsu *InstancePtr, XNandPsu_BbtDesc *Desc,
- u32 Target)
-{
- u32 StartBlock;
- u32 SigOffset;
- u32 VerOffset;
- u32 MaxBlocks;
- u32 PageOff;
- u32 SigLength;
- u8 Buf[XNANDPSU_MAX_SPARE_SIZE] __attribute__ ((aligned(64))) = {0U};
- u32 Block;
- u32 Offset;
- s32 Status;
- u64 BlockOff;
-
- StartBlock = ((Target + (u32)1) *
- InstancePtr->Geometry.NumTargetBlocks) - (u32)1;
- SigOffset = Desc->SigOffset;
- VerOffset = Desc->VerOffset;
- MaxBlocks = Desc->MaxBlocks;
- SigLength = Desc->SigLength;
-
- /*
- * Read the last 4 blocks for Bad Block Table(BBT) signature
- */
- for(Block = 0U; Block < MaxBlocks; Block++) {
- PageOff = (StartBlock - Block) *
- InstancePtr->Geometry.PagesPerBlock;
-
- if(Desc->Option == XNANDPSU_BBT_NO_OOB){
- BlockOff = (u64)PageOff * (u64)InstancePtr->Geometry.BytesPerPage;
- Status = XNandPsu_Read(InstancePtr, BlockOff,
- Desc->VerOffset + XNANDPSU_BBT_VERSION_LENGTH, &Buf[0]);
- }else{
- Status = XNandPsu_ReadSpareBytes(InstancePtr, PageOff, &Buf[0]);
- }
- if (Status != XST_SUCCESS) {
- continue;
- }
- /*
- * Check the Bad Block Table(BBT) signature
- */
- for(Offset = 0U; Offset < SigLength; Offset++) {
- if (Buf[Offset + SigOffset] !=
- (u8)(Desc->Signature[Offset]))
- {
- break; /* Check the next blocks */
- }
- }
- if (Offset >= SigLength) {
- /*
- * Bad Block Table(BBT) found
- */
- Desc->PageOffset[Target] = PageOff;
- Desc->Version[Target] = Buf[VerOffset];
- Desc->Valid = 1U;
-
- Status = XST_SUCCESS;
- goto Out;
- }
- }
- /*
- * Bad Block Table(BBT) not found
- */
- Status = XST_FAILURE;
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-* This function writes Bad Block Table(BBT) from RAM to flash.
-*
-* @param InstancePtr is the pointer to the XNandPsu instance.
-* @param Desc is the BBT descriptor to be written to flash.
-* @param MirrorDesc is the mirror BBT descriptor.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if fail.
-*
-******************************************************************************/
-static s32 XNandPsu_WriteBbt(XNandPsu *InstancePtr, XNandPsu_BbtDesc *Desc,
- XNandPsu_BbtDesc *MirrorDesc, u32 Target)
-{
- u64 Offset;
- u32 Block = {0U};
- u32 EndBlock = ((Target + (u32)1) *
- InstancePtr->Geometry.NumTargetBlocks) - (u32)1;
- u8 Buf[XNANDPSU_BBT_BUF_LENGTH]
- __attribute__ ((aligned(64))) = {0U};
- u8 SpareBuf[XNANDPSU_MAX_SPARE_SIZE] __attribute__ ((aligned(64))) = {0U};
- u8 Mask[4] = {0x00U, 0x01U, 0x02U, 0x03U};
- u8 Data;
- u32 BlockOffset;
- u8 BlockShift;
- s32 Status;
- u32 BlockIndex;
- u32 Index;
- u8 BlockType;
- u32 BbtLen = InstancePtr->Geometry.NumBlocks >>
- XNANDPSU_BBT_BLOCK_SHIFT;
- u32 BufLen = BbtLen;
- if (Desc->Option == XNANDPSU_BBT_NO_OOB) {
- BufLen += Desc->VerOffset + XNANDPSU_BBT_VERSION_LENGTH;
- }
- u8* BufPtr = Buf;
- /*
- * Find a valid block to write the Bad Block Table(BBT)
- */
- if ((!Desc->Valid) != 0U) {
- for(Index = 0U; Index < Desc->MaxBlocks; Index++) {
- Block = (EndBlock - Index);
- BlockOffset = Block >> XNANDPSU_BBT_BLOCK_SHIFT;
- BlockShift = XNandPsu_BbtBlockShift(Block);
- BlockType = (InstancePtr->Bbt[BlockOffset] >>
- BlockShift) & XNANDPSU_BLOCK_TYPE_MASK;
- switch(BlockType)
- {
- case XNANDPSU_BLOCK_BAD:
- case XNANDPSU_BLOCK_FACTORY_BAD:
- continue;
- default:
- /* Good Block */
- break;
- }
- Desc->PageOffset[Target] = Block *
- InstancePtr->Geometry.PagesPerBlock;
- if (Desc->PageOffset[Target] !=
- MirrorDesc->PageOffset[Target]) {
- /* Free block found */
- Desc->Valid = 1U;
- break;
- }
- }
-
- /*
- * Block not found for writing Bad Block Table(BBT)
- */
- if (Index >= Desc->MaxBlocks) {
-#ifdef XNANDPSU_DEBUG
- xil_printf("%s: Blocks unavailable for writing BBT\r\n",
- __func__);
-#endif
- Status = XST_FAILURE;
- goto Out;
- }
- } else {
- Block = Desc->PageOffset[Target] /
- InstancePtr->Geometry.PagesPerBlock;
- }
- /*
- * Convert the memory based BBT to flash based table
- */
- memset(Buf, 0xff, BufLen);
-
- if(Desc->Option == XNANDPSU_BBT_NO_OOB){
- BufPtr = BufPtr + Desc->VerOffset + XNANDPSU_BBT_VERSION_LENGTH;
- }
- /*
- * Loop through the number of blocks
- */
- for(BlockOffset = 0U; BlockOffset < BufLen; BlockOffset++) {
- Data = InstancePtr->Bbt[BlockOffset];
- /*
- * Calculate the bit mask for 4 blocks at a time in loop
- */
- for(BlockIndex = 0U; BlockIndex < XNANDPSU_BBT_ENTRY_NUM_BLOCKS;
- BlockIndex++) {
- BlockShift = XNandPsu_BbtBlockShift(BlockIndex);
- BufPtr[BlockOffset] &= ~(Mask[Data &
- XNANDPSU_BLOCK_TYPE_MASK] <<
- BlockShift);
- Data >>= XNANDPSU_BBT_BLOCK_SHIFT;
- }
- }
- /*
- * Write the Bad Block Table(BBT) to flash
- */
- Status = XNandPsu_EraseBlock(InstancePtr, 0U, Block);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
-
- if(Desc->Option == XNANDPSU_BBT_NO_OOB){
- /*
- * Copy the signature and version to the Buffer
- */
- memcpy(Buf + Desc->SigOffset, &Desc->Signature[0],
- Desc->SigLength);
- memcpy(Buf + Desc->VerOffset, &Desc->Version[Target], 1U);
- /*
- * Write the Buffer to page offset
- */
- Offset = (u64)Desc->PageOffset[Target] *
- (u64)InstancePtr->Geometry.BytesPerPage;
- Status = XNandPsu_Write(InstancePtr, Offset, BufLen, &Buf[0]);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- }else{
- /*
- * Write the BBT to page offset
- */
- Offset = (u64)Desc->PageOffset[Target] *
- (u64)InstancePtr->Geometry.BytesPerPage;
- Status = XNandPsu_Write(InstancePtr, Offset, BbtLen, &Buf[0]);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- /*
- * Write the signature and version in the spare data area
- */
- memset(SpareBuf, 0xff, InstancePtr->Geometry.SpareBytesPerPage);
- Status = XNandPsu_ReadSpareBytes(InstancePtr, Desc->PageOffset[Target],
- &SpareBuf[0]);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
-
- memcpy(SpareBuf + Desc->SigOffset, &Desc->Signature[0],
- Desc->SigLength);
- memcpy(SpareBuf + Desc->VerOffset, &Desc->Version[Target], 1U);
-
- Status = XNandPsu_WriteSpareBytes(InstancePtr,
- Desc->PageOffset[Target], &SpareBuf[0]);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- }
-
- Status = XST_SUCCESS;
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-* This function updates the primary and mirror Bad Block Table(BBT) in the
-* flash.
-*
-* @param InstancePtr is the pointer to the XNandPsu instance.
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if fail.
-*
-******************************************************************************/
-static s32 XNandPsu_UpdateBbt(XNandPsu *InstancePtr, u32 Target)
-{
- s32 Status;
- u8 Version;
-
- /*
- * Update the version number
- */
- Version = InstancePtr->BbtDesc.Version[Target];
- InstancePtr->BbtDesc.Version[Target] = (u8)(((u16)Version +
- (u16)1) % (u16)256U);
-
- Version = InstancePtr->BbtMirrorDesc.Version[Target];
- InstancePtr->BbtMirrorDesc.Version[Target] = (u8)(((u16)Version +
- (u16)1) % (u16)256);
- /*
- * Update the primary Bad Block Table(BBT) in flash
- */
- Status = XNandPsu_WriteBbt(InstancePtr, &InstancePtr->BbtDesc,
- &InstancePtr->BbtMirrorDesc,
- Target);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
-
- /*
- * Update the mirrored Bad Block Table(BBT) in flash
- */
- Status = XNandPsu_WriteBbt(InstancePtr, &InstancePtr->BbtMirrorDesc,
- &InstancePtr->BbtDesc,
- Target);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
-
- Status = XST_SUCCESS;
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-* This function marks the block containing Bad Block Table as reserved
-* and updates the BBT.
-*
-* @param InstancePtr is the pointer to the XNandPsu instance.
-* @param Desc is the BBT descriptor pointer.
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if fail.
-*
-******************************************************************************/
-static s32 XNandPsu_MarkBbt(XNandPsu* InstancePtr, XNandPsu_BbtDesc *Desc,
- u32 Target)
-{
- u32 BlockIndex;
- u32 BlockOffset;
- u8 BlockShift;
- u8 OldVal;
- u8 NewVal;
- s32 Status;
- u32 UpdateBbt = 0U;
- u32 Index;
-
- /*
- * Mark the last four blocks as Reserved
- */
- BlockIndex = ((Target + (u32)1) * InstancePtr->Geometry.NumTargetBlocks) -
- Desc->MaxBlocks - (u32)1;
-
- for(Index = 0U; Index < Desc->MaxBlocks; Index++) {
-
- BlockOffset = BlockIndex >> XNANDPSU_BBT_BLOCK_SHIFT;
- BlockShift = XNandPsu_BbtBlockShift(BlockIndex);
- OldVal = InstancePtr->Bbt[BlockOffset];
- NewVal = (u8) (OldVal | (XNANDPSU_BLOCK_RESERVED <<
- BlockShift));
- InstancePtr->Bbt[BlockOffset] = NewVal;
-
- if (OldVal != NewVal) {
- UpdateBbt = 1U;
- }
- BlockIndex++;
- }
-
- /*
- * Update the BBT to flash
- */
- if (UpdateBbt != 0U) {
- Status = XNandPsu_UpdateBbt(InstancePtr, Target);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- }
-
- Status = XST_SUCCESS;
-Out:
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function checks whether a block is bad or not.
-*
-* @param InstancePtr is the pointer to the XNandPsu instance.
-*
-* @param Block is the block number.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if fail.
-*
-******************************************************************************/
-s32 XNandPsu_IsBlockBad(XNandPsu *InstancePtr, u32 Block)
-{
- u8 Data;
- u8 BlockShift;
- u8 BlockType;
- u32 BlockOffset;
- s32 Status;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(Block < InstancePtr->Geometry.NumBlocks);
-
- BlockOffset = Block >> XNANDPSU_BBT_BLOCK_SHIFT;
- BlockShift = XNandPsu_BbtBlockShift(Block);
- Data = InstancePtr->Bbt[BlockOffset]; /* Block information in BBT */
- BlockType = (Data >> BlockShift) & XNANDPSU_BLOCK_TYPE_MASK;
-
- if ((BlockType != XNANDPSU_BLOCK_GOOD) &&
- (BlockType != XNANDPSU_BLOCK_RESERVED)) {
- Status = XST_SUCCESS;
- }
- else {
- Status = XST_FAILURE;
- }
- return Status;
-}
-
-/*****************************************************************************/
-/**
-* This function marks a block as bad in the RAM based Bad Block Table(BBT). It
-* also updates the Bad Block Table(BBT) in the flash.
-*
-* @param InstancePtr is the pointer to the XNandPsu instance.
-* @param Block is the block number.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if fail.
-*
-******************************************************************************/
-s32 XNandPsu_MarkBlockBad(XNandPsu *InstancePtr, u32 Block)
-{
- u8 Data;
- u8 BlockShift;
- u32 BlockOffset;
- u8 OldVal;
- u8 NewVal;
- s32 Status;
- u32 Target;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(Block < InstancePtr->Geometry.NumBlocks);
-
- Target = Block / InstancePtr->Geometry.NumTargetBlocks;
-
- BlockOffset = Block >> XNANDPSU_BBT_BLOCK_SHIFT;
- BlockShift = XNandPsu_BbtBlockShift(Block);
- Data = InstancePtr->Bbt[BlockOffset]; /* Block information in BBT */
-
- /*
- * Mark the block as bad in the RAM based Bad Block Table
- */
- OldVal = Data;
- Data &= ~(XNANDPSU_BLOCK_TYPE_MASK << BlockShift);
- Data |= (XNANDPSU_BLOCK_BAD << BlockShift);
- NewVal = Data;
- InstancePtr->Bbt[BlockOffset] = Data;
-
- /*
- * Update the Bad Block Table(BBT) in flash
- */
- if (OldVal != NewVal) {
- Status = XNandPsu_UpdateBbt(InstancePtr, Target);
- if (Status != XST_SUCCESS) {
- goto Out;
- }
- }
-
- Status = XST_SUCCESS;
-Out:
- return Status;
-}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_bbm.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_bbm.h
deleted file mode 100644
index c128d9657..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_bbm.h
+++ /dev/null
@@ -1,211 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xnandpsu_bbm.h
-*
-* This file implements the Bad Block Management(BBM) functionality. This is
-* similar to the Bad Block Management which is a part of the MTD subsystem in
-* Linux. The factory marked bad blocks are scanned initially and a Bad Block
-* Table(BBT) is created in the memory. This table is also written to the flash
-* so that upon reboot, the BBT is read back from the flash and loaded into the
-* memory instead of scanning every time. The Bad Block Table(BBT) is written
-* into one of the the last four blocks in the flash memory. The last four
-* blocks are marked as Reserved so that user can't erase/program those blocks.
-*
-* There are two bad block tables, a primary table and a mirror table. The
-* tables are versioned and incrementing version number is used to detect and
-* recover from interrupted updates. Each table is stored in a separate block,
-* beginning in the first page of that block. Only two blocks would be necessary
-* in the absence of bad blocks within the last four; the range of four provides
-* a little slack in case one or two of those blocks is bad. These blocks are
-* marked as reserved and cannot be programmed by the user. A NAND Flash device
-* with 3 or more factory bad blocks in the last 4 cannot be used. The bad block
-* table signature is written into the spare data area of the pages containing
-* bad block table so that upon rebooting the bad block table signature is
-* searched and the bad block table is loaded into RAM. The signature is "Bbt0"
-* for primary Bad Block Table and "1tbB" for Mirror Bad Block Table. The
-* version offset follows the signature offset in the spare data area. The
-* version number increments on every update to the bad block table and the
-* version wraps at 0xff.
-*
-* Each block in the Bad Block Table(BBT) is represented by 2 bits.
-* The two bits are encoded as follows in RAM BBT.
-* 0'b00 -> Good Block
-* 0'b01 -> Block is bad due to wear
-* 0'b10 -> Reserved block
-* 0'b11 -> Factory marked bad block
-*
-* While writing to the flash the two bits are encoded as follows.
-* 0'b00 -> Factory marked bad block
-* 0'b01 -> Reserved block
-* 0'b10 -> Block is bad due to wear
-* 0'b11 -> Good Block
-*
-* The user can check for the validity of the block using the API
-* XNandPsu_IsBlockBad and take the action based on the return value. Also user
-* can update the bad block table using XNandPsu_MarkBlockBad API.
-*
-* @note None
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- ---------- -----------------------------------------------
-* 1.0 nm 05/06/2014 First release
-* 2.0 sb 01/12/2015 Added support for writing BBT signature and version
-* in page section by enabling XNANDPSU_BBT_NO_OOB.
-* Modified Bbt Signature and Version Offset value for
-* Oob and No-Oob region.
-*
-*
-******************************************************************************/
-#ifndef XNANDPSU_BBM_H /* prevent circular inclusions */
-#define XNANDPSU_BBM_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-#include "xnandpsu.h"
-
-/************************** Constant Definitions *****************************/
-/*
- * Block definitions for RAM based Bad Block Table (BBT)
- */
-#define XNANDPSU_BLOCK_GOOD 0x0U /**< Block is good */
-#define XNANDPSU_BLOCK_BAD 0x1U /**< Block is bad */
-#define XNANDPSU_BLOCK_RESERVED 0x2U /**< Reserved block */
-#define XNANDPSU_BLOCK_FACTORY_BAD 0x3U /**< Factory marked bad
- block */
-/*
- * Block definitions for FLASH based Bad Block Table (BBT)
- */
-#define XNANDPSU_FLASH_BLOCK_GOOD 0x3U /**< Block is good */
-#define XNANDPSU_FLASH_BLOCK_BAD 0x2U /**< Block is bad */
-#define XNANDPSU_FLASH_BLOCK_RESERVED 0x1U /**< Reserved block */
-#define XNANDPSU_FLASH_BLOCK_FAC_BAD 0x0U /**< Factory marked bad
- block */
-
-#define XNANDPSU_BBT_SCAN_2ND_PAGE 0x00000001U /**< Scan the
- second page
- for bad block
- information
- */
-#define XNANDPSU_BBT_DESC_PAGE_OFFSET 0U /**< Page offset of Bad
- Block Table Desc */
-#define XNANDPSU_BBT_DESC_SIG_OFFSET 8U /**< Bad Block Table
- signature offset */
-#define XNANDPSU_BBT_DESC_VER_OFFSET 12U /**< Bad block Table
- version offset */
-#define XNANDPSU_NO_OOB_BBT_DESC_SIG_OFFSET 0U /**< Bad Block Table
- signature offset in
- page memory */
-#define XNANDPSU_NO_OOB_BBT_DESC_VER_OFFSET 4U /**< Bad block Table
- version offset in
- page memory */
-#define XNANDPSU_BBT_DESC_SIG_LEN 4U /**< Bad block Table
- signature length */
-#define XNANDPSU_BBT_DESC_MAX_BLOCKS 64U /**< Bad block Table
- max blocks */
-
-#define XNANDPSU_BBT_BLOCK_SHIFT 2U /**< Block shift value
- for a block in BBT */
-#define XNANDPSU_BBT_ENTRY_NUM_BLOCKS 4U /**< Num of blocks in
- one BBT entry */
-#define XNANDPSU_BB_PTRN_OFF_SML_PAGE 5U /**< Bad block pattern
- offset in a page */
-#define XNANDPSU_BB_PTRN_LEN_SML_PAGE 1U /**< Bad block pattern
- length */
-#define XNANDPSU_BB_PTRN_OFF_LARGE_PAGE 0U /**< Bad block pattern
- offset in a large
- page */
-#define XNANDPSU_BB_PTRN_LEN_LARGE_PAGE 2U /**< Bad block pattern
- length */
-#define XNANDPSU_BB_PATTERN 0xFFU /**< Bad block pattern
- to search in a page
- */
-#define XNANDPSU_BLOCK_TYPE_MASK 0x03U /**< Block type mask */
-#define XNANDPSU_BLOCK_SHIFT_MASK 0x06U /**< Block shift mask
- for a Bad Block Table
- entry byte */
-
-#define XNANDPSU_ONDIE_SIG_OFFSET 0x4U
-#define XNANDPSU_ONDIE_VER_OFFSET 0x14U
-
-#define XNANDPSU_BBT_VERSION_LENGTH 1U
-#define XNANDPSU_BBT_SIG_LENGTH 4U
-
-#define XNANDPSU_BBT_BUF_LENGTH ((XNANDPSU_MAX_BLOCKS >> \
- XNANDPSU_BBT_BLOCK_SHIFT) + \
- (XNANDPSU_BBT_DESC_SIG_OFFSET + \
- XNANDPSU_BBT_SIG_LENGTH + \
- XNANDPSU_BBT_VERSION_LENGTH))
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/****************************************************************************/
-/**
-*
-* This macro returns the Block shift value corresponding to a Block.
-*
-* @param Block is the block number.
-*
-* @return Block shift value
-*
-* @note None.
-*
-*****************************************************************************/
-#define XNandPsu_BbtBlockShift(Block) \
- ((u8)(((Block) * 2U) & XNANDPSU_BLOCK_SHIFT_MASK))
-
-/************************** Variable Definitions *****************************/
-
-/************************** Function Prototypes ******************************/
-
-void XNandPsu_InitBbtDesc(XNandPsu *InstancePtr);
-
-s32 XNandPsu_ScanBbt(XNandPsu *InstancePtr);
-
-s32 XNandPsu_IsBlockBad(XNandPsu *InstancePtr, u32 Block);
-
-s32 XNandPsu_MarkBlockBad(XNandPsu *InstancePtr, u32 Block);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_g.c
deleted file mode 100644
index 8d75e6dbb..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_g.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xnandpsu_g.c
-*
-* This file contains a configuration table where each entry is a configuration
-* structure for an XNandPsu device in the system.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- ---------- -----------------------------------------------
-* 1.0 nm 05/06/2014 First release
-* 1.0 nm 06/02/2014 Changed the copyright to new copyright
-*
-*
-******************************************************************************/
-
-/***************************** Include Files ********************************/
-#include "xparameters.h"
-#include "xnandpsu.h"
-/************************** Constant Definitions ****************************/
-
-/**************************** Type Definitions ******************************/
-
-/***************** Macros (Inline Functions) Definitions ********************/
-
-/************************** Variable Definitions ****************************/
-
-/**
- * Each XNandPsu device in the system has an entry in this table.
- */
-XNandPsu_Config XNandPsu_ConfigTable[] = {
- {
- 0U,
- XPAR_XNANDPSU_0_BASEADDR
- }
-};
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_hw.h
deleted file mode 100644
index f59b5b661..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_hw.h
+++ /dev/null
@@ -1,504 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xnandpsu_hw.h
-*
-* This file contains identifiers and low-level macros/functions for the Arasan
-* NAND flash controller driver.
-*
-* See xnandpsu.h for more information.
-*
-* @note None
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- ---------- -----------------------------------------------
-* 1.0 nm 05/06/2014 First Release
-* 2.0 sb 11/04/2014 Changed XNANDPSU_ECC_SLC_MLC_MASK to
-* XNANDPSU_ECC_HAMMING_BCH_MASK.
-*
-*
-******************************************************************************/
-
-#ifndef XNANDPSU_HW_H /* prevent circular inclusions */
-#define XNANDPSU_HW_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-#include "xil_io.h"
-
-/************************** Constant Definitions *****************************/
-
-/************************** Register Offset Definitions **********************/
-
-#define XNANDPSU_PKT_OFFSET 0x00U /**< Packet Register */
-#define XNANDPSU_MEM_ADDR1_OFFSET 0x04U /**< Memory Address
- Register 1 */
-#define XNANDPSU_MEM_ADDR2_OFFSET 0x08U /**< Memory Address
- Register 2 */
-#define XNANDPSU_CMD_OFFSET 0x0CU /**< Command Register */
-#define XNANDPSU_PROG_OFFSET 0x10U /**< Program Register */
-#define XNANDPSU_INTR_STS_EN_OFFSET 0x14U /**< Interrupt Status
- Enable Register */
-#define XNANDPSU_INTR_SIG_EN_OFFSET 0x18U /**< Interrupt Signal
- Enable Register */
-#define XNANDPSU_INTR_STS_OFFSET 0x1CU /**< Interrupt Status
- Register */
-#define XNANDPSU_READY_BUSY_OFFSET 0x20U /**< Ready/Busy status
- Register */
-#define XNANDPSU_FLASH_STS_OFFSET 0x28U /**< Flash Status Register */
-#define XNANDPSU_TIMING_OFFSET 0x2CU /**< Timing Register */
-#define XNANDPSU_BUF_DATA_PORT_OFFSET 0x30U /**< Buffer Data Port
- Register */
-#define XNANDPSU_ECC_OFFSET 0x34U /**< ECC Register */
-#define XNANDPSU_ECC_ERR_CNT_OFFSET 0x38U /**< ECC Error Count
- Register */
-#define XNANDPSU_ECC_SPR_CMD_OFFSET 0x3CU /**< ECC Spare Command
- Register */
-#define XNANDPSU_ECC_CNT_1BIT_OFFSET 0x40U /**< Error Count 1bit
- Register */
-#define XNANDPSU_ECC_CNT_2BIT_OFFSET 0x44U /**< Error Count 2bit
- Register */
-#define XNANDPSU_ECC_CNT_3BIT_OFFSET 0x48U /**< Error Count 3bit
- Register */
-#define XNANDPSU_ECC_CNT_4BIT_OFFSET 0x4CU /**< Error Count 4bit
- Register */
-#define XNANDPSU_CPU_REL_OFFSET 0x58U /**< CPU Release Register */
-#define XNANDPSU_ECC_CNT_5BIT_OFFSET 0x5CU /**< Error Count 5bit
- Register */
-#define XNANDPSU_ECC_CNT_6BIT_OFFSET 0x60U /**< Error Count 6bit
- Register */
-#define XNANDPSU_ECC_CNT_7BIT_OFFSET 0x64U /**< Error Count 7bit
- Register */
-#define XNANDPSU_ECC_CNT_8BIT_OFFSET 0x68U /**< Error Count 8bit
- Register */
-#define XNANDPSU_DATA_INTF_OFFSET 0x6CU /**< Data Interface Register */
-#define XNANDPSU_DMA_SYS_ADDR0_OFFSET 0x50U /**< DMA System Address 0
- Register */
-#define XNANDPSU_DMA_SYS_ADDR1_OFFSET 0x24U /**< DMA System Address 1
- Register */
-#define XNANDPSU_DMA_BUF_BND_OFFSET 0x54U /**< DMA Buffer Boundary
- Register */
-#define XNANDPSU_SLV_DMA_CONF_OFFSET 0x80U /**< Slave DMA Configuration
- Register */
-
-/** @name Packet Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_PKT_PKT_SIZE_MASK 0x000007FFU /**< Packet Size */
-#define XNANDPSU_PKT_PKT_CNT_MASK 0x00FFF000U /**< Packet Count*/
-#define XNANDPSU_PKT_PKT_CNT_SHIFT 12U /**< Packet Count Shift */
-/* @} */
-
-/** @name Memory Address Register 1 bit definitions and masks
- * @{
- */
-#define XNANDPSU_MEM_ADDR1_COL_ADDR_MASK 0x0000FFFFU /**< Column Address
- Mask */
-#define XNANDPSU_MEM_ADDR1_PG_ADDR_MASK 0xFFFF0000U /**< Page, Block
- Address Mask */
-#define XNANDPSU_MEM_ADDR1_PG_ADDR_SHIFT 16U /**< Page Shift */
-/* @} */
-
-/** @name Memory Address Register 2 bit definitions and masks
- * @{
- */
-#define XNANDPSU_MEM_ADDR2_MEM_ADDR_MASK 0x000000FFU /**< Memory Address
- */
-#define XNANDPSU_MEM_ADDR2_BUS_WIDTH_MASK 0x01000000U /**< Bus Width */
-#define XNANDPSU_MEM_ADDR2_NFC_BCH_MODE_MASK 0x0E000000U /**< BCH Mode
- Value */
-#define XNANDPSU_MEM_ADDR2_MODE_MASK 0x30000000U /**< Flash
- Connection Mode */
-#define XNANDPSU_MEM_ADDR2_CHIP_SEL_MASK 0xC0000000U /**< Chip Select */
-#define XNANDPSU_MEM_ADDR2_CHIP_SEL_SHIFT 30U /**< Chip select
- shift */
-#define XNANDPSU_MEM_ADDR2_BUS_WIDTH_SHIFT 24U /**< Bus width shift */
-#define XNANDPSU_MEM_ADDR2_NFC_BCH_MODE_SHIFT 25U
-/* @} */
-
-/** @name Command Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_CMD_CMD1_MASK 0x000000FFU /**< 1st Cycle
- Command */
-#define XNANDPSU_CMD_CMD2_MASK 0x0000FF00U /**< 2nd Cycle
- Command */
-#define XNANDPSU_CMD_PG_SIZE_MASK 0x03800000U /**< Page Size */
-#define XNANDPSU_CMD_DMA_EN_MASK 0x0C000000U /**< DMA Enable
- Mode */
-#define XNANDPSU_CMD_ADDR_CYCLES_MASK 0x70000000U /**< Number of
- Address Cycles */
-#define XNANDPSU_CMD_ECC_ON_MASK 0x80000000U /**< ECC ON/OFF */
-#define XNANDPSU_CMD_CMD2_SHIFT 8U /**< 2nd Cycle Command
- Shift */
-#define XNANDPSU_CMD_PG_SIZE_SHIFT 23U /**< Page Size Shift */
-#define XNANDPSU_CMD_DMA_EN_SHIFT 26U /**< DMA Enable Shift */
-#define XNANDPSU_CMD_ADDR_CYCLES_SHIFT 28U /**< Number of Address
- Cycles Shift */
-#define XNANDPSU_CMD_ECC_ON_SHIFT 31U /**< ECC ON/OFF */
-/* @} */
-
-/** @name Program Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_PROG_RD_MASK 0x00000001U /**< Read */
-#define XNANDPSU_PROG_MUL_DIE_MASK 0x00000002U /**< Multi Die */
-#define XNANDPSU_PROG_BLK_ERASE_MASK 0x00000004U /**< Block Erase */
-#define XNANDPSU_PROG_RD_STS_MASK 0x00000008U /**< Read Status */
-#define XNANDPSU_PROG_PG_PROG_MASK 0x00000010U /**< Page Program */
-#define XNANDPSU_PROG_MUL_DIE_RD_MASK 0x00000020U /**< Multi Die Rd */
-#define XNANDPSU_PROG_RD_ID_MASK 0x00000040U /**< Read ID */
-#define XNANDPSU_PROG_RD_PRM_PG_MASK 0x00000080U /**< Read Param
- Page */
-#define XNANDPSU_PROG_RST_MASK 0x00000100U /**< Reset */
-#define XNANDPSU_PROG_GET_FEATURES_MASK 0x00000200U /**< Get Features */
-#define XNANDPSU_PROG_SET_FEATURES_MASK 0x00000400U /**< Set Features */
-#define XNANDPSU_PROG_RD_UNQ_ID_MASK 0x00000800U /**< Read Unique
- ID */
-#define XNANDPSU_PROG_RD_STS_ENH_MASK 0x00001000U /**< Read Status
- Enhanced */
-#define XNANDPSU_PROG_RD_INTRLVD_MASK 0x00002000U /**< Read
- Interleaved */
-#define XNANDPSU_PROG_CHNG_RD_COL_ENH_MASK 0x00004000U /**< Change Read
- Column
- Enhanced */
-#define XNANDPSU_PROG_COPY_BACK_INTRLVD_MASK 0x00008000U /**< Copy Back
- Interleaved */
-#define XNANDPSU_PROG_RD_CACHE_START_MASK 0x00010000U /**< Read Cache
- Start */
-#define XNANDPSU_PROG_RD_CACHE_SEQ_MASK 0x00020000U /**< Read Cache
- Sequential */
-#define XNANDPSU_PROG_RD_CACHE_RAND_MASK 0x00040000U /**< Read Cache
- Random */
-#define XNANDPSU_PROG_RD_CACHE_END_MASK 0x00080000U /**< Read Cache
- End */
-#define XNANDPSU_PROG_SMALL_DATA_MOVE_MASK 0x00100000U /**< Small Data
- Move */
-#define XNANDPSU_PROG_CHNG_ROW_ADDR_MASK 0x00200000U /**< Change Row
- Address */
-#define XNANDPSU_PROG_CHNG_ROW_ADDR_END_MASK 0x00400000U /**< Change Row
- Address End */
-#define XNANDPSU_PROG_RST_LUN_MASK 0x00800000U /**< Reset LUN */
-#define XNANDPSU_PROG_PGM_PG_CLR_MASK 0x01000000U /**< Enhanced
- Program Page
- Register Clear */
-#define XNANDPSU_PROG_VOL_SEL_MASK 0x02000000U /**< Volume Select */
-#define XNANDPSU_PROG_ODT_CONF_MASK 0x04000000U /**< ODT Configure */
-/* @} */
-
-/** @name Interrupt Status Enable Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_INTR_STS_EN_BUFF_WR_RDY_STS_EN_MASK 0x00000001U /**< Buffer
- Write Ready
- Status
- Enable */
-#define XNANDPSU_INTR_STS_EN_BUFF_RD_RDY_STS_EN_MASK 0x00000002U /**< Buffer
- Read Ready
- Status
- Enable */
-#define XNANDPSU_INTR_STS_EN_TRANS_COMP_STS_EN_MASK 0x00000004U /**< Transfer
- Complete
- Status
- Enable */
-#define XNANDPSU_INTR_STS_EN_MUL_BIT_ERR_STS_EN_MASK 0x00000008U /**< Multi
- Bit Error
- Status
- Enable */
-#define XNANDPSU_INTR_STS_EN_ERR_INTR_STS_EN_MASK 0x00000010U /**< Single
- Bit Error
- Status
- Enable,
- BCH Detect
- Error
- Status
- Enable */
-#define XNANDPSU_INTR_STS_EN_DMA_INT_STS_EN_MASK 0x00000040U /**< DMA
- Status
- Enable */
-#define XNANDPSU_INTR_STS_EN_ERR_AHB_STS_EN_MASK 0x00000080U /**< Error
- AHB Status
- Enable */
-/* @} */
-
-/** @name Interrupt Signal Enable Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_INTR_SIG_EN_BUFF_WR_RDY_STS_EN_MASK 0x00000001U /**< Buffer
- Write Ready
- Signal
- Enable */
-#define XNANDPSU_INTR_SIG_EN_BUFF_RD_RDY_STS_EN_MASK 0x00000002U /**< Buffer
- Read Ready
- Signal
- Enable */
-#define XNANDPSU_INTR_SIG_EN_TRANS_COMP_STS_EN_MASK 0x00000004U /**< Transfer
- Complete
- Signal
- Enable */
-#define XNANDPSU_INTR_SIG_EN_MUL_BIT_ERR_STS_EN_MASK 0x00000008U /**< Multi
- Bit Error
- Signal
- Enable */
-#define XNANDPSU_INTR_SIG_EN_ERR_INTR_STS_EN_MASK 0x00000010U /**< Single
- Bit Error
- Signal
- Enable,
- BCH Detect
- Error
- Signal
- Enable */
-#define XNANDPSU_INTR_SIG_EN_DMA_INT_STS_EN_MASK 0x00000040U /**< DMA
- Signal
- Enable */
-#define XNANDPSU_INTR_SIG_EN_ERR_AHB_STS_EN_MASK 0x00000080U /**< Error
- AHB Signal
- Enable */
-/* @} */
-
-/** @name Interrupt Status Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_INTR_STS_BUFF_WR_RDY_STS_EN_MASK 0x00000001U /**< Buffer
- Write
- Ready */
-#define XNANDPSU_INTR_STS_BUFF_RD_RDY_STS_EN_MASK 0x00000002U /**< Buffer
- Read
- Ready */
-#define XNANDPSU_INTR_STS_TRANS_COMP_STS_EN_MASK 0x00000004U /**< Transfer
- Complete */
-#define XNANDPSU_INTR_STS_MUL_BIT_ERR_STS_EN_MASK 0x00000008U /**< Multi
- Bit Error */
-#define XNANDPSU_INTR_STS_ERR_INTR_STS_EN_MASK 0x00000010U /**< Single
- Bit Error,
- BCH Detect
- Error */
-#define XNANDPSU_INTR_STS_DMA_INT_STS_EN_MASK 0x00000040U /**< DMA
- Interrupt
- */
-#define XNANDPSU_INTR_STS_ERR_AHB_STS_EN_MASK 0x00000080U /**< Error
- AHB */
-/* @} */
-
-/** @name Interrupt bit definitions and masks
- * @{
- */
-#define XNANDPSU_INTR_BUFF_WR_RDY_STS_EN_MASK 0x00000001U /**< Buffer Write
- Ready Status
- Enable */
-#define XNANDPSU_INTR_BUFF_RD_RDY_STS_EN_MASK 0x00000002U /**< Buffer Read
- Ready Status
- Enable */
-#define XNANDPSU_INTR_TRANS_COMP_STS_EN_MASK 0x00000004U /**< Transfer
- Complete Status
- Enable */
-#define XNANDPSU_INTR_MUL_BIT_ERR_STS_EN_MASK 0x00000008U /**< Multi Bit Error
- Status Enable */
-#define XNANDPSU_INTR_ERR_INTR_STS_EN_MASK 0x00000010U /**< Single Bit Error
- Status Enable,
- BCH Detect Error
- Status Enable */
-#define XNANDPSU_INTR_DMA_INT_STS_EN_MASK 0x00000040U /**< DMA Status
- Enable */
-#define XNANDPSU_INTR_ERR_AHB_STS_EN_MASK 0x00000080U /**< Error AHB Status
- Enable */
-/* @} */
-
-/** @name ID2 Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_ID2_DEVICE_ID2_MASK 0x000000FFU /**< MSB Device ID */
-/* @} */
-
-/** @name Flash Status Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_FLASH_STS_FLASH_STS_MASK 0x0000FFFFU /**< Flash Status
- Value */
-/* @} */
-
-/** @name Timing Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_TIMING_TCCS_TIME_MASK 0x00000003U /**< Change column
- setup time */
-#define XNANDPSU_TIMING_SLOW_FAST_TCAD_MASK 0x00000004U /**< Slow/Fast device
- */
-#define XNANDPSU_TIMING_DQS_BUFF_SEL_MASK 0x00000078U /**< Write/Read data
- transaction value
- */
-#define XNANDPSU_TIMING_TADL_TIME_MASK 0x00007F80U /**< Address latch
- enable to Data
- loading time */
-/* @} */
-
-/** @name ECC Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_ECC_ADDR_MASK 0x0000FFFFU /**< ECC address */
-#define XNANDPSU_ECC_SIZE_MASK 0x01FF0000U /**< ECC size */
-#define XNANDPSU_ECC_HAMMING_BCH_MASK 0x02000000U /**< Hamming/BCH
- support */
-/* @} */
-
-/** @name ECC Error Count Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_ECC_ERR_CNT_PKT_BND_ERR_CNT_MASK 0x000000FFU /**< Packet
- bound error
- count */
-#define XNANDPSU_ECC_ERR_CNT_PG_BND_ERR_CNT_MASK 0x0000FF00U /**< Page
- bound error
- count */
-/* @} */
-
-/** @name ECC Spare Command Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_ECC_SPR_CMD_SPR_CMD_MASK 0x000000FFU /**< ECC
- spare
- command */
-#define XNANDPSU_ECC_SPR_CMD_ECC_ADDR_CYCLES_MASK 0x70000000U /**< Number
- of ECC/
- spare
- address
- cycles */
-/* @} */
-
-/** @name Data Interface Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_DATA_INTF_SDR_MASK 0x00000007U /**< SDR mode */
-#define XNANDPSU_DATA_INTF_NVDDR_MASK 0x00000038U /**< NVDDR mode */
-#define XNANDPSU_DATA_INTF_NVDDR2_MASK 0x000001C0U /**< NVDDR2 mode */
-#define XNANDPSU_DATA_INTF_DATA_INTF_MASK 0x00000600U /**< Data
- Interface */
-#define XNANDPSU_DATA_INTF_NVDDR_SHIFT 3U /**< NVDDR mode shift */
-#define XNANDPSU_DATA_INTF_DATA_INTF_SHIFT 9U /**< Data Interface Shift */
-/* @} */
-
-/** @name DMA Buffer Boundary Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_DMA_BUF_BND_BND_MASK 0x00000007U /**< DMA buffer
- boundary */
-#define XNANDPSU_DMA_BUF_BND_4K 0x0U
-#define XNANDPSU_DMA_BUF_BND_8K 0x1U
-#define XNANDPSU_DMA_BUF_BND_16K 0x2U
-#define XNANDPSU_DMA_BUF_BND_32K 0x3U
-#define XNANDPSU_DMA_BUF_BND_64K 0x4U
-#define XNANDPSU_DMA_BUF_BND_128K 0x5U
-#define XNANDPSU_DMA_BUF_BND_256K 0x6U
-#define XNANDPSU_DMA_BUF_BND_512K 0x7U
-/* @} */
-
-/** @name Slave DMA Configuration Register bit definitions and masks
- * @{
- */
-#define XNANDPSU_SLV_DMA_CONF_SDMA_TX_RX_MASK 0x00000001U /**< Slave
- DMA
- Transfer
- Direction
- */
-#define XNANDPSU_SLV_DMA_CONF_DMA_TRANS_CNT_MASK 0x001FFFFEU /**< Slave
- DMA
- Transfer
- Count */
-#define XNANDPSU_SLV_DMA_CONF_DMA_BURST_SIZE_MASK 0x00E00000U /**< Slave
- DMA
- Burst
- Size */
-#define XNANDPSU_SLV_DMA_CONF_DMA_TMOUT_CNT_VAL_MASK 0x0F000000U /**< DMA
- Timeout
- Counter
- Value */
-#define XNANDPSU_SLV_DMA_CONF_SDMA_EN_MASK 0x10000000U /**< Slave
- DMA
- Enable */
-/* @} */
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/****************************************************************************/
-/**
-*
-* This macro reads the given register.
-*
-* @param BaseAddress is the base address of controller registers.
-* @param RegOffset is the register offset to be read.
-*
-* @return The 32-bit value of the register.
-*
-* @note C-style signature:
-* u32 XNandPsu_ReadReg(u32 BaseAddress, u32 RegOffset)
-*
-*****************************************************************************/
-#define XNandPsu_ReadReg(BaseAddress, RegOffset) \
- Xil_In32((BaseAddress) + (RegOffset))
-
-/****************************************************************************/
-/**
-*
-* This macro writes the given register.
-*
-* @param BaseAddress is the the base address of controller registers.
-* @param RegOffset is the register offset to be written.
-* @param Data is the the 32-bit value to write to the register.
-*
-* @return None.
-*
-* @note C-style signature:
-* void XNandPsu_WriteReg(u32 BaseAddress, u32 RegOffset, u32 Data)
-*
-******************************************************************************/
-#define XNandPsu_WriteReg(BaseAddress, RegOffset, Data) \
- Xil_Out32(((BaseAddress) + (RegOffset)), (Data))
-
-/************************** Function Prototypes ******************************/
-
-/************************** Variable Definitions *****************************/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* XNANDPSU_HW_H end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_onfi.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_onfi.c
deleted file mode 100644
index 6dbf31030..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_onfi.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xnandpsu_onfi.c
-*
-* This file contains the implementation of ONFI specific functions.
-*
-* @note None
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- ---------- -----------------------------------------------
-* 1.0 nm 05/06/2014 First release
-*
-*
-******************************************************************************/
-
-/***************************** Include Files *********************************/
-#include "xnandpsu_onfi.h"
-#include "xnandpsu.h"
-
-/************************** Constant Definitions *****************************/
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/************************** Function Prototypes ******************************/
-
-/*****************************************************************************/
-/**
-*
-* This function calculates ONFI paramater page CRC.
-*
-* @param Parambuf is a pointer to the ONFI paramater page buffer.
-* @param StartOff is the starting offset in buffer to calculate CRC.
-* @param Length is the number of bytes for which CRC is calculated.
-*
-* @return
-* CRC value.
-* @note
-* None.
-*
-******************************************************************************/
-u32 XNandPsu_OnfiParamPageCrc(u8 *ParamBuf, u32 StartOff, u32 Length)
-{
- const u32 CrcInit = 0x4F4EU;
- const u32 Order = 16U;
- const u32 Polynom = 0x8005U;
- u32 i, j, c, Bit;
- u32 Crc = CrcInit;
- u32 DataIn;
- u32 DataByteCount = 0U;
- u32 CrcMask, CrcHighBit;
-
- CrcMask = ((u32)(((u32)1 << (Order - (u32)1)) -(u32)1) << (u32)1) | (u32)1;
- CrcHighBit = (u32)((u32)1 << (Order - (u32)1));
- /*
- * CRC covers the data bytes between byte 0 and byte 253
- * (ONFI 1.0, section 5.4.1.36)
- */
- for(i = StartOff; i < Length; i++) {
- DataIn = ParamBuf[i];
- c = (u32)DataIn;
- DataByteCount++;
- for(j = 0x80U; j; j >>= 1U) {
- Bit = Crc & CrcHighBit;
- Crc <<= 1U;
- if ((c & j) != 0U) {
- Bit ^= CrcHighBit;
- }
- if (Bit != 0U) {
- Crc ^= Polynom;
- }
- }
- Crc &= CrcMask;
- }
- return Crc;
-}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_onfi.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_onfi.h
deleted file mode 100644
index 41da5569c..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_onfi.h
+++ /dev/null
@@ -1,340 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xnandpsu_onfi.h
-*
-* This file defines all the ONFI 3.1 specific commands and values.
-*
-* @note None
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- ---------- -----------------------------------------------
-* 1.0 nm 05/06/2014 First release
-*
-*
-******************************************************************************/
-#ifndef XNANDPSU_ONFI_H /* prevent circular inclusions */
-#define XNANDPSU_ONFI_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-#include "xil_types.h"
-
-/************************** Constant Definitions *****************************/
-/*
- * Standard ONFI 3.1 Commands
- */
-/*
- * ONFI 3.1 Mandatory Commands
- */
-#define ONFI_CMD_RD1 0x00U /**< Read (1st cycle) */
-#define ONFI_CMD_RD2 0x30U /**< Read (2nd cycle) */
-#define ONFI_CMD_CHNG_RD_COL1 0x05U /**< Change Read Column
- (1st cycle) */
-#define ONFI_CMD_CHNG_RD_COL2 0xE0U /**< Change Read Column
- (2nd cycle) */
-#define ONFI_CMD_BLK_ERASE1 0x60U /**< Block Erase (1st cycle) */
-#define ONFI_CMD_BLK_ERASE2 0xD0U /**< Block Erase (2nd cycle) */
-#define ONFI_CMD_RD_STS 0x70U /**< Read Status */
-#define ONFI_CMD_PG_PROG1 0x80U /**< Page Program(1st cycle) */
-#define ONFI_CMD_PG_PROG2 0x10U /**< Page Program(2nd cycle) */
-#define ONFI_CMD_CHNG_WR_COL 0x85U /**< Change Write Column */
-#define ONFI_CMD_RD_ID 0x90U /**< Read ID */
-#define ONFI_CMD_RD_PRM_PG 0xECU /**< Read Parameter Page */
-#define ONFI_CMD_RST 0xFFU /**< Reset */
-/*
- * ONFI 3.1 Optional Commands
- */
-#define ONFI_CMD_MUL_RD1 0x00U /**< Multiplane Read
- (1st cycle) */
-#define ONFI_CMD_MUL_RD2 0x32U /**< Multiplane Read
- (2nd cycle) */
-#define ONFI_CMD_CPBK_RD1 0x00U /**< Copyback Read
- (1st cycle) */
-#define ONFI_CMD_CPBK_RD2 0x35U /**< Copyback Read
- (2nd cycle) */
-#define ONFI_CMD_CHNG_RD_COL_ENHCD1 0x06U /**< Change Read Column
- Enhanced (1st cycle) */
-#define ONFI_CMD_CHNG_RD_COL_ENHCD2 0xE0U /**< Change Read Column
- Enhanced (2nd cycle) */
-#define ONFI_CMD_RD_CACHE_RND1 0x00U /**< Read Cache Random
- (1st cycle) */
-#define ONFI_CMD_RD_CACHE_RND2 0x31U /**< Read Cache Random
- (2nd cycle) */
-#define ONFI_CMD_RD_CACHE_SEQ 0x31U /**< Read Cache Sequential */
-#define ONFI_CMD_RD_CACHE_END 0x3FU /**< Read Cache End */
-#define ONFI_CMD_MUL_BLK_ERASE1 0x60U /**< Multiplane Block Erase
- (1st cycle) */
-#define ONFI_CMD_MUL_BLK_ERASE2 0xD1U /**< Multiplane Block Erase
- (2nd cycle) */
-#define ONFI_CMD_RD_STS_ENHCD 0x78U /**< Read Status Enhanced */
-#define ONFI_CMD_BLK_ERASE_INTRLVD2 0xD1U /**< Block Erase Interleaved
- (2nd cycle) */
-#define ONFI_CMD_MUL_PG_PROG1 0x80U /**< Multiplane Page Program
- (1st cycle) */
-#define ONFI_CMD_MUL_PG_PROG2 0x11U /**< Multiplane Page Program
- (2nd cycle) */
-#define ONFI_CMD_PG_CACHE_PROG1 0x80U /**< Page Cache Program
- (1st cycle) */
-#define ONFI_CMD_PG_CACHE_PROG2 0x15U /**< Page Cache Program
- (2nd cycle) */
-#define ONFI_CMD_CPBK_PROG1 0x85U /**< Copyback Program
- (1st cycle) */
-#define ONFI_CMD_CPBK_PROG2 0x10U /**< Copyback Program
- (2nd cycle) */
-#define ONFI_CMD_MUL_CPBK_PROG1 0x85U /**< Multiplane Copyback
- Program (1st cycle) */
-#define ONFI_CMD_MUL_CPBK_PROG2 0x10U /**< Multiplane Copyback
- Program (2nd cycle) */
-#define ONFI_CMD_SMALL_DATA_MV1 0x85U /**< Small Data Move
- (1st cycle) */
-#define ONFI_CMD_SMALL_DATA_MV2 0x10U /**< Small Data Move
- (2nd cycle) */
-#define ONFI_CMD_CHNG_ROW_ADDR 0x85U /**< Change Row Address */
-#define ONFI_CMD_VOL_SEL 0xE1U /**< Volume Select */
-#define ONFI_CMD_ODT_CONF 0xE2U /**< ODT Configure */
-#define ONFI_CMD_RD_UNIQID 0xEDU /**< Read Unique ID */
-#define ONFI_CMD_GET_FEATURES 0xEEU /**< Get Features */
-#define ONFI_CMD_SET_FEATURES 0xEFU /**< Set Features */
-#define ONFI_CMD_LUN_GET_FEATURES 0xD4U /**< LUN Get Features */
-#define ONFI_CMD_LUN_SET_FEATURES 0xD5U /**< LUN Set Features */
-#define ONFI_CMD_RST_LUN 0xFAU /**< Reset LUN */
-#define ONFI_CMD_SYN_RST 0xFCU /**< Synchronous Reset */
-
-/*
- * ONFI Status Register bit offsets
- */
-#define ONFI_STS_FAIL 0x01U /**< FAIL */
-#define ONFI_STS_FAILC 0x02U /**< FAILC */
-#define ONFI_STS_CSP 0x08U /**< CSP */
-#define ONFI_STS_VSP 0x10U /**< VSP */
-#define ONFI_STS_ARDY 0x20U /**< ARDY */
-#define ONFI_STS_RDY 0x40U /**< RDY */
-#define ONFI_STS_WP 0x80U /**< WP_n */
-
-/*
- * ONFI constants
- */
-#define ONFI_CRC_LEN 254U /**< ONFI CRC Buf Length */
-#define ONFI_PRM_PG_LEN 256U /**< Parameter Page Length */
-#define ONFI_MND_PRM_PGS 3U /**< Number of mandatory
- parameter pages */
-#define ONFI_SIG_LEN 4U /**< Signature Length */
-#define ONFI_CMD_INVALID 0x00U /**< Invalid Command */
-
-#define ONFI_READ_ID_LEN 4U /**< ONFI ID length */
-#define ONFI_READ_ID_ADDR 0x20U /**< ONFI Read ID Address */
-#define ONFI_READ_ID_ADDR_CYCLES 1U /**< ONFI Read ID Address
- cycles */
-
-#define ONFI_PRM_PG_ADDR_CYCLES 1U /**< ONFI Read Parameter page
- address cycles */
-
-/**
- * This enum defines the ONFI 3.1 commands.
- */
-enum OnfiCommandList {
- READ=0, /**< Read */
- MULTIPLANE_READ, /**< Multiplane Read */
- COPYBACK_READ, /**< Copyback Read */
- CHANGE_READ_COLUMN, /**< Change Read Column */
- CHANGE_READ_COLUMN_ENHANCED, /**< Change Read Column Enhanced */
- READ_CACHE_RANDOM, /**< Read Cache Random */
- READ_CACHE_SEQUENTIAL, /**< Read Cache Sequential */
- READ_CACHE_END, /**< Read Cache End */
- BLOCK_ERASE, /**< Block Erase */
- MULTIPLANE_BLOCK_ERASE, /**< Multiplane Block Erase */
- READ_STATUS, /**< Read Status */
- READ_STATUS_ENHANCED, /**< Read Status Enhanced */
- PAGE_PROGRAM, /**< Page Program */
- MULTIPLANE_PAGE_PROGRAM, /**< Multiplane Page Program */
- PAGE_CACHE_PROGRAM, /**< Page Cache Program */
- COPYBACK_PROGRAM, /**< Copyback Program */
- MULTIPLANE_COPYBACK_PROGRAM, /**< Multiplance Copyback Program */
- SMALL_DATA_MOVE, /**< Small Data Move */
- CHANGE_WRITE_COLUMN, /**< Change Write Column */
- CHANGE_ROW_ADDR, /**< Change Row Address */
- READ_ID, /**< Read ID */
- VOLUME_SELECT, /**< Volume Select */
- ODT_CONFIGURE, /**< ODT Configure */
- READ_PARAM_PAGE, /**< Read Parameter Page */
- READ_UNIQUE_ID, /**< Read Unique ID */
- GET_FEATURES, /**< Get Features */
- SET_FEATURES, /**< Set Features */
- LUN_GET_FEATURES, /**< LUN Get Features */
- LUN_SET_FEATURES, /**< LUN Set Features */
- RESET_LUN, /**< Reset LUN */
- SYN_RESET, /**< Synchronous Reset */
- RESET, /**< Reset */
- MAX_CMDS /**< Dummy Command */
-};
-
-/**************************** Type Definitions *******************************/
-/*
- * Parameter page structure of ONFI 3.1 specification.
- */
-typedef struct {
- /*
- * Revision information and features block
- */
- u8 Signature[4]; /**< Parameter page signature */
- u16 Revision; /**< Revision Number */
- u16 Features; /**< Features supported */
- u16 OptionalCmds; /**< Optional commands supported */
- u8 JedecJtgPrmAdvCmd; /**< ONFI JEDEC JTG primary advanced
- command support */
- u8 Reserved0; /**< Reserved (11) */
- u16 ExtParamPageLen; /**< Extended Parameter Page Length */
- u8 NumOfParamPages; /**< Number of Parameter Pages */
- u8 Reserved1[17]; /**< Reserved (15-31) */
- /*
- * Manufacturer information block
- */
- u8 DeviceManufacturer[12]; /**< Device manufacturer */
- u8 DeviceModel[20]; /**< Device model */
- u8 JedecManufacturerId; /**< JEDEC Manufacturer ID */
- u8 DateCode[2]; /**< Date code */
- u8 Reserved2[13]; /**< Reserved (67-79) */
- /*
- * Memory organization block
- */
- u32 BytesPerPage; /**< Number of data bytes per page */
- u16 SpareBytesPerPage; /**< Number of spare bytes per page */
- u32 BytesPerPartialPage; /**< Number of data bytes per
- partial page */
- u16 SpareBytesPerPartialPage; /**< Number of spare bytes per
- partial page */
- u32 PagesPerBlock; /**< Number of pages per block */
- u32 BlocksPerLun; /**< Number of blocks per LUN */
- u8 NumLuns; /**< Number of LUN's */
- u8 AddrCycles; /**< Number of address cycles */
- u8 BitsPerCell; /**< Number of bits per cell */
- u16 MaxBadBlocksPerLun; /**< Bad blocks maximum per LUN */
- u16 BlockEndurance; /**< Block endurance */
- u8 GuaranteedValidBlock; /**< Guaranteed valid blocks at
- beginning of target */
- u16 BlockEnduranceGVB; /**< Block endurance for guaranteed
- valid block */
- u8 ProgramsPerPage; /**< Number of programs per page */
- u8 PartialProgAttr; /**< Partial programming attributes */
- u8 EccBits; /**< Number of bits ECC
- correctability */
- u8 PlaneAddrBits; /**< Number of plane address bits */
- u8 PlaneOperationAttr; /**< Multi-plane operation
- attributes */
- u8 EzNandSupport; /**< EZ NAND support */
- u8 Reserved3[12]; /**< Reserved (116 - 127) */
- /*
- * Electrical parameters block
- */
- u8 IOPinCapacitance; /**< I/O pin capacitance, maximum */
- u16 SDRTimingMode; /**< SDR Timing mode support */
- u16 SDRPagecacheTimingMode; /**< SDR Program cache timing mode */
- u16 TProg; /**< Maximum page program time */
- u16 TBers; /**< Maximum block erase time */
- u16 TR; /**< Maximum page read time */
- u16 TCcs; /**< Maximum change column setup
- time */
- u8 NVDDRTimingMode; /**< NVDDR timing mode support */
- u8 NVDDR2TimingMode; /**< NVDDR2 timing mode support */
- u8 SynFeatures; /**< NVDDR/NVDDR2 features */
- u16 ClkInputPinCap; /**< CLK input pin capacitance */
- u16 IOPinCap; /**< I/O pin capacitance */
- u16 InputPinCap; /**< Input pin capacitance typical */
- u8 InputPinCapMax; /**< Input pin capacitance maximum */
- u8 DrvStrength; /**< Driver strength support */
- u16 TMr; /**< Maximum multi-plane read time */
- u16 TAdl; /**< Program page register clear
- enhancement value */
- u16 TEr; /**< Typical page read time for
- EZ NAND */
- u8 NVDDR2Features; /**< NVDDR2 Features */
- u8 NVDDR2WarmupCycles; /**< NVDDR2 Warmup Cycles */
- u8 Reserved4[4]; /**< Reserved (160 - 163) */
- /*
- * Vendor block
- */
- u16 VendorRevisionNum; /**< Vendor specific revision number */
- u8 VendorSpecific[88]; /**< Vendor specific */
- u16 Crc; /**< Integrity CRC */
-}__attribute__((packed))OnfiParamPage;
-
-/*
- * ONFI extended parameter page structure.
- */
-typedef struct {
- u16 Crc;
- u8 Sig[4];
- u8 Reserved1[10];
- u8 Section0Type;
- u8 Section0Len;
- u8 Section1Type;
- u8 Section1Len;
- u8 ResSection[12];
- u8 SectionData[256];
-}__attribute__((packed))OnfiExtPrmPage;
-
-/*
- * Driver extended parameter page information.
- */
-typedef struct {
- u8 NumBitsEcc;
- u8 CodeWordSize;
- u16 MaxBadBlocks;
- u16 BlockEndurance;
- u16 Reserved;
-}__attribute__((packed))OnfiExtEccBlock;
-
-typedef struct {
- u8 Command1; /**< Command Cycle 1 */
- u8 Command2; /**< Command Cycle 2 */
-} OnfiCmdFormat;
-
-extern const OnfiCmdFormat OnfiCmd[MAX_CMDS];
-
-/************************** Function Prototypes ******************************/
-
-u32 XNandPsu_OnfiParamPageCrc(u8 *ParamBuf, u32 StartOff, u32 Length);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* XNANDPSU_ONFI_H end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu.c
index 9be11b8f1..cd415ae07 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu.c
@@ -33,6 +33,8 @@
/**
*
* @file xqspipsu.c
+* @addtogroup qspipsu_v1_0
+* @{
*
* This file implements the functions required to use the QSPIPSU hardware to
* perform a transfer. These are accessible to the user via xqspipsu.h.
@@ -47,6 +49,9 @@
* hk 03/18/15 Switch to I/O mode before clearing RX FIFO.
* Clear and disbale DMA interrupts/status in abort.
* Use DMA DONE bit instead of BUSY as recommended.
+* sk 04/24/15 Modified the code according to MISRAC-2012.
+* sk 06/17/15 Removed NULL checks for Rx/Tx buffers. As
+* writing/reading from 0x0 location is permitted.
*
*
*
@@ -64,20 +69,20 @@
/************************** Function Prototypes ******************************/
static void StubStatusHandler(void *CallBackRef, u32 StatusEvent,
- unsigned ByteCount);
+ u32 ByteCount);
static inline u32 XQspiPsu_SelectSpiMode(u8 SpiMode);
static inline void XQspiPsu_TXRXSetup(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
u32 *GenFifoEntry);
static inline void XQspiPsu_FillTxFifo(XQspiPsu *InstancePtr,
- XQspiPsu_Msg *Msg, int Size);
+ XQspiPsu_Msg *Msg, s32 Size);
static inline void XQspiPsu_SetupRxDma(XQspiPsu *InstancePtr,
XQspiPsu_Msg *Msg);
static inline void XQspiPsu_GenFifoEntryCSAssert(XQspiPsu *InstancePtr);
-static inline int XQspiPsu_GenFifoEntryData(XQspiPsu *InstancePtr,
- XQspiPsu_Msg *Msg, int Index);
+static inline void XQspiPsu_GenFifoEntryData(XQspiPsu *InstancePtr,
+ XQspiPsu_Msg *Msg, s32 Index);
static inline void XQspiPsu_GenFifoEntryCSDeAssert(XQspiPsu *InstancePtr);
static inline void XQspiPsu_ReadRxFifo(XQspiPsu *InstancePtr,
- XQspiPsu_Msg *Msg, int Size);
+ XQspiPsu_Msg *Msg, s32 Size);
/************************** Variable Definitions *****************************/
@@ -108,11 +113,12 @@ static inline void XQspiPsu_ReadRxFifo(XQspiPsu *InstancePtr,
* @note None.
*
******************************************************************************/
-int XQspiPsu_CfgInitialize(XQspiPsu *InstancePtr, XQspiPsu_Config *ConfigPtr,
+s32 XQspiPsu_CfgInitialize(XQspiPsu *InstancePtr, XQspiPsu_Config *ConfigPtr,
u32 EffectiveAddr)
{
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(ConfigPtr != NULL);
+ s32 Status;
/*
* If the device is busy, disallow the initialize and return a status
@@ -121,41 +127,46 @@ int XQspiPsu_CfgInitialize(XQspiPsu *InstancePtr, XQspiPsu_Config *ConfigPtr,
* initializing. This assumes the busy flag is cleared at startup.
*/
if (InstancePtr->IsBusy == TRUE) {
- return XST_DEVICE_IS_STARTED;
- }
-
- /* Set some default values. */
- InstancePtr->IsBusy = FALSE;
-
- InstancePtr->Config.BaseAddress = EffectiveAddr + XQSPIPSU_OFFSET;
- InstancePtr->Config.ConnectionMode = ConfigPtr->ConnectionMode;
- InstancePtr->StatusHandler = StubStatusHandler;
-
- /* Other instance variable initializations */
- InstancePtr->SendBufferPtr = NULL;
- InstancePtr->RecvBufferPtr = NULL;
- InstancePtr->GenFifoBufferPtr = NULL;
- InstancePtr->TxBytes = 0;
- InstancePtr->RxBytes = 0;
- InstancePtr->GenFifoEntries = 0;
- InstancePtr->ReadMode = XQSPIPSU_READMODE_DMA;
- InstancePtr->GenFifoCS = XQSPIPSU_GENFIFO_CS_LOWER;
- InstancePtr->GenFifoBus = XQSPIPSU_GENFIFO_BUS_LOWER;
- InstancePtr->IsUnaligned = 0;
+ Status = (s32)XST_DEVICE_IS_STARTED;
+ } else {
- /* Select QSPIPSU */
- XQspiPsu_Select(InstancePtr);
+ /* Set some default values. */
+ InstancePtr->IsBusy = FALSE;
- /*
- * Reset the QSPIPSU device to get it into its initial state. It is
- * expected that device configuration will take place after this
- * initialization is done, but before the device is started.
- */
- XQspiPsu_Reset(InstancePtr);
+ InstancePtr->Config.BaseAddress = EffectiveAddr + XQSPIPSU_OFFSET;
+ InstancePtr->Config.ConnectionMode = ConfigPtr->ConnectionMode;
+ InstancePtr->StatusHandler = StubStatusHandler;
+ InstancePtr->Config.BusWidth = ConfigPtr->BusWidth;
- InstancePtr->IsReady = XIL_COMPONENT_IS_READY;
+ /* Other instance variable initializations */
+ InstancePtr->SendBufferPtr = NULL;
+ InstancePtr->RecvBufferPtr = NULL;
+ InstancePtr->GenFifoBufferPtr = NULL;
+ InstancePtr->TxBytes = 0;
+ InstancePtr->RxBytes = 0;
+ InstancePtr->GenFifoEntries = 0;
+ InstancePtr->ReadMode = XQSPIPSU_READMODE_DMA;
+ InstancePtr->GenFifoCS = XQSPIPSU_GENFIFO_CS_LOWER;
+ InstancePtr->GenFifoBus = XQSPIPSU_GENFIFO_BUS_LOWER;
+ InstancePtr->IsUnaligned = 0;
+ InstancePtr->IsManualstart = TRUE;
+
+ /* Select QSPIPSU */
+ XQspiPsu_Select(InstancePtr);
+
+ /*
+ * Reset the QSPIPSU device to get it into its initial state. It is
+ * expected that device configuration will take place after this
+ * initialization is done, but before the device is started.
+ */
+ XQspiPsu_Reset(InstancePtr);
+
+ InstancePtr->IsReady = XIL_COMPONENT_IS_READY;
+
+ Status = XST_SUCCESS;
+ }
- return XST_SUCCESS;
+ return Status;
}
/*****************************************************************************/
@@ -199,10 +210,10 @@ void XQspiPsu_Reset(XQspiPsu *InstancePtr)
/* Set hold bit */
ConfigReg |= XQSPIPSU_CFG_WP_HOLD_MASK;
/* Clear prescalar by default */
- ConfigReg &= ~XQSPIPSU_CFG_BAUD_RATE_DIV_MASK;
+ ConfigReg &= (u32)(~XQSPIPSU_CFG_BAUD_RATE_DIV_MASK);
/* CPOL CPHA 00 */
- ConfigReg &= ~XQSPIPSU_CFG_CLK_PHA_MASK;
- ConfigReg &= ~XQSPIPSU_CFG_CLK_POL_MASK;
+ ConfigReg &= (u32)(~XQSPIPSU_CFG_CLK_PHA_MASK);
+ ConfigReg &= (u32)(~XQSPIPSU_CFG_CLK_POL_MASK);
XQspiPsu_WriteReg(InstancePtr->Config.BaseAddress,
XQSPIPSU_CFG_OFFSET, ConfigReg);
@@ -272,7 +283,7 @@ void XQspiPsu_Abort(XQspiPsu *InstancePtr)
/* Clear FIFO */
if((XQspiPsu_ReadReg(InstancePtr->Config.BaseAddress,
- XQSPIPSU_ISR_OFFSET) & XQSPIPSU_ISR_RXEMPTY_MASK)) {
+ XQSPIPSU_ISR_OFFSET) & XQSPIPSU_ISR_RXEMPTY_MASK) != FALSE) {
XQspiPsu_WriteReg(InstancePtr->Config.BaseAddress,
XQSPIPSU_FIFO_CTRL_OFFSET,
XQSPIPSU_FIFO_CTRL_RST_TX_FIFO_MASK |
@@ -284,7 +295,7 @@ void XQspiPsu_Abort(XQspiPsu *InstancePtr)
* where it waits on RX empty and goes busy assuming there is data
* to be transfered even if there is no request.
*/
- if ((IntrStatus & XQSPIPSU_ISR_RXEMPTY_MASK) != 0) {
+ if ((IntrStatus & XQSPIPSU_ISR_RXEMPTY_MASK) != 0U) {
ConfigReg = XQspiPsu_ReadReg(InstancePtr->Config.BaseAddress,
XQSPIPSU_CFG_OFFSET);
ConfigReg &= ~XQSPIPSU_CFG_MODE_EN_MASK;
@@ -329,27 +340,35 @@ void XQspiPsu_Abort(XQspiPsu *InstancePtr)
* @note None.
*
******************************************************************************/
-int XQspiPsu_PolledTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
- unsigned NumMsg)
+s32 XQspiPsu_PolledTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
+ u32 NumMsg)
{
u32 StatusReg;
u32 ConfigReg;
- int Index;
- u8 IsManualStart = FALSE;
+ s32 Index;
u32 QspiPsuStatusReg, DmaStatusReg;
u32 BaseAddress;
- int Status;
- u32 RxThr;
+ s32 Status;
+ s32 RxThr;
+ u32 IOPending = (u32)FALSE;
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- for (Index = 0; Index < NumMsg; Index++) {
- Xil_AssertNonvoid(Msg[Index].ByteCount > 0);
+ for (Index = 0; Index < (s32)NumMsg; Index++) {
+ Xil_AssertNonvoid(Msg[Index].ByteCount > 0U);
}
/* Check whether there is another transfer in progress. Not thread-safe */
- if (InstancePtr->IsBusy) {
- return XST_DEVICE_BUSY;
+ if (InstancePtr->IsBusy == TRUE) {
+ return (s32)XST_DEVICE_BUSY;
+ }
+
+ /* Check for ByteCount upper limit - 2^28 for DMA */
+ for (Index = 0; Index < (s32)NumMsg; Index++) {
+ if ((Msg[Index].ByteCount > XQSPIPSU_DMA_BYTES_MAX) &&
+ ((Msg[Index].Flags & XQSPIPSU_MSG_FLAG_RX) != FALSE)) {
+ return (s32)XST_FAILURE;
+ }
}
/*
@@ -360,9 +379,6 @@ int XQspiPsu_PolledTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
BaseAddress = InstancePtr->Config.BaseAddress;
- /* Start if manual start */
- IsManualStart = XQspiPsu_IsManualStart(InstancePtr);
-
/* Enable */
XQspiPsu_Enable(InstancePtr);
@@ -370,15 +386,11 @@ int XQspiPsu_PolledTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
XQspiPsu_GenFifoEntryCSAssert(InstancePtr);
/* list */
- for (Index = 0; Index < NumMsg; Index++) {
+ Index = 0;
+ while (Index < (s32)NumMsg) {
+ XQspiPsu_GenFifoEntryData(InstancePtr, Msg, Index);
-GENFIFO:
- Status = XQspiPsu_GenFifoEntryData(InstancePtr, Msg, Index);
- if (Status != XST_SUCCESS) {
- return Status;
- }
-
- if (IsManualStart) {
+ if (InstancePtr->IsManualstart == TRUE) {
XQspiPsu_WriteReg(BaseAddress, XQSPIPSU_CFG_OFFSET,
XQspiPsu_ReadReg(BaseAddress,
XQSPIPSU_CFG_OFFSET) |
@@ -392,8 +404,8 @@ GENFIFO:
XQSPIPSU_ISR_OFFSET);
/* Transmit more data if left */
- if ((QspiPsuStatusReg & XQSPIPSU_ISR_TXNOT_FULL_MASK) &&
- (Msg[Index].TxBfrPtr != NULL) &&
+ if (((QspiPsuStatusReg & XQSPIPSU_ISR_TXNOT_FULL_MASK) != FALSE) &&
+ ((Msg[Index].Flags & XQSPIPSU_MSG_FLAG_TX) != FALSE) &&
(InstancePtr->TxBytes > 0)) {
XQspiPsu_FillTxFifo(InstancePtr, &Msg[Index],
XQSPIPSU_TXD_DEPTH);
@@ -401,16 +413,16 @@ GENFIFO:
/* Check if DMA RX is complete and update RxBytes */
if ((InstancePtr->ReadMode == XQSPIPSU_READMODE_DMA) &&
- (Msg[Index].RxBfrPtr != NULL)) {
+ ((Msg[Index].Flags & XQSPIPSU_MSG_FLAG_RX) != FALSE)) {
u32 DmaIntrSts;
DmaIntrSts = XQspiPsu_ReadReg(BaseAddress,
XQSPIPSU_QSPIDMA_DST_I_STS_OFFSET);
- if (DmaIntrSts & XQSPIPSU_QSPIDMA_DST_I_STS_DONE_MASK) {
+ if ((DmaIntrSts & XQSPIPSU_QSPIDMA_DST_I_STS_DONE_MASK) != FALSE) {
XQspiPsu_WriteReg(BaseAddress,
XQSPIPSU_QSPIDMA_DST_I_STS_OFFSET,
DmaIntrSts);
/* Read remaining bytes using IO mode */
- if(InstancePtr->RxBytes % 4 != 0 ) {
+ if((InstancePtr->RxBytes % 4) != 0 ) {
XQspiPsu_WriteReg(BaseAddress,
XQSPIPSU_CFG_OFFSET,
(XQspiPsu_ReadReg(BaseAddress,
@@ -422,31 +434,36 @@ GENFIFO:
Msg[Index].RxBfrPtr += (InstancePtr->RxBytes -
(InstancePtr->RxBytes % 4));
InstancePtr->IsUnaligned = 1;
- goto GENFIFO;
+ IOPending = (u32)TRUE;
+ break;
}
InstancePtr->RxBytes = 0;
}
- } else if (Msg[Index].RxBfrPtr != NULL) {
- /* Check if PIO RX is complete and update RxBytes */
- RxThr = XQspiPsu_ReadReg(BaseAddress,
- XQSPIPSU_RX_THRESHOLD_OFFSET);
- if ((QspiPsuStatusReg & XQSPIPSU_ISR_RXNEMPTY_MASK)
- != 0U) {
- XQspiPsu_ReadRxFifo(InstancePtr,
- &Msg[Index], RxThr);
-
- } else if ((QspiPsuStatusReg &
- XQSPIPSU_ISR_GENFIFOEMPTY_MASK) != 0U) {
- XQspiPsu_ReadRxFifo(InstancePtr,
- &Msg[Index], InstancePtr->RxBytes);
+ } else {
+ if ((Msg[Index].Flags & XQSPIPSU_MSG_FLAG_RX) != FALSE) {
+ /* Check if PIO RX is complete and update RxBytes */
+ RxThr = (s32)XQspiPsu_ReadReg(BaseAddress,
+ XQSPIPSU_RX_THRESHOLD_OFFSET);
+ if ((QspiPsuStatusReg & XQSPIPSU_ISR_RXNEMPTY_MASK)
+ != 0U) {
+ XQspiPsu_ReadRxFifo(InstancePtr,
+ &Msg[Index], RxThr*4);
+
+ } else {
+ if ((QspiPsuStatusReg &
+ XQSPIPSU_ISR_GENFIFOEMPTY_MASK) != 0U) {
+ XQspiPsu_ReadRxFifo(InstancePtr,
+ &Msg[Index], InstancePtr->RxBytes);
+ }
+ }
}
}
- } while (!(QspiPsuStatusReg & XQSPIPSU_ISR_GENFIFOEMPTY_MASK) ||
+ } while (((QspiPsuStatusReg & XQSPIPSU_ISR_GENFIFOEMPTY_MASK) == FALSE) ||
(InstancePtr->TxBytes != 0) ||
- !(QspiPsuStatusReg & XQSPIPSU_ISR_TXEMPTY_MASK) ||
+ ((QspiPsuStatusReg & XQSPIPSU_ISR_TXEMPTY_MASK) == FALSE) ||
(InstancePtr->RxBytes != 0));
- if(InstancePtr->IsUnaligned) {
+ if((InstancePtr->IsUnaligned != 0) && (IOPending == (u32)FALSE)) {
InstancePtr->IsUnaligned = 0;
XQspiPsu_WriteReg(BaseAddress,
XQSPIPSU_CFG_OFFSET, (XQspiPsu_ReadReg(
@@ -455,19 +472,25 @@ GENFIFO:
XQSPIPSU_CFG_MODE_EN_DMA_MASK));
InstancePtr->ReadMode = XQSPIPSU_READMODE_DMA;
}
+
+ if (IOPending == (u32)TRUE) {
+ IOPending = (u32)FALSE;
+ } else {
+ Index++;
+ }
}
/* De-select slave */
XQspiPsu_GenFifoEntryCSDeAssert(InstancePtr);
- if (IsManualStart) {
+ if (InstancePtr->IsManualstart == TRUE) {
XQspiPsu_WriteReg(BaseAddress, XQSPIPSU_CFG_OFFSET,
XQspiPsu_ReadReg(BaseAddress, XQSPIPSU_CFG_OFFSET) |
XQSPIPSU_CFG_START_GEN_FIFO_MASK);
}
QspiPsuStatusReg = XQspiPsu_ReadReg(BaseAddress, XQSPIPSU_ISR_OFFSET);
- while (!(QspiPsuStatusReg & XQSPIPSU_ISR_GENFIFOEMPTY_MASK)) {
+ while ((QspiPsuStatusReg & XQSPIPSU_ISR_GENFIFOEMPTY_MASK) == FALSE) {
QspiPsuStatusReg = XQspiPsu_ReadReg(BaseAddress,
XQSPIPSU_ISR_OFFSET);
}
@@ -500,25 +523,32 @@ GENFIFO:
* @note None.
*
******************************************************************************/
-int XQspiPsu_InterruptTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
- unsigned NumMsg)
+s32 XQspiPsu_InterruptTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
+ u32 NumMsg)
{
u32 StatusReg;
u32 ConfigReg;
- int Index;
- u8 IsManualStart = FALSE;
+ s32 Index;
u32 BaseAddress;
- int Status;
+ s32 Status;
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- for (Index = 0; Index < NumMsg; Index++) {
- Xil_AssertNonvoid(Msg[Index].ByteCount > 0);
+ for (Index = 0; Index < (s32)NumMsg; Index++) {
+ Xil_AssertNonvoid(Msg[Index].ByteCount > 0U);
}
/* Check whether there is another transfer in progress. Not thread-safe */
- if (InstancePtr->IsBusy) {
- return XST_DEVICE_BUSY;
+ if (InstancePtr->IsBusy == TRUE) {
+ return (s32)XST_DEVICE_BUSY;
+ }
+
+ /* Check for ByteCount upper limit - 2^28 for DMA */
+ for (Index = 0; Index < (s32)NumMsg; Index++) {
+ if ((Msg[Index].ByteCount > XQSPIPSU_DMA_BYTES_MAX) &&
+ ((Msg[Index].Flags & XQSPIPSU_MSG_FLAG_RX) != FALSE)) {
+ return (s32)XST_FAILURE;
+ }
}
/*
@@ -529,11 +559,8 @@ int XQspiPsu_InterruptTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
BaseAddress = InstancePtr->Config.BaseAddress;
- /* Start if manual start */
- IsManualStart = XQspiPsu_IsManualStart(InstancePtr);
-
InstancePtr->Msg = Msg;
- InstancePtr->NumMsg = NumMsg;
+ InstancePtr->NumMsg = (s32)NumMsg;
InstancePtr->MsgCnt = 0;
/* Enable */
@@ -544,12 +571,9 @@ int XQspiPsu_InterruptTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
/* This might not work if not manual start */
/* Put first message in FIFO along with the above slave select */
- Status = XQspiPsu_GenFifoEntryData(InstancePtr, Msg, 0);
- if (Status != XST_SUCCESS) {
- return Status;
- }
+ XQspiPsu_GenFifoEntryData(InstancePtr, Msg, 0);
- if (IsManualStart) {
+ if (InstancePtr->IsManualstart == TRUE) {
XQspiPsu_WriteReg(BaseAddress, XQSPIPSU_CFG_OFFSET,
XQspiPsu_ReadReg(BaseAddress, XQSPIPSU_CFG_OFFSET) |
XQSPIPSU_CFG_START_GEN_FIFO_MASK);
@@ -557,8 +581,9 @@ int XQspiPsu_InterruptTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
/* Enable interrupts */
XQspiPsu_WriteReg(BaseAddress, XQSPIPSU_IER_OFFSET,
- XQSPIPSU_IER_TXNOT_FULL_MASK | XQSPIPSU_IER_TXEMPTY_MASK |
- XQSPIPSU_IER_RXNEMPTY_MASK | XQSPIPSU_IER_GENFIFOEMPTY_MASK);
+ (u32)XQSPIPSU_IER_TXNOT_FULL_MASK | (u32)XQSPIPSU_IER_TXEMPTY_MASK |
+ (u32)XQSPIPSU_IER_RXNEMPTY_MASK | (u32)XQSPIPSU_IER_GENFIFOEMPTY_MASK |
+ (u32)XQSPIPSU_IER_RXEMPTY_MASK);
if (InstancePtr->ReadMode == XQSPIPSU_READMODE_DMA) {
XQspiPsu_WriteReg(BaseAddress, XQSPIPSU_QSPIDMA_DST_I_EN_OFFSET,
@@ -582,16 +607,16 @@ int XQspiPsu_InterruptTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
* @note None.
*
******************************************************************************/
-int XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr)
+s32 XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr)
{
- u8 IsManualStart = FALSE;
- u32 QspiPsuStatusReg, DmaIntrStatusReg;
+ u32 QspiPsuStatusReg, DmaIntrStatusReg = 0;
u32 BaseAddress;
XQspiPsu_Msg *Msg;
- int NumMsg;
- int MsgCnt;
+ s32 NumMsg;
+ s32 MsgCnt;
u8 DeltaMsgCnt = 0;
- u32 RxThr;
+ s32 RxThr;
+ u32 TxRxFlag;
Xil_AssertNonvoid(InstancePtr != NULL);
@@ -599,9 +624,7 @@ int XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr)
Msg = InstancePtr->Msg;
NumMsg = InstancePtr->NumMsg;
MsgCnt = InstancePtr->MsgCnt;
-
- /* Start if manual start */
- IsManualStart = XQspiPsu_IsManualStart(InstancePtr);
+ TxRxFlag = Msg[MsgCnt].Flags;
/* QSPIPSU Intr cleared on read */
QspiPsuStatusReg = XQspiPsu_ReadReg(BaseAddress, XQSPIPSU_ISR_OFFSET);
@@ -613,16 +636,16 @@ int XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr)
XQspiPsu_WriteReg(BaseAddress,
XQSPIPSU_QSPIDMA_DST_I_STS_OFFSET, DmaIntrStatusReg);
}
- if ((QspiPsuStatusReg & XQSPIPSU_ISR_POLL_TIME_EXPIRE_MASK) ||
- (DmaIntrStatusReg & XQSPIPSU_QSPIDMA_DST_INTR_ERR_MASK)) {
+ if (((QspiPsuStatusReg & XQSPIPSU_ISR_POLL_TIME_EXPIRE_MASK) != FALSE) ||
+ ((DmaIntrStatusReg & XQSPIPSU_QSPIDMA_DST_INTR_ERR_MASK) != FALSE)) {
/* Call status handler to indicate error */
InstancePtr->StatusHandler(InstancePtr->StatusRef,
XST_SPI_COMMAND_ERROR, 0);
}
/* Fill more data to be txed if required */
- if ((MsgCnt < NumMsg) && (Msg[MsgCnt].TxBfrPtr != NULL) &&
- (QspiPsuStatusReg & XQSPIPSU_ISR_TXNOT_FULL_MASK) &&
+ if ((MsgCnt < NumMsg) && ((TxRxFlag & XQSPIPSU_MSG_FLAG_TX) != FALSE) &&
+ ((QspiPsuStatusReg & XQSPIPSU_ISR_TXNOT_FULL_MASK) != FALSE) &&
(InstancePtr->TxBytes > 0)) {
XQspiPsu_FillTxFifo(InstancePtr, &Msg[MsgCnt],
XQSPIPSU_TXD_DEPTH);
@@ -632,20 +655,20 @@ int XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr)
* Check if the entry is ONLY TX and increase MsgCnt.
* This is to allow TX and RX together in one entry - corner case.
*/
- if ((MsgCnt < NumMsg) && (Msg[MsgCnt].TxBfrPtr != NULL) &&
- (QspiPsuStatusReg & XQSPIPSU_ISR_TXEMPTY_MASK) &&
- (QspiPsuStatusReg & XQSPIPSU_ISR_GENFIFOEMPTY_MASK) &&
+ if ((MsgCnt < NumMsg) && ((TxRxFlag & XQSPIPSU_MSG_FLAG_TX) != FALSE) &&
+ ((QspiPsuStatusReg & XQSPIPSU_ISR_TXEMPTY_MASK) != FALSE) &&
+ ((QspiPsuStatusReg & XQSPIPSU_ISR_GENFIFOEMPTY_MASK) != FALSE) &&
(InstancePtr->TxBytes == 0) &&
- (Msg[MsgCnt].RxBfrPtr == NULL)) {
+ ((TxRxFlag & XQSPIPSU_MSG_FLAG_RX) == FALSE)) {
MsgCnt += 1;
- DeltaMsgCnt = 1;
+ DeltaMsgCnt = 1U;
}
- if (InstancePtr->ReadMode == XQSPIPSU_READMODE_DMA &&
- (MsgCnt < NumMsg) && (Msg[MsgCnt].RxBfrPtr != NULL)) {
- if ((DmaIntrStatusReg & XQSPIPSU_QSPIDMA_DST_I_STS_DONE_MASK)) {
+ if ((InstancePtr->ReadMode == XQSPIPSU_READMODE_DMA) &&
+ (MsgCnt < NumMsg) && ((TxRxFlag & XQSPIPSU_MSG_FLAG_RX) != FALSE)) {
+ if ((DmaIntrStatusReg & XQSPIPSU_QSPIDMA_DST_I_STS_DONE_MASK) != FALSE) {
/* Read remaining bytes using IO mode */
- if(InstancePtr->RxBytes % 4 != 0 ) {
+ if((InstancePtr->RxBytes % 4) != 0 ) {
XQspiPsu_WriteReg(BaseAddress,
XQSPIPSU_CFG_OFFSET, (XQspiPsu_ReadReg(
BaseAddress, XQSPIPSU_CFG_OFFSET) &
@@ -657,7 +680,7 @@ int XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr)
InstancePtr->IsUnaligned = 1;
XQspiPsu_GenFifoEntryData(InstancePtr, Msg,
MsgCnt);
- if(IsManualStart) {
+ if(InstancePtr->IsManualstart == TRUE) {
XQspiPsu_WriteReg(BaseAddress,
XQSPIPSU_CFG_OFFSET,
XQspiPsu_ReadReg(BaseAddress,
@@ -668,25 +691,29 @@ int XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr)
else {
InstancePtr->RxBytes = 0;
MsgCnt += 1;
- DeltaMsgCnt = 1;
+ DeltaMsgCnt = 1U;
}
}
- } else if ((MsgCnt < NumMsg) && (Msg[MsgCnt].RxBfrPtr != NULL)) {
- RxThr = XQspiPsu_ReadReg(BaseAddress,
- XQSPIPSU_RX_THRESHOLD_OFFSET);
- if (InstancePtr->RxBytes != 0) {
- if ((QspiPsuStatusReg & XQSPIPSU_ISR_RXNEMPTY_MASK)
- != 0) {
- XQspiPsu_ReadRxFifo(InstancePtr, &Msg[MsgCnt],
- RxThr);
- } else if ((QspiPsuStatusReg &
- XQSPIPSU_ISR_GENFIFOEMPTY_MASK) != 0) {
- XQspiPsu_ReadRxFifo(InstancePtr, &Msg[MsgCnt],
- InstancePtr->RxBytes);
- }
- if (InstancePtr->RxBytes == 0) {
- MsgCnt += 1;
- DeltaMsgCnt = 1;
+ } else {
+ if ((MsgCnt < NumMsg) && ((TxRxFlag & XQSPIPSU_MSG_FLAG_RX) != FALSE)) {
+ if (InstancePtr->RxBytes != 0) {
+ if ((QspiPsuStatusReg & XQSPIPSU_ISR_RXNEMPTY_MASK)
+ != FALSE) {
+ RxThr = (s32)XQspiPsu_ReadReg(BaseAddress,
+ XQSPIPSU_RX_THRESHOLD_OFFSET);
+ XQspiPsu_ReadRxFifo(InstancePtr, &Msg[MsgCnt],
+ RxThr*4);
+ } else {
+ if (((QspiPsuStatusReg & XQSPIPSU_ISR_GENFIFOEMPTY_MASK) != FALSE) &&
+ ((QspiPsuStatusReg & XQSPIPSU_ISR_RXEMPTY_MASK) == FALSE)) {
+ XQspiPsu_ReadRxFifo(InstancePtr, &Msg[MsgCnt],
+ InstancePtr->RxBytes);
+ }
+ }
+ if (InstancePtr->RxBytes == 0) {
+ MsgCnt += 1;
+ DeltaMsgCnt = 1U;
+ }
}
}
}
@@ -697,12 +724,12 @@ int XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr)
* If one of the above conditions increased MsgCnt, then
* the new message is yet to be placed in the FIFO; hence !DeltaMsgCnt.
*/
- if ((MsgCnt < NumMsg) && !DeltaMsgCnt &&
- (Msg[MsgCnt].RxBfrPtr == NULL) &&
- (Msg[MsgCnt].TxBfrPtr == NULL) &&
- (QspiPsuStatusReg & XQSPIPSU_ISR_GENFIFOEMPTY_MASK)) {
+ if ((MsgCnt < NumMsg) && (DeltaMsgCnt == FALSE) &&
+ ((TxRxFlag & XQSPIPSU_MSG_FLAG_RX) == FALSE) &&
+ ((TxRxFlag & XQSPIPSU_MSG_FLAG_TX) == FALSE) &&
+ ((QspiPsuStatusReg & XQSPIPSU_ISR_GENFIFOEMPTY_MASK) != FALSE)) {
MsgCnt += 1;
- DeltaMsgCnt = 1;
+ DeltaMsgCnt = 1U;
}
InstancePtr->MsgCnt = MsgCnt;
@@ -711,10 +738,10 @@ int XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr)
* while tx is still not empty or rx dma is not yet done.
* MsgCnt > NumMsg indicates CS de-assert entry was also executed.
*/
- if ((QspiPsuStatusReg & XQSPIPSU_ISR_GENFIFOEMPTY_MASK) &&
- (DeltaMsgCnt || (MsgCnt > NumMsg))) {
+ if (((QspiPsuStatusReg & XQSPIPSU_ISR_GENFIFOEMPTY_MASK) != FALSE) &&
+ ((DeltaMsgCnt != FALSE) || (MsgCnt > NumMsg))) {
if (MsgCnt < NumMsg) {
- if(InstancePtr->IsUnaligned) {
+ if(InstancePtr->IsUnaligned != 0) {
InstancePtr->IsUnaligned = 0;
XQspiPsu_WriteReg(InstancePtr->Config.
BaseAddress, XQSPIPSU_CFG_OFFSET,
@@ -726,7 +753,7 @@ int XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr)
/* This might not work if not manual start */
XQspiPsu_GenFifoEntryData(InstancePtr, Msg, MsgCnt);
- if (IsManualStart) {
+ if (InstancePtr->IsManualstart == TRUE) {
XQspiPsu_WriteReg(BaseAddress,
XQSPIPSU_CFG_OFFSET,
XQspiPsu_ReadReg(BaseAddress,
@@ -741,7 +768,7 @@ int XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr)
/* De-select slave */
XQspiPsu_GenFifoEntryCSDeAssert(InstancePtr);
- if (IsManualStart) {
+ if (InstancePtr->IsManualstart == TRUE) {
XQspiPsu_WriteReg(BaseAddress,
XQSPIPSU_CFG_OFFSET,
XQspiPsu_ReadReg(BaseAddress,
@@ -751,10 +778,11 @@ int XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr)
} else {
/* Disable interrupts */
XQspiPsu_WriteReg(BaseAddress, XQSPIPSU_IDR_OFFSET,
- XQSPIPSU_IER_TXNOT_FULL_MASK |
- XQSPIPSU_IER_TXEMPTY_MASK |
- XQSPIPSU_IER_RXNEMPTY_MASK |
- XQSPIPSU_IER_GENFIFOEMPTY_MASK);
+ (u32)XQSPIPSU_IER_TXNOT_FULL_MASK |
+ (u32)XQSPIPSU_IER_TXEMPTY_MASK |
+ (u32)XQSPIPSU_IER_RXNEMPTY_MASK |
+ (u32)XQSPIPSU_IER_GENFIFOEMPTY_MASK |
+ (u32)XQSPIPSU_IER_RXEMPTY_MASK);
if (InstancePtr->ReadMode == XQSPIPSU_READMODE_DMA) {
XQspiPsu_WriteReg(BaseAddress,
XQSPIPSU_QSPIDMA_DST_I_DIS_OFFSET,
@@ -803,7 +831,7 @@ int XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr)
* @param InstancePtr is a pointer to the XQspiPsu instance.
* @param CallBackRef is the upper layer callback reference passed back
* when the callback function is invoked.
-* @param FuncPtr is the pointer to the callback function.
+* @param FuncPointer is the pointer to the callback function.
*
* @return None.
*
@@ -814,13 +842,13 @@ int XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr)
*
******************************************************************************/
void XQspiPsu_SetStatusHandler(XQspiPsu *InstancePtr, void *CallBackRef,
- XQspiPsu_StatusHandler FuncPtr)
+ XQspiPsu_StatusHandler FuncPointer)
{
Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(FuncPtr != NULL);
+ Xil_AssertVoid(FuncPointer != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- InstancePtr->StatusHandler = FuncPtr;
+ InstancePtr->StatusHandler = FuncPointer;
InstancePtr->StatusRef = CallBackRef;
}
@@ -841,9 +869,9 @@ void XQspiPsu_SetStatusHandler(XQspiPsu *InstancePtr, void *CallBackRef,
*
******************************************************************************/
static void StubStatusHandler(void *CallBackRef, u32 StatusEvent,
- unsigned ByteCount)
+ u32 ByteCount)
{
- (void) CallBackRef;
+ (void *) CallBackRef;
(void) StatusEvent;
(void) ByteCount;
@@ -872,8 +900,11 @@ static inline u32 XQspiPsu_SelectSpiMode(u8 SpiMode)
Mask = XQSPIPSU_GENFIFO_MODE_QUADSPI;
break;
case XQSPIPSU_SELECT_MODE_SPI:
+ Mask = XQSPIPSU_GENFIFO_MODE_SPI;
+ break;
default:
Mask = XQSPIPSU_GENFIFO_MODE_SPI;
+ break;
}
return Mask;
@@ -901,11 +932,14 @@ static inline void XQspiPsu_TXRXSetup(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
Xil_AssertVoid(InstancePtr != NULL);
/* Transmit */
- if ((Msg->TxBfrPtr != NULL) && (Msg->RxBfrPtr == NULL)) {
+ if (((Msg->Flags & XQSPIPSU_MSG_FLAG_TX) != FALSE) &&
+ ((Msg->Flags & XQSPIPSU_MSG_FLAG_RX) == FALSE)) {
/* Setup data to be TXed */
*GenFifoEntry |= XQSPIPSU_GENFIFO_DATA_XFER;
*GenFifoEntry |= XQSPIPSU_GENFIFO_TX;
- InstancePtr->TxBytes = Msg->ByteCount;
+ InstancePtr->TxBytes = (s32)Msg->ByteCount;
+ InstancePtr->SendBufferPtr = Msg->TxBfrPtr;
+ InstancePtr->RecvBufferPtr = NULL;
XQspiPsu_FillTxFifo(InstancePtr, Msg, XQSPIPSU_TXD_DEPTH);
/* Discard RX data */
*GenFifoEntry &= ~XQSPIPSU_GENFIFO_RX;
@@ -913,33 +947,42 @@ static inline void XQspiPsu_TXRXSetup(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
}
/* Receive */
- if ((Msg->TxBfrPtr == NULL) && (Msg->RxBfrPtr != NULL)) {
+ if (((Msg->Flags & XQSPIPSU_MSG_FLAG_RX) != FALSE) &&
+ ((Msg->Flags & XQSPIPSU_MSG_FLAG_TX) == FALSE)) {
/* TX auto fill */
*GenFifoEntry &= ~XQSPIPSU_GENFIFO_TX;
InstancePtr->TxBytes = 0;
/* Setup RX */
*GenFifoEntry |= XQSPIPSU_GENFIFO_DATA_XFER;
*GenFifoEntry |= XQSPIPSU_GENFIFO_RX;
- InstancePtr->RxBytes = Msg->ByteCount;
+ InstancePtr->RxBytes = (s32)Msg->ByteCount;
+ InstancePtr->SendBufferPtr = NULL;
+ InstancePtr->RecvBufferPtr = Msg->RxBfrPtr;
if (InstancePtr->ReadMode == XQSPIPSU_READMODE_DMA) {
XQspiPsu_SetupRxDma(InstancePtr, Msg);
}
}
/* If only dummy is requested as a separate entry */
- if ((Msg->TxBfrPtr == NULL) && (Msg->RxBfrPtr == NULL)) {
+ if (((Msg->Flags & XQSPIPSU_MSG_FLAG_TX) == FALSE) &&
+ (Msg->Flags & XQSPIPSU_MSG_FLAG_RX) == FALSE) {
*GenFifoEntry |= XQSPIPSU_GENFIFO_DATA_XFER;
*GenFifoEntry &= ~(XQSPIPSU_GENFIFO_TX | XQSPIPSU_GENFIFO_RX);
InstancePtr->TxBytes = 0;
InstancePtr->RxBytes = 0;
+ InstancePtr->SendBufferPtr = NULL;
+ InstancePtr->RecvBufferPtr = NULL;
}
/* Dummy and cmd sent by upper layer to received data */
- if ((Msg->TxBfrPtr != NULL) && (Msg->RxBfrPtr != NULL)) {
+ if (((Msg->Flags & XQSPIPSU_MSG_FLAG_TX) != FALSE) &&
+ ((Msg->Flags & XQSPIPSU_MSG_FLAG_RX) != FALSE)) {
*GenFifoEntry |= XQSPIPSU_GENFIFO_DATA_XFER;
*GenFifoEntry |= (XQSPIPSU_GENFIFO_TX | XQSPIPSU_GENFIFO_RX);
- InstancePtr->TxBytes = Msg->ByteCount;
- InstancePtr->RxBytes = Msg->ByteCount;
+ InstancePtr->TxBytes = (s32)Msg->ByteCount;
+ InstancePtr->RxBytes = (s32)Msg->ByteCount;
+ InstancePtr->SendBufferPtr = Msg->TxBfrPtr;
+ InstancePtr->RecvBufferPtr = Msg->RxBfrPtr;
XQspiPsu_FillTxFifo(InstancePtr, Msg, XQSPIPSU_TXD_DEPTH);
/* Add check for DMA or PIO here */
if (InstancePtr->ReadMode == XQSPIPSU_READMODE_DMA) {
@@ -964,24 +1007,32 @@ static inline void XQspiPsu_TXRXSetup(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
*
******************************************************************************/
static inline void XQspiPsu_FillTxFifo(XQspiPsu *InstancePtr,
- XQspiPsu_Msg *Msg, int Size)
+ XQspiPsu_Msg *Msg, s32 Size)
{
- int Count = 0;
+ s32 Count = 0;
u32 Data;
Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(Msg->TxBfrPtr != NULL);
while ((InstancePtr->TxBytes > 0) && (Count < Size)) {
- Data = *((u32*)Msg->TxBfrPtr);
+ if (InstancePtr->TxBytes >= 4) {
+ (void)memcpy(&Data, Msg->TxBfrPtr, 4);
+ Msg->TxBfrPtr += 4;
+ InstancePtr->TxBytes -= 4;
+ Count += 4;
+ } else {
+ (void)memcpy(&Data, Msg->TxBfrPtr, InstancePtr->TxBytes);
+ Msg->TxBfrPtr += InstancePtr->TxBytes;
+ Count += InstancePtr->TxBytes;
+ InstancePtr->TxBytes = 0;
+ }
XQspiPsu_WriteReg(InstancePtr->Config.BaseAddress,
XQSPIPSU_TXD_OFFSET, Data);
- Msg->TxBfrPtr += 4;
- InstancePtr->TxBytes -= 4;
- Count++;
+
}
- if (InstancePtr->TxBytes < 0)
+ if (InstancePtr->TxBytes < 0) {
InstancePtr->TxBytes = 0;
+ }
}
/*****************************************************************************/
@@ -1000,22 +1051,21 @@ static inline void XQspiPsu_FillTxFifo(XQspiPsu *InstancePtr,
static inline void XQspiPsu_SetupRxDma(XQspiPsu *InstancePtr,
XQspiPsu_Msg *Msg)
{
- int Remainder;
- int DmaRxBytes;
+ s32 Remainder;
+ s32 DmaRxBytes;
u64 AddrTemp;
Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(Msg->RxBfrPtr != NULL);
- AddrTemp = (u64)(INTPTR)(Msg->RxBfrPtr) &
- XQSPIPSU_QSPIDMA_DST_ADDR_MASK;
+ AddrTemp = (u64)((INTPTR)(Msg->RxBfrPtr) &
+ XQSPIPSU_QSPIDMA_DST_ADDR_MASK);
/* Check for RXBfrPtr to be word aligned */
XQspiPsu_WriteReg(InstancePtr->Config.BaseAddress,
XQSPIPSU_QSPIDMA_DST_ADDR_OFFSET,
(u32)AddrTemp);
AddrTemp = AddrTemp >> 32;
- if (AddrTemp & 0xFFF) {
+ if ((AddrTemp & 0xFFFU) != FALSE) {
XQspiPsu_WriteReg(InstancePtr->Config.BaseAddress,
XQSPIPSU_QSPIDMA_DST_ADDR_MSB_OFFSET,
(u32)AddrTemp &
@@ -1027,12 +1077,14 @@ static inline void XQspiPsu_SetupRxDma(XQspiPsu *InstancePtr,
if (Remainder != 0) {
/* This is done to make Dma bytes aligned */
DmaRxBytes = InstancePtr->RxBytes - Remainder;
- Msg->ByteCount = DmaRxBytes;
+ Msg->ByteCount = (u32)DmaRxBytes;
}
+ Xil_DCacheInvalidateRange((INTPTR)InstancePtr->RecvBufferPtr, Msg->ByteCount);
+
/* Write no. of words to DMA DST SIZE */
XQspiPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XQSPIPSU_QSPIDMA_DST_SIZE_OFFSET, DmaRxBytes);
+ XQSPIPSU_QSPIDMA_DST_SIZE_OFFSET, (u32)DmaRxBytes);
}
@@ -1052,12 +1104,12 @@ static inline void XQspiPsu_GenFifoEntryCSAssert(XQspiPsu *InstancePtr)
{
u32 GenFifoEntry;
- GenFifoEntry = 0x0;
- GenFifoEntry &= ~(XQSPIPSU_GENFIFO_DATA_XFER | XQSPIPSU_GENFIFO_EXP);
- GenFifoEntry &= ~XQSPIPSU_GENFIFO_MODE_MASK;
+ GenFifoEntry = 0x0U;
+ GenFifoEntry &= ~((u32)XQSPIPSU_GENFIFO_DATA_XFER | (u32)XQSPIPSU_GENFIFO_EXP);
+ GenFifoEntry &= (u32)(~XQSPIPSU_GENFIFO_MODE_MASK);
GenFifoEntry |= XQSPIPSU_GENFIFO_MODE_SPI;
GenFifoEntry |= InstancePtr->GenFifoCS;
- GenFifoEntry &= ~XQSPIPSU_GENFIFO_BUS_MASK;
+ GenFifoEntry &= (u32)(~XQSPIPSU_GENFIFO_BUS_MASK);
GenFifoEntry |= InstancePtr->GenFifoBus;
GenFifoEntry &= ~(XQSPIPSU_GENFIFO_TX | XQSPIPSU_GENFIFO_RX |
XQSPIPSU_GENFIFO_STRIPE | XQSPIPSU_GENFIFO_POLL);
@@ -1084,35 +1136,46 @@ static inline void XQspiPsu_GenFifoEntryCSAssert(XQspiPsu *InstancePtr)
* @note None.
*
******************************************************************************/
-static inline int XQspiPsu_GenFifoEntryData(XQspiPsu *InstancePtr,
- XQspiPsu_Msg *Msg, int Index)
+static inline void XQspiPsu_GenFifoEntryData(XQspiPsu *InstancePtr,
+ XQspiPsu_Msg *Msg, s32 Index)
{
u32 GenFifoEntry;
u32 BaseAddress;
- int TempCount;
- int ImmData;
+ u32 TempCount;
+ u32 ImmData;
BaseAddress = InstancePtr->Config.BaseAddress;
- GenFifoEntry = 0x0;
+ GenFifoEntry = 0x0U;
/* Bus width */
- GenFifoEntry &= ~XQSPIPSU_GENFIFO_MODE_MASK;
- GenFifoEntry |= XQspiPsu_SelectSpiMode(Msg[Index].BusWidth);
+ GenFifoEntry &= (u32)(~XQSPIPSU_GENFIFO_MODE_MASK);
+ GenFifoEntry |= XQspiPsu_SelectSpiMode((u8)Msg[Index].BusWidth);
GenFifoEntry |= InstancePtr->GenFifoCS;
- GenFifoEntry &= ~XQSPIPSU_GENFIFO_BUS_MASK;
+ GenFifoEntry &= (u32)(~XQSPIPSU_GENFIFO_BUS_MASK);
GenFifoEntry |= InstancePtr->GenFifoBus;
/* Data */
- if (Msg[Index].Flags & XQSPIPSU_MSG_FLAG_STRIPE)
+ if (((Msg[Index].Flags) & XQSPIPSU_MSG_FLAG_STRIPE) != FALSE) {
GenFifoEntry |= XQSPIPSU_GENFIFO_STRIPE;
- else
+ } else {
GenFifoEntry &= ~XQSPIPSU_GENFIFO_STRIPE;
+ }
+
+ /* If Byte Count is less than 8 bytes do the transfer in IO mode */
+ if ((Msg[Index].ByteCount < 8U) &&
+ (InstancePtr->ReadMode == XQSPIPSU_READMODE_DMA)) {
+ InstancePtr->ReadMode = XQSPIPSU_READMODE_IO;
+ XQspiPsu_WriteReg(BaseAddress, XQSPIPSU_CFG_OFFSET,
+ (XQspiPsu_ReadReg(BaseAddress, XQSPIPSU_CFG_OFFSET) &
+ ~XQSPIPSU_CFG_MODE_EN_MASK));
+ InstancePtr->IsUnaligned = 1;
+ }
XQspiPsu_TXRXSetup(InstancePtr, &Msg[Index], &GenFifoEntry);
if (Msg[Index].ByteCount < XQSPIPSU_GENFIFO_IMM_DATA_MASK) {
- GenFifoEntry &= ~XQSPIPSU_GENFIFO_IMM_DATA_MASK;
+ GenFifoEntry &= (u32)(~XQSPIPSU_GENFIFO_IMM_DATA_MASK);
GenFifoEntry |= Msg[Index].ByteCount;
XQspiPsu_WriteReg(BaseAddress, XQSPIPSU_GEN_FIFO_OFFSET,
GenFifoEntry);
@@ -1120,17 +1183,12 @@ static inline int XQspiPsu_GenFifoEntryData(XQspiPsu *InstancePtr,
TempCount = Msg[Index].ByteCount;
u32 Exponent = 8; /* 2^8 = 256 */
- /* Check for ByteCount upper limit - 2^28 for DMA */
- if (TempCount > XQSPIPSU_DMA_BYTES_MAX) {
- return XST_FAILURE;
- }
-
- ImmData = TempCount & 0xFF;
+ ImmData = TempCount & 0xFFU;
/* Exponent entries */
GenFifoEntry |= XQSPIPSU_GENFIFO_EXP;
- while (TempCount != 0) {
- if (TempCount & XQSPIPSU_GENFIFO_EXP_START) {
- GenFifoEntry &= ~XQSPIPSU_GENFIFO_IMM_DATA_MASK;
+ while (TempCount != 0U) {
+ if ((TempCount & XQSPIPSU_GENFIFO_EXP_START) != FALSE) {
+ GenFifoEntry &= (u32)(~XQSPIPSU_GENFIFO_IMM_DATA_MASK);
GenFifoEntry |= Exponent;
XQspiPsu_WriteReg(BaseAddress,
XQSPIPSU_GEN_FIFO_OFFSET,
@@ -1141,16 +1199,22 @@ static inline int XQspiPsu_GenFifoEntryData(XQspiPsu *InstancePtr,
}
/* Immediate entry */
- GenFifoEntry &= ~XQSPIPSU_GENFIFO_EXP;
- if (ImmData & 0xFF) {
- GenFifoEntry &= ~XQSPIPSU_GENFIFO_IMM_DATA_MASK;
- GenFifoEntry |= ImmData & 0xFF;
+ GenFifoEntry &= (u32)(~XQSPIPSU_GENFIFO_EXP);
+ if ((ImmData & 0xFFU) != FALSE) {
+ GenFifoEntry &= (u32)(~XQSPIPSU_GENFIFO_IMM_DATA_MASK);
+ GenFifoEntry |= ImmData & 0xFFU;
XQspiPsu_WriteReg(BaseAddress,
XQSPIPSU_GEN_FIFO_OFFSET, GenFifoEntry);
}
}
- return XST_SUCCESS;
+ /* One dummy GenFifo entry in case of IO mode */
+ if ((InstancePtr->ReadMode == XQSPIPSU_READMODE_IO) &&
+ ((Msg[Index].Flags & XQSPIPSU_MSG_FLAG_RX) != FALSE)) {
+ GenFifoEntry = 0x0U;
+ XQspiPsu_WriteReg(BaseAddress,
+ XQSPIPSU_GEN_FIFO_OFFSET, GenFifoEntry);
+ }
}
/*****************************************************************************/
@@ -1169,11 +1233,11 @@ static inline void XQspiPsu_GenFifoEntryCSDeAssert(XQspiPsu *InstancePtr)
{
u32 GenFifoEntry;
- GenFifoEntry = 0x0;
- GenFifoEntry &= ~(XQSPIPSU_GENFIFO_DATA_XFER | XQSPIPSU_GENFIFO_EXP);
- GenFifoEntry &= ~XQSPIPSU_GENFIFO_MODE_MASK;
+ GenFifoEntry = 0x0U;
+ GenFifoEntry &= ~((u32)XQSPIPSU_GENFIFO_DATA_XFER | (u32)XQSPIPSU_GENFIFO_EXP);
+ GenFifoEntry &= (u32)(~XQSPIPSU_GENFIFO_MODE_MASK);
GenFifoEntry |= XQSPIPSU_GENFIFO_MODE_SPI;
- GenFifoEntry &= ~XQSPIPSU_GENFIFO_BUS_MASK;
+ GenFifoEntry &= (u32)(~XQSPIPSU_GENFIFO_BUS_MASK);
GenFifoEntry |= InstancePtr->GenFifoBus;
GenFifoEntry &= ~(XQSPIPSU_GENFIFO_TX | XQSPIPSU_GENFIFO_RX |
XQSPIPSU_GENFIFO_STRIPE | XQSPIPSU_GENFIFO_POLL);
@@ -1198,31 +1262,29 @@ static inline void XQspiPsu_GenFifoEntryCSDeAssert(XQspiPsu *InstancePtr)
*
******************************************************************************/
static inline void XQspiPsu_ReadRxFifo(XQspiPsu *InstancePtr,
- XQspiPsu_Msg *Msg, int Size)
+ XQspiPsu_Msg *Msg, s32 Size)
{
- int Count = 0;
+ s32 Count = 0;
u32 Data;
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(Msg != NULL);
- while (InstancePtr->RxBytes != 0 && Count < Size) {
+ while ((InstancePtr->RxBytes != 0) && (Count < Size)) {
Data = XQspiPsu_ReadReg(InstancePtr->
Config.BaseAddress, XQSPIPSU_RXD_OFFSET);
if (InstancePtr->RxBytes >= 4) {
- *(u32 *)Msg->RxBfrPtr = Data;
+ (void)memcpy(Msg->RxBfrPtr, &Data, 4);
InstancePtr->RxBytes -= 4;
Msg->RxBfrPtr += 4;
Count += 4;
} else {
/* Read unaligned bytes (< 4 bytes) */
- while (InstancePtr->RxBytes != 0) {
- *Msg->RxBfrPtr = Data;
- InstancePtr->RxBytes--;
- Msg->RxBfrPtr++;
- Count++;
- Data >>= 8;
- }
+ (void)memcpy(Msg->RxBfrPtr, &Data, InstancePtr->RxBytes);
+ Msg->RxBfrPtr += InstancePtr->RxBytes;
+ Count += InstancePtr->RxBytes;
+ InstancePtr->RxBytes = 0;
}
}
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu.h
index 9395ea260..d34438df6 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu.h
@@ -33,6 +33,9 @@
/**
*
* @file xqspipsu.h
+* @addtogroup qspipsu_v1_0
+* @{
+* @details
*
* This is the header file for the implementation of QSPIPSU driver.
* Generic QSPI interface allows for communication to any QSPI slave device.
@@ -89,12 +92,15 @@
* hk 03/18/15 Switch to I/O mode before clearing RX FIFO.
* Clear and disbale DMA interrupts/status in abort.
* Use DMA DONE bit instead of BUSY as recommended.
+* sk 04/24/15 Modified the code according to MISRAC-2012.
+* sk 06/17/15 Removed NULL checks for Rx/Tx buffers. As
+* writing/reading from 0x0 location is permitted.
*
*
*
******************************************************************************/
-#ifndef _XQSPIPSU_H_ /* prevent circular inclusions */
-#define _XQSPIPSU_H_ /* by using protection macros */
+#ifndef XQSPIPSU_H_ /* prevent circular inclusions */
+#define XQSPIPSU_H_ /* by using protection macros */
#ifdef __cplusplus
extern "C" {
@@ -104,6 +110,7 @@ extern "C" {
#include "xstatus.h"
#include "xqspipsu_hw.h"
+#include "xil_cache.h"
/**************************** Type Definitions *******************************/
/**
@@ -125,7 +132,7 @@ extern "C" {
* requested if the status event indicates an error.
*/
typedef void (*XQspiPsu_StatusHandler) (void *CallBackRef, u32 StatusEvent,
- unsigned ByteCount);
+ u32 ByteCount);
/**
* This typedef contains configuration information for a flash message.
@@ -161,16 +168,17 @@ typedef struct {
u8 *SendBufferPtr; /**< Buffer to send (state) */
u8 *RecvBufferPtr; /**< Buffer to receive (state) */
u8 *GenFifoBufferPtr; /**< Gen FIFO entries */
- int TxBytes; /**< Number of bytes to transfer (state) */
- int RxBytes; /**< Number of bytes left to transfer(state) */
- int GenFifoEntries; /**< Number of Gen FIFO entries remaining */
+ s32 TxBytes; /**< Number of bytes to transfer (state) */
+ s32 RxBytes; /**< Number of bytes left to transfer(state) */
+ s32 GenFifoEntries; /**< Number of Gen FIFO entries remaining */
u32 IsBusy; /**< A transfer is in progress (state) */
u32 ReadMode; /**< DMA or IO mode */
u32 GenFifoCS;
u32 GenFifoBus;
- int NumMsg;
- int MsgCnt;
- int IsUnaligned;
+ s32 NumMsg;
+ s32 MsgCnt;
+ s32 IsUnaligned;
+ u8 IsManualstart;
XQspiPsu_Msg *Msg;
XQspiPsu_StatusHandler StatusHandler;
void *StatusRef; /**< Callback reference for status handler */
@@ -178,86 +186,87 @@ typedef struct {
/***************** Macros (Inline Functions) Definitions *********************/
-#define XQSPIPSU_READMODE_DMA 0x0
-#define XQSPIPSU_READMODE_IO 0x1
+#define XQSPIPSU_READMODE_DMA 0x0U
+#define XQSPIPSU_READMODE_IO 0x1U
-#define XQSPIPSU_SELECT_FLASH_CS_LOWER 0x1
-#define XQSPIPSU_SELECT_FLASH_CS_UPPER 0x2
-#define XQSPIPSU_SELECT_FLASH_CS_BOTH 0x3
+#define XQSPIPSU_SELECT_FLASH_CS_LOWER 0x1U
+#define XQSPIPSU_SELECT_FLASH_CS_UPPER 0x2U
+#define XQSPIPSU_SELECT_FLASH_CS_BOTH 0x3U
-#define XQSPIPSU_SELECT_FLASH_BUS_LOWER 0x1
-#define XQSPIPSU_SELECT_FLASH_BUS_UPPER 0x2
-#define XQSPIPSU_SELECT_FLASH_BUS_BOTH 0x3
+#define XQSPIPSU_SELECT_FLASH_BUS_LOWER 0x1U
+#define XQSPIPSU_SELECT_FLASH_BUS_UPPER 0x2U
+#define XQSPIPSU_SELECT_FLASH_BUS_BOTH 0x3U
-#define XQSPIPSU_SELECT_MODE_SPI 0x1
-#define XQSPIPSU_SELECT_MODE_DUALSPI 0x2
-#define XQSPIPSU_SELECT_MODE_QUADSPI 0x4
+#define XQSPIPSU_SELECT_MODE_SPI 0x1U
+#define XQSPIPSU_SELECT_MODE_DUALSPI 0x2U
+#define XQSPIPSU_SELECT_MODE_QUADSPI 0x4U
-#define XQSPIPSU_GENFIFO_CS_SETUP 0x04
-#define XQSPIPSU_GENFIFO_CS_HOLD 0x03
+#define XQSPIPSU_GENFIFO_CS_SETUP 0x05U
+#define XQSPIPSU_GENFIFO_CS_HOLD 0x04U
-#define XQSPIPSU_CLK_ACTIVE_LOW_OPTION 0x2
-#define XQSPIPSU_CLK_PHASE_1_OPTION 0x4
-#define XQSPIPSU_MANUAL_START_OPTION 0x8
+#define XQSPIPSU_CLK_ACTIVE_LOW_OPTION 0x2U
+#define XQSPIPSU_CLK_PHASE_1_OPTION 0x4U
+#define XQSPIPSU_MANUAL_START_OPTION 0x8U
-#define XQSPIPSU_GENFIFO_EXP_START 0x100
+#define XQSPIPSU_GENFIFO_EXP_START 0x100U
-#define XQSPIPSU_DMA_BYTES_MAX 0x10000000
+#define XQSPIPSU_DMA_BYTES_MAX 0x10000000U
-#define XQSPIPSU_CLK_PRESCALE_2 0x00
-#define XQSPIPSU_CLK_PRESCALE_4 0x01
-#define XQSPIPSU_CLK_PRESCALE_8 0x02
-#define XQSPIPSU_CLK_PRESCALE_16 0x03
-#define XQSPIPSU_CLK_PRESCALE_32 0x04
-#define XQSPIPSU_CLK_PRESCALE_64 0x05
-#define XQSPIPSU_CLK_PRESCALE_128 0x06
-#define XQSPIPSU_CLK_PRESCALE_256 0x07
-#define XQSPIPSU_CR_PRESC_MAXIMUM 7
+#define XQSPIPSU_CLK_PRESCALE_2 0x00U
+#define XQSPIPSU_CLK_PRESCALE_4 0x01U
+#define XQSPIPSU_CLK_PRESCALE_8 0x02U
+#define XQSPIPSU_CLK_PRESCALE_16 0x03U
+#define XQSPIPSU_CLK_PRESCALE_32 0x04U
+#define XQSPIPSU_CLK_PRESCALE_64 0x05U
+#define XQSPIPSU_CLK_PRESCALE_128 0x06U
+#define XQSPIPSU_CLK_PRESCALE_256 0x07U
+#define XQSPIPSU_CR_PRESC_MAXIMUM 7U
-#define XQSPIPSU_CONNECTION_MODE_SINGLE 0
-#define XQSPIPSU_CONNECTION_MODE_STACKED 1
-#define XQSPIPSU_CONNECTION_MODE_PARALLEL 2
+#define XQSPIPSU_CONNECTION_MODE_SINGLE 0U
+#define XQSPIPSU_CONNECTION_MODE_STACKED 1U
+#define XQSPIPSU_CONNECTION_MODE_PARALLEL 2U
/* Add more flags as required */
-#define XQSPIPSU_MSG_FLAG_STRIPE 0x1
+#define XQSPIPSU_MSG_FLAG_STRIPE 0x1U
+#define XQSPIPSU_MSG_FLAG_RX 0x2U
+#define XQSPIPSU_MSG_FLAG_TX 0x4U
-#define XQspiPsu_Select(InstancePtr) XQspiPsu_Out32((InstancePtr->Config.BaseAddress) + XQSPIPSU_SEL_OFFSET, XQSPIPSU_SEL_MASK)
+#define XQspiPsu_Select(InstancePtr) XQspiPsu_Out32(((InstancePtr)->Config.BaseAddress) + XQSPIPSU_SEL_OFFSET, XQSPIPSU_SEL_MASK)
-#define XQspiPsu_Enable(InstancePtr) XQspiPsu_Out32((InstancePtr->Config.BaseAddress) + XQSPIPSU_EN_OFFSET, XQSPIPSU_EN_MASK)
+#define XQspiPsu_Enable(InstancePtr) XQspiPsu_Out32(((InstancePtr)->Config.BaseAddress) + XQSPIPSU_EN_OFFSET, XQSPIPSU_EN_MASK)
-#define XQspiPsu_Disable(InstancePtr) XQspiPsu_Out32((InstancePtr->Config.BaseAddress) + XQSPIPSU_EN_OFFSET, 0x0)
-
-#define XQspiPsu_IsManualStart(InstancePtr) ((XQspiPsu_GetOptions(InstancePtr) & XQSPIPSU_MANUAL_START_OPTION) ? TRUE : FALSE)
+#define XQspiPsu_Disable(InstancePtr) XQspiPsu_Out32(((InstancePtr)->Config.BaseAddress) + XQSPIPSU_EN_OFFSET, 0x0U)
/************************** Function Prototypes ******************************/
/* Initialization and reset */
XQspiPsu_Config *XQspiPsu_LookupConfig(u16 DeviceId);
-int XQspiPsu_CfgInitialize(XQspiPsu *InstancePtr, XQspiPsu_Config *ConfigPtr,
+s32 XQspiPsu_CfgInitialize(XQspiPsu *InstancePtr, XQspiPsu_Config *ConfigPtr,
u32 EffectiveAddr);
void XQspiPsu_Reset(XQspiPsu *InstancePtr);
void XQspiPsu_Abort(XQspiPsu *InstancePtr);
/* Transfer functions and handlers */
-int XQspiPsu_PolledTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
- unsigned NumMsg);
-int XQspiPsu_InterruptTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
- unsigned NumMsg);
-int XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr);
+s32 XQspiPsu_PolledTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
+ u32 NumMsg);
+s32 XQspiPsu_InterruptTransfer(XQspiPsu *InstancePtr, XQspiPsu_Msg *Msg,
+ u32 NumMsg);
+s32 XQspiPsu_InterruptHandler(XQspiPsu *InstancePtr);
void XQspiPsu_SetStatusHandler(XQspiPsu *InstancePtr, void *CallBackRef,
- XQspiPsu_StatusHandler FuncPtr);
+ XQspiPsu_StatusHandler FuncPointer);
/* Configuration functions */
-int XQspiPsu_SetClkPrescaler(XQspiPsu *InstancePtr, u8 Prescaler);
+s32 XQspiPsu_SetClkPrescaler(XQspiPsu *InstancePtr, u8 Prescaler);
void XQspiPsu_SelectFlash(XQspiPsu *InstancePtr, u8 FlashCS, u8 FlashBus);
-int XQspiPsu_SetOptions(XQspiPsu *InstancePtr, u32 Options);
-int XQspiPsu_ClearOptions(XQspiPsu *InstancePtr, u32 Options);
+s32 XQspiPsu_SetOptions(XQspiPsu *InstancePtr, u32 Options);
+s32 XQspiPsu_ClearOptions(XQspiPsu *InstancePtr, u32 Options);
u32 XQspiPsu_GetOptions(XQspiPsu *InstancePtr);
-int XQspiPsu_SetReadMode(XQspiPsu *InstancePtr, u32 Mode);
+s32 XQspiPsu_SetReadMode(XQspiPsu *InstancePtr, u32 Mode);
#ifdef __cplusplus
}
#endif
-#endif /* _XQSPIPSU_H_ */
+#endif /* XQSPIPSU_H_ */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_g.c
index 9096c5077..daa5bde27 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_g.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_g.c
@@ -1,57 +1,58 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Driver configuration
-*
-*******************************************************************/
-
-#include "xparameters.h"
-#include "xqspipsu.h"
-
-/*
-* The configuration table for devices
-*/
-
-XQspiPsu_Config XQspiPsu_ConfigTable[] =
-{
- {
- XPAR_PSU_QSPI_0_DEVICE_ID,
- XPAR_PSU_QSPI_0_BASEADDR,
- XPAR_PSU_QSPI_0_QSPI_CLK_FREQ_HZ,
- XPAR_PSU_QSPI_0_QSPI_MODE
- }
-};
-
-
+
+/*******************************************************************
+*
+* CAUTION: This file is automatically generated by HSI.
+* Version:
+* DO NOT EDIT.
+*
+* Copyright (C) 2010-2016 Xilinx, Inc. All Rights Reserved.*
+*Permission is hereby granted, free of charge, to any person obtaining a copy
+*of this software and associated documentation files (the Software), to deal
+*in the Software without restriction, including without limitation the rights
+*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*copies of the Software, and to permit persons to whom the Software is
+*furnished to do so, subject to the following conditions:
+*
+*The above copyright notice and this permission notice shall be included in
+*all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+*(a) running on a Xilinx device, or
+*(b) that interact with a Xilinx device through a bus or interconnect.
+*
+*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+*XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+*Except as contained in this notice, the name of the Xilinx shall not be used
+*in advertising or otherwise to promote the sale, use or other dealings in
+*this Software without prior written authorization from Xilinx.
+*
+
+*
+* Description: Driver configuration
+*
+*******************************************************************/
+
+#include "xparameters.h"
+#include "xqspipsu.h"
+
+/*
+* The configuration table for devices
+*/
+
+XQspiPsu_Config XQspiPsu_ConfigTable[] =
+{
+ {
+ XPAR_PSU_QSPI_0_DEVICE_ID,
+ XPAR_PSU_QSPI_0_BASEADDR,
+ XPAR_PSU_QSPI_0_QSPI_CLK_FREQ_HZ,
+ XPAR_PSU_QSPI_0_QSPI_MODE,
+ XPAR_PSU_QSPI_0_QSPI_BUS_WIDTH
+ }
+};
+
+
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_hw.h
index bd189ba7a..508109019 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_hw.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_hw.h
@@ -33,6 +33,8 @@
/**
*
* @file xqspipsu_hw.h
+* @addtogroup qspipsu_v1_0
+* @{
*
* This file contains low level access funcitons using the base address
* directly without an instance.
@@ -44,6 +46,7 @@
* ----- --- -------- -----------------------------------------------.
* 1.0 hk 08/21/14 First release
* hk 03/18/15 Add DMA status register masks required.
+* sk 04/24/15 Modified the code according to MISRAC-2012.
*
*
*
@@ -67,727 +70,727 @@ extern "C" {
/**
* QSPI Base Address
*/
-#define XQSPIPS_BASEADDR 0XFF0F0000
+#define XQSPIPS_BASEADDR 0XFF0F0000U
/**
* GQSPI Base Address
*/
-#define XQSPIPSU_BASEADDR 0xFF0F0100
-#define XQSPIPSU_OFFSET 0x100
+#define XQSPIPSU_BASEADDR 0xFF0F0100U
+#define XQSPIPSU_OFFSET 0x100U
/**
* Register: XQSPIPS_EN_REG
*/
-#define XQSPIPS_EN_REG ( ( XQSPIPS_BASEADDR ) + 0X00000014 )
+#define XQSPIPS_EN_REG ( ( XQSPIPS_BASEADDR ) + 0X00000014U )
#define XQSPIPS_EN_SHIFT 0
#define XQSPIPS_EN_WIDTH 1
-#define XQSPIPS_EN_MASK 0X00000001
+#define XQSPIPS_EN_MASK 0X00000001U
/**
* Register: XQSPIPSU_CFG
*/
-#define XQSPIPSU_CFG_OFFSET 0X00000000
+#define XQSPIPSU_CFG_OFFSET 0X00000000U
#define XQSPIPSU_CFG_MODE_EN_SHIFT 30
#define XQSPIPSU_CFG_MODE_EN_WIDTH 2
-#define XQSPIPSU_CFG_MODE_EN_MASK 0XC0000000
-#define XQSPIPSU_CFG_MODE_EN_DMA_MASK 0X80000000
+#define XQSPIPSU_CFG_MODE_EN_MASK 0XC0000000U
+#define XQSPIPSU_CFG_MODE_EN_DMA_MASK 0X80000000U
#define XQSPIPSU_CFG_GEN_FIFO_START_MODE_SHIFT 29
#define XQSPIPSU_CFG_GEN_FIFO_START_MODE_WIDTH 1
-#define XQSPIPSU_CFG_GEN_FIFO_START_MODE_MASK 0X20000000
+#define XQSPIPSU_CFG_GEN_FIFO_START_MODE_MASK 0X20000000U
#define XQSPIPSU_CFG_START_GEN_FIFO_SHIFT 28
#define XQSPIPSU_CFG_START_GEN_FIFO_WIDTH 1
-#define XQSPIPSU_CFG_START_GEN_FIFO_MASK 0X10000000
+#define XQSPIPSU_CFG_START_GEN_FIFO_MASK 0X10000000U
#define XQSPIPSU_CFG_ENDIAN_SHIFT 26
#define XQSPIPSU_CFG_ENDIAN_WIDTH 1
-#define XQSPIPSU_CFG_ENDIAN_MASK 0X04000000
+#define XQSPIPSU_CFG_ENDIAN_MASK 0X04000000U
#define XQSPIPSU_CFG_EN_POLL_TO_SHIFT 20
#define XQSPIPSU_CFG_EN_POLL_TO_WIDTH 1
-#define XQSPIPSU_CFG_EN_POLL_TO_MASK 0X00100000
+#define XQSPIPSU_CFG_EN_POLL_TO_MASK 0X00100000U
#define XQSPIPSU_CFG_WP_HOLD_SHIFT 19
#define XQSPIPSU_CFG_WP_HOLD_WIDTH 1
-#define XQSPIPSU_CFG_WP_HOLD_MASK 0X00080000
+#define XQSPIPSU_CFG_WP_HOLD_MASK 0X00080000U
#define XQSPIPSU_CFG_BAUD_RATE_DIV_SHIFT 3
#define XQSPIPSU_CFG_BAUD_RATE_DIV_WIDTH 3
-#define XQSPIPSU_CFG_BAUD_RATE_DIV_MASK 0X00000038
+#define XQSPIPSU_CFG_BAUD_RATE_DIV_MASK 0X00000038U
#define XQSPIPSU_CFG_CLK_PHA_SHIFT 2
#define XQSPIPSU_CFG_CLK_PHA_WIDTH 1
-#define XQSPIPSU_CFG_CLK_PHA_MASK 0X00000004
+#define XQSPIPSU_CFG_CLK_PHA_MASK 0X00000004U
#define XQSPIPSU_CFG_CLK_POL_SHIFT 1
#define XQSPIPSU_CFG_CLK_POL_WIDTH 1
-#define XQSPIPSU_CFG_CLK_POL_MASK 0X00000002
+#define XQSPIPSU_CFG_CLK_POL_MASK 0X00000002U
/**
* Register: XQSPIPSU_ISR
*/
-#define XQSPIPSU_ISR_OFFSET 0X00000004
+#define XQSPIPSU_ISR_OFFSET 0X00000004U
#define XQSPIPSU_ISR_RXEMPTY_SHIFT 11
#define XQSPIPSU_ISR_RXEMPTY_WIDTH 1
-#define XQSPIPSU_ISR_RXEMPTY_MASK 0X00000800
+#define XQSPIPSU_ISR_RXEMPTY_MASK 0X00000800U
#define XQSPIPSU_ISR_GENFIFOFULL_SHIFT 10
#define XQSPIPSU_ISR_GENFIFOFULL_WIDTH 1
-#define XQSPIPSU_ISR_GENFIFOFULL_MASK 0X00000400
+#define XQSPIPSU_ISR_GENFIFOFULL_MASK 0X00000400U
#define XQSPIPSU_ISR_GENFIFONOT_FULL_SHIFT 9
#define XQSPIPSU_ISR_GENFIFONOT_FULL_WIDTH 1
-#define XQSPIPSU_ISR_GENFIFONOT_FULL_MASK 0X00000200
+#define XQSPIPSU_ISR_GENFIFONOT_FULL_MASK 0X00000200U
#define XQSPIPSU_ISR_TXEMPTY_SHIFT 8
#define XQSPIPSU_ISR_TXEMPTY_WIDTH 1
-#define XQSPIPSU_ISR_TXEMPTY_MASK 0X00000100
+#define XQSPIPSU_ISR_TXEMPTY_MASK 0X00000100U
#define XQSPIPSU_ISR_GENFIFOEMPTY_SHIFT 7
#define XQSPIPSU_ISR_GENFIFOEMPTY_WIDTH 1
-#define XQSPIPSU_ISR_GENFIFOEMPTY_MASK 0X00000080
+#define XQSPIPSU_ISR_GENFIFOEMPTY_MASK 0X00000080U
#define XQSPIPSU_ISR_RXFULL_SHIFT 5
#define XQSPIPSU_ISR_RXFULL_WIDTH 1
-#define XQSPIPSU_ISR_RXFULL_MASK 0X00000020
+#define XQSPIPSU_ISR_RXFULL_MASK 0X00000020U
#define XQSPIPSU_ISR_RXNEMPTY_SHIFT 4
#define XQSPIPSU_ISR_RXNEMPTY_WIDTH 1
-#define XQSPIPSU_ISR_RXNEMPTY_MASK 0X00000010
+#define XQSPIPSU_ISR_RXNEMPTY_MASK 0X00000010U
#define XQSPIPSU_ISR_TXFULL_SHIFT 3
#define XQSPIPSU_ISR_TXFULL_WIDTH 1
-#define XQSPIPSU_ISR_TXFULL_MASK 0X00000008
+#define XQSPIPSU_ISR_TXFULL_MASK 0X00000008U
#define XQSPIPSU_ISR_TXNOT_FULL_SHIFT 2
#define XQSPIPSU_ISR_TXNOT_FULL_WIDTH 1
-#define XQSPIPSU_ISR_TXNOT_FULL_MASK 0X00000004
+#define XQSPIPSU_ISR_TXNOT_FULL_MASK 0X00000004U
#define XQSPIPSU_ISR_POLL_TIME_EXPIRE_SHIFT 1
#define XQSPIPSU_ISR_POLL_TIME_EXPIRE_WIDTH 1
-#define XQSPIPSU_ISR_POLL_TIME_EXPIRE_MASK 0X00000002
+#define XQSPIPSU_ISR_POLL_TIME_EXPIRE_MASK 0X00000002U
-#define XQSPIPSU_ISR_WR_TO_CLR_MASK 0X00000002
+#define XQSPIPSU_ISR_WR_TO_CLR_MASK 0X00000002U
/**
* Register: XQSPIPSU_IER
*/
-#define XQSPIPSU_IER_OFFSET 0X00000008
+#define XQSPIPSU_IER_OFFSET 0X00000008U
#define XQSPIPSU_IER_RXEMPTY_SHIFT 11
#define XQSPIPSU_IER_RXEMPTY_WIDTH 1
-#define XQSPIPSU_IER_RXEMPTY_MASK 0X00000800
+#define XQSPIPSU_IER_RXEMPTY_MASK 0X00000800U
#define XQSPIPSU_IER_GENFIFOFULL_SHIFT 10
#define XQSPIPSU_IER_GENFIFOFULL_WIDTH 1
-#define XQSPIPSU_IER_GENFIFOFULL_MASK 0X00000400
+#define XQSPIPSU_IER_GENFIFOFULL_MASK 0X00000400U
#define XQSPIPSU_IER_GENFIFONOT_FULL_SHIFT 9
#define XQSPIPSU_IER_GENFIFONOT_FULL_WIDTH 1
-#define XQSPIPSU_IER_GENFIFONOT_FULL_MASK 0X00000200
+#define XQSPIPSU_IER_GENFIFONOT_FULL_MASK 0X00000200U
#define XQSPIPSU_IER_TXEMPTY_SHIFT 8
#define XQSPIPSU_IER_TXEMPTY_WIDTH 1
-#define XQSPIPSU_IER_TXEMPTY_MASK 0X00000100
+#define XQSPIPSU_IER_TXEMPTY_MASK 0X00000100U
#define XQSPIPSU_IER_GENFIFOEMPTY_SHIFT 7
#define XQSPIPSU_IER_GENFIFOEMPTY_WIDTH 1
-#define XQSPIPSU_IER_GENFIFOEMPTY_MASK 0X00000080
+#define XQSPIPSU_IER_GENFIFOEMPTY_MASK 0X00000080U
#define XQSPIPSU_IER_RXFULL_SHIFT 5
#define XQSPIPSU_IER_RXFULL_WIDTH 1
-#define XQSPIPSU_IER_RXFULL_MASK 0X00000020
+#define XQSPIPSU_IER_RXFULL_MASK 0X00000020U
#define XQSPIPSU_IER_RXNEMPTY_SHIFT 4
#define XQSPIPSU_IER_RXNEMPTY_WIDTH 1
-#define XQSPIPSU_IER_RXNEMPTY_MASK 0X00000010
+#define XQSPIPSU_IER_RXNEMPTY_MASK 0X00000010U
#define XQSPIPSU_IER_TXFULL_SHIFT 3
#define XQSPIPSU_IER_TXFULL_WIDTH 1
-#define XQSPIPSU_IER_TXFULL_MASK 0X00000008
+#define XQSPIPSU_IER_TXFULL_MASK 0X00000008U
#define XQSPIPSU_IER_TXNOT_FULL_SHIFT 2
#define XQSPIPSU_IER_TXNOT_FULL_WIDTH 1
-#define XQSPIPSU_IER_TXNOT_FULL_MASK 0X00000004
+#define XQSPIPSU_IER_TXNOT_FULL_MASK 0X00000004U
#define XQSPIPSU_IER_POLL_TIME_EXPIRE_SHIFT 1
#define XQSPIPSU_IER_POLL_TIME_EXPIRE_WIDTH 1
-#define XQSPIPSU_IER_POLL_TIME_EXPIRE_MASK 0X00000002
+#define XQSPIPSU_IER_POLL_TIME_EXPIRE_MASK 0X00000002U
/**
* Register: XQSPIPSU_IDR
*/
-#define XQSPIPSU_IDR_OFFSET 0X0000000C
+#define XQSPIPSU_IDR_OFFSET 0X0000000CU
#define XQSPIPSU_IDR_RXEMPTY_SHIFT 11
#define XQSPIPSU_IDR_RXEMPTY_WIDTH 1
-#define XQSPIPSU_IDR_RXEMPTY_MASK 0X00000800
+#define XQSPIPSU_IDR_RXEMPTY_MASK 0X00000800U
#define XQSPIPSU_IDR_GENFIFOFULL_SHIFT 10
#define XQSPIPSU_IDR_GENFIFOFULL_WIDTH 1
-#define XQSPIPSU_IDR_GENFIFOFULL_MASK 0X00000400
+#define XQSPIPSU_IDR_GENFIFOFULL_MASK 0X00000400U
#define XQSPIPSU_IDR_GENFIFONOT_FULL_SHIFT 9
#define XQSPIPSU_IDR_GENFIFONOT_FULL_WIDTH 1
-#define XQSPIPSU_IDR_GENFIFONOT_FULL_MASK 0X00000200
+#define XQSPIPSU_IDR_GENFIFONOT_FULL_MASK 0X00000200U
#define XQSPIPSU_IDR_TXEMPTY_SHIFT 8
#define XQSPIPSU_IDR_TXEMPTY_WIDTH 1
-#define XQSPIPSU_IDR_TXEMPTY_MASK 0X00000100
+#define XQSPIPSU_IDR_TXEMPTY_MASK 0X00000100U
#define XQSPIPSU_IDR_GENFIFOEMPTY_SHIFT 7
#define XQSPIPSU_IDR_GENFIFOEMPTY_WIDTH 1
-#define XQSPIPSU_IDR_GENFIFOEMPTY_MASK 0X00000080
+#define XQSPIPSU_IDR_GENFIFOEMPTY_MASK 0X00000080U
#define XQSPIPSU_IDR_RXFULL_SHIFT 5
#define XQSPIPSU_IDR_RXFULL_WIDTH 1
-#define XQSPIPSU_IDR_RXFULL_MASK 0X00000020
+#define XQSPIPSU_IDR_RXFULL_MASK 0X00000020U
#define XQSPIPSU_IDR_RXNEMPTY_SHIFT 4
#define XQSPIPSU_IDR_RXNEMPTY_WIDTH 1
-#define XQSPIPSU_IDR_RXNEMPTY_MASK 0X00000010
+#define XQSPIPSU_IDR_RXNEMPTY_MASK 0X00000010U
#define XQSPIPSU_IDR_TXFULL_SHIFT 3
#define XQSPIPSU_IDR_TXFULL_WIDTH 1
-#define XQSPIPSU_IDR_TXFULL_MASK 0X00000008
+#define XQSPIPSU_IDR_TXFULL_MASK 0X00000008U
#define XQSPIPSU_IDR_TXNOT_FULL_SHIFT 2
#define XQSPIPSU_IDR_TXNOT_FULL_WIDTH 1
-#define XQSPIPSU_IDR_TXNOT_FULL_MASK 0X00000004
+#define XQSPIPSU_IDR_TXNOT_FULL_MASK 0X00000004U
#define XQSPIPSU_IDR_POLL_TIME_EXPIRE_SHIFT 1
#define XQSPIPSU_IDR_POLL_TIME_EXPIRE_WIDTH 1
-#define XQSPIPSU_IDR_POLL_TIME_EXPIRE_MASK 0X00000002
+#define XQSPIPSU_IDR_POLL_TIME_EXPIRE_MASK 0X00000002U
-#define XQSPIPSU_IDR_ALL_MASK 0X0FBE
+#define XQSPIPSU_IDR_ALL_MASK 0X0FBEU
/**
* Register: XQSPIPSU_IMR
*/
-#define XQSPIPSU_IMR_OFFSET 0X00000010
+#define XQSPIPSU_IMR_OFFSET 0X00000010U
#define XQSPIPSU_IMR_RXEMPTY_SHIFT 11
#define XQSPIPSU_IMR_RXEMPTY_WIDTH 1
-#define XQSPIPSU_IMR_RXEMPTY_MASK 0X00000800
+#define XQSPIPSU_IMR_RXEMPTY_MASK 0X00000800U
#define XQSPIPSU_IMR_GENFIFOFULL_SHIFT 10
#define XQSPIPSU_IMR_GENFIFOFULL_WIDTH 1
-#define XQSPIPSU_IMR_GENFIFOFULL_MASK 0X00000400
+#define XQSPIPSU_IMR_GENFIFOFULL_MASK 0X00000400U
#define XQSPIPSU_IMR_GENFIFONOT_FULL_SHIFT 9
#define XQSPIPSU_IMR_GENFIFONOT_FULL_WIDTH 1
-#define XQSPIPSU_IMR_GENFIFONOT_FULL_MASK 0X00000200
+#define XQSPIPSU_IMR_GENFIFONOT_FULL_MASK 0X00000200U
#define XQSPIPSU_IMR_TXEMPTY_SHIFT 8
#define XQSPIPSU_IMR_TXEMPTY_WIDTH 1
-#define XQSPIPSU_IMR_TXEMPTY_MASK 0X00000100
+#define XQSPIPSU_IMR_TXEMPTY_MASK 0X00000100U
#define XQSPIPSU_IMR_GENFIFOEMPTY_SHIFT 7
#define XQSPIPSU_IMR_GENFIFOEMPTY_WIDTH 1
-#define XQSPIPSU_IMR_GENFIFOEMPTY_MASK 0X00000080
+#define XQSPIPSU_IMR_GENFIFOEMPTY_MASK 0X00000080U
#define XQSPIPSU_IMR_RXFULL_SHIFT 5
#define XQSPIPSU_IMR_RXFULL_WIDTH 1
-#define XQSPIPSU_IMR_RXFULL_MASK 0X00000020
+#define XQSPIPSU_IMR_RXFULL_MASK 0X00000020U
#define XQSPIPSU_IMR_RXNEMPTY_SHIFT 4
#define XQSPIPSU_IMR_RXNEMPTY_WIDTH 1
-#define XQSPIPSU_IMR_RXNEMPTY_MASK 0X00000010
+#define XQSPIPSU_IMR_RXNEMPTY_MASK 0X00000010U
#define XQSPIPSU_IMR_TXFULL_SHIFT 3
#define XQSPIPSU_IMR_TXFULL_WIDTH 1
-#define XQSPIPSU_IMR_TXFULL_MASK 0X00000008
+#define XQSPIPSU_IMR_TXFULL_MASK 0X00000008U
#define XQSPIPSU_IMR_TXNOT_FULL_SHIFT 2
#define XQSPIPSU_IMR_TXNOT_FULL_WIDTH 1
-#define XQSPIPSU_IMR_TXNOT_FULL_MASK 0X00000004
+#define XQSPIPSU_IMR_TXNOT_FULL_MASK 0X00000004U
#define XQSPIPSU_IMR_POLL_TIME_EXPIRE_SHIFT 1
#define XQSPIPSU_IMR_POLL_TIME_EXPIRE_WIDTH 1
-#define XQSPIPSU_IMR_POLL_TIME_EXPIRE_MASK 0X00000002
+#define XQSPIPSU_IMR_POLL_TIME_EXPIRE_MASK 0X00000002U
/**
* Register: XQSPIPSU_EN_REG
*/
-#define XQSPIPSU_EN_OFFSET 0X00000014
+#define XQSPIPSU_EN_OFFSET 0X00000014U
#define XQSPIPSU_EN_SHIFT 0
#define XQSPIPSU_EN_WIDTH 1
-#define XQSPIPSU_EN_MASK 0X00000001
+#define XQSPIPSU_EN_MASK 0X00000001U
/**
* Register: XQSPIPSU_TXD
*/
-#define XQSPIPSU_TXD_OFFSET 0X0000001C
+#define XQSPIPSU_TXD_OFFSET 0X0000001CU
#define XQSPIPSU_TXD_SHIFT 0
#define XQSPIPSU_TXD_WIDTH 32
-#define XQSPIPSU_TXD_MASK 0XFFFFFFFF
+#define XQSPIPSU_TXD_MASK 0XFFFFFFFFU
-#define XQSPIPSU_TXD_DEPTH 32
+#define XQSPIPSU_TXD_DEPTH 64
/**
* Register: XQSPIPSU_RXD
*/
-#define XQSPIPSU_RXD_OFFSET 0X00000020
+#define XQSPIPSU_RXD_OFFSET 0X00000020U
#define XQSPIPSU_RXD_SHIFT 0
#define XQSPIPSU_RXD_WIDTH 32
-#define XQSPIPSU_RXD_MASK 0XFFFFFFFF
+#define XQSPIPSU_RXD_MASK 0XFFFFFFFFU
/**
* Register: XQSPIPSU_TX_THRESHOLD
*/
-#define XQSPIPSU_TX_THRESHOLD_OFFSET 0X00000028
+#define XQSPIPSU_TX_THRESHOLD_OFFSET 0X00000028U
#define XQSPIPSU_TX_FIFO_THRESHOLD_SHIFT 0
#define XQSPIPSU_TX_FIFO_THRESHOLD_WIDTH 6
-#define XQSPIPSU_TX_FIFO_THRESHOLD_MASK 0X0000003F
-#define XQSPIPSU_TX_FIFO_THRESHOLD_RESET_VAL 0X01
+#define XQSPIPSU_TX_FIFO_THRESHOLD_MASK 0X0000003FU
+#define XQSPIPSU_TX_FIFO_THRESHOLD_RESET_VAL 0X01U
/**
* Register: XQSPIPSU_RX_THRESHOLD
*/
-#define XQSPIPSU_RX_THRESHOLD_OFFSET 0X0000002C
+#define XQSPIPSU_RX_THRESHOLD_OFFSET 0X0000002CU
#define XQSPIPSU_RX_FIFO_THRESHOLD_SHIFT 0
#define XQSPIPSU_RX_FIFO_THRESHOLD_WIDTH 6
-#define XQSPIPSU_RX_FIFO_THRESHOLD_MASK 0X0000003F
-#define XQSPIPSU_RX_FIFO_THRESHOLD_RESET_VAL 0X01
+#define XQSPIPSU_RX_FIFO_THRESHOLD_MASK 0X0000003FU
+#define XQSPIPSU_RX_FIFO_THRESHOLD_RESET_VAL 0X01U
-#define XQSPIPSU_RXFIFO_THRESHOLD_OPT 32
+#define XQSPIPSU_RXFIFO_THRESHOLD_OPT 32U
/**
* Register: XQSPIPSU_GPIO
*/
-#define XQSPIPSU_GPIO_OFFSET 0X00000030
+#define XQSPIPSU_GPIO_OFFSET 0X00000030U
#define XQSPIPSU_GPIO_WP_N_SHIFT 0
#define XQSPIPSU_GPIO_WP_N_WIDTH 1
-#define XQSPIPSU_GPIO_WP_N_MASK 0X00000001
+#define XQSPIPSU_GPIO_WP_N_MASK 0X00000001U
/**
* Register: XQSPIPSU_LPBK_DLY_ADJ
*/
-#define XQSPIPSU_LPBK_DLY_ADJ_OFFSET 0X00000038
+#define XQSPIPSU_LPBK_DLY_ADJ_OFFSET 0X00000038U
#define XQSPIPSU_LPBK_DLY_ADJ_USE_LPBK_SHIFT 5
#define XQSPIPSU_LPBK_DLY_ADJ_USE_LPBK_WIDTH 1
-#define XQSPIPSU_LPBK_DLY_ADJ_USE_LPBK_MASK 0X00000020
+#define XQSPIPSU_LPBK_DLY_ADJ_USE_LPBK_MASK 0X00000020U
#define XQSPIPSU_LPBK_DLY_ADJ_DLY1_SHIFT 3
#define XQSPIPSU_LPBK_DLY_ADJ_DLY1_WIDTH 2
-#define XQSPIPSU_LPBK_DLY_ADJ_DLY1_MASK 0X00000018
+#define XQSPIPSU_LPBK_DLY_ADJ_DLY1_MASK 0X00000018U
#define XQSPIPSU_LPBK_DLY_ADJ_DLY0_SHIFT 0
#define XQSPIPSU_LPBK_DLY_ADJ_DLY0_WIDTH 3
-#define XQSPIPSU_LPBK_DLY_ADJ_DLY0_MASK 0X00000007
+#define XQSPIPSU_LPBK_DLY_ADJ_DLY0_MASK 0X00000007U
/**
* Register: XQSPIPSU_GEN_FIFO
*/
-#define XQSPIPSU_GEN_FIFO_OFFSET 0X00000040
+#define XQSPIPSU_GEN_FIFO_OFFSET 0X00000040U
#define XQSPIPSU_GEN_FIFO_DATA_SHIFT 0
#define XQSPIPSU_GEN_FIFO_DATA_WIDTH 20
-#define XQSPIPSU_GEN_FIFO_DATA_MASK 0X000FFFFF
+#define XQSPIPSU_GEN_FIFO_DATA_MASK 0X000FFFFFU
/**
* Register: XQSPIPSU_SEL
*/
-#define XQSPIPSU_SEL_OFFSET 0X00000044
+#define XQSPIPSU_SEL_OFFSET 0X00000044U
#define XQSPIPSU_SEL_SHIFT 0
#define XQSPIPSU_SEL_WIDTH 1
-#define XQSPIPSU_SEL_MASK 0X00000001
+#define XQSPIPSU_SEL_MASK 0X00000001U
/**
* Register: XQSPIPSU_FIFO_CTRL
*/
-#define XQSPIPSU_FIFO_CTRL_OFFSET 0X0000004C
+#define XQSPIPSU_FIFO_CTRL_OFFSET 0X0000004CU
#define XQSPIPSU_FIFO_CTRL_RST_RX_FIFO_SHIFT 2
#define XQSPIPSU_FIFO_CTRL_RST_RX_FIFO_WIDTH 1
-#define XQSPIPSU_FIFO_CTRL_RST_RX_FIFO_MASK 0X00000004
+#define XQSPIPSU_FIFO_CTRL_RST_RX_FIFO_MASK 0X00000004U
#define XQSPIPSU_FIFO_CTRL_RST_TX_FIFO_SHIFT 1
#define XQSPIPSU_FIFO_CTRL_RST_TX_FIFO_WIDTH 1
-#define XQSPIPSU_FIFO_CTRL_RST_TX_FIFO_MASK 0X00000002
+#define XQSPIPSU_FIFO_CTRL_RST_TX_FIFO_MASK 0X00000002U
#define XQSPIPSU_FIFO_CTRL_RST_GEN_FIFO_SHIFT 0
#define XQSPIPSU_FIFO_CTRL_RST_GEN_FIFO_WIDTH 1
-#define XQSPIPSU_FIFO_CTRL_RST_GEN_FIFO_MASK 0X00000001
+#define XQSPIPSU_FIFO_CTRL_RST_GEN_FIFO_MASK 0X00000001U
/**
* Register: XQSPIPSU_GF_THRESHOLD
*/
-#define XQSPIPSU_GF_THRESHOLD_OFFSET 0X00000050
+#define XQSPIPSU_GF_THRESHOLD_OFFSET 0X00000050U
#define XQSPIPSU_GEN_FIFO_THRESHOLD_SHIFT 0
#define XQSPIPSU_GEN_FIFO_THRESHOLD_WIDTH 5
#define XQSPIPSU_GEN_FIFO_THRESHOLD_MASK 0X0000001F
-#define XQSPIPSU_GEN_FIFO_THRESHOLD_RESET_VAL 0X10
+#define XQSPIPSU_GEN_FIFO_THRESHOLD_RESET_VAL 0X10U
/**
* Register: XQSPIPSU_POLL_CFG
*/
-#define XQSPIPSU_POLL_CFG_OFFSET 0X00000054
+#define XQSPIPSU_POLL_CFG_OFFSET 0X00000054U
#define XQSPIPSU_POLL_CFG_EN_MASK_UPPER_SHIFT 31
#define XQSPIPSU_POLL_CFG_EN_MASK_UPPER_WIDTH 1
-#define XQSPIPSU_POLL_CFG_EN_MASK_UPPER_MASK 0X80000000
+#define XQSPIPSU_POLL_CFG_EN_MASK_UPPER_MASK 0X80000000U
#define XQSPIPSU_POLL_CFG_EN_MASK_LOWER_SHIFT 30
#define XQSPIPSU_POLL_CFG_EN_MASK_LOWER_WIDTH 1
-#define XQSPIPSU_POLL_CFG_EN_MASK_LOWER_MASK 0X40000000
+#define XQSPIPSU_POLL_CFG_EN_MASK_LOWER_MASK 0X40000000U
#define XQSPIPSU_POLL_CFG_MASK_EN_SHIFT 8
#define XQSPIPSU_POLL_CFG_MASK_EN_WIDTH 8
-#define XQSPIPSU_POLL_CFG_MASK_EN_MASK 0X0000FF00
+#define XQSPIPSU_POLL_CFG_MASK_EN_MASK 0X0000FF00U
#define XQSPIPSU_POLL_CFG_DATA_VALUE_SHIFT 0
#define XQSPIPSU_POLL_CFG_DATA_VALUE_WIDTH 8
-#define XQSPIPSU_POLL_CFG_DATA_VALUE_MASK 0X000000FF
+#define XQSPIPSU_POLL_CFG_DATA_VALUE_MASK 0X000000FFU
/**
* Register: XQSPIPSU_P_TIMEOUT
*/
-#define XQSPIPSU_P_TO_OFFSET 0X00000058
+#define XQSPIPSU_P_TO_OFFSET 0X00000058U
#define XQSPIPSU_P_TO_VALUE_SHIFT 0
#define XQSPIPSU_P_TO_VALUE_WIDTH 32
-#define XQSPIPSU_P_TO_VALUE_MASK 0XFFFFFFFF
+#define XQSPIPSU_P_TO_VALUE_MASK 0XFFFFFFFFU
/**
* Register: XQSPIPSU_XFER_STS
*/
-#define XQSPIPSU_XFER_STS_OFFSET 0X0000005C
+#define XQSPIPSU_XFER_STS_OFFSET 0X0000005CU
#define XQSPIPSU_XFER_STS_PEND_BYTES_SHIFT 0
#define XQSPIPSU_XFER_STS_PEND_BYTES_WIDTH 32
-#define XQSPIPSU_XFER_STS_PEND_BYTES_MASK 0XFFFFFFFF
+#define XQSPIPSU_XFER_STS_PEND_BYTES_MASK 0XFFFFFFFFU
/**
* Register: XQSPIPSU_GF_SNAPSHOT
*/
-#define XQSPIPSU_GF_SNAPSHOT_OFFSET 0X00000060
+#define XQSPIPSU_GF_SNAPSHOT_OFFSET 0X00000060U
#define XQSPIPSU_GF_SNAPSHOT_SHIFT 0
#define XQSPIPSU_GF_SNAPSHOT_WIDTH 20
-#define XQSPIPSU_GF_SNAPSHOT_MASK 0X000FFFFF
+#define XQSPIPSU_GF_SNAPSHOT_MASK 0X000FFFFFU
/**
* Register: XQSPIPSU_RX_COPY
*/
-#define XQSPIPSU_RX_COPY_OFFSET 0X00000064
+#define XQSPIPSU_RX_COPY_OFFSET 0X00000064U
#define XQSPIPSU_RX_COPY_UPPER_SHIFT 8
#define XQSPIPSU_RX_COPY_UPPER_WIDTH 8
-#define XQSPIPSU_RX_COPY_UPPER_MASK 0X0000FF00
+#define XQSPIPSU_RX_COPY_UPPER_MASK 0X0000FF00U
#define XQSPIPSU_RX_COPY_LOWER_SHIFT 0
#define XQSPIPSU_RX_COPY_LOWER_WIDTH 8
-#define XQSPIPSU_RX_COPY_LOWER_MASK 0X000000FF
+#define XQSPIPSU_RX_COPY_LOWER_MASK 0X000000FFU
/**
* Register: XQSPIPSU_MOD_ID
*/
-#define XQSPIPSU_MOD_ID_OFFSET 0X000000FC
+#define XQSPIPSU_MOD_ID_OFFSET 0X000000FCU
#define XQSPIPSU_MOD_ID_SHIFT 0
#define XQSPIPSU_MOD_ID_WIDTH 32
-#define XQSPIPSU_MOD_ID_MASK 0XFFFFFFFF
+#define XQSPIPSU_MOD_ID_MASK 0XFFFFFFFFU
/**
* Register: XQSPIPSU_QSPIDMA_DST_ADDR
*/
-#define XQSPIPSU_QSPIDMA_DST_ADDR_OFFSET 0X00000700
+#define XQSPIPSU_QSPIDMA_DST_ADDR_OFFSET 0X00000700U
#define XQSPIPSU_QSPIDMA_DST_ADDR_SHIFT 2
#define XQSPIPSU_QSPIDMA_DST_ADDR_WIDTH 30
-#define XQSPIPSU_QSPIDMA_DST_ADDR_MASK 0XFFFFFFFC
+#define XQSPIPSU_QSPIDMA_DST_ADDR_MASK 0XFFFFFFFCU
/**
* Register: XQSPIPSU_QSPIDMA_DST_SIZE
*/
-#define XQSPIPSU_QSPIDMA_DST_SIZE_OFFSET 0X00000704
+#define XQSPIPSU_QSPIDMA_DST_SIZE_OFFSET 0X00000704U
#define XQSPIPSU_QSPIDMA_DST_SIZE_SHIFT 2
#define XQSPIPSU_QSPIDMA_DST_SIZE_WIDTH 27
-#define XQSPIPSU_QSPIDMA_DST_SIZE_MASK 0X1FFFFFFC
+#define XQSPIPSU_QSPIDMA_DST_SIZE_MASK 0X1FFFFFFCU
/**
* Register: XQSPIPSU_QSPIDMA_DST_STS
*/
-#define XQSPIPSU_QSPIDMA_DST_STS_OFFSET 0X00000708
+#define XQSPIPSU_QSPIDMA_DST_STS_OFFSET 0X00000708U
#define XQSPIPSU_QSPIDMA_DST_STS_DONE_CNT_SHIFT 13
#define XQSPIPSU_QSPIDMA_DST_STS_DONE_CNT_WIDTH 3
-#define XQSPIPSU_QSPIDMA_DST_STS_DONE_CNT_MASK 0X0000E000
+#define XQSPIPSU_QSPIDMA_DST_STS_DONE_CNT_MASK 0X0000E000U
#define XQSPIPSU_QSPIDMA_DST_STS_DST_FIFO_LEVEL_SHIFT 5
#define XQSPIPSU_QSPIDMA_DST_STS_DST_FIFO_LEVEL_WIDTH 8
-#define XQSPIPSU_QSPIDMA_DST_STS_DST_FIFO_LEVEL_MASK 0X00001FE0
+#define XQSPIPSU_QSPIDMA_DST_STS_DST_FIFO_LEVEL_MASK 0X00001FE0U
#define XQSPIPSU_QSPIDMA_DST_STS_WR_OUTSTANDING_SHIFT 1
#define XQSPIPSU_QSPIDMA_DST_STS_WR_OUTSTANDING_WIDTH 4
-#define XQSPIPSU_QSPIDMA_DST_STS_WR_OUTSTANDING_MASK 0X0000001E
+#define XQSPIPSU_QSPIDMA_DST_STS_WR_OUTSTANDING_MASK 0X0000001EU
#define XQSPIPSU_QSPIDMA_DST_STS_BUSY_SHIFT 0
#define XQSPIPSU_QSPIDMA_DST_STS_BUSY_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_STS_BUSY_MASK 0X00000001
+#define XQSPIPSU_QSPIDMA_DST_STS_BUSY_MASK 0X00000001U
-#define XQSPIPSU_QSPIDMA_DST_STS_WTC 0xE000
+#define XQSPIPSU_QSPIDMA_DST_STS_WTC 0xE000U
/**
* Register: XQSPIPSU_QSPIDMA_DST_CTRL
*/
-#define XQSPIPSU_QSPIDMA_DST_CTRL_OFFSET 0X0000070C
+#define XQSPIPSU_QSPIDMA_DST_CTRL_OFFSET 0X0000070CU
#define XQSPIPSU_QSPIDMA_DST_CTRL_FIFO_LVL_HIT_THRESHOLD_SHIFT 25
#define XQSPIPSU_QSPIDMA_DST_CTRL_FIFO_LVL_HIT_THRESHOLD_WIDTH 7
-#define XQSPIPSU_QSPIDMA_DST_CTRL_FIFO_LVL_HIT_THRESHOLD_MASK 0XFE000000
+#define XQSPIPSU_QSPIDMA_DST_CTRL_FIFO_LVL_HIT_THRESHOLD_MASK 0XFE000000U
#define XQSPIPSU_QSPIDMA_DST_CTRL_APB_ERR_RESP_SHIFT 24
#define XQSPIPSU_QSPIDMA_DST_CTRL_APB_ERR_RESP_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_CTRL_APB_ERR_RESP_MASK 0X01000000
+#define XQSPIPSU_QSPIDMA_DST_CTRL_APB_ERR_RESP_MASK 0X01000000U
#define XQSPIPSU_QSPIDMA_DST_CTRL_ENDIAN_SHIFT 23
#define XQSPIPSU_QSPIDMA_DST_CTRL_ENDIAN_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_CTRL_ENDIAN_MASK 0X00800000
+#define XQSPIPSU_QSPIDMA_DST_CTRL_ENDIAN_MASK 0X00800000U
#define XQSPIPSU_QSPIDMA_DST_CTRL_AXI_BRST_TYPE_SHIFT 22
#define XQSPIPSU_QSPIDMA_DST_CTRL_AXI_BRST_TYPE_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_CTRL_AXI_BRST_TYPE_MASK 0X00400000
+#define XQSPIPSU_QSPIDMA_DST_CTRL_AXI_BRST_TYPE_MASK 0X00400000U
#define XQSPIPSU_QSPIDMA_DST_CTRL_TO_VAL_SHIFT 10
#define XQSPIPSU_QSPIDMA_DST_CTRL_TO_VAL_WIDTH 12
-#define XQSPIPSU_QSPIDMA_DST_CTRL_TO_VAL_MASK 0X003FFC00
+#define XQSPIPSU_QSPIDMA_DST_CTRL_TO_VAL_MASK 0X003FFC00U
#define XQSPIPSU_QSPIDMA_DST_CTRL_FIFO_THRESHOLD_SHIFT 2
#define XQSPIPSU_QSPIDMA_DST_CTRL_FIFO_THRESHOLD_WIDTH 8
-#define XQSPIPSU_QSPIDMA_DST_CTRL_FIFO_THRESHOLD_MASK 0X000003FC
+#define XQSPIPSU_QSPIDMA_DST_CTRL_FIFO_THRESHOLD_MASK 0X000003FCU
#define XQSPIPSU_QSPIDMA_DST_CTRL_PAUSE_STRM_SHIFT 1
#define XQSPIPSU_QSPIDMA_DST_CTRL_PAUSE_STRM_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_CTRL_PAUSE_STRM_MASK 0X00000002
+#define XQSPIPSU_QSPIDMA_DST_CTRL_PAUSE_STRM_MASK 0X00000002U
#define XQSPIPSU_QSPIDMA_DST_CTRL_PAUSE_MEM_SHIFT 0
#define XQSPIPSU_QSPIDMA_DST_CTRL_PAUSE_MEM_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_CTRL_PAUSE_MEM_MASK 0X00000001
+#define XQSPIPSU_QSPIDMA_DST_CTRL_PAUSE_MEM_MASK 0X00000001U
-#define XQSPIPSU_QSPIDMA_DST_CTRL_RESET_VAL 0x803FFA00
+#define XQSPIPSU_QSPIDMA_DST_CTRL_RESET_VAL 0x403FFA00U
/**
* Register: XQSPIPSU_QSPIDMA_DST_I_STS
*/
-#define XQSPIPSU_QSPIDMA_DST_I_STS_OFFSET 0X00000714
+#define XQSPIPSU_QSPIDMA_DST_I_STS_OFFSET 0X00000714U
#define XQSPIPSU_QSPIDMA_DST_I_STS_FIFO_OF_SHIFT 7
#define XQSPIPSU_QSPIDMA_DST_I_STS_FIFO_OF_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_STS_FIFO_OF_MASK 0X00000080
+#define XQSPIPSU_QSPIDMA_DST_I_STS_FIFO_OF_MASK 0X00000080U
#define XQSPIPSU_QSPIDMA_DST_I_STS_INVALID_APB_SHIFT 6
#define XQSPIPSU_QSPIDMA_DST_I_STS_INVALID_APB_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_STS_INVALID_APB_MASK 0X00000040
+#define XQSPIPSU_QSPIDMA_DST_I_STS_INVALID_APB_MASK 0X00000040U
#define XQSPIPSU_QSPIDMA_DST_I_STS_THRESHOLD_HIT_SHIFT 5
#define XQSPIPSU_QSPIDMA_DST_I_STS_THRESHOLD_HIT_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_STS_THRESHOLD_HIT_MASK 0X00000020
+#define XQSPIPSU_QSPIDMA_DST_I_STS_THRESHOLD_HIT_MASK 0X00000020U
#define XQSPIPSU_QSPIDMA_DST_I_STS_TO_MEM_SHIFT 4
#define XQSPIPSU_QSPIDMA_DST_I_STS_TO_MEM_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_STS_TO_MEM_MASK 0X00000010
+#define XQSPIPSU_QSPIDMA_DST_I_STS_TO_MEM_MASK 0X00000010U
#define XQSPIPSU_QSPIDMA_DST_I_STS_TO_STRM_SHIFT 3
#define XQSPIPSU_QSPIDMA_DST_I_STS_TO_STRM_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_STS_TO_STRM_MASK 0X00000008
+#define XQSPIPSU_QSPIDMA_DST_I_STS_TO_STRM_MASK 0X00000008U
#define XQSPIPSU_QSPIDMA_DST_I_STS_AXI_BRESP_ERR_SHIFT 2
#define XQSPIPSU_QSPIDMA_DST_I_STS_AXI_BRESP_ERR_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_STS_AXI_BRESP_ERR_MASK 0X00000004
+#define XQSPIPSU_QSPIDMA_DST_I_STS_AXI_BRESP_ERR_MASK 0X00000004U
#define XQSPIPSU_QSPIDMA_DST_I_STS_DONE_SHIFT 1
#define XQSPIPSU_QSPIDMA_DST_I_STS_DONE_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_STS_DONE_MASK 0X00000002
+#define XQSPIPSU_QSPIDMA_DST_I_STS_DONE_MASK 0X00000002U
-#define XQSPIPSU_QSPIDMA_DST_INTR_ERR_MASK 0X000000FC
-#define XQSPIPSU_QSPIDMA_DST_INTR_ALL_MASK 0X000000FE
+#define XQSPIPSU_QSPIDMA_DST_INTR_ERR_MASK 0X000000FCU
+#define XQSPIPSU_QSPIDMA_DST_INTR_ALL_MASK 0X000000FEU
/**
* Register: XQSPIPSU_QSPIDMA_DST_I_EN
*/
-#define XQSPIPSU_QSPIDMA_DST_I_EN_OFFSET 0X00000718
+#define XQSPIPSU_QSPIDMA_DST_I_EN_OFFSET 0X00000718U
#define XQSPIPSU_QSPIDMA_DST_I_EN_FIFO_OF_SHIFT 7
#define XQSPIPSU_QSPIDMA_DST_I_EN_FIFO_OF_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_EN_FIFO_OF_MASK 0X00000080
+#define XQSPIPSU_QSPIDMA_DST_I_EN_FIFO_OF_MASK 0X00000080U
#define XQSPIPSU_QSPIDMA_DST_I_EN_INVALID_APB_SHIFT 6
#define XQSPIPSU_QSPIDMA_DST_I_EN_INVALID_APB_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_EN_INVALID_APB_MASK 0X00000040
+#define XQSPIPSU_QSPIDMA_DST_I_EN_INVALID_APB_MASK 0X00000040U
#define XQSPIPSU_QSPIDMA_DST_I_EN_THRESHOLD_HIT_SHIFT 5
#define XQSPIPSU_QSPIDMA_DST_I_EN_THRESHOLD_HIT_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_EN_THRESHOLD_HIT_MASK 0X00000020
+#define XQSPIPSU_QSPIDMA_DST_I_EN_THRESHOLD_HIT_MASK 0X00000020U
#define XQSPIPSU_QSPIDMA_DST_I_EN_TO_MEM_SHIFT 4
#define XQSPIPSU_QSPIDMA_DST_I_EN_TO_MEM_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_EN_TO_MEM_MASK 0X00000010
+#define XQSPIPSU_QSPIDMA_DST_I_EN_TO_MEM_MASK 0X00000010U
#define XQSPIPSU_QSPIDMA_DST_I_EN_TO_STRM_SHIFT 3
#define XQSPIPSU_QSPIDMA_DST_I_EN_TO_STRM_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_EN_TO_STRM_MASK 0X00000008
+#define XQSPIPSU_QSPIDMA_DST_I_EN_TO_STRM_MASK 0X00000008U
#define XQSPIPSU_QSPIDMA_DST_I_EN_AXI_BRESP_ERR_SHIFT 2
#define XQSPIPSU_QSPIDMA_DST_I_EN_AXI_BRESP_ERR_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_EN_AXI_BRESP_ERR_MASK 0X00000004
+#define XQSPIPSU_QSPIDMA_DST_I_EN_AXI_BRESP_ERR_MASK 0X00000004U
#define XQSPIPSU_QSPIDMA_DST_I_EN_DONE_SHIFT 1
#define XQSPIPSU_QSPIDMA_DST_I_EN_DONE_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_EN_DONE_MASK 0X00000002
+#define XQSPIPSU_QSPIDMA_DST_I_EN_DONE_MASK 0X00000002U
/**
* Register: XQSPIPSU_QSPIDMA_DST_I_DIS
*/
-#define XQSPIPSU_QSPIDMA_DST_I_DIS_OFFSET 0X0000071C
+#define XQSPIPSU_QSPIDMA_DST_I_DIS_OFFSET 0X0000071CU
#define XQSPIPSU_QSPIDMA_DST_I_DIS_FIFO_OF_SHIFT 7
#define XQSPIPSU_QSPIDMA_DST_I_DIS_FIFO_OF_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_DIS_FIFO_OF_MASK 0X00000080
+#define XQSPIPSU_QSPIDMA_DST_I_DIS_FIFO_OF_MASK 0X00000080U
#define XQSPIPSU_QSPIDMA_DST_I_DIS_INVALID_APB_SHIFT 6
#define XQSPIPSU_QSPIDMA_DST_I_DIS_INVALID_APB_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_DIS_INVALID_APB_MASK 0X00000040
+#define XQSPIPSU_QSPIDMA_DST_I_DIS_INVALID_APB_MASK 0X00000040U
#define XQSPIPSU_QSPIDMA_DST_I_DIS_THRESHOLD_HIT_SHIFT 5
#define XQSPIPSU_QSPIDMA_DST_I_DIS_THRESHOLD_HIT_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_DIS_THRESHOLD_HIT_MASK 0X00000020
+#define XQSPIPSU_QSPIDMA_DST_I_DIS_THRESHOLD_HIT_MASK 0X00000020U
#define XQSPIPSU_QSPIDMA_DST_I_DIS_TO_MEM_SHIFT 4
#define XQSPIPSU_QSPIDMA_DST_I_DIS_TO_MEM_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_DIS_TO_MEM_MASK 0X00000010
+#define XQSPIPSU_QSPIDMA_DST_I_DIS_TO_MEM_MASK 0X00000010U
#define XQSPIPSU_QSPIDMA_DST_I_DIS_TO_STRM_SHIFT 3
#define XQSPIPSU_QSPIDMA_DST_I_DIS_TO_STRM_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_DIS_TO_STRM_MASK 0X00000008
+#define XQSPIPSU_QSPIDMA_DST_I_DIS_TO_STRM_MASK 0X00000008U
#define XQSPIPSU_QSPIDMA_DST_I_DIS_AXI_BRESP_ERR_SHIFT 2
#define XQSPIPSU_QSPIDMA_DST_I_DIS_AXI_BRESP_ERR_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_DIS_AXI_BRESP_ERR_MASK 0X00000004
+#define XQSPIPSU_QSPIDMA_DST_I_DIS_AXI_BRESP_ERR_MASK 0X00000004U
#define XQSPIPSU_QSPIDMA_DST_I_DIS_DONE_SHIFT 1
#define XQSPIPSU_QSPIDMA_DST_I_DIS_DONE_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_I_DIS_DONE_MASK 0X00000002
+#define XQSPIPSU_QSPIDMA_DST_I_DIS_DONE_MASK 0X00000002U
/**
* Register: XQSPIPSU_QSPIDMA_DST_IMR
*/
-#define XQSPIPSU_QSPIDMA_DST_IMR_OFFSET 0X00000720
+#define XQSPIPSU_QSPIDMA_DST_IMR_OFFSET 0X00000720U
#define XQSPIPSU_QSPIDMA_DST_IMR_FIFO_OF_SHIFT 7
#define XQSPIPSU_QSPIDMA_DST_IMR_FIFO_OF_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_IMR_FIFO_OF_MASK 0X00000080
+#define XQSPIPSU_QSPIDMA_DST_IMR_FIFO_OF_MASK 0X00000080U
#define XQSPIPSU_QSPIDMA_DST_IMR_INVALID_APB_SHIFT 6
#define XQSPIPSU_QSPIDMA_DST_IMR_INVALID_APB_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_IMR_INVALID_APB_MASK 0X00000040
+#define XQSPIPSU_QSPIDMA_DST_IMR_INVALID_APB_MASK 0X00000040U
#define XQSPIPSU_QSPIDMA_DST_IMR_THRESHOLD_HIT_SHIFT 5
#define XQSPIPSU_QSPIDMA_DST_IMR_THRESHOLD_HIT_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_IMR_THRESHOLD_HIT_MASK 0X00000020
+#define XQSPIPSU_QSPIDMA_DST_IMR_THRESHOLD_HIT_MASK 0X00000020U
#define XQSPIPSU_QSPIDMA_DST_IMR_TO_MEM_SHIFT 4
#define XQSPIPSU_QSPIDMA_DST_IMR_TO_MEM_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_IMR_TO_MEM_MASK 0X00000010
+#define XQSPIPSU_QSPIDMA_DST_IMR_TO_MEM_MASK 0X00000010U
#define XQSPIPSU_QSPIDMA_DST_IMR_TO_STRM_SHIFT 3
#define XQSPIPSU_QSPIDMA_DST_IMR_TO_STRM_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_IMR_TO_STRM_MASK 0X00000008
+#define XQSPIPSU_QSPIDMA_DST_IMR_TO_STRM_MASK 0X00000008U
#define XQSPIPSU_QSPIDMA_DST_IMR_AXI_BRESP_ERR_SHIFT 2
#define XQSPIPSU_QSPIDMA_DST_IMR_AXI_BRESP_ERR_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_IMR_AXI_BRESP_ERR_MASK 0X00000004
+#define XQSPIPSU_QSPIDMA_DST_IMR_AXI_BRESP_ERR_MASK 0X00000004U
#define XQSPIPSU_QSPIDMA_DST_IMR_DONE_SHIFT 1
#define XQSPIPSU_QSPIDMA_DST_IMR_DONE_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_IMR_DONE_MASK 0X00000002
+#define XQSPIPSU_QSPIDMA_DST_IMR_DONE_MASK 0X00000002U
/**
* Register: XQSPIPSU_QSPIDMA_DST_CTRL2
*/
-#define XQSPIPSU_QSPIDMA_DST_CTRL2_OFFSET 0X00000724
+#define XQSPIPSU_QSPIDMA_DST_CTRL2_OFFSET 0X00000724U
#define XQSPIPSU_QSPIDMA_DST_CTRL2_RAM_EMASA_SHIFT 27
#define XQSPIPSU_QSPIDMA_DST_CTRL2_RAM_EMASA_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_CTRL2_RAM_EMASA_MASK 0X08000000
+#define XQSPIPSU_QSPIDMA_DST_CTRL2_RAM_EMASA_MASK 0X08000000U
#define XQSPIPSU_QSPIDMA_DST_CTRL2_AWCACHE_SHIFT 24
#define XQSPIPSU_QSPIDMA_DST_CTRL2_AWCACHE_WIDTH 3
-#define XQSPIPSU_QSPIDMA_DST_CTRL2_AWCACHE_MASK 0X07000000
+#define XQSPIPSU_QSPIDMA_DST_CTRL2_AWCACHE_MASK 0X07000000U
#define XQSPIPSU_QSPIDMA_DST_CTRL2_TO_EN_SHIFT 22
#define XQSPIPSU_QSPIDMA_DST_CTRL2_TO_EN_WIDTH 1
-#define XQSPIPSU_QSPIDMA_DST_CTRL2_TO_EN_MASK 0X00400000
+#define XQSPIPSU_QSPIDMA_DST_CTRL2_TO_EN_MASK 0X00400000U
#define XQSPIPSU_QSPIDMA_DST_CTRL2_RAM_EMAB_SHIFT 19
#define XQSPIPSU_QSPIDMA_DST_CTRL2_RAM_EMAB_WIDTH 3
-#define XQSPIPSU_QSPIDMA_DST_CTRL2_RAM_EMAB_MASK 0X00380000
+#define XQSPIPSU_QSPIDMA_DST_CTRL2_RAM_EMAB_MASK 0X00380000U
#define XQSPIPSU_QSPIDMA_DST_CTRL2_RAM_EMAA_SHIFT 16
#define XQSPIPSU_QSPIDMA_DST_CTRL2_RAM_EMAA_WIDTH 3
-#define XQSPIPSU_QSPIDMA_DST_CTRL2_RAM_EMAA_MASK 0X00070000
+#define XQSPIPSU_QSPIDMA_DST_CTRL2_RAM_EMAA_MASK 0X00070000U
#define XQSPIPSU_QSPIDMA_DST_CTRL2_TO_PRE_SHIFT 4
#define XQSPIPSU_QSPIDMA_DST_CTRL2_TO_PRE_WIDTH 12
-#define XQSPIPSU_QSPIDMA_DST_CTRL2_TO_PRE_MASK 0X0000FFF0
+#define XQSPIPSU_QSPIDMA_DST_CTRL2_TO_PRE_MASK 0X0000FFF0U
#define XQSPIPSU_QSPIDMA_DST_CTRL2_MAX_OUTS_CMDS_SHIFT 0
#define XQSPIPSU_QSPIDMA_DST_CTRL2_MAX_OUTS_CMDS_WIDTH 4
-#define XQSPIPSU_QSPIDMA_DST_CTRL2_MAX_OUTS_CMDS_MASK 0X0000000F
+#define XQSPIPSU_QSPIDMA_DST_CTRL2_MAX_OUTS_CMDS_MASK 0X0000000FU
/**
* Register: XQSPIPSU_QSPIDMA_DST_ADDR_MSB
*/
-#define XQSPIPSU_QSPIDMA_DST_ADDR_MSB_OFFSET 0X00000728
+#define XQSPIPSU_QSPIDMA_DST_ADDR_MSB_OFFSET 0X00000728U
#define XQSPIPSU_QSPIDMA_DST_ADDR_MSB_SHIFT 0
#define XQSPIPSU_QSPIDMA_DST_ADDR_MSB_WIDTH 12
-#define XQSPIPSU_QSPIDMA_DST_ADDR_MSB_MASK 0X00000FFF
+#define XQSPIPSU_QSPIDMA_DST_ADDR_MSB_MASK 0X00000FFFU
/**
* Register: XQSPIPSU_QSPIDMA_FUTURE_ECO
*/
-#define XQSPIPSU_QSPIDMA_FUTURE_ECO_OFFSET 0X00000EFC
+#define XQSPIPSU_QSPIDMA_FUTURE_ECO_OFFSET 0X00000EFCU
#define XQSPIPSU_QSPIDMA_FUTURE_ECO_VAL_SHIFT 0
#define XQSPIPSU_QSPIDMA_FUTURE_ECO_VAL_WIDTH 32
-#define XQSPIPSU_QSPIDMA_FUTURE_ECO_VAL_MASK 0XFFFFFFFF
+#define XQSPIPSU_QSPIDMA_FUTURE_ECO_VAL_MASK 0XFFFFFFFFU
/*
* Generic FIFO masks
*/
-#define XQSPIPSU_GENFIFO_IMM_DATA_MASK 0xFF
-#define XQSPIPSU_GENFIFO_DATA_XFER 0x100
-#define XQSPIPSU_GENFIFO_EXP 0x200
-#define XQSPIPSU_GENFIFO_MODE_SPI 0x400
-#define XQSPIPSU_GENFIFO_MODE_DUALSPI 0x800
-#define XQSPIPSU_GENFIFO_MODE_QUADSPI 0xC00
-#define XQSPIPSU_GENFIFO_MODE_MASK 0xC00 /* And with ~MASK first */
-#define XQSPIPSU_GENFIFO_CS_LOWER 0x1000
-#define XQSPIPSU_GENFIFO_CS_UPPER 0x2000
-#define XQSPIPSU_GENFIFO_BUS_LOWER 0x4000
-#define XQSPIPSU_GENFIFO_BUS_UPPER 0x8000
-#define XQSPIPSU_GENFIFO_BUS_BOTH 0xC000 /* inverse is no bus */
-#define XQSPIPSU_GENFIFO_BUS_MASK 0xC000 /* And with ~MASK first */
-#define XQSPIPSU_GENFIFO_TX 0x10000 /* inverse is zero pump */
-#define XQSPIPSU_GENFIFO_RX 0x20000 /* inverse is RX discard */
-#define XQSPIPSU_GENFIFO_STRIPE 0x40000
-#define XQSPIPSU_GENFIFO_POLL 0x80000
+#define XQSPIPSU_GENFIFO_IMM_DATA_MASK 0xFFU
+#define XQSPIPSU_GENFIFO_DATA_XFER 0x100U
+#define XQSPIPSU_GENFIFO_EXP 0x200U
+#define XQSPIPSU_GENFIFO_MODE_SPI 0x400U
+#define XQSPIPSU_GENFIFO_MODE_DUALSPI 0x800U
+#define XQSPIPSU_GENFIFO_MODE_QUADSPI 0xC00U
+#define XQSPIPSU_GENFIFO_MODE_MASK 0xC00U /* And with ~MASK first */
+#define XQSPIPSU_GENFIFO_CS_LOWER 0x1000U
+#define XQSPIPSU_GENFIFO_CS_UPPER 0x2000U
+#define XQSPIPSU_GENFIFO_BUS_LOWER 0x4000U
+#define XQSPIPSU_GENFIFO_BUS_UPPER 0x8000U
+#define XQSPIPSU_GENFIFO_BUS_BOTH 0xC000U /* inverse is no bus */
+#define XQSPIPSU_GENFIFO_BUS_MASK 0xC000U /* And with ~MASK first */
+#define XQSPIPSU_GENFIFO_TX 0x10000U /* inverse is zero pump */
+#define XQSPIPSU_GENFIFO_RX 0x20000U /* inverse is RX discard */
+#define XQSPIPSU_GENFIFO_STRIPE 0x40000U
+#define XQSPIPSU_GENFIFO_POLL 0x80000U
/***************** Macros (Inline Functions) Definitions *********************/
@@ -805,7 +808,7 @@ extern "C" {
* @return The value read from the register.
*
* @note C-Style signature:
-* u32 XQspiPsu_ReadReg(u32 BaseAddress. int RegOffset)
+* u32 XQspiPsu_ReadReg(u32 BaseAddress. s32 RegOffset)
*
******************************************************************************/
#define XQspiPsu_ReadReg(BaseAddress, RegOffset) XQspiPsu_In32((BaseAddress) + (RegOffset))
@@ -822,7 +825,7 @@ extern "C" {
* @return None.
*
* @note C-Style signature:
-* void XQspiPsu_WriteReg(u32 BaseAddress, int RegOffset,
+* void XQspiPsu_WriteReg(u32 BaseAddress, s32 RegOffset,
* u32 RegisterValue)
*
******************************************************************************/
@@ -835,3 +838,4 @@ extern "C" {
#endif /* _XQSPIPSU_H_ */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_options.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_options.c
index 014159f18..97eee8cfd 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_options.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_options.c
@@ -33,6 +33,8 @@
/**
*
* @file xqspipsu_options.c
+* @addtogroup qspipsu_v1_0
+* @{
*
* This file implements funcitons to configure the QSPIPSU component,
* specifically some optional settings, clock and flash related information.
@@ -44,6 +46,7 @@
* ----- --- -------- -----------------------------------------------
* 1.0 hk 08/21/14 First release
* sk 03/13/15 Added IO mode support.
+* sk 04/24/15 Modified the code according to MISRAC-2012.
*
*
*
@@ -104,11 +107,12 @@ static OptionsMap OptionsTable[] = {
* This function is not thread-safe.
*
******************************************************************************/
-int XQspiPsu_SetOptions(XQspiPsu *InstancePtr, u32 Options)
+s32 XQspiPsu_SetOptions(XQspiPsu *InstancePtr, u32 Options)
{
u32 ConfigReg;
- unsigned int Index;
+ u32 Index;
u32 QspiPsuOptions;
+ s32 Status;
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -117,32 +121,39 @@ int XQspiPsu_SetOptions(XQspiPsu *InstancePtr, u32 Options)
* Do not allow to modify the Control Register while a transfer is in
* progress. Not thread-safe.
*/
- if (InstancePtr->IsBusy) {
- return XST_DEVICE_BUSY;
- }
+ if (InstancePtr->IsBusy == TRUE) {
+ Status = (s32)XST_DEVICE_BUSY;
+ } else {
- ConfigReg = XQspiPsu_ReadReg(InstancePtr->Config.BaseAddress,
- XQSPIPSU_CFG_OFFSET);
+ ConfigReg = XQspiPsu_ReadReg(InstancePtr->Config.BaseAddress,
+ XQSPIPSU_CFG_OFFSET);
+
+ /*
+ * Loop through the options table, turning the option on
+ * depending on whether the bit is set in the incoming options flag.
+ */
+ for (Index = 0U; Index < XQSPIPSU_NUM_OPTIONS; Index++) {
+ if ((Options & OptionsTable[Index].Option) != FALSE) {
+ /* Turn it on */
+ ConfigReg |= OptionsTable[Index].Mask;
+ }
+ }
- /*
- * Loop through the options table, turning the option on
- * depending on whether the bit is set in the incoming options flag.
- */
- for (Index = 0; Index < XQSPIPSU_NUM_OPTIONS; Index++) {
- if (Options & OptionsTable[Index].Option) {
- /* Turn it on */
- ConfigReg |= OptionsTable[Index].Mask;
+ /*
+ * Now write the control register. Leave it to the upper layers
+ * to restart the device.
+ */
+ XQspiPsu_WriteReg(InstancePtr->Config.BaseAddress, XQSPIPSU_CFG_OFFSET,
+ ConfigReg);
+
+ if ((Options & XQSPIPSU_MANUAL_START_OPTION) != FALSE) {
+ InstancePtr->IsManualstart = TRUE;
}
- }
- /*
- * Now write the control register. Leave it to the upper layers
- * to restart the device.
- */
- XQspiPsu_WriteReg(InstancePtr->Config.BaseAddress, XQSPIPSU_CFG_OFFSET,
- ConfigReg);
+ Status = XST_SUCCESS;
+ }
- return XST_SUCCESS;
+ return Status;
}
/*****************************************************************************/
@@ -168,11 +179,12 @@ int XQspiPsu_SetOptions(XQspiPsu *InstancePtr, u32 Options)
* This function is not thread-safe.
*
******************************************************************************/
-int XQspiPsu_ClearOptions(XQspiPsu *InstancePtr, u32 Options)
+s32 XQspiPsu_ClearOptions(XQspiPsu *InstancePtr, u32 Options)
{
u32 ConfigReg;
- unsigned int Index;
+ u32 Index;
u32 QspiPsuOptions;
+ s32 Status;
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -181,32 +193,39 @@ int XQspiPsu_ClearOptions(XQspiPsu *InstancePtr, u32 Options)
* Do not allow to modify the Control Register while a transfer is in
* progress. Not thread-safe.
*/
- if (InstancePtr->IsBusy) {
- return XST_DEVICE_BUSY;
- }
+ if (InstancePtr->IsBusy == TRUE) {
+ Status = (s32)XST_DEVICE_BUSY;
+ } else {
- ConfigReg = XQspiPsu_ReadReg(InstancePtr->Config.BaseAddress,
- XQSPIPSU_CFG_OFFSET);
+ ConfigReg = XQspiPsu_ReadReg(InstancePtr->Config.BaseAddress,
+ XQSPIPSU_CFG_OFFSET);
+
+ /*
+ * Loop through the options table, turning the option on
+ * depending on whether the bit is set in the incoming options flag.
+ */
+ for (Index = 0U; Index < XQSPIPSU_NUM_OPTIONS; Index++) {
+ if ((Options & OptionsTable[Index].Option) != FALSE) {
+ /* Turn it off */
+ ConfigReg &= ~OptionsTable[Index].Mask;
+ }
+ }
- /*
- * Loop through the options table, turning the option on
- * depending on whether the bit is set in the incoming options flag.
- */
- for (Index = 0; Index < XQSPIPSU_NUM_OPTIONS; Index++) {
- if (Options & OptionsTable[Index].Option) {
- /* Turn it off */
- ConfigReg &= ~OptionsTable[Index].Mask;
+ /*
+ * Now write the control register. Leave it to the upper layers
+ * to restart the device.
+ */
+ XQspiPsu_WriteReg(InstancePtr->Config.BaseAddress, XQSPIPSU_CFG_OFFSET,
+ ConfigReg);
+
+ if ((Options & XQSPIPSU_MANUAL_START_OPTION) != FALSE) {
+ InstancePtr->IsManualstart = FALSE;
}
- }
- /*
- * Now write the control register. Leave it to the upper layers
- * to restart the device.
- */
- XQspiPsu_WriteReg(InstancePtr->Config.BaseAddress, XQSPIPSU_CFG_OFFSET,
- ConfigReg);
+ Status = XST_SUCCESS;
+ }
- return XST_SUCCESS;
+ return Status;
}
/*****************************************************************************/
@@ -230,7 +249,7 @@ u32 XQspiPsu_GetOptions(XQspiPsu *InstancePtr)
{
u32 OptionsFlag = 0;
u32 ConfigReg;
- unsigned int Index;
+ u32 Index;
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -242,8 +261,8 @@ u32 XQspiPsu_GetOptions(XQspiPsu *InstancePtr)
XQSPIPSU_CFG_OFFSET);
/* Loop through the options table to grab options */
- for (Index = 0; Index < XQSPIPSU_NUM_OPTIONS; Index++) {
- if (ConfigReg & OptionsTable[Index].Mask) {
+ for (Index = 0U; Index < XQSPIPSU_NUM_OPTIONS; Index++) {
+ if ((ConfigReg & OptionsTable[Index].Mask) != FALSE) {
OptionsFlag |= OptionsTable[Index].Option;
}
}
@@ -268,9 +287,10 @@ u32 XQspiPsu_GetOptions(XQspiPsu *InstancePtr)
* @note None.
*
******************************************************************************/
-int XQspiPsu_SetClkPrescaler(XQspiPsu *InstancePtr, u8 Prescaler)
+s32 XQspiPsu_SetClkPrescaler(XQspiPsu *InstancePtr, u8 Prescaler)
{
u32 ConfigReg;
+ s32 Status;
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -280,26 +300,29 @@ int XQspiPsu_SetClkPrescaler(XQspiPsu *InstancePtr, u8 Prescaler)
* Do not allow the slave select to change while a transfer is in
* progress. Not thread-safe.
*/
- if (InstancePtr->IsBusy) {
- return XST_DEVICE_BUSY;
- }
+ if (InstancePtr->IsBusy == TRUE) {
+ Status = (s32)XST_DEVICE_BUSY;
+ } else {
- /*
- * Read the configuration register, mask out the relevant bits, and set
- * them with the shifted value passed into the function. Write the
- * results back to the configuration register.
- */
- ConfigReg = XQspiPsu_ReadReg(InstancePtr->Config.BaseAddress,
- XQSPIPSU_CFG_OFFSET);
+ /*
+ * Read the configuration register, mask out the relevant bits, and set
+ * them with the shifted value passed into the function. Write the
+ * results back to the configuration register.
+ */
+ ConfigReg = XQspiPsu_ReadReg(InstancePtr->Config.BaseAddress,
+ XQSPIPSU_CFG_OFFSET);
+
+ ConfigReg &= (u32)(~XQSPIPSU_CFG_BAUD_RATE_DIV_MASK);
+ ConfigReg |= (u32) ((u32)Prescaler & (u32)XQSPIPSU_CR_PRESC_MAXIMUM) <<
+ XQSPIPSU_CFG_BAUD_RATE_DIV_SHIFT;
- ConfigReg &= ~XQSPIPSU_CFG_BAUD_RATE_DIV_MASK;
- ConfigReg |= (u32) (Prescaler & XQSPIPSU_CR_PRESC_MAXIMUM) <<
- XQSPIPSU_CFG_BAUD_RATE_DIV_SHIFT;
+ XQspiPsu_WriteReg(InstancePtr->Config.BaseAddress,
+ XQSPIPSU_CFG_OFFSET, ConfigReg);
- XQspiPsu_WriteReg(InstancePtr->Config.BaseAddress,
- XQSPIPSU_CFG_OFFSET, ConfigReg);
+ Status = XST_SUCCESS;
+ }
- return XST_SUCCESS;
+ return Status;
}
/*****************************************************************************/
@@ -336,29 +359,35 @@ void XQspiPsu_SelectFlash(XQspiPsu *InstancePtr, u8 FlashCS, u8 FlashBus)
/* Choose slave select line */
switch (FlashCS) {
case XQSPIPSU_SELECT_FLASH_CS_BOTH:
- InstancePtr->GenFifoCS = XQSPIPSU_GENFIFO_CS_LOWER |
- XQSPIPSU_GENFIFO_CS_UPPER;
+ InstancePtr->GenFifoCS = (u32)XQSPIPSU_GENFIFO_CS_LOWER |
+ (u32)XQSPIPSU_GENFIFO_CS_UPPER;
break;
case XQSPIPSU_SELECT_FLASH_CS_UPPER:
InstancePtr->GenFifoCS = XQSPIPSU_GENFIFO_CS_UPPER;
break;
case XQSPIPSU_SELECT_FLASH_CS_LOWER:
+ InstancePtr->GenFifoCS = XQSPIPSU_GENFIFO_CS_LOWER;
+ break;
default:
InstancePtr->GenFifoCS = XQSPIPSU_GENFIFO_CS_LOWER;
+ break;
}
/* Choose bus */
switch (FlashBus) {
case XQSPIPSU_SELECT_FLASH_BUS_BOTH:
- InstancePtr->GenFifoBus = XQSPIPSU_GENFIFO_BUS_LOWER |
- XQSPIPSU_GENFIFO_BUS_UPPER;
+ InstancePtr->GenFifoBus = (u32)XQSPIPSU_GENFIFO_BUS_LOWER |
+ (u32)XQSPIPSU_GENFIFO_BUS_UPPER;
break;
case XQSPIPSU_SELECT_FLASH_BUS_UPPER:
InstancePtr->GenFifoBus = XQSPIPSU_GENFIFO_BUS_UPPER;
break;
case XQSPIPSU_SELECT_FLASH_BUS_LOWER:
+ InstancePtr->GenFifoBus = XQSPIPSU_GENFIFO_BUS_LOWER;
+ break;
default:
InstancePtr->GenFifoBus = XQSPIPSU_GENFIFO_BUS_LOWER;
+ break;
}
}
@@ -382,9 +411,10 @@ void XQspiPsu_SelectFlash(XQspiPsu *InstancePtr, u8 FlashCS, u8 FlashBus)
* This function is not thread-safe.
*
******************************************************************************/
-int XQspiPsu_SetReadMode(XQspiPsu *InstancePtr, u32 Mode)
+s32 XQspiPsu_SetReadMode(XQspiPsu *InstancePtr, u32 Mode)
{
u32 ConfigReg;
+ s32 Status;
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -393,24 +423,27 @@ int XQspiPsu_SetReadMode(XQspiPsu *InstancePtr, u32 Mode)
* Do not allow to modify the Control Register while a transfer is in
* progress. Not thread-safe.
*/
- if (InstancePtr->IsBusy) {
- return XST_DEVICE_BUSY;
- }
+ if (InstancePtr->IsBusy == TRUE) {
+ Status = (s32)XST_DEVICE_BUSY;
+ } else {
- InstancePtr->ReadMode = Mode;
+ InstancePtr->ReadMode = Mode;
- ConfigReg = XQspiPsu_ReadReg(InstancePtr->Config.BaseAddress,
- XQSPIPSU_CFG_OFFSET);
+ ConfigReg = XQspiPsu_ReadReg(InstancePtr->Config.BaseAddress,
+ XQSPIPSU_CFG_OFFSET);
- if (Mode == XQSPIPSU_READMODE_DMA) {
- ConfigReg &= ~XQSPIPSU_CFG_MODE_EN_MASK;
- ConfigReg |= XQSPIPSU_CFG_MODE_EN_DMA_MASK;
- } else {
- ConfigReg &= ~XQSPIPSU_CFG_MODE_EN_MASK;
- }
+ if (Mode == XQSPIPSU_READMODE_DMA) {
+ ConfigReg &= ~XQSPIPSU_CFG_MODE_EN_MASK;
+ ConfigReg |= XQSPIPSU_CFG_MODE_EN_DMA_MASK;
+ } else {
+ ConfigReg &= ~XQSPIPSU_CFG_MODE_EN_MASK;
+ }
- XQspiPsu_WriteReg(InstancePtr->Config.BaseAddress, XQSPIPSU_CFG_OFFSET,
- ConfigReg);
+ XQspiPsu_WriteReg(InstancePtr->Config.BaseAddress, XQSPIPSU_CFG_OFFSET,
+ ConfigReg);
- return XST_SUCCESS;
+ Status = XST_SUCCESS;
+ }
+ return Status;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_sinit.c
index 5b598c8a7..63aaed0bb 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/qspipsu_v1_0/src/xqspipsu_sinit.c
@@ -33,6 +33,8 @@
/**
*
* @file xqspipsu_sinit.c
+* @addtogroup qspipsu_v1_0
+* @{
*
* The implementation of the XQspiPsu component's static initialization
* functionality.
@@ -63,7 +65,7 @@
/************************** Variable Definitions *****************************/
-extern XQspiPsu_Config XQspiPsu_ConfigTable[];
+extern XQspiPsu_Config XQspiPsu_ConfigTable[XPAR_XQSPIPSU_NUM_INSTANCES];
/*****************************************************************************/
/**
@@ -85,7 +87,7 @@ extern XQspiPsu_Config XQspiPsu_ConfigTable[];
XQspiPsu_Config *XQspiPsu_LookupConfig(u16 DeviceId)
{
XQspiPsu_Config *CfgPtr = NULL;
- int Index;
+ s32 Index;
for (Index = 0; Index < XPAR_XQSPIPSU_NUM_INSTANCES; Index++) {
if (XQspiPsu_ConfigTable[Index].DeviceId == DeviceId) {
@@ -93,5 +95,6 @@ XQspiPsu_Config *XQspiPsu_LookupConfig(u16 DeviceId)
break;
}
}
- return CfgPtr;
+ return (XQspiPsu_Config *)CfgPtr;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/Makefile
similarity index 81%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/Makefile
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/Makefile
index 10d24d73b..dc8cbdf6b 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/Makefile
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/Makefile
@@ -19,21 +19,21 @@ INCLUDEFILES:=*.h
OBJECTS = $(addsuffix .o, $(basename $(wildcard *.c)))
-libs: banner xspips_libs clean
+libs: banner xrtcpsu_libs clean
%.o: %.c
${COMPILER} $(CC_FLAGS) $(ECC_FLAGS) $(INCLUDES) -o $@ $<
banner:
- echo "Compiling spips"
+ echo "Compiling rtcpsu"
-xspips_libs: ${OBJECTS}
+xrtcpsu_libs: ${OBJECTS}
$(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OBJECTS}
.PHONY: include
-include: xspips_includes
+include: xrtcpsu_includes
-xspips_includes:
+xrtcpsu_includes:
${CP} ${INCLUDEFILES} ${INCLUDEDIR}
clean:
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu.c
new file mode 100644
index 000000000..58163eb34
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu.c
@@ -0,0 +1,422 @@
+/******************************************************************************
+*
+* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+* (a) running on a Xilinx device, or
+* (b) that interact with a Xilinx device through a bus or interconnect.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*
+* Except as contained in this notice, the name of the Xilinx shall not be used
+* in advertising or otherwise to promote the sale, use or other dealings in
+* this Software without prior written authorization from Xilinx.
+*
+******************************************************************************/
+/*****************************************************************************/
+/**
+*
+* @file xrtcpsu.c
+* @addtogroup rtcpsu_v1_0
+* @{
+*
+* Functions in this file are the minimum required functions for the XRtcPsu
+* driver. See xrtcpsu.h for a detailed description of the driver.
+*
+* @note None.
+*
+*
+*
+* MODIFICATION HISTORY:
+*
+* Ver Who Date Changes
+* ----- ----- -------- -----------------------------------------------
+* 1.00 kvn 04/21/15 First release
+* 1.1 kvn 09/25/15 Modify control register to enable battery
+* switching when vcc_psaux is not available.
+* 1.2 02/15/16 Corrected Calibration mask and Fractional
+* mask in CalculateCalibration API.
+*
+*
+******************************************************************************/
+
+/***************************** Include Files *********************************/
+
+#include "xrtcpsu.h"
+
+/************************** Constant Definitions *****************************/
+
+/**************************** Type Definitions *******************************/
+
+/***************** Macros (Inline Functions) Definitions *********************/
+
+/************************** Variable Definitions *****************************/
+
+static const u32 DaysInMonth[] = {31,28,31,30,31,30,31,31,30,31,30,31};
+
+/************************** Function Prototypes ******************************/
+
+static void XRtcPsu_StubHandler(void *CallBackRef, u32 Event);
+
+/*****************************************************************************/
+/*
+*
+* This function initializes a XRtcPsu instance/driver.
+*
+* The initialization entails:
+* - Initialize all members of the XRtcPsu structure.
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance.
+* @param ConfigPtr points to the XRtcPsu device configuration structure.
+* @param EffectiveAddr is the device base address in the virtual memory
+* address space. If the address translation is not used then the
+* physical address is passed.
+* Unexpected errors may occur if the address mapping is changed
+* after this function is invoked.
+*
+* @return XST_SUCCESS always.
+*
+* @note None.
+*
+******************************************************************************/
+s32 XRtcPsu_CfgInitialize(XRtcPsu *InstancePtr, XRtcPsu_Config *ConfigPtr,
+ u32 EffectiveAddr)
+{
+ s32 Status;
+ u32 ControlRegister;
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(ConfigPtr != NULL);
+
+ /*
+ * Set some default values for instance data, don't indicate the device
+ * is ready to use until everything has been initialized successfully.
+ */
+ InstancePtr->IsReady = 0U;
+ InstancePtr->RtcConfig.BaseAddr = EffectiveAddr;
+ InstancePtr->RtcConfig.DeviceId = ConfigPtr->DeviceId;
+
+ if(InstancePtr->OscillatorFreq == 0U) {
+ InstancePtr->CalibrationValue = XRTC_CALIBRATION_VALUE;
+ InstancePtr->OscillatorFreq = XRTC_TYPICAL_OSC_FREQ;
+ }
+
+ /* Set all handlers to stub values, let user configure this data later. */
+ InstancePtr->Handler = XRtcPsu_StubHandler;
+
+ InstancePtr->IsPeriodicAlarm = 0U;
+
+ /* Set the calibration value in calibration register. */
+ XRtcPsu_WriteReg(InstancePtr->RtcConfig.BaseAddr + XRTC_CALIB_WR_OFFSET,
+ InstancePtr->CalibrationValue);
+
+ /* Set the Oscillator crystal and Battery switch enable in control register. */
+ ControlRegister = XRtcPsu_ReadReg(InstancePtr->RtcConfig.BaseAddr + XRTC_CTL_OFFSET);
+ XRtcPsu_WriteReg(InstancePtr->RtcConfig.BaseAddr + XRTC_CTL_OFFSET,
+ (ControlRegister | (u32)XRTCPSU_CRYSTAL_OSC_EN | (u32)XRTC_CTL_BATTERY_EN_MASK));
+
+ /* Clear the Interrupt Status and Disable the interrupts. */
+ XRtcPsu_WriteReg(InstancePtr->RtcConfig.BaseAddr + XRTC_INT_STS_OFFSET,
+ ((u32)XRTC_INT_STS_ALRM_MASK | (u32)XRTC_INT_STS_SECS_MASK));
+ XRtcPsu_WriteReg(InstancePtr->RtcConfig.BaseAddr + XRTC_INT_DIS_OFFSET,
+ ((u32)XRTC_INT_DIS_ALRM_MASK | (u32)XRTC_INT_DIS_SECS_MASK));
+
+ /* Indicate the component is now ready to use. */
+ InstancePtr->IsReady = XIL_COMPONENT_IS_READY;
+
+ Status = XST_SUCCESS;
+ return Status;
+}
+
+/****************************************************************************/
+/**
+*
+* This function is a stub handler that is the default handler such that if the
+* application has not set the handler when interrupts are enabled, this
+* function will be called.
+*
+* @param CallBackRef is unused by this function.
+* @param Event is unused by this function.
+*
+* @return None.
+*
+* @note None.
+*
+*****************************************************************************/
+static void XRtcPsu_StubHandler(void *CallBackRef, u32 Event)
+{
+ (void *) CallBackRef;
+ (void) Event;
+ /* Assert occurs always since this is a stub and should never be called */
+ Xil_AssertVoidAlways();
+}
+
+/****************************************************************************/
+/**
+*
+* This function sets the alarm value of RTC device.
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance
+* @param Alarm is the desired alarm time for RTC.
+* @param Periodic says whether the alarm need to set at periodic
+* Intervals or a one-time alarm.
+*
+* @return None.
+*
+* @note None.
+*
+*****************************************************************************/
+void XRtcPsu_SetAlarm(XRtcPsu *InstancePtr, u32 Alarm, u32 Periodic)
+{
+ Xil_AssertVoid(InstancePtr != NULL);
+ Xil_AssertVoid(Alarm != 0U);
+ Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertVoid((Alarm - XRtcPsu_GetCurrentTime(InstancePtr)) > (u32)0);
+
+ XRtcPsu_WriteReg(InstancePtr->RtcConfig.BaseAddr+XRTC_ALRM_OFFSET, Alarm);
+ if(Periodic != 0U) {
+ InstancePtr->IsPeriodicAlarm = 1U;
+ InstancePtr->PeriodicAlarmTime =
+ Alarm - XRtcPsu_GetCurrentTime(InstancePtr);
+ }
+}
+
+
+/****************************************************************************/
+/**
+*
+* This function translates time in seconds to a YEAR:MON:DAY HR:MIN:SEC
+* format and saves it in the DT structure variable. It also reports the weekday.
+*
+* @param Seconds is the time value that has to be shown in DateTime
+* format.
+* @param dt is the DateTime format variable that stores the translated
+* time.
+*
+* @return None.
+*
+* @note This API supports this century i.e., 2000 - 2099 years only.
+*
+*****************************************************************************/
+void XRtcPsu_SecToDateTime(u32 Seconds, XRtcPsu_DT *dt)
+{
+ u32 CurrentTime, TempDays, Leap, DaysPerMonth;
+
+ CurrentTime = Seconds;
+ dt->Sec = CurrentTime % 60U;
+ CurrentTime /= 60U;
+ dt->Min = CurrentTime % 60U;
+ CurrentTime /= 60U;
+ dt->Hour = CurrentTime % 24U;
+ TempDays = CurrentTime / 24U;
+
+ if (TempDays == 0U) {
+ TempDays = 1U;
+ }
+ dt->WeekDay = TempDays % 7U;
+
+ for (dt->Year = 0U; dt->Year <= 99U; ++(dt->Year)) {
+ if ((dt->Year % 4U) == 0U ) {
+ Leap = 1U;
+ }
+ else {
+ Leap = 0U;
+ }
+ if (TempDays < (365U + Leap)) {
+ break;
+ }
+ TempDays -= (365U + Leap);
+ }
+
+ for (dt->Month = 1U; dt->Month >= 1U; ++(dt->Month)) {
+ DaysPerMonth = DaysInMonth[dt->Month - 1];
+ if ((Leap == 1U) && (dt->Month == 2U)) {
+ DaysPerMonth++;
+ }
+ if (TempDays < DaysPerMonth) {
+ break;
+ }
+ TempDays -= DaysPerMonth;
+ }
+
+ dt->Day = TempDays;
+ dt->Year += 2000U;
+}
+
+/****************************************************************************/
+/**
+*
+* This function translates time in YEAR:MON:DAY HR:MIN:SEC format to
+* seconds.
+*
+* @param dt is a pointer to a DatetTime format structure variable
+* of time that has to be shown in seconds.
+*
+* @return Seconds value of provided in dt time.
+*
+* @note None.
+*
+*****************************************************************************/
+u32 XRtcPsu_DateTimeToSec(XRtcPsu_DT *dt)
+{
+ u32 i, Days;
+ u32 Seconds;
+ Xil_AssertNonvoid(dt != NULL);
+
+ if (dt->Year >= 2000U) {
+ dt->Year -= 2000U;
+ }
+
+ for (i = 1U; i < dt->Month; i++) {
+ dt->Day += (u32)DaysInMonth[i-1];
+ }
+
+ if ((dt->Month > 2U) && ((dt->Year % 4U) == 0U)) {
+ dt->Day++;
+ }
+ Days = dt->Day + (365U * dt->Year) + ((dt->Year + 3U) / 4U);
+ Seconds = (((((Days * 24U) + dt->Hour) * 60U) + dt->Min) * 60U) + dt->Sec;
+ return Seconds;
+}
+
+/****************************************************************************/
+/**
+*
+* This function calculates the calibration value depending on the actual
+* realworld time and also helps in deriving new calibration value if
+* the user wishes to change his oscillator frequency.TimeReal is generally the
+* internet time with EPOCH time as reference i.e.,1/1/1970 1st second.
+* But this RTC driver assumes start time from 1/1/2000 1st second. Hence,if
+* the user maps the internet time InternetTimeInSecs, then he has to use
+* XRtcPsu_SecToDateTime(InternetTimeInSecs,&InternetTime),
+* TimeReal = XRtcPsu_DateTimeToSec(InternetTime)
+* consecutively to arrive at TimeReal value.
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance.
+* @param TimeReal is the actual realworld time generally an
+* network time / Internet time in seconds.
+*
+* @param CrystalOscFreq is the Oscillator new frequency. Say, If the user
+* is going with the typical 32768Hz, then he inputs the same
+* frequency value.
+*
+* @return None.
+*
+* @note After Calculating the calibration register, user / application has to
+* call again CfgInitialize API to bring the new calibration into effect.
+*
+*****************************************************************************/
+void XRtcPsu_CalculateCalibration(XRtcPsu *InstancePtr,u32 TimeReal,
+ u32 CrystalOscFreq)
+{
+ u32 ReadTime, SetTime;
+ u32 Cprev,Fprev,Cnew,Fnew,Xf,Calibration;
+ Xil_AssertVoid(TimeReal != 0U);
+ Xil_AssertVoid(CrystalOscFreq != 0U);
+
+ ReadTime = XRtcPsu_GetCurrentTime(InstancePtr);
+ SetTime = XRtcPsu_GetLastSetTime(InstancePtr);
+ Calibration = XRtcPsu_GetCalibration(InstancePtr);
+ /*
+ * When board gets reseted, Calibration value is zero
+ * and Last setTime will be marked as 1st second. This implies
+ * CurrentTime to be in few seconds say something in tens. TimeReal will
+ * be huge, say something in thousands. So to prevent such reset case, Cnew
+ * and Fnew will not be calculated.
+ */
+ if((Calibration == 0U) || (CrystalOscFreq != InstancePtr->OscillatorFreq)) {
+ Cnew = CrystalOscFreq - (u32)1;
+ Fnew = 0U;
+ } else {
+ Cprev = Calibration & XRTC_CALIB_RD_MAX_TCK_MASK;
+ Fprev = Calibration & XRTC_CALIB_RD_FRACTN_DATA_MASK;
+
+ Xf = ((ReadTime - SetTime) * ((Cprev+1U) + ((Fprev+1U)/16U))) / (TimeReal - SetTime);
+ Cnew = (u32)(Xf) - (u32)1;
+ Fnew = XRtcPsu_RoundOff((Xf - Cnew) * 16U) - (u32)1;
+ }
+
+ Calibration = (Fnew << XRTC_CALIB_RD_FRACTN_DATA_SHIFT) + Cnew;
+ Calibration |= XRTC_CALIB_RD_FRACTN_EN_MASK;
+
+ InstancePtr->CalibrationValue = Calibration;
+ InstancePtr->OscillatorFreq = CrystalOscFreq;
+}
+
+/****************************************************************************/
+/**
+*
+* This function returns the seconds event status by reading
+* interrupt status register.
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance.
+*
+* @return Returns 1 if a new second event is generated.Else 0..
+*
+* @note This API is used in polled mode operation of RTC.
+* This also clears interrupt status seconds bit.
+*
+*****************************************************************************/
+u32 XRtcPsu_IsSecondsEventGenerated(XRtcPsu *InstancePtr)
+{
+ u32 Status;
+
+ /* Loop the interrupt status register for Seconds Event */
+ if ((XRtcPsu_ReadReg(InstancePtr->RtcConfig.BaseAddr +
+ XRTC_INT_STS_OFFSET) & (XRTC_INT_STS_SECS_MASK)) == 0U) {
+ Status = 0U;
+ } else {
+ /* Clear the interrupt status register */
+ XRtcPsu_WriteReg((InstancePtr)->RtcConfig.BaseAddr +
+ XRTC_INT_STS_OFFSET, XRTC_INT_STS_SECS_MASK);
+ Status = 1U;
+ }
+ return Status;
+}
+
+/****************************************************************************/
+/**
+*
+* This function returns the alarm event status by reading
+* interrupt status register.
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance.
+*
+* @return Returns 1 if the alarm event is generated.Else 0.
+*
+* @note This API is used in polled mode operation of RTC.
+* This also clears interrupt status alarm bit.
+*
+*****************************************************************************/
+u32 XRtcPsu_IsAlarmEventGenerated(XRtcPsu *InstancePtr)
+{
+ u32 Status;
+
+ /* Loop the interrupt status register for Alarm Event */
+ if ((XRtcPsu_ReadReg(InstancePtr->RtcConfig.BaseAddr +
+ XRTC_INT_STS_OFFSET) & (XRTC_INT_STS_ALRM_MASK)) == 0U) {
+ Status = 0U;
+ } else {
+ /* Clear the interrupt status register */
+ XRtcPsu_WriteReg((InstancePtr)->RtcConfig.BaseAddr +
+ XRTC_INT_STS_OFFSET, XRTC_INT_STS_ALRM_MASK);
+ Status = 1U;
+ }
+ return Status;
+}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu.h
new file mode 100644
index 000000000..98e668911
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu.h
@@ -0,0 +1,387 @@
+/******************************************************************************
+*
+* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+* (a) running on a Xilinx device, or
+* (b) that interact with a Xilinx device through a bus or interconnect.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*
+* Except as contained in this notice, the name of the Xilinx shall not be used
+* in advertising or otherwise to promote the sale, use or other dealings in
+* this Software without prior written authorization from Xilinx.
+*
+******************************************************************************/
+/*****************************************************************************/
+/**
+* @file xrtcpsu.h
+* @addtogroup rtcpsu_v1_0
+* @{
+* @details
+*
+* The Xilinx RTC driver component. This component supports the Xilinx
+* RTC Controller. RTC Core and RTC controller are the two main important sub-
+* components for this RTC module. RTC core can run even in the battery powered
+* domain when the power from auxiliary source is down. Because of this, RTC core
+* latches the calibration,programmed time. This core interfaces with the crystal
+* oscillator and maintains current time in seconds.Calibration circuitry
+* calculates a second with maximum 1 PPM inaccuracy using a crystal oscillator
+* with arbitrary static inaccuracy. Core also responsible to maintain control
+* value used by the oscillator and power switching circuitry.
+*
+* RTC controller includes an APB interface responsible for register access with
+* in controller and core. It contains alarm generation logic including the alarm
+* register to hold alarm time in seconds.Interrupt management using Interrupt
+* status, Interrupt mask, Interrupt enable, Interrupt disable registers are
+* included to manage alarm and seconds interrupts. Address Slave error interrupts
+* are not being handled by this driver component.
+*
+* This driver supports the following features:
+* - Setting the RTC time.
+* - Setting the Alarm value that can be one-time alarm or a periodic alarm.
+* - Modifying the calibration value.
+*
+* Initialization & Configuration
+*
+* The XRtcPsu_Config structure is used by the driver to configure itself.
+* Fields inside this structure are properties of XRtcPsu based on its hardware
+* build.
+*
+* To support multiple runtime loading and initialization strategies employed
+* by various operating systems, the driver instance can be initialized in the
+* following way:
+*
+* - XRtcPsu_CfgInitialize(InstancePtr, CfgPtr, EffectiveAddr) - Uses a
+* configuration structure provided by the caller. If running in a system
+* with address translation, the parameter EffectiveAddr should be the
+* virtual address.
+*
+* Interrupts
+*
+* The driver defaults to no interrupts at initialization such that interrupts
+* must be enabled if desired. An interrupt is generated for one of the
+* following conditions.
+*
+* - Alarm is generated.
+* - A new second is generated.
+*
+* The application can control which interrupts are enabled using the
+* XRtcPsu_SetInterruptMask() function.
+*
+* In order to use interrupts, it is necessary for the user to connect the
+* driver interrupt handler, XRtcPsu_InterruptHandler(), to the interrupt
+* system of the application. A separate handler should be provided by the
+* application to communicate with the interrupt system, and conduct
+* application specific interrupt handling. An application registers its own
+* handler through the XRtcPsu_SetHandler() function.
+*
+*
+* MODIFICATION HISTORY:
+*
+* Ver Who Date Changes
+* ----- ----- -------- -----------------------------------------------
+* 1.00 kvn 04/21/15 First release
+* 1.1 kvn 09/25/15 Modify control register to enable battery
+* switching when vcc_psaux is not available.
+*
+*
+******************************************************************************/
+
+
+#ifndef XRTC_H_ /* prevent circular inclusions */
+#define XRTC_H_ /* by using protection macros */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************** Include Files *********************************/
+
+#include "xstatus.h"
+#include "xil_assert.h"
+#include "xil_io.h"
+#include "xrtcpsu_hw.h"
+#include "xil_types.h"
+
+/************************** Constant Definitions *****************************/
+
+/** @name Callback events
+ *
+ * These constants specify the handler events that an application can handle
+ * using its specific handler function. Note that these constants are not bit
+ * mask, so only one event can be passed to an application at a time.
+ *
+ * @{
+ */
+#define XRTCPSU_EVENT_ALARM_GEN 1U /**< Alarm generated event */
+#define XRTCPSU_EVENT_SECS_GEN 2U /**< A new second generated event */
+/*@}*/
+
+#define XRTCPSU_CRYSTAL_OSC_EN (u32)1 << XRTC_CTL_OSC_SHIFT
+/**< Separate Mask for Crystal oscillator bit Enable */
+
+/**************************** Type Definitions *******************************/
+
+/******************************************************************************/
+/**
+ * This data type defines a handler that an application defines to communicate
+ * with interrupt system to retrieve state information about an application.
+ *
+ * @param CallBackRef is a callback reference passed in by the upper layer
+ * when setting the handler, and is passed back to the upper layer
+ * when the handler is called. It is used to find the device driver
+ * instance.
+ * @param Event contains one of the event constants indicating events that
+ * have occurred.
+ * @param EventData contains the number of bytes sent or received at the
+ * time of the call for send and receive events and contains the
+ * modem status for modem events.
+ *
+ ******************************************************************************/
+typedef void (*XRtcPsu_Handler) (void *CallBackRef, u32 Event);
+
+/**
+ * This typedef contains configuration information for a device.
+ */
+typedef struct {
+ u16 DeviceId; /**< Unique ID of device */
+ u32 BaseAddr; /**< Register base address */
+} XRtcPsu_Config;
+
+/**
+ * The XRtcPsu driver instance data. The user is required to allocate a
+ * variable of this type for the RTC device in the system. A pointer
+ * to a variable of this type is then passed to the driver API functions.
+ */
+typedef struct {
+ XRtcPsu_Config RtcConfig; /**< Device configuration */
+ u32 IsReady; /**< Device is initialized and ready */
+ u32 PeriodicAlarmTime;
+ u8 IsPeriodicAlarm;
+ u32 OscillatorFreq;
+ u32 CalibrationValue;
+ XRtcPsu_Handler Handler;
+ void *CallBackRef; /**< Callback reference for event handler */
+} XRtcPsu;
+
+/**
+ * This typedef contains DateTime format structure.
+ */
+typedef struct {
+ u32 Year;
+ u32 Month;
+ u32 Day;
+ u32 Hour;
+ u32 Min;
+ u32 Sec;
+ u32 WeekDay;
+} XRtcPsu_DT;
+
+
+/************************* Variable Definitions ******************************/
+
+
+/***************** Macros (Inline Functions) Definitions *********************/
+
+#define XRTC_CALIBRATION_VALUE 0x00198231U
+#define XRTC_TYPICAL_OSC_FREQ 33330U
+
+/****************************************************************************/
+/**
+*
+* This macro updates the current time of RTC device.
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance.
+* @param Time is the desired time for RTC in seconds.
+*
+* @return None.
+*
+* @note C-Style signature:
+* void XRtcPsu_SetTime(XRtcPsu *InstancePtr, u32 Time)
+*
+*****************************************************************************/
+#define XRtcPsu_SetTime(InstancePtr,Time) \
+ XRtcPsu_WriteReg(((InstancePtr)->RtcConfig.BaseAddr + \
+ XRTC_SET_TIME_WR_OFFSET),(Time))
+
+/****************************************************************************/
+/**
+*
+* This macro returns the last set time of RTC device. Whenever a reset
+* happens, the last set time will be zeroth day first sec.
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance.
+*
+* @return The last set time in seconds.
+*
+* @note C-Style signature:
+* u32 XRtcPsu_GetLastSetTime(XRtcPsu *InstancePtr)
+*
+*****************************************************************************/
+#define XRtcPsu_GetLastSetTime(InstancePtr) \
+ XRtcPsu_ReadReg((InstancePtr)->RtcConfig.BaseAddr + XRTC_SET_TIME_RD_OFFSET)
+
+/****************************************************************************/
+/**
+*
+* This macro returns the calibration value of RTC device.
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance.
+*
+* @return Calibration value for RTC.
+*
+* @note C-Style signature:
+* u32 XRtcPsu_GetCalibration(XRtcPsu *InstancePtr)
+*
+*****************************************************************************/
+#define XRtcPsu_GetCalibration(InstancePtr) \
+ XRtcPsu_ReadReg((InstancePtr)->RtcConfig.BaseAddr+XRTC_CALIB_RD_OFFSET)
+
+/****************************************************************************/
+/**
+*
+* This macro returns the current time of RTC device.
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance.
+*
+* @return Current Time. This current time will be in seconds.
+*
+* @note C-Style signature:
+* u32 XRtcPsu_GetCurrentTime(XRtcPsu *InstancePtr)
+*
+*****************************************************************************/
+#define XRtcPsu_GetCurrentTime(InstancePtr) \
+ XRtcPsu_ReadReg((InstancePtr)->RtcConfig.BaseAddr+XRTC_CUR_TIME_OFFSET)
+
+/****************************************************************************/
+/**
+*
+* This macro sets the control register value of RTC device.
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance.
+* @param Value is the desired control register value for RTC.
+*
+* @return None.
+*
+* @note C-Style signature:
+* void XRtcPsu_SetControlRegister(XRtcPsu *InstancePtr, u32 Value)
+*
+*****************************************************************************/
+#define XRtcPsu_SetControlRegister(InstancePtr, Value) \
+ XRtcPsu_WriteReg((InstancePtr)->RtcConfig.BaseAddr + \
+ XRTC_CTL_OFFSET,(Value))
+
+/****************************************************************************/
+/**
+*
+* This macro returns the safety check register value of RTC device.
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance.
+*
+* @return Safety check register value.
+*
+* @note C-Style signature:
+* u32 XRtcPsu_GetSafetyCheck(XRtcPsu *InstancePtr)
+*
+*****************************************************************************/
+#define XRtcPsu_GetSafetyCheck(InstancePtr) \
+ XRtcPsu_ReadReg((InstancePtr)->RtcConfig.BaseAddr+XRTC_SFTY_CHK_OFFSET)
+
+/****************************************************************************/
+/**
+*
+* This macro sets the safety check register value of RTC device.
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance.
+* @param Value is a safety check value to be written in register.
+*
+* @return None.
+*
+* @note C-Style signature:
+* void XRtcPsu_SetSafetyCheck(XRtcPsu *InstancePtr, u32 Value)
+*
+*****************************************************************************/
+#define XRtcPsu_SetSafetyCheck(InstancePtr, Value) \
+ XRtcPsu_WriteReg((InstancePtr)->RtcConfig.BaseAddr + \
+ XRTC_SFTY_CHK_OFFSET,(Value))
+
+/****************************************************************************/
+/**
+*
+* This macro resets the alarm register
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance.
+*
+* @return None.
+*
+* @note C-Style signature:
+* u32 XRtcPsu_ResetAlarm(XRtcPsu *InstancePtr)
+*
+*****************************************************************************/
+#define XRtcPsu_ResetAlarm(InstancePtr) \
+ XRtcPsu_WriteReg((InstancePtr)->RtcConfig.BaseAddr + \
+ XRTC_ALRM_OFFSET,XRTC_ALRM_RSTVAL)
+
+/****************************************************************************/
+/**
+*
+* This macro rounds off the given number
+*
+* @param Number is the one that needs to be rounded off..
+*
+* @return The rounded off value of the input number.
+*
+* @note C-Style signature:
+* u32 XRtcPsu_RoundOff(float Number)
+*
+*****************************************************************************/
+#define XRtcPsu_RoundOff(Number) \
+ (u32)(((Number) < (u32)0) ? ((Number) - (u32)0.5) : ((Number) + (u32)0.5))
+
+/************************** Function Prototypes ******************************/
+
+/* Functions in xrtcpsu.c */
+s32 XRtcPsu_CfgInitialize(XRtcPsu *InstancePtr, XRtcPsu_Config *ConfigPtr,
+ u32 EffectiveAddr);
+
+void XRtcPsu_SetAlarm(XRtcPsu *InstancePtr, u32 Alarm, u32 Periodic);
+void XRtcPsu_SecToDateTime(u32 Seconds, XRtcPsu_DT *dt);
+u32 XRtcPsu_DateTimeToSec(XRtcPsu_DT *dt);
+void XRtcPsu_CalculateCalibration(XRtcPsu *InstancePtr,u32 TimeReal,
+ u32 CrystalOscFreq);
+u32 XRtcPsu_IsSecondsEventGenerated(XRtcPsu *InstancePtr);
+u32 XRtcPsu_IsAlarmEventGenerated(XRtcPsu *InstancePtr);
+
+/* interrupt functions in xrtcpsu_intr.c */
+void XRtcPsu_SetInterruptMask(XRtcPsu *InstancePtr, u32 Mask);
+void XRtcPsu_ClearInterruptMask(XRtcPsu *InstancePtr, u32 Mask);
+void XRtcPsu_InterruptHandler(XRtcPsu *InstancePtr);
+void XRtcPsu_SetHandler(XRtcPsu *InstancePtr, XRtcPsu_Handler FuncPtr,
+ void *CallBackRef);
+
+/* Functions in xrtcpsu_selftest.c */
+s32 XRtcPsu_SelfTest(XRtcPsu *InstancePtr);
+
+/* Functions in xrtcpsu_sinit.c */
+XRtcPsu_Config *XRtcPsu_LookupConfig(u16 DeviceId);
+
+
+#endif /* XRTC_H_ */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_g.c
similarity index 84%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_g.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_g.c
index 801651e10..8dc37775a 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_g.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_g.c
@@ -1,55 +1,55 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Driver configuration
-*
-*******************************************************************/
-
-#include "xparameters.h"
-#include "xusbpsu.h"
-
-/*
-* The configuration table for devices
-*/
-
-XUsbPsu_Config XUsbPsu_ConfigTable[] =
-{
- {
- XPAR_PSU_USB_0_DEVICE_ID,
- XPAR_PSU_USB_0_BASEADDR
- }
-};
-
-
+
+/*******************************************************************
+*
+* CAUTION: This file is automatically generated by HSI.
+* Version:
+* DO NOT EDIT.
+*
+* Copyright (C) 2010-2016 Xilinx, Inc. All Rights Reserved.*
+*Permission is hereby granted, free of charge, to any person obtaining a copy
+*of this software and associated documentation files (the Software), to deal
+*in the Software without restriction, including without limitation the rights
+*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*copies of the Software, and to permit persons to whom the Software is
+*furnished to do so, subject to the following conditions:
+*
+*The above copyright notice and this permission notice shall be included in
+*all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+*(a) running on a Xilinx device, or
+*(b) that interact with a Xilinx device through a bus or interconnect.
+*
+*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+*XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+*Except as contained in this notice, the name of the Xilinx shall not be used
+*in advertising or otherwise to promote the sale, use or other dealings in
+*this Software without prior written authorization from Xilinx.
+*
+
+*
+* Description: Driver configuration
+*
+*******************************************************************/
+
+#include "xparameters.h"
+#include "xrtcpsu.h"
+
+/*
+* The configuration table for devices
+*/
+
+XRtcPsu_Config XRtcPsu_ConfigTable[] =
+{
+ {
+ XPAR_PSU_RTC_DEVICE_ID,
+ XPAR_PSU_RTC_BASEADDR
+ }
+};
+
+
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_hw.h
new file mode 100644
index 000000000..532ef7e3c
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_hw.h
@@ -0,0 +1,362 @@
+/******************************************************************************
+*
+* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+* (a) running on a Xilinx device, or
+* (b) that interact with a Xilinx device through a bus or interconnect.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*
+* Except as contained in this notice, the name of the Xilinx shall not be used
+* in advertising or otherwise to promote the sale, use or other dealings in
+* this Software without prior written authorization from Xilinx.
+*
+******************************************************************************/
+/*****************************************************************************/
+/**
+*
+* @file xrtcpsu_hw.h
+* @addtogroup rtcpsu_v1_0
+* @{
+*
+* This header file contains the identifiers and basic driver functions (or
+* macros) that can be used to access the device. Other driver functions
+* are defined in xrtcpsu.h.
+*
+*
+* MODIFICATION HISTORY:
+*
+* Ver Who Date Changes
+* ----- ----- -------- -----------------------------------------------
+* 1.00a kvn 04/21/15 First release
+* 1.1 kvn 09/25/15 Modify control register to enable battery
+* switching when vcc_psaux is not available.
+*
+*
+*
+******************************************************************************/
+
+#ifndef XRTC_HW_H_ /* prevent circular inclusions */
+#define XRTC_HW_H_ /* by using protection macros */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************** Include Files *********************************/
+
+#include "xil_types.h"
+#include "xil_assert.h"
+#include "xil_io.h"
+
+/************************** Constant Definitions *****************************/
+
+/**
+ * Xrtc Base Address
+ */
+#define XRTC_BASEADDR 0xFFA60000U
+
+/**
+ * Register: XrtcSetTimeWr
+ */
+#define XRTC_SET_TIME_WR_OFFSET 0x00000000U
+#define XRTC_SET_TIME_WR_RSTVAL 0x00000000U
+
+#define XRTC_SET_TIME_WR_VAL_SHIFT 0U
+#define XRTC_SET_TIME_WR_VAL_WIDTH 32U
+#define XRTC_SET_TIME_WR_VAL_MASK 0xffffffffU
+#define XRTC_SET_TIME_WR_VAL_DEFVAL 0x0U
+
+/**
+ * Register: XrtcSetTimeRd
+ */
+#define XRTC_SET_TIME_RD_OFFSET 0x00000004U
+#define XRTC_SET_TIME_RD_RSTVAL 0x00000000U
+
+#define XRTC_SET_TIME_RD_VAL_SHIFT 0U
+#define XRTC_SET_TIME_RD_VAL_WIDTH 32U
+#define XRTC_SET_TIME_RD_VAL_MASK 0xffffffffU
+#define XRTC_SET_TIME_RD_VAL_DEFVAL 0x0U
+
+/**
+ * Register: XrtcCalibWr
+ */
+#define XRTC_CALIB_WR_OFFSET 0x00000008U
+#define XRTC_CALIB_WR_RSTVAL 0x00000000U
+
+#define XRTC_CALIB_WR_FRACTN_EN_SHIFT 20U
+#define XRTC_CALIB_WR_FRACTN_EN_WIDTH 1U
+#define XRTC_CALIB_WR_FRACTN_EN_MASK 0x00100000U
+#define XRTC_CALIB_WR_FRACTN_EN_DEFVAL 0x0U
+
+#define XRTC_CALIB_WR_FRACTN_DATA_SHIFT 16U
+#define XRTC_CALIB_WR_FRACTN_DATA_WIDTH 4U
+#define XRTC_CALIB_WR_FRACTN_DATA_MASK 0x000f0000U
+#define XRTC_CALIB_WR_FRACTN_DATA_DEFVAL 0x0U
+
+#define XRTC_CALIB_WR_MAX_TCK_SHIFT 0U
+#define XRTC_CALIB_WR_MAX_TCK_WIDTH 16U
+#define XRTC_CALIB_WR_MAX_TCK_MASK 0x0000ffffU
+#define XRTC_CALIB_WR_MAX_TCK_DEFVAL 0x0U
+
+/**
+ * Register: XrtcCalibRd
+ */
+#define XRTC_CALIB_RD_OFFSET 0x0000000CU
+#define XRTC_CALIB_RD_RSTVAL 0x00000000U
+
+#define XRTC_CALIB_RD_FRACTN_EN_SHIFT 20U
+#define XRTC_CALIB_RD_FRACTN_EN_WIDTH 1U
+#define XRTC_CALIB_RD_FRACTN_EN_MASK 0x00100000U
+#define XRTC_CALIB_RD_FRACTN_EN_DEFVAL 0x0U
+
+#define XRTC_CALIB_RD_FRACTN_DATA_SHIFT 16U
+#define XRTC_CALIB_RD_FRACTN_DATA_WIDTH 4U
+#define XRTC_CALIB_RD_FRACTN_DATA_MASK 0x000f0000U
+#define XRTC_CALIB_RD_FRACTN_DATA_DEFVAL 0x0U
+
+#define XRTC_CALIB_RD_MAX_TCK_SHIFT 0U
+#define XRTC_CALIB_RD_MAX_TCK_WIDTH 16U
+#define XRTC_CALIB_RD_MAX_TCK_MASK 0x0000ffffU
+#define XRTC_CALIB_RD_MAX_TCK_DEFVAL 0x0U
+
+/**
+ * Register: XrtcCurTime
+ */
+#define XRTC_CUR_TIME_OFFSET 0x00000010U
+#define XRTC_CUR_TIME_RSTVAL 0x00000000U
+
+#define XRTC_CUR_TIME_VAL_SHIFT 0U
+#define XRTC_CUR_TIME_VAL_WIDTH 32U
+#define XRTC_CUR_TIME_VAL_MASK 0xffffffffU
+#define XRTC_CUR_TIME_VAL_DEFVAL 0x0U
+
+/**
+ * Register: XrtcCurTck
+ */
+#define XRTC_CUR_TCK_OFFSET 0x00000014U
+#define XRTC_CUR_TCK_RSTVAL 0x00000000U
+
+#define XRTC_CUR_TCK_VAL_SHIFT 0U
+#define XRTC_CUR_TCK_VAL_WIDTH 16U
+#define XRTC_CUR_TCK_VAL_MASK 0x0000ffffU
+#define XRTC_CUR_TCK_VAL_DEFVAL 0x0U
+
+/**
+ * Register: XrtcAlrm
+ */
+#define XRTC_ALRM_OFFSET 0x00000018U
+#define XRTC_ALRM_RSTVAL 0x00000000U
+
+#define XRTC_ALRM_VAL_SHIFT 0U
+#define XRTC_ALRM_VAL_WIDTH 32U
+#define XRTC_ALRM_VAL_MASK 0xffffffffU
+#define XRTC_ALRM_VAL_DEFVAL 0x0U
+
+/**
+ * Register: XrtcIntSts
+ */
+#define XRTC_INT_STS_OFFSET 0x00000020U
+#define XRTC_INT_STS_RSTVAL 0x00000000U
+
+#define XRTC_INT_STS_ALRM_SHIFT 1U
+#define XRTC_INT_STS_ALRM_WIDTH 1U
+#define XRTC_INT_STS_ALRM_MASK 0x00000002U
+#define XRTC_INT_STS_ALRM_DEFVAL 0x0U
+
+#define XRTC_INT_STS_SECS_SHIFT 0U
+#define XRTC_INT_STS_SECS_WIDTH 1U
+#define XRTC_INT_STS_SECS_MASK 0x00000001U
+#define XRTC_INT_STS_SECS_DEFVAL 0x0U
+
+/**
+ * Register: XrtcIntMsk
+ */
+#define XRTC_INT_MSK_OFFSET 0x00000024U
+#define XRTC_INT_MSK_RSTVAL 0x00000003U
+
+#define XRTC_INT_MSK_ALRM_SHIFT 1U
+#define XRTC_INT_MSK_ALRM_WIDTH 1U
+#define XRTC_INT_MSK_ALRM_MASK 0x00000002U
+#define XRTC_INT_MSK_ALRM_DEFVAL 0x1U
+
+#define XRTC_INT_MSK_SECS_SHIFT 0U
+#define XRTC_INT_MSK_SECS_WIDTH 1U
+#define XRTC_INT_MSK_SECS_MASK 0x00000001U
+#define XRTC_INT_MSK_SECS_DEFVAL 0x1U
+
+/**
+ * Register: XrtcIntEn
+ */
+#define XRTC_INT_EN_OFFSET 0x00000028U
+#define XRTC_INT_EN_RSTVAL 0x00000000U
+
+#define XRTC_INT_EN_ALRM_SHIFT 1U
+#define XRTC_INT_EN_ALRM_WIDTH 1U
+#define XRTC_INT_EN_ALRM_MASK 0x00000002U
+#define XRTC_INT_EN_ALRM_DEFVAL 0x0U
+
+#define XRTC_INT_EN_SECS_SHIFT 0U
+#define XRTC_INT_EN_SECS_WIDTH 1U
+#define XRTC_INT_EN_SECS_MASK 0x00000001U
+#define XRTC_INT_EN_SECS_DEFVAL 0x0U
+
+/**
+ * Register: XrtcIntDis
+ */
+#define XRTC_INT_DIS_OFFSET 0x0000002CU
+#define XRTC_INT_DIS_RSTVAL 0x00000000U
+
+#define XRTC_INT_DIS_ALRM_SHIFT 1U
+#define XRTC_INT_DIS_ALRM_WIDTH 1U
+#define XRTC_INT_DIS_ALRM_MASK 0x00000002U
+#define XRTC_INT_DIS_ALRM_DEFVAL 0x0U
+
+#define XRTC_INT_DIS_SECS_SHIFT 0U
+#define XRTC_INT_DIS_SECS_WIDTH 1U
+#define XRTC_INT_DIS_SECS_MASK 0x00000001U
+#define XRTC_INT_DIS_SECS_DEFVAL 0x0U
+
+/**
+ * Register: XrtcAddErr
+ */
+#define XRTC_ADD_ERR_OFFSET 0x00000030U
+#define XRTC_ADD_ERR_RSTVAL 0x00000000U
+
+#define XRTC_ADD_ERR_STS_SHIFT 0U
+#define XRTC_ADD_ERR_STS_WIDTH 1U
+#define XRTC_ADD_ERR_STS_MASK 0x00000001U
+#define XRTC_ADD_ERR_STS_DEFVAL 0x0U
+
+/**
+ * Register: XrtcAddErrIntMsk
+ */
+#define XRTC_ADD_ERR_INT_MSK_OFFSET 0x00000034U
+#define XRTC_ADD_ERR_INT_MSK_RSTVAL 0x00000001U
+
+#define XRTC_ADD_ERR_INT_MSK_SHIFT 0U
+#define XRTC_ADD_ERR_INT_MSK_WIDTH 1U
+#define XRTC_ADD_ERR_INT_MSK_MASK 0x00000001U
+#define XRTC_ADD_ERR_INT_MSK_DEFVAL 0x1U
+
+/**
+ * Register: XrtcAddErrIntEn
+ */
+#define XRTC_ADD_ERR_INT_EN_OFFSET 0x00000038U
+#define XRTC_ADD_ERR_INT_EN_RSTVAL 0x00000000U
+
+#define XRTC_ADD_ERR_INT_EN_MSK_SHIFT 0U
+#define XRTC_ADD_ERR_INT_EN_MSK_WIDTH 1U
+#define XRTC_ADD_ERR_INT_EN_MSK_MASK 0x00000001U
+#define XRTC_ADD_ERR_INT_EN_MSK_DEFVAL 0x0U
+
+/**
+ * Register: XrtcAddErrIntDis
+ */
+#define XRTC_ADD_ERR_INT_DIS_OFFSET 0x0000003CU
+#define XRTC_ADD_ERR_INT_DIS_RSTVAL 0x00000000U
+
+#define XRTC_ADD_ERR_INT_DIS_MSK_SHIFT 0U
+#define XRTC_ADD_ERR_INT_DIS_MSK_WIDTH 1U
+#define XRTC_ADD_ERR_INT_DIS_MSK_MASK 0x00000001U
+#define XRTC_ADD_ERR_INT_DIS_MSK_DEFVAL 0x0U
+
+/**
+ * Register: XrtcCtl
+ */
+#define XRTC_CTL_OFFSET 0x00000040U
+#define XRTC_CTL_RSTVAL 0x01000000U
+
+#define XRTC_CTL_BATTERY_EN_SHIFT 31U
+#define XRTC_CTL_BATTERY_EN_WIDTH 1U
+#define XRTC_CTL_BATTERY_EN_MASK 0x80000000U
+#define XRTC_CTL_BATTERY_EN_DEFVAL 0x0U
+
+#define XRTC_CTL_OSC_SHIFT 24U
+#define XRTC_CTL_OSC_WIDTH 4U
+#define XRTC_CTL_OSC_MASK 0x0f000000U
+#define XRTC_CTL_OSC_DEFVAL 0x1U
+
+#define XRTC_CTL_SLVERR_EN_SHIFT 0U
+#define XRTC_CTL_SLVERR_EN_WIDTH 1U
+#define XRTC_CTL_SLVERR_EN_MASK 0x00000001U
+#define XRTC_CTL_SLVERR_EN_DEFVAL 0x0U
+
+/**
+ * Register: XrtcSftyChk
+ */
+#define XRTC_SFTY_CHK_OFFSET 0x00000050U
+#define XRTC_SFTY_CHK_RSTVAL 0x00000000U
+
+#define XRTC_SFTY_CHK_REG_SHIFT 0U
+#define XRTC_SFTY_CHK_REG_WIDTH 32U
+#define XRTC_SFTY_CHK_REG_MASK 0xffffffffU
+#define XRTC_SFTY_CHK_REG_DEFVAL 0x0U
+
+/**
+ * Register: XrtcEco
+ */
+#define XRTC_ECO_OFFSET 0x00000060U
+#define XRTC_ECO_RSTVAL 0x00000000U
+
+#define XRTC_ECO_REG_SHIFT 0U
+#define XRTC_ECO_REG_WIDTH 32U
+#define XRTC_ECO_REG_MASK 0xffffffffU
+#define XRTC_ECO_REG_DEFVAL 0x0U
+
+/***************** Macros (Inline Functions) Definitions *********************/
+
+/****************************************************************************/
+/**
+*
+* This macro reads the given register.
+*
+* @param RegisterAddr is the register address in the address
+* space of the RTC device.
+*
+* @return The 32-bit value of the register
+*
+* @note None.
+*
+*****************************************************************************/
+#define XRtcPsu_ReadReg(RegisterAddr) Xil_In32(RegisterAddr)
+
+/****************************************************************************/
+/**
+*
+* This macro writes the given register.
+*
+* @param RegisterAddr is the register address in the address
+* space of the RTC device.
+* @param Data is the 32-bit value to write to the register.
+*
+* @return None.
+*
+* @note None.
+*
+*****************************************************************************/
+#define XRtcPsu_WriteReg(RegisterAddr, Data) Xil_Out32(RegisterAddr, (u32)(Data))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* XRTC_HW_H_ */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_intr.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_intr.c
new file mode 100644
index 000000000..bca20af12
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_intr.c
@@ -0,0 +1,232 @@
+/******************************************************************************
+*
+* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+* (a) running on a Xilinx device, or
+* (b) that interact with a Xilinx device through a bus or interconnect.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*
+* Except as contained in this notice, the name of the Xilinx shall not be used
+* in advertising or otherwise to promote the sale, use or other dealings in
+* this Software without prior written authorization from Xilinx.
+*
+******************************************************************************/
+/*****************************************************************************/
+/**
+*
+* @file xrtcpsu_intr.c
+* @addtogroup rtcpsu_v1_0
+* @{
+*
+* This file contains functions related to RTC interrupt handling.
+*
+*
+* MODIFICATION HISTORY:
+*
+* Ver Who Date Changes
+* ----- ----- -------- -----------------------------------------------
+* 1.00 kvn 04/21/15 First release
+*
+*
+******************************************************************************/
+
+/***************************** Include Files *********************************/
+
+#include "xrtcpsu.h"
+
+/************************** Constant Definitions *****************************/
+
+/**************************** Type Definitions *******************************/
+
+/***************** Macros (Inline Functions) Definitions *********************/
+
+/************************** Variable Definitions *****************************/
+
+/************************** Function Prototypes ******************************/
+
+/************************** Variable Definitions ****************************/
+
+/****************************************************************************/
+/**
+*
+* This function sets the interrupt mask.
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance
+* @param Mask contains the interrupts to be enabled.
+* A '1' enables an interupt, and a '0' disables.
+*
+* @return None.
+*
+* @note None.
+*
+*****************************************************************************/
+void XRtcPsu_SetInterruptMask(XRtcPsu *InstancePtr, u32 Mask)
+{
+ /*
+ * Clear the Status register to be sure of no pending interrupts.
+ * Writing mask values to interrupt bits as it is a WTC register.
+ */
+ XRtcPsu_WriteReg(InstancePtr->RtcConfig.BaseAddr + XRTC_INT_STS_OFFSET,
+ ((u32)XRTC_INT_STS_ALRM_MASK | (u32)XRTC_INT_STS_SECS_MASK));
+
+ /*
+ * XRTC_INT_MSK_RSTVAL contains the valid interrupts
+ * for the RTC device. The AND operation on Mask makes sure one
+ * of the valid bits are only set.
+ */
+
+ /* Write the mask to the IER Register */
+ XRtcPsu_WriteReg(InstancePtr->RtcConfig.BaseAddr+XRTC_INT_EN_OFFSET,
+ (Mask & (u32)XRTC_INT_MSK_RSTVAL));
+
+}
+
+/****************************************************************************/
+/**
+*
+* This function clears the interrupt mask.
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance
+* @param Mask contains the interrupts to be disabled.
+* A '1' enables an interrupt, and a '0' disables.
+*
+* @return None.
+*
+* @note None.
+*
+*****************************************************************************/
+void XRtcPsu_ClearInterruptMask(XRtcPsu *InstancePtr, u32 Mask)
+{
+ /*
+ * XRTC_INT_MSK_RSTVAL contains the valid interrupts
+ * for the RTC device. The AND operation on mask makes sure one
+ * of the valid bits are only cleared.
+ */
+
+ /* Write the Mask to the IDR register */
+ XRtcPsu_WriteReg(InstancePtr->RtcConfig.BaseAddr+XRTC_INT_DIS_OFFSET,
+ (Mask & (u32)XRTC_INT_MSK_RSTVAL));
+}
+
+/****************************************************************************/
+/**
+*
+* This function sets the handler that will be called when an event (interrupt)
+* occurs that needs application's attention.
+*
+* @param InstancePtr is a pointer to the XRtcPsu instance
+* @param FuncPtr is the pointer to the callback function.
+* @param CallBackRef is the upper layer callback reference passed back
+* when the callback function is invoked.
+*
+* @return None.
+*
+* @note
+*
+* There is no assert on the CallBackRef since the driver doesn't know what it
+* is (nor should it)
+*
+*****************************************************************************/
+void XRtcPsu_SetHandler(XRtcPsu *InstancePtr, XRtcPsu_Handler FuncPtr,
+ void *CallBackRef)
+{
+ /*
+ * Asserts validate the input arguments
+ * CallBackRef not checked, no way to know what is valid
+ */
+ Xil_AssertVoid(InstancePtr != NULL);
+ Xil_AssertVoid(FuncPtr != NULL);
+ Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ InstancePtr->Handler = FuncPtr;
+ InstancePtr->CallBackRef = CallBackRef;
+}
+
+/****************************************************************************/
+/**
+*
+* This function is the interrupt handler for the driver.
+* It must be connected to an interrupt system by the application such that it
+* can be called when an interrupt occurs.
+*
+* @param InstancePtr contains a pointer to the driver instance
+*
+* @return None.
+*
+* @note None.
+*
+******************************************************************************/
+void XRtcPsu_InterruptHandler(XRtcPsu *InstancePtr)
+{
+ u32 IsrStatus;
+
+ Xil_AssertVoid(InstancePtr != NULL);
+ Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ /*
+ * Read the interrupt ID register to determine which
+ * interrupt is active.
+ */
+ IsrStatus = ~(XRtcPsu_ReadReg(InstancePtr->RtcConfig.BaseAddr +
+ XRTC_INT_MSK_OFFSET));
+
+ IsrStatus &= XRtcPsu_ReadReg(InstancePtr->RtcConfig.BaseAddr +
+ XRTC_INT_STS_OFFSET);
+
+ /*
+ * Clear the interrupt status to allow future
+ * interrupts before this generated interrupt is serviced.
+ */
+ XRtcPsu_WriteReg(InstancePtr->RtcConfig.BaseAddr +
+ XRTC_INT_STS_OFFSET, IsrStatus);
+
+ /* Handle the generated interrupts appropriately. */
+
+ /* Alarm interrupt */
+ if((IsrStatus & XRTC_INT_STS_ALRM_MASK) != (u32)0) {
+
+ if(InstancePtr->IsPeriodicAlarm != 0U) {
+ XRtcPsu_SetAlarm(InstancePtr,
+ (XRtcPsu_GetCurrentTime(InstancePtr)+InstancePtr->PeriodicAlarmTime),1U);
+ }
+
+ /*
+ * Call the application handler to indicate that there is an
+ * alarm interrupt. If the application cares about this alarm,
+ * it will act accordingly through its own handler.
+ */
+ InstancePtr->Handler(InstancePtr->CallBackRef,
+ XRTCPSU_EVENT_ALARM_GEN);
+ }
+
+ /* Seconds interrupt */
+ if((IsrStatus & XRTC_INT_STS_SECS_MASK) != (u32)0) {
+ /*
+ * Call the application handler to indicate that there is an
+ * seconds interrupt. If the application cares about this seconds
+ * interrupt, it will act accordingly through its own handler.
+ */
+ InstancePtr->Handler(InstancePtr->CallBackRef,
+ XRTCPSU_EVENT_SECS_GEN);
+ }
+
+}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_selftest.c
similarity index 60%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_sinit.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_selftest.c
index c3e56ff04..67c562c64 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandpsu_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_selftest.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -18,8 +18,8 @@
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
@@ -29,65 +29,84 @@
* this Software without prior written authorization from Xilinx.
*
******************************************************************************/
-/*****************************************************************************/
+/****************************************************************************/
/**
*
-* @file xnandpsu_sinit.c
+* @file xrtcpsu_selftest.c
+* @addtogroup rtcpsu_v1_0
+* @{
*
-* The implementation of the XNandPsu driver's static initialzation
-* functionality.
+* This file contains the self-test functions for the XRtcPsu driver.
*
*
* MODIFICATION HISTORY:
*
-* Ver Who Date Changes
-* ----- ---- ---------- -----------------------------------------------
-* 1.0 nm 05/06/2014 First release
+* Ver Who Date Changes
+* ----- ------ -------- -----------------------------------------------
+* 1.00 kvn 04/21/15 First release.
*
*
******************************************************************************/
-/***************************** Include Files ********************************/
+/***************************** Include Files *********************************/
+
#include "xstatus.h"
-#include "xparameters.h"
-#include "xnandpsu.h"
-/************************** Constant Definitions ****************************/
+#include "xrtcpsu.h"
+
+/************************** Constant Definitions *****************************/
+
+
+/**************************** Type Definitions *******************************/
+
-/**************************** Type Definitions ******************************/
+/***************** Macros (Inline Functions) Definitions *********************/
-/***************** Macros (Inline Functions) Definitions ********************/
-/************************** Variable Definitions ****************************/
+/************************** Variable Definitions *****************************/
-extern XNandPsu_Config XNandPsu_ConfigTable[];
-/************************** Function Prototypes *****************************/
+/************************** Function Prototypes ******************************/
+
/****************************************************************************/
/**
*
-* Looks up the controller configuration based on the unique controller ID. A
-* table contains the configuration info for each controller in the system.
+* This function runs a self-test on the driver and hardware device. This self
+* test writes reset value into safety check register and read backs the same.
+* If mismatch offers, returns the failure.
*
-* @param DeviceID is the ID of the controller to look up the
-* configuration for.
+* @param InstancePtr is a pointer to the XRtcPsu instance
*
* @return
-* A pointer to the configuration found or NULL if the specified
-* controller ID was not found.
+* - XST_SUCCESS if the test was successful
+*
+* @note
+*
+* This function can hang if the hardware is not functioning properly.
*
******************************************************************************/
-XNandPsu_Config *XNandPsu_LookupConfig(u16 DeviceID)
+s32 XRtcPsu_SelfTest(XRtcPsu *InstancePtr)
{
- XNandPsu_Config *CfgPtr = NULL;
- u32 Index;
-
- for (Index = 0U; Index < XPAR_XNANDPSU_NUM_INSTANCES; Index++) {
- if (XNandPsu_ConfigTable[Index].DeviceId == DeviceID) {
- CfgPtr = &XNandPsu_ConfigTable[Index];
- break;
- }
+ s32 Status = XST_SUCCESS;
+ u32 SafetyCheck;
+
+ /* Assert validates the input arguments */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ /*
+ * Write the reset value in safety check register and
+ * try reading back. If mismatch happens, return failure.
+ */
+ XRtcPsu_WriteReg(InstancePtr->RtcConfig.BaseAddr + XRTC_SFTY_CHK_OFFSET,
+ XRTC_SFTY_CHK_RSTVAL);
+ SafetyCheck = XRtcPsu_ReadReg(InstancePtr->RtcConfig.BaseAddr +
+ XRTC_SFTY_CHK_OFFSET);
+
+ if (SafetyCheck != XRTC_SFTY_CHK_RSTVAL) {
+ Status = XST_FAILURE;
}
- return (XNandPsu_Config *)CfgPtr;
+ return Status;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_sinit.c
similarity index 67%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_sinit.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_sinit.c
index 47fcee58b..d3a8b7dfc 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/rtcpsu_v1_2/src/xrtcpsu_sinit.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -18,8 +18,8 @@
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
@@ -32,26 +32,30 @@
/*****************************************************************************/
/**
*
-* @file xspips_sinit.c
+* @file xrtcpsu_sinit.c
+* @addtogroup rtcpsu_v1_0
+* @{
*
-* The implementation of the XSpiPs driver's static initialization
-* functionality.
+* This file contains the implementation of the XRtcPsu driver's static
+* initialization functionality.
+*
+* @note None.
*
*
+*
* MODIFICATION HISTORY:
*
-* Ver Who Date Changes
-* ----- ------ -------- -----------------------------------------------
-* 1.00 drg/jz 01/25/10 First release
-* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
+* Ver Who Date Changes
+* ----- ----- -------- -----------------------------------------------
+* 1.00 kvn 04/21/15 First release.
+*
*
*
******************************************************************************/
/***************************** Include Files *********************************/
-#include "xstatus.h"
-#include "xspips.h"
+#include "xrtcpsu.h"
#include "xparameters.h"
/************************** Constant Definitions *****************************/
@@ -63,35 +67,36 @@
/************************** Function Prototypes ******************************/
/************************** Variable Definitions *****************************/
-extern XSpiPs_Config XSpiPs_ConfigTable[XPAR_XSPIPS_NUM_INSTANCES];
+
+extern XRtcPsu_Config XRtcPsu_ConfigTable[];
/*****************************************************************************/
/**
*
-* Looks up the device configuration based on the unique device ID. A table
-* contains the configuration info for each device in the system.
-*
-* @param DeviceId contains the ID of the device to look up the
-* configuration for.
+* This function looks for the device configuration based on the unique device
+* ID. The table XRtcPsu_ConfigTable[] contains the configuration information for
+* each device in the system.
*
-* @return
+* @param DeviceId is the unique device ID of the device being looked up.
*
-* A pointer to the configuration found or NULL if the specified device ID was
-* not found. See xspips.h for the definition of XSpiPs_Config.
+* @return A pointer to the configuration table entry corresponding to the
+* given device ID, or NULL if no match is found.
*
* @note None.
*
******************************************************************************/
-XSpiPs_Config *XSpiPs_LookupConfig(u16 DeviceId)
+XRtcPsu_Config *XRtcPsu_LookupConfig(u16 DeviceId)
{
- XSpiPs_Config *CfgPtr = NULL;
+ XRtcPsu_Config *CfgPtr = NULL;
u32 Index;
- for (Index = 0U; Index < (u32)XPAR_XSPIPS_NUM_INSTANCES; Index++) {
- if (XSpiPs_ConfigTable[Index].DeviceId == DeviceId) {
- CfgPtr = &XSpiPs_ConfigTable[Index];
+ for (Index = 0U; Index < (u32)XPAR_XRTCPSU_NUM_INSTANCES; Index++) {
+ if (XRtcPsu_ConfigTable[Index].DeviceId == DeviceId) {
+ CfgPtr = &XRtcPsu_ConfigTable[Index];
break;
}
}
- return (XSpiPs_Config *)CfgPtr;
+
+ return (XRtcPsu_Config *)CfgPtr;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic.h
deleted file mode 100644
index 86adf7b18..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic.h
+++ /dev/null
@@ -1,315 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xscugic.h
-*
-* The generic interrupt controller driver component.
-*
-* The interrupt controller driver uses the idea of priority for the various
-* handlers. Priority is an integer within the range of 1 and 31 inclusive with
-* default of 1 being the highest priority interrupt source. The priorities
-* of the various sources can be dynamically altered as needed through
-* hardware configuration.
-*
-* The generic interrupt controller supports the following
-* features:
-*
-* - specific individual interrupt enabling/disabling
-* - specific individual interrupt acknowledging
-* - attaching specific callback function to handle interrupt source
-* - assigning desired priority to interrupt source if default is not
-* acceptable.
-*
-* Details about connecting the interrupt handler of the driver are contained
-* in the source file specific to interrupt processing, xscugic_intr.c.
-*
-* This driver is intended to be RTOS and processor independent. It works with
-* physical addresses only. Any needs for dynamic memory management, threads
-* or thread mutual exclusion, virtual memory, or cache control must be
-* satisfied by the layer above this driver.
-*
-* Interrupt Vector Tables
-*
-* The device ID of the interrupt controller device is used by the driver as a
-* direct index into the configuration data table. The user should populate the
-* vector table with handlers and callbacks at run-time using the
-* XScuGic_Connect() and XScuGic_Disconnect() functions.
-*
-* Each vector table entry corresponds to a device that can generate an
-* interrupt. Each entry contains an interrupt handler function and an
-* argument to be passed to the handler when an interrupt occurs. The
-* user must use XScuGic_Connect() when the interrupt handler takes an
-* argument other than the base address.
-*
-* Nested Interrupts Processing
-*
-* Nested interrupts are not supported by this driver.
-*
-* NOTE:
-* The generic interrupt controller is not a part of the snoop control unit
-* as indicated by the prefix "scu" in the name of the driver.
-* It is an independent module in APU.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- ---------------------------------------------------------
-* 1.00a drg 01/19/00 First release
-* 1.01a sdm 11/09/11 The XScuGic and XScuGic_Config structures have changed.
-* The HandlerTable (of type XScuGic_VectorTableEntry) is
-* moved to XScuGic_Config structure from XScuGic structure.
-*
-* The "Config" entry in XScuGic structure is made as
-* pointer for better efficiency.
-*
-* A new file named as xscugic_hw.c is now added. It is
-* to implement low level driver routines without using
-* any xscugic instance pointer. They are useful when the
-* user wants to use xscugic through device id or
-* base address. The driver routines provided are explained
-* below.
-* XScuGic_DeviceInitialize that takes device id as
-* argument and initializes the device (without calling
-* XScuGic_CfgInitialize).
-* XScuGic_DeviceInterruptHandler that takes device id
-* as argument and calls appropriate handlers from the
-* HandlerTable.
-* XScuGic_RegisterHandler that registers a new handler
-* by taking xscugic hardware base address as argument.
-* LookupConfigByBaseAddress is used to return the
-* corresponding config structure from XScuGic_ConfigTable
-* based on the scugic base address passed.
-* 1.02a sdm 12/20/11 Removed AckBeforeService from the XScuGic_Config
-* structure.
-* 1.03a srt 02/27/13 Moved Offset calculation macros from *.c and *_hw.c to
-* *_hw.h
-* Added APIs
-* - XScuGic_SetPriTrigTypeByDistAddr()
-* - XScuGic_GetPriTrigTypeByDistAddr()
-* (CR 702687)
-* Added support to direct interrupts to the appropriate CPU. Earlier
-* interrupts were directed to CPU1 (hard coded). Now depending
-* upon the CPU selected by the user (xparameters.h), interrupts
-* will be directed to the relevant CPU. This fixes CR 699688.
-* 1.04a hk 05/04/13 Assigned EffectiveAddr to CpuBaseAddress in
-* XScuGic_CfgInitialize. Fix for CR#704400 to remove warnings.
-* Moved functions XScuGic_SetPriTrigTypeByDistAddr and
-* XScuGic_GetPriTrigTypeByDistAddr to xscugic_hw.c.
-* This is fix for CR#705621.
-* 1.05a hk 06/26/13 Modified tcl to export external interrupts correctly to
-* xparameters.h. Fix for CR's 690505, 708928 & 719359.
-* 2.0 adk 12/10/13 Updated as per the New Tcl API's
-* 2.1 adk 25/04/14 Fixed the CR:789373 changes are made in the driver tcl file.
-* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
-*
-*
-*
-******************************************************************************/
-
-#ifndef XSCUGIC_H /* prevent circular inclusions */
-#define XSCUGIC_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/***************************** Include Files *********************************/
-
-#include "xstatus.h"
-#include "xil_io.h"
-#include "xscugic_hw.h"
-#include "xil_exception.h"
-
-/************************** Constant Definitions *****************************/
-
-
-/**************************** Type Definitions *******************************/
-
-/* The following data type defines each entry in an interrupt vector table.
- * The callback reference is the base address of the interrupting device
- * for the low level driver and an instance pointer for the high level driver.
- */
-typedef struct
-{
- Xil_InterruptHandler Handler;
- void *CallBackRef;
-} XScuGic_VectorTableEntry;
-
-/**
- * This typedef contains configuration information for the device.
- */
-typedef struct
-{
- u16 DeviceId; /**< Unique ID of device */
- u32 CpuBaseAddress; /**< CPU Interface Register base address */
- u32 DistBaseAddress; /**< Distributor Register base address */
- XScuGic_VectorTableEntry HandlerTable[XSCUGIC_MAX_NUM_INTR_INPUTS];/**<
- Vector table of interrupt handlers */
-} XScuGic_Config;
-
-/**
- * The XScuGic driver instance data. The user is required to allocate a
- * variable of this type for every intc device in the system. A pointer
- * to a variable of this type is then passed to the driver API functions.
- */
-typedef struct
-{
- XScuGic_Config *Config; /**< Configuration table entry */
- u32 IsReady; /**< Device is initialized and ready */
- u32 UnhandledInterrupts; /**< Intc Statistics */
-} XScuGic;
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/****************************************************************************/
-/**
-*
-* Write the given CPU Interface register
-*
-* @param InstancePtr is a pointer to the instance to be worked on.
-* @param RegOffset is the register offset to be written
-* @param Data is the 32-bit value to write to the register
-*
-* @return None.
-*
-* @note
-* C-style signature:
-* void XScuGic_CPUWriteReg(XScuGic *InstancePtr, u32 RegOffset, u32 Data)
-*
-*****************************************************************************/
-#define XScuGic_CPUWriteReg(InstancePtr, RegOffset, Data) \
-(XScuGic_WriteReg(((InstancePtr)->Config->CpuBaseAddress), (RegOffset), \
- ((u32)(Data))))
-
-/****************************************************************************/
-/**
-*
-* Read the given CPU Interface register
-*
-* @param InstancePtr is a pointer to the instance to be worked on.
-* @param RegOffset is the register offset to be read
-*
-* @return The 32-bit value of the register
-*
-* @note
-* C-style signature:
-* u32 XScuGic_CPUReadReg(XScuGic *InstancePtr, u32 RegOffset)
-*
-*****************************************************************************/
-#define XScuGic_CPUReadReg(InstancePtr, RegOffset) \
- (XScuGic_ReadReg(((InstancePtr)->Config->CpuBaseAddress), (RegOffset)))
-
-/****************************************************************************/
-/**
-*
-* Write the given Distributor Interface register
-*
-* @param InstancePtr is a pointer to the instance to be worked on.
-* @param RegOffset is the register offset to be written
-* @param Data is the 32-bit value to write to the register
-*
-* @return None.
-*
-* @note
-* C-style signature:
-* void XScuGic_DistWriteReg(XScuGic *InstancePtr, u32 RegOffset, u32 Data)
-*
-*****************************************************************************/
-#define XScuGic_DistWriteReg(InstancePtr, RegOffset, Data) \
-(XScuGic_WriteReg(((InstancePtr)->Config->DistBaseAddress), (RegOffset), \
- ((u32)(Data))))
-
-/****************************************************************************/
-/**
-*
-* Read the given Distributor Interface register
-*
-* @param InstancePtr is a pointer to the instance to be worked on.
-* @param RegOffset is the register offset to be read
-*
-* @return The 32-bit value of the register
-*
-* @note
-* C-style signature:
-* u32 XScuGic_DistReadReg(XScuGic *InstancePtr, u32 RegOffset)
-*
-*****************************************************************************/
-#define XScuGic_DistReadReg(InstancePtr, RegOffset) \
-(XScuGic_ReadReg(((InstancePtr)->Config->DistBaseAddress), (RegOffset)))
-
-/************************** Function Prototypes ******************************/
-
-/*
- * Required functions in xscugic.c
- */
-
-s32 XScuGic_Connect(XScuGic *InstancePtr, u32 Int_Id,
- Xil_InterruptHandler Handler, void *CallBackRef);
-void XScuGic_Disconnect(XScuGic *InstancePtr, u32 Int_Id);
-
-void XScuGic_Enable(XScuGic *InstancePtr, u32 Int_Id);
-void XScuGic_Disable(XScuGic *InstancePtr, u32 Int_Id);
-
-s32 XScuGic_CfgInitialize(XScuGic *InstancePtr, XScuGic_Config *ConfigPtr,
- u32 EffectiveAddr);
-
-s32 XScuGic_SoftwareIntr(XScuGic *InstancePtr, u32 Int_Id, u32 Cpu_Id);
-
-void XScuGic_GetPriorityTriggerType(XScuGic *InstancePtr, u32 Int_Id,
- u8 *Priority, u8 *Trigger);
-void XScuGic_SetPriorityTriggerType(XScuGic *InstancePtr, u32 Int_Id,
- u8 Priority, u8 Trigger);
-
-/*
- * Initialization functions in xscugic_sinit.c
- */
-XScuGic_Config *XScuGic_LookupConfig(u16 DeviceId);
-
-/*
- * Interrupt functions in xscugic_intr.c
- */
-void XScuGic_InterruptHandler(XScuGic *InstancePtr);
-
-/*
- * Self-test functions in xscugic_selftest.c
- */
-s32 XScuGic_SelfTest(XScuGic *InstancePtr);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_hw.h
deleted file mode 100644
index 580ce6ba9..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_hw.h
+++ /dev/null
@@ -1,637 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xscugic_hw.h
-*
-* This header file contains identifiers and HW access functions (or
-* macros) that can be used to access the device. The user should refer to the
-* hardware device specification for more details of the device operation.
-* The driver functions/APIs are defined in xscugic.h.
-*
-* This GIC device has two parts, a distributor and CPU interface(s). Each part
-* has separate register definition sections.
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -----------------------------------------------------
-* 1.00a drg 01/19/10 First release
-* 1.01a sdm 11/09/11 "xil_exception.h" added as include.
-* Macros XScuGic_EnableIntr and XScuGic_DisableIntr are
-* added to enable or disable interrupts based on
-* Distributor Register base address. Normally users use
-* XScuGic instance and call XScuGic_Enable or
-* XScuGic_Disable to enable/disable interrupts. These
-* new macros are provided when user does not want to
-* use an instance pointer but still wants to enable or
-* disable interrupts.
-* Function prototypes for functions (present in newly
-* added file xscugic_hw.c) are added.
-* 1.03a srt 02/27/13 Moved Offset calculation macros from *_hw.c (CR
-* 702687).
-* 1.04a hk 05/04/13 Fix for CR#705621. Moved function prototypes
-* XScuGic_SetPriTrigTypeByDistAddr and
-* XScuGic_GetPriTrigTypeByDistAddr here from xscugic.h
-* 3.0 pkp 12/09/14 changed XSCUGIC_MAX_NUM_INTR_INPUTS for
-* Zynq Ultrascale Mp
-* 3.0 kvn 02/13/14 Modified code for MISRA-C:2012 compliance.
-*
-*
-******************************************************************************/
-
-#ifndef XSCUGIC_HW_H /* prevent circular inclusions */
-#define XSCUGIC_HW_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xil_io.h"
-#include "xil_exception.h"
-
-/************************** Constant Definitions *****************************/
-
-/*
- * The maximum number of interrupts supported by the hardware.
- */
-#ifdef __ARM_NEON__
-#define XSCUGIC_MAX_NUM_INTR_INPUTS 95U /* Maximum number of interrupt defined by Zynq */
-#else
-#define XSCUGIC_MAX_NUM_INTR_INPUTS 195U /* Maximum number of interrupt defined by Zynq Ultrascale Mp */
-#endif
-
-/*
- * The maximum priority value that can be used in the GIC.
- */
-#define XSCUGIC_MAX_INTR_PRIO_VAL 248U
-#define XSCUGIC_INTR_PRIO_MASK 0x000000F8U
-
-/** @name Distributor Interface Register Map
- *
- * Define the offsets from the base address for all Distributor registers of
- * the interrupt controller, some registers may be reserved in the hardware
- * device.
- * @{
- */
-#define XSCUGIC_DIST_EN_OFFSET 0x00000000U /**< Distributor Enable
- Register */
-#define XSCUGIC_IC_TYPE_OFFSET 0x00000004U /**< Interrupt Controller
- Type Register */
-#define XSCUGIC_DIST_IDENT_OFFSET 0x00000008U /**< Implementor ID
- Register */
-#define XSCUGIC_SECURITY_OFFSET 0x00000080U /**< Interrupt Security
- Register */
-#define XSCUGIC_ENABLE_SET_OFFSET 0x00000100U /**< Enable Set
- Register */
-#define XSCUGIC_DISABLE_OFFSET 0x00000180U /**< Enable Clear Register */
-#define XSCUGIC_PENDING_SET_OFFSET 0x00000200U /**< Pending Set
- Register */
-#define XSCUGIC_PENDING_CLR_OFFSET 0x00000280U /**< Pending Clear
- Register */
-#define XSCUGIC_ACTIVE_OFFSET 0x00000300U /**< Active Status Register */
-#define XSCUGIC_PRIORITY_OFFSET 0x00000400U /**< Priority Level Register */
-#define XSCUGIC_SPI_TARGET_OFFSET 0x00000800U /**< SPI Target
- Register 0x800-0x8FB */
-#define XSCUGIC_INT_CFG_OFFSET 0x00000C00U /**< Interrupt Configuration
- Register 0xC00-0xCFC */
-#define XSCUGIC_PPI_STAT_OFFSET 0x00000D00U /**< PPI Status Register */
-#define XSCUGIC_SPI_STAT_OFFSET 0x00000D04U /**< SPI Status Register
- 0xd04-0xd7C */
-#define XSCUGIC_AHB_CONFIG_OFFSET 0x00000D80U /**< AHB Configuration
- Register */
-#define XSCUGIC_SFI_TRIG_OFFSET 0x00000F00U /**< Software Triggered
- Interrupt Register */
-#define XSCUGIC_PERPHID_OFFSET 0x00000FD0U /**< Peripheral ID Reg */
-#define XSCUGIC_PCELLID_OFFSET 0x00000FF0U /**< Pcell ID Register */
-/* @} */
-
-/** @name Distributor Enable Register
- * Controls if the distributor response to external interrupt inputs.
- * @{
- */
-#define XSCUGIC_EN_INT_MASK 0x00000001U /**< Interrupt In Enable */
-/* @} */
-
-/** @name Interrupt Controller Type Register
- * @{
- */
-#define XSCUGIC_LSPI_MASK 0x0000F800U /**< Number of Lockable
- Shared Peripheral
- Interrupts*/
-#define XSCUGIC_DOMAIN_MASK 0x00000400U /**< Number os Security domains*/
-#define XSCUGIC_CPU_NUM_MASK 0x000000E0U /**< Number of CPU Interfaces */
-#define XSCUGIC_NUM_INT_MASK 0x0000001FU /**< Number of Interrupt IDs */
-/* @} */
-
-/** @name Implementor ID Register
- * Implementor and revision information.
- * @{
- */
-#define XSCUGIC_REV_MASK 0x00FFF000U /**< Revision Number */
-#define XSCUGIC_IMPL_MASK 0x00000FFFU /**< Implementor */
-/* @} */
-
-/** @name Interrupt Security Registers
- * Each bit controls the security level of an interrupt, either secure or non
- * secure. These registers can only be accessed using secure read and write.
- * There are registers for each of the CPU interfaces at offset 0x080. A
- * register set for the SPI interrupts is available to all CPU interfaces.
- * There are up to 32 of these registers staring at location 0x084.
- * @{
- */
-#define XSCUGIC_INT_NS_MASK 0x00000001U /**< Each bit corresponds to an
- INT_ID */
-/* @} */
-
-/** @name Enable Set Register
- * Each bit controls the enabling of an interrupt, a 0 is disabled, a 1 is
- * enabled. Writing a 0 has no effect. Use the ENABLE_CLR register to set a
- * bit to 0.
- * There are registers for each of the CPU interfaces at offset 0x100. With up
- * to 8 registers aliased to the same address. A register set for the SPI
- * interrupts is available to all CPU interfaces.
- * There are up to 32 of these registers staring at location 0x104.
- * @{
- */
-#define XSCUGIC_INT_EN_MASK 0x00000001U /**< Each bit corresponds to an
- INT_ID */
-/* @} */
-
-/** @name Enable Clear Register
- * Each bit controls the disabling of an interrupt, a 0 is disabled, a 1 is
- * enabled. Writing a 0 has no effect. Writing a 1 disables an interrupt and
- * sets the corresponding bit to 0.
- * There are registers for each of the CPU interfaces at offset 0x180. With up
- * to 8 registers aliased to the same address.
- * A register set for the SPI interrupts is available to all CPU interfaces.
- * There are up to 32 of these registers staring at location 0x184.
- * @{
- */
-#define XSCUGIC_INT_CLR_MASK 0x00000001U /**< Each bit corresponds to an
- INT_ID */
-/* @} */
-
-/** @name Pending Set Register
- * Each bit controls the Pending or Active and Pending state of an interrupt, a
- * 0 is not pending, a 1 is pending. Writing a 0 has no effect. Writing a 1 sets
- * an interrupt to the pending state.
- * There are registers for each of the CPU interfaces at offset 0x200. With up
- * to 8 registers aliased to the same address.
- * A register set for the SPI interrupts is available to all CPU interfaces.
- * There are up to 32 of these registers staring at location 0x204.
- * @{
- */
-#define XSCUGIC_PEND_SET_MASK 0x00000001U /**< Each bit corresponds to an
- INT_ID */
-/* @} */
-
-/** @name Pending Clear Register
- * Each bit can clear the Pending or Active and Pending state of an interrupt, a
- * 0 is not pending, a 1 is pending. Writing a 0 has no effect. Writing a 1
- * clears the pending state of an interrupt.
- * There are registers for each of the CPU interfaces at offset 0x280. With up
- * to 8 registers aliased to the same address.
- * A register set for the SPI interrupts is available to all CPU interfaces.
- * There are up to 32 of these registers staring at location 0x284.
- * @{
- */
-#define XSCUGIC_PEND_CLR_MASK 0x00000001U /**< Each bit corresponds to an
- INT_ID */
-/* @} */
-
-/** @name Active Status Register
- * Each bit provides the Active status of an interrupt, a
- * 0 is not Active, a 1 is Active. This is a read only register.
- * There are registers for each of the CPU interfaces at offset 0x300. With up
- * to 8 registers aliased to each address.
- * A register set for the SPI interrupts is available to all CPU interfaces.
- * There are up to 32 of these registers staring at location 0x380.
- * @{
- */
-#define XSCUGIC_ACTIVE_MASK 0x00000001U /**< Each bit corresponds to an
- INT_ID */
-/* @} */
-
-/** @name Priority Level Register
- * Each byte in a Priority Level Register sets the priority level of an
- * interrupt. Reading the register provides the priority level of an interrupt.
- * There are registers for each of the CPU interfaces at offset 0x400 through
- * 0x41C. With up to 8 registers aliased to each address.
- * 0 is highest priority, 0xFF is lowest.
- * A register set for the SPI interrupts is available to all CPU interfaces.
- * There are up to 255 of these registers staring at location 0x420.
- * @{
- */
-#define XSCUGIC_PRIORITY_MASK 0x000000FFU /**< Each Byte corresponds to an
- INT_ID */
-#define XSCUGIC_PRIORITY_MAX 0x000000FFU /**< Highest value of a priority
- actually the lowest priority*/
-/* @} */
-
-/** @name SPI Target Register 0x800-0x8FB
- * Each byte references a separate SPI and programs which of the up to 8 CPU
- * interfaces are sent a Pending interrupt.
- * There are registers for each of the CPU interfaces at offset 0x800 through
- * 0x81C. With up to 8 registers aliased to each address.
- * A register set for the SPI interrupts is available to all CPU interfaces.
- * There are up to 255 of these registers staring at location 0x820.
- *
- * This driver does not support multiple CPU interfaces. These are included
- * for complete documentation.
- * @{
- */
-#define XSCUGIC_SPI_CPU7_MASK 0x00000080U /**< CPU 7 Mask*/
-#define XSCUGIC_SPI_CPU6_MASK 0x00000040U /**< CPU 6 Mask*/
-#define XSCUGIC_SPI_CPU5_MASK 0x00000020U /**< CPU 5 Mask*/
-#define XSCUGIC_SPI_CPU4_MASK 0x00000010U /**< CPU 4 Mask*/
-#define XSCUGIC_SPI_CPU3_MASK 0x00000008U /**< CPU 3 Mask*/
-#define XSCUGIC_SPI_CPU2_MASK 0x00000003U /**< CPU 2 Mask*/
-#define XSCUGIC_SPI_CPU1_MASK 0x00000002U /**< CPU 1 Mask*/
-#define XSCUGIC_SPI_CPU0_MASK 0x00000001U /**< CPU 0 Mask*/
-/* @} */
-
-/** @name Interrupt Configuration Register 0xC00-0xCFC
- * The interrupt configuration registers program an SFI to be active HIGH level
- * sensitive or rising edge sensitive.
- * Each bit pair describes the configuration for an INT_ID.
- * SFI Read Only b10 always
- * PPI Read Only depending on how the PPIs are configured.
- * b01 Active HIGH level sensitive
- * b11 Rising edge sensitive
- * SPI LSB is read only.
- * b01 Active HIGH level sensitive
- * b11 Rising edge sensitive/
- * There are registers for each of the CPU interfaces at offset 0xC00 through
- * 0xC04. With up to 8 registers aliased to each address.
- * A register set for the SPI interrupts is available to all CPU interfaces.
- * There are up to 255 of these registers staring at location 0xC08.
- * @{
- */
-#define XSCUGIC_INT_CFG_MASK 0x00000003U /**< */
-/* @} */
-
-/** @name PPI Status Register
- * Enables an external AMBA master to access the status of the PPI inputs.
- * A CPU can only read the status of its local PPI signals and cannot read the
- * status for other CPUs.
- * This register is aliased for each CPU interface.
- * @{
- */
-#define XSCUGIC_PPI_C15_MASK 0x00008000U /**< PPI Status */
-#define XSCUGIC_PPI_C14_MASK 0x00004000U /**< PPI Status */
-#define XSCUGIC_PPI_C13_MASK 0x00002000U /**< PPI Status */
-#define XSCUGIC_PPI_C12_MASK 0x00001000U /**< PPI Status */
-#define XSCUGIC_PPI_C11_MASK 0x00000800U /**< PPI Status */
-#define XSCUGIC_PPI_C10_MASK 0x00000400U /**< PPI Status */
-#define XSCUGIC_PPI_C09_MASK 0x00000200U /**< PPI Status */
-#define XSCUGIC_PPI_C08_MASK 0x00000100U /**< PPI Status */
-#define XSCUGIC_PPI_C07_MASK 0x00000080U /**< PPI Status */
-#define XSCUGIC_PPI_C06_MASK 0x00000040U /**< PPI Status */
-#define XSCUGIC_PPI_C05_MASK 0x00000020U /**< PPI Status */
-#define XSCUGIC_PPI_C04_MASK 0x00000010U /**< PPI Status */
-#define XSCUGIC_PPI_C03_MASK 0x00000008U /**< PPI Status */
-#define XSCUGIC_PPI_C02_MASK 0x00000004U /**< PPI Status */
-#define XSCUGIC_PPI_C01_MASK 0x00000002U /**< PPI Status */
-#define XSCUGIC_PPI_C00_MASK 0x00000001U /**< PPI Status */
-/* @} */
-
-/** @name SPI Status Register 0xd04-0xd7C
- * Enables an external AMBA master to access the status of the SPI inputs.
- * There are up to 63 registers if the maximum number of SPI inputs are
- * configured.
- * @{
- */
-#define XSCUGIC_SPI_N_MASK 0x00000001U /**< Each bit corresponds to an SPI
- input */
-/* @} */
-
-/** @name AHB Configuration Register
- * Provides the status of the CFGBIGEND input signal and allows the endianess
- * of the GIC to be set.
- * @{
- */
-#define XSCUGIC_AHB_END_MASK 0x00000004U /**< 0-GIC uses little Endian,
- 1-GIC uses Big Endian */
-#define XSCUGIC_AHB_ENDOVR_MASK 0x00000002U /**< 0-Uses CFGBIGEND control,
- 1-use the AHB_END bit */
-#define XSCUGIC_AHB_TIE_OFF_MASK 0x00000001U /**< State of CFGBIGEND */
-
-/* @} */
-
-/** @name Software Triggered Interrupt Register
- * Controls issueing of software interrupts.
- * @{
- */
-#define XSCUGIC_SFI_SELFTRIG_MASK 0x02010000U
-#define XSCUGIC_SFI_TRIG_TRGFILT_MASK 0x03000000U /**< Target List filter
- b00-Use the target List
- b01-All CPUs except requester
- b10-To Requester
- b11-reserved */
-#define XSCUGIC_SFI_TRIG_CPU_MASK 0x00FF0000U /**< CPU Target list */
-#define XSCUGIC_SFI_TRIG_SATT_MASK 0x00008000U /**< 0= Use a secure interrupt */
-#define XSCUGIC_SFI_TRIG_INTID_MASK 0x0000000FU /**< Set to the INTID
- signaled to the CPU*/
-/* @} */
-
-/** @name CPU Interface Register Map
- *
- * Define the offsets from the base address for all CPU registers of the
- * interrupt controller, some registers may be reserved in the hardware device.
- * @{
- */
-#define XSCUGIC_CONTROL_OFFSET 0x00000000U /**< CPU Interface Control
- Register */
-#define XSCUGIC_CPU_PRIOR_OFFSET 0x00000004U /**< Priority Mask Reg */
-#define XSCUGIC_BIN_PT_OFFSET 0x00000008U /**< Binary Point Register */
-#define XSCUGIC_INT_ACK_OFFSET 0x0000000CU /**< Interrupt ACK Reg */
-#define XSCUGIC_EOI_OFFSET 0x00000010U /**< End of Interrupt Reg */
-#define XSCUGIC_RUN_PRIOR_OFFSET 0x00000014U /**< Running Priority Reg */
-#define XSCUGIC_HI_PEND_OFFSET 0x00000018U /**< Highest Pending Interrupt
- Register */
-#define XSCUGIC_ALIAS_BIN_PT_OFFSET 0x0000001CU /**< Aliased non-Secure
- Binary Point Register */
-
-/**< 0x00000020 to 0x00000FBC are reserved and should not be read or written
- * to. */
-/* @} */
-
-
-/** @name Control Register
- * CPU Interface Control register definitions
- * All bits are defined here although some are not available in the non-secure
- * mode.
- * @{
- */
-#define XSCUGIC_CNTR_SBPR_MASK 0x00000010U /**< Secure Binary Pointer,
- 0=separate registers,
- 1=both use bin_pt_s */
-#define XSCUGIC_CNTR_FIQEN_MASK 0x00000008U /**< Use nFIQ_C for secure
- interrupts,
- 0= use IRQ for both,
- 1=Use FIQ for secure, IRQ for non*/
-#define XSCUGIC_CNTR_ACKCTL_MASK 0x00000004U /**< Ack control for secure or non secure */
-#define XSCUGIC_CNTR_EN_NS_MASK 0x00000002U /**< Non Secure enable */
-#define XSCUGIC_CNTR_EN_S_MASK 0x00000001U /**< Secure enable, 0=Disabled, 1=Enabled */
-/* @} */
-
-/** @name Priority Mask Register
- * Priority Mask register definitions
- * The CPU interface does not send interrupt if the level of the interrupt is
- * lower than the level of the register.
- * @{
- */
-/*#define XSCUGIC_PRIORITY_MASK 0x000000FFU*/ /**< All interrupts */
-/* @} */
-
-/** @name Binary Point Register
- * Binary Point register definitions
- * @{
- */
-
-#define XSCUGIC_BIN_PT_MASK 0x00000007U /**< Binary point mask value
- Value Secure Non-secure
- b000 0xFE 0xFF
- b001 0xFC 0xFE
- b010 0xF8 0xFC
- b011 0xF0 0xF8
- b100 0xE0 0xF0
- b101 0xC0 0xE0
- b110 0x80 0xC0
- b111 0x00 0x80
- */
-/*@}*/
-
-/** @name Interrupt Acknowledge Register
- * Interrupt Acknowledge register definitions
- * Identifies the current Pending interrupt, and the CPU ID for software
- * interrupts.
- */
-#define XSCUGIC_ACK_INTID_MASK 0x000003FFU /**< Interrupt ID */
-#define XSCUGIC_CPUID_MASK 0x00000C00U /**< CPU ID */
-/* @} */
-
-/** @name End of Interrupt Register
- * End of Interrupt register definitions
- * Allows the CPU to signal the GIC when it completes an interrupt service
- * routine.
- */
-#define XSCUGIC_EOI_INTID_MASK 0x000003FFU /**< Interrupt ID */
-
-/* @} */
-
-/** @name Running Priority Register
- * Running Priority register definitions
- * Identifies the interrupt priority level of the highest priority active
- * interrupt.
- */
-#define XSCUGIC_RUN_PRIORITY_MASK 0x000000FFU /**< Interrupt Priority */
-/* @} */
-
-/*
- * Highest Pending Interrupt register definitions
- * Identifies the interrupt priority of the highest priority pending interupt
- */
-#define XSCUGIC_PEND_INTID_MASK 0x000003FFU /**< Pending Interrupt ID */
-/*#define XSCUGIC_CPUID_MASK 0x00000C00U */ /**< CPU ID */
-/* @} */
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/****************************************************************************/
-/**
-*
-* Read the Interrupt Configuration Register offset for an interrupt id.
-*
-* @param InterruptID is the interrupt number.
-*
-* @return The 32-bit value of the offset
-*
-* @note
-*
-*****************************************************************************/
-#define XSCUGIC_INT_CFG_OFFSET_CALC(InterruptID) \
- ((u32)XSCUGIC_INT_CFG_OFFSET + (((InterruptID)/16U) * 4U))
-
-/****************************************************************************/
-/**
-*
-* Read the Interrupt Priority Register offset for an interrupt id.
-*
-* @param InterruptID is the interrupt number.
-*
-* @return The 32-bit value of the offset
-*
-* @note
-*
-*****************************************************************************/
-#define XSCUGIC_PRIORITY_OFFSET_CALC(InterruptID) \
- ((u32)XSCUGIC_PRIORITY_OFFSET + (((InterruptID)/4U) * 4U))
-
-/****************************************************************************/
-/**
-*
-* Read the SPI Target Register offset for an interrupt id.
-*
-* @param InterruptID is the interrupt number.
-*
-* @return The 32-bit value of the offset
-*
-* @note
-*
-*****************************************************************************/
-#define XSCUGIC_SPI_TARGET_OFFSET_CALC(InterruptID) \
- ((u32)XSCUGIC_SPI_TARGET_OFFSET + (((InterruptID)/4U) * 4U))
-
-/****************************************************************************/
-/**
-*
-* Read the Interrupt Clear-Enable Register offset for an interrupt ID
-*
-* @param Register is the register offset for the clear/enable bank.
-* @param InterruptID is the interrupt number.
-*
-* @return The 32-bit value of the offset
-*
-* @note
-*
-*****************************************************************************/
-#define XSCUGIC_EN_DIS_OFFSET_CALC(Register, InterruptID) \
- ((Register) + (((InterruptID)/32U) * 4U))
-
-/****************************************************************************/
-/**
-*
-* Read the given Intc register.
-*
-* @param BaseAddress is the base address of the device.
-* @param RegOffset is the register offset to be read
-*
-* @return The 32-bit value of the register
-*
-* @note
-* C-style signature:
-* u32 XScuGic_ReadReg(u32 BaseAddress, u32 RegOffset)
-*
-*****************************************************************************/
-#define XScuGic_ReadReg(BaseAddress, RegOffset) \
- (Xil_In32((BaseAddress) + (RegOffset)))
-
-
-/****************************************************************************/
-/**
-*
-* Write the given Intc register.
-*
-* @param BaseAddress is the base address of the device.
-* @param RegOffset is the register offset to be written
-* @param Data is the 32-bit value to write to the register
-*
-* @return None.
-*
-* @note
-* C-style signature:
-* void XScuGic_WriteReg(u32 BaseAddress, u32 RegOffset, u32 Data)
-*
-*****************************************************************************/
-#define XScuGic_WriteReg(BaseAddress, RegOffset, Data) \
- (Xil_Out32(((BaseAddress) + (RegOffset)), ((u32)(Data))))
-
-
-/****************************************************************************/
-/**
-*
-* Enable specific interrupt(s) in the interrupt controller.
-*
-* @param DistBaseAddress is the Distributor Register base address of the
-* device
-* @param Int_Id is the ID of the interrupt source and should be in the
-* range of 0 to XSCUGIC_MAX_NUM_INTR_INPUTS - 1
-*
-* @return None.
-*
-* @note C-style signature:
-* void XScuGic_EnableIntr(u32 DistBaseAddress, u32 Int_Id)
-*
-*****************************************************************************/
-#define XScuGic_EnableIntr(DistBaseAddress, Int_Id) \
- XScuGic_WriteReg((DistBaseAddress), \
- XSCUGIC_ENABLE_SET_OFFSET + (((Int_Id) / 32U) * 4U), \
- (0x00000001U << ((Int_Id) % 32U)))
-
-/****************************************************************************/
-/**
-*
-* Disable specific interrupt(s) in the interrupt controller.
-*
-* @param DistBaseAddress is the Distributor Register base address of the
-* device
-* @param Int_Id is the ID of the interrupt source and should be in the
-* range of 0 to XSCUGIC_MAX_NUM_INTR_INPUTS - 1
-*
-*
-* @return None.
-*
-* @note C-style signature:
-* void XScuGic_DisableIntr(u32 DistBaseAddress, u32 Int_Id)
-*
-*****************************************************************************/
-#define XScuGic_DisableIntr(DistBaseAddress, Int_Id) \
- XScuGic_WriteReg((DistBaseAddress), \
- XSCUGIC_DISABLE_OFFSET + (((Int_Id) / 32U) * 4U), \
- (0x00000001U << ((Int_Id) % 32U)))
-
-
-/************************** Function Prototypes ******************************/
-
-void XScuGic_DeviceInterruptHandler(void *DeviceId);
-s32 XScuGic_DeviceInitialize(u32 DeviceId);
-void XScuGic_RegisterHandler(u32 BaseAddress, s32 InterruptID,
- Xil_InterruptHandler Handler, void *CallBackRef);
-void XScuGic_SetPriTrigTypeByDistAddr(u32 DistBaseAddress, u32 Int_Id,
- u8 Priority, u8 Trigger);
-void XScuGic_GetPriTrigTypeByDistAddr(u32 DistBaseAddress, u32 Int_Id,
- u8 *Priority, u8 *Trigger);
-/************************** Variable Definitions *****************************/
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/Makefile
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/Makefile
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/Makefile
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic.c
similarity index 91%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic.c
index 64954b9a0..1806274c7 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic.c
@@ -33,6 +33,8 @@
/**
*
* @file xscugic.c
+* @addtogroup scugic_v3_1
+* @{
*
* Contains required functions for the XScuGic driver for the Interrupt
* Controller. See xscugic.h for a detailed description of the driver.
@@ -70,6 +72,19 @@
* in function XScuGic_CfgInitialize is removed as it was
* a bug.
* 3.00 kvn 02/13/14 Modified code for MISRA-C:2012 compliance.
+* 3.01 pkp 06/19/15 Added XScuGic_InterruptMaptoCpu API for an interrupt
+* target CPU mapping
+* 3.02 pkp 11/09/15 Modified DistributorInit function for AMP case to add
+* the current cpu to interrupt processor targets registers
+* 3.2 asa 02/29/16 Modified DistributorInit function for Zynq AMP case. The
+* distributor is left uninitialized for Zynq AMP. It is assumed
+* that the distributor will be initialized by Linux master. However
+* for CortexR5 case, the earlier code is left unchanged where the
+* the interrupt processor target registers in the distributor is
+* initialized with the corresponding CPU ID on which the application
+* built over the scugic driver runs.
+* These changes fix CR#937243.
+*
*
*
*
@@ -120,14 +135,27 @@ static void DistributorInit(XScuGic *InstancePtr, u32 CpuID)
#if USE_AMP==1
#warning "Building GIC for AMP"
+#ifdef ARMR5
+ u32 RegValue;
/*
- * The distrubutor should not be initialized by FreeRTOS in the case of
- * AMP -- it is assumed that Linux is the master of this device in that
- * case.
+ * The overall distributor should not be initialized in AMP case where
+ * another CPU is taking care of it.
*/
+ LocalCpuID |= LocalCpuID << 8U;
+ LocalCpuID |= LocalCpuID << 16U;
+ for (Int_Id = 32U; Int_Id
*
@@ -292,7 +303,7 @@ void XScuGic_GetPriorityTriggerType(XScuGic *InstancePtr, u32 Int_Id,
u8 *Priority, u8 *Trigger);
void XScuGic_SetPriorityTriggerType(XScuGic *InstancePtr, u32 Int_Id,
u8 Priority, u8 Trigger);
-
+void XScuGic_InterruptMaptoCpu(XScuGic *InstancePtr, u8 Cpu_Id, u32 Int_Id);
/*
* Initialization functions in xscugic_sinit.c
*/
@@ -313,3 +324,4 @@ s32 XScuGic_SelfTest(XScuGic *InstancePtr);
#endif
#endif /* end of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_g.c
similarity index 90%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_g.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_g.c
index 830f94ebf..2acea2b51 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_g.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_g.c
@@ -1,56 +1,56 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Driver configuration
-*
-*******************************************************************/
-
-#include "xparameters.h"
-#include "xscugic.h"
-
-/*
-* The configuration table for devices
-*/
-
-XScuGic_Config XScuGic_ConfigTable[] =
-{
- {
- XPAR_PSU_ACPU_GIC_DEVICE_ID,
- XPAR_PSU_ACPU_GIC_BASEADDR,
- XPAR_PSU_ACPU_GIC_DIST_BASEADDR
- }
-};
-
-
+
+/*******************************************************************
+*
+* CAUTION: This file is automatically generated by HSI.
+* Version:
+* DO NOT EDIT.
+*
+* Copyright (C) 2010-2016 Xilinx, Inc. All Rights Reserved.*
+*Permission is hereby granted, free of charge, to any person obtaining a copy
+*of this software and associated documentation files (the Software), to deal
+*in the Software without restriction, including without limitation the rights
+*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*copies of the Software, and to permit persons to whom the Software is
+*furnished to do so, subject to the following conditions:
+*
+*The above copyright notice and this permission notice shall be included in
+*all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+*(a) running on a Xilinx device, or
+*(b) that interact with a Xilinx device through a bus or interconnect.
+*
+*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+*XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+*Except as contained in this notice, the name of the Xilinx shall not be used
+*in advertising or otherwise to promote the sale, use or other dealings in
+*this Software without prior written authorization from Xilinx.
+*
+
+*
+* Description: Driver configuration
+*
+*******************************************************************/
+
+#include "xparameters.h"
+#include "xscugic.h"
+
+/*
+* The configuration table for devices
+*/
+
+XScuGic_Config XScuGic_ConfigTable[] =
+{
+ {
+ XPAR_PSU_ACPU_GIC_DEVICE_ID,
+ XPAR_PSU_ACPU_GIC_BASEADDR,
+ XPAR_PSU_ACPU_GIC_DIST_BASEADDR
+ }
+};
+
+
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_hw.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_hw.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_hw.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_hw.c
index 866aadf64..626779720 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_hw.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_hw.c
@@ -33,6 +33,8 @@
/**
*
* @file xscugic_hw.c
+* @addtogroup scugic_v3_1
+* @{
*
* This file contains low-level driver functions that can be used to access the
* device. The user should refer to the hardware device specification for more
@@ -565,3 +567,4 @@ void XScuGic_GetPriTrigTypeByDistAddr(u32 DistBaseAddress, u32 Int_Id,
*Trigger = (u8)(RegValue & XSCUGIC_INT_CFG_MASK);
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xscugic_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_hw.h
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xscugic_hw.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_hw.h
index 580ce6ba9..5eaa633e3 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xscugic_hw.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_hw.h
@@ -33,6 +33,8 @@
/**
*
* @file xscugic_hw.h
+* @addtogroup scugic_v3_1
+* @{
*
* This header file contains identifiers and HW access functions (or
* macros) that can be used to access the device. The user should refer to the
@@ -68,6 +70,8 @@
* 3.0 pkp 12/09/14 changed XSCUGIC_MAX_NUM_INTR_INPUTS for
* Zynq Ultrascale Mp
* 3.0 kvn 02/13/14 Modified code for MISRA-C:2012 compliance.
+* 3.2 pkp 11/09/15 Corrected the interrupt processsor target mask value
+* for CPU interface 2 i.e. XSCUGIC_SPI_CPU2_MASK
*
*
******************************************************************************/
@@ -282,7 +286,7 @@ extern "C" {
#define XSCUGIC_SPI_CPU5_MASK 0x00000020U /**< CPU 5 Mask*/
#define XSCUGIC_SPI_CPU4_MASK 0x00000010U /**< CPU 4 Mask*/
#define XSCUGIC_SPI_CPU3_MASK 0x00000008U /**< CPU 3 Mask*/
-#define XSCUGIC_SPI_CPU2_MASK 0x00000003U /**< CPU 2 Mask*/
+#define XSCUGIC_SPI_CPU2_MASK 0x00000004U /**< CPU 2 Mask*/
#define XSCUGIC_SPI_CPU1_MASK 0x00000002U /**< CPU 1 Mask*/
#define XSCUGIC_SPI_CPU0_MASK 0x00000001U /**< CPU 0 Mask*/
/* @} */
@@ -635,3 +639,4 @@ void XScuGic_GetPriTrigTypeByDistAddr(u32 DistBaseAddress, u32 Int_Id,
#endif
#endif /* end of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_intr.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_intr.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_intr.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_intr.c
index 3efd84022..d05a51c5e 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_intr.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_intr.c
@@ -33,6 +33,8 @@
/**
*
* @file xscugic_intr.c
+* @addtogroup scugic_v3_1
+* @{
*
* This file contains the interrupt processing for the driver for the Xilinx
* Interrupt Controller. The interrupt processing is partitioned separately such
@@ -168,3 +170,4 @@ void XScuGic_InterruptHandler(XScuGic *InstancePtr)
* Return from the interrupt. Change security domains could happen here.
*/
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_selftest.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_selftest.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_selftest.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_selftest.c
index c6df73752..47620d644 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_selftest.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_selftest.c
@@ -33,6 +33,8 @@
/**
*
* @file xscugic_selftest.c
+* @addtogroup scugic_v3_1
+* @{
*
* Contains diagnostic self-test functions for the XScuGic driver.
*
@@ -110,3 +112,4 @@ s32 XScuGic_SelfTest(XScuGic *InstancePtr)
}
return Status;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_sinit.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_sinit.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_sinit.c
index c90dabdfb..d30390ab8 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_0/src/xscugic_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/scugic_v3_2/src/xscugic_sinit.c
@@ -33,6 +33,8 @@
/**
*
* @file xscugic_sinit.c
+* @addtogroup scugic_v3_1
+* @{
*
* Contains static init functions for the XScuGic driver for the Interrupt
* Controller. See xscugic.h for a detailed description of the driver.
@@ -98,3 +100,4 @@ XScuGic_Config *XScuGic_LookupConfig(u16 DeviceId)
return (XScuGic_Config *)CfgPtr;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps.h
deleted file mode 100644
index 64532a0d3..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps.h
+++ /dev/null
@@ -1,208 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2013 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xsdps.h
-*
-* This file contains the implementation of XSdPs driver.
-* This driver is used initialize read from and write to the SD card.
-* Features such as switching bus width to 4-bit and switching to high speed,
-* changing clock frequency, block size etc. are supported.
-* SD 2.0 uses 1/4 bus width and speeds of 25/50KHz. Initialization, however
-* is done using 1-bit bus width and 400KHz clock frequency.
-* SD commands are classified as broadcast and addressed. Commands can be
-* those with response only (using only command line) or
-* response + data (using command and data lines).
-* Only one command can be sent at a time. During a data transfer however,
-* when dsta lines are in use, certain commands (which use only the command
-* line) can be sent, most often to obtain status.
-* This driver does not support multi card slots at present.
-*
-* Intialization:
-* This includes initialization on the host controller side to select
-* clock frequency, bus power and default transfer related parameters.
-* The default voltage is 3.3V.
-* On the SD card side, the initialization and identification state diagram is
-* implemented. This resets the card, gives it a unique address/ID and
-* identifies key card related specifications.
-*
-* Data transfer:
-* The SD card is put in tranfer state to read from or write to it.
-* The default block size is 512 bytes and if supported,
-* default bus width is 4-bit and bus speed is High speed.
-* The read and write functions are implemented in polled mode using ADMA2.
-*
-* At any point, when key parameters such as block size or
-* clock/speed or bus width are modified, this driver takes care of
-* maintaining the same selection on host and card.
-* All error bits in host controller are monitored by the driver and in the
-* event one of them is set, driver will clear the interrupt status and
-* communicate failure to the upper layer.
-*
-* File system use:
-* This driver can be used with xilffs library to read and write files to SD.
-* (Please refer to procedure in diskio.c). The file system read/write example
-* in polled mode can used for reference.
-*
-* There is no example for using SD driver without file system at present.
-* However, the driver can be used without the file system. The glue layer
-* in filesytem can be used as reference for the same. The block count
-* passed to the read/write function in one call is limited by the ADMA2
-* descriptor table and hence care will have to be taken to call read/write
-* API's in a loop for large file sizes.
-*
-* Interrupt mode is not supported because it offers no improvement when used
-* with file system.
-*
-* eMMC support:
-* SD driver supports SD and eMMC based on the "enable MMC" parameter in SDK.
-* The features of eMMC supported by the driver will depend on those supported
-* by the host controller. The current driver supports read/write on eMMC card
-* using 4-bit and high speed mode currently.
-*
-* Features not supported include - card write protect, password setting,
-* lock/unlock, interrupts, SDMA mode, programmed I/O mode and
-* 64-bit addressed ADMA2, erase/pre-erase commands.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- --- -------- -----------------------------------------------
-* 1.00a hk/sg 10/17/13 Initial release
-* 2.0 hk 03/07/14 Version number revised.
-* 2.1 hk 04/18/14 Increase sleep for eMMC switch command.
-* Add sleep for microblaze designs. CR# 781117.
-* 2.2 hk 07/28/14 Make changes to enable use of data cache.
-* 2.3 sk 09/23/14 Send command for relative card address
-* when re-initialization is done.CR# 819614.
-* Use XSdPs_Change_ClkFreq API whenever changing
-* clock.CR# 816586.
-* 2.4 sk 12/04/14 Added support for micro SD without
-* WP/CD. CR# 810655.
-* Checked for DAT Inhibit mask instead of CMD
-* Inhibit mask in Cmd Transfer API.
-* Added Support for SD Card v1.0
-*
-*
-*
-******************************************************************************/
-
-
-#ifndef SDPS_H_
-#define SDPS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "xstatus.h"
-#include "xsdps_hw.h"
-#include
-
-/************************** Constant Definitions *****************************/
-
-#define XSDPS_CLK_400_KHZ 400000 /**< 400 KHZ */
-#define XSDPS_CLK_50_MHZ 50000000 /**< 50 MHZ */
-#define CT_MMC 0x1 /**< MMC Card */
-#define CT_SD1 0x2 /**< SD ver 1 */
-#define CT_SD2 0x3 /**< SD ver 2 */
-/**************************** Type Definitions *******************************/
-/**
- * This typedef contains configuration information for the device.
- */
-typedef struct {
- u16 DeviceId; /**< Unique ID of device */
- u32 BaseAddress; /**< Base address of the device */
- u32 InputClockHz; /**< Input clock frequency */
- u32 CardDetect; /**< Card Detect */
- u32 WriteProtect; /**< Write Protect */
-} XSdPs_Config;
-
-/*
- * ADMA2 descriptor table
- */
-typedef struct {
- u16 Attribute; /**< Attributes of descriptor */
- u16 Length; /**< Length of current dma transfer */
- u32 Address; /**< Address of current dma transfer */
-} XSdPs_Adma2Descriptor;
-
-/**
- * The XSdPs driver instance data. The user is required to allocate a
- * variable of this type for every SD device in the system. A pointer
- * to a variable of this type is then passed to the driver API functions.
- */
-typedef struct {
- XSdPs_Config Config; /**< Configuration structure */
- u32 IsReady; /**< Device is initialized and ready */
- u32 Host_Caps; /**< Capabilities of host controller */
- u32 HCS; /**< High capacity support in card */
- u32 CardID[4]; /**< Card ID */
- u32 RelCardAddr; /**< Relative Card Address */
- u32 CardType; /**< Card Type(version) */
- /**< ADMA Descriptors */
-#ifdef __ICCARM__
-#pragma data_alignment = 32
- XSdPs_Adma2Descriptor Adma2_DescrTbl[32];
-#pragma data_alignment = 4
-#else
- XSdPs_Adma2Descriptor Adma2_DescrTbl[32] __attribute__ ((aligned(32)));
-#endif
-} XSdPs;
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/************************** Function Prototypes ******************************/
-XSdPs_Config *XSdPs_LookupConfig(u16 DeviceId);
-int XSdPs_CfgInitialize(XSdPs *InstancePtr, XSdPs_Config *ConfigPtr,
- u32 EffectiveAddr);
-int XSdPs_SdCardInitialize(XSdPs *InstancePtr);
-int XSdPs_ReadPolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, u8 *Buff);
-int XSdPs_WritePolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, const u8 *Buff);
-int XSdPs_SetBlkSize(XSdPs *InstancePtr, u16 BlkSize);
-int XSdPs_Select_Card (XSdPs *InstancePtr);
-int XSdPs_Change_ClkFreq(XSdPs *InstancePtr, u32 SelFreq);
-int XSdPs_Change_BusWidth(XSdPs *InstancePtr);
-int XSdPs_Change_BusSpeed(XSdPs *InstancePtr);
-int XSdPs_Get_BusWidth(XSdPs *InstancePtr, u8 *SCR);
-int XSdPs_Get_BusSpeed(XSdPs *InstancePtr, u8 *ReadBuff);
-int XSdPs_Pullup(XSdPs *InstancePtr);
-int XSdPs_MmcCardInitialize(XSdPs *InstancePtr);
-int XSdPs_Get_Mmc_ExtCsd(XSdPs *InstancePtr, u8 *ReadBuff);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SD_H_ */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps_hw.h
deleted file mode 100644
index a9670d0fc..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps_hw.h
+++ /dev/null
@@ -1,605 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2013 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xsdps_hw.h
-*
-* This header file contains the identifiers and basic HW access driver
-* functions (or macros) that can be used to access the device. Other driver
-* functions are defined in xsdps.h.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- --- -------- -----------------------------------------------
-* 1.00a hk/sg 10/17/13 Initial release
-*
-*
-*
-******************************************************************************/
-
-#ifndef SD_HW_H_
-#define SD_HW_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xil_io.h"
-#include "xparameters.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Register Map
- *
- * Register offsets from the base address of an SD device.
- * @{
- */
-
-#define XSDPS_SDMA_SYS_ADDR_OFFSET 0x00 /**< SDMA System Address
- Register */
-#define XSDPS_BLK_SIZE_OFFSET 0x04 /**< Block Size Register */
-#define XSDPS_BLK_CNT_OFFSET 0x06 /**< Block Count Register */
-#define XSDPS_ARGMT_OFFSET 0x08 /**< Argument Register */
-#define XSDPS_XFER_MODE_OFFSET 0x0C /**< Transfer Mode Register */
-#define XSDPS_CMD_OFFSET 0x0E /**< Command Register */
-#define XSDPS_RESP0_OFFSET 0x10 /**< Response0 Register */
-#define XSDPS_RESP1_OFFSET 0x14 /**< Response1 Register */
-#define XSDPS_RESP2_OFFSET 0x18 /**< Response2 Register */
-#define XSDPS_RESP3_OFFSET 0x1C /**< Response3 Register */
-#define XSDPS_BUF_DAT_PORT_OFFSET 0x20 /**< Buffer Data Port */
-#define XSDPS_PRES_STATE_OFFSET 0x24 /**< Present State */
-#define XSDPS_HOST_CTRL1_OFFSET 0x28 /**< Host Control 1 */
-#define XSDPS_POWER_CTRL_OFFSET 0x29 /**< Power Control */
-#define XSDPS_BLK_GAP_CTRL_OFFSET 0x2A /**< Block Gap Control */
-#define XSDPS_WAKE_UP_CTRL_OFFSET 0x2B /**< Wake Up Control */
-#define XSDPS_CLK_CTRL_OFFSET 0x2C /**< Clock Control */
-#define XSDPS_TIMEOUT_CTRL_OFFSET 0x2E /**< Timeout Control */
-#define XSDPS_SW_RST_OFFSET 0x2F /**< Software Reset */
-#define XSDPS_NORM_INTR_STS_OFFSET 0x30 /**< Normal Interrupt
- Status Register */
-#define XSDPS_ERR_INTR_STS_OFFSET 0x32 /**< Error Interrupt
- Status Register */
-#define XSDPS_NORM_INTR_STS_EN_OFFSET 0x34 /**< Normal Interrupt
- Status Enable Register */
-#define XSDPS_ERR_INTR_STS_EN_OFFSET 0x36 /**< Error Interrupt
- Status Enable Register */
-#define XSDPS_NORM_INTR_SIG_EN_OFFSET 0x38 /**< Normal Interrupt
- Signal Enable Register */
-#define XSDPS_ERR_INTR_SIG_EN_OFFSET 0x3A /**< Error Interrupt
- Signal Enable Register */
-
-#define XSDPS_AUTO_CMD12_ERR_STS_OFFSET 0x3C /**< Auto CMD12 Error Status
- Register */
-#define XSDPS_HOST_CTRL2_OFFSET 0x3E /**< Host Control2 Register */
-#define XSDPS_CAPS_OFFSET 0x40 /**< Capabilities Register */
-#define XSDPS_CAPS_EXT_OFFSET 0x44 /**< Capabilities Extended */
-#define XSDPS_MAX_CURR_CAPS_OFFSET 0x48 /**< Maximum Current
- Capabilities Register */
-#define XSDPS_MAX_CURR_CAPS_EXT_OFFSET 0x4C /**< Maximum Current
- Capabilities Ext Register */
-#define XSDPS_FE_ERR_INT_STS_OFFSET 0x52 /**< Force Event for
- Error Interrupt Status */
-#define XSDPS_FE_AUTO_CMD12_EIS_OFFSET 0x50 /**< Auto CM12 Error Interrupt
- Status Register */
-#define XSDPS_ADMA_ERR_STS_OFFSET 0x54 /**< ADMA Error Status
- Register */
-#define XSDPS_ADMA_SAR_OFFSET 0x58 /**< ADMA System Address
- Register */
-#define XSDPS_ADMA_SAR_EXT_OFFSET 0x5C /**< ADMA System Address
- Extended Register */
-#define XSDPS_PRE_VAL_1_OFFSET 0x60 /**< Preset Value Register */
-#define XSDPS_PRE_VAL_2_OFFSET 0x64 /**< Preset Value Register */
-#define XSDPS_PRE_VAL_3_OFFSET 0x68 /**< Preset Value Register */
-#define XSDPS_PRE_VAL_4_OFFSET 0x6C /**< Preset Value Register */
-#define XSDPS_SHARED_BUS_CTRL_OFFSET 0xE0 /**< Shared Bus Control
- Register */
-#define XSDPS_SLOT_INTR_STS_OFFSET 0xFC /**< Slot Interrupt Status
- Register */
-#define XSDPS_HOST_CTRL_VER_OFFSET 0xFE /**< Host Controller Version
- Register */
-
-/* @} */
-
-/** @name Control Register - Host control, Power control,
- * Block Gap control and Wakeup control
- *
- * This register contains bits for various configuration options of
- * the SD host controller. Read/Write apart from the reserved bits.
- * @{
- */
-
-#define XSDPS_HC_LED_MASK 0x00000001 /**< LED Control */
-#define XSDPS_HC_WIDTH_MASK 0x00000002 /**< Bus width */
-#define XSDPS_HC_SPEED_MASK 0x00000004 /**< High Speed */
-#define XSDPS_HC_DMA_MASK 0x00000018 /**< DMA Mode Select */
-#define XSDPS_HC_DMA_SDMA_MASK 0x00000000 /**< SDMA Mode */
-#define XSDPS_HC_DMA_ADMA1_MASK 0x00000008 /**< ADMA1 Mode */
-#define XSDPS_HC_DMA_ADMA2_32_MASK 0x00000010 /**< ADMA2 Mode - 32 bit */
-#define XSDPS_HC_DMA_ADMA2_64_MASK 0x00000018 /**< ADMA2 Mode - 64 bit */
-#define XSDPS_HC_EXT_BUS_WIDTH 0x00000020 /**< Bus width - 8 bit */
-#define XSDPS_HC_CARD_DET_TL_MASK 0x00000040 /**< Card Detect Tst Lvl */
-#define XSDPS_HC_CARD_DET_SD_MASK 0x00000080 /**< Card Detect Sig Det */
-
-#define XSDPS_PC_BUS_PWR_MASK 0x00000001 /**< Bus Power Control */
-#define XSDPS_PC_BUS_VSEL_MASK 0x0000000E /**< Bus Voltage Select */
-#define XSDPS_PC_BUS_VSEL_3V3_MASK 0x0000000E /**< Bus Voltage 3.3V */
-#define XSDPS_PC_BUS_VSEL_3V0_MASK 0x0000000C /**< Bus Voltage 3.0V */
-#define XSDPS_PC_BUS_VSEL_1V8_MASK 0x0000000A /**< Bus Voltage 1.8V */
-
-#define XSDPS_BGC_STP_REQ_MASK 0x00000001 /**< Block Gap Stop Req */
-#define XSDPS_BGC_CNT_REQ_MASK 0x00000002 /**< Block Gap Cont Req */
-#define XSDPS_BGC_RWC_MASK 0x00000004 /**< Block Gap Rd Wait */
-#define XSDPS_BGC_INTR_MASK 0x00000008 /**< Block Gap Intr */
-#define XSDPS_BGC_SPI_MODE_MASK 0x00000010 /**< Block Gap SPI Mode */
-#define XSDPS_BGC_BOOT_EN_MASK 0x00000020 /**< Block Gap Boot Enb */
-#define XSDPS_BGC_ALT_BOOT_EN_MASK 0x00000040 /**< Block Gap Alt BootEn */
-#define XSDPS_BGC_BOOT_ACK_MASK 0x00000080 /**< Block Gap Boot Ack */
-
-#define XSDPS_WC_WUP_ON_INTR_MASK 0x00000001 /**< Wakeup Card Intr */
-#define XSDPS_WC_WUP_ON_INSRT_MASK 0x00000002 /**< Wakeup Card Insert */
-#define XSDPS_WC_WUP_ON_REM_MASK 0x00000004 /**< Wakeup Card Removal */
-
-/* @} */
-
-/** @name Control Register - Clock control, Timeout control & Software reset
- *
- * This register contains bits for configuration options of clock, timeout and
- * software reset.
- * Read/Write except for Inter_Clock_Stable bit (read only) and reserved bits.
- * @{
- */
-
-#define XSDPS_CC_INT_CLK_EN_MASK 0x00000001
-#define XSDPS_CC_INT_CLK_STABLE_MASK 0x00000002
-#define XSDPS_CC_SD_CLK_EN_MASK 0x00000004
-#define XSDPS_CC_SD_CLK_GEN_SEL_MASK 0x00000020
-#define XSDPS_CC_SDCLK_FREQ_SEL_EXT_MASK 0x000000C0
-#define XSDPS_CC_SDCLK_FREQ_SEL_MASK 0x0000FF00
-#define XSDPS_CC_SDCLK_FREQ_D256_MASK 0x00008000
-#define XSDPS_CC_SDCLK_FREQ_D128_MASK 0x00004000
-#define XSDPS_CC_SDCLK_FREQ_D64_MASK 0x00002000
-#define XSDPS_CC_SDCLK_FREQ_D32_MASK 0x00001000
-#define XSDPS_CC_SDCLK_FREQ_D16_MASK 0x00000800
-#define XSDPS_CC_SDCLK_FREQ_D8_MASK 0x00000400
-#define XSDPS_CC_SDCLK_FREQ_D4_MASK 0x00000200
-#define XSDPS_CC_SDCLK_FREQ_D2_MASK 0x00000100
-#define XSDPS_CC_SDCLK_FREQ_BASE_MASK 0x00000000
-
-#define XSDPS_TC_CNTR_VAL_MASK 0x0000000F
-
-#define XSDPS_SWRST_ALL_MASK 0x00000001
-#define XSDPS_SWRST_CMD_LINE_MASK 0x00000002
-#define XSDPS_SWRST_DAT_LINE_MASK 0x00000004
-
-#define XSDPS_CC_MAX_NUM_OF_DIV 9
-#define XSDPS_CC_DIV_SHIFT 8
-
-/* @} */
-
-/** @name SD Interrupt Registers
- *
- * Normal and Error Interrupt Status Register
- * This register shows the normal and error interrupt status.
- * Status enable register affects reads of this register.
- * If Signal enable register is set and the corresponding status bit is set,
- * interrupt is generated.
- * Write to clear except
- * Error_interrupt and Card_Interrupt bits - Read only
- *
- * Normal and Error Interrupt Status Enable Register
- * Setting this register bits enables Interrupt status.
- * Read/Write except Fixed_to_0 bit (Read only)
- *
- * Normal and Error Interrupt Signal Enable Register
- * This register is used to select which interrupt status is
- * indicated to the Host System as the interrupt.
- * Read/Write except Fixed_to_0 bit (Read only)
- *
- * All three registers have same bit definitions
- * @{
- */
-
-#define XSDPS_INTR_CC_MASK 0x00000001 /**< Command Complete */
-#define XSDPS_INTR_TC_MASK 0x00000002 /**< Transfer Complete */
-#define XSDPS_INTR_BGE_MASK 0x00000004 /**< Block Gap Event */
-#define XSDPS_INTR_DMA_MASK 0x00000008 /**< DMA Interrupt */
-#define XSDPS_INTR_BWR_MASK 0x00000010 /**< Buffer Write Ready */
-#define XSDPS_INTR_BRR_MASK 0x00000020 /**< Buffer Read Ready */
-#define XSDPS_INTR_CARD_INSRT_MASK 0x00000040 /**< Card Insert */
-#define XSDPS_INTR_CARD_REM_MASK 0x00000080 /**< Card Remove */
-#define XSDPS_INTR_CARD_MASK 0x00000100 /**< Card Interrupt */
-#define XSDPS_INTR_INT_A_MASK 0x00000200 /**< INT A Interrupt */
-#define XSDPS_INTR_INT_B_MASK 0x00000400 /**< INT B Interrupt */
-#define XSDPS_INTR_INT_C_MASK 0x00000800 /**< INT C Interrupt */
-#define XSDPS_INTR_RE_TUNING_MASK 0x00001000 /**< Re-Tuning Interrupt */
-#define XSDPS_INTR_BOOT_TERM_MASK 0x00002000 /**< Boot Terminate
- Interrupt */
-#define XSDPS_INTR_BOOT_ACK_RECV_MASK 0x00004000 /**< Boot Ack Recv
- Interrupt */
-#define XSDPS_INTR_ERR_MASK 0x00008000 /**< Error Interrupt */
-#define XSDPS_NORM_INTR_ALL_MASK 0x0000FFFF
-
-#define XSDPS_INTR_ERR_CT_MASK 0x00000001 /**< Command Timeout
- Error */
-#define XSDPS_INTR_ERR_CCRC_MASK 0x00000002 /**< Command CRC Error */
-#define XSDPS_INTR_ERR_CEB_MASK 0x00000004 /**< Command End Bit
- Error */
-#define XSDPS_INTR_ERR_CI_MASK 0x00000008 /**< Command Index Error */
-#define XSDPS_INTR_ERR_DT_MASK 0x00000010 /**< Data Timeout Error */
-#define XSDPS_INTR_ERR_DCRC_MASK 0x00000020 /**< Data CRC Error */
-#define XSDPS_INTR_ERR_DEB_MASK 0x00000040 /**< Data End Bit Error */
-#define XSDPS_INTR_ERR_I_LMT_MASK 0x00000080 /**< Current Limit Error */
-#define XSDPS_INTR_ERR_AUTO_CMD12_MASK 0x00000100 /**< Auto CMD12 Error */
-#define XSDPS_INTR_ERR_ADMA_MASK 0x00000200 /**< ADMA Error */
-#define XSDPS_INTR_ERR_TR_MASK 0x00001000 /**< Tuning Error */
-#define XSDPS_INTR_VEND_SPF_ERR_MASK 0x0000E000 /**< Vendor Specific
- Error */
-#define XSDPS_ERROR_INTR_ALL_MASK 0x0000F3FF /**< Mask for error bits */
-/* @} */
-
-/** @name Block Size and Block Count Register
- *
- * This register contains the block count for current transfer,
- * block size and SDMA buffer size.
- * Read/Write except for reserved bits.
- * @{
- */
-
-#define XSDPS_BLK_SIZE_MASK 0x00000FFF /**< Transfer Block Size */
-#define XSDPS_SDMA_BUFF_SIZE_MASK 0x00007000 /**< Host SDMA Buffer Size */
-#define XSDPS_BLK_CNT_MASK 0x0000FFFF /**< Block Count for
- Current Transfer */
-
-/* @} */
-
-/** @name Transfer Mode and Command Register
- *
- * The Transfer Mode register is used to control the data transfers and
- * Command register is used for command generation
- * Read/Write except for reserved bits.
- * @{
- */
-
-#define XSDPS_TM_DMA_EN_MASK 0x00000001 /**< DMA Enable */
-#define XSDPS_TM_BLK_CNT_EN_MASK 0x00000002 /**< Block Count Enable */
-#define XSDPS_TM_AUTO_CMD12_EN_MASK 0x00000004 /**< Auto CMD12 Enable */
-#define XSDPS_TM_DAT_DIR_SEL_MASK 0x00000010 /**< Data Transfer
- Direction Select */
-#define XSDPS_TM_MUL_SIN_BLK_SEL_MASK 0x00000020 /**< Multi/Single
- Block Select */
-
-#define XSDPS_CMD_RESP_SEL_MASK 0x00000003 /**< Response Type
- Select */
-#define XSDPS_CMD_RESP_NONE_MASK 0x00000000 /**< No Response */
-#define XSDPS_CMD_RESP_L136_MASK 0x00000001 /**< Response length 138 */
-#define XSDPS_CMD_RESP_L48_MASK 0x00000002 /**< Response length 48 */
-#define XSDPS_CMD_RESP_L48_BSY_CHK_MASK 0x00000003 /**< Response length 48 &
- check busy after
- response */
-#define XSDPS_CMD_CRC_CHK_EN_MASK 0x00000008 /**< Command CRC Check
- Enable */
-#define XSDPS_CMD_INX_CHK_EN_MASK 0x00000010 /**< Command Index Check
- Enable */
-#define XSDPS_DAT_PRESENT_SEL_MASK 0x00000020 /**< Data Present Select */
-#define XSDPS_CMD_TYPE_MASK 0x000000C0 /**< Command Type */
-#define XSDPS_CMD_TYPE_NORM_MASK 0x00000000 /**< CMD Type - Normal */
-#define XSDPS_CMD_TYPE_SUSPEND_MASK 0x00000040 /**< CMD Type - Suspend */
-#define XSDPS_CMD_TYPE_RESUME_MASK 0x00000080 /**< CMD Type - Resume */
-#define XSDPS_CMD_TYPE_ABORT_MASK 0x000000C0 /**< CMD Type - Abort */
-#define XSDPS_CMD_MASK 0x00003F00 /**< Command Index Mask -
- Set to CMD0-63,
- AMCD0-63 */
-
-/* @} */
-
-/** @name Capabilities Register
- *
- * Capabilities register is a read only register which contains
- * information about the host controller.
- * Sufficient if read once after power on.
- * Read Only
- * @{
- */
-#define XSDPS_CAP_TOUT_CLK_FREQ_MASK 0x0000003F /**< Timeout clock freq
- select */
-#define XSDPS_CAP_TOUT_CLK_UNIT_MASK 0x00000080 /**< Timeout clock unit -
- MHz/KHz */
-#define XSDPS_CAP_MAX_BLK_LEN_MASK 0x00030000 /**< Max block length */
-#define XSDPS_CAP_MAX_BLK_LEN_512B_MASK 0x00000000 /**< Max block 512 bytes */
-#define XSDPS_CAP_EXT_MEDIA_BUS_MASK 0x00040000 /**< Extended media bus */
-#define XSDPS_CAP_ADMA2_MASK 0x00080000 /**< ADMA2 support */
-#define XSDPS_CAP_HIGH_SPEED_MASK 0x00200000 /**< High speed support */
-#define XSDPS_CAP_SDMA_MASK 0x00400000 /**< SDMA support */
-#define XSDPS_CAP_SUSP_RESUME_MASK 0x00800000 /**< Suspend/Resume
- support */
-#define XSDPS_CAP_VOLT_3V3_MASK 0x01000000 /**< 3.3V support */
-#define XSDPS_CAP_VOLT_3V0_MASK 0x02000000 /**< 3.0V support */
-#define XSDPS_CAP_VOLT_1V8_MASK 0x04000000 /**< 1.8V support */
-#define XSDPS_CAP_INTR_MODE_MASK 0x08000000 /**< Interrupt mode
- support */
-#define XSDPS_CAP_SYS_BUS_64_MASK 0x10000000 /**< 64 bit system bus
- support */
-#define XSDPS_CAP_SPI_MODE_MASK 0x20000000 /**< SPI mode */
-#define XSDPS_CAP_SPI_BLOCK_MODE_MASK 0x20000000 /**< SPI block mode */
-/* @} */
-
-/** @name Present State Register
- *
- * Gives the current status of the host controller
- * Read Only
- * @{
- */
-
-#define XSDPS_PSR_INHIBIT_CMD_MASK 0x00000001 /**< Command inhibit - CMD */
-#define XSDPS_PSR_INHIBIT_DAT_MASK 0x00000002 /**< Command Inhibit - DAT */
-#define XSDPS_PSR_DAT_ACTIVE_MASK 0x00000004 /**< DAT line active */
-#define XSDPS_PSR_WR_ACTIVE_MASK 0x00000100 /**< Write transfer active */
-#define XSDPS_PSR_RD_ACTIVE_MASK 0x00000200 /**< Read transfer active */
-#define XSDPS_PSR_BUFF_WR_EN_MASK 0x00000400 /**< Buffer write enable */
-#define XSDPS_PSR_BUFF_RD_EN_MASK 0x00000800 /**< Buffer read enable */
-#define XSDPS_PSR_CARD_INSRT_MASK 0x00010000 /**< Card inserted */
-#define XSDPS_PSR_CARD_STABLE_MASK 0x00020000 /**< Card state stable */
-#define XSDPS_PSR_CARD_DPL_MASK 0x00040000 /**< Card detect pin level */
-#define XSDPS_PSR_WPS_PL_MASK 0x00080000 /**< Write protect switch
- pin level */
-
-/* @} */
-
-/** @name Block size mask for 512 bytes
- *
- * Block size mask for 512 bytes - This is the default block size.
- * @{
- */
-
-#define XSDPS_BLK_SIZE_512_MASK 0x200
-
-/* @} */
-
-/** @name Commands
- *
- * Constant definitions for commands and response related to SD
- * @{
- */
-
-#define XSDPS_APP_CMD_PREFIX 0x8000
-#define CMD0 0x0000
-#define CMD1 0x0100
-#define CMD2 0x0200
-#define CMD3 0x0300
-#define CMD4 0x0400
-#define CMD5 0x0500
-#define CMD6 0x0600
-#define ACMD6 (XSDPS_APP_CMD_PREFIX + 0x0600)
-#define CMD7 0x0700
-#define CMD8 0x0800
-#define CMD9 0x0900
-#define CMD10 0x0A00
-#define CMD12 0x0C00
-#define ACMD13 (XSDPS_APP_CMD_PREFIX + 0x0D00)
-#define CMD16 0x1000
-#define CMD17 0x1100
-#define CMD18 0x1200
-#define CMD23 0x1700
-#define ACMD23 (XSDPS_APP_CMD_PREFIX + 0x1700)
-#define CMD24 0x1800
-#define CMD25 0x1900
-#define CMD41 0x2900
-#define ACMD41 (XSDPS_APP_CMD_PREFIX + 0x2900)
-#define ACMD42 (XSDPS_APP_CMD_PREFIX + 0x2A00)
-#define ACMD51 (XSDPS_APP_CMD_PREFIX + 0x3300)
-#define CMD52 0x3400
-#define CMD55 0x3700
-#define CMD58 0x3A00
-
-#define RESP_NONE XSDPS_CMD_RESP_NONE_MASK
-#define RESP_R1 XSDPS_CMD_RESP_L48_MASK | XSDPS_CMD_CRC_CHK_EN_MASK | \
- XSDPS_CMD_INX_CHK_EN_MASK
-
-#define RESP_R1B XSDPS_CMD_RESP_L48_BSY_CHK_MASK | \
- XSDPS_CMD_CRC_CHK_EN_MASK | XSDPS_CMD_INX_CHK_EN_MASK
-
-#define RESP_R2 XSDPS_CMD_RESP_L136_MASK | XSDPS_CMD_CRC_CHK_EN_MASK
-#define RESP_R3 XSDPS_CMD_RESP_L48_MASK
-
-#define RESP_R6 XSDPS_CMD_RESP_L48_BSY_CHK_MASK | \
- XSDPS_CMD_CRC_CHK_EN_MASK | XSDPS_CMD_INX_CHK_EN_MASK
-
-/* @} */
-
-/** @name ADMA2 Descriptor related definitions
- *
- * ADMA2 Descriptor related definitions
- * @{
- */
-
-#define XSDPS_DESC_MAX_LENGTH 65536
-
-#define XSDPS_DESC_VALID (0x1 << 0)
-#define XSDPS_DESC_END (0x1 << 1)
-#define XSDPS_DESC_INT (0x1 << 2)
-#define XSDPS_DESC_TRAN (0x2 << 4)
-
-/* @} */
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-#define XSdPs_In32 Xil_In32
-#define XSdPs_Out32 Xil_Out32
-
-#define XSdPs_In16 Xil_In16
-#define XSdPs_Out16 Xil_Out16
-
-#define XSdPs_In8 Xil_In8
-#define XSdPs_Out8 Xil_Out8
-
-/****************************************************************************/
-/**
-* Read a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to the target register.
-*
-* @return The value read from the register.
-*
-* @note C-Style signature:
-* u32 XSdPs_ReadReg(u32 BaseAddress. int RegOffset)
-*
-******************************************************************************/
-#define XSdPs_ReadReg(BaseAddress, RegOffset) \
- XSdPs_In32((BaseAddress) + (RegOffset))
-
-/***************************************************************************/
-/**
-* Write to a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to target register.
-* @param RegisterValue is the value to be written to the register.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XSdPs_WriteReg(u32 BaseAddress, int RegOffset,
-* u32 RegisterValue)
-*
-******************************************************************************/
-#define XSdPs_WriteReg(BaseAddress, RegOffset, RegisterValue) \
- XSdPs_Out32((BaseAddress) + (RegOffset), (RegisterValue))
-
-/****************************************************************************/
-/**
-* Read a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to the target register.
-*
-* @return The value read from the register.
-*
-* @note C-Style signature:
-* u16 XSdPs_ReadReg(u32 BaseAddress. int RegOffset)
-*
-******************************************************************************/
-#define XSdPs_ReadReg16(BaseAddress, RegOffset) \
- XSdPs_In16((BaseAddress) + (RegOffset))
-
-/***************************************************************************/
-/**
-* Write to a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to target register.
-* @param RegisterValue is the value to be written to the register.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XSdPs_WriteReg(u32 BaseAddress, int RegOffset,
-* u16 RegisterValue)
-*
-******************************************************************************/
-#define XSdPs_WriteReg16(BaseAddress, RegOffset, RegisterValue) \
- XSdPs_Out16((BaseAddress) + (RegOffset), (RegisterValue))
-
-/****************************************************************************/
-/**
-* Read a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to the target register.
-*
-* @return The value read from the register.
-*
-* @note C-Style signature:
-* u8 XSdPs_ReadReg(u32 BaseAddress. int RegOffset)
-*
-******************************************************************************/
-#define XSdPs_ReadReg8(BaseAddress, RegOffset) \
- XSdPs_In8((BaseAddress) + (RegOffset))
-
-/***************************************************************************/
-/**
-* Write to a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to target register.
-* @param RegisterValue is the value to be written to the register.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XSdPs_WriteReg(u32 BaseAddress, int RegOffset,
-* u8 RegisterValue)
-*
-******************************************************************************/
-#define XSdPs_WriteReg8(BaseAddress, RegOffset, RegisterValue) \
- XSdPs_Out8((BaseAddress) + (RegOffset), (RegisterValue))
-
-/***************************************************************************/
-/**
-* Macro to get present status register
-*
-* @param BaseAddress contains the base address of the device.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XSdPs_WriteReg(u32 BaseAddress, int RegOffset,
-* u8 RegisterValue)
-*
-******************************************************************************/
-#define XSdPs_GetPresentStatusReg(BaseAddress) \
- XSdPs_In32((BaseAddress) + (XSDPS_PRES_STATE_OFFSET))
-
-/************************** Function Prototypes ******************************/
-
-/************************** Variable Definitions *****************************/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SD_HW_H_ */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps_options.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps_options.c
deleted file mode 100644
index b56f6d466..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps_options.c
+++ /dev/null
@@ -1,792 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2013 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xsdps_options.c
-*
-* Contains API's for changing the various options in host and card.
-* See xsdps.h for a detailed description of the device and driver.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- --- -------- -----------------------------------------------
-* 1.00a hk/sg 10/17/13 Initial release
-* 2.1 hk 04/18/14 Increase sleep for eMMC switch command.
-* Add sleep for microblaze designs. CR# 781117.
-* 2.3 sk 09/23/14 Use XSdPs_Change_ClkFreq API whenever changing
-* clock.CR# 816586.
-*
-*
-*
-******************************************************************************/
-
-/***************************** Include Files *********************************/
-#include "xsdps.h"
-/*
- * The header sleep.h and API usleep() can only be used with an arm design.
- * MB_Sleep() is used for microblaze design.
- */
-#ifdef __arm__
-
-#include "sleep.h"
-
-#endif
-
-#ifdef __MICROBLAZE__
-
-#include "microblaze_sleep.h"
-
-#endif
-
-/************************** Constant Definitions *****************************/
-#define XSDPS_SCR_BLKCNT 1
-#define XSDPS_SCR_BLKSIZE 8
-#define XSDPS_4_BIT_WIDTH 0x2
-#define XSDPS_SWITCH_CMD_BLKCNT 1
-#define XSDPS_SWITCH_CMD_BLKSIZE 64
-#define XSDPS_SWITCH_CMD_HS_GET 0x00FFFFF0
-#define XSDPS_SWITCH_CMD_HS_SET 0x80FFFFF1
-#define XSDPS_EXT_CSD_CMD_BLKCNT 1
-#define XSDPS_EXT_CSD_CMD_BLKSIZE 512
-#define XSDPS_CLK_52_MHZ 52000000
-#define XSDPS_MMC_HIGH_SPEED_ARG 0x03B90100
-#define XSDPS_MMC_4_BIT_BUS_ARG 0x03B70100
-#define XSDPS_MMC_DELAY_FOR_SWITCH 2000
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/************************** Function Prototypes ******************************/
-int XSdPs_CmdTransfer(XSdPs *InstancePtr, u32 Cmd, u32 Arg, u32 BlkCnt);
-void XSdPs_SetupADMA2DescTbl(XSdPs *InstancePtr, u32 BlkCnt, const u8 *Buff);
-
-/*****************************************************************************/
-/**
-* Update Block size for read/write operations.
-*
-* @param InstancePtr is a pointer to the instance to be worked on.
-* @param BlkSize - Block size passed by the user.
-*
-* @return None
-*
-******************************************************************************/
-int XSdPs_SetBlkSize(XSdPs *InstancePtr, u16 BlkSize)
-{
- u32 Status = 0;
- u32 PresentStateReg = 0;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- PresentStateReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_PRES_STATE_OFFSET);
-
- if (PresentStateReg & (XSDPS_PSR_INHIBIT_CMD_MASK |
- XSDPS_PSR_INHIBIT_DAT_MASK |
- XSDPS_PSR_WR_ACTIVE_MASK | XSDPS_PSR_RD_ACTIVE_MASK)) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
-
- /*
- * Send block write command
- */
- Status = XSdPs_CmdTransfer(InstancePtr, CMD16, BlkSize, 0);
- if (Status != XST_SUCCESS) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
- Status = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_RESP0_OFFSET);
-
- /*
- * Set block size to the value passed
- */
- BlkSize &= XSDPS_BLK_SIZE_MASK;
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress, XSDPS_BLK_SIZE_OFFSET,
- BlkSize);
-
- Status = XST_SUCCESS;
-
- RETURN_PATH:
- return Status;
-
-}
-
-/*****************************************************************************/
-/**
-*
-* API to get bus width support by card.
-*
-*
-* @param InstancePtr is a pointer to the XSdPs instance.
-* @param SCR - buffer to store SCR register returned by card.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if fail.
-*
-* @note None.
-*
-******************************************************************************/
-int XSdPs_Get_BusWidth(XSdPs *InstancePtr, u8 *SCR)
-{
- u32 Status = 0;
- u32 StatusReg = 0x0;
- u16 BlkCnt;
- u16 BlkSize;
- int LoopCnt;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- for (LoopCnt = 0; LoopCnt < 8; LoopCnt++) {
- SCR[LoopCnt] = 0;
- }
-
- /*
- * Send block write command
- */
- Status = XSdPs_CmdTransfer(InstancePtr, CMD55,
- InstancePtr->RelCardAddr, 0);
- if (Status != XST_SUCCESS) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
- BlkCnt = XSDPS_SCR_BLKCNT;
- BlkSize = XSDPS_SCR_BLKSIZE;
-
- /*
- * Set block size to the value passed
- */
- BlkSize &= XSDPS_BLK_SIZE_MASK;
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_BLK_SIZE_OFFSET, BlkSize);
-
- XSdPs_SetupADMA2DescTbl(InstancePtr, BlkCnt, SCR);
-
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_XFER_MODE_OFFSET,
- XSDPS_TM_DAT_DIR_SEL_MASK | XSDPS_TM_DMA_EN_MASK);
-
- Xil_DCacheInvalidateRange(SCR, 8);
-
- Status = XSdPs_CmdTransfer(InstancePtr, ACMD51, 0, BlkCnt);
- if (Status != XST_SUCCESS) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
- /*
- * Check for transfer complete
- * Polling for response for now
- */
- do {
- StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
- XSDPS_NORM_INTR_STS_OFFSET);
- if (StatusReg & XSDPS_INTR_ERR_MASK) {
- /*
- * Write to clear error bits
- */
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_ERR_INTR_STS_OFFSET,
- XSDPS_ERROR_INTR_ALL_MASK);
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
- } while ((StatusReg & XSDPS_INTR_TC_MASK) == 0);
-
- /*
- * Write to clear bit
- */
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_TC_MASK);
-
- Status = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_RESP0_OFFSET);
-
- Status = XST_SUCCESS;
-
- RETURN_PATH:
- return Status;
-
-}
-
-/*****************************************************************************/
-/**
-*
-* API to set bus width to 4-bit in card and host
-*
-*
-* @param InstancePtr is a pointer to the XSdPs instance.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if fail.
-*
-* @note None.
-*
-******************************************************************************/
-int XSdPs_Change_BusWidth(XSdPs *InstancePtr)
-{
- u32 Status = 0;
- u32 StatusReg = 0x0;
- u32 Arg = 0;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
-#ifndef MMC_CARD
-
- Status = XSdPs_CmdTransfer(InstancePtr, CMD55,
- InstancePtr->RelCardAddr, 0);
- if (Status != XST_SUCCESS) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
- Arg = XSDPS_4_BIT_WIDTH;
- Status = XSdPs_CmdTransfer(InstancePtr, ACMD6, Arg, 0);
- if (Status != XST_SUCCESS) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
- StatusReg = XSdPs_ReadReg8(InstancePtr->Config.BaseAddress,
- XSDPS_HOST_CTRL1_OFFSET);
- StatusReg |= XSDPS_HC_WIDTH_MASK;
- XSdPs_WriteReg8(InstancePtr->Config.BaseAddress,
- XSDPS_HOST_CTRL1_OFFSET,StatusReg);
-
- Status = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_RESP0_OFFSET);
-
-#else
-
- Arg = XSDPS_MMC_4_BIT_BUS_ARG;
- Status = XSdPs_CmdTransfer(InstancePtr, ACMD6, Arg, 0);
- if (Status != XST_SUCCESS) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
-#ifdef __arm__
-
- usleep(XSDPS_MMC_DELAY_FOR_SWITCH);
-
-#endif
-
-#ifdef __MICROBLAZE__
-
- /* 2 msec delay */
- MB_Sleep(2);
-
-#endif
-
- StatusReg = XSdPs_ReadReg8(InstancePtr->Config.BaseAddress,
- XSDPS_HOST_CTRL1_OFFSET);
- StatusReg |= XSDPS_HC_WIDTH_MASK;
- XSdPs_WriteReg8(InstancePtr->Config.BaseAddress,
- XSDPS_HOST_CTRL1_OFFSET,StatusReg);
-
- Status = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_RESP0_OFFSET);
-
-#endif
-
- Status = XST_SUCCESS;
-
- RETURN_PATH:
- return Status;
-
-}
-
-/*****************************************************************************/
-/**
-*
-* API to get bus speed supported by card.
-*
-*
-* @param InstancePtr is a pointer to the XSdPs instance.
-* @param ReadBuff - buffer to store function group support data
-* returned by card.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if fail.
-*
-* @note None.
-*
-******************************************************************************/
-int XSdPs_Get_BusSpeed(XSdPs *InstancePtr, u8 *ReadBuff)
-{
- u32 Status = 0;
- u32 StatusReg = 0x0;
- u32 Arg = 0;
- u16 BlkCnt;
- u16 BlkSize;
- int LoopCnt;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- for (LoopCnt = 0; LoopCnt < 64; LoopCnt++) {
- ReadBuff[LoopCnt] = 0;
- }
-
- BlkCnt = XSDPS_SWITCH_CMD_BLKCNT;
- BlkSize = XSDPS_SWITCH_CMD_BLKSIZE;
- BlkSize &= XSDPS_BLK_SIZE_MASK;
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_BLK_SIZE_OFFSET, BlkSize);
-
- XSdPs_SetupADMA2DescTbl(InstancePtr, BlkCnt, ReadBuff);
-
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_XFER_MODE_OFFSET,
- XSDPS_TM_DAT_DIR_SEL_MASK | XSDPS_TM_DMA_EN_MASK);
-
- Arg = XSDPS_SWITCH_CMD_HS_GET;
-
- Xil_DCacheInvalidateRange(ReadBuff, 64);
-
- Status = XSdPs_CmdTransfer(InstancePtr, CMD6, Arg, 1);
- if (Status != XST_SUCCESS) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
- /*
- * Check for transfer complete
- * Polling for response for now
- */
- do {
- StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
- XSDPS_NORM_INTR_STS_OFFSET);
- if (StatusReg & XSDPS_INTR_ERR_MASK) {
- /*
- * Write to clear error bits
- */
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_ERR_INTR_STS_OFFSET,
- XSDPS_ERROR_INTR_ALL_MASK);
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
- } while ((StatusReg & XSDPS_INTR_TC_MASK) == 0);
-
- /*
- * Write to clear bit
- */
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_TC_MASK);
-
- Status = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_RESP0_OFFSET);
-
- Status = XST_SUCCESS;
-
- RETURN_PATH:
- return Status;
-
-}
-
-/*****************************************************************************/
-/**
-*
-* API to set high speed in card and host. Changes clock in host accordingly.
-*
-*
-* @param InstancePtr is a pointer to the XSdPs instance.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if fail.
-*
-* @note None.
-*
-******************************************************************************/
-int XSdPs_Change_BusSpeed(XSdPs *InstancePtr)
-{
- u32 Status = 0;
- u32 StatusReg = 0x0;
- u32 Arg = 0;
-
-#ifndef MMC_CARD
- u32 ClockReg;
- u8 ReadBuff[64];
- u16 BlkCnt;
- u16 BlkSize;
-#endif
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
-#ifndef MMC_CARD
-
- BlkCnt = XSDPS_SWITCH_CMD_BLKCNT;
- BlkSize = XSDPS_SWITCH_CMD_BLKSIZE;
- BlkSize &= XSDPS_BLK_SIZE_MASK;
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_BLK_SIZE_OFFSET, BlkSize);
-
- XSdPs_SetupADMA2DescTbl(InstancePtr, BlkCnt, ReadBuff);
-
- Xil_DCacheInvalidateRange(ReadBuff, 64);
-
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_XFER_MODE_OFFSET,
- XSDPS_TM_DAT_DIR_SEL_MASK | XSDPS_TM_DMA_EN_MASK);
-
- Arg = XSDPS_SWITCH_CMD_HS_SET;
- Status = XSdPs_CmdTransfer(InstancePtr, CMD6, Arg, 1);
- if (Status != XST_SUCCESS) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
- /*
- * Check for transfer complete
- * Polling for response for now
- */
- do {
- StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
- XSDPS_NORM_INTR_STS_OFFSET);
- if (StatusReg & XSDPS_INTR_ERR_MASK) {
- /*
- * Write to clear error bits
- */
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_ERR_INTR_STS_OFFSET,
- XSDPS_ERROR_INTR_ALL_MASK);
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
- } while ((StatusReg & XSDPS_INTR_TC_MASK) == 0);
-
- /*
- * Write to clear bit
- */
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_TC_MASK);
-
- /*
- * Change the clock frequency to 50 MHz
- */
- Status = XSdPs_Change_ClkFreq(InstancePtr, XSDPS_CLK_50_MHZ);
- if (Status != XST_SUCCESS) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
- StatusReg = XSdPs_ReadReg8(InstancePtr->Config.BaseAddress,
- XSDPS_HOST_CTRL1_OFFSET);
- StatusReg |= XSDPS_HC_SPEED_MASK;
- XSdPs_WriteReg8(InstancePtr->Config.BaseAddress,
- XSDPS_HOST_CTRL1_OFFSET,StatusReg);
-
- Status = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_RESP0_OFFSET);
-
-#else
-
- Arg = XSDPS_MMC_HIGH_SPEED_ARG;
- Status = XSdPs_CmdTransfer(InstancePtr, CMD6, Arg, 0);
- if (Status != XST_SUCCESS) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
-#ifdef __arm__
-
- usleep(XSDPS_MMC_DELAY_FOR_SWITCH);
-
-#endif
-
-#ifdef __MICROBLAZE__
-
- /* 2 msec delay */
- MB_Sleep(2);
-
-#endif
-
- XSdPs_Change_ClkFreq(InstancePtr, XSDPS_CLK_52_MHZ);
-
- StatusReg = XSdPs_ReadReg8(InstancePtr->Config.BaseAddress,
- XSDPS_HOST_CTRL1_OFFSET);
- StatusReg |= XSDPS_HC_SPEED_MASK;
- XSdPs_WriteReg8(InstancePtr->Config.BaseAddress,
- XSDPS_HOST_CTRL1_OFFSET,StatusReg);
-
- Status = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_RESP0_OFFSET);
-#endif
-
- Status = XST_SUCCESS;
-
- RETURN_PATH:
- return Status;
-
-}
-
-/*****************************************************************************/
-/**
-*
-* API to change clock freq to given value.
-*
-*
-* @param InstancePtr is a pointer to the XSdPs instance.
-* @param SelFreq - Clock frequency in Hz.
-*
-* @return None
-*
-* @note This API will change clock frequency to the value less than
-* or equal to the given value using the permissible dividors.
-*
-******************************************************************************/
-int XSdPs_Change_ClkFreq(XSdPs *InstancePtr, u32 SelFreq)
-{
- u16 ClockReg;
- int DivCnt;
- u16 Divisor;
- u16 ClkLoopCnt;
- int Status;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- /*
- * Disable clock
- */
- ClockReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
- XSDPS_CLK_CTRL_OFFSET);
- ClockReg &= ~(XSDPS_CC_INT_CLK_EN_MASK | XSDPS_CC_SD_CLK_EN_MASK);
-
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_CLK_CTRL_OFFSET, ClockReg);
-
- /*
- * Calculate divisor
- */
- DivCnt = 0x1;
- for(ClkLoopCnt = 0; ClkLoopCnt < XSDPS_CC_MAX_NUM_OF_DIV;
- ClkLoopCnt++) {
- if( ((InstancePtr->Config.InputClockHz)/DivCnt) <= SelFreq) {
- Divisor = DivCnt/2;
- Divisor = Divisor << XSDPS_CC_DIV_SHIFT;
- break;
- }
- DivCnt = DivCnt << 1;
- }
-
- if(ClkLoopCnt == 9) {
-
- /*
- * No valid divisor found for given frequency
- */
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
- /*
- * Set clock divisor
- */
- ClockReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
- XSDPS_CLK_CTRL_OFFSET);
- ClockReg &= (~XSDPS_CC_SDCLK_FREQ_SEL_MASK);
-
- ClockReg |= Divisor | XSDPS_CC_INT_CLK_EN_MASK;
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_CLK_CTRL_OFFSET, ClockReg);
-
- /*
- * Wait for internal clock to stabilize
- */
- while((XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
- XSDPS_CLK_CTRL_OFFSET) & XSDPS_CC_INT_CLK_STABLE_MASK) == 0);
-
- /*
- * Enable SD clock
- */
- ClockReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
- XSDPS_CLK_CTRL_OFFSET);
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_CLK_CTRL_OFFSET,
- ClockReg | XSDPS_CC_SD_CLK_EN_MASK);
-
- Status = XST_SUCCESS;
-
- RETURN_PATH:
- return Status;
-
-}
-
-/*****************************************************************************/
-/**
-*
-* API to send pullup command to card before using DAT line 3(using 4-bit bus)
-*
-*
-* @param InstancePtr is a pointer to the XSdPs instance.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if fail.
-*
-* @note None.
-*
-******************************************************************************/
-int XSdPs_Pullup(XSdPs *InstancePtr)
-{
- u32 Status = 0;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- Status = XSdPs_CmdTransfer(InstancePtr, CMD55,
- InstancePtr->RelCardAddr, 0);
- if (Status != XST_SUCCESS) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
- Status = XSdPs_CmdTransfer(InstancePtr, ACMD42, 0, 0);
- if (Status != XST_SUCCESS) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
- Status = XST_SUCCESS;
-
- RETURN_PATH:
- return Status;
-
-}
-
-/*****************************************************************************/
-/**
-*
-* API to get EXT_CSD register of eMMC.
-*
-*
-* @param InstancePtr is a pointer to the XSdPs instance.
-* @param ReadBuff - buffer to store EXT_CSD
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_FAILURE if fail.
-*
-* @note None.
-*
-******************************************************************************/
-int XSdPs_Get_Mmc_ExtCsd(XSdPs *InstancePtr, u8 *ReadBuff)
-{
- u32 Status = 0;
- u32 StatusReg = 0x0;
- u32 Arg = 0;
- u16 BlkCnt;
- u16 BlkSize;
- int LoopCnt;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- for (LoopCnt = 0; LoopCnt < 512; LoopCnt++) {
- ReadBuff[LoopCnt] = 0;
- }
-
- BlkCnt = XSDPS_EXT_CSD_CMD_BLKCNT;
- BlkSize = XSDPS_EXT_CSD_CMD_BLKSIZE;
- BlkSize &= XSDPS_BLK_SIZE_MASK;
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_BLK_SIZE_OFFSET, BlkSize);
-
- XSdPs_SetupADMA2DescTbl(InstancePtr, BlkCnt, ReadBuff);
-
- Xil_DCacheInvalidateRange(ReadBuff, 512);
-
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_XFER_MODE_OFFSET,
- XSDPS_TM_DAT_DIR_SEL_MASK | XSDPS_TM_DMA_EN_MASK);
-
- Arg = 0;
-
- /*
- * Send SEND_EXT_CSD command
- */
- Status = XSdPs_CmdTransfer(InstancePtr, CMD8, Arg, 1);
- if (Status != XST_SUCCESS) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
- /*
- * Check for transfer complete
- * Polling for response for now
- */
- do {
- StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
- XSDPS_NORM_INTR_STS_OFFSET);
- if (StatusReg & XSDPS_INTR_ERR_MASK) {
- /*
- * Write to clear error bits
- */
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_ERR_INTR_STS_OFFSET,
- XSDPS_ERROR_INTR_ALL_MASK);
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
- } while ((StatusReg & XSDPS_INTR_TC_MASK) == 0);
-
- /*
- * Write to clear bit
- */
- XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_TC_MASK);
-
- Status = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_RESP0_OFFSET);
-
- Status = XST_SUCCESS;
-
- RETURN_PATH:
- return Status;
-
-}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/Makefile
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/Makefile
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/Makefile
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps.c
similarity index 51%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps.c
index c4c66f6f1..6425a791b 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps.c
@@ -33,6 +33,8 @@
/**
*
* @file xsdps.c
+* @addtogroup sdps_v2_5
+* @{
*
* Contains the interface functions of the XSdPs driver.
* See xsdps.h for a detailed description of the device and driver.
@@ -55,7 +57,13 @@
* Checked for DAT Inhibit mask instead of CMD
* Inhibit mask in Cmd Transfer API.
* Added Support for SD Card v1.0
-*
+* 2.5 sg 07/09/15 Added SD 3.0 features
+* kvn 07/15/15 Modified the code according to MISRAC-2012.
+* 2.6 sk 10/12/15 Added support for SD card v1.0 CR# 840601.
+* 2.7 sk 11/24/15 Considered the slot type befoe checking CD/WP pins.
+* sk 12/10/15 Added support for MMC cards.
+* sk 02/16/16 Corrected the Tuning logic.
+* sk 03/01/16 Removed Bus Width check for eMMC. CR# 938311.
*
*
******************************************************************************/
@@ -66,7 +74,7 @@
* The header sleep.h and API usleep() can only be used with an arm design.
* MB_Sleep() is used for microblaze design.
*/
-#ifdef __arm__
+#if defined (__arm__) || defined (__aarch64__)
#include "sleep.h"
@@ -79,23 +87,38 @@
#endif
/************************** Constant Definitions *****************************/
-#define XSDPS_CMD8_VOL_PATTERN 0x1AA
-#define XSDPS_RESPOCR_READY 0x80000000
-#define XSDPS_ACMD41_HCS 0x40000000
-#define XSDPS_ACMD41_3V3 0x00300000
-#define XSDPS_CMD1_HIGH_VOL 0x00FF8000
-#define XSDPS_CMD1_DUAL_VOL 0x00FF8010
+#define XSDPS_CMD8_VOL_PATTERN 0x1AAU
+#define XSDPS_RESPOCR_READY 0x80000000U
+#define XSDPS_ACMD41_HCS 0x40000000U
+#define XSDPS_ACMD41_3V3 0x00300000U
+#define XSDPS_CMD1_HIGH_VOL 0x00FF8000U
+#define XSDPS_CMD1_DUAL_VOL 0x00FF8010U
+#define HIGH_SPEED_SUPPORT 0x2U
+#define WIDTH_4_BIT_SUPPORT 0x4U
+#define SD_CLK_25_MHZ 25000000U
+#define SD_CLK_26_MHZ 26000000U
+#define EXT_CSD_DEVICE_TYPE_BYTE 196U
+#define EXT_CSD_DEVICE_TYPE_HIGH_SPEED 0x2U
+#define EXT_CSD_DEVICE_TYPE_DDR_1V8_HIGH_SPEED 0x4U
+#define EXT_CSD_DEVICE_TYPE_DDR_1V2_HIGH_SPEED 0x8U
+#define EXT_CSD_DEVICE_TYPE_SDR_1V8_HS200 0x10U
+#define EXT_CSD_DEVICE_TYPE_SDR_1V2_HS200 0x20U
+#define CSD_SPEC_VER_3 0x3U
+
+/* Note: Remove this once fixed */
+#define UHS_BROKEN
/**************************** Type Definitions *******************************/
/***************** Macros (Inline Functions) Definitions *********************/
-#define XSDPS_INIT_DELAY 2000
-
/************************** Function Prototypes ******************************/
-u32 XSdPs_FrameCmd(u32 Cmd);
-int XSdPs_CmdTransfer(XSdPs *InstancePtr, u32 Cmd, u32 Arg, u32 BlkCnt);
+u32 XSdPs_FrameCmd(XSdPs *InstancePtr, u32 Cmd);
+s32 XSdPs_CmdTransfer(XSdPs *InstancePtr, u32 Cmd, u32 Arg, u32 BlkCnt);
void XSdPs_SetupADMA2DescTbl(XSdPs *InstancePtr, u32 BlkCnt, const u8 *Buff);
+extern s32 XSdPs_Uhs_ModeInit(XSdPs *InstancePtr, u8 Mode);
+static s32 XSdPs_IdentifyCard(XSdPs *InstancePtr);
+static s32 XSdPs_Switch_Voltage(XSdPs *InstancePtr);
/*****************************************************************************/
/**
@@ -129,35 +152,55 @@ void XSdPs_SetupADMA2DescTbl(XSdPs *InstancePtr, u32 BlkCnt, const u8 *Buff);
* 32 bit ADMA2 is selected. Defualt Block size is 512 bytes.
*
******************************************************************************/
-int XSdPs_CfgInitialize(XSdPs *InstancePtr, XSdPs_Config *ConfigPtr,
+s32 XSdPs_CfgInitialize(XSdPs *InstancePtr, XSdPs_Config *ConfigPtr,
u32 EffectiveAddr)
{
- u32 ClockReg;
- u32 Status;
+ s32 Status;
+ u8 PowerLevel;
+ u8 ReadReg;
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(ConfigPtr != NULL);
- /*
- * Set some default values.
- */
+ /* Set some default values. */
InstancePtr->Config.BaseAddress = EffectiveAddr;
InstancePtr->Config.InputClockHz = ConfigPtr->InputClockHz;
InstancePtr->IsReady = XIL_COMPONENT_IS_READY;
InstancePtr->Config.CardDetect = ConfigPtr->CardDetect;
InstancePtr->Config.WriteProtect = ConfigPtr->WriteProtect;
- /*
- * "Software reset for all" is initiated
- */
+ /* Disable bus power */
+ XSdPs_WriteReg8(InstancePtr->Config.BaseAddress,
+ XSDPS_POWER_CTRL_OFFSET, 0U);
+
+ /* Delay to poweroff card */
+#if defined (__arm__) || defined (__aarch64__)
+
+ (void)sleep(1U);
+
+#endif
+
+#ifdef __MICROBLAZE__
+
+ MB_Sleep(1000U);
+
+#endif
+
+ /* "Software reset for all" is initiated */
XSdPs_WriteReg8(InstancePtr->Config.BaseAddress, XSDPS_SW_RST_OFFSET,
XSDPS_SWRST_ALL_MASK);
- /*
- * Proceed with initialization only after reset is complete
- */
- while (XSdPs_ReadReg8(InstancePtr->Config.BaseAddress,
- XSDPS_SW_RST_OFFSET) & XSDPS_SWRST_ALL_MASK);
+ /* Proceed with initialization only after reset is complete */
+ ReadReg = XSdPs_ReadReg8(InstancePtr->Config.BaseAddress,
+ XSDPS_SW_RST_OFFSET);
+ while ((ReadReg & XSDPS_SWRST_ALL_MASK) != 0U) {
+ ReadReg = XSdPs_ReadReg8(InstancePtr->Config.BaseAddress,
+ XSDPS_SW_RST_OFFSET);
+ }
+ /* Host Controller version is read. */
+ InstancePtr->HC_Version =
+ (u8)(XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_HOST_CTRL_VER_OFFSET) & XSDPS_HC_SPEC_VER_MASK);
/*
* Read capabilities register and update it in Instance pointer.
@@ -166,29 +209,38 @@ int XSdPs_CfgInitialize(XSdPs *InstancePtr, XSdPs_Config *ConfigPtr,
InstancePtr->Host_Caps = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
XSDPS_CAPS_OFFSET);
- /*
- * Select voltage and enable bus power.
- */
+ /* Select voltage and enable bus power. */
XSdPs_WriteReg8(InstancePtr->Config.BaseAddress,
XSDPS_POWER_CTRL_OFFSET,
XSDPS_PC_BUS_VSEL_3V3_MASK | XSDPS_PC_BUS_PWR_MASK);
- /*
- * Change the clock frequency to 400 KHz
- */
+ /* Change the clock frequency to 400 KHz */
Status = XSdPs_Change_ClkFreq(InstancePtr, XSDPS_CLK_400_KHZ);
if (Status != XST_SUCCESS) {
Status = XST_FAILURE;
goto RETURN_PATH ;
}
+ if ((InstancePtr->Host_Caps & XSDPS_CAP_VOLT_3V3_MASK) != 0U) {
+ PowerLevel = XSDPS_PC_BUS_VSEL_3V3_MASK;
+ } else if ((InstancePtr->Host_Caps & XSDPS_CAP_VOLT_3V0_MASK) != 0U) {
+ PowerLevel = XSDPS_PC_BUS_VSEL_3V0_MASK;
+ } else if ((InstancePtr->Host_Caps & XSDPS_CAP_VOLT_1V8_MASK) != 0U) {
+ PowerLevel = XSDPS_PC_BUS_VSEL_1V8_MASK;
+ } else {
+ PowerLevel = 0U;
+ }
+
+ /* Select voltage based on capability and enable bus power. */
+ XSdPs_WriteReg8(InstancePtr->Config.BaseAddress,
+ XSDPS_POWER_CTRL_OFFSET,
+ PowerLevel | XSDPS_PC_BUS_PWR_MASK);
+ /* Enable ADMA2 in 64bit mode. */
XSdPs_WriteReg8(InstancePtr->Config.BaseAddress,
XSDPS_HOST_CTRL1_OFFSET,
XSDPS_HC_DMA_ADMA2_32_MASK);
- /*
- * Enable all interrupt status except card interrupt initially
- */
+ /* Enable all interrupt status except card interrupt initially */
XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
XSDPS_NORM_INTR_STS_EN_OFFSET,
XSDPS_NORM_INTR_ALL_MASK & (~XSDPS_INTR_CARD_MASK));
@@ -197,13 +249,11 @@ int XSdPs_CfgInitialize(XSdPs *InstancePtr, XSdPs_Config *ConfigPtr,
XSDPS_ERR_INTR_STS_EN_OFFSET,
XSDPS_ERROR_INTR_ALL_MASK);
- /*
- * Disable all interrupt signals by default.
- */
+ /* Disable all interrupt signals by default. */
XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_NORM_INTR_SIG_EN_OFFSET, 0x0);
+ XSDPS_NORM_INTR_SIG_EN_OFFSET, 0x0U);
XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_ERR_INTR_SIG_EN_OFFSET, 0x0);
+ XSDPS_ERR_INTR_SIG_EN_OFFSET, 0x0U);
/*
* Transfer mode register - default value
@@ -214,9 +264,7 @@ int XSdPs_CfgInitialize(XSdPs *InstancePtr, XSdPs_Config *ConfigPtr,
XSDPS_TM_DMA_EN_MASK | XSDPS_TM_BLK_CNT_EN_MASK |
XSDPS_TM_DAT_DIR_SEL_MASK);
- /*
- * Set block size to 512 by default
- */
+ /* Set block size to 512 by default */
XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
XSDPS_BLK_SIZE_OFFSET, XSDPS_BLK_SIZE_512_MASK);
@@ -252,50 +300,37 @@ RETURN_PATH:
* CMD9 is sent to read the card specific data.
*
******************************************************************************/
-int XSdPs_SdCardInitialize(XSdPs *InstancePtr)
+s32 XSdPs_SdCardInitialize(XSdPs *InstancePtr)
{
u32 PresentStateReg;
- u32 Status;
- u32 RespOCR = 0x0;
+ s32 Status;
+ u32 RespOCR;
u32 CSD[4];
+ u32 Arg;
+ u8 ReadReg;
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- if(InstancePtr->Config.CardDetect) {
- /*
- * Check the present state register to make sure
- * card is inserted and detected by host controller
- */
- PresentStateReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_PRES_STATE_OFFSET);
- if ((PresentStateReg & XSDPS_PSR_CARD_INSRT_MASK) == 0) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
+ if ((InstancePtr->HC_Version != XSDPS_HC_SPEC_V3) ||
+ ((InstancePtr->Host_Caps & XSDPS_CAPS_SLOT_TYPE_MASK)
+ != XSDPS_CAPS_EMB_SLOT)) {
+ if(InstancePtr->Config.CardDetect != 0U) {
+ /*
+ * Check the present state register to make sure
+ * card is inserted and detected by host controller
+ */
+ PresentStateReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_PRES_STATE_OFFSET);
+ if ((PresentStateReg & XSDPS_PSR_CARD_INSRT_MASK) == 0U) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
}
}
- /*
- * 74 CLK delay after card is powered up, before the first command.
- */
-
-#ifdef __arm__
-
- usleep(XSDPS_INIT_DELAY);
-
-#endif
-
-#ifdef __MICROBLAZE__
-
- /* 2 msec delay */
- MB_Sleep(2);
-
-#endif
-
- /*
- * CMD0 no response expected
- */
- Status = XSdPs_CmdTransfer(InstancePtr, CMD0, 0, 0);
+ /* CMD0 no response expected */
+ Status = XSdPs_CmdTransfer(InstancePtr, (u32)CMD0, 0U, 0U);
if (Status != XST_SUCCESS) {
Status = XST_FAILURE;
goto RETURN_PATH;
@@ -306,60 +341,83 @@ int XSdPs_SdCardInitialize(XSdPs *InstancePtr)
* 0x1AA - Supply Voltage 2.7 - 3.6V and AA is pattern
*/
Status = XSdPs_CmdTransfer(InstancePtr, CMD8,
- XSDPS_CMD8_VOL_PATTERN, 0);
- if (Status != XST_SUCCESS) {
+ XSDPS_CMD8_VOL_PATTERN, 0U);
+ if ((Status != XST_SUCCESS) && (Status != XSDPS_CT_ERROR)) {
Status = XST_FAILURE;
goto RETURN_PATH;
}
+ if (Status == XSDPS_CT_ERROR) {
+ /* "Software reset for all" is initiated */
+ XSdPs_WriteReg8(InstancePtr->Config.BaseAddress, XSDPS_SW_RST_OFFSET,
+ XSDPS_SWRST_CMD_LINE_MASK);
+
+ /* Proceed with initialization only after reset is complete */
+ ReadReg = XSdPs_ReadReg8(InstancePtr->Config.BaseAddress,
+ XSDPS_SW_RST_OFFSET);
+ while ((ReadReg & XSDPS_SWRST_CMD_LINE_MASK) != 0U) {
+ ReadReg = XSdPs_ReadReg8(InstancePtr->Config.BaseAddress,
+ XSDPS_SW_RST_OFFSET);
+ }
+ }
+
RespOCR = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
XSDPS_RESP0_OFFSET);
if (RespOCR != XSDPS_CMD8_VOL_PATTERN) {
- InstancePtr->CardType = CT_SD1;
+ InstancePtr->Card_Version = XSDPS_SD_VER_1_0;
}
else {
- InstancePtr->CardType = CT_SD2;
+ InstancePtr->Card_Version = XSDPS_SD_VER_2_0;
}
- RespOCR = 0;
- /*
- * Send ACMD41 while card is still busy with power up
- */
- while ((RespOCR & XSDPS_RESPOCR_READY) == 0) {
- Status = XSdPs_CmdTransfer(InstancePtr, CMD55, 0, 0);
+ RespOCR = 0U;
+ /* Send ACMD41 while card is still busy with power up */
+ while ((RespOCR & XSDPS_RESPOCR_READY) == 0U) {
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD55, 0U, 0U);
if (Status != XST_SUCCESS) {
Status = XST_FAILURE;
goto RETURN_PATH;
}
- /*
- * 0x40300000 - Host High Capacity support & 3.3V window
- */
+ Arg = XSDPS_ACMD41_HCS | XSDPS_ACMD41_3V3 | (0x1FFU << 15U);
+ if (InstancePtr->HC_Version == XSDPS_HC_SPEC_V3) {
+ Arg |= XSDPS_OCR_S18;
+ }
+
+ /* 0x40300000 - Host High Capacity support & 3.3V window */
Status = XSdPs_CmdTransfer(InstancePtr, ACMD41,
- (XSDPS_ACMD41_HCS | XSDPS_ACMD41_3V3), 0);
+ Arg, 0U);
if (Status != XST_SUCCESS) {
Status = XST_FAILURE;
goto RETURN_PATH;
}
- /*
- * Response with card capacity
- */
+ /* Response with card capacity */
RespOCR = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
XSDPS_RESP0_OFFSET);
}
- /*
- * Update HCS support flag based on card capacity response
- */
- if (RespOCR & XSDPS_ACMD41_HCS)
- InstancePtr->HCS = 1;
+ /* Update HCS support flag based on card capacity response */
+ if ((RespOCR & XSDPS_ACMD41_HCS) != 0U) {
+ InstancePtr->HCS = 1U;
+ }
- /*
- * CMD2 for Card ID
- */
- Status = XSdPs_CmdTransfer(InstancePtr, CMD2, 0, 0);
+ /* There is no support to switch to 1.8V and use UHS mode on 1.0 silicon */
+#ifndef UHS_BROKEN
+ if ((RespOCR & XSDPS_OCR_S18) != 0U) {
+ InstancePtr->Switch1v8 = 1U;
+ Status = XSdPs_Switch_Voltage(InstancePtr);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ }
+#endif
+
+ /* CMD2 for Card ID */
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD2, 0U, 0U);
if (Status != XST_SUCCESS) {
Status = XST_FAILURE;
goto RETURN_PATH;
@@ -378,7 +436,7 @@ int XSdPs_SdCardInitialize(XSdPs *InstancePtr)
XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
XSDPS_RESP3_OFFSET);
do {
- Status = XSdPs_CmdTransfer(InstancePtr, CMD3, 0, 0);
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD3, 0U, 0U);
if (Status != XST_SUCCESS) {
Status = XST_FAILURE;
goto RETURN_PATH;
@@ -390,10 +448,10 @@ int XSdPs_SdCardInitialize(XSdPs *InstancePtr)
*/
InstancePtr->RelCardAddr =
XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_RESP0_OFFSET) & 0xFFFF0000;
- } while (InstancePtr->RelCardAddr == 0);
+ XSDPS_RESP0_OFFSET) & 0xFFFF0000U;
+ } while (InstancePtr->RelCardAddr == 0U);
- Status = XSdPs_CmdTransfer(InstancePtr, CMD9, (InstancePtr->RelCardAddr), 0);
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD9, (InstancePtr->RelCardAddr), 0U);
if (Status != XST_SUCCESS) {
Status = XST_FAILURE;
goto RETURN_PATH;
@@ -421,6 +479,397 @@ RETURN_PATH:
/*****************************************************************************/
/**
+*
+* Initialize Card with Identification mode sequence
+*
+*
+* @param InstancePtr is a pointer to the instance to be worked on.
+*
+* @return
+* - XST_SUCCESS if initialization was successful
+* - XST_FAILURE if failure - could be because
+* a) SD is already initialized
+* b) There is no card inserted
+* c) One of the steps (commands) in the
+* initialization cycle failed
+*
+*
+******************************************************************************/
+s32 XSdPs_CardInitialize(XSdPs *InstancePtr) {
+ u8 Tmp;
+ u32 Cnt;
+ u32 PresentStateReg;
+ u32 CtrlReg;
+ u32 CSD[4];
+#ifdef __ICCARM__
+#pragma data_alignment = 32
+static u8 ExtCsd[512];
+#pragma data_alignment = 4
+#else
+static u8 ExtCsd[512] __attribute__ ((aligned(32)));
+#endif
+ u8 SCR[8] = { 0U };
+ u8 ReadBuff[64] = { 0U };
+ s32 Status;
+
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ /* Default settings */
+ InstancePtr->BusWidth = XSDPS_1_BIT_WIDTH;
+ InstancePtr->CardType = XSDPS_CARD_SD;
+ InstancePtr->Switch1v8 = 0U;
+ InstancePtr->BusSpeed = XSDPS_CLK_400_KHZ;
+
+ if ((InstancePtr->HC_Version == XSDPS_HC_SPEC_V3) &&
+ ((InstancePtr->Host_Caps & XSDPS_CAPS_SLOT_TYPE_MASK)
+ == XSDPS_CAPS_EMB_SLOT)) {
+ InstancePtr->CardType = XSDPS_CHIP_EMMC;
+ } else {
+ Status = XSdPs_IdentifyCard(InstancePtr);
+ if (Status == XST_FAILURE) {
+ goto RETURN_PATH;
+ }
+ }
+
+ if ((InstancePtr->CardType != XSDPS_CARD_SD) &&
+ (InstancePtr->CardType != XSDPS_CARD_MMC) &&
+ (InstancePtr->CardType != XSDPS_CHIP_EMMC)) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ if (InstancePtr->CardType == XSDPS_CARD_SD) {
+ Status = XSdPs_SdCardInitialize(InstancePtr);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ /* Change clock to default clock 25MHz */
+ InstancePtr->BusSpeed = SD_CLK_25_MHZ;
+ Status = XSdPs_Change_ClkFreq(InstancePtr, InstancePtr->BusSpeed);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ } else if ((InstancePtr->CardType == XSDPS_CARD_MMC)
+ || (InstancePtr->CardType == XSDPS_CHIP_EMMC)) {
+ Status = XSdPs_MmcCardInitialize(InstancePtr);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ /* Change clock to default clock 26MHz */
+ InstancePtr->BusSpeed = SD_CLK_26_MHZ;
+ Status = XSdPs_Change_ClkFreq(InstancePtr, InstancePtr->BusSpeed);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ } else {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ Status = XSdPs_Select_Card(InstancePtr);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ if (InstancePtr->CardType == XSDPS_CARD_SD) {
+ /* Pull-up disconnected during data transfer */
+ Status = XSdPs_Pullup(InstancePtr);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ Status = XSdPs_Get_BusWidth(InstancePtr, SCR);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ if ((SCR[1] & WIDTH_4_BIT_SUPPORT) != 0U) {
+ Status = XSdPs_Change_BusWidth(InstancePtr);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ }
+
+ if ((InstancePtr->Switch1v8 != 0U) &&
+ (InstancePtr->BusWidth == XSDPS_4_BIT_WIDTH)) {
+ /* Set UHS-I SDR104 mode */
+ Status = XSdPs_Uhs_ModeInit(InstancePtr,
+ XSDPS_UHS_SPEED_MODE_SDR104);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ } else {
+
+ /*
+ * card supports CMD6 when SD_SPEC field in SCR register
+ * indicates that the Physical Layer Specification Version
+ * is 1.10 or later. So for SD v1.0 cmd6 is not supported.
+ */
+ if (SCR[0] != 0U) {
+ /* Get speed supported by device */
+ Status = XSdPs_Get_BusSpeed(InstancePtr, ReadBuff);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ /* Check for high speed support */
+ if ((ReadBuff[13] & HIGH_SPEED_SUPPORT) != 0U) {
+ Status = XSdPs_Change_BusSpeed(InstancePtr);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ }
+ }
+ }
+
+ } else if (((InstancePtr->CardType == XSDPS_CARD_MMC) &&
+ (InstancePtr->Card_Version > CSD_SPEC_VER_3)) &&
+ (InstancePtr->HC_Version == XSDPS_HC_SPEC_V2)) {
+
+ Status = XSdPs_Change_BusWidth(InstancePtr);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ Status = XSdPs_Get_Mmc_ExtCsd(InstancePtr, ExtCsd);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ if ((ExtCsd[EXT_CSD_DEVICE_TYPE_BYTE] &
+ EXT_CSD_DEVICE_TYPE_HIGH_SPEED) != 0U) {
+ Status = XSdPs_Change_BusSpeed(InstancePtr);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ Status = XSdPs_Get_Mmc_ExtCsd(InstancePtr, ExtCsd);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ if (ExtCsd[EXT_CSD_HS_TIMING_BYTE] != EXT_CSD_HS_TIMING_HIGH) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ }
+ } else if (InstancePtr->CardType == XSDPS_CHIP_EMMC){
+ /* Change bus width to 8-bit */
+ Status = XSdPs_Change_BusWidth(InstancePtr);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ /* Get Extended CSD */
+ Status = XSdPs_Get_Mmc_ExtCsd(InstancePtr, ExtCsd);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ if ((ExtCsd[EXT_CSD_DEVICE_TYPE_BYTE] &
+ (EXT_CSD_DEVICE_TYPE_SDR_1V8_HS200 |
+ EXT_CSD_DEVICE_TYPE_SDR_1V2_HS200)) != 0U) {
+ Status = XSdPs_Change_BusSpeed(InstancePtr);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ Status = XSdPs_Get_Mmc_ExtCsd(InstancePtr, ExtCsd);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ if (ExtCsd[EXT_CSD_HS_TIMING_BYTE] != EXT_CSD_HS_TIMING_HS200) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ }
+ }
+
+ Status = XSdPs_SetBlkSize(InstancePtr, XSDPS_BLK_SIZE_512_MASK);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+RETURN_PATH:
+ return Status;
+}
+
+/*****************************************************************************/
+/**
+*
+* Identify type of card using CMD0 + CMD1 sequence
+*
+*
+* @param InstancePtr is a pointer to the XSdPs instance.
+*
+******************************************************************************/
+static s32 XSdPs_IdentifyCard(XSdPs *InstancePtr)
+{
+ s32 Status;
+ u32 OperCondReg;
+ u8 ReadReg;
+
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ /* 74 CLK delay after card is powered up, before the first command. */
+#if defined (__arm__) || defined (__aarch64__)
+
+ usleep(XSDPS_INIT_DELAY);
+
+#endif
+
+#ifdef __MICROBLAZE__
+
+ /* 2 msec delay */
+ MB_Sleep(2);
+
+#endif
+
+ /* CMD0 no response expected */
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD0, 0U, 0U);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ /* Host High Capacity support & High voltage window */
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD1,
+ XSDPS_ACMD41_HCS | XSDPS_CMD1_HIGH_VOL, 0U);
+ if (Status != XST_SUCCESS) {
+ InstancePtr->CardType = XSDPS_CARD_SD;
+ } else {
+ InstancePtr->CardType = XSDPS_CARD_MMC;
+ }
+
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET, XSDPS_NORM_INTR_ALL_MASK);
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_ERR_INTR_STS_OFFSET, XSDPS_ERROR_INTR_ALL_MASK);
+
+ /* "Software reset for all" is initiated */
+ XSdPs_WriteReg8(InstancePtr->Config.BaseAddress, XSDPS_SW_RST_OFFSET,
+ XSDPS_SWRST_CMD_LINE_MASK);
+
+ /* Proceed with initialization only after reset is complete */
+ ReadReg = XSdPs_ReadReg8(InstancePtr->Config.BaseAddress,
+ XSDPS_SW_RST_OFFSET);
+ while ((ReadReg & XSDPS_SWRST_CMD_LINE_MASK) != 0U) {
+ ReadReg = XSdPs_ReadReg8(InstancePtr->Config.BaseAddress,
+ XSDPS_SW_RST_OFFSET);
+ }
+
+ Status = XST_SUCCESS;
+
+RETURN_PATH:
+ return Status;
+}
+
+/*****************************************************************************/
+/**
+*
+* Switches the SD card voltage from 3v3 to 1v8
+*
+*
+* @param InstancePtr is a pointer to the XSdPs instance.
+*
+******************************************************************************/
+static s32 XSdPs_Switch_Voltage(XSdPs *InstancePtr)
+{
+ s32 Status;
+ u16 CtrlReg;
+ u32 ReadReg;
+
+ /* Send switch voltage command */
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD11, 0U, 0U);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ }
+
+ /* Wait for CMD and DATA line to go low */
+ ReadReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_PRES_STATE_OFFSET);
+ while ((ReadReg & (XSDPS_PSR_CMD_SG_LVL_MASK |
+ XSDPS_PSR_DAT30_SG_LVL_MASK)) != 0U) {
+ ReadReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_PRES_STATE_OFFSET);
+ }
+
+ /* Stop the clock */
+ CtrlReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_CLK_CTRL_OFFSET);
+ CtrlReg &= ~(XSDPS_CC_SD_CLK_EN_MASK | XSDPS_CC_INT_CLK_EN_MASK);
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress, XSDPS_CLK_CTRL_OFFSET,
+ CtrlReg);
+
+ /* Wait minimum 5mSec */
+#if defined (__arm__) || defined (__aarch64__)
+
+ (void)usleep(5000U);
+
+#endif
+
+#ifdef __MICROBLAZE__
+
+ MB_Sleep(5U);
+
+#endif
+
+ /* Enabling 1.8V in controller */
+ CtrlReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_HOST_CTRL2_OFFSET);
+ CtrlReg |= XSDPS_HC2_1V8_EN_MASK;
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress, XSDPS_HOST_CTRL2_OFFSET,
+ CtrlReg);
+
+ /* Start clock */
+ Status = XSdPs_Change_ClkFreq(InstancePtr, XSDPS_CLK_400_KHZ);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ /* Wait for CMD and DATA line to go high */
+ ReadReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_PRES_STATE_OFFSET);
+ while ((ReadReg & (XSDPS_PSR_CMD_SG_LVL_MASK | XSDPS_PSR_DAT30_SG_LVL_MASK))
+ != (XSDPS_PSR_CMD_SG_LVL_MASK | XSDPS_PSR_DAT30_SG_LVL_MASK)) {
+ ReadReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_PRES_STATE_OFFSET);
+ }
+
+RETURN_PATH:
+ return Status;
+}
+
+/*****************************************************************************/
+/**
+
* This function does SD command generation.
*
* @param InstancePtr is a pointer to the instance to be worked on.
@@ -435,12 +884,12 @@ RETURN_PATH:
* is in progress or command or data inhibit is set
*
******************************************************************************/
-int XSdPs_CmdTransfer(XSdPs *InstancePtr, u32 Cmd, u32 Arg, u32 BlkCnt)
+s32 XSdPs_CmdTransfer(XSdPs *InstancePtr, u32 Cmd, u32 Arg, u32 BlkCnt)
{
u32 PresentStateReg;
u32 CommandReg;
u32 StatusReg;
- u32 Status;
+ s32 Status;
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -451,23 +900,19 @@ int XSdPs_CmdTransfer(XSdPs *InstancePtr, u32 Cmd, u32 Arg, u32 BlkCnt)
*/
PresentStateReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
XSDPS_PRES_STATE_OFFSET);
- if (PresentStateReg & XSDPS_PSR_INHIBIT_CMD_MASK) {
+ if ((PresentStateReg & XSDPS_PSR_INHIBIT_CMD_MASK) != 0U) {
Status = XST_FAILURE;
goto RETURN_PATH;
}
- /*
- * Write block count register
- */
+ /* Write block count register */
XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
- XSDPS_BLK_CNT_OFFSET, BlkCnt);
+ XSDPS_BLK_CNT_OFFSET, (u16)BlkCnt);
XSdPs_WriteReg8(InstancePtr->Config.BaseAddress,
- XSDPS_TIMEOUT_CTRL_OFFSET, 0xE);
+ XSDPS_TIMEOUT_CTRL_OFFSET, 0xEU);
- /*
- * Write argument register
- */
+ /* Write argument register */
XSdPs_WriteReg(InstancePtr->Config.BaseAddress,
XSDPS_ARGMT_OFFSET, Arg);
@@ -475,61 +920,68 @@ int XSdPs_CmdTransfer(XSdPs *InstancePtr, u32 Cmd, u32 Arg, u32 BlkCnt)
XSDPS_NORM_INTR_STS_OFFSET, XSDPS_NORM_INTR_ALL_MASK);
XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
XSDPS_ERR_INTR_STS_OFFSET, XSDPS_ERROR_INTR_ALL_MASK);
- /*
- * Command register is set to trigger transfer of command
- */
- CommandReg = XSdPs_FrameCmd(Cmd);
+ /* Command register is set to trigger transfer of command */
+ CommandReg = XSdPs_FrameCmd(InstancePtr, Cmd);
/*
* Mask to avoid writing to reserved bits 31-30
* This is necessary because 0x80000000 is used by this software to
* distinguish between ACMD and CMD of same number
*/
- CommandReg = CommandReg & 0x3FFF;
+ CommandReg = CommandReg & 0x3FFFU;
/*
- * Check for data inhibit in case of command using DAT lines
+ * Check for data inhibit in case of command using DAT lines.
+ * For Tuning Commands DAT lines check can be ignored.
*/
- PresentStateReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_PRES_STATE_OFFSET);
- if ((PresentStateReg & XSDPS_PSR_INHIBIT_DAT_MASK) &&
- (CommandReg & XSDPS_DAT_PRESENT_SEL_MASK)) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
+ if ((Cmd != CMD21) && (Cmd != CMD19)) {
+ PresentStateReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_PRES_STATE_OFFSET);
+ if (((PresentStateReg & (XSDPS_PSR_INHIBIT_DAT_MASK |
+ XSDPS_PSR_INHIBIT_DAT_MASK)) != 0U) &&
+ ((CommandReg & XSDPS_DAT_PRESENT_SEL_MASK) != 0U)) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
}
XSdPs_WriteReg16(InstancePtr->Config.BaseAddress, XSDPS_CMD_OFFSET,
- CommandReg);
+ (u16)CommandReg);
- /*
- * Polling for response for now
- */
+ /* Polling for response for now */
do {
StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
XSDPS_NORM_INTR_STS_OFFSET);
+ if ((Cmd == CMD21) || (Cmd == CMD19)) {
+ if ((XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET) & XSDPS_INTR_BRR_MASK) != 0U){
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_BRR_MASK);
+ break;
+ }
+ }
- if (StatusReg & XSDPS_INTR_ERR_MASK) {
-
- /*
- * Write to clear error bits
- */
+ if ((StatusReg & XSDPS_INTR_ERR_MASK) != 0U) {
+ Status = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_ERR_INTR_STS_OFFSET);
+ if ((Status & ~XSDPS_INTR_ERR_CT_MASK) == 0) {
+ Status = XSDPS_CT_ERROR;
+ }
+ /* Write to clear error bits */
XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
XSDPS_ERR_INTR_STS_OFFSET,
XSDPS_ERROR_INTR_ALL_MASK);
- Status = XST_FAILURE;
goto RETURN_PATH;
}
- } while((StatusReg & XSDPS_INTR_CC_MASK) == 0);
- /*
- * Write to clear bit
- */
+ } while((StatusReg & XSDPS_INTR_CC_MASK) == 0U);
+ /* Write to clear bit */
XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
XSDPS_NORM_INTR_STS_OFFSET,
XSDPS_INTR_CC_MASK);
Status = XST_SUCCESS;
- RETURN_PATH:
+RETURN_PATH:
return Status;
}
@@ -548,7 +1000,7 @@ int XSdPs_CmdTransfer(XSdPs *InstancePtr, u32 Cmd, u32 Arg, u32 BlkCnt)
* data, CRC and index related flags.
*
******************************************************************************/
-u32 XSdPs_FrameCmd(u32 Cmd)
+u32 XSdPs_FrameCmd(XSdPs *InstancePtr, u32 Cmd)
{
u32 RetVal;
@@ -573,37 +1025,30 @@ u32 XSdPs_FrameCmd(u32 Cmd)
case CMD5:
RetVal |= RESP_R1B;
break;
-
-#ifndef MMC_CARD
- case CMD6:
- RetVal |= RESP_R1 | XSDPS_DAT_PRESENT_SEL_MASK;
- break;
-#else
case CMD6:
- RetVal |= RESP_R1B;
+ if (InstancePtr->CardType == XSDPS_CARD_SD) {
+ RetVal |= RESP_R1 | (u32)XSDPS_DAT_PRESENT_SEL_MASK;
+ } else {
+ RetVal |= RESP_R1B;
+ }
break;
-#endif
-
case ACMD6:
RetVal |= RESP_R1;
break;
case CMD7:
RetVal |= RESP_R1;
break;
-
-#ifndef MMC_CARD
- case CMD8:
- RetVal |= RESP_R1;
- break;
-#else
case CMD8:
- RetVal |= RESP_R1 | XSDPS_DAT_PRESENT_SEL_MASK;
+ if (InstancePtr->CardType == XSDPS_CARD_SD) {
+ RetVal |= RESP_R1;
+ } else {
+ RetVal |= RESP_R1 | (u32)XSDPS_DAT_PRESENT_SEL_MASK;
+ }
break;
-#endif
-
case CMD9:
RetVal |= RESP_R2;
break;
+ case CMD11:
case CMD10:
case CMD12:
case ACMD13:
@@ -612,13 +1057,15 @@ u32 XSdPs_FrameCmd(u32 Cmd)
break;
case CMD17:
case CMD18:
- RetVal |= RESP_R1 | XSDPS_DAT_PRESENT_SEL_MASK;
+ case CMD19:
+ case CMD21:
+ RetVal |= RESP_R1 | (u32)XSDPS_DAT_PRESENT_SEL_MASK;
break;
case CMD23:
case ACMD23:
case CMD24:
case CMD25:
- RetVal |= RESP_R1 | XSDPS_DAT_PRESENT_SEL_MASK;
+ RetVal |= RESP_R1 | (u32)XSDPS_DAT_PRESENT_SEL_MASK;
case ACMD41:
RetVal |= RESP_R3;
break;
@@ -626,7 +1073,7 @@ u32 XSdPs_FrameCmd(u32 Cmd)
RetVal |= RESP_R1;
break;
case ACMD51:
- RetVal |= RESP_R1 | XSDPS_DAT_PRESENT_SEL_MASK;
+ RetVal |= RESP_R1 | (u32)XSDPS_DAT_PRESENT_SEL_MASK;
break;
case CMD52:
case CMD55:
@@ -634,6 +1081,9 @@ u32 XSdPs_FrameCmd(u32 Cmd)
break;
case CMD58:
break;
+ default :
+ RetVal |= Cmd;
+ break;
}
return RetVal;
@@ -655,27 +1105,27 @@ u32 XSdPs_FrameCmd(u32 Cmd)
* is in progress or command or data inhibit is set
*
******************************************************************************/
-int XSdPs_ReadPolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, u8 *Buff)
+s32 XSdPs_ReadPolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, u8 *Buff)
{
- u32 Status;
+ s32 Status;
u32 PresentStateReg;
u32 StatusReg;
- if(InstancePtr->Config.CardDetect) {
- /*
- * Check status to ensure card is initialized
- */
- PresentStateReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_PRES_STATE_OFFSET);
- if ((PresentStateReg & XSDPS_PSR_CARD_INSRT_MASK) == 0x0) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
+ if ((InstancePtr->HC_Version != XSDPS_HC_SPEC_V3) ||
+ ((InstancePtr->Host_Caps & XSDPS_CAPS_SLOT_TYPE_MASK)
+ != XSDPS_CAPS_EMB_SLOT)) {
+ if(InstancePtr->Config.CardDetect != 0U) {
+ /* Check status to ensure card is initialized */
+ PresentStateReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_PRES_STATE_OFFSET);
+ if ((PresentStateReg & XSDPS_PSR_CARD_INSRT_MASK) == 0x0U) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
}
}
- /*
- * Set block size to 512 if not already set
- */
+ /* Set block size to 512 if not already set */
if( XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
XSDPS_BLK_SIZE_OFFSET) != XSDPS_BLK_SIZE_512_MASK ) {
Status = XSdPs_SetBlkSize(InstancePtr,
@@ -694,46 +1144,38 @@ int XSdPs_ReadPolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, u8 *Buff)
XSDPS_TM_BLK_CNT_EN_MASK | XSDPS_TM_DAT_DIR_SEL_MASK |
XSDPS_TM_DMA_EN_MASK | XSDPS_TM_MUL_SIN_BLK_SEL_MASK);
- Xil_DCacheInvalidateRange(Buff, BlkCnt * XSDPS_BLK_SIZE_512_MASK);
+ Xil_DCacheInvalidateRange((INTPTR)Buff, BlkCnt * XSDPS_BLK_SIZE_512_MASK);
- /*
- * Send block read command
- */
+ /* Send block read command */
Status = XSdPs_CmdTransfer(InstancePtr, CMD18, Arg, BlkCnt);
if (Status != XST_SUCCESS) {
Status = XST_FAILURE;
goto RETURN_PATH;
}
- /*
- * Check for transfer complete
- */
+ /* Check for transfer complete */
do {
StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
XSDPS_NORM_INTR_STS_OFFSET);
- if (StatusReg & XSDPS_INTR_ERR_MASK) {
- /*
- * Write to clear error bits
- */
+ if ((StatusReg & XSDPS_INTR_ERR_MASK) != 0U) {
+ /* Write to clear error bits */
XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
XSDPS_ERR_INTR_STS_OFFSET,
XSDPS_ERROR_INTR_ALL_MASK);
Status = XST_FAILURE;
goto RETURN_PATH;
}
- } while((StatusReg & XSDPS_INTR_TC_MASK) == 0);
+ } while((StatusReg & XSDPS_INTR_TC_MASK) == 0U);
- /*
- * Write to clear bit
- */
+ /* Write to clear bit */
XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_TC_MASK);
- Status = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ Status = (s32)XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
XSDPS_RESP0_OFFSET);
Status = XST_SUCCESS;
- RETURN_PATH:
+RETURN_PATH:
return Status;
}
@@ -753,27 +1195,27 @@ int XSdPs_ReadPolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, u8 *Buff)
* is in progress or command or data inhibit is set
*
******************************************************************************/
-int XSdPs_WritePolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, const u8 *Buff)
+s32 XSdPs_WritePolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, const u8 *Buff)
{
- u32 Status;
+ s32 Status;
u32 PresentStateReg;
u32 StatusReg;
- if(InstancePtr->Config.CardDetect) {
- /*
- * Check status to ensure card is initialized
- */
- PresentStateReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_PRES_STATE_OFFSET);
- if ((PresentStateReg & XSDPS_PSR_CARD_INSRT_MASK) == 0x0) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
+ if ((InstancePtr->HC_Version != XSDPS_HC_SPEC_V3) ||
+ ((InstancePtr->Host_Caps & XSDPS_CAPS_SLOT_TYPE_MASK)
+ != XSDPS_CAPS_EMB_SLOT)) {
+ if(InstancePtr->Config.CardDetect != 0U) {
+ /* Check status to ensure card is initialized */
+ PresentStateReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_PRES_STATE_OFFSET);
+ if ((PresentStateReg & XSDPS_PSR_CARD_INSRT_MASK) == 0x0U) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
}
}
- /*
- * Set block size to 512 if not already set
- */
+ /* Set block size to 512 if not already set */
if( XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
XSDPS_BLK_SIZE_OFFSET) != XSDPS_BLK_SIZE_512_MASK ) {
Status = XSdPs_SetBlkSize(InstancePtr,
@@ -786,7 +1228,7 @@ int XSdPs_WritePolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, const u8 *Buff)
}
XSdPs_SetupADMA2DescTbl(InstancePtr, BlkCnt, Buff);
- Xil_DCacheFlushRange(Buff, BlkCnt * XSDPS_BLK_SIZE_512_MASK);
+ Xil_DCacheFlushRange((INTPTR)Buff, BlkCnt * XSDPS_BLK_SIZE_512_MASK);
XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
XSDPS_XFER_MODE_OFFSET,
@@ -794,9 +1236,7 @@ int XSdPs_WritePolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, const u8 *Buff)
XSDPS_TM_BLK_CNT_EN_MASK |
XSDPS_TM_MUL_SIN_BLK_SEL_MASK | XSDPS_TM_DMA_EN_MASK);
- /*
- * Send block write command
- */
+ /* Send block write command */
Status = XSdPs_CmdTransfer(InstancePtr, CMD25, Arg, BlkCnt);
if (Status != XST_SUCCESS) {
Status = XST_FAILURE;
@@ -810,21 +1250,17 @@ int XSdPs_WritePolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, const u8 *Buff)
do {
StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
XSDPS_NORM_INTR_STS_OFFSET);
- if (StatusReg & XSDPS_INTR_ERR_MASK) {
- /*
- * Write to clear error bits
- */
+ if ((StatusReg & XSDPS_INTR_ERR_MASK) != 0U) {
+ /* Write to clear error bits */
XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
XSDPS_ERR_INTR_STS_OFFSET,
XSDPS_ERROR_INTR_ALL_MASK);
Status = XST_FAILURE;
goto RETURN_PATH;
}
- } while((StatusReg & XSDPS_INTR_TC_MASK) == 0);
+ } while((StatusReg & XSDPS_INTR_TC_MASK) == 0U);
- /*
- * Write to clear bit
- */
+ /* Write to clear bit */
XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_TC_MASK);
@@ -849,35 +1285,19 @@ int XSdPs_WritePolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, const u8 *Buff)
* @note None.
*
******************************************************************************/
-int XSdPs_Select_Card (XSdPs *InstancePtr)
+s32 XSdPs_Select_Card (XSdPs *InstancePtr)
{
- u32 Status = 0;
+ s32 Status = 0;
- /*
- * Send CMD7 - Select card
- */
+ /* Send CMD7 - Select card */
Status = XSdPs_CmdTransfer(InstancePtr, CMD7,
- InstancePtr->RelCardAddr, 0);
+ InstancePtr->RelCardAddr, 0U);
if (Status != XST_SUCCESS) {
Status = XST_FAILURE;
goto RETURN_PATH;
}
- Status = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_RESP0_OFFSET);
-
- /*
- * Set default block size
- */
- Status = XSdPs_SetBlkSize(InstancePtr, XSDPS_BLK_SIZE_512_MASK);
- if (Status != XST_SUCCESS) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
- }
-
- Status = XST_SUCCESS;
-
- RETURN_PATH:
+RETURN_PATH:
return Status;
}
@@ -899,56 +1319,53 @@ int XSdPs_Select_Card (XSdPs *InstancePtr)
******************************************************************************/
void XSdPs_SetupADMA2DescTbl(XSdPs *InstancePtr, u32 BlkCnt, const u8 *Buff)
{
- u32 TotalDescLines = 0;
- u32 DescNum = 0;
- u32 BlkSize = 0;
+ u32 TotalDescLines = 0U;
+ u32 DescNum = 0U;
+ u32 BlkSize = 0U;
- /*
- * Setup ADMA2 - Write descriptor table and point ADMA SAR to it
- */
+ /* Setup ADMA2 - Write descriptor table and point ADMA SAR to it */
BlkSize = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
XSDPS_BLK_SIZE_OFFSET);
BlkSize = BlkSize & XSDPS_BLK_SIZE_MASK;
if((BlkCnt*BlkSize) < XSDPS_DESC_MAX_LENGTH) {
- TotalDescLines = 1;
+ TotalDescLines = 1U;
}else {
TotalDescLines = ((BlkCnt*BlkSize) / XSDPS_DESC_MAX_LENGTH);
- if ((BlkCnt * BlkSize) % XSDPS_DESC_MAX_LENGTH)
- TotalDescLines += 1;
+ if (((BlkCnt * BlkSize) % XSDPS_DESC_MAX_LENGTH) != 0U) {
+ TotalDescLines += 1U;
+ }
}
- for (DescNum = 0; DescNum < (TotalDescLines-1); DescNum++) {
+ for (DescNum = 0U; DescNum < (TotalDescLines-1); DescNum++) {
InstancePtr->Adma2_DescrTbl[DescNum].Address =
- (u32)(Buff + (DescNum*XSDPS_DESC_MAX_LENGTH));
+ (u32)((UINTPTR)Buff + (DescNum*XSDPS_DESC_MAX_LENGTH));
InstancePtr->Adma2_DescrTbl[DescNum].Attribute =
XSDPS_DESC_TRAN | XSDPS_DESC_VALID;
- /*
- * This will write '0' to length field which indicates 65536
- */
+ /* This will write '0' to length field which indicates 65536 */
InstancePtr->Adma2_DescrTbl[DescNum].Length =
(u16)XSDPS_DESC_MAX_LENGTH;
}
InstancePtr->Adma2_DescrTbl[TotalDescLines-1].Address =
- (u32)(Buff + (DescNum*XSDPS_DESC_MAX_LENGTH));
+ (u32)((UINTPTR)Buff + (DescNum*XSDPS_DESC_MAX_LENGTH));
InstancePtr->Adma2_DescrTbl[TotalDescLines-1].Attribute =
XSDPS_DESC_TRAN | XSDPS_DESC_END | XSDPS_DESC_VALID;
InstancePtr->Adma2_DescrTbl[TotalDescLines-1].Length =
- (BlkCnt*BlkSize) - (DescNum*XSDPS_DESC_MAX_LENGTH);
+ (u16)((BlkCnt*BlkSize) - (DescNum*XSDPS_DESC_MAX_LENGTH));
XSdPs_WriteReg(InstancePtr->Config.BaseAddress, XSDPS_ADMA_SAR_OFFSET,
- (u32)&(InstancePtr->Adma2_DescrTbl[0]));
+ (u32)(UINTPTR)&(InstancePtr->Adma2_DescrTbl[0]));
- Xil_DCacheFlushRange(&(InstancePtr->Adma2_DescrTbl[0]),
- sizeof(XSdPs_Adma2Descriptor) * 32);
+ Xil_DCacheFlushRange((INTPTR)&(InstancePtr->Adma2_DescrTbl[0]),
+ sizeof(XSdPs_Adma2Descriptor) * 32U);
}
@@ -975,90 +1392,65 @@ void XSdPs_SetupADMA2DescTbl(XSdPs *InstancePtr, u32 BlkCnt, const u8 *Buff)
* CMD9 is sent to read the card specific data.
*
******************************************************************************/
-int XSdPs_MmcCardInitialize(XSdPs *InstancePtr)
+s32 XSdPs_MmcCardInitialize(XSdPs *InstancePtr)
{
u32 PresentStateReg;
- u32 Status;
- u32 RespOCR = 0x0;
+ s32 Status;
+ u32 RespOCR;
u32 CSD[4];
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- if(InstancePtr->Config.CardDetect) {
- /*
- * Check the present state register to make sure
- * card is inserted and detected by host controller
- */
- PresentStateReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_PRES_STATE_OFFSET);
- if ((PresentStateReg & XSDPS_PSR_CARD_INSRT_MASK) == 0) {
- Status = XST_FAILURE;
- goto RETURN_PATH;
+ if ((InstancePtr->HC_Version != XSDPS_HC_SPEC_V3) ||
+ ((InstancePtr->Host_Caps & XSDPS_CAPS_SLOT_TYPE_MASK)
+ != XSDPS_CAPS_EMB_SLOT)) {
+ if(InstancePtr->Config.CardDetect != 0U) {
+ /*
+ * Check the present state register to make sure
+ * card is inserted and detected by host controller
+ */
+ PresentStateReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_PRES_STATE_OFFSET);
+ if ((PresentStateReg & XSDPS_PSR_CARD_INSRT_MASK) == 0U) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
}
}
- /*
- * 74 CLK delay after card is powered up, before the first command.
- */
-
-#ifdef __arm__
-
- usleep(XSDPS_INIT_DELAY);
-
-#endif
-
-#ifdef __MICROBLAZE__
-
- /* 2 msec delay */
- MB_Sleep(2);
-
-#endif
-
- /*
- * CMD0 no response expected
- */
- Status = XSdPs_CmdTransfer(InstancePtr, CMD0, 0, 0);
+ /* CMD0 no response expected */
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD0, 0U, 0U);
if (Status != XST_SUCCESS) {
Status = XST_FAILURE;
goto RETURN_PATH;
}
- InstancePtr->CardType = CT_MMC;
- RespOCR = 0;
- /*
- * Send CMD1 while card is still busy with power up
- */
- while ((RespOCR & XSDPS_RESPOCR_READY) == 0) {
+ RespOCR = 0U;
+ /* Send CMD1 while card is still busy with power up */
+ while ((RespOCR & XSDPS_RESPOCR_READY) == 0U) {
- /*
- * Host High Capacity support & High volage window
- */
+ /* Host High Capacity support & High volage window */
Status = XSdPs_CmdTransfer(InstancePtr, CMD1,
- XSDPS_ACMD41_HCS | XSDPS_CMD1_HIGH_VOL, 0);
+ XSDPS_ACMD41_HCS | XSDPS_CMD1_HIGH_VOL, 0U);
if (Status != XST_SUCCESS) {
Status = XST_FAILURE;
goto RETURN_PATH;
}
- /*
- * Response with card capacity
- */
+ /* Response with card capacity */
RespOCR = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
XSDPS_RESP0_OFFSET);
}
- /*
- * Update HCS support flag based on card capacity response
- */
- if (RespOCR & XSDPS_ACMD41_HCS)
- InstancePtr->HCS = 1;
+ /* Update HCS support flag based on card capacity response */
+ if ((RespOCR & XSDPS_ACMD41_HCS) != 0U) {
+ InstancePtr->HCS = 1U;
+ }
- /*
- * CMD2 for Card ID
- */
- Status = XSdPs_CmdTransfer(InstancePtr, CMD2, 0, 0);
+ /* CMD2 for Card ID */
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD2, 0U, 0U);
if (Status != XST_SUCCESS) {
Status = XST_FAILURE;
goto RETURN_PATH;
@@ -1077,21 +1469,15 @@ int XSdPs_MmcCardInitialize(XSdPs *InstancePtr)
XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
XSDPS_RESP3_OFFSET);
- Status = XSdPs_CmdTransfer(InstancePtr, CMD3, 0, 0);
+ /* Set relative card address */
+ InstancePtr->RelCardAddr = 0x12340000U;
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD3, (InstancePtr->RelCardAddr), 0U);
if (Status != XST_SUCCESS) {
Status = XST_FAILURE;
goto RETURN_PATH;
}
- /*
- * Relative card address is stored as the upper 16 bits
- * This is to avoid shifting when sending commands
- */
- InstancePtr->RelCardAddr =
- XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSDPS_RESP0_OFFSET) & 0xFFFF0000;
-
- Status = XSdPs_CmdTransfer(InstancePtr, CMD9, (InstancePtr->RelCardAddr), 0);
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD9, (InstancePtr->RelCardAddr), 0U);
if (Status != XST_SUCCESS) {
Status = XST_FAILURE;
goto RETURN_PATH;
@@ -1110,9 +1496,12 @@ int XSdPs_MmcCardInitialize(XSdPs *InstancePtr)
CSD[3] = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
XSDPS_RESP3_OFFSET);
+ InstancePtr->Card_Version = (CSD[3] & CSD_SPEC_VER_MASK) >>18U;
+
Status = XST_SUCCESS;
RETURN_PATH:
return Status;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xsdps.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps.h
similarity index 78%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xsdps.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps.h
index 64532a0d3..409653891 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xsdps.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps.h
@@ -33,6 +33,9 @@
/**
*
* @file xsdps.h
+* @addtogroup sdps_v2_5
+* @{
+* @details
*
* This file contains the implementation of XSdPs driver.
* This driver is used initialize read from and write to the SD card.
@@ -113,6 +116,15 @@
* Checked for DAT Inhibit mask instead of CMD
* Inhibit mask in Cmd Transfer API.
* Added Support for SD Card v1.0
+* 2.5 sg 07/09/15 Added SD 3.0 features
+* kvn 07/15/15 Modified the code according to MISRAC-2012.
+* 2.6 sk 10/12/15 Added support for SD card v1.0 CR# 840601.
+* 2.7 sk 11/24/15 Considered the slot type befoe checking CD/WP pins.
+* sk 12/10/15 Added support for MMC cards.
+* 01/08/16 Added workaround for issue in auto tuning mode
+* of SDR50, SDR104 and HS200.
+* sk 02/16/16 Corrected the Tuning logic.
+* sk 03/01/16 Removed Bus Width check for eMMC. CR# 938311.
*
*
*
@@ -126,17 +138,17 @@
extern "C" {
#endif
+#include "xil_printf.h"
+#include "xil_cache.h"
#include "xstatus.h"
#include "xsdps_hw.h"
#include
/************************** Constant Definitions *****************************/
-#define XSDPS_CLK_400_KHZ 400000 /**< 400 KHZ */
-#define XSDPS_CLK_50_MHZ 50000000 /**< 50 MHZ */
-#define CT_MMC 0x1 /**< MMC Card */
-#define CT_SD1 0x2 /**< SD ver 1 */
-#define CT_SD2 0x3 /**< SD ver 2 */
+#define XSDPS_CT_ERROR 0x2U /**< Command timeout flag */
+#define MAX_TUNING_COUNT 40U /**< Maximum Tuning count */
+
/**************************** Type Definitions *******************************/
/**
* This typedef contains configuration information for the device.
@@ -149,9 +161,7 @@ typedef struct {
u32 WriteProtect; /**< Write Protect */
} XSdPs_Config;
-/*
- * ADMA2 descriptor table
- */
+/* ADMA2 descriptor table */
typedef struct {
u16 Attribute; /**< Attributes of descriptor */
u16 Length; /**< Length of current dma transfer */
@@ -167,10 +177,18 @@ typedef struct {
XSdPs_Config Config; /**< Configuration structure */
u32 IsReady; /**< Device is initialized and ready */
u32 Host_Caps; /**< Capabilities of host controller */
+ u32 Host_CapsExt; /**< Extended Capabilities */
u32 HCS; /**< High capacity support in card */
- u32 CardID[4]; /**< Card ID */
+ u8 CardType; /**< Type of card - SD/MMC/eMMC */
+ u8 Card_Version; /**< Card version */
+ u8 HC_Version; /**< Host controller version */
+ u8 BusWidth; /**< Current operating bus width */
+ u32 BusSpeed; /**< Current operating bus speed */
+ u8 Switch1v8; /**< 1.8V Switch support */
+ u32 CardID[4]; /**< Card ID Register */
u32 RelCardAddr; /**< Relative Card Address */
- u32 CardType; /**< Card Type(version) */
+ u32 CardSpecData[4]; /**< Card Specific Data Register */
+ u32 SdCardConfig; /**< Sd Card Configuration Register */
/**< ADMA Descriptors */
#ifdef __ICCARM__
#pragma data_alignment = 32
@@ -185,24 +203,26 @@ typedef struct {
/************************** Function Prototypes ******************************/
XSdPs_Config *XSdPs_LookupConfig(u16 DeviceId);
-int XSdPs_CfgInitialize(XSdPs *InstancePtr, XSdPs_Config *ConfigPtr,
+s32 XSdPs_CfgInitialize(XSdPs *InstancePtr, XSdPs_Config *ConfigPtr,
u32 EffectiveAddr);
-int XSdPs_SdCardInitialize(XSdPs *InstancePtr);
-int XSdPs_ReadPolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, u8 *Buff);
-int XSdPs_WritePolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, const u8 *Buff);
-int XSdPs_SetBlkSize(XSdPs *InstancePtr, u16 BlkSize);
-int XSdPs_Select_Card (XSdPs *InstancePtr);
-int XSdPs_Change_ClkFreq(XSdPs *InstancePtr, u32 SelFreq);
-int XSdPs_Change_BusWidth(XSdPs *InstancePtr);
-int XSdPs_Change_BusSpeed(XSdPs *InstancePtr);
-int XSdPs_Get_BusWidth(XSdPs *InstancePtr, u8 *SCR);
-int XSdPs_Get_BusSpeed(XSdPs *InstancePtr, u8 *ReadBuff);
-int XSdPs_Pullup(XSdPs *InstancePtr);
-int XSdPs_MmcCardInitialize(XSdPs *InstancePtr);
-int XSdPs_Get_Mmc_ExtCsd(XSdPs *InstancePtr, u8 *ReadBuff);
+s32 XSdPs_SdCardInitialize(XSdPs *InstancePtr);
+s32 XSdPs_ReadPolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, u8 *Buff);
+s32 XSdPs_WritePolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, const u8 *Buff);
+s32 XSdPs_SetBlkSize(XSdPs *InstancePtr, u16 BlkSize);
+s32 XSdPs_Select_Card (XSdPs *InstancePtr);
+s32 XSdPs_Change_ClkFreq(XSdPs *InstancePtr, u32 SelFreq);
+s32 XSdPs_Change_BusWidth(XSdPs *InstancePtr);
+s32 XSdPs_Change_BusSpeed(XSdPs *InstancePtr);
+s32 XSdPs_Get_BusWidth(XSdPs *InstancePtr, u8 *SCR);
+s32 XSdPs_Get_BusSpeed(XSdPs *InstancePtr, u8 *ReadBuff);
+s32 XSdPs_Pullup(XSdPs *InstancePtr);
+s32 XSdPs_MmcCardInitialize(XSdPs *InstancePtr);
+s32 XSdPs_CardInitialize(XSdPs *InstancePtr);
+s32 XSdPs_Get_Mmc_ExtCsd(XSdPs *InstancePtr, u8 *ReadBuff);
#ifdef __cplusplus
}
#endif
#endif /* SD_H_ */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps_g.c
similarity index 86%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps_g.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps_g.c
index 535a31c62..b5d2e4be8 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps_g.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps_g.c
@@ -1,65 +1,58 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Driver configuration
-*
-*******************************************************************/
-
-#include "xparameters.h"
-#include "xsdps.h"
-
-/*
-* The configuration table for devices
-*/
-
-XSdPs_Config XSdPs_ConfigTable[] =
-{
- {
- XPAR_PSU_SD_0_DEVICE_ID,
- XPAR_PSU_SD_0_BASEADDR,
- XPAR_PSU_SD_0_SDIO_CLK_FREQ_HZ,
- XPAR_PSU_SD_0_HAS_CD,
- XPAR_PSU_SD_0_HAS_WP
- },
- {
- XPAR_PSU_SD_1_DEVICE_ID,
- XPAR_PSU_SD_1_BASEADDR,
- XPAR_PSU_SD_1_SDIO_CLK_FREQ_HZ,
- XPAR_PSU_SD_1_HAS_CD,
- XPAR_PSU_SD_1_HAS_WP
- }
-};
-
-
+
+/*******************************************************************
+*
+* CAUTION: This file is automatically generated by HSI.
+* Version:
+* DO NOT EDIT.
+*
+* Copyright (C) 2010-2016 Xilinx, Inc. All Rights Reserved.*
+*Permission is hereby granted, free of charge, to any person obtaining a copy
+*of this software and associated documentation files (the Software), to deal
+*in the Software without restriction, including without limitation the rights
+*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*copies of the Software, and to permit persons to whom the Software is
+*furnished to do so, subject to the following conditions:
+*
+*The above copyright notice and this permission notice shall be included in
+*all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+*(a) running on a Xilinx device, or
+*(b) that interact with a Xilinx device through a bus or interconnect.
+*
+*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+*XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+*Except as contained in this notice, the name of the Xilinx shall not be used
+*in advertising or otherwise to promote the sale, use or other dealings in
+*this Software without prior written authorization from Xilinx.
+*
+
+*
+* Description: Driver configuration
+*
+*******************************************************************/
+
+#include "xparameters.h"
+#include "xsdps.h"
+
+/*
+* The configuration table for devices
+*/
+
+XSdPs_Config XSdPs_ConfigTable[] =
+{
+ {
+ XPAR_PSU_SD_1_DEVICE_ID,
+ XPAR_PSU_SD_1_BASEADDR,
+ XPAR_PSU_SD_1_SDIO_CLK_FREQ_HZ,
+ XPAR_PSU_SD_1_HAS_CD,
+ XPAR_PSU_SD_1_HAS_WP
+ }
+};
+
+
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps_hw.h
new file mode 100644
index 000000000..c797e8216
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps_hw.h
@@ -0,0 +1,1186 @@
+/******************************************************************************
+*
+* Copyright (C) 2013 - 2015 Xilinx, Inc. All rights reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+* (a) running on a Xilinx device, or
+* (b) that interact with a Xilinx device through a bus or interconnect.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*
+* Except as contained in this notice, the name of the Xilinx shall not be used
+* in advertising or otherwise to promote the sale, use or other dealings in
+* this Software without prior written authorization from Xilinx.
+*
+******************************************************************************/
+/*****************************************************************************/
+/**
+*
+* @file xsdps_hw.h
+* @addtogroup sdps_v2_5
+* @{
+*
+* This header file contains the identifiers and basic HW access driver
+* functions (or macros) that can be used to access the device. Other driver
+* functions are defined in xsdps.h.
+*
+*
+* MODIFICATION HISTORY:
+*
+* Ver Who Date Changes
+* ----- --- -------- -----------------------------------------------
+* 1.00a hk/sg 10/17/13 Initial release
+* 2.5 sg 07/09/15 Added SD 3.0 features
+* kvn 07/15/15 Modified the code according to MISRAC-2012.
+* 2.7 sk 12/10/15 Added support for MMC cards.
+* sk 03/02/16 Configured the Tap Delay values for eMMC HS200 mode.
+*
+*
+******************************************************************************/
+
+#ifndef SD_HW_H_
+#define SD_HW_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************** Include Files *********************************/
+
+#include "xil_types.h"
+#include "xil_assert.h"
+#include "xil_io.h"
+#include "xparameters.h"
+
+/************************** Constant Definitions *****************************/
+
+/** @name Register Map
+ *
+ * Register offsets from the base address of an SD device.
+ * @{
+ */
+
+#define XSDPS_SDMA_SYS_ADDR_OFFSET 0x00U /**< SDMA System Address
+ Register */
+#define XSDPS_SDMA_SYS_ADDR_LO_OFFSET XSDPS_SDMA_SYS_ADDR_OFFSET
+ /**< SDMA System Address
+ Low Register */
+#define XSDPS_ARGMT2_LO_OFFSET 0x00U /**< Argument2 Low Register */
+#define XSDPS_SDMA_SYS_ADDR_HI_OFFSET 0x02U /**< SDMA System Address
+ High Register */
+#define XSDPS_ARGMT2_HI_OFFSET 0x02U /**< Argument2 High Register */
+
+#define XSDPS_BLK_SIZE_OFFSET 0x04U /**< Block Size Register */
+#define XSDPS_BLK_CNT_OFFSET 0x06U /**< Block Count Register */
+#define XSDPS_ARGMT_OFFSET 0x08U /**< Argument Register */
+#define XSDPS_ARGMT1_LO_OFFSET XSDPS_ARGMT_OFFSET
+ /**< Argument1 Register */
+#define XSDPS_ARGMT1_HI_OFFSET 0x0AU /**< Argument1 Register */
+
+#define XSDPS_XFER_MODE_OFFSET 0x0CU /**< Transfer Mode Register */
+#define XSDPS_CMD_OFFSET 0x0EU /**< Command Register */
+#define XSDPS_RESP0_OFFSET 0x10U /**< Response0 Register */
+#define XSDPS_RESP1_OFFSET 0x14U /**< Response1 Register */
+#define XSDPS_RESP2_OFFSET 0x18U /**< Response2 Register */
+#define XSDPS_RESP3_OFFSET 0x1CU /**< Response3 Register */
+#define XSDPS_BUF_DAT_PORT_OFFSET 0x20U /**< Buffer Data Port */
+#define XSDPS_PRES_STATE_OFFSET 0x24U /**< Present State */
+#define XSDPS_HOST_CTRL1_OFFSET 0x28U /**< Host Control 1 */
+#define XSDPS_POWER_CTRL_OFFSET 0x29U /**< Power Control */
+#define XSDPS_BLK_GAP_CTRL_OFFSET 0x2AU /**< Block Gap Control */
+#define XSDPS_WAKE_UP_CTRL_OFFSET 0x2BU /**< Wake Up Control */
+#define XSDPS_CLK_CTRL_OFFSET 0x2CU /**< Clock Control */
+#define XSDPS_TIMEOUT_CTRL_OFFSET 0x2EU /**< Timeout Control */
+#define XSDPS_SW_RST_OFFSET 0x2FU /**< Software Reset */
+#define XSDPS_NORM_INTR_STS_OFFSET 0x30U /**< Normal Interrupt
+ Status Register */
+#define XSDPS_ERR_INTR_STS_OFFSET 0x32U /**< Error Interrupt
+ Status Register */
+#define XSDPS_NORM_INTR_STS_EN_OFFSET 0x34U /**< Normal Interrupt
+ Status Enable Register */
+#define XSDPS_ERR_INTR_STS_EN_OFFSET 0x36U /**< Error Interrupt
+ Status Enable Register */
+#define XSDPS_NORM_INTR_SIG_EN_OFFSET 0x38U /**< Normal Interrupt
+ Signal Enable Register */
+#define XSDPS_ERR_INTR_SIG_EN_OFFSET 0x3AU /**< Error Interrupt
+ Signal Enable Register */
+
+#define XSDPS_AUTO_CMD12_ERR_STS_OFFSET 0x3CU /**< Auto CMD12 Error Status
+ Register */
+#define XSDPS_HOST_CTRL2_OFFSET 0x3EU /**< Host Control2 Register */
+#define XSDPS_CAPS_OFFSET 0x40U /**< Capabilities Register */
+#define XSDPS_CAPS_EXT_OFFSET 0x44U /**< Capabilities Extended */
+#define XSDPS_MAX_CURR_CAPS_OFFSET 0x48U /**< Maximum Current
+ Capabilities Register */
+#define XSDPS_MAX_CURR_CAPS_EXT_OFFSET 0x4CU /**< Maximum Current
+ Capabilities Ext Register */
+#define XSDPS_FE_ERR_INT_STS_OFFSET 0x52U /**< Force Event for
+ Error Interrupt Status */
+#define XSDPS_FE_AUTO_CMD12_EIS_OFFSET 0x50U /**< Auto CM12 Error Interrupt
+ Status Register */
+#define XSDPS_ADMA_ERR_STS_OFFSET 0x54U /**< ADMA Error Status
+ Register */
+#define XSDPS_ADMA_SAR_OFFSET 0x58U /**< ADMA System Address
+ Register */
+#define XSDPS_ADMA_SAR_EXT_OFFSET 0x5CU /**< ADMA System Address
+ Extended Register */
+#define XSDPS_PRE_VAL_1_OFFSET 0x60U /**< Preset Value Register */
+#define XSDPS_PRE_VAL_2_OFFSET 0x64U /**< Preset Value Register */
+#define XSDPS_PRE_VAL_3_OFFSET 0x68U /**< Preset Value Register */
+#define XSDPS_PRE_VAL_4_OFFSET 0x6CU /**< Preset Value Register */
+#define XSDPS_BOOT_TOUT_CTRL_OFFSET 0x70U /**< Boot timeout control
+ register */
+
+#define XSDPS_SHARED_BUS_CTRL_OFFSET 0xE0U /**< Shared Bus Control
+ Register */
+#define XSDPS_SLOT_INTR_STS_OFFSET 0xFCU /**< Slot Interrupt Status
+ Register */
+#define XSDPS_HOST_CTRL_VER_OFFSET 0xFEU /**< Host Controller Version
+ Register */
+
+/* @} */
+
+/** @name Control Register - Host control, Power control,
+ * Block Gap control and Wakeup control
+ *
+ * This register contains bits for various configuration options of
+ * the SD host controller. Read/Write apart from the reserved bits.
+ * @{
+ */
+
+#define XSDPS_HC_LED_MASK 0x00000001U /**< LED Control */
+#define XSDPS_HC_WIDTH_MASK 0x00000002U /**< Bus width */
+#define XSDPS_HC_BUS_WIDTH_4 0x00000002U
+#define XSDPS_HC_SPEED_MASK 0x00000004U /**< High Speed */
+#define XSDPS_HC_DMA_MASK 0x00000018U /**< DMA Mode Select */
+#define XSDPS_HC_DMA_SDMA_MASK 0x00000000U /**< SDMA Mode */
+#define XSDPS_HC_DMA_ADMA1_MASK 0x00000008U /**< ADMA1 Mode */
+#define XSDPS_HC_DMA_ADMA2_32_MASK 0x00000010U /**< ADMA2 Mode - 32 bit */
+#define XSDPS_HC_DMA_ADMA2_64_MASK 0x00000018U /**< ADMA2 Mode - 64 bit */
+#define XSDPS_HC_EXT_BUS_WIDTH 0x00000020U /**< Bus width - 8 bit */
+#define XSDPS_HC_CARD_DET_TL_MASK 0x00000040U /**< Card Detect Tst Lvl */
+#define XSDPS_HC_CARD_DET_SD_MASK 0x00000080U /**< Card Detect Sig Det */
+
+#define XSDPS_PC_BUS_PWR_MASK 0x00000001U /**< Bus Power Control */
+#define XSDPS_PC_BUS_VSEL_MASK 0x0000000EU /**< Bus Voltage Select */
+#define XSDPS_PC_BUS_VSEL_3V3_MASK 0x0000000EU /**< Bus Voltage 3.3V */
+#define XSDPS_PC_BUS_VSEL_3V0_MASK 0x0000000CU /**< Bus Voltage 3.0V */
+#define XSDPS_PC_BUS_VSEL_1V8_MASK 0x0000000AU /**< Bus Voltage 1.8V */
+#define XSDPS_PC_EMMC_HW_RST_MASK 0x00000010U /**< HW reset for eMMC */
+
+#define XSDPS_BGC_STP_REQ_MASK 0x00000001U /**< Block Gap Stop Req */
+#define XSDPS_BGC_CNT_REQ_MASK 0x00000002U /**< Block Gap Cont Req */
+#define XSDPS_BGC_RWC_MASK 0x00000004U /**< Block Gap Rd Wait */
+#define XSDPS_BGC_INTR_MASK 0x00000008U /**< Block Gap Intr */
+#define XSDPS_BGC_SPI_MODE_MASK 0x00000010U /**< Block Gap SPI Mode */
+#define XSDPS_BGC_BOOT_EN_MASK 0x00000020U /**< Block Gap Boot Enb */
+#define XSDPS_BGC_ALT_BOOT_EN_MASK 0x00000040U /**< Block Gap Alt BootEn */
+#define XSDPS_BGC_BOOT_ACK_MASK 0x00000080U /**< Block Gap Boot Ack */
+
+#define XSDPS_WC_WUP_ON_INTR_MASK 0x00000001U /**< Wakeup Card Intr */
+#define XSDPS_WC_WUP_ON_INSRT_MASK 0x00000002U /**< Wakeup Card Insert */
+#define XSDPS_WC_WUP_ON_REM_MASK 0x00000004U /**< Wakeup Card Removal */
+
+/* @} */
+
+/** @name Control Register - Clock control, Timeout control & Software reset
+ *
+ * This register contains bits for configuration options of clock, timeout and
+ * software reset.
+ * Read/Write except for Inter_Clock_Stable bit (read only) and reserved bits.
+ * @{
+ */
+
+#define XSDPS_CC_INT_CLK_EN_MASK 0x00000001U
+#define XSDPS_CC_INT_CLK_STABLE_MASK 0x00000002U
+#define XSDPS_CC_SD_CLK_EN_MASK 0x00000004U
+#define XSDPS_CC_SD_CLK_GEN_SEL_MASK 0x00000020U
+#define XSDPS_CC_SDCLK_FREQ_SEL_EXT_MASK 0x000000C0U
+#define XSDPS_CC_SDCLK_FREQ_SEL_MASK 0x0000FF00U
+#define XSDPS_CC_SDCLK_FREQ_D256_MASK 0x00008000U
+#define XSDPS_CC_SDCLK_FREQ_D128_MASK 0x00004000U
+#define XSDPS_CC_SDCLK_FREQ_D64_MASK 0x00002000U
+#define XSDPS_CC_SDCLK_FREQ_D32_MASK 0x00001000U
+#define XSDPS_CC_SDCLK_FREQ_D16_MASK 0x00000800U
+#define XSDPS_CC_SDCLK_FREQ_D8_MASK 0x00000400U
+#define XSDPS_CC_SDCLK_FREQ_D4_MASK 0x00000200U
+#define XSDPS_CC_SDCLK_FREQ_D2_MASK 0x00000100U
+#define XSDPS_CC_SDCLK_FREQ_BASE_MASK 0x00000000U
+#define XSDPS_CC_MAX_DIV_CNT 256U
+#define XSDPS_CC_EXT_MAX_DIV_CNT 2046U
+#define XSDPS_CC_EXT_DIV_SHIFT 6U
+
+#define XSDPS_TC_CNTR_VAL_MASK 0x0000000FU
+
+#define XSDPS_SWRST_ALL_MASK 0x00000001U
+#define XSDPS_SWRST_CMD_LINE_MASK 0x00000002U
+#define XSDPS_SWRST_DAT_LINE_MASK 0x00000004U
+
+#define XSDPS_CC_MAX_NUM_OF_DIV 9U
+#define XSDPS_CC_DIV_SHIFT 8U
+
+/* @} */
+
+/** @name SD Interrupt Registers
+ *
+ * Normal and Error Interrupt Status Register
+ * This register shows the normal and error interrupt status.
+ * Status enable register affects reads of this register.
+ * If Signal enable register is set and the corresponding status bit is set,
+ * interrupt is generated.
+ * Write to clear except
+ * Error_interrupt and Card_Interrupt bits - Read only
+ *
+ * Normal and Error Interrupt Status Enable Register
+ * Setting this register bits enables Interrupt status.
+ * Read/Write except Fixed_to_0 bit (Read only)
+ *
+ * Normal and Error Interrupt Signal Enable Register
+ * This register is used to select which interrupt status is
+ * indicated to the Host System as the interrupt.
+ * Read/Write except Fixed_to_0 bit (Read only)
+ *
+ * All three registers have same bit definitions
+ * @{
+ */
+
+#define XSDPS_INTR_CC_MASK 0x00000001U /**< Command Complete */
+#define XSDPS_INTR_TC_MASK 0x00000002U /**< Transfer Complete */
+#define XSDPS_INTR_BGE_MASK 0x00000004U /**< Block Gap Event */
+#define XSDPS_INTR_DMA_MASK 0x00000008U /**< DMA Interrupt */
+#define XSDPS_INTR_BWR_MASK 0x00000010U /**< Buffer Write Ready */
+#define XSDPS_INTR_BRR_MASK 0x00000020U /**< Buffer Read Ready */
+#define XSDPS_INTR_CARD_INSRT_MASK 0x00000040U /**< Card Insert */
+#define XSDPS_INTR_CARD_REM_MASK 0x00000080U /**< Card Remove */
+#define XSDPS_INTR_CARD_MASK 0x00000100U /**< Card Interrupt */
+#define XSDPS_INTR_INT_A_MASK 0x00000200U /**< INT A Interrupt */
+#define XSDPS_INTR_INT_B_MASK 0x00000400U /**< INT B Interrupt */
+#define XSDPS_INTR_INT_C_MASK 0x00000800U /**< INT C Interrupt */
+#define XSDPS_INTR_RE_TUNING_MASK 0x00001000U /**< Re-Tuning Interrupt */
+#define XSDPS_INTR_BOOT_ACK_RECV_MASK 0x00002000U /**< Boot Ack Recv
+ Interrupt */
+#define XSDPS_INTR_BOOT_TERM_MASK 0x00004000U /**< Boot Terminate
+ Interrupt */
+#define XSDPS_INTR_ERR_MASK 0x00008000U /**< Error Interrupt */
+#define XSDPS_NORM_INTR_ALL_MASK 0x0000FFFFU
+
+#define XSDPS_INTR_ERR_CT_MASK 0x00000001U /**< Command Timeout
+ Error */
+#define XSDPS_INTR_ERR_CCRC_MASK 0x00000002U /**< Command CRC Error */
+#define XSDPS_INTR_ERR_CEB_MASK 0x00000004U /**< Command End Bit
+ Error */
+#define XSDPS_INTR_ERR_CI_MASK 0x00000008U /**< Command Index Error */
+#define XSDPS_INTR_ERR_DT_MASK 0x00000010U /**< Data Timeout Error */
+#define XSDPS_INTR_ERR_DCRC_MASK 0x00000020U /**< Data CRC Error */
+#define XSDPS_INTR_ERR_DEB_MASK 0x00000040U /**< Data End Bit Error */
+#define XSDPS_INTR_ERR_CUR_LMT_MASK 0x00000080U /**< Current Limit Error */
+#define XSDPS_INTR_ERR_AUTO_CMD12_MASK 0x00000100U /**< Auto CMD12 Error */
+#define XSDPS_INTR_ERR_ADMA_MASK 0x00000200U /**< ADMA Error */
+#define XSDPS_INTR_ERR_TR_MASK 0x00001000U /**< Tuning Error */
+#define XSDPS_INTR_VEND_SPF_ERR_MASK 0x0000E000U /**< Vendor Specific
+ Error */
+#define XSDPS_ERROR_INTR_ALL_MASK 0x0000F3FFU /**< Mask for error bits */
+/* @} */
+
+/** @name Block Size and Block Count Register
+ *
+ * This register contains the block count for current transfer,
+ * block size and SDMA buffer size.
+ * Read/Write except for reserved bits.
+ * @{
+ */
+
+#define XSDPS_BLK_SIZE_MASK 0x00000FFFU /**< Transfer Block Size */
+#define XSDPS_SDMA_BUFF_SIZE_MASK 0x00007000U /**< Host SDMA Buffer Size */
+#define XSDPS_BLK_SIZE_1024 0x400U
+#define XSDPS_BLK_SIZE_2048 0x800U
+#define XSDPS_BLK_CNT_MASK 0x0000FFFFU /**< Block Count for
+ Current Transfer */
+
+/* @} */
+
+/** @name Transfer Mode and Command Register
+ *
+ * The Transfer Mode register is used to control the data transfers and
+ * Command register is used for command generation
+ * Read/Write except for reserved bits.
+ * @{
+ */
+
+#define XSDPS_TM_DMA_EN_MASK 0x00000001U /**< DMA Enable */
+#define XSDPS_TM_BLK_CNT_EN_MASK 0x00000002U /**< Block Count Enable */
+#define XSDPS_TM_AUTO_CMD12_EN_MASK 0x00000004U /**< Auto CMD12 Enable */
+#define XSDPS_TM_DAT_DIR_SEL_MASK 0x00000010U /**< Data Transfer
+ Direction Select */
+#define XSDPS_TM_MUL_SIN_BLK_SEL_MASK 0x00000020U /**< Multi/Single
+ Block Select */
+
+#define XSDPS_CMD_RESP_SEL_MASK 0x00000003U /**< Response Type
+ Select */
+#define XSDPS_CMD_RESP_NONE_MASK 0x00000000U /**< No Response */
+#define XSDPS_CMD_RESP_L136_MASK 0x00000001U /**< Response length 138 */
+#define XSDPS_CMD_RESP_L48_MASK 0x00000002U /**< Response length 48 */
+#define XSDPS_CMD_RESP_L48_BSY_CHK_MASK 0x00000003U /**< Response length 48 &
+ check busy after
+ response */
+#define XSDPS_CMD_CRC_CHK_EN_MASK 0x00000008U /**< Command CRC Check
+ Enable */
+#define XSDPS_CMD_INX_CHK_EN_MASK 0x00000010U /**< Command Index Check
+ Enable */
+#define XSDPS_DAT_PRESENT_SEL_MASK 0x00000020U /**< Data Present Select */
+#define XSDPS_CMD_TYPE_MASK 0x000000C0U /**< Command Type */
+#define XSDPS_CMD_TYPE_NORM_MASK 0x00000000U /**< CMD Type - Normal */
+#define XSDPS_CMD_TYPE_SUSPEND_MASK 0x00000040U /**< CMD Type - Suspend */
+#define XSDPS_CMD_TYPE_RESUME_MASK 0x00000080U /**< CMD Type - Resume */
+#define XSDPS_CMD_TYPE_ABORT_MASK 0x000000C0U /**< CMD Type - Abort */
+#define XSDPS_CMD_MASK 0x00003F00U /**< Command Index Mask -
+ Set to CMD0-63,
+ AMCD0-63 */
+
+/* @} */
+
+/** @name Auto CMD Error Status Register
+ *
+ * This register is read only register which contains
+ * information about the error status of Auto CMD 12 and 23.
+ * Read Only
+ * @{
+ */
+#define XSDPS_AUTO_CMD12_NT_EX_MASK 0x0001U /**< Auto CMD12 Not
+ executed */
+#define XSDPS_AUTO_CMD_TOUT_MASK 0x0002U /**< Auto CMD Timeout
+ Error */
+#define XSDPS_AUTO_CMD_CRC_MASK 0x0004U /**< Auto CMD CRC Error */
+#define XSDPS_AUTO_CMD_EB_MASK 0x0008U /**< Auto CMD End Bit
+ Error */
+#define XSDPS_AUTO_CMD_IND_MASK 0x0010U /**< Auto CMD Index Error */
+#define XSDPS_AUTO_CMD_CNI_ERR_MASK 0x0080U /**< Command not issued by
+ Auto CMD12 Error */
+/* @} */
+
+/** @name Host Control2 Register
+ *
+ * This register contains extended configuration bits.
+ * Read Write
+ * @{
+ */
+#define XSDPS_HC2_UHS_MODE_MASK 0x0007U /**< UHS Mode select bits */
+#define XSDPS_HC2_UHS_MODE_SDR12_MASK 0x0000U /**< SDR12 UHS Mode */
+#define XSDPS_HC2_UHS_MODE_SDR25_MASK 0x0001U /**< SDR25 UHS Mode */
+#define XSDPS_HC2_UHS_MODE_SDR50_MASK 0x0002U /**< SDR50 UHS Mode */
+#define XSDPS_HC2_UHS_MODE_SDR104_MASK 0x0003U /**< SDR104 UHS Mode */
+#define XSDPS_HC2_UHS_MODE_DDR50_MASK 0x0004U /**< DDR50 UHS Mode */
+#define XSDPS_HC2_1V8_EN_MASK 0x0008U /**< 1.8V Signal Enable */
+#define XSDPS_HC2_DRV_STR_SEL_MASK 0x0030U /**< Driver Strength
+ Selection */
+#define XSDPS_HC2_DRV_STR_B_MASK 0x0000U /**< Driver Strength B */
+#define XSDPS_HC2_DRV_STR_A_MASK 0x0010U /**< Driver Strength A */
+#define XSDPS_HC2_DRV_STR_C_MASK 0x0020U /**< Driver Strength C */
+#define XSDPS_HC2_DRV_STR_D_MASK 0x0030U /**< Driver Strength D */
+#define XSDPS_HC2_EXEC_TNG_MASK 0x0040U /**< Execute Tuning */
+#define XSDPS_HC2_SAMP_CLK_SEL_MASK 0x0080U /**< Sampling Clock
+ Selection */
+#define XSDPS_HC2_ASYNC_INTR_EN_MASK 0x4000U /**< Asynchronous Interrupt
+ Enable */
+#define XSDPS_HC2_PRE_VAL_EN_MASK 0x8000U /**< Preset Value Enable */
+
+/* @} */
+
+/** @name Capabilities Register
+ *
+ * Capabilities register is a read only register which contains
+ * information about the host controller.
+ * Sufficient if read once after power on.
+ * Read Only
+ * @{
+ */
+#define XSDPS_CAP_TOUT_CLK_FREQ_MASK 0x0000003FU /**< Timeout clock freq
+ select */
+#define XSDPS_CAP_TOUT_CLK_UNIT_MASK 0x00000080U /**< Timeout clock unit -
+ MHz/KHz */
+#define XSDPS_CAP_MAX_BLK_LEN_MASK 0x00030000U /**< Max block length */
+#define XSDPS_CAP_MAX_BLK_LEN_512B_MASK 0x00000000U /**< Max block 512 bytes */
+#define XSDPS_CAP_MAX_BL_LN_1024_MASK 0x00010000U /**< Max block 1024 bytes */
+#define XSDPS_CAP_MAX_BL_LN_2048_MASK 0x00020000U /**< Max block 2048 bytes */
+#define XSDPS_CAP_MAX_BL_LN_4096_MASK 0x00030000U /**< Max block 4096 bytes */
+
+#define XSDPS_CAP_EXT_MEDIA_BUS_MASK 0x00040000U /**< Extended media bus */
+#define XSDPS_CAP_ADMA2_MASK 0x00080000U /**< ADMA2 support */
+#define XSDPS_CAP_HIGH_SPEED_MASK 0x00200000U /**< High speed support */
+#define XSDPS_CAP_SDMA_MASK 0x00400000U /**< SDMA support */
+#define XSDPS_CAP_SUSP_RESUME_MASK 0x00800000U /**< Suspend/Resume
+ support */
+#define XSDPS_CAP_VOLT_3V3_MASK 0x01000000U /**< 3.3V support */
+#define XSDPS_CAP_VOLT_3V0_MASK 0x02000000U /**< 3.0V support */
+#define XSDPS_CAP_VOLT_1V8_MASK 0x04000000U /**< 1.8V support */
+
+#define XSDPS_CAP_SYS_BUS_64_MASK 0x10000000U /**< 64 bit system bus
+ support */
+/* Spec 2.0 */
+#define XSDPS_CAP_INTR_MODE_MASK 0x08000000U /**< Interrupt mode
+ support */
+#define XSDPS_CAP_SPI_MODE_MASK 0x20000000U /**< SPI mode */
+#define XSDPS_CAP_SPI_BLOCK_MODE_MASK 0x40000000U /**< SPI block mode */
+
+
+/* Spec 3.0 */
+#define XSDPS_CAPS_ASYNC_INTR_MASK 0x20000000U /**< Async Interrupt
+ support */
+#define XSDPS_CAPS_SLOT_TYPE_MASK 0xC0000000U /**< Slot Type */
+#define XSDPS_CAPS_REM_CARD 0x00000000U /**< Removable Slot */
+#define XSDPS_CAPS_EMB_SLOT 0x40000000U /**< Embedded Slot */
+#define XSDPS_CAPS_SHR_BUS 0x80000000U /**< Shared Bus Slot */
+
+#define XSDPS_ECAPS_SDR50_MASK 0x00000001U /**< SDR50 Mode support */
+#define XSDPS_ECAPS_SDR104_MASK 0x00000002U /**< SDR104 Mode support */
+#define XSDPS_ECAPS_DDR50_MASK 0x00000004U /**< DDR50 Mode support */
+#define XSDPS_ECAPS_DRV_TYPE_A_MASK 0x00000010U /**< DriverType A support */
+#define XSDPS_ECAPS_DRV_TYPE_C_MASK 0x00000020U /**< DriverType C support */
+#define XSDPS_ECAPS_DRV_TYPE_D_MASK 0x00000040U /**< DriverType D support */
+#define XSDPS_ECAPS_TMR_CNT_MASK 0x00000F00U /**< Timer Count for
+ Re-tuning */
+#define XSDPS_ECAPS_USE_TNG_SDR50_MASK 0x00002000U /**< SDR50 Mode needs
+ tuning */
+#define XSDPS_ECAPS_RE_TNG_MODES_MASK 0x0000C000U /**< Re-tuning modes
+ support */
+#define XSDPS_ECAPS_RE_TNG_MODE1_MASK 0x00000000U /**< Re-tuning mode 1 */
+#define XSDPS_ECAPS_RE_TNG_MODE2_MASK 0x00004000U /**< Re-tuning mode 2 */
+#define XSDPS_ECAPS_RE_TNG_MODE3_MASK 0x00008000U /**< Re-tuning mode 3 */
+#define XSDPS_ECAPS_CLK_MULT_MASK 0x00FF0000U /**< Clock Multiplier value
+ for Programmable clock
+ mode */
+#define XSDPS_ECAPS_SPI_MODE_MASK 0x01000000U /**< SPI mode */
+#define XSDPS_ECAPS_SPI_BLK_MODE_MASK 0x02000000U /**< SPI block mode */
+
+/* @} */
+
+/** @name Present State Register
+ *
+ * Gives the current status of the host controller
+ * Read Only
+ * @{
+ */
+
+#define XSDPS_PSR_INHIBIT_CMD_MASK 0x00000001U /**< Command inhibit - CMD */
+#define XSDPS_PSR_INHIBIT_DAT_MASK 0x00000002U /**< Command Inhibit - DAT */
+#define XSDPS_PSR_DAT_ACTIVE_MASK 0x00000004U /**< DAT line active */
+#define XSDPS_PSR_RE_TUNING_REQ_MASK 0x00000008U /**< Re-tuning request */
+#define XSDPS_PSR_WR_ACTIVE_MASK 0x00000100U /**< Write transfer active */
+#define XSDPS_PSR_RD_ACTIVE_MASK 0x00000200U /**< Read transfer active */
+#define XSDPS_PSR_BUFF_WR_EN_MASK 0x00000400U /**< Buffer write enable */
+#define XSDPS_PSR_BUFF_RD_EN_MASK 0x00000800U /**< Buffer read enable */
+#define XSDPS_PSR_CARD_INSRT_MASK 0x00010000U /**< Card inserted */
+#define XSDPS_PSR_CARD_STABLE_MASK 0x00020000U /**< Card state stable */
+#define XSDPS_PSR_CARD_DPL_MASK 0x00040000U /**< Card detect pin level */
+#define XSDPS_PSR_WPS_PL_MASK 0x00080000U /**< Write protect switch
+ pin level */
+#define XSDPS_PSR_DAT30_SG_LVL_MASK 0x00F00000U /**< Data 3:0 signal lvl */
+#define XSDPS_PSR_CMD_SG_LVL_MASK 0x01000000U /**< Cmd Line signal lvl */
+#define XSDPS_PSR_DAT74_SG_LVL_MASK 0x1E000000U /**< Data 7:4 signal lvl */
+
+/* @} */
+
+/** @name Maximum Current Capablities Register
+ *
+ * This register is read only register which contains
+ * information about current capabilities at each voltage levels.
+ * Read Only
+ * @{
+ */
+#define XSDPS_MAX_CUR_CAPS_1V8_MASK 0x00000F00U /**< Maximum Current
+ Capability at 1.8V */
+#define XSDPS_MAX_CUR_CAPS_3V0_MASK 0x000000F0U /**< Maximum Current
+ Capability at 3.0V */
+#define XSDPS_MAX_CUR_CAPS_3V3_MASK 0x0000000FU /**< Maximum Current
+ Capability at 3.3V */
+/* @} */
+
+
+/** @name Force Event for Auto CMD Error Status Register
+ *
+ * This register is write only register which contains
+ * control bits to generate events for Auto CMD error status.
+ * Write Only
+ * @{
+ */
+#define XSDPS_FE_AUTO_CMD12_NT_EX_MASK 0x0001U /**< Auto CMD12 Not
+ executed */
+#define XSDPS_FE_AUTO_CMD_TOUT_MASK 0x0002U /**< Auto CMD Timeout
+ Error */
+#define XSDPS_FE_AUTO_CMD_CRC_MASK 0x0004U /**< Auto CMD CRC Error */
+#define XSDPS_FE_AUTO_CMD_EB_MASK 0x0008U /**< Auto CMD End Bit
+ Error */
+#define XSDPS_FE_AUTO_CMD_IND_MASK 0x0010U /**< Auto CMD Index Error */
+#define XSDPS_FE_AUTO_CMD_CNI_ERR_MASK 0x0080U /**< Command not issued by
+ Auto CMD12 Error */
+/* @} */
+
+
+
+/** @name Force Event for Error Interrupt Status Register
+ *
+ * This register is write only register which contains
+ * control bits to generate events of error interrupt status register.
+ * Write Only
+ * @{
+ */
+#define XSDPS_FE_INTR_ERR_CT_MASK 0x0001U /**< Command Timeout
+ Error */
+#define XSDPS_FE_INTR_ERR_CCRC_MASK 0x0002U /**< Command CRC Error */
+#define XSDPS_FE_INTR_ERR_CEB_MASK 0x0004U /**< Command End Bit
+ Error */
+#define XSDPS_FE_INTR_ERR_CI_MASK 0x0008U /**< Command Index Error */
+#define XSDPS_FE_INTR_ERR_DT_MASK 0x0010U /**< Data Timeout Error */
+#define XSDPS_FE_INTR_ERR_DCRC_MASK 0x0020U /**< Data CRC Error */
+#define XSDPS_FE_INTR_ERR_DEB_MASK 0x0040U /**< Data End Bit Error */
+#define XSDPS_FE_INTR_ERR_CUR_LMT_MASK 0x0080U /**< Current Limit Error */
+#define XSDPS_FE_INTR_ERR_AUTO_CMD_MASK 0x0100U /**< Auto CMD Error */
+#define XSDPS_FE_INTR_ERR_ADMA_MASK 0x0200U /**< ADMA Error */
+#define XSDPS_FE_INTR_ERR_TR_MASK 0x1000U /**< Target Reponse */
+#define XSDPS_FE_INTR_VEND_SPF_ERR_MASK 0xE000U /**< Vendor Specific
+ Error */
+
+/* @} */
+
+/** @name ADMA Error Status Register
+ *
+ * This register is read only register which contains
+ * status information about ADMA errors.
+ * Read Only
+ * @{
+ */
+#define XSDPS_ADMA_ERR_MM_LEN_MASK 0x04U /**< ADMA Length Mismatch
+ Error */
+#define XSDPS_ADMA_ERR_STATE_MASK 0x03U /**< ADMA Error State */
+#define XSDPS_ADMA_ERR_STATE_STOP_MASK 0x00U /**< ADMA Error State
+ STOP */
+#define XSDPS_ADMA_ERR_STATE_FDS_MASK 0x01U /**< ADMA Error State
+ FDS */
+#define XSDPS_ADMA_ERR_STATE_TFR_MASK 0x03U /**< ADMA Error State
+ TFR */
+/* @} */
+
+/** @name Preset Values Register
+ *
+ * This register is read only register which contains
+ * preset values for each of speed modes.
+ * Read Only
+ * @{
+ */
+#define XSDPS_PRE_VAL_SDCLK_FSEL_MASK 0x03FFU /**< SDCLK Frequency
+ Select Value */
+#define XSDPS_PRE_VAL_CLK_GEN_SEL_MASK 0x0400U /**< Clock Generator
+ Mode Select */
+#define XSDPS_PRE_VAL_DRV_STR_SEL_MASK 0xC000U /**< Driver Strength
+ Select Value */
+
+/* @} */
+
+/** @name Slot Interrupt Status Register
+ *
+ * This register is read only register which contains
+ * interrupt slot signal for each slot.
+ * Read Only
+ * @{
+ */
+#define XSDPS_SLOT_INTR_STS_INT_MASK 0x0007U /**< Interrupt Signal
+ mask */
+
+/* @} */
+
+/** @name Host Controller Version Register
+ *
+ * This register is read only register which contains
+ * Host Controller and Vendor Specific version.
+ * Read Only
+ * @{
+ */
+#define XSDPS_HC_VENDOR_VER 0xFF00U /**< Vendor
+ Specification
+ version mask */
+#define XSDPS_HC_SPEC_VER_MASK 0x00FFU /**< Host
+ Specification
+ version mask */
+#define XSDPS_HC_SPEC_V3 0x0002U
+#define XSDPS_HC_SPEC_V2 0x0001U
+#define XSDPS_HC_SPEC_V1 0x0000U
+
+/** @name Block size mask for 512 bytes
+ *
+ * Block size mask for 512 bytes - This is the default block size.
+ * @{
+ */
+
+#define XSDPS_BLK_SIZE_512_MASK 0x200U
+
+/* @} */
+
+/** @name Commands
+ *
+ * Constant definitions for commands and response related to SD
+ * @{
+ */
+
+#define XSDPS_APP_CMD_PREFIX 0x8000U
+#define CMD0 0x0000U
+#define CMD1 0x0100U
+#define CMD2 0x0200U
+#define CMD3 0x0300U
+#define CMD4 0x0400U
+#define CMD5 0x0500U
+#define CMD6 0x0600U
+#define ACMD6 (XSDPS_APP_CMD_PREFIX + 0x0600U)
+#define CMD7 0x0700U
+#define CMD8 0x0800U
+#define CMD9 0x0900U
+#define CMD10 0x0A00U
+#define CMD11 0x0B00U
+#define CMD12 0x0C00U
+#define ACMD13 (XSDPS_APP_CMD_PREFIX + 0x0D00U)
+#define CMD16 0x1000U
+#define CMD17 0x1100U
+#define CMD18 0x1200U
+#define CMD19 0x1300U
+#define CMD21 0x1500U
+#define CMD23 0x1700U
+#define ACMD23 (XSDPS_APP_CMD_PREFIX + 0x1700U)
+#define CMD24 0x1800U
+#define CMD25 0x1900U
+#define CMD41 0x2900U
+#define ACMD41 (XSDPS_APP_CMD_PREFIX + 0x2900U)
+#define ACMD42 (XSDPS_APP_CMD_PREFIX + 0x2A00U)
+#define ACMD51 (XSDPS_APP_CMD_PREFIX + 0x3300U)
+#define CMD52 0x3400U
+#define CMD55 0x3700U
+#define CMD58 0x3A00U
+
+#define RESP_NONE (u32)XSDPS_CMD_RESP_NONE_MASK
+#define RESP_R1 (u32)XSDPS_CMD_RESP_L48_MASK | (u32)XSDPS_CMD_CRC_CHK_EN_MASK | \
+ (u32)XSDPS_CMD_INX_CHK_EN_MASK
+
+#define RESP_R1B (u32)XSDPS_CMD_RESP_L48_BSY_CHK_MASK | \
+ (u32)XSDPS_CMD_CRC_CHK_EN_MASK | (u32)XSDPS_CMD_INX_CHK_EN_MASK
+
+#define RESP_R2 (u32)XSDPS_CMD_RESP_L136_MASK | (u32)XSDPS_CMD_CRC_CHK_EN_MASK
+#define RESP_R3 (u32)XSDPS_CMD_RESP_L48_MASK
+
+#define RESP_R6 (u32)XSDPS_CMD_RESP_L48_BSY_CHK_MASK | \
+ (u32)XSDPS_CMD_CRC_CHK_EN_MASK | (u32)XSDPS_CMD_INX_CHK_EN_MASK
+
+/* @} */
+
+/* Card Interface Conditions Definitions */
+#define XSDPS_CIC_CHK_PATTERN 0xAAU
+#define XSDPS_CIC_VOLT_MASK (0xFU<<8)
+#define XSDPS_CIC_VOLT_2V7_3V6 (1U<<8)
+#define XSDPS_CIC_VOLT_LOW (1U<<9)
+
+/* Operation Conditions Register Definitions */
+#define XSDPS_OCR_PWRUP_STS (1U<<31)
+#define XSDPS_OCR_CC_STS (1U<<30)
+#define XSDPS_OCR_S18 (1U<<24)
+#define XSDPS_OCR_3V5_3V6 (1U<<23)
+#define XSDPS_OCR_3V4_3V5 (1U<<22)
+#define XSDPS_OCR_3V3_3V4 (1U<<21)
+#define XSDPS_OCR_3V2_3V3 (1U<<20)
+#define XSDPS_OCR_3V1_3V2 (1U<<19)
+#define XSDPS_OCR_3V0_3V1 (1U<<18)
+#define XSDPS_OCR_2V9_3V0 (1U<<17)
+#define XSDPS_OCR_2V8_2V9 (1U<<16)
+#define XSDPS_OCR_2V7_2V8 (1U<<15)
+#define XSDPS_OCR_1V7_1V95 (1U<<7)
+#define XSDPS_OCR_HIGH_VOL 0x00FF8000U
+#define XSDPS_OCR_LOW_VOL 0x00000080U
+
+/* SD Card Configuration Register Definitions */
+#define XSDPS_SCR_REG_LEN 8U
+#define XSDPS_SCR_STRUCT_MASK (0xFU<<28)
+#define XSDPS_SCR_SPEC_MASK (0xFU<<24)
+#define XSDPS_SCR_SPEC_1V0 0U
+#define XSDPS_SCR_SPEC_1V1 (1U<<24)
+#define XSDPS_SCR_SPEC_2V0_3V0 (2U<<24)
+#define XSDPS_SCR_MEM_VAL_AF_ERASE (1U<<23)
+#define XSDPS_SCR_SEC_SUPP_MASK (7U<<20)
+#define XSDPS_SCR_SEC_SUPP_NONE 0U
+#define XSDPS_SCR_SEC_SUPP_1V1 (2U<<20)
+#define XSDPS_SCR_SEC_SUPP_2V0 (3U<<20)
+#define XSDPS_SCR_SEC_SUPP_3V0 (4U<<20)
+#define XSDPS_SCR_BUS_WIDTH_MASK (0xFU<<16)
+#define XSDPS_SCR_BUS_WIDTH_1 (1U<<16)
+#define XSDPS_SCR_BUS_WIDTH_4 (4U<<16)
+#define XSDPS_SCR_SPEC3_MASK (1U<<12)
+#define XSDPS_SCR_SPEC3_2V0 0U
+#define XSDPS_SCR_SPEC3_3V0 (1U<<12)
+#define XSDPS_SCR_CMD_SUPP_MASK 0x3U
+#define XSDPS_SCR_CMD23_SUPP (1U<<1)
+#define XSDPS_SCR_CMD20_SUPP (1U<<0)
+
+/* Card Status Register Definitions */
+#define XSDPS_CD_STS_OUT_OF_RANGE (1U<<31)
+#define XSDPS_CD_STS_ADDR_ERR (1U<<30)
+#define XSDPS_CD_STS_BLK_LEN_ERR (1U<<29)
+#define XSDPS_CD_STS_ER_SEQ_ERR (1U<<28)
+#define XSDPS_CD_STS_ER_PRM_ERR (1U<<27)
+#define XSDPS_CD_STS_WP_VIO (1U<<26)
+#define XSDPS_CD_STS_IS_LOCKED (1U<<25)
+#define XSDPS_CD_STS_LOCK_UNLOCK_FAIL (1U<<24)
+#define XSDPS_CD_STS_CMD_CRC_ERR (1U<<23)
+#define XSDPS_CD_STS_ILGL_CMD (1U<<22)
+#define XSDPS_CD_STS_CARD_ECC_FAIL (1U<<21)
+#define XSDPS_CD_STS_CC_ERR (1U<<20)
+#define XSDPS_CD_STS_ERR (1U<<19)
+#define XSDPS_CD_STS_CSD_OVRWR (1U<<16)
+#define XSDPS_CD_STS_WP_ER_SKIP (1U<<15)
+#define XSDPS_CD_STS_CARD_ECC_DIS (1U<<14)
+#define XSDPS_CD_STS_ER_RST (1U<<13)
+#define XSDPS_CD_STS_CUR_STATE (0xFU<<9)
+#define XSDPS_CD_STS_RDY_FOR_DATA (1U<<8)
+#define XSDPS_CD_STS_APP_CMD (1U<<5)
+#define XSDPS_CD_STS_AKE_SEQ_ERR (1U<<2)
+
+/* Switch Function Definitions CMD6 */
+#define XSDPS_SWITCH_SD_RESP_LEN 64U
+
+#define XSDPS_SWITCH_FUNC_SWITCH (1U<<31)
+#define XSDPS_SWITCH_FUNC_CHECK 0U
+
+#define XSDPS_MODE_FUNC_GRP1 1U
+#define XSDPS_MODE_FUNC_GRP2 2U
+#define XSDPS_MODE_FUNC_GRP3 3U
+#define XSDPS_MODE_FUNC_GRP4 4U
+#define XSDPS_MODE_FUNC_GRP5 5U
+#define XSDPS_MODE_FUNC_GRP6 6U
+
+#define XSDPS_FUNC_GRP_DEF_VAL 0xFU
+#define XSDPS_FUNC_ALL_GRP_DEF_VAL 0xFFFFFFU
+
+#define XSDPS_ACC_MODE_DEF_SDR12 0U
+#define XSDPS_ACC_MODE_HS_SDR25 1U
+#define XSDPS_ACC_MODE_SDR50 2U
+#define XSDPS_ACC_MODE_SDR104 3U
+#define XSDPS_ACC_MODE_DDR50 4U
+
+#define XSDPS_CMD_SYS_ARG_SHIFT 4U
+#define XSDPS_CMD_SYS_DEF 0U
+#define XSDPS_CMD_SYS_eC 1U
+#define XSDPS_CMD_SYS_OTP 3U
+#define XSDPS_CMD_SYS_ASSD 4U
+#define XSDPS_CMD_SYS_VEND 5U
+
+#define XSDPS_DRV_TYPE_ARG_SHIFT 8U
+#define XSDPS_DRV_TYPE_B 0U
+#define XSDPS_DRV_TYPE_A 1U
+#define XSDPS_DRV_TYPE_C 2U
+#define XSDPS_DRV_TYPE_D 3U
+
+#define XSDPS_CUR_LIM_ARG_SHIFT 12U
+#define XSDPS_CUR_LIM_200 0U
+#define XSDPS_CUR_LIM_400 1U
+#define XSDPS_CUR_LIM_600 2U
+#define XSDPS_CUR_LIM_800 3U
+
+#define CSD_SPEC_VER_MASK 0x3C0000U
+
+/* EXT_CSD field definitions */
+#define XSDPS_EXT_CSD_SIZE 512U
+
+#define EXT_CSD_WR_REL_PARAM_EN (1U<<2)
+
+#define EXT_CSD_BOOT_WP_B_PWR_WP_DIS (0x40U)
+#define EXT_CSD_BOOT_WP_B_PERM_WP_DIS (0x10U)
+#define EXT_CSD_BOOT_WP_B_PERM_WP_EN (0x04U)
+#define EXT_CSD_BOOT_WP_B_PWR_WP_EN (0x01U)
+
+#define EXT_CSD_PART_CONFIG_ACC_MASK (0x7U)
+#define EXT_CSD_PART_CONFIG_ACC_BOOT0 (0x1U)
+#define EXT_CSD_PART_CONFIG_ACC_RPMB (0x3U)
+#define EXT_CSD_PART_CONFIG_ACC_GP0 (0x4U)
+
+#define EXT_CSD_PART_SUPPORT_PART_EN (0x1U)
+
+#define EXT_CSD_CMD_SET_NORMAL (1U<<0)
+#define EXT_CSD_CMD_SET_SECURE (1U<<1)
+#define EXT_CSD_CMD_SET_CPSECURE (1U<<2)
+
+#define EXT_CSD_CARD_TYPE_26 (1U<<0) /* Card can run at 26MHz */
+#define EXT_CSD_CARD_TYPE_52 (1U<<1) /* Card can run at 52MHz */
+#define EXT_CSD_CARD_TYPE_MASK 0x3FU /* Mask out reserved bits */
+#define EXT_CSD_CARD_TYPE_DDR_1_8V (1U<<2) /* Card can run at 52MHz */
+ /* DDR mode @1.8V or 3V I/O */
+#define EXT_CSD_CARD_TYPE_DDR_1_2V (1U<<3) /* Card can run at 52MHz */
+ /* DDR mode @1.2V I/O */
+#define EXT_CSD_CARD_TYPE_DDR_52 (EXT_CSD_CARD_TYPE_DDR_1_8V \
+ | EXT_CSD_CARD_TYPE_DDR_1_2V)
+#define EXT_CSD_CARD_TYPE_SDR_1_8V (1U<<4) /* Card can run at 200MHz */
+#define EXT_CSD_CARD_TYPE_SDR_1_2V (1U<<5) /* Card can run at 200MHz */
+ /* SDR mode @1.2V I/O */
+#define EXT_CSD_BUS_WIDTH_BYTE 183U
+#define EXT_CSD_BUS_WIDTH_1_BIT 0U /* Card is in 1 bit mode */
+#define EXT_CSD_BUS_WIDTH_4_BIT 1U /* Card is in 4 bit mode */
+#define EXT_CSD_BUS_WIDTH_8_BIT 2U /* Card is in 8 bit mode */
+#define EXT_CSD_BUS_WIDTH_DDR_4_BIT 5U /* Card is in 4 bit DDR mode */
+#define EXT_CSD_BUS_WIDTH_DDR_8_BIT 6U /* Card is in 8 bit DDR mode */
+
+#define EXT_CSD_HS_TIMING_BYTE 185U
+#define EXT_CSD_HS_TIMING_DEF 0U
+#define EXT_CSD_HS_TIMING_HIGH 1U /* Card is in high speed mode */
+#define EXT_CSD_HS_TIMING_HS200 2U /* Card is in HS200 mode */
+
+
+#define XSDPS_EXT_CSD_CMD_SET 0U
+#define XSDPS_EXT_CSD_SET_BITS 1U
+#define XSDPS_EXT_CSD_CLR_BITS 2U
+#define XSDPS_EXT_CSD_WRITE_BYTE 3U
+
+#define XSDPS_MMC_DEF_SPEED_ARG (((u32)XSDPS_EXT_CSD_WRITE_BYTE << 24) \
+ | ((u32)EXT_CSD_HS_TIMING_BYTE << 16) \
+ | ((u32)EXT_CSD_HS_TIMING_DEF << 8))
+
+#define XSDPS_MMC_HIGH_SPEED_ARG (((u32)XSDPS_EXT_CSD_WRITE_BYTE << 24) \
+ | ((u32)EXT_CSD_HS_TIMING_BYTE << 16) \
+ | ((u32)EXT_CSD_HS_TIMING_HIGH << 8))
+
+#define XSDPS_MMC_HS200_ARG (((u32)XSDPS_EXT_CSD_WRITE_BYTE << 24) \
+ | ((u32)EXT_CSD_HS_TIMING_BYTE << 16) \
+ | ((u32)EXT_CSD_HS_TIMING_HS200 << 8))
+
+#define XSDPS_MMC_1_BIT_BUS_ARG (((u32)XSDPS_EXT_CSD_WRITE_BYTE << 24) \
+ | ((u32)EXT_CSD_BUS_WIDTH_BYTE << 16) \
+ | ((u32)EXT_CSD_BUS_WITH_1_BIT << 8))
+
+#define XSDPS_MMC_4_BIT_BUS_ARG (((u32)XSDPS_EXT_CSD_WRITE_BYTE << 24) \
+ | ((u32)EXT_CSD_BUS_WIDTH_BYTE << 16) \
+ | ((u32)EXT_CSD_BUS_WIDTH_4_BIT << 8))
+
+#define XSDPS_MMC_8_BIT_BUS_ARG (((u32)XSDPS_EXT_CSD_WRITE_BYTE << 24) \
+ | ((u32)EXT_CSD_BUS_WIDTH_BYTE << 16) \
+ | ((u32)EXT_CSD_BUS_WIDTH_8_BIT << 8))
+
+#define XSDPS_MMC_DDR_4_BIT_BUS_ARG (((u32)XSDPS_EXT_CSD_WRITE_BYTE << 24) \
+ | ((u32)EXT_CSD_BUS_WIDTH_BYTE << 16) \
+ | ((u32)EXT_CSD_BUS_WIDTH_DDR_4_BIT << 8))
+
+#define XSDPS_MMC_DDR_8_BIT_BUS_ARG (((u32)XSDPS_EXT_CSD_WRITE_BYTE << 24) \
+ | ((u32)EXT_CSD_BUS_WIDTH_BYTE << 16) \
+ | ((u32)EXT_CSD_BUS_WIDTH_DDR_8_BIT << 8))
+
+#define XSDPS_MMC_DELAY_FOR_SWITCH 1000U
+
+/* @} */
+
+/* @400KHz, in usec */
+#define XSDPS_74CLK_DELAY 2960U
+#define XSDPS_100CLK_DELAY 4000U
+#define XSDPS_INIT_DELAY 10000U
+
+#define XSDPS_DEF_VOLT_LVL XSDPS_PC_BUS_VSEL_3V0_MASK
+#define XSDPS_CARD_DEF_ADDR 0x1234U
+
+#define XSDPS_CARD_SD 1U
+#define XSDPS_CARD_MMC 2U
+#define XSDPS_CARD_SDIO 3U
+#define XSDPS_CARD_SDCOMBO 4U
+#define XSDPS_CHIP_EMMC 5U
+
+
+/** @name ADMA2 Descriptor related definitions
+ *
+ * ADMA2 Descriptor related definitions
+ * @{
+ */
+
+#define XSDPS_DESC_MAX_LENGTH 65536U
+
+#define XSDPS_DESC_VALID (0x1U << 0)
+#define XSDPS_DESC_END (0x1U << 1)
+#define XSDPS_DESC_INT (0x1U << 2)
+#define XSDPS_DESC_TRAN (0x2U << 4)
+
+/* @} */
+
+/* For changing clock frequencies */
+#define XSDPS_CLK_400_KHZ 400000U /**< 400 KHZ */
+#define XSDPS_CLK_50_MHZ 50000000U /**< 50 MHZ */
+#define XSDPS_CLK_52_MHZ 52000000U /**< 52 MHZ */
+#define XSDPS_SD_VER_1_0 0x1U /**< SD ver 1 */
+#define XSDPS_SD_VER_2_0 0x2U /**< SD ver 2 */
+#define XSDPS_SCR_BLKCNT 1U
+#define XSDPS_SCR_BLKSIZE 8U
+#define XSDPS_1_BIT_WIDTH 0x1U
+#define XSDPS_4_BIT_WIDTH 0x2U
+#define XSDPS_8_BIT_WIDTH 0x3U
+#define XSDPS_UHS_SPEED_MODE_SDR12 0x0U
+#define XSDPS_UHS_SPEED_MODE_SDR25 0x1U
+#define XSDPS_UHS_SPEED_MODE_SDR50 0x2U
+#define XSDPS_UHS_SPEED_MODE_SDR104 0x3U
+#define XSDPS_UHS_SPEED_MODE_DDR50 0x4U
+#define XSDPS_SWITCH_CMD_BLKCNT 1U
+#define XSDPS_SWITCH_CMD_BLKSIZE 64U
+#define XSDPS_SWITCH_CMD_HS_GET 0x00FFFFF0U
+#define XSDPS_SWITCH_CMD_HS_SET 0x80FFFFF1U
+#define XSDPS_SWITCH_CMD_SDR12_SET 0x80FFFFF0U
+#define XSDPS_SWITCH_CMD_SDR25_SET 0x80FFFFF1U
+#define XSDPS_SWITCH_CMD_SDR50_SET 0x80FFFFF2U
+#define XSDPS_SWITCH_CMD_SDR104_SET 0x80FFFFF3U
+#define XSDPS_SWITCH_CMD_DDR50_SET 0x80FFFFF4U
+#define XSDPS_EXT_CSD_CMD_BLKCNT 1U
+#define XSDPS_EXT_CSD_CMD_BLKSIZE 512U
+#define XSDPS_TUNING_CMD_BLKCNT 1U
+#define XSDPS_TUNING_CMD_BLKSIZE 64U
+
+#define XSDPS_HIGH_SPEED_MAX_CLK 50000000U
+#define XSDPS_UHS_SDR104_MAX_CLK 208000000U
+#define XSDPS_UHS_SDR50_MAX_CLK 100000000U
+#define XSDPS_UHS_DDR50_MAX_CLK 50000000U
+#define XSDPS_UHS_SDR25_MAX_CLK 50000000U
+#define XSDPS_UHS_SDR12_MAX_CLK 25000000U
+
+#define SD_DRIVER_TYPE_B 0x01U
+#define SD_DRIVER_TYPE_A 0x02U
+#define SD_DRIVER_TYPE_C 0x04U
+#define SD_DRIVER_TYPE_D 0x08U
+#define SD_SET_CURRENT_LIMIT_200 0U
+#define SD_SET_CURRENT_LIMIT_400 1U
+#define SD_SET_CURRENT_LIMIT_600 2U
+#define SD_SET_CURRENT_LIMIT_800 3U
+
+#define SD_MAX_CURRENT_200 (1U << SD_SET_CURRENT_LIMIT_200)
+#define SD_MAX_CURRENT_400 (1U << SD_SET_CURRENT_LIMIT_400)
+#define SD_MAX_CURRENT_600 (1U << SD_SET_CURRENT_LIMIT_600)
+#define SD_MAX_CURRENT_800 (1U << SD_SET_CURRENT_LIMIT_800)
+
+#define XSDPS_SD_SDR12_MAX_CLK 25000000U
+#define XSDPS_SD_SDR25_MAX_CLK 50000000U
+#define XSDPS_SD_SDR50_MAX_CLK 100000000U
+#define XSDPS_SD_DDR50_MAX_CLK 50000000U
+#define XSDPS_SD_SDR104_MAX_CLK 208000000U
+#define XSDPS_MMC_HS200_MAX_CLK 200000000U
+
+#define XSDPS_CARD_STATE_IDLE 0U
+#define XSDPS_CARD_STATE_RDY 1U
+#define XSDPS_CARD_STATE_IDEN 2U
+#define XSDPS_CARD_STATE_STBY 3U
+#define XSDPS_CARD_STATE_TRAN 4U
+#define XSDPS_CARD_STATE_DATA 5U
+#define XSDPS_CARD_STATE_RCV 6U
+#define XSDPS_CARD_STATE_PROG 7U
+#define XSDPS_CARD_STATE_DIS 8U
+#define XSDPS_CARD_STATE_BTST 9U
+#define XSDPS_CARD_STATE_SLP 10U
+
+#define XSDPS_SLOT_REM 0U
+#define XSDPS_SLOT_EMB 1U
+
+#if defined (__arm__) || defined (__aarch64__)
+#define SD_DLL_CTRL 0x00000358U
+#define SD_ITAPDLY 0x00000314U
+#define SD_OTAPDLYSEL 0x00000318U
+#define SD0_DLL_RST 0x00000004U
+#define SD0_ITAPCHGWIN 0x00000200U
+#define SD0_ITAPDLYENA 0x00000100U
+#define SD0_OTAPDLYENA 0x00000040U
+#define SD0_OTAPDLYSEL_HS200 0x00000003U
+#endif
+
+/**************************** Type Definitions *******************************/
+
+/***************** Macros (Inline Functions) Definitions *********************/
+#define XSdPs_In64 Xil_In64
+#define XSdPs_Out64 Xil_Out64
+
+#define XSdPs_In32 Xil_In32
+#define XSdPs_Out32 Xil_Out32
+
+#define XSdPs_In16 Xil_In16
+#define XSdPs_Out16 Xil_Out16
+
+#define XSdPs_In8 Xil_In8
+#define XSdPs_Out8 Xil_Out8
+
+/****************************************************************************/
+/**
+* Read a register.
+*
+* @param BaseAddress contains the base address of the device.
+* @param RegOffset contains the offset from the 1st register of the
+* device to the target register.
+*
+* @return The value read from the register.
+*
+* @note C-Style signature:
+* u32 XSdPs_ReadReg(XSdPs *InstancePtr. s32 RegOffset)
+*
+******************************************************************************/
+#define XSdPs_ReadReg64(InstancePtr, RegOffset) \
+ XSdPs_In64((InstancePtr->Config.BaseAddress) + RegOffset)
+
+/***************************************************************************/
+/**
+* Write to a register.
+*
+* @param BaseAddress contains the base address of the device.
+* @param RegOffset contains the offset from the 1st register of the
+* device to target register.
+* @param RegisterValue is the value to be written to the register.
+*
+* @return None.
+*
+* @note C-Style signature:
+* void XSdPs_WriteReg(XSdPs *InstancePtr, s32 RegOffset,
+* u64 RegisterValue)
+*
+******************************************************************************/
+#define XSdPs_WriteReg64(InstancePtr, RegOffset, RegisterValue) \
+ XSdPs_Out64((InstancePtr->Config.BaseAddress) + (RegOffset), \
+ (RegisterValue))
+
+/****************************************************************************/
+/**
+* Read a register.
+*
+* @param BaseAddress contains the base address of the device.
+* @param RegOffset contains the offset from the 1st register of the
+* device to the target register.
+*
+* @return The value read from the register.
+*
+* @note C-Style signature:
+* u32 XSdPs_ReadReg(u32 BaseAddress. int RegOffset)
+*
+******************************************************************************/
+#define XSdPs_ReadReg(BaseAddress, RegOffset) \
+ XSdPs_In32((BaseAddress) + (RegOffset))
+
+/***************************************************************************/
+/**
+* Write to a register.
+*
+* @param BaseAddress contains the base address of the device.
+* @param RegOffset contains the offset from the 1st register of the
+* device to target register.
+* @param RegisterValue is the value to be written to the register.
+*
+* @return None.
+*
+* @note C-Style signature:
+* void XSdPs_WriteReg(u32 BaseAddress, int RegOffset,
+* u32 RegisterValue)
+*
+******************************************************************************/
+#define XSdPs_WriteReg(BaseAddress, RegOffset, RegisterValue) \
+ XSdPs_Out32((BaseAddress) + (RegOffset), (RegisterValue))
+
+/****************************************************************************/
+/**
+* Read a register.
+*
+* @param BaseAddress contains the base address of the device.
+* @param RegOffset contains the offset from the 1st register of the
+* device to the target register.
+*
+* @return The value read from the register.
+*
+* @note C-Style signature:
+* u16 XSdPs_ReadReg(u32 BaseAddress. int RegOffset)
+*
+******************************************************************************/
+#define XSdPs_ReadReg16(BaseAddress, RegOffset) \
+ XSdPs_In16((BaseAddress) + (RegOffset))
+
+/***************************************************************************/
+/**
+* Write to a register.
+*
+* @param BaseAddress contains the base address of the device.
+* @param RegOffset contains the offset from the 1st register of the
+* device to target register.
+* @param RegisterValue is the value to be written to the register.
+*
+* @return None.
+*
+* @note C-Style signature:
+* void XSdPs_WriteReg(u32 BaseAddress, int RegOffset,
+* u16 RegisterValue)
+*
+******************************************************************************/
+#define XSdPs_WriteReg16(BaseAddress, RegOffset, RegisterValue) \
+ XSdPs_Out16((BaseAddress) + (RegOffset), (RegisterValue))
+
+/****************************************************************************/
+/**
+* Read a register.
+*
+* @param BaseAddress contains the base address of the device.
+* @param RegOffset contains the offset from the 1st register of the
+* device to the target register.
+*
+* @return The value read from the register.
+*
+* @note C-Style signature:
+* u8 XSdPs_ReadReg(u32 BaseAddress. int RegOffset)
+*
+******************************************************************************/
+#define XSdPs_ReadReg8(BaseAddress, RegOffset) \
+ XSdPs_In8((BaseAddress) + (RegOffset))
+
+/***************************************************************************/
+/**
+* Write to a register.
+*
+* @param BaseAddress contains the base address of the device.
+* @param RegOffset contains the offset from the 1st register of the
+* device to target register.
+* @param RegisterValue is the value to be written to the register.
+*
+* @return None.
+*
+* @note C-Style signature:
+* void XSdPs_WriteReg(u32 BaseAddress, int RegOffset,
+* u8 RegisterValue)
+*
+******************************************************************************/
+#define XSdPs_WriteReg8(BaseAddress, RegOffset, RegisterValue) \
+ XSdPs_Out8((BaseAddress) + (RegOffset), (RegisterValue))
+
+/***************************************************************************/
+/**
+* Macro to get present status register
+*
+* @param BaseAddress contains the base address of the device.
+*
+* @return None.
+*
+* @note C-Style signature:
+* void XSdPs_WriteReg(u32 BaseAddress, int RegOffset,
+* u8 RegisterValue)
+*
+******************************************************************************/
+#define XSdPs_GetPresentStatusReg(BaseAddress) \
+ XSdPs_In32((BaseAddress) + (XSDPS_PRES_STATE_OFFSET))
+
+/************************** Function Prototypes ******************************/
+
+/************************** Variable Definitions *****************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* SD_HW_H_ */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps_options.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps_options.c
new file mode 100644
index 000000000..8151eef1b
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps_options.c
@@ -0,0 +1,1152 @@
+/******************************************************************************
+*
+* Copyright (C) 2013 - 2015 Xilinx, Inc. All rights reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+* (a) running on a Xilinx device, or
+* (b) that interact with a Xilinx device through a bus or interconnect.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*
+* Except as contained in this notice, the name of the Xilinx shall not be used
+* in advertising or otherwise to promote the sale, use or other dealings in
+* this Software without prior written authorization from Xilinx.
+*
+******************************************************************************/
+/*****************************************************************************/
+/**
+*
+* @file xsdps_options.c
+* @addtogroup sdps_v2_5
+* @{
+*
+* Contains API's for changing the various options in host and card.
+* See xsdps.h for a detailed description of the device and driver.
+*
+*
+* MODIFICATION HISTORY:
+*
+* Ver Who Date Changes
+* ----- --- -------- -----------------------------------------------
+* 1.00a hk/sg 10/17/13 Initial release
+* 2.1 hk 04/18/14 Increase sleep for eMMC switch command.
+* Add sleep for microblaze designs. CR# 781117.
+* 2.3 sk 09/23/14 Use XSdPs_Change_ClkFreq API whenever changing
+* clock.CR# 816586.
+* 2.5 sg 07/09/15 Added SD 3.0 features
+* kvn 07/15/15 Modified the code according to MISRAC-2012.
+* 2.7 sk 01/08/16 Added workaround for issue in auto tuning mode
+* of SDR50, SDR104 and HS200.
+* sk 02/16/16 Corrected the Tuning logic.
+* sk 03/02/16 Configured the Tap Delay values for eMMC HS200 mode.
+*
+*
+*
+******************************************************************************/
+
+/***************************** Include Files *********************************/
+#include "xsdps.h"
+/*
+ * The header sleep.h and API usleep() can only be used with an arm design.
+ * MB_Sleep() is used for microblaze design.
+ */
+#if defined (__arm__) || defined (__aarch64__)
+
+#include "sleep.h"
+
+#endif
+
+#ifdef __MICROBLAZE__
+
+#include "microblaze_sleep.h"
+
+#endif
+
+/************************** Constant Definitions *****************************/
+
+/**************************** Type Definitions *******************************/
+
+/***************** Macros (Inline Functions) Definitions *********************/
+
+/************************** Function Prototypes ******************************/
+s32 XSdPs_CmdTransfer(XSdPs *InstancePtr, u32 Cmd, u32 Arg, u32 BlkCnt);
+void XSdPs_SetupADMA2DescTbl(XSdPs *InstancePtr, u32 BlkCnt, const u8 *Buff);
+s32 XSdPs_Uhs_ModeInit(XSdPs *InstancePtr, u8 Mode);
+static s32 XSdPs_Execute_Tuning(XSdPs *InstancePtr);
+s32 XSdPs_Uhs_ModeInit(XSdPs *InstancePtr, u8 Mode);
+#if defined (__arm__) || defined (__aarch64__)
+void XSdPs_SetTapDelay(XSdPs *InstancePtr);
+#endif
+
+/*****************************************************************************/
+/**
+* Update Block size for read/write operations.
+*
+* @param InstancePtr is a pointer to the instance to be worked on.
+* @param BlkSize - Block size passed by the user.
+*
+* @return None
+*
+******************************************************************************/
+s32 XSdPs_SetBlkSize(XSdPs *InstancePtr, u16 BlkSize)
+{
+ s32 Status;
+ u32 PresentStateReg;
+
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ PresentStateReg = XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_PRES_STATE_OFFSET);
+
+ if ((PresentStateReg & ((u32)XSDPS_PSR_INHIBIT_CMD_MASK |
+ (u32)XSDPS_PSR_INHIBIT_DAT_MASK |
+ (u32)XSDPS_PSR_WR_ACTIVE_MASK | (u32)XSDPS_PSR_RD_ACTIVE_MASK)) != 0U) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+
+ /* Send block write command */
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD16, BlkSize, 0U);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ Status = (s32)XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_RESP0_OFFSET);
+
+ /* Set block size to the value passed */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress, XSDPS_BLK_SIZE_OFFSET,
+ BlkSize & XSDPS_BLK_SIZE_MASK);
+
+ Status = XST_SUCCESS;
+
+ RETURN_PATH:
+ return Status;
+
+}
+
+/*****************************************************************************/
+/**
+*
+* API to get bus width support by card.
+*
+*
+* @param InstancePtr is a pointer to the XSdPs instance.
+* @param SCR - buffer to store SCR register returned by card.
+*
+* @return
+* - XST_SUCCESS if successful.
+* - XST_FAILURE if fail.
+*
+* @note None.
+*
+******************************************************************************/
+s32 XSdPs_Get_BusWidth(XSdPs *InstancePtr, u8 *SCR)
+{
+ s32 Status;
+ u32 StatusReg;
+ u16 BlkCnt;
+ u16 BlkSize;
+ s32 LoopCnt;
+
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ for (LoopCnt = 0; LoopCnt < 8; LoopCnt++) {
+ SCR[LoopCnt] = 0U;
+ }
+
+ /* Send block write command */
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD55,
+ InstancePtr->RelCardAddr, 0U);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ BlkCnt = XSDPS_SCR_BLKCNT;
+ BlkSize = XSDPS_SCR_BLKSIZE;
+
+ /* Set block size to the value passed */
+ BlkSize &= XSDPS_BLK_SIZE_MASK;
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_BLK_SIZE_OFFSET, BlkSize);
+
+ XSdPs_SetupADMA2DescTbl(InstancePtr, BlkCnt, SCR);
+
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_XFER_MODE_OFFSET,
+ XSDPS_TM_DAT_DIR_SEL_MASK | XSDPS_TM_DMA_EN_MASK);
+
+ Xil_DCacheInvalidateRange((INTPTR)SCR, 8);
+
+ Status = XSdPs_CmdTransfer(InstancePtr, ACMD51, 0U, BlkCnt);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ /*
+ * Check for transfer complete
+ * Polling for response for now
+ */
+ do {
+ StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET);
+ if ((StatusReg & XSDPS_INTR_ERR_MASK) != 0U) {
+ /* Write to clear error bits */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_ERR_INTR_STS_OFFSET,
+ XSDPS_ERROR_INTR_ALL_MASK);
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ } while ((StatusReg & XSDPS_INTR_TC_MASK) == 0U);
+
+ /* Write to clear bit */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_TC_MASK);
+
+ Status = (s32)XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_RESP0_OFFSET);
+
+ Status = XST_SUCCESS;
+
+ RETURN_PATH:
+ return Status;
+
+}
+
+/*****************************************************************************/
+/**
+*
+* API to set bus width to 4-bit in card and host
+*
+*
+* @param InstancePtr is a pointer to the XSdPs instance.
+*
+* @return
+* - XST_SUCCESS if successful.
+* - XST_FAILURE if fail.
+*
+* @note None.
+*
+******************************************************************************/
+s32 XSdPs_Change_BusWidth(XSdPs *InstancePtr)
+{
+ s32 Status;
+ u32 StatusReg;
+ u32 Arg;
+
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+
+ if (InstancePtr->CardType == XSDPS_CARD_SD) {
+
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD55, InstancePtr->RelCardAddr,
+ 0U);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ InstancePtr->BusWidth = XSDPS_4_BIT_WIDTH;
+
+ Arg = ((u32)InstancePtr->BusWidth);
+
+ Status = XSdPs_CmdTransfer(InstancePtr, ACMD6, Arg, 0U);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ } else {
+
+ if ((InstancePtr->HC_Version == XSDPS_HC_SPEC_V3)
+ && (InstancePtr->CardType == XSDPS_CHIP_EMMC)) {
+ /* in case of eMMC data width 8-bit */
+ InstancePtr->BusWidth = XSDPS_8_BIT_WIDTH;
+ } else {
+ InstancePtr->BusWidth = XSDPS_4_BIT_WIDTH;
+ }
+
+ if (InstancePtr->BusWidth == XSDPS_8_BIT_WIDTH) {
+ Arg = XSDPS_MMC_8_BIT_BUS_ARG;
+ } else {
+ Arg = XSDPS_MMC_4_BIT_BUS_ARG;
+ }
+
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD6, Arg, 0U);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ /* Check for transfer complete */
+ do {
+ StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET);
+ if ((StatusReg & XSDPS_INTR_ERR_MASK) != 0U) {
+ /* Write to clear error bits */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_ERR_INTR_STS_OFFSET,
+ XSDPS_ERROR_INTR_ALL_MASK);
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ } while((StatusReg & XSDPS_INTR_TC_MASK) == 0U);
+
+ /* Write to clear bit */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_TC_MASK);
+ }
+
+#if defined (__arm__) || defined (__aarch64__)
+
+ usleep(XSDPS_MMC_DELAY_FOR_SWITCH);
+
+#endif
+
+#ifdef __MICROBLAZE__
+
+ /* 2 msec delay */
+ MB_Sleep(2);
+
+#endif
+
+ StatusReg = XSdPs_ReadReg8(InstancePtr->Config.BaseAddress,
+ XSDPS_HOST_CTRL1_OFFSET);
+
+ /* Width setting in controller */
+ if (InstancePtr->BusWidth == XSDPS_8_BIT_WIDTH) {
+ StatusReg |= XSDPS_HC_EXT_BUS_WIDTH;
+ } else {
+ StatusReg |= XSDPS_HC_WIDTH_MASK;
+ }
+
+ XSdPs_WriteReg8(InstancePtr->Config.BaseAddress,
+ XSDPS_HOST_CTRL1_OFFSET,
+ (u8)StatusReg);
+
+ Status = (s32)XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_RESP0_OFFSET);
+
+ Status = XST_SUCCESS;
+
+ RETURN_PATH:
+ return Status;
+
+}
+
+/*****************************************************************************/
+/**
+*
+* API to get bus speed supported by card.
+*
+*
+* @param InstancePtr is a pointer to the XSdPs instance.
+* @param ReadBuff - buffer to store function group support data
+* returned by card.
+*
+* @return
+* - XST_SUCCESS if successful.
+* - XST_FAILURE if fail.
+*
+* @note None.
+*
+******************************************************************************/
+s32 XSdPs_Get_BusSpeed(XSdPs *InstancePtr, u8 *ReadBuff)
+{
+ s32 Status;
+ u32 StatusReg;
+ u32 Arg;
+ u16 BlkCnt;
+ u16 BlkSize;
+ s32 LoopCnt;
+
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ for (LoopCnt = 0; LoopCnt < 64; LoopCnt++) {
+ ReadBuff[LoopCnt] = 0U;
+ }
+
+ BlkCnt = XSDPS_SWITCH_CMD_BLKCNT;
+ BlkSize = XSDPS_SWITCH_CMD_BLKSIZE;
+ BlkSize &= XSDPS_BLK_SIZE_MASK;
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_BLK_SIZE_OFFSET, BlkSize);
+
+ XSdPs_SetupADMA2DescTbl(InstancePtr, BlkCnt, ReadBuff);
+
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_XFER_MODE_OFFSET,
+ XSDPS_TM_DAT_DIR_SEL_MASK | XSDPS_TM_DMA_EN_MASK);
+
+ Arg = XSDPS_SWITCH_CMD_HS_GET;
+
+ Xil_DCacheInvalidateRange((INTPTR)ReadBuff, 64);
+
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD6, Arg, 1U);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ /*
+ * Check for transfer complete
+ * Polling for response for now
+ */
+ do {
+ StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET);
+ if ((StatusReg & XSDPS_INTR_ERR_MASK) != 0U) {
+ /* Write to clear error bits */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_ERR_INTR_STS_OFFSET,
+ XSDPS_ERROR_INTR_ALL_MASK);
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ } while ((StatusReg & XSDPS_INTR_TC_MASK) == 0U);
+
+ /* Write to clear bit */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_TC_MASK);
+
+ Status = (s32)XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_RESP0_OFFSET);
+
+ Status = XST_SUCCESS;
+
+ RETURN_PATH:
+ return Status;
+
+}
+
+/*****************************************************************************/
+/**
+*
+* API to set high speed in card and host. Changes clock in host accordingly.
+*
+*
+* @param InstancePtr is a pointer to the XSdPs instance.
+*
+* @return
+* - XST_SUCCESS if successful.
+* - XST_FAILURE if fail.
+*
+* @note None.
+*
+******************************************************************************/
+s32 XSdPs_Change_BusSpeed(XSdPs *InstancePtr)
+{
+ s32 Status;
+ u32 StatusReg;
+ u32 Arg;
+ u32 ClockReg;
+ u16 BlkCnt;
+ u16 BlkSize;
+ u8 ReadBuff[64];
+
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ if (InstancePtr->CardType == XSDPS_CARD_SD) {
+
+ BlkCnt = XSDPS_SWITCH_CMD_BLKCNT;
+ BlkSize = XSDPS_SWITCH_CMD_BLKSIZE;
+ BlkSize &= XSDPS_BLK_SIZE_MASK;
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_BLK_SIZE_OFFSET, BlkSize);
+
+ XSdPs_SetupADMA2DescTbl(InstancePtr, BlkCnt, ReadBuff);
+
+ Xil_DCacheFlushRange((INTPTR)ReadBuff, 64);
+
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_XFER_MODE_OFFSET,
+ XSDPS_TM_DAT_DIR_SEL_MASK | XSDPS_TM_DMA_EN_MASK);
+
+ Arg = XSDPS_SWITCH_CMD_HS_SET;
+
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD6, Arg, 1U);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ /*
+ * Check for transfer complete
+ * Polling for response for now
+ */
+ do {
+ StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET);
+ if ((StatusReg & XSDPS_INTR_ERR_MASK) != 0U) {
+ /* Write to clear error bits */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_ERR_INTR_STS_OFFSET,
+ XSDPS_ERROR_INTR_ALL_MASK);
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ } while ((StatusReg & XSDPS_INTR_TC_MASK) == 0U);
+
+ /* Write to clear bit */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_TC_MASK);
+
+ /* Change the clock frequency to 50 MHz */
+ InstancePtr->BusSpeed = XSDPS_CLK_50_MHZ;
+ Status = XSdPs_Change_ClkFreq(InstancePtr, InstancePtr->BusSpeed);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ } else if (InstancePtr->CardType == XSDPS_CARD_MMC) {
+ Arg = XSDPS_MMC_HIGH_SPEED_ARG;
+
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD6, Arg, 0U);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ /*
+ * Check for transfer complete
+ */
+ do {
+ StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET);
+ if ((StatusReg & XSDPS_INTR_ERR_MASK) != 0U) {
+ /*
+ * Write to clear error bits
+ */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_ERR_INTR_STS_OFFSET,
+ XSDPS_ERROR_INTR_ALL_MASK);
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ } while ((StatusReg & XSDPS_INTR_TC_MASK) == 0U);
+
+ /*
+ * Write to clear bit
+ */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_TC_MASK);
+
+ /* Change the clock frequency to 52 MHz */
+ InstancePtr->BusSpeed = XSDPS_CLK_52_MHZ;
+ Status = XSdPs_Change_ClkFreq(InstancePtr, XSDPS_CLK_52_MHZ);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ } else {
+ Arg = XSDPS_MMC_HS200_ARG;
+
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD6, Arg, 0U);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ /*
+ * Check for transfer complete
+ */
+ do {
+ StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET);
+ if ((StatusReg & XSDPS_INTR_ERR_MASK) != 0U) {
+ /*
+ * Write to clear error bits
+ */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_ERR_INTR_STS_OFFSET,
+ XSDPS_ERROR_INTR_ALL_MASK);
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ } while ((StatusReg & XSDPS_INTR_TC_MASK) == 0U);
+
+ /*
+ * Write to clear bit
+ */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_TC_MASK);
+
+ /* Change the clock frequency to 200 MHz */
+ InstancePtr->BusSpeed = XSDPS_MMC_HS200_MAX_CLK;
+
+ Status = XSdPs_Change_ClkFreq(InstancePtr, InstancePtr->BusSpeed);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ Status = XSdPs_Execute_Tuning(InstancePtr);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+#if defined (__arm__) || defined (__aarch64__)
+ /* Program the Tap delays */
+ XSdPs_SetTapDelay(InstancePtr);
+#endif
+ }
+
+#if defined (__arm__) || defined (__aarch64__)
+
+ usleep(XSDPS_MMC_DELAY_FOR_SWITCH);
+
+#endif
+
+#ifdef __MICROBLAZE__
+
+ /* 2 msec delay */
+ MB_Sleep(2);
+
+#endif
+
+ StatusReg = (s32)XSdPs_ReadReg8(InstancePtr->Config.BaseAddress,
+ XSDPS_HOST_CTRL1_OFFSET);
+ StatusReg |= XSDPS_HC_SPEED_MASK;
+ XSdPs_WriteReg8(InstancePtr->Config.BaseAddress,
+ XSDPS_HOST_CTRL1_OFFSET, (u8)StatusReg);
+
+ Status = (s32)XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_RESP0_OFFSET);
+
+
+ Status = XST_SUCCESS;
+
+ RETURN_PATH:
+ return Status;
+
+}
+
+/*****************************************************************************/
+/**
+*
+* API to change clock freq to given value.
+*
+*
+* @param InstancePtr is a pointer to the XSdPs instance.
+* @param SelFreq - Clock frequency in Hz.
+*
+* @return None
+*
+* @note This API will change clock frequency to the value less than
+* or equal to the given value using the permissible dividors.
+*
+******************************************************************************/
+s32 XSdPs_Change_ClkFreq(XSdPs *InstancePtr, u32 SelFreq)
+{
+ u16 ClockReg;
+ u16 DivCnt;
+ u16 Divisor = 0U;
+ u16 ExtDivisor;
+ u16 ClkLoopCnt;
+ s32 Status;
+ u16 ReadReg;
+
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ /* Disable clock */
+ ClockReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_CLK_CTRL_OFFSET);
+ ClockReg &= ~(XSDPS_CC_SD_CLK_EN_MASK | XSDPS_CC_INT_CLK_EN_MASK);
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_CLK_CTRL_OFFSET, ClockReg);
+
+ if (InstancePtr->HC_Version == XSDPS_HC_SPEC_V3) {
+ /* Calculate divisor */
+ for (DivCnt = 0x1U; DivCnt <= XSDPS_CC_EXT_MAX_DIV_CNT;DivCnt++) {
+ if (((InstancePtr->Config.InputClockHz) / DivCnt) <= SelFreq) {
+ Divisor = DivCnt >> 1;
+ break;
+ }
+ }
+
+ if (DivCnt > XSDPS_CC_EXT_MAX_DIV_CNT) {
+ /* No valid divisor found for given frequency */
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ } else {
+ /* Calculate divisor */
+ DivCnt = 0x1U;
+ while (DivCnt <= XSDPS_CC_MAX_DIV_CNT) {
+ if (((InstancePtr->Config.InputClockHz) / DivCnt) <= SelFreq) {
+ Divisor = DivCnt / 2U;
+ break;
+ }
+ DivCnt = DivCnt << 1U;
+ }
+
+ if (DivCnt > XSDPS_CC_MAX_DIV_CNT) {
+ /* No valid divisor found for given frequency */
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ }
+
+ /* Set clock divisor */
+ if (InstancePtr->HC_Version == XSDPS_HC_SPEC_V3) {
+ ClockReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_CLK_CTRL_OFFSET);
+ ClockReg &= ~(XSDPS_CC_SDCLK_FREQ_SEL_MASK |
+ XSDPS_CC_SDCLK_FREQ_SEL_EXT_MASK);
+
+ ExtDivisor = Divisor >> 8;
+ ExtDivisor <<= XSDPS_CC_EXT_DIV_SHIFT;
+ ExtDivisor &= XSDPS_CC_SDCLK_FREQ_SEL_EXT_MASK;
+
+ Divisor <<= XSDPS_CC_DIV_SHIFT;
+ Divisor &= XSDPS_CC_SDCLK_FREQ_SEL_MASK;
+ ClockReg |= Divisor | ExtDivisor | (u16)XSDPS_CC_INT_CLK_EN_MASK;
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress, XSDPS_CLK_CTRL_OFFSET,
+ ClockReg);
+ } else {
+ ClockReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_CLK_CTRL_OFFSET);
+ ClockReg &= (~XSDPS_CC_SDCLK_FREQ_SEL_MASK);
+
+ Divisor <<= XSDPS_CC_DIV_SHIFT;
+ Divisor &= XSDPS_CC_SDCLK_FREQ_SEL_MASK;
+ ClockReg |= Divisor | (u16)XSDPS_CC_INT_CLK_EN_MASK;
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress, XSDPS_CLK_CTRL_OFFSET,
+ ClockReg);
+ }
+
+ /* Wait for internal clock to stabilize */
+ ReadReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_CLK_CTRL_OFFSET);
+ while((ReadReg & XSDPS_CC_INT_CLK_STABLE_MASK) == 0U) {
+ ReadReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_CLK_CTRL_OFFSET);;
+ }
+
+ /* Enable SD clock */
+ ClockReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_CLK_CTRL_OFFSET);
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_CLK_CTRL_OFFSET,
+ ClockReg | XSDPS_CC_SD_CLK_EN_MASK);
+
+ Status = XST_SUCCESS;
+
+RETURN_PATH:
+ return Status;
+
+}
+
+/*****************************************************************************/
+/**
+*
+* API to send pullup command to card before using DAT line 3(using 4-bit bus)
+*
+*
+* @param InstancePtr is a pointer to the XSdPs instance.
+*
+* @return
+* - XST_SUCCESS if successful.
+* - XST_FAILURE if fail.
+*
+* @note None.
+*
+******************************************************************************/
+s32 XSdPs_Pullup(XSdPs *InstancePtr)
+{
+ s32 Status;
+
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD55,
+ InstancePtr->RelCardAddr, 0U);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ Status = XSdPs_CmdTransfer(InstancePtr, ACMD42, 0U, 0U);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ Status = XST_SUCCESS;
+
+ RETURN_PATH:
+ return Status;
+
+}
+
+/*****************************************************************************/
+/**
+*
+* API to get EXT_CSD register of eMMC.
+*
+*
+* @param InstancePtr is a pointer to the XSdPs instance.
+* @param ReadBuff - buffer to store EXT_CSD
+*
+* @return
+* - XST_SUCCESS if successful.
+* - XST_FAILURE if fail.
+*
+* @note None.
+*
+******************************************************************************/
+s32 XSdPs_Get_Mmc_ExtCsd(XSdPs *InstancePtr, u8 *ReadBuff)
+{
+ s32 Status;
+ u32 StatusReg;
+ u32 Arg = 0U;
+ u16 BlkCnt;
+ u16 BlkSize;
+ s32 LoopCnt;
+
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ for (LoopCnt = 0; LoopCnt < 512; LoopCnt++) {
+ ReadBuff[LoopCnt] = 0U;
+ }
+
+ BlkCnt = XSDPS_EXT_CSD_CMD_BLKCNT;
+ BlkSize = XSDPS_EXT_CSD_CMD_BLKSIZE;
+ BlkSize &= XSDPS_BLK_SIZE_MASK;
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_BLK_SIZE_OFFSET, BlkSize);
+
+ XSdPs_SetupADMA2DescTbl(InstancePtr, BlkCnt, ReadBuff);
+
+ Xil_DCacheInvalidateRange((INTPTR)ReadBuff, 512U);
+
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_XFER_MODE_OFFSET,
+ XSDPS_TM_DAT_DIR_SEL_MASK | XSDPS_TM_DMA_EN_MASK);
+
+
+ /* Send SEND_EXT_CSD command */
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD8, Arg, 1U);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ /*
+ * Check for transfer complete
+ * Polling for response for now
+ */
+ do {
+ StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET);
+ if ((StatusReg & XSDPS_INTR_ERR_MASK) != 0U) {
+ /* Write to clear error bits */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_ERR_INTR_STS_OFFSET,
+ XSDPS_ERROR_INTR_ALL_MASK);
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ } while ((StatusReg & XSDPS_INTR_TC_MASK) == 0U);
+
+ /* Write to clear bit */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_TC_MASK);
+
+ Status = (s32)XSdPs_ReadReg(InstancePtr->Config.BaseAddress,
+ XSDPS_RESP0_OFFSET);
+
+ Status = XST_SUCCESS;
+
+ RETURN_PATH:
+ return Status;
+
+}
+
+
+/*****************************************************************************/
+/**
+*
+* API to UHS-I mode initialization
+*
+*
+* @param InstancePtr is a pointer to the XSdPs instance.
+* @param Mode UHS-I mode
+*
+* @return
+* - XST_SUCCESS if successful.
+* - XST_FAILURE if fail.
+*
+* @note None.
+*
+******************************************************************************/
+s32 XSdPs_Uhs_ModeInit(XSdPs *InstancePtr, u8 Mode)
+{
+ s32 Status;
+ u16 StatusReg;
+ u16 CtrlReg;
+ u32 Arg;
+ u16 BlkCnt;
+ u16 BlkSize;
+ u8 ReadBuff[64];
+
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ /* Drive strength */
+
+ /* Bus speed mode selection */
+ BlkCnt = XSDPS_SWITCH_CMD_BLKCNT;
+ BlkSize = XSDPS_SWITCH_CMD_BLKSIZE;
+ BlkSize &= XSDPS_BLK_SIZE_MASK;
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress, XSDPS_BLK_SIZE_OFFSET,
+ BlkSize);
+
+ XSdPs_SetupADMA2DescTbl(InstancePtr, BlkCnt, ReadBuff);
+
+ Xil_DCacheFlushRange((INTPTR)ReadBuff, 64);
+
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress, XSDPS_XFER_MODE_OFFSET,
+ XSDPS_TM_DAT_DIR_SEL_MASK | XSDPS_TM_DMA_EN_MASK);
+
+ switch (Mode) {
+ case 0U:
+ Arg = XSDPS_SWITCH_CMD_SDR12_SET;
+ InstancePtr->BusSpeed = XSDPS_SD_SDR12_MAX_CLK;
+ break;
+ case 1U:
+ Arg = XSDPS_SWITCH_CMD_SDR25_SET;
+ InstancePtr->BusSpeed = XSDPS_SD_SDR25_MAX_CLK;
+ break;
+ case 2U:
+ Arg = XSDPS_SWITCH_CMD_SDR50_SET;
+ InstancePtr->BusSpeed = XSDPS_SD_SDR50_MAX_CLK;
+ break;
+ case 3U:
+ Arg = XSDPS_SWITCH_CMD_SDR104_SET;
+ InstancePtr->BusSpeed = XSDPS_SD_SDR104_MAX_CLK;
+ break;
+ case 4U:
+ Arg = XSDPS_SWITCH_CMD_DDR50_SET;
+ InstancePtr->BusSpeed = XSDPS_SD_DDR50_MAX_CLK;
+ break;
+ default:
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ break;
+ }
+
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD6, Arg, 1U);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ /*
+ * Check for transfer complete
+ * Polling for response for now
+ */
+ do {
+ StatusReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET);
+ if ((StatusReg & XSDPS_INTR_ERR_MASK) != 0U) {
+ /* Write to clear error bits */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_ERR_INTR_STS_OFFSET, XSDPS_ERROR_INTR_ALL_MASK);
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ } while ((StatusReg & XSDPS_INTR_TC_MASK) == 0U);
+
+ /* Write to clear bit */
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_NORM_INTR_STS_OFFSET, XSDPS_INTR_TC_MASK);
+
+
+ /* Current limit */
+
+ /* Set UHS mode in controller */
+ CtrlReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_HOST_CTRL2_OFFSET);
+ CtrlReg &= (u16)(~XSDPS_HC2_UHS_MODE_MASK);
+ CtrlReg |= Mode;
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_HOST_CTRL2_OFFSET, CtrlReg);
+
+ /* Change the clock frequency */
+ Status = XSdPs_Change_ClkFreq(InstancePtr, InstancePtr->BusSpeed);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ if((Mode == XSDPS_UHS_SPEED_MODE_SDR104) ||
+ (Mode == XSDPS_UHS_SPEED_MODE_DDR50)) {
+ /* Send tuning pattern */
+ Status = XSdPs_Execute_Tuning(InstancePtr);
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+ }
+
+ Status = XST_SUCCESS;
+
+ RETURN_PATH:
+ return Status;
+}
+
+static s32 XSdPs_Execute_Tuning(XSdPs *InstancePtr)
+{
+ s32 Status;
+ u32 StatusReg;
+ u32 Arg;
+ u16 BlkCnt;
+ u16 BlkSize;
+ s32 LoopCnt;
+ u16 CtrlReg;
+ u8 TuningCount;
+
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ BlkCnt = XSDPS_TUNING_CMD_BLKCNT;
+ BlkSize = XSDPS_TUNING_CMD_BLKSIZE;
+ if(InstancePtr->BusWidth == XSDPS_8_BIT_WIDTH)
+ {
+ BlkSize = BlkSize*2U;
+ }
+ BlkSize &= XSDPS_BLK_SIZE_MASK;
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress, XSDPS_BLK_SIZE_OFFSET,
+ BlkSize);
+
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress, XSDPS_XFER_MODE_OFFSET,
+ XSDPS_TM_DAT_DIR_SEL_MASK);
+
+ CtrlReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_HOST_CTRL2_OFFSET);
+ CtrlReg |= XSDPS_HC2_EXEC_TNG_MASK;
+ XSdPs_WriteReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_HOST_CTRL2_OFFSET, CtrlReg);
+
+ for (TuningCount = 0U; TuningCount < MAX_TUNING_COUNT; TuningCount++) {
+
+ if (InstancePtr->CardType == XSDPS_CARD_SD) {
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD19, 0U, 1U);
+ } else {
+ Status = XSdPs_CmdTransfer(InstancePtr, CMD21, 0U, 1U);
+ }
+
+ if (Status != XST_SUCCESS) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ if ((XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_HOST_CTRL2_OFFSET) & XSDPS_HC2_EXEC_TNG_MASK) == 0U) {
+ break;
+ }
+ }
+
+ if ((XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_HOST_CTRL2_OFFSET) & XSDPS_HC2_SAMP_CLK_SEL_MASK) == 0U) {
+ Status = XST_FAILURE;
+ goto RETURN_PATH;
+ }
+
+ /*
+ * As per controller erratum, program the "SDCLK Frequency
+ * Select" of clock control register with a value, say
+ * clock/2. Wait for the Internal clock stable and program
+ * the desired frequency.
+ */
+ CtrlReg = XSdPs_ReadReg16(InstancePtr->Config.BaseAddress,
+ XSDPS_HOST_CTRL2_OFFSET);
+ if ((CtrlReg & XSDPS_HC2_SAMP_CLK_SEL_MASK) != 0U) {
+ Status = XSdPs_Change_ClkFreq(InstancePtr, InstancePtr->BusSpeed/2);
+ if (Status != XST_SUCCESS) {
+ goto RETURN_PATH ;
+ }
+ Status = XSdPs_Change_ClkFreq(InstancePtr, InstancePtr->BusSpeed);
+ if (Status != XST_SUCCESS) {
+ goto RETURN_PATH ;
+ }
+
+ }
+
+ Status = XST_SUCCESS;
+
+ RETURN_PATH: return Status;
+
+}
+
+#if defined (__arm__) || defined (__aarch64__)
+/*****************************************************************************/
+/**
+*
+* API to set Tap Delay w.r.t speed modes
+*
+*
+* @param InstancePtr is a pointer to the XSdPs instance.
+*
+* @return None
+*
+* @note None.
+*
+******************************************************************************/
+void XSdPs_SetTapDelay(XSdPs *InstancePtr)
+{
+ u32 DllCtrl, TapDelay;
+ if (InstancePtr->Config.DeviceId == XPAR_XSDPS_0_DEVICE_ID) {
+ DllCtrl = XSdPs_ReadReg(XPS_SYS_CTRL_BASEADDR, SD_DLL_CTRL);
+ DllCtrl |= SD0_DLL_RST;
+ XSdPs_WriteReg(XPS_SYS_CTRL_BASEADDR, SD_DLL_CTRL, DllCtrl);
+ if(InstancePtr->BusSpeed == XSDPS_MMC_HS200_MAX_CLK) {
+ /* Program the ITAPDLY */
+ TapDelay = XSdPs_ReadReg(XPS_SYS_CTRL_BASEADDR, SD_ITAPDLY);
+ TapDelay |= SD0_ITAPCHGWIN;
+ XSdPs_WriteReg(XPS_SYS_CTRL_BASEADDR, SD_ITAPDLY, TapDelay);
+ TapDelay |= SD0_ITAPDLYENA;
+ XSdPs_WriteReg(XPS_SYS_CTRL_BASEADDR, SD_ITAPDLY, TapDelay);
+ TapDelay &= ~SD0_ITAPCHGWIN;
+ XSdPs_WriteReg(XPS_SYS_CTRL_BASEADDR, SD_ITAPDLY, TapDelay);
+ /* Program the OTAPDLY */
+ TapDelay = XSdPs_ReadReg(XPS_SYS_CTRL_BASEADDR, SD_OTAPDLYSEL);
+ TapDelay |= SD0_OTAPDLYENA;
+ XSdPs_WriteReg(XPS_SYS_CTRL_BASEADDR, SD_OTAPDLYSEL, TapDelay);
+ TapDelay |= SD0_OTAPDLYSEL_HS200;
+ XSdPs_WriteReg(XPS_SYS_CTRL_BASEADDR, SD_OTAPDLYSEL, TapDelay);
+ }
+ DllCtrl &= ~SD0_DLL_RST;
+ XSdPs_WriteReg(XPS_SYS_CTRL_BASEADDR, SD_DLL_CTRL, DllCtrl);
+ }
+}
+#endif
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps_sinit.c
similarity index 94%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps_sinit.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps_sinit.c
index 4be1ac7fd..59657a7b3 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_4/src/xsdps_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sdps_v2_7/src/xsdps_sinit.c
@@ -33,6 +33,8 @@
/**
*
* @file xsdps_sinit.c
+* @addtogroup sdps_v2_5
+* @{
*
* The implementation of the XSdPs component's static initialization
* functionality.
@@ -43,6 +45,7 @@
* Ver Who Date Changes
* ----- --- -------- -----------------------------------------------
* 1.00a hk/sg 10/17/13 Initial release
+* kvn 07/15/15 Modified the code according to MISRAC-2012.
*
*
*
@@ -83,13 +86,14 @@ extern XSdPs_Config XSdPs_ConfigTable[];
XSdPs_Config *XSdPs_LookupConfig(u16 DeviceId)
{
XSdPs_Config *CfgPtr = NULL;
- int Index;
+ u32 Index;
- for (Index = 0; Index < XPAR_XSDPS_NUM_INSTANCES; Index++) {
+ for (Index = 0U; Index < (u32)XPAR_XSDPS_NUM_INSTANCES; Index++) {
if (XSdPs_ConfigTable[Index].DeviceId == DeviceId) {
CfgPtr = &XSdPs_ConfigTable[Index];
break;
}
}
- return CfgPtr;
+ return (XSdPs_Config *)CfgPtr;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips.c
deleted file mode 100644
index a4fdddc3c..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips.c
+++ /dev/null
@@ -1,1126 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xspips.c
-*
-* Contains implements the interface functions of the XSpiPs driver.
-* See xspips.h for a detailed description of the device and driver.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- -----------------------------------------------
-* 1.00 drg/jz 01/25/10 First release
-* 1.01 sg 03/07/12 Updated the code to always clear the relevant bits
-* before writing to config register.
-* Always clear the slave select bits before write and
-* clear the bits to no slave at the end of transfer
-* Modified the Polled transfer transmit/receive logic.
-* Tx should wait on TXOW Interrupt and Rx on RXNEMTY.
-* 1.03 sg 09/21/12 Added memory barrier dmb in polled transfer and
-* interrupt handler to overcome the clock domain
-* crossing issue in the controller. For CR #679252.
-* 1.04a sg 01/30/13 Changed SPI transfer logic for polled and interrupt
-* modes to be based on filled tx fifo count and receive
-* based on it. RXNEMPTY interrupt is not used.
-* SetSlaveSelect API logic is modified to drive the bit
-* position low based on the slave select value
-* requested. GetSlaveSelect API will return the value
-* based on bit position that is low.
-* 1.06a hk 08/22/13 Changed GetSlaveSelect function. CR# 727866.
-* Added masking ConfigReg before writing in SetSlaveSel
-* Added extended slave select support - CR#722569.
-* Added check for MODF in polled transfer function.
-* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
-*
-*
-*
-******************************************************************************/
-
-/***************************** Include Files *********************************/
-
-#include "xspips.h"
-
-/************************** Constant Definitions *****************************/
-
-
-/**************************** Type Definitions *******************************/
-
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/****************************************************************************/
-/*
-*
-* Send one byte to the currently selected slave. A byte of data is written to
-* transmit FIFO/register.
-*
-* @param BaseAddress is the base address of the device
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XSpiPs_SendByte(u32 BaseAddress, u8 Data);
-*
-*****************************************************************************/
-#define XSpiPs_SendByte(BaseAddress, Data) \
- XSpiPs_Out32((BaseAddress) + (u32)XSPIPS_TXD_OFFSET, (u32)(Data))
-
-/****************************************************************************/
-/*
-*
-* Receive one byte from the device's receive FIFO/register. It is assumed
-* that the byte is already available.
-*
-* @param BaseAddress is the base address of the device
-*
-* @return The byte retrieved from the receive FIFO/register.
-*
-* @note C-Style signature:
-* u8 XSpiPs_RecvByte(u32 BaseAddress);
-*
-*****************************************************************************/
-#define XSpiPs_RecvByte(BaseAddress) \
- XSpiPs_In32((u32)((BaseAddress) + (u32)XSPIPS_RXD_OFFSET))
-
-/************************** Function Prototypes ******************************/
-
-static void StubStatusHandler(void *CallBackRef, u32 StatusEvent,
- u32 ByteCount);
-
-/************************** Variable Definitions *****************************/
-
-
-/*****************************************************************************/
-/**
-*
-* Initializes a specific XSpiPs instance such that the driver is ready to use.
-*
-* The state of the device after initialization is:
-* - Device is disabled
-* - Slave mode
-* - Active high clock polarity
-* - Clock phase 0
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-* @param ConfigPtr is a reference to a structure containing information
-* about a specific SPI device. This function initializes an
-* InstancePtr object for a specific device specified by the
-* contents of Config. This function can initialize multiple
-* instance objects with the use of multiple calls giving different
-* Config information on each call.
-* @param EffectiveAddr is the device base address in the virtual memory
-* address space. The caller is responsible for keeping the address
-* mapping from EffectiveAddr to the device physical base address
-* unchanged once this function is invoked. Unexpected errors may
-* occur if the address mapping changes after this function is
-* called. If address translation is not used, use
-* ConfigPtr->Config.BaseAddress for this device.
-*
-* @return
-* - XST_SUCCESS if successful.
-* - XST_DEVICE_IS_STARTED if the device is already started.
-* It must be stopped to re-initialize.
-*
-* @note None.
-*
-******************************************************************************/
-s32 XSpiPs_CfgInitialize(XSpiPs *InstancePtr, XSpiPs_Config *ConfigPtr,
- u32 EffectiveAddr)
-{
- s32 Status;
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(ConfigPtr != NULL);
-
- /*
- * If the device is busy, disallow the initialize and return a status
- * indicating it is already started. This allows the user to stop the
- * device and re-initialize, but prevents a user from inadvertently
- * initializing. This assumes the busy flag is cleared at startup.
- */
- if (InstancePtr->IsBusy == TRUE) {
- Status = (s32)XST_DEVICE_IS_STARTED;
- } else {
-
- /*
- * Set some default values.
- */
- InstancePtr->IsBusy = FALSE;
-
- InstancePtr->Config.BaseAddress = EffectiveAddr;
- InstancePtr->StatusHandler = StubStatusHandler;
-
- InstancePtr->SendBufferPtr = NULL;
- InstancePtr->RecvBufferPtr = NULL;
- InstancePtr->RequestedBytes = 0U;
- InstancePtr->RemainingBytes = 0U;
- InstancePtr->IsReady = XIL_COMPONENT_IS_READY;
-
- /*
- * Reset the SPI device to get it into its initial state. It is
- * expected that device configuration will take place after this
- * initialization is done, but before the device is started.
- */
- XSpiPs_Reset(InstancePtr);
- Status = (s32)XST_SUCCESS;
- }
-
- return Status;
-}
-
-
-/*****************************************************************************/
-/**
-*
-* Resets the SPI device. Reset must only be called after the driver has been
-* initialized. The configuration of the device after reset is the same as its
-* configuration after initialization. Any data transfer that is in progress
-* is aborted.
-*
-* The upper layer software is responsible for re-configuring (if necessary)
-* and restarting the SPI device after the reset.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return None.
-*
-* @note None.
-*
-******************************************************************************/
-void XSpiPs_Reset(XSpiPs *InstancePtr)
-{
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- /*
- * Abort any transfer that is in progress
- */
- XSpiPs_Abort(InstancePtr);
-
- /*
- * Reset any values that are not reset by the hardware reset such that
- * the software state matches the hardware device
- */
- XSpiPs_WriteReg(InstancePtr->Config.BaseAddress, XSPIPS_CR_OFFSET,
- XSPIPS_CR_RESET_STATE);
-
-}
-
-/*****************************************************************************/
-/**
-*
-* Transfers specified data on the SPI bus. If the SPI device is configured as
-* a master, this function initiates bus communication and sends/receives the
-* data to/from the selected SPI slave. If the SPI device is configured as a
-* slave, this function prepares the buffers to be sent/received when selected
-* by a master. For every byte sent, a byte is received. This function should
-* be used to perform interrupt based transfers.
-*
-* The caller has the option of providing two different buffers for send and
-* receive, or one buffer for both send and receive, or no buffer for receive.
-* The receive buffer must be at least as big as the send buffer to prevent
-* unwanted memory writes. This implies that the byte count passed in as an
-* argument must be the smaller of the two buffers if they differ in size.
-* Here are some sample usages:
-*
-* XSpiPs_Transfer(InstancePtr, SendBuf, RecvBuf, ByteCount)
-* The caller wishes to send and receive, and provides two different
-* buffers for send and receive.
-*
-* XSpiPs_Transfer(InstancePtr, SendBuf, NULL, ByteCount)
-* The caller wishes only to send and does not care about the received
-* data. The driver ignores the received data in this case.
-*
-* XSpiPs_Transfer(InstancePtr, SendBuf, SendBuf, ByteCount)
-* The caller wishes to send and receive, but provides the same buffer
-* for doing both. The driver sends the data and overwrites the send
-* buffer with received data as it transfers the data.
-*
-* XSpiPs_Transfer(InstancePtr, RecvBuf, RecvBuf, ByteCount)
-* The caller wishes to only receive and does not care about sending
-* data. In this case, the caller must still provide a send buffer, but
-* it can be the same as the receive buffer if the caller does not care
-* what it sends. The device must send N bytes of data if it wishes to
-* receive N bytes of data.
-*
-* Although this function takes entire buffers as arguments, the driver can only
-* transfer a limited number of bytes at a time, limited by the size of the
-* FIFO. A call to this function only starts the transfer, then subsequent
-* transfers of the data is performed by the interrupt service routine until
-* the entire buffer has been transferred. The status callback function is
-* called when the entire buffer has been sent/received.
-*
-* This function is non-blocking. As a master, the SetSlaveSelect function must
-* be called prior to this function.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-* @param SendBufPtr is a pointer to a buffer of data for sending.
-* This buffer must not be NULL.
-* @param RecvBufPtr is a pointer to a buffer for received data.
-* This argument can be NULL if do not care about receiving.
-* @param ByteCount contains the number of bytes to send/receive.
-* The number of bytes received always equals the number of bytes
-* sent.
-*
-* @return
-* - XST_SUCCESS if the buffers are successfully handed off to the
-* device for transfer.
-* - XST_DEVICE_BUSY indicates that a data transfer is already in
-* progress. This is determined by the driver.
-*
-* @note
-*
-* This function is not thread-safe. The higher layer software must ensure that
-* no two threads are transferring data on the SPI bus at the same time.
-*
-******************************************************************************/
-s32 XSpiPs_Transfer(XSpiPs *InstancePtr, u8 *SendBufPtr,
- u8 *RecvBufPtr, u32 ByteCount)
-{
- u32 ConfigReg;
- u8 TransCount = 0U;
- s32 StatusTransfer;
-
- /*
- * The RecvBufPtr argument can be null
- */
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(SendBufPtr != NULL);
- Xil_AssertNonvoid(ByteCount > 0U);
- Xil_AssertNonvoid(InstancePtr->IsReady == (u32)XIL_COMPONENT_IS_READY);
-
- /*
- * Check whether there is another transfer in progress. Not thread-safe.
- */
- if (InstancePtr->IsBusy == TRUE) {
- StatusTransfer = (s32)XST_DEVICE_BUSY;
- } else {
-
- /*
- * Set the busy flag, which will be cleared in the ISR when the
- * transfer is entirely done.
- */
- InstancePtr->IsBusy = TRUE;
-
- /*
- * Set up buffer pointers.
- */
- InstancePtr->SendBufferPtr = SendBufPtr;
- InstancePtr->RecvBufferPtr = RecvBufPtr;
-
- InstancePtr->RequestedBytes = ByteCount;
- InstancePtr->RemainingBytes = ByteCount;
-
- /*
- * If manual chip select mode, initialize the slave select value.
- */
- if (XSpiPs_IsManualChipSelect(InstancePtr) != FALSE) {
- ConfigReg = XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET);
- /*
- * Set the slave select value.
- */
- ConfigReg &= (u32)(~XSPIPS_CR_SSCTRL_MASK);
- ConfigReg |= InstancePtr->SlaveSelect;
- XSpiPs_WriteReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET, ConfigReg);
- }
-
- /*
- * Enable the device.
- */
- XSpiPs_Enable(InstancePtr);
-
- /*
- * Clear all the interrrupts.
- */
- XSpiPs_WriteReg(InstancePtr->Config.BaseAddress, XSPIPS_SR_OFFSET,
- XSPIPS_IXR_WR_TO_CLR_MASK);
-
- /*
- * Fill the TXFIFO with as many bytes as it will take (or as many as
- * we have to send).
- */
- while ((InstancePtr->RemainingBytes > 0U) &&
- (TransCount < XSPIPS_FIFO_DEPTH)) {
- XSpiPs_SendByte(InstancePtr->Config.BaseAddress,
- *InstancePtr->SendBufferPtr);
- InstancePtr->SendBufferPtr += 1;
- InstancePtr->RemainingBytes--;
- TransCount++;
- }
-
- /*
- * Enable interrupts (connecting to the interrupt controller and
- * enabling interrupts should have been done by the caller).
- */
- XSpiPs_WriteReg(InstancePtr->Config.BaseAddress,
- XSPIPS_IER_OFFSET, XSPIPS_IXR_DFLT_MASK);
-
- /*
- * If master mode and manual start mode, issue manual start command
- * to start the transfer.
- */
- if ((XSpiPs_IsManualStart(InstancePtr) == TRUE)
- && (XSpiPs_IsMaster(InstancePtr) == TRUE)) {
- ConfigReg = XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET);
- ConfigReg |= XSPIPS_CR_MANSTRT_MASK;
- XSpiPs_WriteReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET, ConfigReg);
- }
- StatusTransfer = (s32)XST_SUCCESS;
- }
- return StatusTransfer;
-}
-
-/*****************************************************************************/
-/**
-* Transfers specified data on the SPI bus in polled mode.
-*
-* The caller has the option of providing two different buffers for send and
-* receive, or one buffer for both send and receive, or no buffer for receive.
-* The receive buffer must be at least as big as the send buffer to prevent
-* unwanted memory writes. This implies that the byte count passed in as an
-* argument must be the smaller of the two buffers if they differ in size.
-* Here are some sample usages:
-*
-* XSpiPs_PolledTransfer(InstancePtr, SendBuf, RecvBuf, ByteCount)
-* The caller wishes to send and receive, and provides two different
-* buffers for send and receive.
-*
-* XSpiPs_PolledTransfer(InstancePtr, SendBuf, NULL, ByteCount)
-* The caller wishes only to send and does not care about the received
-* data. The driver ignores the received data in this case.
-*
-* XSpiPs_PolledTransfer(InstancePtr, SendBuf, SendBuf, ByteCount)
-* The caller wishes to send and receive, but provides the same buffer
-* for doing both. The driver sends the data and overwrites the send
-* buffer with received data as it transfers the data.
-*
-* XSpiPs_PolledTransfer(InstancePtr, RecvBuf, RecvBuf, ByteCount)
-* The caller wishes to only receive and does not care about sending
-* data. In this case, the caller must still provide a send buffer, but
-* it can be the same as the receive buffer if the caller does not care
-* what it sends. The device must send N bytes of data if it wishes to
-* receive N bytes of data.
-*
-*
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-* @param SendBufPtr is a pointer to a buffer of data for sending.
-* This buffer must not be NULL.
-* @param RecvBufPtr is a pointer to a buffer for received data.
-* This argument can be NULL if do not care about receiving.
-* @param ByteCount contains the number of bytes to send/receive.
-* The number of bytes received always equals the number of bytes
-* sent.
-
-* @return
-* - XST_SUCCESS if the buffers are successfully handed off to the
-* device for transfer.
-* - XST_DEVICE_BUSY indicates that a data transfer is already in
-* progress. This is determined by the driver.
-*
-* @note
-*
-* This function is not thread-safe. The higher layer software must ensure that
-* no two threads are transferring data on the SPI bus at the same time.
-*
-******************************************************************************/
-s32 XSpiPs_PolledTransfer(XSpiPs *InstancePtr, u8 *SendBufPtr,
- u8 *RecvBufPtr, u32 ByteCount)
-{
- u32 StatusReg;
- u32 ConfigReg;
- u32 TransCount;
- u32 CheckTransfer;
- s32 Status_Polled;
- u8 TempData;
-
- /*
- * The RecvBufPtr argument can be NULL.
- */
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(SendBufPtr != NULL);
- Xil_AssertNonvoid(ByteCount > 0U);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- /*
- * Check whether there is another transfer in progress. Not thread-safe.
- */
- if (InstancePtr->IsBusy == TRUE) {
- Status_Polled = (s32)XST_DEVICE_BUSY;
- } else {
-
- /*
- * Set the busy flag, which will be cleared when the transfer is
- * entirely done.
- */
- InstancePtr->IsBusy = TRUE;
-
- /*
- * Set up buffer pointers.
- */
- InstancePtr->SendBufferPtr = SendBufPtr;
- InstancePtr->RecvBufferPtr = RecvBufPtr;
-
- InstancePtr->RequestedBytes = ByteCount;
- InstancePtr->RemainingBytes = ByteCount;
-
- /*
- * If manual chip select mode, initialize the slave select value.
- */
- if (XSpiPs_IsManualChipSelect(InstancePtr) == TRUE) {
- ConfigReg = XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET);
- /*
- * Set the slave select value.
- */
- ConfigReg &= (u32)(~XSPIPS_CR_SSCTRL_MASK);
- ConfigReg |= InstancePtr->SlaveSelect;
- XSpiPs_WriteReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET, ConfigReg);
- }
-
- /*
- * Enable the device.
- */
- XSpiPs_Enable(InstancePtr);
-
- while((InstancePtr->RemainingBytes > (u32)0U) ||
- (InstancePtr->RequestedBytes > (u32)0U)) {
- TransCount = 0U;
- /*
- * Fill the TXFIFO with as many bytes as it will take (or as
- * many as we have to send).
- */
- while ((InstancePtr->RemainingBytes > (u32)0U) &&
- ((u32)TransCount < (u32)XSPIPS_FIFO_DEPTH)) {
- XSpiPs_SendByte(InstancePtr->Config.BaseAddress,
- *InstancePtr->SendBufferPtr);
- InstancePtr->SendBufferPtr += 1;
- InstancePtr->RemainingBytes--;
- ++TransCount;
- }
-
- /*
- * If master mode and manual start mode, issue manual start
- * command to start the transfer.
- */
- if ((XSpiPs_IsManualStart(InstancePtr) == TRUE)
- && (XSpiPs_IsMaster(InstancePtr) == TRUE)) {
- ConfigReg = XSpiPs_ReadReg(
- InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET);
- ConfigReg |= XSPIPS_CR_MANSTRT_MASK;
- XSpiPs_WriteReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET, ConfigReg);
- }
-
- /*
- * Wait for the transfer to finish by polling Tx fifo status.
- */
- CheckTransfer = (u32)0U;
- while (CheckTransfer == 0U){
- StatusReg = XSpiPs_ReadReg(
- InstancePtr->Config.BaseAddress,
- XSPIPS_SR_OFFSET);
- if ( (StatusReg & XSPIPS_IXR_MODF_MASK) != 0U) {
- /*
- * Clear the mode fail bit
- */
- XSpiPs_WriteReg(
- InstancePtr->Config.BaseAddress,
- XSPIPS_SR_OFFSET,
- XSPIPS_IXR_MODF_MASK);
- return (s32)XST_SEND_ERROR;
- }
- CheckTransfer = (StatusReg &
- XSPIPS_IXR_TXOW_MASK);
- }
-
- /*
- * A transmit has just completed. Process received data and
- * check for more data to transmit.
- * First get the data received as a result of the transmit
- * that just completed. Receive data based on the
- * count obtained while filling tx fifo. Always get the
- * received data, but only fill the receive buffer if it
- * points to something (the upper layer software may not
- * care to receive data).
- */
- while (TransCount != (u32)0U) {
- TempData = (u8)XSpiPs_RecvByte(
- InstancePtr->Config.BaseAddress);
- if (InstancePtr->RecvBufferPtr != NULL) {
- *(InstancePtr->RecvBufferPtr) = TempData;
- InstancePtr->RecvBufferPtr += 1;
- }
- InstancePtr->RequestedBytes--;
- --TransCount;
- }
- }
-
- /*
- * Clear the slave selects now, before terminating the transfer.
- */
- if (XSpiPs_IsManualChipSelect(InstancePtr) == TRUE) {
- ConfigReg = XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET);
- ConfigReg |= XSPIPS_CR_SSCTRL_MASK;
- XSpiPs_WriteReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET, ConfigReg);
- }
-
- /*
- * Clear the busy flag.
- */
- InstancePtr->IsBusy = FALSE;
-
- /*
- * Disable the device.
- */
- XSpiPs_Disable(InstancePtr);
- Status_Polled = (s32)XST_SUCCESS;
- }
- return Status_Polled;
-}
-
-/*****************************************************************************/
-/**
-*
-* Selects or deselect the slave with which the master communicates. This setting
-* affects the SPI_ss_outN signals. The behavior depends on the setting of the
-* CR_SSDECEN bit. If CR_SSDECEN is 0, the SPI_ss_outN bits will be output with a
-* single signal low. If CR_SSDECEN is 1, the SPI_ss_outN bits will reflect the
-* value set.
-*
-* The user is not allowed to deselect the slave while a transfer is in progress.
-* If no transfer is in progress, the user can select a new slave, which
-* implicitly deselects the current slave. In order to explicitly deselect the
-* current slave, a value of all 1's, 0x0F can be passed in as the argument to
-* the function.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-* @param SlaveSel is the slave number to be selected.
-* Normally, 3 slaves can be selected with values 0-2.
-* In case, 3-8 decode option is set, then upto 8 slaves
-* can be selected. Only one slave can be selected at a time.
-*
-* @return
-* - XST_SUCCESS if the slave is selected or deselected
-* successfully.
-* - XST_DEVICE_BUSY if a transfer is in progress, slave cannot be
-* changed.
-*
-* @note
-*
-* This function only sets the slave which will be selected when a transfer
-* occurs. The slave is not selected when the SPI is idle. The slave select
-* has no affect when the device is configured as a slave.
-*
-******************************************************************************/
-s32 XSpiPs_SetSlaveSelect(XSpiPs *InstancePtr, u8 SlaveSel)
-{
- u32 ConfigReg;
- s32 Status_Slave;
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid(SlaveSel <= XSPIPS_CR_SSCTRL_MAXIMUM);
-
- /*
- * Do not allow the slave select to change while a transfer is in
- * progress. Not thread-safe.
- */
- if (InstancePtr->IsBusy == TRUE) {
- Status_Slave = (s32)XST_DEVICE_BUSY;
- } else {
- /*
- * If decode slave select option is set,
- * then set slave select value directly.
- * Update the Instance structure member.
- */
- if ( XSpiPs_IsDecodeSSelect( InstancePtr ) == TRUE) {
- InstancePtr->SlaveSelect = ((u32)SlaveSel) << XSPIPS_CR_SSCTRL_SHIFT;
- }
- else {
- /*
- * Set the bit position to low using SlaveSel. Update the Instance
- * structure member.
- */
- InstancePtr->SlaveSelect = ((~(1U << SlaveSel)) & \
- XSPIPS_CR_SSCTRL_MAXIMUM) << XSPIPS_CR_SSCTRL_SHIFT;
- }
-
- /*
- * Read the config register, update the slave select value and write
- * back to config register.
- */
- ConfigReg = XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET);
- ConfigReg &= (u32)(~XSPIPS_CR_SSCTRL_MASK);
- ConfigReg |= InstancePtr->SlaveSelect;
- XSpiPs_WriteReg(InstancePtr->Config.BaseAddress, XSPIPS_CR_OFFSET,
- ConfigReg);
- Status_Slave = (s32)XST_SUCCESS;
- }
- return Status_Slave;
-}
-
-/*****************************************************************************/
-/**
-*
-* Gets the current slave select setting for the SPI device.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return The slave number selected (starting from 0).
-*
-* @note None.
-*
-******************************************************************************/
-u8 XSpiPs_GetSlaveSelect(XSpiPs *InstancePtr)
-{
- u32 ConfigReg;
- u32 SlaveSel;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- ConfigReg = InstancePtr->SlaveSelect;
- ConfigReg &= XSPIPS_CR_SSCTRL_MASK;
- ConfigReg >>= XSPIPS_CR_SSCTRL_SHIFT;
- ConfigReg &= XSPIPS_CR_SSCTRL_MAXIMUM;
-
- /*
- * If decode slave select option is set, then read value directly.
- */
- if ( XSpiPs_IsDecodeSSelect( InstancePtr ) == TRUE) {
- SlaveSel = ConfigReg;
- }
- else {
-
- /*
- * Get the slave select value
- */
- if(ConfigReg == 0x0FU) {
- /*
- * No slave selected
- */
- SlaveSel = 0xFU;
- }else {
- /*
- * Get selected slave number (0,1 or 2)
- */
- SlaveSel = ((~ConfigReg) & XSPIPS_CR_SSCTRL_MAXIMUM)/2;
- }
- }
- return (u8)SlaveSel;
-}
-
-/*****************************************************************************/
-/**
-*
-* Sets the status callback function, the status handler, which the driver
-* calls when it encounters conditions that should be reported to upper
-* layer software. The handler executes in an interrupt context, so it must
-* minimize the amount of processing performed. One of the following status
-* events is passed to the status handler.
-*
-*
-* XST_SPI_MODE_FAULT A mode fault error occurred, meaning the device
-* is selected as slave while being a master.
-*
-* XST_SPI_TRANSFER_DONE The requested data transfer is done
-*
-* XST_SPI_TRANSMIT_UNDERRUN As a slave device, the master clocked data
-* but there were none available in the transmit
-* register/FIFO. This typically means the slave
-* application did not issue a transfer request
-* fast enough, or the processor/driver could not
-* fill the transmit register/FIFO fast enough.
-*
-* XST_SPI_RECEIVE_OVERRUN The SPI device lost data. Data was received
-* but the receive data register/FIFO was full.
-*
-* XST_SPI_SLAVE_MODE_FAULT A slave SPI device was selected as a slave
-* while it was disabled. This indicates the
-* master is already transferring data (which is
-* being dropped until the slave application
-* issues a transfer).
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-* @param CallBackRef is the upper layer callback reference passed back
-* when the callback function is invoked.
-* @param FunctionPtr is the pointer to the callback function.
-*
-* @return None.
-*
-* @note
-*
-* The handler is called within interrupt context, so it should do its work
-* quickly and queue potentially time-consuming work to a task-level thread.
-*
-******************************************************************************/
-void XSpiPs_SetStatusHandler(XSpiPs *InstancePtr, void *CallBackRef,
- XSpiPs_StatusHandler FunctionPtr)
-{
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(FunctionPtr != NULL);
- Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- InstancePtr->StatusHandler = FunctionPtr;
- InstancePtr->StatusRef = CallBackRef;
-}
-
-/*****************************************************************************/
-/**
-*
-* This is a stub for the status callback. The stub is here in case the upper
-* layers forget to set the handler.
-*
-* @param CallBackRef is a pointer to the upper layer callback reference
-* @param StatusEvent is the event that just occurred.
-* @param ByteCount is the number of bytes transferred up until the event
-* occurred.
-*
-* @return None.
-*
-* @note None.
-*
-******************************************************************************/
-static void StubStatusHandler(void *CallBackRef, u32 StatusEvent,
- u32 ByteCount)
-{
- (void) CallBackRef;
- (void) StatusEvent;
- (void) ByteCount;
-
- Xil_AssertVoidAlways();
-}
-
-/*****************************************************************************/
-/**
-*
-* The interrupt handler for SPI interrupts. This function must be connected
-* by the user to an interrupt controller.
-*
-* The interrupts that are handled are:
-*
-* - Mode Fault Error. This interrupt is generated if this device is selected
-* as a slave when it is configured as a master. The driver aborts any data
-* transfer that is in progress by resetting FIFOs (if present) and resetting
-* its buffer pointers. The upper layer software is informed of the error.
-*
-* - Data Transmit Register (FIFO) Empty. This interrupt is generated when the
-* transmit register or FIFO is empty. The driver uses this interrupt during a
-* transmission to continually send/receive data until the transfer is done.
-*
-* - Data Transmit Register (FIFO) Underflow. This interrupt is generated when
-* the SPI device, when configured as a slave, attempts to read an empty
-* DTR/FIFO. An empty DTR/FIFO usually means that software is not giving the
-* device data in a timely manner. No action is taken by the driver other than
-* to inform the upper layer software of the error.
-*
-* - Data Receive Register (FIFO) Overflow. This interrupt is generated when the
-* SPI device attempts to write a received byte to an already full DRR/FIFO.
-* A full DRR/FIFO usually means software is not emptying the data in a timely
-* manner. No action is taken by the driver other than to inform the upper
-* layer software of the error.
-*
-* - Slave Mode Fault Error. This interrupt is generated if a slave device is
-* selected as a slave while it is disabled. No action is taken by the driver
-* other than to inform the upper layer software of the error.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return None.
-*
-* @note
-*
-* The slave select register is being set to deselect the slave when a transfer
-* is complete. This is being done regardless of whether it is a slave or a
-* master since the hardware does not drive the slave select as a slave.
-*
-******************************************************************************/
-void XSpiPs_InterruptHandler(XSpiPs *InstancePtr)
-{
- XSpiPs *SpiPtr = InstancePtr;
- u32 IntrStatus;
- u32 ConfigReg;
- u32 BytesDone; /* Number of bytes done so far. */
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(SpiPtr->IsReady == XIL_COMPONENT_IS_READY);
-
- /*
- * Immediately clear the interrupts in case the ISR causes another
- * interrupt to be generated. If we clear at the end of the ISR,
- * we may miss newly generated interrupts.
- * Disable the TXOW interrupt because we transmit from within the ISR,
- * which could potentially cause another TX_OW interrupt.
- */
- IntrStatus =
- XSpiPs_ReadReg(SpiPtr->Config.BaseAddress, XSPIPS_SR_OFFSET);
- XSpiPs_WriteReg(SpiPtr->Config.BaseAddress, XSPIPS_SR_OFFSET,
- (IntrStatus & XSPIPS_IXR_WR_TO_CLR_MASK));
- XSpiPs_WriteReg(SpiPtr->Config.BaseAddress, XSPIPS_IDR_OFFSET,
- XSPIPS_IXR_TXOW_MASK);
-
- /*
- * Check for mode fault error. We want to check for this error first,
- * before checking for progress of a transfer, since this error needs
- * to abort any operation in progress.
- */
- if ((u32)XSPIPS_IXR_MODF_MASK == (u32)(IntrStatus & XSPIPS_IXR_MODF_MASK)) {
- BytesDone = SpiPtr->RequestedBytes - SpiPtr->RemainingBytes;
-
- /*
- * Abort any operation currently in progress. This includes
- * clearing the mode fault condition by reading the status
- * register. Note that the status register should be read after
- * the abort, since reading the status register clears the mode
- * fault condition and would cause the device to restart any
- * transfer that may be in progress.
- */
- XSpiPs_Abort(SpiPtr);
-
- SpiPtr->StatusHandler(SpiPtr->StatusRef, XST_SPI_MODE_FAULT,
- BytesDone);
-
- return; /* Do not continue servicing other interrupts. */
- }
-
-
- if ((IntrStatus & XSPIPS_IXR_TXOW_MASK) != 0U) {
- u8 TempData;
- u32 TransCount;
- /*
- * A transmit has just completed. Process received data and
- * check for more data to transmit.
- * First get the data received as a result of the transmit that
- * just completed. Always get the received data, but only fill
- * the receive buffer if it is not null (it can be null when
- * the device does not care to receive data).
- * Initialize the TransCount based on the requested bytes.
- * Loop on receive FIFO based on TransCount.
- */
- TransCount = SpiPtr->RequestedBytes - SpiPtr->RemainingBytes;
-
- while (TransCount != 0U) {
- TempData = (u8)XSpiPs_RecvByte(SpiPtr->Config.BaseAddress);
- if (SpiPtr->RecvBufferPtr != NULL) {
- *SpiPtr->RecvBufferPtr = TempData;
- SpiPtr->RecvBufferPtr += 1;
- }
- SpiPtr->RequestedBytes--;
- --TransCount;
- }
-
- /*
- * Fill the TXFIFO until data exists, otherwise fill upto
- * FIFO depth.
- */
- while ((SpiPtr->RemainingBytes > 0U) &&
- (TransCount < XSPIPS_FIFO_DEPTH)) {
- XSpiPs_SendByte(SpiPtr->Config.BaseAddress,
- *SpiPtr->SendBufferPtr);
- SpiPtr->SendBufferPtr += 1;
- SpiPtr->RemainingBytes--;
- ++TransCount;
- }
-
- if ((SpiPtr->RemainingBytes == 0U) &&
- (SpiPtr->RequestedBytes == 0U)) {
- /*
- * No more data to send. Disable the interrupt and
- * inform the upper layer software that the transfer
- * is done. The interrupt will be re-enabled when
- * another transfer is initiated.
- */
- XSpiPs_WriteReg(SpiPtr->Config.BaseAddress,
- XSPIPS_IDR_OFFSET, XSPIPS_IXR_DFLT_MASK);
-
- /*
- * Disable slave select lines as the transfer
- * is complete.
- */
- if (XSpiPs_IsManualChipSelect(InstancePtr) == TRUE) {
- ConfigReg = XSpiPs_ReadReg(
- SpiPtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET);
- ConfigReg |= XSPIPS_CR_SSCTRL_MASK;
- XSpiPs_WriteReg(
- SpiPtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET, ConfigReg);
- }
-
- /*
- * Clear the busy flag.
- */
- SpiPtr->IsBusy = FALSE;
-
- /*
- * Disable the device.
- */
- XSpiPs_Disable(SpiPtr);
-
- /*
- * Inform the Transfer done to upper layers.
- */
- SpiPtr->StatusHandler(SpiPtr->StatusRef,
- XST_SPI_TRANSFER_DONE,
- SpiPtr->RequestedBytes);
- } else {
- /*
- * Enable the TXOW interrupt.
- */
- XSpiPs_WriteReg(SpiPtr->Config.BaseAddress,
- XSPIPS_IER_OFFSET, XSPIPS_IXR_TXOW_MASK);
- /*
- * Start the transfer by not inhibiting the transmitter
- * any longer.
- */
- if ((XSpiPs_IsManualStart(SpiPtr) == TRUE)
- && (XSpiPs_IsMaster(SpiPtr) == TRUE)) {
- ConfigReg = XSpiPs_ReadReg(
- SpiPtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET);
- ConfigReg |= XSPIPS_CR_MANSTRT_MASK;
- XSpiPs_WriteReg(
- SpiPtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET, ConfigReg);
- }
- }
- }
-
- /*
- * Check for overflow and underflow errors.
- */
- if ((IntrStatus & XSPIPS_IXR_RXOVR_MASK) != 0U) {
- BytesDone = SpiPtr->RequestedBytes - SpiPtr->RemainingBytes;
- SpiPtr->IsBusy = FALSE;
-
- /*
- * The Slave select lines are being manually controlled.
- * Disable them because the transfer is complete.
- */
- if (XSpiPs_IsManualChipSelect(SpiPtr) == TRUE) {
- ConfigReg = XSpiPs_ReadReg(
- SpiPtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET);
- ConfigReg |= XSPIPS_CR_SSCTRL_MASK;
- XSpiPs_WriteReg(
- SpiPtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET, ConfigReg);
- }
-
- SpiPtr->StatusHandler(SpiPtr->StatusRef,
- XST_SPI_RECEIVE_OVERRUN, BytesDone);
- }
-
- if ((IntrStatus & XSPIPS_IXR_TXUF_MASK) != 0U) {
- BytesDone = SpiPtr->RequestedBytes - SpiPtr->RemainingBytes;
-
- SpiPtr->IsBusy = FALSE;
- /*
- * The Slave select lines are being manually controlled.
- * Disable them because the transfer is complete.
- */
- if (XSpiPs_IsManualChipSelect(SpiPtr) == TRUE) {
- ConfigReg = XSpiPs_ReadReg(
- SpiPtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET);
- ConfigReg |= XSPIPS_CR_SSCTRL_MASK;
- XSpiPs_WriteReg(
- SpiPtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET, ConfigReg);
- }
-
- SpiPtr->StatusHandler(SpiPtr->StatusRef,
- XST_SPI_TRANSMIT_UNDERRUN, BytesDone);
- }
-
-}
-
-/*****************************************************************************/
-/**
-*
-* Aborts a transfer in progress by disabling the device and resetting the FIFOs
-* if present. The byte counts are cleared, the busy flag is cleared, and mode
-* fault is cleared.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return None.
-*
-* @note
-*
-* This function does a read/modify/write of the Config register. The user of
-* this function needs to take care of critical sections.
-*
-******************************************************************************/
-void XSpiPs_Abort(XSpiPs *InstancePtr)
-{
-
- u8 Temp;
- u32 Check;
- XSpiPs_Disable(InstancePtr);
-
- /*
- * Clear the RX FIFO and drop any data.
- */
- Check = (XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSPIPS_SR_OFFSET) & XSPIPS_IXR_RXNEMPTY_MASK);
- while (Check != (u32)0U) {
- Temp = (u8)XSpiPs_RecvByte(InstancePtr->Config.BaseAddress);
- if(Temp != (u8)0U){
- }
- Check = (XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSPIPS_SR_OFFSET) & XSPIPS_IXR_RXNEMPTY_MASK);
- }
-
- /*
- * Clear mode fault condition.
- */
- XSpiPs_WriteReg(InstancePtr->Config.BaseAddress,
- XSPIPS_SR_OFFSET,
- XSPIPS_IXR_MODF_MASK);
-
- InstancePtr->RemainingBytes = 0U;
- InstancePtr->RequestedBytes = 0U;
- InstancePtr->IsBusy = FALSE;
-}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips.h
deleted file mode 100644
index 3d699105e..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips.h
+++ /dev/null
@@ -1,691 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xspips.h
-*
-* This file contains the implementation of the XSpiPs driver. It works for
-* both the master and slave mode. User documentation for the driver functions
-* is contained in this file in the form of comment blocks at the front of each
-* function.
-*
-* An SPI device connects to an SPI bus through a 4-wire serial interface.
-* The SPI bus is a full-duplex, synchronous bus that facilitates communication
-* between one master and one slave. The device is always full-duplex,
-* which means that for every byte sent, one is received, and vice-versa.
-* The master controls the clock, so it can regulate when it wants to
-* send or receive data. The slave is under control of the master, it must
-* respond quickly since it has no control of the clock and must send/receive
-* data as fast or as slow as the master does.
-*
-* Initialization & Configuration
-*
-* The XSpiPs_Config structure is used by the driver to configure itself. This
-* configuration structure is typically created by the tool-chain based on HW
-* build properties.
-*
-* To support multiple runtime loading and initialization strategies employed by
-* various operating systems, the driver instance can be initialized in the
-* following way:
-* - XSpiPs_LookupConfig(DeviceId) - Use the devide identifier to find the
-* static configuration structure defined in xspips_g.c. This is setup by
-* the tools. For some operating systems the config structure will be
-* initialized by the software and this call is not needed.
-* - XSpiPs_CfgInitialize(InstancePtr, CfgPtr, EffectiveAddr) - Uses a
-* configuration structure provided by the caller. If running in a system
-* with address translation, the provided virtual memory base address
-* replaces the physical address present in the configuration structure.
-*
-* Multiple Masters
-*
-* More than one master can exist, but arbitration is the responsibility of
-* the higher layer software. The device driver does not perform any type of
-* arbitration.
-*
-* Multiple Slaves
-*
-* Contention between multiple masters is detected by the hardware, in which
-* case a mode fault occurs on the device. The device is disabled immediately
-* by hardware, and the current word transfer is stopped. The Aborted word
-* transfer due to the mode fault is resumed once the devie is enabled again.
-*
-* Modes of Operation
-*
-* There are four modes to perform a data transfer and the selection of a mode
-* is based on Chip Select(CS) and Start. These two options individually, can
-* be controlled either by software(Manual) or hardware(Auto).
-* - Auto CS: Chip select is automatically asserted as soon as the first word
-* is written into the TXFIFO and deasserted when the TXFIFO becomes
-* empty
-* - Manual CS: Software must assert and deassert CS.
-* - Auto Start: Data transmission starts as soon as there is data in the
-* TXFIFO and stalls when the TXFIFO is empty
-* - Manual Start: Software must start data transmission at the beginning of
-* the transaction or whenever the TXFIFO has become empty
-*
-* The preferred combination is Manual CS and Auto Start.
-* In this combination, the software asserts CS before loading any data into
-* TXFIFO. In Auto Start mode, whenever data is in TXFIFO, controller sends it
-* out until TXFIFO becomes empty. The software reads the RXFIFO whenever the
-* data is available. If no further data, software disables CS.
-*
-* Risks/challenges of other combinations:
-* - Manual CS and Manual Start: Manual Start bit should be set after each
-* TXFIFO write otherwise there could be a race condition where the TXFIFO
-* becomes empty before the new word is written. In that case the
-* transmission stops.
-* - Auto CS with Manual or Auto Start: It is very difficult for software to
-* keep the TXFIFO filled. Whenever the TXFIFO runs empty, CS is deasserted.
-* This results in a single transaction to be split into multiple pieces each
-* with its own chip select. This will result in garbage data to be sent.
-*
-* Interrupts
-*
-* The user must connect the interrupt handler of the driver,
-* XSpiPs_InterruptHandler, to an interrupt system such that it will be
-* called when an interrupt occurs. This function does not save and restore
-* the processor context such that the user must provide this processing.
-*
-* The driver handles the following interrupts:
-* - Data Transmit Register/FIFO Underflow
-* - Data Receive Register/FIFO Full
-* - Data Receive Register/FIFO Not Empty
-* - Data Transmit Register/FIFO Full
-* - Data Transmit Register/FIFO Overwater
-* - Mode Fault Error
-* - Data Receive Register/FIFO Overrun
-*
-* The Data Transmit Register/FIFO Overwater interrupt -- indicates that the
-* SPI device has transmitted the data available to transmit, and now its data
-* register and FIFO is ready to accept more data. The driver uses this
-* interrupt to indicate progress while sending data. The driver may have
-* more data to send, in which case the data transmit register and FIFO is
-* filled for subsequent transmission. When this interrupt arrives and all
-* the data has been sent, the driver invokes the status callback with a
-* value of XST_SPI_TRANSFER_DONE to inform the upper layer software that
-* all data has been sent.
-*
-* The Data Transmit Register/FIFO Underflow interrupt -- indicates that,
-* as slave, the SPI device was required to transmit but there was no data
-* available to transmit in the transmit register (or FIFO). This may not
-* be an error if the master is not expecting data. But in the case where
-* the master is expecting data, this serves as a notification of such a
-* condition. The driver reports this condition to the upper layer
-* software through the status handler.
-*
-* The Data Receive Register/FIFO Overrun interrupt -- indicates that the SPI
-* device received data and subsequently dropped the data because the data
-* receive register and FIFO was full. The interrupt applies to both master
-* and slave operation. The driver reports this condition to the upper layer
-* software through the status handler. This likely indicates a problem with
-* the higher layer protocol, or a problem with the slave performance.
-*
-* The Mode Fault Error interrupt -- indicates that while configured as a
-* master, the device was selected as a slave by another master. This can be
-* used by the application for arbitration in a multimaster environment or to
-* indicate a problem with arbitration. When this interrupt occurs, the
-* driver invokes the status callback with a status value of
-* XST_SPI_MODE_FAULT. It is up to the application to resolve the conflict.
-* When configured as a slave, Mode Fault Error interrupt indicates that a slave
-* device was selected as a slave by a master, but the slave device was
-* disabled. When configured as a master, Mode Fault Error interrupt indicates
-* that another SPI device is acting as a master on the bus.
-*
-*
-* Polled Operation
-*
-* Transfer in polled mode is supported through a separate interface function
-* XSpiPs_PolledTransfer(). Unlike the transfer function in the interrupt mode,
-* this function blocks until all data has been sent/received.
-*
-* Device Busy
-*
-* Some operations are disallowed when the device is busy. The driver tracks
-* whether a device is busy. The device is considered busy when a data transfer
-* request is outstanding, and is considered not busy only when that transfer
-* completes (or is aborted with a mode fault error). This applies to both
-* master and slave devices.
-*
-* Device Configuration
-*
-* The device can be configured in various ways during the FPGA implementation
-* process. Configuration parameters are stored in the xspips_g.c file or
-* passed in via XSpiPs_CfgInitialize(). A table is defined where each entry
-* contains configuration information for an SPI device, including the base
-* address for the device.
-*
-* RTOS Independence
-*
-* This driver is intended to be RTOS and processor independent. It works with
-* physical addresses only. Any needs for dynamic memory management, threads or
-* thread mutual exclusion, virtual memory, or cache control must be satisfied
-* by the layer above this driver.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- -----------------------------------------------
-* 1.00 drg/jz 01/25/10 First release
-* 1.00 sdm 10/25/11 Removed the Divide by 2 in the SPI Clock Prescaler
-* options as this is not supported in the device.
-* 1.01 sg 03/07/12 Updated the code to always clear the relevant bits
-* before writing to config register.
-* Always clear the slave select bits before write and
-* clear the bits to no slave at the end of transfer
-* Modified the Polled transfer transmit/receive logic.
-* Tx should wait on TXOW Interrupt and Rx on RXNEMTY.
-* 1.02 sg 05/31/12 Updated XSPIPS_FIFO_DEPTH to 128 from 32 to match HW
-* for CR 658289
-* 1.03 sg 09/21/12 Added memory barrier dmb in polled transfer and
-* interrupt handler to overcome the clock domain
-* crossing issue in the controller. For CR #679252.
-* 1.04a sg 01/30/13 Created XSPIPS_MANUAL_START_OPTION. Created macros
-* XSpiPs_IsMaster, XSpiPs_IsManualStart and
-* XSpiPs_IsManualChipSelect. Changed SPI
-* Enable/Disable macro argument from BaseAddress to
-* Instance Pointer. Added DelayNss argument to SetDelays
-* and GetDelays API's. Added macros to set/get the
-* RX Watermark value.Created macros XSpiPs_IsMaster,
-* XSpiPs_IsManualStart and XSpiPs_IsManualChipSelect.
-* Changed SPI transfer logic for polled and interrupt
-* modes to be based on filled tx fifo count and receive
-* based on it. RXNEMPTY interrupt is not used.
-* SetSlaveSelect API logic is modified to drive the bit
-* position low based on the slave select value
-* requested. GetSlaveSelect API will return the value
-* based on bit position that is low.
-* Created XSPIPS_CR_MODF_GEN_EN_MASK macro and added it
-* to XSPIPS_CR_RESET_STATE. Created
-* XSPIPS_IXR_WR_TO_CLR_MASK for interrupts which need
-* write-to-clear. Added shift and mask macros for d_nss
-* parameter. Added Rx Watermark mask.
-* 1.05a hk 26/04/13 Added disable and enable in XSpiPs_SetOptions when
-* CPOL/CPHA bits are set/reset. Fix for CR#707669.
-* 1.06a hk 08/22/13 Changed GetSlaveSelect function. CR# 727866.
-* Added masking ConfigReg before writing in SetSlaveSel
-* Added extended slave select support - CR#722569.
-* Added prototypes of reset API and related constant
-* definitions.
-* Added check for MODF in polled transfer function.
-* 3.0 vm 12/09/14 Modified driver source code for MISRA-C:2012 compliance.
-* Support for Zynq Ultrascale Mp added.
-*
-*
-*
-******************************************************************************/
-#ifndef XSPIPS_H /* prevent circular inclusions */
-#define XSPIPS_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xstatus.h"
-#include "xspips_hw.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Configuration options
- *
- * The following options are supported to enable/disable certain features of
- * an SPI device. Each of the options is a bit mask, so more than one may be
- * specified.
- *
- * The Master option configures the SPI device as a master.
- * By default, the device is a slave.
- *
- * The Active Low Clock option configures the device's clock polarity.
- * Setting this option means the clock is active low and the SCK signal idles
- * high. By default, the clock is active high and SCK idles low.
- *
- * The Clock Phase option configures the SPI device for one of two
- * transfer formats. A clock phase of 0, the default, means data is valid on
- * the first SCK edge (rising or falling) after the slave select (SS) signal
- * has been asserted. A clock phase of 1 means data is valid on the second SCK
- * edge (rising or falling) after SS has been asserted.
- *
- * The Slave Select Decode Enable option selects how the SPI_SS_outN are
- * controlled by the SPI Slave Select Decode bits.
- * 0: Use this setting for the standard configuration of up to three slave
- * select outputs. Only one of the three slave select outputs will be low.
- * (Default)
- * 1: Use this setting for the optional configuration of an additional decoder
- * to support 8 slave select outputs. SPI_SS_outN reflects the value in the
- * register.
- *
- * The SPI Force Slave Select option is used to enable manual control of
- * the signals SPI_SS_outN.
- * 0: The SPI_SS_outN signals are controlled by the SPI controller during
- * transfers. (Default)
- * 1: The SPI_SS_outN signal indicated by the Slave Select Control bit is
- * forced active (driven low) regardless of any transfers in progress.
- *
- * NOTE: The driver will handle setting and clearing the Slave Select when
- * the user sets the "FORCE_SSELECT_OPTION". Using this option will allow the
- * SPI clock to be set to a faster speed. If the SPI clock is too fast, the
- * processor cannot empty and refill the FIFOs before the TX FIFO is empty
- * When the SPI hardware is controlling the Slave Select signals, this
- * will cause slave to be de-selected and terminate the transfer.
- *
- * The Manual Start option is used to enable manual control of
- * the Start command to perform data transfer.
- * 0: The Start command is controlled by the SPI controller during
- * transfers(Default). Data transmission starts as soon as there is data in
- * the TXFIFO and stalls when the TXFIFO is empty
- * 1: The Start command must be issued by software to perform data transfer.
- * Bit 15 of Configuration register is used to issue Start command. This bit
- * must be set whenever TXFIFO is filled with new data.
- *
- * NOTE: The driver will set the Manual Start Enable bit in Configuration
- * Register, if Manual Start option is selected. Software will issue
- * Manual Start command whenever TXFIFO is filled with data. When there is
- * no further data, driver will clear the Manual Start Enable bit.
- *
- * @{
- */
-#define XSPIPS_MASTER_OPTION 0x00000001U /**< Master mode option */
-#define XSPIPS_CLK_ACTIVE_LOW_OPTION 0x00000002U /**< Active Low Clock option */
-#define XSPIPS_CLK_PHASE_1_OPTION 0x00000004U /**< Clock Phase one option */
-#define XSPIPS_DECODE_SSELECT_OPTION 0x00000008U /**< Select 16 slaves Option */
-#define XSPIPS_FORCE_SSELECT_OPTION 0x00000010U /**< Force Slave Select */
-#define XSPIPS_MANUAL_START_OPTION 0x00000020U /**< Manual Start mode option */
-/*@}*/
-
-
-/** @name SPI Clock Prescaler options
- * The SPI Clock Prescaler Configuration bits are used to program master mode
- * bit rate. The bit rate can be programmed in divide-by-two decrements from
- * pclk/4 to pclk/256.
- *
- * @{
- */
-
-#define XSPIPS_CLK_PRESCALE_4 0x01U /**< PCLK/4 Prescaler */
-#define XSPIPS_CLK_PRESCALE_8 0x02U /**< PCLK/8 Prescaler */
-#define XSPIPS_CLK_PRESCALE_16 0x03U /**< PCLK/16 Prescaler */
-#define XSPIPS_CLK_PRESCALE_32 0x04U /**< PCLK/32 Prescaler */
-#define XSPIPS_CLK_PRESCALE_64 0x05U /**< PCLK/64 Prescaler */
-#define XSPIPS_CLK_PRESCALE_128 0x06U /**< PCLK/128 Prescaler */
-#define XSPIPS_CLK_PRESCALE_256 0x07U /**< PCLK/256 Prescaler */
-/*@}*/
-
-
-/** @name Callback events
- *
- * These constants specify the handler events that are passed to
- * a handler from the driver. These constants are not bit masks such that
- * only one will be passed at a time to the handler.
- *
- * @{
- */
-#define XSPIPS_EVENT_MODE_FAULT 1U /**< Mode fault error */
-#define XSPIPS_EVENT_TRANSFER_DONE 2U /**< Transfer done */
-#define XSPIPS_EVENT_TRANSMIT_UNDERRUN 3U /**< TX FIFO empty */
-#define XSPIPS_EVENT_RECEIVE_OVERRUN 4U /**< Receive data loss because
- RX FIFO full */
-/*@}*/
-
-
-/**************************** Type Definitions *******************************/
-/**
- * The handler data type allows the user to define a callback function to
- * handle the asynchronous processing for the SPI device. The application
- * using this driver is expected to define a handler of this type to support
- * interrupt driven mode. The handler executes in an interrupt context, so
- * only minimal processing should be performed.
- *
- * @param CallBackRef is the callback reference passed in by the upper
- * layer when setting the callback functions, and passed back to
- * the upper layer when the callback is invoked. Its type is
- * not important to the driver, so it is a void pointer.
- * @param StatusEvent holds one or more status events that have occurred.
- * See the XSpiPs_SetStatusHandler() for details on the status
- * events that can be passed in the callback.
- * @param ByteCount indicates how many bytes of data were successfully
- * transferred. This may be less than the number of bytes
- * requested if the status event indicates an error.
- */
-typedef void (*XSpiPs_StatusHandler) (void *CallBackRef, u32 StatusEvent,
- u32 ByteCount);
-
-/**
- * This typedef contains configuration information for the device.
- */
-typedef struct {
- u16 DeviceId; /**< Unique ID of device */
- u32 BaseAddress; /**< Base address of the device */
- u32 InputClockHz; /**< Input clock frequency */
-} XSpiPs_Config;
-
-/**
- * The XSpiPs driver instance data. The user is required to allocate a
- * variable of this type for every SPI device in the system. A pointer
- * to a variable of this type is then passed to the driver API functions.
- */
-typedef struct {
- XSpiPs_Config Config; /**< Configuration structure */
- u32 IsReady; /**< Device is initialized and ready */
-
- u8 *SendBufferPtr; /**< Buffer to send (state) */
- u8 *RecvBufferPtr; /**< Buffer to receive (state) */
- u32 RequestedBytes; /**< Number of bytes to transfer (state) */
- u32 RemainingBytes; /**< Number of bytes left to transfer(state) */
- u32 IsBusy; /**< A transfer is in progress (state) */
- u32 SlaveSelect; /**< The slave select value when
- XSPIPS_FORCE_SSELECT_OPTION is set */
-
- XSpiPs_StatusHandler StatusHandler;
- void *StatusRef; /**< Callback reference for status handler */
-
-} XSpiPs;
-
-/***************** Macros (Inline Functions) Definitions *********************/
-/****************************************************************************/
-/*
-*
-* Check in OptionsTable if Manual Start Option is enabled or disabled.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return
-* - TRUE if option is set
-* - FALSE if option is not set
-*
-* @note C-Style signature:
-* u8 XSpiPs_IsManualStart(XSpiPs *InstancePtr);
-*
-*****************************************************************************/
-#define XSpiPs_IsManualStart(InstancePtr) \
- (((XSpiPs_GetOptions(InstancePtr) & \
- XSPIPS_MANUAL_START_OPTION) != (u32)0U) ? TRUE : FALSE)
-
-/****************************************************************************/
-/*
-*
-* Check in OptionsTable if Manual Chip Select Option is enabled or disabled.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return
-* - TRUE if option is set
-* - FALSE if option is not set
-*
-* @note C-Style signature:
-* u8 XSpiPs_IsManualChipSelect(XSpiPs *InstancePtr);
-*
-*****************************************************************************/
-#define XSpiPs_IsManualChipSelect(InstancePtr) \
- (((XSpiPs_GetOptions(InstancePtr) & \
- XSPIPS_FORCE_SSELECT_OPTION) != (u32)0U) ? TRUE : FALSE)
-
-/****************************************************************************/
-/*
-*
-* Check in OptionsTable if Decode Slave Select option is enabled or disabled.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return
-* - TRUE if option is set
-* - FALSE if option is not set
-*
-* @note C-Style signature:
-* u8 XSpiPs_IsDecodeSSelect(XSpiPs *InstancePtr);
-*
-*****************************************************************************/
-#define XSpiPs_IsDecodeSSelect(InstancePtr) \
- (((XSpiPs_GetOptions(InstancePtr) & \
- XSPIPS_DECODE_SSELECT_OPTION) != (u32)0U) ? TRUE : FALSE)
-
-/****************************************************************************/
-/*
-*
-* Check in OptionsTable if Master Option is enabled or disabled.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return
-* - TRUE if option is set
-* - FALSE if option is not set
-*
-* @note C-Style signature:
-* u8 XSpiPs_IsMaster(XSpiPs *InstancePtr);
-*
-*****************************************************************************/
-#define XSpiPs_IsMaster(InstancePtr) \
- (((XSpiPs_GetOptions(InstancePtr) & \
- XSPIPS_MASTER_OPTION) != (u32)0U) ? TRUE : FALSE)
-
-/****************************************************************************/
-/**
-*
-* Set the contents of the slave idle count register.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-* @param RegisterValue is the value to be writen, valid values are
-* 0-255.
-*
-* @return None
-*
-* @note
-* C-Style signature:
-* void XSpiPs_SetSlaveIdle(XSpiPs *InstancePtr, u32 RegisterValue)
-*
-*****************************************************************************/
-#define XSpiPs_SetSlaveIdle(InstancePtr, RegisterValue) \
- XSpiPs_Out32(((InstancePtr)->Config.BaseAddress) + \
- XSPIPS_SICR_OFFSET, (RegisterValue))
-
-/****************************************************************************/
-/**
-*
-* Get the contents of the slave idle count register. Use the XSPIPS_SICR_*
-* constants defined in xspips_hw.h to interpret the bit-mask returned.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return 8-bit value representing the contents of the SIC register.
-*
-* @note C-Style signature:
-* u32 XSpiPs_GetSlaveIdle(XSpiPs *InstancePtr)
-*
-*****************************************************************************/
-#define XSpiPs_GetSlaveIdle(InstancePtr) \
- XSpiPs_In32(((InstancePtr)->Config.BaseAddress) + \
- XSPIPS_SICR_OFFSET)
-
-/****************************************************************************/
-/**
-*
-* Set the contents of the transmit FIFO watermark register.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-* @param RegisterValue is the value to be written, valid values
-* are 1-128.
-*
-* @return None.
-*
-* @note
-* C-Style signature:
-* void XSpiPs_SetTXWatermark(XSpiPs *InstancePtr, u32 RegisterValue)
-*
-*****************************************************************************/
-#define XSpiPs_SetTXWatermark(InstancePtr, RegisterValue) \
- XSpiPs_Out32(((InstancePtr)->Config.BaseAddress) + \
- XSPIPS_TXWR_OFFSET, (RegisterValue))
-
-/****************************************************************************/
-/**
-*
-* Get the contents of the transmit FIFO watermark register.
-* Use the XSPIPS_TXWR_* constants defined xspips_hw.h to interpret
-* the bit-mask returned.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return 8-bit value representing the contents of the TXWR register.
-*
-* @note C-Style signature:
-* u32 XSpiPs_GetTXWatermark(u32 *InstancePtr)
-*
-*****************************************************************************/
-#define XSpiPs_GetTXWatermark(InstancePtr) \
- XSpiPs_In32(((InstancePtr)->Config.BaseAddress) + XSPIPS_TXWR_OFFSET)
-
-/****************************************************************************/
-/**
-*
-* Set the contents of the receive FIFO watermark register.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-* @param RegisterValue is the value to be written, valid values
-* are 1-128.
-*
-* @return None.
-*
-* @note
-* C-Style signature:
-* void XSpiPs_SetRXWatermark(XSpiPs *InstancePtr, u32 RegisterValue)
-*
-*****************************************************************************/
-#define XSpiPs_SetRXWatermark(InstancePtr, RegisterValue) \
- XSpiPs_Out32(((InstancePtr)->Config.BaseAddress) + \
- XSPIPS_RXWR_OFFSET, (RegisterValue))
-
-/****************************************************************************/
-/**
-*
-* Get the contents of the receive FIFO watermark register.
-* Use the XSPIPS_RXWR_* constants defined xspips_hw.h to interpret
-* the bit-mask returned.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return A 8-bit value representing the contents of the RXWR register.
-*
-* @note C-Style signature:
-* u32 XSpiPs_GetRXWatermark(u32 *InstancePtr)
-*
-*****************************************************************************/
-#define XSpiPs_GetRXWatermark(InstancePtr) \
- XSpiPs_In32(((InstancePtr)->Config.BaseAddress) + XSPIPS_RXWR_OFFSET)
-
-/****************************************************************************/
-/**
-*
-* Enable the device and uninhibit master transactions.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XSpiPs_Enable(u32 *InstancePtr)
-*
-*****************************************************************************/
-#define XSpiPs_Enable(InstancePtr) \
- XSpiPs_Out32(((InstancePtr)->Config.BaseAddress) + XSPIPS_ER_OFFSET, \
- XSPIPS_ER_ENABLE_MASK)
-
-/****************************************************************************/
-/**
-*
-* Disable the device.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XSpiPs_Disable(u32 *InstancePtr)
-*
-*****************************************************************************/
-#define XSpiPs_Disable(InstancePtr) \
- XSpiPs_Out32(((InstancePtr)->Config.BaseAddress) + XSPIPS_ER_OFFSET, 0U)
-
-/************************** Function Prototypes ******************************/
-
-/*
- * Initialization function, implemented in xspips_sinit.c
- */
-XSpiPs_Config *XSpiPs_LookupConfig(u16 DeviceId);
-
-/*
- * Functions implemented in xspips.c
- */
-s32 XSpiPs_CfgInitialize(XSpiPs *InstancePtr, XSpiPs_Config * ConfigPtr,
- u32 EffectiveAddr);
-
-void XSpiPs_Reset(XSpiPs *InstancePtr);
-
-s32 XSpiPs_Transfer(XSpiPs *InstancePtr, u8 *SendBufPtr, u8 *RecvBufPtr,
- u32 ByteCount);
-
-s32 XSpiPs_PolledTransfer(XSpiPs *InstancePtr, u8 *SendBufPtr,
- u8 *RecvBufPtr, u32 ByteCount);
-
-void XSpiPs_SetStatusHandler(XSpiPs *InstancePtr, void *CallBackRef,
- XSpiPs_StatusHandler FunctionPtr);
-void XSpiPs_InterruptHandler(XSpiPs *InstancePtr);
-
-void XSpiPs_Abort(XSpiPs *InstancePtr);
-
-s32 XSpiPs_SetSlaveSelect(XSpiPs *InstancePtr, u8 SlaveSel);
-u8 XSpiPs_GetSlaveSelect(XSpiPs *InstancePtr);
-
-/*
- * Functions for selftest, in xspips_selftest.c
- */
-s32 XSpiPs_SelfTest(XSpiPs *InstancePtr);
-
-/*
- * Functions for options, in xspips_options.c
- */
-s32 XSpiPs_SetOptions(XSpiPs *InstancePtr, u32 Options);
-u32 XSpiPs_GetOptions(XSpiPs *InstancePtr);
-
-s32 XSpiPs_SetClkPrescaler(XSpiPs *InstancePtr, u8 Prescaler);
-u8 XSpiPs_GetClkPrescaler(XSpiPs *InstancePtr);
-
-s32 XSpiPs_SetDelays(XSpiPs *InstancePtr, u8 DelayNss, u8 DelayBtwn,
- u8 DelayAfter, u8 DelayInit);
-void XSpiPs_GetDelays(XSpiPs *InstancePtr, u8 *DelayNss, u8 *DelayBtwn,
- u8 *DelayAfter, u8 *DelayInit);
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_g.c
deleted file mode 100644
index 749beceb3..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_g.c
+++ /dev/null
@@ -1,61 +0,0 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Driver configuration
-*
-*******************************************************************/
-
-#include "xparameters.h"
-#include "xspips.h"
-
-/*
-* The configuration table for devices
-*/
-
-XSpiPs_Config XSpiPs_ConfigTable[] =
-{
- {
- XPAR_PSU_SPI_0_DEVICE_ID,
- XPAR_PSU_SPI_0_BASEADDR,
- XPAR_PSU_SPI_0_SPI_CLK_FREQ_HZ
- },
- {
- XPAR_PSU_SPI_1_DEVICE_ID,
- XPAR_PSU_SPI_1_BASEADDR,
- XPAR_PSU_SPI_1_SPI_CLK_FREQ_HZ
- }
-};
-
-
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_hw.h
deleted file mode 100644
index 897340369..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_hw.h
+++ /dev/null
@@ -1,310 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xspips_hw.h
-*
-* This header file contains the identifiers and basic driver functions (or
-* macros) that can be used to access the device. Other driver functions
-* are defined in xspips.h.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- -----------------------------------------------
-* 1.00 drg/jz 01/25/10 First release
-* 1.02a sg 05/31/12 Updated XSPIPS_FIFO_DEPTH to 128 from 32 to match HW
-* for CR 658289
-* 1.04a sg 01/30/13 Created XSPIPS_CR_MODF_GEN_EN_MASK macro and added it
-* to XSPIPS_CR_RESET_STATE. Created
-* XSPIPS_IXR_WR_TO_CLR_MASK for interrupts which need
-* write-to-clear. Added shift and mask macros for d_nss
-* parameter. Added Rx Watermark mask.
-* 1.06a hk 08/22/13 Added prototypes of reset API and related constant
-* definitions.
-* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
-*
-*
-*
-******************************************************************************/
-
-#ifndef XSPIPS_HW_H /* prevent circular inclusions */
-#define XSPIPS_HW_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xil_io.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Register Map
- *
- * Register offsets from the base address of an SPI device.
- * @{
- */
-#define XSPIPS_CR_OFFSET 0x00U /**< Configuration */
-#define XSPIPS_SR_OFFSET 0x04U /**< Interrupt Status */
-#define XSPIPS_IER_OFFSET 0x08U /**< Interrupt Enable */
-#define XSPIPS_IDR_OFFSET 0x0CU /**< Interrupt Disable */
-#define XSPIPS_IMR_OFFSET 0x10U /**< Interrupt Enabled Mask */
-#define XSPIPS_ER_OFFSET 0x14U /**< Enable/Disable Register */
-#define XSPIPS_DR_OFFSET 0x18U /**< Delay Register */
-#define XSPIPS_TXD_OFFSET 0x1CU /**< Data Transmit Register */
-#define XSPIPS_RXD_OFFSET 0x20U /**< Data Receive Register */
-#define XSPIPS_SICR_OFFSET 0x24U /**< Slave Idle Count */
-#define XSPIPS_TXWR_OFFSET 0x28U /**< Transmit FIFO Watermark */
-#define XSPIPS_RXWR_OFFSET 0x2CU /**< Receive FIFO Watermark */
-/* @} */
-
-/** @name Configuration Register
- *
- * This register contains various control bits that
- * affects the operation of an SPI device. Read/Write.
- * @{
- */
-#define XSPIPS_CR_MODF_GEN_EN_MASK 0x00020000U /**< Modefail Generation
- Enable */
-#define XSPIPS_CR_MANSTRT_MASK 0x00010000U /**< Manual Transmission Start */
-#define XSPIPS_CR_MANSTRTEN_MASK 0x00008000U /**< Manual Transmission Start
- Enable */
-#define XSPIPS_CR_SSFORCE_MASK 0x00004000U /**< Force Slave Select */
-#define XSPIPS_CR_SSCTRL_MASK 0x00003C00U /**< Slave Select Decode */
-#define XSPIPS_CR_SSCTRL_SHIFT 10U /**< Slave Select Decode shift */
-#define XSPIPS_CR_SSCTRL_MAXIMUM 0xFU /**< Slave Select maximum value */
-#define XSPIPS_CR_SSDECEN_MASK 0x00000200U /**< Slave Select Decode Enable */
-
-#define XSPIPS_CR_PRESC_MASK 0x00000038U /**< Prescaler Setting */
-#define XSPIPS_CR_PRESC_SHIFT 3U /**< Prescaler shift */
-#define XSPIPS_CR_PRESC_MAXIMUM 0x07U /**< Prescaler maximum value */
-
-#define XSPIPS_CR_CPHA_MASK 0x00000004U /**< Phase Configuration */
-#define XSPIPS_CR_CPOL_MASK 0x00000002U /**< Polarity Configuration */
-
-#define XSPIPS_CR_MSTREN_MASK 0x00000001U /**< Master Mode Enable */
-#define XSPIPS_CR_RESET_STATE 0x00020000U /**< Mode Fail Generation Enable */
-/* @} */
-
-
-/** @name SPI Interrupt Registers
- *
- * SPI Status Register
- *
- * This register holds the interrupt status flags for an SPI device. Some
- * of the flags are level triggered, which means that they are set as long
- * as the interrupt condition exists. Other flags are edge triggered,
- * which means they are set once the interrupt condition occurs and remain
- * set until they are cleared by software. The interrupts are cleared by
- * writing a '1' to the interrupt bit position in the Status Register.
- * Read/Write.
- *
- * SPI Interrupt Enable Register
- *
- * This register is used to enable chosen interrupts for an SPI device.
- * Writing a '1' to a bit in this register sets the corresponding bit in the
- * SPI Interrupt Mask register. Write only.
- *
- * SPI Interrupt Disable Register
- *
- * This register is used to disable chosen interrupts for an SPI device.
- * Writing a '1' to a bit in this register clears the corresponding bit in the
- * SPI Interrupt Mask register. Write only.
- *
- * SPI Interrupt Mask Register
- *
- * This register shows the enabled/disabled interrupts of an SPI device.
- * Read only.
- *
- * All four registers have the same bit definitions. They are only defined once
- * for each of the Interrupt Enable Register, Interrupt Disable Register,
- * Interrupt Mask Register, and Channel Interrupt Status Register
- * @{
- */
-
-#define XSPIPS_IXR_TXUF_MASK 0x00000040U /**< Tx FIFO Underflow */
-#define XSPIPS_IXR_RXFULL_MASK 0x00000020U /**< Rx FIFO Full */
-#define XSPIPS_IXR_RXNEMPTY_MASK 0x00000010U /**< Rx FIFO Not Empty */
-#define XSPIPS_IXR_TXFULL_MASK 0x00000008U /**< Tx FIFO Full */
-#define XSPIPS_IXR_TXOW_MASK 0x00000004U /**< Tx FIFO Overwater */
-#define XSPIPS_IXR_MODF_MASK 0x00000002U /**< Mode Fault */
-#define XSPIPS_IXR_RXOVR_MASK 0x00000001U /**< Rx FIFO Overrun */
-#define XSPIPS_IXR_DFLT_MASK 0x00000027U /**< Default interrupts
- mask */
-#define XSPIPS_IXR_WR_TO_CLR_MASK 0x00000043U /**< Interrupts which
- need write to clear */
-#define XSPIPS_ISR_RESET_STATE 0x04U /**< Default to tx/rx
- * reg empty */
-#define XSPIPS_IXR_DISABLE_ALL_MASK 0x00000043U /**< Disable all
- * interrupts */
-/* @} */
-
-
-/** @name Enable Register
- *
- * This register is used to enable or disable an SPI device.
- * Read/Write
- * @{
- */
-#define XSPIPS_ER_ENABLE_MASK 0x00000001U /**< SPI Enable Bit Mask */
-/* @} */
-
-
-/** @name Delay Register
- *
- * This register is used to program timing delays in
- * slave mode. Read/Write
- * @{
- */
-#define XSPIPS_DR_NSS_MASK 0xFF000000U /**< Delay for slave select
- * de-assertion between
- * word transfers mask */
-#define XSPIPS_DR_NSS_SHIFT 24U /**< Delay for slave select
- * de-assertion between
- * word transfers shift */
-#define XSPIPS_DR_BTWN_MASK 0x00FF0000U /**< Delay Between Transfers mask */
-#define XSPIPS_DR_BTWN_SHIFT 16U /**< Delay Between Transfers shift */
-#define XSPIPS_DR_AFTER_MASK 0x0000FF00U /**< Delay After Transfers mask */
-#define XSPIPS_DR_AFTER_SHIFT 8U /**< Delay After Transfers shift */
-#define XSPIPS_DR_INIT_MASK 0x000000FFU /**< Delay Initially mask */
-/* @} */
-
-
-/** @name Slave Idle Count Registers
- *
- * This register defines the number of pclk cycles the slave waits for a the
- * SPI clock to become stable in quiescent state before it can detect the start
- * of the next transfer in CPHA = 1 mode.
- * Read/Write
- *
- * @{
- */
-#define XSPIPS_SICR_MASK 0x000000FFU /**< Slave Idle Count Mask */
-/* @} */
-
-
-
-/** @name Transmit FIFO Watermark Register
- *
- * This register defines the watermark setting for the Transmit FIFO. The
- * transmit FIFO is 128 bytes deep, so the register is 7 bits. Valid values
- * are 1 to 128.
- *
- * @{
- */
-#define XSPIPS_TXWR_MASK 0x0000007FU /**< Transmit Watermark Mask */
-#define XSPIPS_TXWR_RESET_VALUE 0x00000001U /**< Transmit Watermark
- * register reset value */
-/* @} */
-
-/** @name Receive FIFO Watermark Register
- *
- * This register defines the watermark setting for the Receive FIFO. The
- * receive FIFO is 128 bytes deep, so the register is 7 bits. Valid values
- * are 1 to 128.
- *
- * @{
- */
-#define XSPIPS_RXWR_MASK 0x0000007FU /**< Receive Watermark Mask */
-#define XSPIPS_RXWR_RESET_VALUE 0x00000001U /**< Receive Watermark
- * register reset value */
-/* @} */
-
-/** @name FIFO Depth
- *
- * This macro provides the depth of transmit FIFO and receive FIFO.
- *
- * @{
- */
-#define XSPIPS_FIFO_DEPTH 128U /**< FIFO depth of Tx and Rx */
-/* @} */
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-#define XSpiPs_In32 Xil_In32
-#define XSpiPs_Out32 Xil_Out32
-
-/****************************************************************************/
-/**
-* Read a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to the target register.
-*
-* @return The value read from the register.
-*
-* @note C-Style signature:
-* u32 XSpiPs_ReadReg(u32 BaseAddress. int RegOffset)
-*
-******************************************************************************/
-#define XSpiPs_ReadReg(BaseAddress, RegOffset) \
- XSpiPs_In32((BaseAddress) + (RegOffset))
-
-/***************************************************************************/
-/**
-* Write to a register.
-*
-* @param BaseAddress contains the base address of the device.
-* @param RegOffset contains the offset from the 1st register of the
-* device to target register.
-* @param RegisterValue is the value to be written to the register.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XSpiPs_WriteReg(u32 BaseAddress, int RegOffset,
-* u32 RegisterValue)
-*
-******************************************************************************/
-#define XSpiPs_WriteReg(BaseAddress, RegOffset, RegisterValue) \
- XSpiPs_Out32((BaseAddress) + (RegOffset), (RegisterValue))
-
-/************************** Function Prototypes ******************************/
-
-void XSpiPs_ResetHw(u32 BaseAddress);
-
-/************************** Variable Definitions *****************************/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_options.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_options.c
deleted file mode 100644
index 71cbca395..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_options.c
+++ /dev/null
@@ -1,430 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xspips_options.c
-*
-* Contains functions for the configuration of the XSpiPs driver.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- -----------------------------------------------
-* 1.00 drg/jz 01/25/10 First release
-* 1.00 sdm 10/25/11 Removed the Divide by 2 in the SPI Clock Prescaler
-* options as this is not supported in the device
-* 1.04a sg 01/30/13 Added XSPIPS_MANUAL_START_OPTION. SetDelays and
-* GetDelays API's include DelayNss parameter.
-* 1.05a hk 26/04/13 Added disable and enable in XSpiPs_SetOptions when
-* CPOL/CPHA bits are set/reset. Fix for CR#707669.
-* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
-*
-*
-*
-******************************************************************************/
-
-/***************************** Include Files *********************************/
-
-#include "xspips.h"
-
-/************************** Constant Definitions *****************************/
-
-
-/**************************** Type Definitions *******************************/
-
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-
-/************************** Function Prototypes ******************************/
-
-
-/************************** Variable Definitions *****************************/
-
-/*
- * Create the table of options which are processed to get/set the device
- * options. These options are table driven to allow easy maintenance and
- * expansion of the options.
- */
-typedef struct {
- u32 Option;
- u32 Mask;
-} OptionsMap;
-
-static OptionsMap OptionsTable[] = {
- {XSPIPS_MASTER_OPTION, XSPIPS_CR_MSTREN_MASK},
- {XSPIPS_CLK_ACTIVE_LOW_OPTION, XSPIPS_CR_CPOL_MASK},
- {XSPIPS_CLK_PHASE_1_OPTION, XSPIPS_CR_CPHA_MASK},
- {XSPIPS_DECODE_SSELECT_OPTION, XSPIPS_CR_SSDECEN_MASK},
- {XSPIPS_FORCE_SSELECT_OPTION, XSPIPS_CR_SSFORCE_MASK},
- {XSPIPS_MANUAL_START_OPTION, XSPIPS_CR_MANSTRTEN_MASK}
-};
-
-#define XSPIPS_NUM_OPTIONS (sizeof(OptionsTable) / sizeof(OptionsMap))
-
-/*****************************************************************************/
-/**
-*
-* This function sets the options for the SPI device driver. The options control
-* how the device behaves relative to the SPI bus. The device must be idle
-* rather than busy transferring data before setting these device options.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-* @param Options contains the specified options to be set. This is a bit
-* mask where a 1 means to turn the option on, and a 0 means to
-* turn the option off. One or more bit values may be contained in
-* the mask. See the bit definitions named XSPIPS_*_OPTIONS in the
-* file xspips.h.
-*
-* @return
-* - XST_SUCCESS if options are successfully set.
-* - XST_DEVICE_BUSY if the device is currently transferring data.
-* The transfer must complete or be aborted before setting options.
-*
-* @note
-* This function is not thread-safe.
-*
-******************************************************************************/
-s32 XSpiPs_SetOptions(XSpiPs *InstancePtr, u32 Options)
-{
- u32 ConfigReg;
- u32 Index;
- u32 CurrentConfigReg;
- s32 Status;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- /*
- * Do not allow the slave select to change while a transfer is in
- * progress. Not thread-safe.
- */
- if (InstancePtr->IsBusy == TRUE) {
- Status = (s32)XST_DEVICE_BUSY;
- } else {
-
- ConfigReg = XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET);
-
- CurrentConfigReg = ConfigReg;
-
- /*
- * Loop through the options table, turning the option on or off
- * depending on whether the bit is set in the incoming options flag.
- */
- for (Index = 0U; Index < XSPIPS_NUM_OPTIONS; Index++) {
- if ((Options & OptionsTable[Index].Option) != (u32)0U) {
- /* Turn it on */
- ConfigReg |= OptionsTable[Index].Mask;
- }
- else {
- /* Turn it off */
- ConfigReg &= ~(OptionsTable[Index].Mask);
- }
- }
-
-
- /*
- * If CPOL-CPHA bits are toggled from previous state,
- * disable before writing the configuration register and then enable.
- */
- if( ((CurrentConfigReg & XSPIPS_CR_CPOL_MASK) !=
- (ConfigReg & XSPIPS_CR_CPOL_MASK)) ||
- ((CurrentConfigReg & XSPIPS_CR_CPHA_MASK) !=
- (ConfigReg & XSPIPS_CR_CPHA_MASK)) ) {
- XSpiPs_Disable(InstancePtr);
- }
-
- /*
- * Now write the Config register. Leave it to the upper layers
- * to restart the device.
- */
- XSpiPs_WriteReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET, ConfigReg);
-
- /*
- * Enable
- */
- if( ((CurrentConfigReg & XSPIPS_CR_CPOL_MASK) !=
- (ConfigReg & XSPIPS_CR_CPOL_MASK)) ||
- ((CurrentConfigReg & XSPIPS_CR_CPHA_MASK) !=
- (ConfigReg & XSPIPS_CR_CPHA_MASK)) ) {
- XSpiPs_Enable(InstancePtr);
- }
-
- Status = (s32)XST_SUCCESS;
- }
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function gets the options for the SPI device. The options control how
-* the device behaves relative to the SPI bus.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return
-*
-* Options contains the specified options currently set. This is a bit value
-* where a 1 means the option is on, and a 0 means the option is off.
-* See the bit definitions named XSPIPS_*_OPTIONS in file xspips.h.
-*
-* @note None.
-*
-******************************************************************************/
-u32 XSpiPs_GetOptions(XSpiPs *InstancePtr)
-{
- u32 OptionsFlag = 0U;
- u32 ConfigReg;
- u32 Index;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- /*
- * Get the current options
- */
- ConfigReg =
- XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET);
-
- /*
- * Loop through the options table to grab options
- */
- for (Index = 0; Index < XSPIPS_NUM_OPTIONS; Index++) {
- if (ConfigReg & OptionsTable[Index].Mask) {
- OptionsFlag |= OptionsTable[Index].Option;
- }
- }
-
- return OptionsFlag;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sets the clock prescaler for an SPI device. The device
-* must be idle rather than busy transferring data before setting these device
-* options.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-* @param Prescaler is the value that determine how much the clock should
-* be divided by. Use the XSPIPS_CLK_PRESCALE_* constants defined
-* in xspips.h for this setting.
-*
-* @return
-* - XST_SUCCESS if options are successfully set.
-* - XST_DEVICE_BUSY if the device is currently transferring data.
-* The transfer must complete or be aborted before setting options.
-*
-* @note
-* This function is not thread-safe.
-*
-******************************************************************************/
-s32 XSpiPs_SetClkPrescaler(XSpiPs *InstancePtr, u8 Prescaler)
-{
- u32 ConfigReg;
- s32 Status;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- Xil_AssertNonvoid((Prescaler > 0U) && (Prescaler <= XSPIPS_CR_PRESC_MAXIMUM));
-
- /*
- * Do not allow the prescaler to be changed while a transfer is in
- * progress. Not thread-safe.
- */
- if (InstancePtr->IsBusy == TRUE) {
- Status = (s32)XST_DEVICE_BUSY;
- } else {
-
- /*
- * Read the Config register, mask out the interesting bits, and set
- * them with the shifted value passed into the function. Write the
- * results back to the Config register.
- */
- ConfigReg = XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET);
-
- ConfigReg &= (u32)(~XSPIPS_CR_PRESC_MASK);
- ConfigReg |= (u32) ((u32)Prescaler & (u32)XSPIPS_CR_PRESC_MAXIMUM) <<
- XSPIPS_CR_PRESC_SHIFT;
-
- XSpiPs_WriteReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET,
- ConfigReg);
-
- Status = (s32)XST_SUCCESS;
- }
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function gets the clock prescaler of an SPI device.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return The prescaler value.
-*
-* @note None.
-*
-*
-******************************************************************************/
-u8 XSpiPs_GetClkPrescaler(XSpiPs *InstancePtr)
-{
- u32 ConfigReg;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- ConfigReg = XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET);
-
- ConfigReg &= XSPIPS_CR_PRESC_MASK;
-
- return (u8)(ConfigReg >> XSPIPS_CR_PRESC_SHIFT);
-
-}
-
-/*****************************************************************************/
-/**
-*
-* This function sets the delay register for the SPI device driver.
-* The delay register controls the Delay Between Transfers, Delay After
-* Transfers, and the Delay Initially. The default value is 0x0. The range of
-* each delay value is 0-255.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-* @param DelayNss is the delay for which the chip select outputs will
-* be de-asserted between words when CPHA=0.
-* @param DelayBtwn is the delay between one Slave Select being
-* de-activated and the activation of another slave. The delay is
-* the number of master clock periods given by DelayBtwn + 2.
-* @param DelayAfter define the delay between the last bit of the current
-* byte transfer and the first bit of the next byte transfer.
-* The delay in number of master clock periods is given as:
-* CPHA=0:DelayInit+DelayAfter+3
-* CPHA=1:DelayAfter+1
-* @param DelayInit is the delay between asserting the slave select signal
-* and the first bit transfer. The delay int number of master clock
-* periods is DelayInit+1.
-*
-* @return
-* - XST_SUCCESS if delays are successfully set.
-* - XST_DEVICE_BUSY if the device is currently transferring data.
-* The transfer must complete or be aborted before setting options.
-*
-* @note None.
-*
-******************************************************************************/
-s32 XSpiPs_SetDelays(XSpiPs *InstancePtr, u8 DelayNss, u8 DelayBtwn,
- u8 DelayAfter, u8 DelayInit)
-{
- u32 DelayRegister;
- s32 Status;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- /*
- * Do not allow the delays to change while a transfer is in
- * progress. Not thread-safe.
- */
- if (InstancePtr->IsBusy == TRUE) {
- Status = (s32)XST_DEVICE_BUSY;
- } else {
-
- /* Shift, Mask and OR the values to build the register settings */
- DelayRegister = (u32) DelayNss << XSPIPS_DR_NSS_SHIFT;
- DelayRegister |= (u32) DelayBtwn << XSPIPS_DR_BTWN_SHIFT;
- DelayRegister |= (u32) DelayAfter << XSPIPS_DR_AFTER_SHIFT;
- DelayRegister |= (u32) DelayInit;
-
- XSpiPs_WriteReg(InstancePtr->Config.BaseAddress,
- XSPIPS_DR_OFFSET, DelayRegister);
-
- Status = (s32)XST_SUCCESS;
- }
- return Status;
-}
-
-/*****************************************************************************/
-/**
-*
-* This function gets the delay settings for an SPI device.
-* The delay register controls the Delay Between Transfers, Delay After
-* Transfers, and the Delay Initially. The default value is 0x0.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-* @param DelayNss is a pointer to the delay for which the chip select
-* outputs will be de-asserted between words when CPHA=0.
-* @param DelayBtwn is a pointer to the Delay Between transfers value.
-* This is a return parameter.
-* @param DelayAfter is a pointer to the Delay After transfer value.
-* This is a return parameter.
-* @param DelayInit is a pointer to the Delay Initially value. This is
-* a return parameter.
-*
-* @return None.
-*
-* @note None.
-*
-******************************************************************************/
-void XSpiPs_GetDelays(XSpiPs *InstancePtr,u8 *DelayNss, u8 *DelayBtwn,
- u8 *DelayAfter, u8 *DelayInit)
-{
- u32 DelayRegister;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- DelayRegister = XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSPIPS_DR_OFFSET);
-
- *DelayInit = (u8)(DelayRegister & XSPIPS_DR_INIT_MASK);
-
- *DelayAfter = (u8)((DelayRegister & XSPIPS_DR_AFTER_MASK) >>
- XSPIPS_DR_AFTER_SHIFT);
-
- *DelayBtwn = (u8)((DelayRegister & XSPIPS_DR_BTWN_MASK) >>
- XSPIPS_DR_BTWN_SHIFT);
-
- *DelayNss = (u8)((DelayRegister & XSPIPS_DR_NSS_MASK) >>
- XSPIPS_DR_NSS_SHIFT);
-
-}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_selftest.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_selftest.c
deleted file mode 100644
index 780975a2e..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_selftest.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xspips_selftest.c
-*
-* This component contains the implementation of selftest functions for an SPI
-* device.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- ----------------------------------------------
-* 1.00 drg/jz 01/25/10 First release
-* 1.04a sg 01/30/13 SetDelays test includes DelayTestNss parameter.
-* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
-*
-*
-*
-******************************************************************************/
-
-/***************************** Include Files *********************************/
-
-#include "xspips.h"
-
-/************************** Constant Definitions *****************************/
-
-
-/**************************** Type Definitions *******************************/
-
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-
-/************************** Function Prototypes ******************************/
-
-
-/************************** Variable Definitions *****************************/
-
-
-/*****************************************************************************/
-/**
-*
-* Runs a self-test on the driver/device. The self-test is destructive in that
-* a reset of the device is performed in order to check the reset values of
-* the registers and to get the device into a known state.
-*
-* Upon successful return from the self-test, the device is reset.
-*
-* @param InstancePtr is a pointer to the XSpiPs instance.
-*
-* @return
-* - XST_SUCCESS if successful
-* - XST_REGISTER_ERROR indicates a register did not read or write
-* correctly.
-*
-* @note None.
-*
-******************************************************************************/
-s32 XSpiPs_SelfTest(XSpiPs *InstancePtr)
-{
- s32 Status;
- u32 Register;
- u8 DelayTestNss;
- u8 DelayTestBtwn;
- u8 DelayTestAfter;
- u8 DelayTestInit;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
-
- /*
- * Reset the SPI device to leave it in a known good state
- */
- XSpiPs_Reset(InstancePtr);
-
- /*
- * All the SPI registers should be in their default state right now.
- */
- Register = XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSPIPS_CR_OFFSET);
- if (Register != XSPIPS_CR_RESET_STATE) {
- return (s32)XST_REGISTER_ERROR;
- }
-
- Register = XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
- XSPIPS_SR_OFFSET);
- if (Register != XSPIPS_ISR_RESET_STATE) {
- return (s32)XST_REGISTER_ERROR;
- }
-
- DelayTestNss = 0x5AU;
- DelayTestBtwn = 0xA5U;
- DelayTestAfter = 0xAAU;
- DelayTestInit = 0x55U;
-
- /*
- * Write and read the delay register, just to be sure there is some
- * hardware out there.
- */
- Status = XSpiPs_SetDelays(InstancePtr, DelayTestNss, DelayTestBtwn,
- DelayTestAfter, DelayTestInit);
- if (Status != (s32)XST_SUCCESS) {
- return Status;
- }
-
- XSpiPs_GetDelays(InstancePtr, &DelayTestNss, &DelayTestBtwn,
- &DelayTestAfter, &DelayTestInit);
- if ((0x5AU != DelayTestNss) || (0xA5U != DelayTestBtwn) ||
- (0xAAU != DelayTestAfter) || (0x55U != DelayTestInit)) {
- return (s32)XST_REGISTER_ERROR;
- }
-
- Status = XSpiPs_SetDelays(InstancePtr, 0U, 0U, 0U, 0U);
- if (Status != (s32)XST_SUCCESS) {
- return Status;
- }
-
- /*
- * Reset the SPI device to leave it in a known good state
- */
- XSpiPs_Reset(InstancePtr);
-
- return (s32)XST_SUCCESS;
-}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/bspconfig.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/bspconfig.h
deleted file mode 100644
index 68b572d09..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/bspconfig.h
+++ /dev/null
@@ -1,40 +0,0 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Configurations for Standalone BSP
-*
-*******************************************************************/
-
-#define MICROBLAZE_PVR_NONE
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/config.make b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/config.make
deleted file mode 100644
index ead407023..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/config.make
+++ /dev/null
@@ -1,2 +0,0 @@
-LIBSOURCES = *.c *.s *.S
-LIBS = standalone_libs
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/sleep.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/sleep.h
deleted file mode 100644
index 8497d2fe6..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/sleep.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-
-#ifndef SLEEP_H
-#define SLEEP_H
-
-#include "xil_types.h"
-#include "xil_io.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-s32 usleep(u32 useconds);
-s32 sleep(u32 seconds);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/vectors.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/vectors.h
deleted file mode 100644
index 8c508c3a2..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/vectors.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-* @file vectors.h
-*
-* This file contains the C level vector prototypes for the ARM Cortex A53 core.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- ---------------------------------------------------
-* 5.00 pkp 05/29/14 First release
-*
-*
-* @note
-*
-* None.
-*
-******************************************************************************/
-
-#ifndef _VECTORS_H_
-#define _VECTORS_H_
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/**************************** Type Definitions *******************************/
-
-/************************** Constant Definitions *****************************/
-
-/************************** Function Prototypes ******************************/
-void FIQInterrupt(void);
-void IRQInterrupt(void);
-void SynchronousInterrupt(void);
-void SErrorInterrupt(void);
-
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xbasic_types.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xbasic_types.h
deleted file mode 100644
index 07e3db39a..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xbasic_types.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xbasic_types.h
-*
-*
-* @note Dummy File for backwards compatibility
-*
-
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -------------------------------------------------------
-* 1.00a adk 1/31/14 Added in bsp common folder for backward compatibility
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -------------------------------------------------------
-* 1.00a hbm 07/14/09 First release
-*
-*
-******************************************************************************/
-
-#ifndef XIL_ASSERT_H /* prevent circular inclusions */
-#define XIL_ASSERT_H /* by using protection macros */
-
-#include "xil_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/***************************** Include Files *********************************/
-
-
-/************************** Constant Definitions *****************************/
-
-#define XIL_ASSERT_NONE 0U
-#define XIL_ASSERT_OCCURRED 1U
-#define XNULL NULL
-
-extern u32 Xil_AssertStatus;
-extern void Xil_Assert(const char8 *File, s32 Line);
-void XNullHandler(void *NullParameter);
-
-/**
- * This data type defines a callback to be invoked when an
- * assert occurs. The callback is invoked only when asserts are enabled
- */
-typedef void (*Xil_AssertCallback) (const char8 *File, s32 Line);
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-#ifndef NDEBUG
-
-/*****************************************************************************/
-/**
-* This assert macro is to be used for functions that do not return anything
-* (void). This in conjunction with the Xil_AssertWait boolean can be used to
-* accomodate tests so that asserts which fail allow execution to continue.
-*
-* @param Expression is the expression to evaluate. If it evaluates to
-* false, the assert occurs.
-*
-* @return Returns void unless the Xil_AssertWait variable is true, in which
-* case no return is made and an infinite loop is entered.
-*
-* @note None.
-*
-******************************************************************************/
-#define Xil_AssertVoid(Expression) \
-{ \
- if (Expression) { \
- Xil_AssertStatus = XIL_ASSERT_NONE; \
- } else { \
- Xil_Assert(__FILE__, __LINE__); \
- Xil_AssertStatus = XIL_ASSERT_OCCURRED; \
- return; \
- } \
-}
-
-/*****************************************************************************/
-/**
-* This assert macro is to be used for functions that do return a value. This in
-* conjunction with the Xil_AssertWait boolean can be used to accomodate tests
-* so that asserts which fail allow execution to continue.
-*
-* @param Expression is the expression to evaluate. If it evaluates to false,
-* the assert occurs.
-*
-* @return Returns 0 unless the Xil_AssertWait variable is true, in which
-* case no return is made and an infinite loop is entered.
-*
-* @note None.
-*
-******************************************************************************/
-#define Xil_AssertNonvoid(Expression) \
-{ \
- if (Expression) { \
- Xil_AssertStatus = XIL_ASSERT_NONE; \
- } else { \
- Xil_Assert(__FILE__, __LINE__); \
- Xil_AssertStatus = XIL_ASSERT_OCCURRED; \
- return 0; \
- } \
-}
-
-/*****************************************************************************/
-/**
-* Always assert. This assert macro is to be used for functions that do not
-* return anything (void). Use for instances where an assert should always
-* occur.
-*
-* @return Returns void unless the Xil_AssertWait variable is true, in which
-* case no return is made and an infinite loop is entered.
-*
-* @note None.
-*
-******************************************************************************/
-#define Xil_AssertVoidAlways() \
-{ \
- Xil_Assert(__FILE__, __LINE__); \
- Xil_AssertStatus = XIL_ASSERT_OCCURRED; \
- return; \
-}
-
-/*****************************************************************************/
-/**
-* Always assert. This assert macro is to be used for functions that do return
-* a value. Use for instances where an assert should always occur.
-*
-* @return Returns void unless the Xil_AssertWait variable is true, in which
-* case no return is made and an infinite loop is entered.
-*
-* @note None.
-*
-******************************************************************************/
-#define Xil_AssertNonvoidAlways() \
-{ \
- Xil_Assert(__FILE__, __LINE__); \
- Xil_AssertStatus = XIL_ASSERT_OCCURRED; \
- return 0; \
-}
-
-
-#else
-
-#define Xil_AssertVoid(Expression)
-#define Xil_AssertVoidAlways()
-#define Xil_AssertNonvoid(Expression)
-#define Xil_AssertNonvoidAlways()
-
-#endif
-
-/************************** Function Prototypes ******************************/
-
-void Xil_AssertSetCallback(Xil_AssertCallback Routine);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_cache_vxworks.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_cache_vxworks.h
deleted file mode 100644
index 64ae0fd90..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_cache_vxworks.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xil_cache_vxworks.h
-*
-* Contains the cache related functions for VxWorks that is wrapped by
-* xil_cache.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -------------------------------------------------------
-* 1.00a hbm 12/11/09 Initial release
-*
-*
-*
-* @note
-*
-******************************************************************************/
-
-#ifndef XIL_CACHE_VXWORKS_H
-#define XIL_CACHE_VXWORKS_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "vxWorks.h"
-#include "vxLib.h"
-#include "sysLibExtra.h"
-#include "cacheLib.h"
-
-#if (CPU_FAMILY==PPC)
-
-#define Xil_DCacheEnable() cacheEnable(DATA_CACHE)
-
-#define Xil_DCacheDisable() cacheDisable(DATA_CACHE)
-
-#define Xil_DCacheInvalidateRange(Addr, Len) \
- cacheInvalidate(DATA_CACHE, (void *)(Addr), (Len))
-
-#define Xil_DCacheFlushRange(Addr, Len) \
- cacheFlush(DATA_CACHE, (void *)(Addr), (Len))
-
-#define Xil_ICacheEnable() cacheEnable(INSTRUCTION_CACHE)
-
-#define Xil_ICacheDisable() cacheDisable(INSTRUCTION_CACHE)
-
-#define Xil_ICacheInvalidateRange(Addr, Len) \
- cacheInvalidate(INSTRUCTION_CACHE, (void *)(Addr), (Len))
-
-
-#else
-#error "Unknown processor / architecture. Must be PPC for VxWorks."
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_exception.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_exception.h
deleted file mode 100644
index 818d44300..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_exception.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xil_exception.h
-*
-* This header file contains ARM Cortex A53 specific exception related APIs.
-* For exception related functions that can be used across all Xilinx supported
-* processors, please use xil_exception.h.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- -------- -------- -----------------------------------------------
-* 5.00 pkp 05/29/14 First release
-*
-*
-******************************************************************************/
-
-#ifndef XIL_EXCEPTION_H /* prevent circular inclusions */
-#define XIL_EXCEPTION_H /* by using protection macros */
-
-/***************************** Include Files ********************************/
-
-#include "xil_types.h"
-#include "xpseudo_asm.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/************************** Constant Definitions ****************************/
-
-#define XIL_EXCEPTION_FIQ XREG_CPSR_FIQ_ENABLE
-#define XIL_EXCEPTION_IRQ XREG_CPSR_IRQ_ENABLE
-#define XIL_EXCEPTION_ALL (XREG_CPSR_FIQ_ENABLE | XREG_CPSR_IRQ_ENABLE)
-
-#define XIL_EXCEPTION_ID_FIRST 0U
-#define XIL_EXCEPTION_ID_SYNC_INT 1U
-#define XIL_EXCEPTION_ID_IRQ_INT 2U
-#define XIL_EXCEPTION_ID_FIQ_INT 3U
-#define XIL_EXCEPTION_ID_SERROR_ABORT_INT 4U
-#define XIL_EXCEPTION_ID_LAST 5U
-
-/*
- * XIL_EXCEPTION_ID_INT is defined for all Xilinx processors.
- */
-#define XIL_EXCEPTION_ID_INT XIL_EXCEPTION_ID_IRQ_INT
-
-/**************************** Type Definitions ******************************/
-
-/**
- * This typedef is the exception handler function.
- */
-typedef void (*Xil_ExceptionHandler)(void *data);
-typedef void (*Xil_InterruptHandler)(void *data);
-
-/***************** Macros (Inline Functions) Definitions ********************/
-
-/****************************************************************************/
-/**
-* Enable Exceptions.
-*
-* @param Mask for exceptions to be enabled.
-*
-* @return None.
-*
-* @note If bit is 0, exception is enabled.
-* C-Style signature: void Xil_ExceptionEnableMask(Mask)
-*
-******************************************************************************/
-
-#define Xil_ExceptionEnableMask(Mask) \
- mtcpsr(mfcpsr() & ~ ((Mask) & XIL_EXCEPTION_ALL))
-
-/****************************************************************************/
-/**
-* Enable the IRQ exception.
-*
-* @return None.
-*
-* @note None.
-*
-******************************************************************************/
-#define Xil_ExceptionEnable() \
- Xil_ExceptionEnableMask(XIL_EXCEPTION_IRQ)
-
-/****************************************************************************/
-/**
-* Disable Exceptions.
-*
-* @param Mask for exceptions to be enabled.
-*
-* @return None.
-*
-* @note If bit is 1, exception is disabled.
-* C-Style signature: Xil_ExceptionDisableMask(Mask)
-*
-******************************************************************************/
-
-#define Xil_ExceptionDisableMask(Mask) \
- mtcpsr(mfcpsr() | ((Mask) & XIL_EXCEPTION_ALL))
-
-/****************************************************************************/
-/**
-* Disable the IRQ exception.
-*
-* @return None.
-*
-* @note None.
-*
-******************************************************************************/
-#define Xil_ExceptionDisable() \
- Xil_ExceptionDisableMask(XIL_EXCEPTION_IRQ)
-
-
-/************************** Variable Definitions ****************************/
-
-/************************** Function Prototypes *****************************/
-
-extern void Xil_ExceptionRegisterHandler(u32 Exception_id,
- Xil_ExceptionHandler Handler,
- void *Data);
-
-extern void Xil_ExceptionRemoveHandler(u32 Exception_id);
-
-extern void Xil_ExceptionInit(void);
-
-void Xil_SyncAbortHandler(void *CallBackRef);
-
-void Xil_SErrorAbortHandler(void *CallBackRef);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* XIL_EXCEPTION_H */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_io.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_io.h
deleted file mode 100644
index 1c89574bb..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_io.h
+++ /dev/null
@@ -1,240 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xil_io.h
-*
-* This file contains the interface for the general IO component, which
-* encapsulates the Input/Output functions for processors that do not
-* require any special I/O handling.
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- -------- -------- -----------------------------------------------
-* 5.00 pkp 05/29/14 First release
-*
-******************************************************************************/
-
-#ifndef XIL_IO_H /* prevent circular inclusions */
-#define XIL_IO_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xpseudo_asm.h"
-#include "xil_printf.h"
-
-/************************** Constant Definitions *****************************/
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-# define SYNCHRONIZE_IO dmb()
-# define INST_SYNC isb()
-# define DATA_SYNC dsb()
-
-
-/*****************************************************************************/
-/**
-*
-* Perform an big-endian input operation for a 16-bit memory location
-* by reading from the specified address and returning the Value read from
-* that address.
-*
-* @param Addr contains the address to perform the input operation at.
-*
-* @return The Value read from the specified input address with the
-* proper endianness. The return Value has the same endianness
-* as that of the processor, i.e. if the processor is
-* little-engian, the return Value is the byte-swapped Value read
-* from the address.
-*
-* @note None.
-*
-******************************************************************************/
-#define Xil_In16LE(Addr) Xil_In16((Addr))
-
-/*****************************************************************************/
-/**
-*
-* Perform a big-endian input operation for a 32-bit memory location
-* by reading from the specified address and returning the Value read from
-* that address.
-*
-* @param Addr contains the address to perform the input operation at.
-*
-* @return The Value read from the specified input address with the
-* proper endianness. The return Value has the same endianness
-* as that of the processor, i.e. if the processor is
-* little-engian, the return Value is the byte-swapped Value read
-* from the address.
-*
-*
-* @note None.
-*
-******************************************************************************/
-#define Xil_In32LE(Addr) Xil_In32((Addr))
-
-/*****************************************************************************/
-/**
-*
-* Perform a big-endian output operation for a 16-bit memory location
-* by writing the specified Value to the specified address.
-*
-* @param Addr contains the address to perform the output operation at.
-* @param Value contains the Value to be output at the specified address.
-* The Value has the same endianness as that of the processor.
-* If the processor is little-endian, the byte-swapped Value is
-* written to the address.
-*
-*
-* @return None
-*
-* @note None.
-*
-******************************************************************************/
-#define Xil_Out16LE(Addr, Value) Xil_Out16((Addr), (Value))
-
-/*****************************************************************************/
-/**
-*
-* Perform a big-endian output operation for a 32-bit memory location
-* by writing the specified Value to the specified address.
-*
-* @param Addr contains the address to perform the output operation at.
-* @param Value contains the Value to be output at the specified address.
-* The Value has the same endianness as that of the processor.
-* If the processor is little-endian, the byte-swapped Value is
-* written to the address.
-*
-* @return None
-*
-* @note None.
-*
-******************************************************************************/
-#define Xil_Out32LE(Addr, Value) Xil_Out32((Addr), (Value))
-
-/*****************************************************************************/
-/**
-*
-* Convert a 32-bit number from host byte order to network byte order.
-*
-* @param Data the 32-bit number to be converted.
-*
-* @return The converted 32-bit number in network byte order.
-*
-* @note None.
-*
-******************************************************************************/
-#define Xil_Htonl(Data) Xil_EndianSwap32((Data))
-
-/*****************************************************************************/
-/**
-*
-* Convert a 16-bit number from host byte order to network byte order.
-*
-* @param Data the 16-bit number to be converted.
-*
-* @return The converted 16-bit number in network byte order.
-*
-* @note None.
-*
-******************************************************************************/
-#define Xil_Htons(Data) Xil_EndianSwap16((Data))
-
-/*****************************************************************************/
-/**
-*
-* Convert a 32-bit number from network byte order to host byte order.
-*
-* @param Data the 32-bit number to be converted.
-*
-* @return The converted 32-bit number in host byte order.
-*
-* @note None.
-*
-******************************************************************************/
-#define Xil_Ntohl(Data) Xil_EndianSwap32((Data))
-
-/*****************************************************************************/
-/**
-*
-* Convert a 16-bit number from network byte order to host byte order.
-*
-* @param Data the 16-bit number to be converted.
-*
-* @return The converted 16-bit number in host byte order.
-*
-* @note None.
-*
-******************************************************************************/
-#define Xil_Ntohs(Data) Xil_EndianSwap16((Data))
-
-/************************** Function Prototypes ******************************/
-
-/* The following functions allow the software to be transportable across
- * processors which may use memory mapped I/O or I/O which is mapped into a
- * seperate address space.
- */
-u8 Xil_In8(INTPTR Addr);
-u16 Xil_In16(INTPTR Addr);
-u32 Xil_In32(INTPTR Addr);
-u64 Xil_In64(INTPTR Addr);
-
-void Xil_Out8(INTPTR Addr, u8 Value);
-void Xil_Out16(INTPTR Addr, u16 Value);
-void Xil_Out32(INTPTR Addr, u32 Value);
-void Xil_Out64(INTPTR Addr, u64 Value);
-
-
-u16 Xil_In16BE(INTPTR Addr);
-u32 Xil_In32BE(INTPTR Addr);
-void Xil_Out16BE(INTPTR Addr, u16 Value);
-void Xil_Out32BE(INTPTR Addr, u32 Value);
-
-u16 Xil_EndianSwap16(u16 Data);
-u32 Xil_EndianSwap32(u32 Data);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_printf.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_printf.h
deleted file mode 100644
index 2be5c5734..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_printf.h
+++ /dev/null
@@ -1,44 +0,0 @@
- #ifndef XIL_PRINTF_H
- #define XIL_PRINTF_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include
-#include
-#include
-#include "xil_types.h"
-#include "xparameters.h"
-
-/*----------------------------------------------------*/
-/* Use the following parameter passing structure to */
-/* make xil_printf re-entrant. */
-/*----------------------------------------------------*/
-
-struct params_s;
-
-
-/*---------------------------------------------------*/
-/* The purpose of this routine is to output data the */
-/* same as the standard printf function without the */
-/* overhead most run-time libraries involve. Usually */
-/* the printf brings in many kilobytes of code and */
-/* that is unacceptable in most embedded systems. */
-/*---------------------------------------------------*/
-
-typedef char8* charptr;
-typedef s32 (*func_ptr)(int c);
-
-/* */
-
-void xil_printf( const char8 *ctrl1, ...);
-void print( const char8 *ptr);
-extern void outbyte (char8 c);
-extern char8 inbyte(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testcache.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testcache.h
deleted file mode 100644
index 0ec0ea87e..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testcache.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xil_testcache.h
-*
-* This file contains utility functions to test cache.
-*
-* Ver Who Date Changes
-* ----- ---- -------- -----------------------------------------------
-* 1.00a hbm 07/29/09 First release
-*
-******************************************************************************/
-
-#ifndef XIL_TESTCACHE_H /* prevent circular inclusions */
-#define XIL_TESTCACHE_H /* by using protection macros */
-
-#include "xil_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern s32 Xil_TestDCacheRange(void);
-extern s32 Xil_TestDCacheAll(void);
-extern s32 Xil_TestICacheRange(void);
-extern s32 Xil_TestICacheAll(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_types.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_types.h
deleted file mode 100644
index b9ef3c185..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_types.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xil_types.h
-*
-* This file contains basic types for Xilinx software IP.
-
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -------------------------------------------------------
-* 1.00a hbm 07/14/09 First release
-* 3.03a sdm 05/30/11 Added Xuint64 typedef and XUINT64_MSW/XUINT64_LSW macros
-* 5.00 pkp 05/29/14 Made changes for 64 bit architecture
-* srt 07/14/14 Use standard definitions from stdint.h and stddef.h
-* Define LONG and ULONG datatypes and mask values
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- -------- -------- -----------------------------------------------
-* 5.00 pkp 05/21/14 First release
-*
-*
-******************************************************************************/
-
-#ifndef XPSEUDO_ASM_GCC_H /* prevent circular inclusions */
-#define XPSEUDO_ASM_GCC_H /* by using protection macros */
-
-/***************************** Include Files ********************************/
-
-#include "xil_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/************************** Constant Definitions ****************************/
-
-/**************************** Type Definitions ******************************/
-
-/***************** Macros (Inline Functions) Definitions ********************/
-
-/* necessary for pre-processor */
-#define stringify(s) tostring(s)
-#define tostring(s) #s
-
-/* pseudo assembler instructions */
-#define mfcpsr() ({u32 rval; \
- asm volatile("mrs %0, DAIF" : "=r" (rval));\
- rval;\
- })
-
-#define mtcpsr(v) asm ("msr DAIF, %0" : : "r" (v))
-
-#define cpsiei() //__asm__ __volatile__("cpsie i\n")
-#define cpsidi() //__asm__ __volatile__("cpsid i\n")
-
-#define cpsief() //__asm__ __volatile__("cpsie f\n")
-#define cpsidf() //__asm__ __volatile__("cpsid f\n")
-
-
-
-#define mtgpr(rn, v) /*__asm__ __volatile__(\
- "mov r" stringify(rn) ", %0 \n"\
- : : "r" (v)\
- )*/
-
-#define mfgpr(rn) /*({u32 rval; \
- __asm__ __volatile__(\
- "mov %0,r" stringify(rn) "\n"\
- : "=r" (rval)\
- );\
- rval;\
- })*/
-
-/* memory synchronization operations */
-
-/* Instruction Synchronization Barrier */
-#define isb() asm ("isb sy")
-
-/* Data Synchronization Barrier */
-#define dsb() asm("dsb sy")
-
-/* Data Memory Barrier */
-#define dmb() asm("dmb sy")
-
-
-/* Memory Operations */
-#define ldr(adr) ({u32 rval; \
- __asm__ __volatile__(\
- "ldr %0,[%1]"\
- : "=r" (rval) : "r" (adr)\
- );\
- rval;\
- })
-
-#define ldrb(adr) ({u8 rval; \
- __asm__ __volatile__(\
- "ldrb %0,[%1]"\
- : "=r" (rval) : "r" (adr)\
- );\
- rval;\
- })
-
-#define str(adr, val) __asm__ __volatile__(\
- "str %0,[%1]\n"\
- : : "r" (val), "r" (adr)\
- )
-
-#define strb(adr, val) __asm__ __volatile__(\
- "strb %0,[%1]\n"\
- : : "r" (val), "r" (adr)\
- )
-
-/* Count leading zeroes (clz) */
-#define clz(arg) ({u8 rval; \
- __asm__ __volatile__(\
- "clz %0,%1"\
- : "=r" (rval) : "r" (arg)\
- );\
- rval;\
- })
-#define mtcpdc(reg,val) asm("dc " #reg ",%0" : : "r" (val))
-#define mtcpic(reg,val) asm("ic " #reg ",%0" : : "r" (val))
-
-#define mtcpicall(reg) asm("ic " #reg)
-#define mtcptlbi(reg) asm("tlbi " #reg)
-#define mtcpat(reg,val) asm("at " #reg ",%0" : : "r" (val))
-/* CP15 operations */
-#define mfcp(reg) ({u32 rval;\
- asm("mrs %0, " #reg : "=r" (rval));\
- rval;\
- })
-
-#define mtcp(reg,val) asm("msr " #reg ",%0" : : "r" (val))
-
-/************************** Variable Definitions ****************************/
-
-/************************** Function Prototypes *****************************/
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* XPSEUDO_ASM_GCC_H */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xstatus.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xstatus.h
deleted file mode 100644
index 7db874c88..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xstatus.h
+++ /dev/null
@@ -1,430 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xstatus.h
-*
-* This file contains Xilinx software status codes. Status codes have their
-* own data type called int. These codes are used throughout the Xilinx
-* device drivers.
-*
-******************************************************************************/
-
-#ifndef XSTATUS_H /* prevent circular inclusions */
-#define XSTATUS_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-
-/************************** Constant Definitions *****************************/
-
-/*********************** Common statuses 0 - 500 *****************************/
-
-#define XST_SUCCESS 0L
-#define XST_FAILURE 1L
-#define XST_DEVICE_NOT_FOUND 2L
-#define XST_DEVICE_BLOCK_NOT_FOUND 3L
-#define XST_INVALID_VERSION 4L
-#define XST_DEVICE_IS_STARTED 5L
-#define XST_DEVICE_IS_STOPPED 6L
-#define XST_FIFO_ERROR 7L /* an error occurred during an
- operation with a FIFO such as
- an underrun or overrun, this
- error requires the device to
- be reset */
-#define XST_RESET_ERROR 8L /* an error occurred which requires
- the device to be reset */
-#define XST_DMA_ERROR 9L /* a DMA error occurred, this error
- typically requires the device
- using the DMA to be reset */
-#define XST_NOT_POLLED 10L /* the device is not configured for
- polled mode operation */
-#define XST_FIFO_NO_ROOM 11L /* a FIFO did not have room to put
- the specified data into */
-#define XST_BUFFER_TOO_SMALL 12L /* the buffer is not large enough
- to hold the expected data */
-#define XST_NO_DATA 13L /* there was no data available */
-#define XST_REGISTER_ERROR 14L /* a register did not contain the
- expected value */
-#define XST_INVALID_PARAM 15L /* an invalid parameter was passed
- into the function */
-#define XST_NOT_SGDMA 16L /* the device is not configured for
- scatter-gather DMA operation */
-#define XST_LOOPBACK_ERROR 17L /* a loopback test failed */
-#define XST_NO_CALLBACK 18L /* a callback has not yet been
- registered */
-#define XST_NO_FEATURE 19L /* device is not configured with
- the requested feature */
-#define XST_NOT_INTERRUPT 20L /* device is not configured for
- interrupt mode operation */
-#define XST_DEVICE_BUSY 21L /* device is busy */
-#define XST_ERROR_COUNT_MAX 22L /* the error counters of a device
- have maxed out */
-#define XST_IS_STARTED 23L /* used when part of device is
- already started i.e.
- sub channel */
-#define XST_IS_STOPPED 24L /* used when part of device is
- already stopped i.e.
- sub channel */
-#define XST_DATA_LOST 26L /* driver defined error */
-#define XST_RECV_ERROR 27L /* generic receive error */
-#define XST_SEND_ERROR 28L /* generic transmit error */
-#define XST_NOT_ENABLED 29L /* a requested service is not
- available because it has not
- been enabled */
-
-/***************** Utility Component statuses 401 - 500 *********************/
-
-#define XST_MEMTEST_FAILED 401L /* memory test failed */
-
-
-/***************** Common Components statuses 501 - 1000 *********************/
-
-/********************* Packet Fifo statuses 501 - 510 ************************/
-
-#define XST_PFIFO_LACK_OF_DATA 501L /* not enough data in FIFO */
-#define XST_PFIFO_NO_ROOM 502L /* not enough room in FIFO */
-#define XST_PFIFO_BAD_REG_VALUE 503L /* self test, a register value
- was invalid after reset */
-#define XST_PFIFO_ERROR 504L /* generic packet FIFO error */
-#define XST_PFIFO_DEADLOCK 505L /* packet FIFO is reporting
- * empty and full simultaneously
- */
-
-/************************** DMA statuses 511 - 530 ***************************/
-
-#define XST_DMA_TRANSFER_ERROR 511L /* self test, DMA transfer
- failed */
-#define XST_DMA_RESET_REGISTER_ERROR 512L /* self test, a register value
- was invalid after reset */
-#define XST_DMA_SG_LIST_EMPTY 513L /* scatter gather list contains
- no buffer descriptors ready
- to be processed */
-#define XST_DMA_SG_IS_STARTED 514L /* scatter gather not stopped */
-#define XST_DMA_SG_IS_STOPPED 515L /* scatter gather not running */
-#define XST_DMA_SG_LIST_FULL 517L /* all the buffer desciptors of
- the scatter gather list are
- being used */
-#define XST_DMA_SG_BD_LOCKED 518L /* the scatter gather buffer
- descriptor which is to be
- copied over in the scatter
- list is locked */
-#define XST_DMA_SG_NOTHING_TO_COMMIT 519L /* no buffer descriptors have been
- put into the scatter gather
- list to be commited */
-#define XST_DMA_SG_COUNT_EXCEEDED 521L /* the packet count threshold
- specified was larger than the
- total # of buffer descriptors
- in the scatter gather list */
-#define XST_DMA_SG_LIST_EXISTS 522L /* the scatter gather list has
- already been created */
-#define XST_DMA_SG_NO_LIST 523L /* no scatter gather list has
- been created */
-#define XST_DMA_SG_BD_NOT_COMMITTED 524L /* the buffer descriptor which was
- being started was not committed
- to the list */
-#define XST_DMA_SG_NO_DATA 525L /* the buffer descriptor to start
- has already been used by the
- hardware so it can't be reused
- */
-#define XST_DMA_SG_LIST_ERROR 526L /* general purpose list access
- error */
-#define XST_DMA_BD_ERROR 527L /* general buffer descriptor
- error */
-
-/************************** IPIF statuses 531 - 550 ***************************/
-
-#define XST_IPIF_REG_WIDTH_ERROR 531L /* an invalid register width
- was passed into the function */
-#define XST_IPIF_RESET_REGISTER_ERROR 532L /* the value of a register at
- reset was not valid */
-#define XST_IPIF_DEVICE_STATUS_ERROR 533L /* a write to the device interrupt
- status register did not read
- back correctly */
-#define XST_IPIF_DEVICE_ACK_ERROR 534L /* the device interrupt status
- register did not reset when
- acked */
-#define XST_IPIF_DEVICE_ENABLE_ERROR 535L /* the device interrupt enable
- register was not updated when
- other registers changed */
-#define XST_IPIF_IP_STATUS_ERROR 536L /* a write to the IP interrupt
- status register did not read
- back correctly */
-#define XST_IPIF_IP_ACK_ERROR 537L /* the IP interrupt status register
- did not reset when acked */
-#define XST_IPIF_IP_ENABLE_ERROR 538L /* IP interrupt enable register was
- not updated correctly when other
- registers changed */
-#define XST_IPIF_DEVICE_PENDING_ERROR 539L /* The device interrupt pending
- register did not indicate the
- expected value */
-#define XST_IPIF_DEVICE_ID_ERROR 540L /* The device interrupt ID register
- did not indicate the expected
- value */
-#define XST_IPIF_ERROR 541L /* generic ipif error */
-
-/****************** Device specific statuses 1001 - 4095 *********************/
-
-/********************* Ethernet statuses 1001 - 1050 *************************/
-
-#define XST_EMAC_MEMORY_SIZE_ERROR 1001L /* Memory space is not big enough
- * to hold the minimum number of
- * buffers or descriptors */
-#define XST_EMAC_MEMORY_ALLOC_ERROR 1002L /* Memory allocation failed */
-#define XST_EMAC_MII_READ_ERROR 1003L /* MII read error */
-#define XST_EMAC_MII_BUSY 1004L /* An MII operation is in progress */
-#define XST_EMAC_OUT_OF_BUFFERS 1005L /* Driver is out of buffers */
-#define XST_EMAC_PARSE_ERROR 1006L /* Invalid driver init string */
-#define XST_EMAC_COLLISION_ERROR 1007L /* Excess deferral or late
- * collision on polled send */
-
-/*********************** UART statuses 1051 - 1075 ***************************/
-#define XST_UART
-
-#define XST_UART_INIT_ERROR 1051L
-#define XST_UART_START_ERROR 1052L
-#define XST_UART_CONFIG_ERROR 1053L
-#define XST_UART_TEST_FAIL 1054L
-#define XST_UART_BAUD_ERROR 1055L
-#define XST_UART_BAUD_RANGE 1056L
-
-
-/************************ IIC statuses 1076 - 1100 ***************************/
-
-#define XST_IIC_SELFTEST_FAILED 1076 /* self test failed */
-#define XST_IIC_BUS_BUSY 1077 /* bus found busy */
-#define XST_IIC_GENERAL_CALL_ADDRESS 1078 /* mastersend attempted with */
- /* general call address */
-#define XST_IIC_STAND_REG_RESET_ERROR 1079 /* A non parameterizable reg */
- /* value after reset not valid */
-#define XST_IIC_TX_FIFO_REG_RESET_ERROR 1080 /* Tx fifo included in design */
- /* value after reset not valid */
-#define XST_IIC_RX_FIFO_REG_RESET_ERROR 1081 /* Rx fifo included in design */
- /* value after reset not valid */
-#define XST_IIC_TBA_REG_RESET_ERROR 1082 /* 10 bit addr incl in design */
- /* value after reset not valid */
-#define XST_IIC_CR_READBACK_ERROR 1083 /* Read of the control register */
- /* didn't return value written */
-#define XST_IIC_DTR_READBACK_ERROR 1084 /* Read of the data Tx reg */
- /* didn't return value written */
-#define XST_IIC_DRR_READBACK_ERROR 1085 /* Read of the data Receive reg */
- /* didn't return value written */
-#define XST_IIC_ADR_READBACK_ERROR 1086 /* Read of the data Tx reg */
- /* didn't return value written */
-#define XST_IIC_TBA_READBACK_ERROR 1087 /* Read of the 10 bit addr reg */
- /* didn't return written value */
-#define XST_IIC_NOT_SLAVE 1088 /* The device isn't a slave */
-
-/*********************** ATMC statuses 1101 - 1125 ***************************/
-
-#define XST_ATMC_ERROR_COUNT_MAX 1101L /* the error counters in the ATM
- controller hit the max value
- which requires the statistics
- to be cleared */
-
-/*********************** Flash statuses 1126 - 1150 **************************/
-
-#define XST_FLASH_BUSY 1126L /* Flash is erasing or programming
- */
-#define XST_FLASH_READY 1127L /* Flash is ready for commands */
-#define XST_FLASH_ERROR 1128L /* Flash had detected an internal
- error. Use XFlash_DeviceControl
- to retrieve device specific codes
- */
-#define XST_FLASH_ERASE_SUSPENDED 1129L /* Flash is in suspended erase state
- */
-#define XST_FLASH_WRITE_SUSPENDED 1130L /* Flash is in suspended write state
- */
-#define XST_FLASH_PART_NOT_SUPPORTED 1131L /* Flash type not supported by
- driver */
-#define XST_FLASH_NOT_SUPPORTED 1132L /* Operation not supported */
-#define XST_FLASH_TOO_MANY_REGIONS 1133L /* Too many erase regions */
-#define XST_FLASH_TIMEOUT_ERROR 1134L /* Programming or erase operation
- aborted due to a timeout */
-#define XST_FLASH_ADDRESS_ERROR 1135L /* Accessed flash outside its
- addressible range */
-#define XST_FLASH_ALIGNMENT_ERROR 1136L /* Write alignment error */
-#define XST_FLASH_BLOCKING_CALL_ERROR 1137L /* Couldn't return immediately from
- write/erase function with
- XFL_NON_BLOCKING_WRITE/ERASE
- option cleared */
-#define XST_FLASH_CFI_QUERY_ERROR 1138L /* Failed to query the device */
-
-/*********************** SPI statuses 1151 - 1175 ****************************/
-
-#define XST_SPI_MODE_FAULT 1151 /* master was selected as slave */
-#define XST_SPI_TRANSFER_DONE 1152 /* data transfer is complete */
-#define XST_SPI_TRANSMIT_UNDERRUN 1153 /* slave underruns transmit register */
-#define XST_SPI_RECEIVE_OVERRUN 1154 /* device overruns receive register */
-#define XST_SPI_NO_SLAVE 1155 /* no slave has been selected yet */
-#define XST_SPI_TOO_MANY_SLAVES 1156 /* more than one slave is being
- * selected */
-#define XST_SPI_NOT_MASTER 1157 /* operation is valid only as master */
-#define XST_SPI_SLAVE_ONLY 1158 /* device is configured as slave-only
- */
-#define XST_SPI_SLAVE_MODE_FAULT 1159 /* slave was selected while disabled */
-#define XST_SPI_SLAVE_MODE 1160 /* device has been addressed as slave */
-#define XST_SPI_RECEIVE_NOT_EMPTY 1161 /* device received data in slave mode */
-
-#define XST_SPI_COMMAND_ERROR 1162 /* unrecognised command - qspi only */
-
-/********************** OPB Arbiter statuses 1176 - 1200 *********************/
-
-#define XST_OPBARB_INVALID_PRIORITY 1176 /* the priority registers have either
- * one master assigned to two or more
- * priorities, or one master not
- * assigned to any priority
- */
-#define XST_OPBARB_NOT_SUSPENDED 1177 /* an attempt was made to modify the
- * priority levels without first
- * suspending the use of priority
- * levels
- */
-#define XST_OPBARB_PARK_NOT_ENABLED 1178 /* bus parking by id was enabled but
- * bus parking was not enabled
- */
-#define XST_OPBARB_NOT_FIXED_PRIORITY 1179 /* the arbiter must be in fixed
- * priority mode to allow the
- * priorities to be changed
- */
-
-/************************ Intc statuses 1201 - 1225 **************************/
-
-#define XST_INTC_FAIL_SELFTEST 1201 /* self test failed */
-#define XST_INTC_CONNECT_ERROR 1202 /* interrupt already in use */
-
-/********************** TmrCtr statuses 1226 - 1250 **************************/
-
-#define XST_TMRCTR_TIMER_FAILED 1226 /* self test failed */
-
-/********************** WdtTb statuses 1251 - 1275 ***************************/
-
-#define XST_WDTTB_TIMER_FAILED 1251L
-
-/********************** PlbArb statuses 1276 - 1300 **************************/
-
-#define XST_PLBARB_FAIL_SELFTEST 1276L
-
-/********************** Plb2Opb statuses 1301 - 1325 *************************/
-
-#define XST_PLB2OPB_FAIL_SELFTEST 1301L
-
-/********************** Opb2Plb statuses 1326 - 1350 *************************/
-
-#define XST_OPB2PLB_FAIL_SELFTEST 1326L
-
-/********************** SysAce statuses 1351 - 1360 **************************/
-
-#define XST_SYSACE_NO_LOCK 1351L /* No MPU lock has been granted */
-
-/********************** PCI Bridge statuses 1361 - 1375 **********************/
-
-#define XST_PCI_INVALID_ADDRESS 1361L
-
-/********************** FlexRay constants 1400 - 1409 *************************/
-
-#define XST_FR_TX_ERROR 1400
-#define XST_FR_TX_BUSY 1401
-#define XST_FR_BUF_LOCKED 1402
-#define XST_FR_NO_BUF 1403
-
-/****************** USB constants 1410 - 1420 *******************************/
-
-#define XST_USB_ALREADY_CONFIGURED 1410
-#define XST_USB_BUF_ALIGN_ERROR 1411
-#define XST_USB_NO_DESC_AVAILABLE 1412
-#define XST_USB_BUF_TOO_BIG 1413
-#define XST_USB_NO_BUF 1414
-
-/****************** HWICAP constants 1421 - 1429 *****************************/
-
-#define XST_HWICAP_WRITE_DONE 1421
-
-
-/****************** AXI VDMA constants 1430 - 1440 *****************************/
-
-#define XST_VDMA_MISMATCH_ERROR 1430
-
-/*********************** NAND Flash statuses 1441 - 1459 *********************/
-
-#define XST_NAND_BUSY 1441L /* Flash is erasing or
- * programming
- */
-#define XST_NAND_READY 1442L /* Flash is ready for commands
- */
-#define XST_NAND_ERROR 1443L /* Flash had detected an
- * internal error.
- */
-#define XST_NAND_PART_NOT_SUPPORTED 1444L /* Flash type not supported by
- * driver
- */
-#define XST_NAND_OPT_NOT_SUPPORTED 1445L /* Operation not supported
- */
-#define XST_NAND_TIMEOUT_ERROR 1446L /* Programming or erase
- * operation aborted due to a
- * timeout
- */
-#define XST_NAND_ADDRESS_ERROR 1447L /* Accessed flash outside its
- * addressible range
- */
-#define XST_NAND_ALIGNMENT_ERROR 1448L /* Write alignment error
- */
-#define XST_NAND_PARAM_PAGE_ERROR 1449L /* Failed to read parameter
- * page of the device
- */
-#define XST_NAND_CACHE_ERROR 1450L /* Flash page buffer error
- */
-
-#define XST_NAND_WRITE_PROTECTED 1451L /* Flash is write protected
- */
-
-/**************************** Type Definitions *******************************/
-
-typedef int XStatus;
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-
-/************************** Function Prototypes ******************************/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/Makefile
similarity index 86%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/Makefile
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/Makefile
index 7f051ce50..0425bf6c1 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/Makefile
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/Makefile
@@ -1,6 +1,6 @@
###############################################################################
#
-# Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+# Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -31,21 +31,15 @@
###############################################################################
include config.make
-AS=aarch64-none-elf-as
-CC=aarch64-none-elf-gcc
-AR=aarch64-none-elf-ar
+CC=$(COMPILER)
+AR=$(ARCHIVER)
CP=cp
COMPILER_FLAGS=
EXTRA_COMPILER_FLAGS=
LIB=libxil.a
-
-LIB=libxil.a
-
CC_FLAGS = $(subst -pg, -DPROFILING, $(COMPILER_FLAGS))
ECC_FLAGS = $(subst -pg, -DPROFILING, $(EXTRA_COMPILER_FLAGS))
-
-#The following flags are required for PEEP. We can remove them later
ECC_FLAGS += -march=armv8-a
@@ -56,13 +50,13 @@ INCLUDES=-I./. -I${INCLUDEDIR}
OUTS = *.o
INCLUDEFILES=*.h
-
+INCLUDEFILES+=includes_ps/*.h
libs: $(LIBS)
standalone_libs: $(LIBSOURCES)
echo "Compiling standalone A53"
$(CC) $(CC_FLAGS) $(ECC_FLAGS) $(INCLUDES) $^
- $(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OUTS}
+ $(AR) -r ${RELEASEDIR}/${LIB} ${OUTS}
.PHONY: include
include: standalone_includes
@@ -72,4 +66,4 @@ standalone_includes:
clean:
rm -rf ${OUTS}
- $(MAKE) -C COMPILER_FLAGS="$(COMPILER_FLAGS)" EXTRA_COMPILER_FLAGS="$(EXTRA_COMPILER_FLAGS)" COMPILER="$(CC)" ARCHIVER="$(ARCHIVER)" AS="$(AS)" clean
+ $(MAKE) -C COMPILER_FLAGS="$(COMPILER_FLAGS)" EXTRA_COMPILER_FLAGS="$(EXTRA_COMPILER_FLAGS)" COMPILER="$(CC)" ARCHIVER="$(AR)" clean
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/_exit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/_exit.c
similarity index 96%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/_exit.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/_exit.c
index 77806d1ba..c6c834dab 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/_exit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/_exit.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/_open.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/_open.c
similarity index 96%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/_open.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/_open.c
index a4b7f8241..b2809c5d0 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/_open.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/_open.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/_sbrk.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/_sbrk.c
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/_sbrk.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/_sbrk.c
index 5911b0585..bcec069c8 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/_sbrk.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/_sbrk.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/abort.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/abort.c
similarity index 96%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/abort.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/abort.c
index f64509404..122c25bbd 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/abort.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/abort.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/asm_vectors.S b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/asm_vectors.S
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/asm_vectors.S
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/asm_vectors.S
index 2d779f5ae..a08867a16 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/asm_vectors.S
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/asm_vectors.S
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/boot.S b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/boot.S
similarity index 92%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/boot.S
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/boot.S
index 3d5f5d0a3..992b65efe 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/boot.S
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/boot.S
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -78,6 +78,7 @@
.set L1Table, MMUTableL1
.set L2Table, MMUTableL2
.set vector_base, _vector_table
+.set rvbar_base, 0xFD5C0040
.section .boot,"ax"
@@ -129,16 +130,28 @@ EndlessLoop0:
#endif
OKToRun:
- /*Set vector table base addresses. */
+ /*Set vector table base address*/
ldr x1, =vector_base
msr VBAR_EL3,x1
- msr VBAR_EL2,x1
- msr VBAR_EL1,x1
+
+ /* Set reset vector address */
+ /* Get the cpu ID */
+ mrs x0, MPIDR_EL1
+ and x0, x0, #0xFF
+ mov w0, w0
+ ldr w2, =rvbar_base
+ /* calculate the rvbar base address for particular CPU core */
+ mov w3, #0x8
+ mul w0, w0, w3
+ add w2, w2, w0
+ /* store vector base address to RVBAR */
+ str x1, [x2]
/*Define stack pointer for current exception level*/
ldr x2,=EL3_stack
mov sp,x2
+
/* Disable trapping of CPTR_EL3 accesses or use of Adv.SIMD/FPU*/
mov x0, #0 // Clear all trap bits
msr CPTR_EL3, x0
@@ -185,8 +198,10 @@ OKToRun:
* 0 = b01000100 = Normal, Inner/Outer Non-Cacheable
* 1 = b11111111 = Normal, Inner/Outer WB/WA/RA
* 2 = b00000000 = Device-nGnRnE
+ * 3 = b00000100 = Device-nGnRE
+ * 4 = b10111011 = Normal, Inner/Outer WT/WA/RA
**********************************************/
- ldr x1, =0x000000000000FF44
+ ldr x1, =0x000000BB0400FF44
msr MAIR_EL3, x1
/**********************************************
@@ -199,6 +214,11 @@ OKToRun:
msr TCR_EL3, x1
isb
+ /* Enable SError Exception for asynchronous abort */
+ mrs x1,DAIF
+ bic x1,x1,#(0x1<<8)
+ msr DAIF,x1
+
/* Configure SCTLR_EL3 */
mov x1, #0 //Most of the SCTLR_EL3 bits are unknown at reset
orr x1, x1, #(1 << 12) //Enable I cache
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/bspconfig.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/bspconfig.h
similarity index 90%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/bspconfig.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/bspconfig.h
index 68b572d09..4dd178f04 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/bspconfig.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/bspconfig.h
@@ -1,40 +1,40 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Configurations for Standalone BSP
-*
-*******************************************************************/
-
-#define MICROBLAZE_PVR_NONE
+
+/*******************************************************************
+*
+* CAUTION: This file is automatically generated by HSI.
+* Version:
+* DO NOT EDIT.
+*
+* Copyright (C) 2010-2016 Xilinx, Inc. All Rights Reserved.*
+*Permission is hereby granted, free of charge, to any person obtaining a copy
+*of this software and associated documentation files (the Software), to deal
+*in the Software without restriction, including without limitation the rights
+*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*copies of the Software, and to permit persons to whom the Software is
+*furnished to do so, subject to the following conditions:
+*
+*The above copyright notice and this permission notice shall be included in
+*all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+*(a) running on a Xilinx device, or
+*(b) that interact with a Xilinx device through a bus or interconnect.
+*
+*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+*XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+*Except as contained in this notice, the name of the Xilinx shall not be used
+*in advertising or otherwise to promote the sale, use or other dealings in
+*this Software without prior written authorization from Xilinx.
+*
+
+*
+* Description: Configurations for Standalone BSP
+*
+*******************************************************************/
+
+#define MICROBLAZE_PVR_NONE
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/changelog.txt b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/changelog.txt
similarity index 65%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/changelog.txt
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/changelog.txt
index dc1873cde..ad9c771e1 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/changelog.txt
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/changelog.txt
@@ -219,4 +219,106 @@
* and iccarm/boot.s
* 5.0 pkp 25/02/15 Modified floating point flag to vfpv3 from vfpv3_d16 in BSP MakeFile
* for iccarm and armcc compiler of cortexA9
+ * 5.1 pkp 05/13/15 Changed the initialization order in cortexa9/gcc/boot.S, iccarm/boot.s
+ * and armcc/boot.s so to first invalidate caches and TLB, enable MMU and
+ * caches, then enable SMP bit in ACTLR. L2Cache invalidation and enabling
+ * of L2Cache is done later.
+ * 5.1 pkp 12/05/15 Modified cortexa9/xil_cache.c to modify Xil_DCacheInvalidateRange and
+ * Xil_DCacheFlushRange to remove unnecessary dsb which is unnecessarily
+ * taking long time to fix CR#853097. L2CacheSync is added into
+ * Xil_L2CacheInvalidateRange API. Xil_L1DCacheInvalidate and
+ * Xil_L2CacheInvalidate APIs are modified to flush the complete stack
+ * instead of just System Stack
+ * 5.1 pkp 14/05/15 Modified cortexa9/gcc/Makefile to keep a correct check of a compiler
+ * to update ECC_FLAGS and also take the compiler and archiver as specified
+ * in settings instead of hardcoding it.
+ * 5.2 pkp 06/08/15 Modified cortexa9/gcc/translation_table.S to put a check for
+ * XPAR_PS7_DDR_0_S_AXI_BASEADDR to confirm if DDR is present or not and
+ * accordingly generate the translation table
+ * 5.2 pkp 23/07/15 Modified cortexa9/gcc/Makefile to keep a correct check of a compiler
+ * to update ECC_FLAGS to fix a bug introduced during new version creation
+ * of BSP.
+ * 5.3 pkp 10/07/15 Modified cortexa9/xil_cache.c file to change cache API so that L2 Cache
+ * functionalities are avoided for the OpenAMP slave application(when
+ * USE_AMP flag is defined for BSP) as master CPU would be utilizing L2
+ * cache for its operation. Also file operations such as read, write,
+ * close, open are also avoided for OpenAMP support(when USE_AMP flag is
+ * defined for BSP) because XilOpenAMP library contains own file operation.
+ * The xil-crt0.S file is modified for not initializing global timer for
+ * OpenAMP application as it might be already in use by master CPU
+ * 5.3 pkp 10/09/15 Modified cortexa9/iccarm/xpseudo_asm_iccarm.h file to change function
+ * definition for dsb, isb and dmb to fix the compilation error when used
+ * kvn 16/10/15 Encapsulated assembly code into macros for R5 xil_cache file.
+ * 5.4 pkp 09/11/15 Modified cortexr5/gcc/boot.S to disable ACTLR.DBWR bit to avoid potential
+ * R5 deadlock for errata 780125
+ * 5.4 pkp 09/11/15 Modified cortexa53/32bit/gcc/boot.S to enable I-Cache and D-Cache for a53
+ * 32 bit BSP in the initialization
+ * 5.4 pkp 09/11/15 Modified cortexa9/xil_misc_psreset_api.c file to change the description
+ * for XOcm_Remap function
+ * 5.4 pkp 16/11/15 Modified microblaze/xil_misc_psreset_api.c file to change the description
+ * for XOcm_Remap function
+ * kvn 21/11/15 Added volatile keyword for ADDR varibles in Xil_Out API
+ * kvn 21/11/15 Changed ADDR variable type from u32 to UINTPTR. This is
+ * required for MISRA-C:2012 Compliance.
+ * 5.4 pkp 23/11/15 Added attribute definitions for Xil_SetTlbAttributes API of Cortex-A9
+ * in cortexa9/xil_mmu.h
+ * 5.4 pkp 23/11/15 Added default undefined exception handler for Cortex-A9
+ * 5.4 pkp 11/12/15 Modified common/xplatform_info.h to add #defines for silicon for
+ * checking the current executing platform
+ * 5.4 pkp 18/12/15 Modified cortexa53/32bit/gcc/xil-crt0.S and 64bit/gcc/xil-crt0.S
+ * to initialize global constructor for C++ applications
+ * 5.4 pkp 18/12/15 Modified cortexr5/gcc/xil-crt0.S to initialize global constructor for
+ * C++ applications
+ * 5.4 pkp 18/12/15 Modified cortexa53/32bit/gcc/translation_table.S and 64bit/gcc/
+ * translation_table.S to update the translation table according to proper
+ * address map
+ * 5.4 pkp 18/12/15 Modified cortexar5/mpu.c to initialize the MPU according to proper
+ * address map
+ * 5.4 pkp 05/01/16 Modified cortexa53/64bit/boot.S to set the reset vector register RVBAR
+ * equivalent to vector table base address
+ * 5.4 pkp 08/01/16 Modified cortexa9/gcc/Makefile to update the extra compiler flag
+ * as per the toolchain update
+ * 5.4 pkp 12/01/16 Changed common/xplatform_info.* to add platform information support
+ * for Cortex-A53 32bit mode
+ * 5.4 pkp 28/01/16 Modified cortexa53/32bit/sleep.c and usleep.c & cortexa53/64bit/sleep.c
+ * and usleep.c to correct routines to avoid hardcoding the timer frequency,
+ * instead take it from xparameters.h to properly configure the timestamp
+ * clock frequency
+ * 5.4 asa 29/01/16 Modified microblaze/mb_interface.h to add macros that support the
+ * new instructions for MB address extension feature
+ * 5.4 kvn 30/01/16 Modified xparameters_ps.h file to add interrupt ID number for
+ * system monitor.
+ * 5.4 pkp 04/02/16 Modified cortexr5/gcc/boot.S to enable fault log for lock-step mode
+ * 5.4 pkp 19/02/16 Modified cortexr5/xtime_l.c to add an API XTime_StartTimer and updated
+ * cortexr5/xil-crt0.S to configure the TTC3 timer when present. Modified
+ * cortexr5/sleep.c, cortexr5/usleep.c to use TTC3 when present otherwise
+ * use set of assembly instructions to provide required delay to fix
+ * CR#913249.
+ * 5.4 asa 25/02/16 Made changes in xil-crt0.S for R5, A53 64 and 32 bit BSPs, to replace
+ * _exit with exit. We should not be directly calling _exit and should
+ * always use the library exit. This fixes the CR#937036.
+ * 5.4 pkp 25/02/16 Made change to cortexr5/gcc/boot.S to initialize the floating point
+ * registers, banked registers for various modes and enabled
+ * the cache ECC check before enabling the fault log for lock step mode
+ * Also modified the cortexr5/gcc/Makefile to support floating point
+ * registers initialization in boot code.
+ * 5.4 pkp 03/01/16 Updated the exit function in cortexr5/gcc/_exit.c to enable the debug
+ * logic in case of lock-step mode when fault log is enabled to fix
+ * CR#938281
+ * 5.4 pkp 03/02/16 Modified cortexa9/iccarm/xpseudo_asm_iccarm.h file to include
+ * header file instrinsics.h which contains assembly instructions
+ * definitions which can be used by C
+ * 5.4 asa 03/02/16 Added print.c in MB BSP. Made other cosmetic changes to have uniform
+ * proto for all print.c across the BSPs. This patch fixes CR#938738.
+ * 5.4 pkp 03/09/16 Modified cortexr5/sleep.c and usleep.c to avoid disabling the
+ * interrupts when sleep/usleep is being executed using assembly
+ * instructions to fix CR#913249.
+ * 5.4 pkp 03/11/16 Modified cortexr5/xtime_l.c to avoid enabling overflow interrupt,
+ * instead modified cortexr5/sleep.c and usleep.c to poll the counter
+ * value and compare it with previous value to detect the overflow
+ * to fix CR#940209.
+ * 5.4 pkp 03/24/16 Modified cortexr5/boot.S to reset the dbg_lpd_reset before enabling
+ * the fault log to avoid intervention for lock-step mode and cortexr5/
+ * _exit.c to enable the dbg_lpd_reset once the fault log is disabled
+ * to fix CR#947335
*****************************************************************************************/
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/close.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/close.c
similarity index 96%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/close.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/close.c
index 38bc6dca2..e42a1ff36 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/close.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/close.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/config.make b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/config.make
new file mode 100644
index 000000000..2b7dbb6f7
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/config.make
@@ -0,0 +1,2 @@
+LIBSOURCES = *.c *.S
+LIBS = standalone_libs
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/errno.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/errno.c
similarity index 96%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/errno.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/errno.c
index c0b1d14fa..daaa1212d 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/errno.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/errno.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/fcntl.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/fcntl.c
similarity index 96%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/fcntl.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/fcntl.c
index 63d390af4..4c5de40fd 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/fcntl.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/fcntl.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/fstat.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/fstat.c
similarity index 96%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/fstat.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/fstat.c
index a1d394c94..6271cfa84 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/fstat.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/fstat.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/getpid.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/getpid.c
similarity index 96%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/getpid.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/getpid.c
index 73c7902ae..c2a84cb7f 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/getpid.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/getpid.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/inbyte.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/inbyte.c
similarity index 93%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/inbyte.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/inbyte.c
index 0036459e4..a5a6448d4 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/inbyte.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/inbyte.c
@@ -1,14 +1,14 @@
-#include "xparameters.h"
-#include "xuartps_hw.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-char inbyte(void);
-#ifdef __cplusplus
-}
-#endif
-
-char inbyte(void) {
- return XUartPs_RecvByte(STDIN_BASEADDRESS);
-}
+#include "xparameters.h"
+#include "xuartps_hw.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+char inbyte(void);
+#ifdef __cplusplus
+}
+#endif
+
+char inbyte(void) {
+ return XUartPs_RecvByte(STDIN_BASEADDRESS);
+}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xddr_xmpu0_cfg.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xddr_xmpu0_cfg.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xddr_xmpu0_cfg.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xddr_xmpu0_cfg.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xddr_xmpu1_cfg.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xddr_xmpu1_cfg.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xddr_xmpu1_cfg.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xddr_xmpu1_cfg.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xddr_xmpu2_cfg.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xddr_xmpu2_cfg.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xddr_xmpu2_cfg.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xddr_xmpu2_cfg.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xddr_xmpu3_cfg.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xddr_xmpu3_cfg.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xddr_xmpu3_cfg.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xddr_xmpu3_cfg.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xddr_xmpu4_cfg.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xddr_xmpu4_cfg.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xddr_xmpu4_cfg.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xddr_xmpu4_cfg.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xddr_xmpu5_cfg.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xddr_xmpu5_cfg.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xddr_xmpu5_cfg.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xddr_xmpu5_cfg.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xfpd_slcr.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xfpd_slcr.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xfpd_slcr.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xfpd_slcr.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xfpd_slcr_secure.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xfpd_slcr_secure.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xfpd_slcr_secure.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xfpd_slcr_secure.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xfpd_xmpu_cfg.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xfpd_xmpu_cfg.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xfpd_xmpu_cfg.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xfpd_xmpu_cfg.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xfpd_xmpu_sink.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xfpd_xmpu_sink.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xfpd_xmpu_sink.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xfpd_xmpu_sink.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xiou_secure_slcr.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xiou_secure_slcr.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xiou_secure_slcr.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xiou_secure_slcr.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xiou_slcr.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xiou_slcr.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xiou_slcr.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xiou_slcr.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xlpd_slcr.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xlpd_slcr.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xlpd_slcr.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xlpd_slcr.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xlpd_slcr_secure.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xlpd_slcr_secure.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xlpd_slcr_secure.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xlpd_slcr_secure.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xlpd_xppu.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xlpd_xppu.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xlpd_xppu.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xlpd_xppu.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xlpd_xppu_sink.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xlpd_xppu_sink.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xlpd_xppu_sink.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xlpd_xppu_sink.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xocm_xmpu_cfg.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xocm_xmpu_cfg.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xocm_xmpu_cfg.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/includes_ps/xocm_xmpu_cfg.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/initialise_monitor_handles.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/initialise_monitor_handles.c
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/initialise_monitor_handles.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/initialise_monitor_handles.c
index 4571f492e..a2494c548 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/initialise_monitor_handles.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/initialise_monitor_handles.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/isatty.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/isatty.c
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/isatty.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/isatty.c
index d0a8a8251..242d8faf3 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/isatty.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/isatty.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/kill.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/kill.c
similarity index 96%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/kill.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/kill.c
index fdbcb600a..1c67ace57 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/kill.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/kill.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/lseek.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/lseek.c
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/lseek.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/lseek.c
index 0a3a1fa8f..5cd5a2dd1 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/lseek.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/lseek.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/open.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/open.c
similarity index 96%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/open.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/open.c
index 04a136c68..2bb745ab1 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/open.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/open.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/outbyte.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/outbyte.c
similarity index 93%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/outbyte.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/outbyte.c
index 8b56036b7..3c6430886 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/outbyte.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/outbyte.c
@@ -1,15 +1,15 @@
-#include "xparameters.h"
-#include "xuartps_hw.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-void outbyte(char c);
-
-#ifdef __cplusplus
-}
-#endif
-
-void outbyte(char c) {
- XUartPs_SendByte(STDOUT_BASEADDRESS, c);
-}
+#include "xparameters.h"
+#include "xuartps_hw.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+void outbyte(char c);
+
+#ifdef __cplusplus
+}
+#endif
+
+void outbyte(char c) {
+ XUartPs_SendByte(STDOUT_BASEADDRESS, c);
+}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/print.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/print.c
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/print.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/print.c
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/putnum.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/putnum.c
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/putnum.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/putnum.c
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/read.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/read.c
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/read.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/read.c
index d0fe15eb2..9a67e02d1 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/read.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/read.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/sbrk.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/sbrk.c
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/sbrk.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/sbrk.c
index 78b580912..7f94fabb4 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/sbrk.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/sbrk.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/sleep.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/sleep.c
similarity index 79%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/sleep.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/sleep.c
index e8aedafba..c81e1f381 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/sleep.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/sleep.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -42,6 +42,9 @@
* Ver Who Date Changes
* ----- -------- -------- -----------------------------------------------
* 5.00 pkp 05/29/14 First release
+* 5.04 pkp 28/01/16 Modified the sleep API to configure Time Stamp
+* generator only when disable using frequency from
+* xparamters.h instead of hardcoding
*
*
******************************************************************************/
@@ -66,13 +69,15 @@
s32 sleep(u32 seconds)
{
XTime tEnd, tCur;
+ /* Enable the counter only if it is disable */
+ if(((Xil_In32(XIOU_SCNTRS_BASEADDR + XIOU_SCNTRS_CNT_CNTRL_REG_OFFSET)) & XIOU_SCNTRS_CNT_CNTRL_REG_EN_MASK) != XIOU_SCNTRS_CNT_CNTRL_REG_EN){
- /*write 50MHz frequency to System Time Stamp Generator Register*/
- Xil_Out32((XIOU_SCNTRS_BASEADDR + XIOU_SCNTRS_FREQ_REG_OFFSET),XIOU_SCNTRS_FREQ);
-
- /*Enable the counter*/
- Xil_Out32((XIOU_SCNTRS_BASEADDR + XIOU_SCNTRS_CNT_CNTRL_REG_OFFSET),XIOU_SCNTRS_CNT_CNTRL_REG_EN);
+ /*write frequency to System Time Stamp Generator Register*/
+ Xil_Out32((XIOU_SCNTRS_BASEADDR + XIOU_SCNTRS_FREQ_REG_OFFSET),XIOU_SCNTRS_FREQ);
+ /*Enable the counter*/
+ Xil_Out32((XIOU_SCNTRS_BASEADDR + XIOU_SCNTRS_CNT_CNTRL_REG_OFFSET),XIOU_SCNTRS_CNT_CNTRL_REG_EN);
+ }
XTime_GetTime(&tCur);
tEnd = tCur + (((XTime) seconds) * COUNTS_PER_SECOND);
do
@@ -80,7 +85,5 @@ s32 sleep(u32 seconds)
XTime_GetTime(&tCur);
} while (tCur < tEnd);
- /*Disable the counter*/
- Xil_Out32((XIOU_SCNTRS_BASEADDR + XIOU_SCNTRS_CNT_CNTRL_REG_OFFSET),(~(XIOU_SCNTRS_CNT_CNTRL_REG_EN)));
return 0;
}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/sleep.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/sleep.h
similarity index 96%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/sleep.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/sleep.h
index 8497d2fe6..d2629b6b8 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/sleep.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/sleep.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/translation_table.s b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/translation_table.S
similarity index 52%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/translation_table.s
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/translation_table.S
index ad5686a24..5087307f2 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/translation_table.s
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/translation_table.S
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -42,13 +42,15 @@
* Ver Who Date Changes
* ----- ---- -------- ---------------------------------------------------
* 5.00 pkp 05/21/14 Initial version
-*
+* 5.04 pkp 12/18/15 Updated the address map according to proper address map
*
* @note
*
* None.
*
******************************************************************************/
+#include "xparameters.h"
+
.globl MMUTableL0
.globl MMUTableL1
.globl MMUTableL2
@@ -60,57 +62,54 @@
MMUTableL0:
-.set SECT, MMUTableL1
+.set SECT, MMUTableL1 /* 0x0000_0000 - 0x7F_FFFF_FFFF */
.8byte SECT + 0x3
-.set SECT, MMUTableL1+0x1000
+.set SECT, MMUTableL1+0x1000 /* 0x80_0000_0000 - 0xFF_FFFF_FFFF */
.8byte SECT + 0x3
.section .mmu_tbl1,"a"
MMUTableL1:
-.set SECT, MMUTableL2 /*1GB DDR*/
-.8byte SECT + 0x3
+.set SECT, MMUTableL2 /* 0x0000_0000 - 0x3FFF_FFFF */
+.8byte SECT + 0x3 /* 1GB DDR */
-.rept 0x3 /*1GB DDR, 1GB PL, 2GB other devices n memory*/
-.set SECT, SECT + 0x1000
+.rept 0x3 /* 0x4000_0000 - 0xFFFF_FFFF */
+.set SECT, SECT + 0x1000 /*1GB DDR, 1GB PL, 2GB other devices n memory */
.8byte SECT + 0x3
.endr
.set SECT,0x100000000
-.rept 0xC
-.8byte SECT + reserved
-.set SECT, SECT + 0x40000000 /*12GB Reserved*/
+.rept 0xC /* 0x0001_0000_0000 - 0x0003_FFFF_FFFF */
+.8byte SECT + reserved /* 12GB Reserved */
+.set SECT, SECT + 0x40000000
.endr
-.rept 0x10
-.8byte SECT + Device
-.set SECT, SECT + 0x40000000 /*8GB PL, 8GB PCIe*/
-
+.rept 0x10 /* 0x0004_0000_0000 - 0x0007_FFFF_FFFF */
+.8byte SECT + Device /* 8GB PL, 8GB PCIe */
+.set SECT, SECT + 0x40000000
.endr
-.rept 0x20
-.8byte SECT + Memory
-
-.set SECT, SECT + 0x40000000 /*32GB DDR*/
+.rept 0x20 /* 0x0008_0000_0000 - 0x000F_FFFF_FFFF */
+.8byte SECT + Memory /* 32GB DDR */
+.set SECT, SECT + 0x40000000
.endr
-
-.rept 0xC0
-.8byte SECT + Device
-.set SECT, SECT + 0x40000000 /*192GB PL*/
+.rept 0x1C0 /* 0x0010_0000_0000 - 0x007F_FFFF_FFFF */
+.8byte SECT + Device /* 448 GB PL */
+.set SECT, SECT + 0x40000000
.endr
-.rept 0x100
-.8byte SECT + Device
-.set SECT, SECT + 0x40000000 /*256GB PL/PCIe*/
+.rept 0x100 /* 0x0080_0000_0000 - 0x00BF_FFFF_FFFF */
+.8byte SECT + Device /* 256GB PCIe */
+.set SECT, SECT + 0x40000000
.endr
-.rept 0x200
-.8byte SECT + Device
-.set SECT, SECT + 0x40000000 /*512GB PL/DDR*/
+.rept 0x100 /* 0x00C0_0000_0000 - 0x00FF_FFFF_FFFF */
+.8byte SECT + reserved /* 256GB reserved */
+.set SECT, SECT + 0x40000000
.endr
@@ -120,51 +119,85 @@ MMUTableL2:
.set SECT, 0
-.rept 0x0400 /*2GB DDR */
+#ifdef XPAR_PSU_DDR_0_S_AXI_BASEADDR
+.set DDR_START, XPAR_PSU_DDR_0_S_AXI_BASEADDR
+.set DDR_END, XPAR_PSU_DDR_0_S_AXI_HIGHADDR
+.set DDR_SIZE, (DDR_END - DDR_START)+1
+.if DDR_SIZE > 0x80000000
+/* If DDR size is larger than 2GB, truncate to 2GB */
+.set DDR_REG, 0x400
+.else
+.set DDR_REG, DDR_SIZE/0x200000
+.endif
+#else
+.set DDR_REG, 0
+#endif
+
+.set UNDEF_REG, 0x400 - DDR_REG
+
+.rept DDR_REG /* DDR based on size in hdf*/
.8byte SECT + Memory
.set SECT, SECT+0x200000
.endr
-.rept 0x0200 /*1GB lower PL*/
-.8byte SECT + Device
+.rept UNDEF_REG /* reserved for region where ddr is absent */
+.8byte SECT + reserved
.set SECT, SECT+0x200000
.endr
-.rept 0x0100 /*512MB QSPI*/
-.8byte SECT + Device
+
+.rept 0x0200 /* 0x8000_0000 - 0xBFFF_FFFF */
+.8byte SECT + Device /* 1GB lower PL */
.set SECT, SECT+0x200000
.endr
-.rept 0x080 /*256MB lower PCIe*/
-.8byte SECT + Device
+
+.rept 0x0100 /* 0xC000_0000 - 0xDFFF_FFFF */
+.8byte SECT + Device /* 512MB QSPI */
.set SECT, SECT+0x200000
.endr
-.rept 0x040 /*128MB Reserved*/
-.8byte SECT + reserved
+
+.rept 0x080 /* 0xE000_0000 - 0xEFFF_FFFF */
+.8byte SECT + Device /* 256MB lower PCIe */
.set SECT, SECT+0x200000
.endr
-.rept 0x8 /*16MB coresight*/
-.8byte SECT + Device
+
+.rept 0x040 /* 0xF000_0000 - 0xF7FF_FFFF */
+.8byte SECT + reserved /* 128MB Reserved */
.set SECT, SECT+0x200000
.endr
-.rept 0x8 /*16MB RPU low latency port*/
-.8byte SECT + Device
+
+.rept 0x8 /* 0xF800_0000 - 0xF8FF_FFFF */
+.8byte SECT + Device /* 16MB coresight */
.set SECT, SECT+0x200000
.endr
-.rept 0x022 /*68MB Device*/
-.8byte SECT + Device
+/* 1MB RPU LLP is marked for 2MB region as the minimum block size in
+ translation table is 2MB and adjacent 63MB reserved region is
+ converted to 62MB */
+
+.rept 0x1 /* 0xF900_0000 - 0xF91F_FFFF */
+.8byte SECT + Device /* 2MB RPU low latency port */
.set SECT, SECT+0x200000
.endr
-.rept 0x8 /*8MB FPS*/
-.8byte SECT + Device
+
+.rept 0x1F /* 0xF920_0000 - 0xFCFF_FFFF */
+.8byte SECT + reserved /* 62MB Reserved */
.set SECT, SECT+0x200000
.endr
-.rept 0x4 /*16MB LPS*/
-.8byte SECT + Device
+.rept 0x8 /* 0xFD00_0000 - 0xFDFF_FFFF */
+.8byte SECT + Device /* 16MB FPS */
.set SECT, SECT+0x200000
.endr
-.8byte SECT + Device /*2MB PMU/CSU */
+.rept 0xE /* 0xFE00_0000 - 0xFFBF_FFFF */
+.8byte SECT + Device /* 28MB LPS */
.set SECT, SECT+0x200000
+.endr
+
+ /* 0xFFC0_0000 - 0xFFDF_FFFF */
+.8byte SECT + Device /*2MB PMU/CSU */
+
+.set SECT, SECT+0x200000 /* 0xFFE0_0000 - 0xFFFF_FFFF*/
.8byte SECT + Memory /*2MB OCM/TCM*/
+
.end
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/uart.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/uart.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/uart.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/uart.c
index 894db7fc3..ae67006d1 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/uart.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/uart.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/unlink.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/unlink.c
similarity index 96%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/unlink.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/unlink.c
index 1fef96831..3e5690e83 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/unlink.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/unlink.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/usleep.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/usleep.c
similarity index 80%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/usleep.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/usleep.c
index 7d0ff09f4..e512e3ea2 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/usleep.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/usleep.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -43,6 +43,9 @@
* Ver Who Date Changes
* ----- -------- -------- -----------------------------------------------
* 5.00 pkp 05/29/14 First release
+* 5.04 pkp 01/28/16 Modified the usleep API to configure Time Stamp
+* generator only when disable using frequency from
+* xparamters.h instead of hardcoding
*
*
******************************************************************************/
@@ -73,12 +76,14 @@
s32 usleep(u32 useconds)
{
XTime tEnd, tCur;
+ /* Enable the counter only if it is disable */
+ if(((Xil_In32(XIOU_SCNTRS_BASEADDR + XIOU_SCNTRS_CNT_CNTRL_REG_OFFSET)) & XIOU_SCNTRS_CNT_CNTRL_REG_EN_MASK) != XIOU_SCNTRS_CNT_CNTRL_REG_EN){
+ /*write frequency to System Time Stamp Generator Register*/
+ Xil_Out32((XIOU_SCNTRS_BASEADDR + XIOU_SCNTRS_FREQ_REG_OFFSET),XIOU_SCNTRS_FREQ);
- /*write 50MHz frequency to System Time Stamp Generator Register*/
- Xil_Out32((XIOU_SCNTRS_BASEADDR + XIOU_SCNTRS_FREQ_REG_OFFSET),XIOU_SCNTRS_FREQ);
-
- /*Enable the counter*/
- Xil_Out32((XIOU_SCNTRS_BASEADDR + XIOU_SCNTRS_CNT_CNTRL_REG_OFFSET),XIOU_SCNTRS_CNT_CNTRL_REG_EN);
+ /*Enable the counter*/
+ Xil_Out32((XIOU_SCNTRS_BASEADDR + XIOU_SCNTRS_CNT_CNTRL_REG_OFFSET),XIOU_SCNTRS_CNT_CNTRL_REG_EN);
+ }
XTime_GetTime(&tCur);
tEnd = tCur + (((XTime) useconds) * COUNTS_PER_USECOND);
@@ -87,7 +92,5 @@ s32 usleep(u32 useconds)
XTime_GetTime(&tCur);
} while (tCur < tEnd);
- /*Disable the counter*/
- Xil_Out32((XIOU_SCNTRS_BASEADDR + XIOU_SCNTRS_CNT_CNTRL_REG_OFFSET),(~(XIOU_SCNTRS_CNT_CNTRL_REG_EN)));
return 0;
}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/vectors.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/vectors.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/vectors.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/vectors.c
index 61d9f741b..d9a1b42ad 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/vectors.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/vectors.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/vectors.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/vectors.h
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/vectors.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/vectors.h
index 8c508c3a2..1ec878563 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/vectors.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/vectors.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/write.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/write.c
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/write.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/write.c
index 57c53eb27..7630914aa 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/write.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/write.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xbasic_types.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xbasic_types.h
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xbasic_types.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xbasic_types.h
index 07e3db39a..787212ca7 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xbasic_types.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xbasic_types.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2010 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xdebug.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xdebug.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xdebug.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xdebug.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xenv.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xenv.h
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xenv.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xenv.h
index c2f76ee26..3d97bebd4 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xenv.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xenv.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2002 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2002 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xenv_standalone.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xenv_standalone.h
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xenv_standalone.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xenv_standalone.h
index edab9db71..f18601874 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xenv_standalone.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xenv_standalone.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2002 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2002 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil-crt0.S b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil-crt0.S
similarity index 88%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil-crt0.S
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil-crt0.S
index eab93d183..227112695 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil-crt0.S
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil-crt0.S
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -39,6 +39,9 @@
* Ver Who Date Changes
* ----- ---- -------- ---------------------------------------------------
* 5.00 pkp 05/21/14 Initial version
+* 5.04 pkp 12/18/15 Initialized global constructor for C++ applications
+* 5.04 pkp 01/05/16 Set the reset vector register RVBAR equivalent to
+* vector table base address
*
*
* @note
@@ -97,9 +100,8 @@ _startup:
b .Lloop_bss
.Lenclbss:
-
- bl Init_Uart /* Initialize UART */
-
+ /* run global constructors */
+ bl __libc_init_array
/* make sure argc and argv are valid */
mov x0, #0
@@ -107,9 +109,10 @@ _startup:
bl main /* Jump to main C code */
+ /* Cleanup global constructors */
+ bl __libc_fini_array
-
- bl _exit
+ bl exit
.Lexit: /* should never get here */
b .Lexit
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_assert.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_assert.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_assert.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_assert.c
index e89292b87..42db07deb 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_assert.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_assert.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2009 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -144,4 +144,3 @@ void XNullHandler(void *NullParameter)
{
(void *) NullParameter;
}
-
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_assert.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_assert.h
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_assert.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_assert.h
index 6d3f96a83..7034bc9ad 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_assert.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_assert.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2009 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_cache.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_cache.c
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_cache.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_cache.c
index d5450c2be..7d493f604 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_cache.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_cache.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -265,12 +265,12 @@ void Xil_DCacheInvalidateLine(INTPTR adr)
* @note None.
*
****************************************************************************/
-void Xil_DCacheInvalidateRange(INTPTR adr, u32 len)
+void Xil_DCacheInvalidateRange(INTPTR adr, INTPTR len)
{
const u32 cacheline = 64U;
- u32 end;
- u32 tempadr = adr;
- u32 tempend;
+ INTPTR end;
+ INTPTR tempadr = adr;
+ INTPTR tempend;
u32 currmask;
currmask = mfcpsr();
mtcpsr(currmask | IRQ_FIQ_MASK);
@@ -456,12 +456,12 @@ void Xil_DCacheFlushLine(INTPTR adr)
*
****************************************************************************/
-void Xil_DCacheFlushRange(INTPTR adr, u32 len)
+void Xil_DCacheFlushRange(INTPTR adr, INTPTR len)
{
const u32 cacheline = 64U;
- u32 end;
- u32 tempadr = adr;
- u32 tempend;
+ INTPTR end;
+ INTPTR tempadr = adr;
+ INTPTR tempend;
u32 currmask;
currmask = mfcpsr();
mtcpsr(currmask | IRQ_FIQ_MASK);
@@ -618,12 +618,12 @@ void Xil_ICacheInvalidateLine(INTPTR adr)
* @note None.
*
****************************************************************************/
-void Xil_ICacheInvalidateRange(INTPTR adr, u32 len)
+void Xil_ICacheInvalidateRange(INTPTR adr, INTPTR len)
{
const u32 cacheline = 64U;
- u32 end;
- u32 tempadr = adr;
- u32 tempend;
+ INTPTR end;
+ INTPTR tempadr = adr;
+ INTPTR tempend;
u32 currmask;
currmask = mfcpsr();
mtcpsr(currmask | IRQ_FIQ_MASK);
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_cache.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_cache.h
similarity index 91%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_cache.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_cache.h
index 940133290..7c3fc0306 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_cache.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_cache.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -57,16 +57,16 @@ extern "C" {
void Xil_DCacheEnable(void);
void Xil_DCacheDisable(void);
void Xil_DCacheInvalidate(void);
-void Xil_DCacheInvalidateRange(INTPTR adr, u32 len);
+void Xil_DCacheInvalidateRange(INTPTR adr, INTPTR len);
void Xil_DCacheInvalidateLine(INTPTR adr);
void Xil_DCacheFlush(void);
-void Xil_DCacheFlushRange(INTPTR adr, u32 len);
+void Xil_DCacheFlushRange(INTPTR adr, INTPTR len);
void Xil_DCacheFlushLine(INTPTR adr);
void Xil_ICacheEnable(void);
void Xil_ICacheDisable(void);
void Xil_ICacheInvalidate(void);
-void Xil_ICacheInvalidateRange(INTPTR adr, u32 len);
+void Xil_ICacheInvalidateRange(INTPTR adr, INTPTR len);
void Xil_ICacheInvalidateLine(INTPTR adr);
#ifdef __cplusplus
}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_cache_vxworks.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_cache_vxworks.h
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_cache_vxworks.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_cache_vxworks.h
index 64ae0fd90..6e8cfa75f 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_cache_vxworks.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_cache_vxworks.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2009 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_exception.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_exception.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_exception.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_exception.c
index e3fa6175e..101ba0674 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_exception.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_exception.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_exception.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_exception.h
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_exception.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_exception.h
index 818d44300..288a60475 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_exception.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_exception.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_hal.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_hal.h
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_hal.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_hal.h
index e29d2a79d..d4434d07f 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_hal.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_hal.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2009 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_io.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_io.c
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_io.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_io.c
index e9dcdce37..b7eea5feb 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_io.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_io.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -141,7 +141,7 @@ u32 Xil_In32(INTPTR Addr)
******************************************************************************/
void Xil_Out8(INTPTR Addr, u8 Value)
{
- u8 *LocalAddr = (u8 *)Addr;
+ volatile u8 *LocalAddr = (u8 *)Addr;
*LocalAddr = Value;
}
@@ -162,7 +162,7 @@ void Xil_Out8(INTPTR Addr, u8 Value)
******************************************************************************/
void Xil_Out16(INTPTR Addr, u16 Value)
{
- u16 *LocalAddr = (u16 *)Addr;
+ volatile u16 *LocalAddr = (u16 *)Addr;
*LocalAddr = Value;
}
@@ -183,7 +183,7 @@ void Xil_Out16(INTPTR Addr, u16 Value)
******************************************************************************/
void Xil_Out32(INTPTR Addr, u32 Value)
{
- u32 *LocalAddr = (u32 *)Addr;
+ volatile u32 *LocalAddr = (u32 *)Addr;
*LocalAddr = Value;
}
@@ -204,7 +204,7 @@ void Xil_Out32(INTPTR Addr, u32 Value)
******************************************************************************/
void Xil_Out64(INTPTR Addr, u64 Value)
{
- u64 *LocalAddr = (u64 *)Addr;
+ volatile u64 *LocalAddr = (u64 *)Addr;
*LocalAddr = Value;
}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_io.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_io.h
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_io.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_io.h
index 1c89574bb..af5aa1cfa 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_io.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_io.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_macroback.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_macroback.h
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_macroback.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_macroback.h
index f5316efbf..ebafde87d 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_macroback.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_macroback.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2010 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_mmu.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_mmu.c
similarity index 87%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_mmu.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_mmu.c
index ceae6edfa..b16a77e4a 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_mmu.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_mmu.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -65,10 +65,15 @@
/************************** Constant Definitions *****************************/
+#define BLOCK_SIZE_2MB 0x200000U
+#define BLOCK_SIZE_1GB 0x40000000U
+#define ADDRESS_LIMIT_4GB 0x100000000UL
+
/************************** Variable Definitions *****************************/
extern INTPTR MMUTableL1;
extern INTPTR MMUTableL2;
+
/************************** Function Prototypes ******************************/
/*****************************************************************************
*
@@ -88,18 +93,22 @@ void Xil_SetTlbAttributes(INTPTR Addr, u64 attrib)
{
INTPTR *ptr;
INTPTR section;
+ u64 block_size;
/* if region is less than 4GB MMUTable level 2 need to be modified */
- if(Addr<0x100000000){
- section = Addr / 0x00200000U;
- ptr = &MMUTableL2 + section;
- *ptr = (Addr & (~0x001FFFFFU)) | attrib;
+ if(Addr < ADDRESS_LIMIT_4GB){
+ /* block size is 2MB for addressed < 4GB*/
+ block_size = BLOCK_SIZE_2MB;
+ section = Addr / block_size;
+ ptr = &MMUTableL2 + section;
}
/* if region is greater than 4GB MMUTable level 1 need to be modified */
else{
- section = Addr / 0x40000000U;
- ptr = &MMUTableL1 + section;
- *ptr = (Addr & (~0x3FFFFFFFU)) | attrib;
+ /* block size is 1GB for addressed > 4GB */
+ block_size = BLOCK_SIZE_1GB;
+ section = Addr / block_size;
+ ptr = &MMUTableL1 + section;
}
+ *ptr = (Addr & (~(block_size-1))) | attrib;
Xil_DCacheFlush();
mtcptlbi(ALLE3);
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_mmu.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_mmu.h
similarity index 77%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_mmu.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_mmu.h
index d74b3d930..8c3215fd7 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_mmu.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_mmu.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -66,6 +66,32 @@ extern "C" {
/************************** Constant Definitions *****************************/
+/* Memory type */
+#define NORM_NONCACHE 0x401UL /* Normal Non-cacheable*/
+#define STRONG_ORDERED 0x409UL /* Strongly ordered (Device-nGnRnE)*/
+#define DEVICE_MEMORY 0x40DUL /* Device memory (Device-nGnRE)*/
+#define RESERVED 0x0UL /* reserved memory*/
+
+/* Normal write-through cacheable inner shareable*/
+#define NORM_WT_CACHE 0x711UL
+
+/* Normal write back cacheable inner-shareable */
+#define NORM_WB_CACHE 0x705UL
+
+/*
+ * shareability attribute only applicable to
+ * normal cacheable memory
+ */
+#define INNER_SHAREABLE (0x3 << 8)
+#define OUTER_SHAREABLE (0x2 << 8)
+#define NON_SHAREABLE (~(0x3 << 8))
+
+/* Execution type */
+#define EXECUTE_NEVER ((0x1 << 53) | (0x1 << 54))
+
+/* Security type */
+#define NON_SECURE (0x1 << 5)
+
/************************** Variable Definitions *****************************/
/************************** Function Prototypes ******************************/
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_printf.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_printf.c
similarity index 80%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_printf.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_printf.c
index 39e13e82b..964dc14db 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_printf.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_printf.c
@@ -19,11 +19,11 @@ typedef struct params_s {
char8 pad_character;
s32 do_padding;
s32 left_flag;
+ s32 unsigned_flag;
} params_t;
static void padding( const s32 l_flag,const params_t *par);
static void outs(const charptr lp, params_t *par);
-static void outnum( const s32 n, const s32 base, params_t *par);
static s32 getnum( charptr* linep);
/*---------------------------------------------------*/
@@ -99,7 +99,7 @@ static void outnum( const s32 n, const s32 base, params_t *par)
}
/* Check if number is negative */
- if ((base == 10) && (n < 0L)) {
+ if ((par->unsigned_flag == 0) && (base == 10) && (n < 0L)) {
negative = 1;
num =(-(n));
}
@@ -135,6 +135,61 @@ static void outnum( const s32 n, const s32 base, params_t *par)
padding( par->left_flag, par);
}
+/*---------------------------------------------------*/
+/* */
+/* This routine moves a 64-bit number to the output */
+/* buffer as directed by the padding and positioning */
+/* flags. */
+/* */
+
+static void outnum1( const s64 n, const s32 base, params_t *par)
+{
+ charptr cp;
+ s32 negative;
+ s32 i;
+ char8 outbuf[64];
+ const char8 digits[] = "0123456789ABCDEF";
+ u64 num;
+ for(i = 0; i<64; i++) {
+ outbuf[i] = '0';
+ }
+
+ /* Check if number is negative */
+ if ((par->unsigned_flag == 0) && (base == 10) && (n < 0L)) {
+ negative = 1;
+ num =(-(n));
+ }
+ else{
+ num = (n);
+ negative = 0;
+ }
+
+ /* Build number (backwards) in outbuf */
+ i = 0;
+ do {
+ outbuf[i] = digits[(num % base)];
+ i++;
+ num /= base;
+ } while (num > 0);
+
+ if (negative != 0) {
+ outbuf[i] = '-';
+ i++;
+ }
+
+ outbuf[i] = 0;
+ i--;
+
+ /* Move the converted number to the buffer and */
+ /* add in the padding where needed. */
+ par->len = (s32)strlen(outbuf);
+ padding( !(par->left_flag), par);
+ while (&outbuf[i] >= outbuf) {
+ outbyte( outbuf[i] );
+ i--;
+}
+ padding( par->left_flag, par);
+}
/*---------------------------------------------------*/
/* */
/* This routine gets a number from the format */
@@ -206,6 +261,7 @@ void xil_printf( const char8 *ctrl1, ...)
/* initialize all the flags for this format. */
dot_flag = 0;
long_flag = 0;
+ par.unsigned_flag = 0;
par.left_flag = 0;
par.do_padding = 0;
par.pad_character = ' ';
@@ -264,17 +320,32 @@ void xil_printf( const char8 *ctrl1, ...)
Check = 0;
break;
+ case 'u':
+ par.unsigned_flag = 1;
+ /* fall through */
+ case 'i':
case 'd':
- if ((long_flag != 0) || (ch == 'D')) {
- outnum( va_arg(argp, s32), 10L, &par);
+ if (long_flag != 0){
+ outnum1((s64)va_arg(argp, s64), 10L, &par);
}
else {
outnum( va_arg(argp, s32), 10L, &par);
}
Check = 1;
break;
+ case 'p':
+ par.unsigned_flag = 1;
+ outnum1((s64)va_arg(argp, s64), 16L, &par);
+ Check = 1;
+ break;
case 'x':
- outnum((s32)va_arg(argp, s32), 16L, &par);
+ par.unsigned_flag = 1;
+ if (long_flag != 0) {
+ outnum1((s64)va_arg(argp, s64), 16L, &par);
+ }
+ else {
+ outnum((s32)va_arg(argp, s32), 16L, &par);
+ }
Check = 1;
break;
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_printf.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_printf.h
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_printf.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_printf.h
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testcache.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testcache.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testcache.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testcache.c
index 43732a4d1..a2c4b0bbf 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testcache.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testcache.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2009 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_testcache.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testcache.h
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_testcache.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testcache.h
index 0ec0ea87e..b3c416cd0 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_testcache.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testcache.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2009 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testio.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testio.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testio.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testio.c
index 4eaea4e55..a68d7652f 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testio.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testio.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2009 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testio.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testio.h
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testio.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testio.h
index 2fd4d5790..fba0c1060 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testio.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testio.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2009 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testmem.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testmem.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testmem.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testmem.c
index ef38d6d24..19a3b6608 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testmem.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testmem.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2009 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testmem.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testmem.h
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testmem.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testmem.h
index 1b67a5214..4cbfd878b 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xil_testmem.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_testmem.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2009 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_types.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_types.h
similarity index 90%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_types.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_types.h
index b9ef3c185..e8b78b7c6 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xil_types.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xil_types.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2010 - 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -164,6 +164,22 @@ typedef void (*XInterruptHandler) (void *InstancePtr);
*/
typedef void (*XExceptionHandler) (void *InstancePtr);
+/**
+ * UPPER_32_BITS - return bits 32-63 of a number
+ * @n: the number we're accessing
+ *
+ * A basic shift-right of a 64- or 32-bit quantity. Use this to suppress
+ * the "right shift count >= width of type" warning when that quantity is
+ * 32-bits.
+ */
+#define UPPER_32_BITS(n) ((u32)(((n) >> 16) >> 16))
+
+/**
+ * LOWER_32_BITS - return bits 0-31 of a number
+ * @n: the number we're accessing
+ */
+#define LOWER_32_BITS(n) ((u32)(n))
+
/*@}*/
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xparameters_ps.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xparameters_ps.h
similarity index 82%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xparameters_ps.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xparameters_ps.h
index d86e6fc54..601056206 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xparameters_ps.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xparameters_ps.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -138,6 +138,13 @@ extern "C" {
#define XPAR_XSMMU_FPD_INTR XPS_FPD_SMMU_INT_ID
#define XPAR_XUSBPS_0_INTR XPS_USB3_0_ENDPT_INT_ID
#define XPAR_XUSBPS_1_INTR XPS_USB3_1_ENDPT_INT_ID
+#define XPAR_XRTCPSU_ALARM_INTR XPS_RTC_ALARM_INT_ID
+#define XPAR_XRTCPSU_SECONDS_INTR XPS_RTC_SEC_INT_ID
+#define XPAR_XAPMPS_0_INTR XPS_APM0_INT_ID
+#define XPAR_XAPMPS_1_INTR XPS_APM1_INT_ID
+#define XPAR_XAPMPS_2_INTR XPS_APM2_INT_ID
+#define XPAR_XAPMPS_5_INTR XPS_APM5_INT_ID
+#define XPAR_XSYSMONPSU_INTR XPS_AMS_INT_ID
/* Canonical definitions for SCU GIC */
#define XPAR_SCUGIC_NUM_INSTANCES 1U
@@ -197,6 +204,8 @@ extern "C" {
#define XPS_UART1_INT_ID (22U + 32U)
#define XPS_CAN0_INT_ID (23U + 32U)
#define XPS_CAN1_INT_ID (24U + 32U)
+#define XPS_RTC_ALARM_INT_ID (26U + 32U)
+#define XPS_RTC_SEC_INT_ID (27U + 32U)
#define XPS_WDT_INT_ID (52U + 32U)
#define XPS_TTC0_0_INT_ID (36U + 32U)
#define XPS_TTC0_1_INT_ID (37U + 32U)
@@ -212,6 +221,7 @@ extern "C" {
#define XPS_TTC3_2_INT_ID (47U + 32U)
#define XPS_SDIO0_INT_ID (48U + 32U)
#define XPS_SDIO1_INT_ID (49U + 32U)
+#define XPS_AMS_INT_ID (56U + 32U)
#define XPS_GEM0_INT_ID (57U + 32U)
#define XPS_GEM0_WAKE_INT_ID (58U + 32U)
#define XPS_GEM1_INT_ID (59U + 32U)
@@ -243,13 +253,10 @@ extern "C" {
#define XPS_XMPU_FPD_INT_ID (134U + 32U)
#define XPS_FPD_CCI_INT_ID (154U + 32U)
#define XPS_FPD_SMMU_INT_ID (155U + 32U)
-
-/* Private Peripheral Interrupts (PPI) */
-/*#define XPS_GLOBAL_TMR_INT_ID 27 SCU Global Timer interrupt */
-/*#define XPS_FIQ_INT_ID 28 FIQ from FPGA fabric */
-/*#define XPS_SCU_TMR_INT_ID 29 SCU Private Timer interrupt */
-/*#define XPS_SCU_WDT_INT_ID 30 SCU Private WDT interrupt */
-/*#define XPS_IRQ_INT_ID 31 IRQ from FPGA fabric */
+#define XPS_APM0_INT_ID (123U + 32U)
+#define XPS_APM1_INT_ID (25U + 32U)
+#define XPS_APM2_INT_ID (25U + 32U)
+#define XPS_APM5_INT_ID (123U + 32U)
/* REDEFINES for TEST APP */
/* Definitions for UART */
@@ -279,6 +286,43 @@ extern "C" {
#define XPAR_PS7_SCUTIMER_0_INTR XPS_SCU_TMR_INT_ID
#define XPAR_PS7_XADC_0_INTR XPS_SYSMON_INT_ID
+#define XPAR_PSU_UART_0_INTR XPS_UART0_INT_ID
+#define XPAR_PSU_UART_1_INTR XPS_UART1_INT_ID
+#define XPAR_PSU_USB_0_INTR XPS_USB0_INT_ID
+#define XPAR_PSU_USB_1_INTR XPS_USB1_INT_ID
+#define XPAR_PSU_I2C_0_INTR XPS_I2C0_INT_ID
+#define XPAR_PSU_I2C_1_INTR XPS_I2C1_INT_ID
+#define XPAR_PSU_SPI_0_INTR XPS_SPI0_INT_ID
+#define XPAR_PSU_SPI_1_INTR XPS_SPI1_INT_ID
+#define XPAR_PSU_CAN_0_INTR XPS_CAN0_INT_ID
+#define XPAR_PSU_CAN_1_INTR XPS_CAN1_INT_ID
+#define XPAR_PSU_GPIO_0_INTR XPS_GPIO_INT_ID
+#define XPAR_PSU_ETHERNET_0_INTR XPS_GEM0_INT_ID
+#define XPAR_PSU_ETHERNET_0_WAKE_INTR XPS_GEM0_WAKE_INT_ID
+#define XPAR_PSU_ETHERNET_1_INTR XPS_GEM1_INT_ID
+#define XPAR_PSU_ETHERNET_1_WAKE_INTR XPS_GEM1_WAKE_INT_ID
+#define XPAR_PSU_ETHERNET_2_INTR XPS_GEM2_INT_ID
+#define XPAR_PSU_ETHERNET_2_WAKE_INTR XPS_GEM2_WAKE_INT_ID
+#define XPAR_PSU_ETHERNET_3_INTR XPS_GEM3_INT_ID
+#define XPAR_PSU_ETHERNET_3_WAKE_INTR XPS_GEM3_WAKE_INT_ID
+#define XPAR_PSU_QSPI_0_INTR XPS_QSPI_INT_ID
+#define XPAR_PSU_WDT_0_INTR XPS_WDT_INT_ID
+#define XPAR_PSU_SCUWDT_0_INTR XPS_SCU_WDT_INT_ID
+#define XPAR_PSU_SCUTIMER_0_INTR XPS_SCU_TMR_INT_ID
+#define XPAR_PSU_XADC_0_INTR XPS_SYSMON_INT_ID
+#define XPAR_PSU_TTC_0_INTR XPS_TTC0_0_INT_ID
+#define XPAR_PSU_TTC_1_INTR XPS_TTC0_1_INT_ID
+#define XPAR_PSU_TTC_2_INTR XPS_TTC0_2_INT_ID
+#define XPAR_PSU_TTC_3_INTR XPS_TTC1_0_INT_ID
+#define XPAR_PSU_TTC_4_INTR XPS_TTC1_1_INT_ID
+#define XPAR_PSU_TTC_5_INTR XPS_TTC1_2_INT_ID
+#define XPAR_PSU_TTC_6_INTR XPS_TTC2_0_INT_ID
+#define XPAR_PSU_TTC_7_INTR XPS_TTC2_1_INT_ID
+#define XPAR_PSU_TTC_8_INTR XPS_TTC2_2_INT_ID
+#define XPAR_PSU_TTC_9_INTR XPS_TTC3_0_INT_ID
+#define XPAR_PSU_TTC_10_INTR XPS_TTC3_1_INT_ID
+#define XPAR_PSU_TTC_11_INTR XPS_TTC3_2_INT_ID
+
#define XPAR_XADCPS_NUM_INSTANCES 1U
#define XPAR_XADCPS_0_DEVICE_ID 0U
#define XPAR_XADCPS_0_BASEADDR (0xF8007000U)
@@ -306,7 +350,6 @@ extern "C" {
#define XPAR_CPU_CORTEXA53_CORE_CLOCK_FREQ_HZ XPAR_CPU_CORTEXA53_1_CPU_CLK_FREQ_HZ
#endif
-#define XPAR_SCUTIMER_DEVICE_ID 0U
#define XPAR_SCUWDT_DEVICE_ID 0U
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xplatform_info.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xplatform_info.c
similarity index 81%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xplatform_info.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xplatform_info.c
index 1a55b2f8b..fea992e40 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xplatform_info.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xplatform_info.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -42,6 +42,8 @@
* Ver Who Date Changes
* ----- ---- -------- -------------------------------------------------------
* 5.00 pkp 12/15/14 Initial release
+* 5.04 pkp 01/12/16 Added platform information support for Cortex-A53 32bit
+* mode
*
*
******************************************************************************/
@@ -77,7 +79,7 @@
u32 XGetPlatform_Info()
{
u32 reg;
-#if defined (ARMR5) || (__aarch64__)
+#if defined (ARMR5) || (__aarch64__) || (ARMA53_32)
return XPLAT_ZYNQ_ULTRA_MP;
#elif (__microblaze__)
return XPLAT_MICROBLAZE;
@@ -99,11 +101,33 @@ u32 XGetPlatform_Info()
* @note None.
*
******************************************************************************/
-#if defined (ARMR5) || (__aarch64__)
+#if defined (ARMR5) || (__aarch64__) || (ARMA53_32)
u32 XGet_Zynq_UltraMp_Platform_info()
{
u32 reg;
reg = ((Xil_In32(XPAR_CSU_BASEADDR + XPAR_CSU_VER_OFFSET) >> 12U )& XPLAT_INFO_MASK);
return reg;
}
-#endif
\ No newline at end of file
+#endif
+
+/*****************************************************************************/
+/**
+*
+* This API is used to provide information about PS Silicon version
+*
+* @param None.
+*
+* @return The information about PS Silicon version.
+*
+* @note None.
+*
+******************************************************************************/
+#if defined (ARMR5) || (__aarch64__) || (ARMA53_32)
+u32 XGetPSVersion_Info()
+{
+ u32 reg;
+ reg = (Xil_In32(XPAR_CSU_BASEADDR + XPAR_CSU_VER_OFFSET)
+ & XPS_VERSION_INFO_MASK);
+ return reg;
+}
+#endif
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xplatform_info.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xplatform_info.h
similarity index 89%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xplatform_info.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xplatform_info.h
index d71a692c1..7028a83af 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xplatform_info.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xplatform_info.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -54,13 +54,19 @@ extern "C" {
#define XPAR_CSU_BASEADDR 0xFFCA0000U
#define XPAR_CSU_VER_OFFSET 0x00000044U
+#define XPLAT_ZYNQ_ULTRA_MP_SILICON 0x0
#define XPLAT_ZYNQ_ULTRA_MP 0x1
#define XPLAT_ZYNQ_ULTRA_MPVEL 0x2
#define XPLAT_ZYNQ_ULTRA_MPQEMU 0x3
#define XPLAT_ZYNQ 0x4
#define XPLAT_MICROBLAZE 0x5
+#define XPS_VERSION_1 0x0
+#define XPS_VERSION_2 0x1
+
#define XPLAT_INFO_MASK (0xF)
+#define XPS_VERSION_INFO_MASK (0xF)
+
/**************************** Type Definitions *******************************/
/***************** Macros (Inline Functions) Definitions *********************/
@@ -68,7 +74,11 @@ extern "C" {
u32 XGetPlatform_Info();
-#if defined (ARMR5) || (__aarch64__)
+#if defined (ARMR5) || (__aarch64__) || (ARMA53_32)
+u32 XGetPSVersion_Info();
+#endif
+
+#if defined (ARMR5) || (__aarch64__) || (ARMA53_32)
u32 XGet_Zynq_UltraMp_Platform_info();
#endif
/************************** Function Prototypes ******************************/
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xpseudo_asm.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xpseudo_asm.h
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xpseudo_asm.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xpseudo_asm.h
index e5e02751d..29862f251 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xpseudo_asm.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xpseudo_asm.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xpseudo_asm_gcc.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xpseudo_asm_gcc.h
similarity index 97%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xpseudo_asm_gcc.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xpseudo_asm_gcc.h
index 5f0e9c25c..58dd8abcc 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xpseudo_asm_gcc.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xpseudo_asm_gcc.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -110,7 +110,7 @@ extern "C" {
/* Memory Operations */
-#define ldr(adr) ({u32 rval; \
+#define ldr(adr) ({u64 rval; \
__asm__ __volatile__(\
"ldr %0,[%1]"\
: "=r" (rval) : "r" (adr)\
@@ -151,7 +151,7 @@ extern "C" {
#define mtcptlbi(reg) asm("tlbi " #reg)
#define mtcpat(reg,val) asm("at " #reg ",%0" : : "r" (val))
/* CP15 operations */
-#define mfcp(reg) ({u32 rval;\
+#define mfcp(reg) ({u64 rval;\
asm("mrs %0, " #reg : "=r" (rval));\
rval;\
})
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xreg_cortexa53.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xreg_cortexa53.h
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xreg_cortexa53.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xreg_cortexa53.h
index dbc0134e6..ce9af4c9a 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xreg_cortexa53.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xreg_cortexa53.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xstatus.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xstatus.h
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xstatus.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xstatus.h
index 7db874c88..ba5f96b20 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xstatus.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xstatus.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xtime_l.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xtime_l.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xtime_l.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xtime_l.c
index f0719da51..162b3ff74 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xtime_l.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xtime_l.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xtime_l.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xtime_l.h
similarity index 87%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xtime_l.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xtime_l.h
index fd75790a4..e03cbb50d 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_0/src/xtime_l.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/standalone_v5_4/src/xtime_l.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2014 - 2015 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -65,15 +65,14 @@ typedef u64 XTime;
/************************** Constant Definitions *****************************/
-/* Global Timer is always clocked at half of the CPU frequency */
-#define COUNTS_PER_SECOND 0x007A1200U
+#define COUNTS_PER_SECOND XPAR_CPU_CORTEXA53_0_TIMESTAMP_CLK_FREQ
-#define XIOU_SCNTRS_BASEADDR 0XFF260000U
+#define XIOU_SCNTRS_BASEADDR 0xFF260000U
#define XIOU_SCNTRS_CNT_CNTRL_REG_OFFSET 0x00000000U
-#define XIOU_SCNTRS_FREQ_REG_OFFSET 0x00000020U
-#define XIOU_SCNTRS_FREQ 0x02FAF080U /* 50 MHz */
-#define XIOU_SCNTRS_CNT_CNTRL_REG_EN 0X00000001U
-
+#define XIOU_SCNTRS_FREQ_REG_OFFSET 0x00000020U
+#define XIOU_SCNTRS_FREQ XPAR_CPU_CORTEXA53_0_TIMESTAMP_CLK_FREQ
+#define XIOU_SCNTRS_CNT_CNTRL_REG_EN 0x00000001U
+#define XIOU_SCNTRS_CNT_CNTRL_REG_EN_MASK 0x00000001U
/************************** Variable Definitions *****************************/
/************************** Function Prototypes ******************************/
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/Makefile
similarity index 79%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/Makefile
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/Makefile
index d30648814..b832910b8 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/Makefile
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/Makefile
@@ -19,21 +19,21 @@ INCLUDEFILES:=*.h
OBJECTS = $(addsuffix .o, $(basename $(wildcard *.c)))
-libs: banner xusbps_libs clean
+libs: banner xsysmonpsu_libs clean
%.o: %.c
${COMPILER} $(CC_FLAGS) $(ECC_FLAGS) $(INCLUDES) -o $@ $<
banner:
- echo "Compiling usbpsu"
+ echo "Compiling sysmonpsu"
-xusbps_libs: ${OBJECTS}
+xsysmonpsu_libs: ${OBJECTS}
$(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OBJECTS}
.PHONY: include
-include: xusbps_includes
+include: xsysmonpsu_includes
-xusbps_includes:
+xsysmonpsu_includes:
${CP} ${INCLUDEFILES} ${INCLUDEDIR}
clean:
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu.c
new file mode 100644
index 000000000..a30a257fb
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu.c
@@ -0,0 +1,1749 @@
+/******************************************************************************
+*
+* Copyright (C) 2016 Xilinx, Inc. All rights reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+* (a) running on a Xilinx device, or
+* (b) that interact with a Xilinx device through a bus or interconnect.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*
+* Except as contained in this notice, the name of the Xilinx shall not be used
+* in advertising or otherwise to promote the sale, use or other dealings in
+* this Software without prior written authorization from Xilinx.
+*
+******************************************************************************/
+/*****************************************************************************/
+/**
+*
+* @file xsysmonpsu.c
+*
+* Functions in this file are the minimum required functions for the XSysMonPsu
+* driver. See xsysmonpsu.h for a detailed description of the driver.
+*
+* @note None.
+*
+*
+*
+* MODIFICATION HISTORY:
+*
+* Ver Who Date Changes
+* ----- ----- -------- -----------------------------------------------
+* 1.0 kvn 12/15/15 First release.
+* 02/15/16 Corrected Assert function call in
+* XSysMonPsu_GetMonitorStatus API.
+* 03/03/16 Added Temperature remote channel for Setsingle
+* channel API. Also corrected external mux channel
+* numbers.
+*
+*
+*
+******************************************************************************/
+
+/***************************** Include Files *********************************/
+
+#include "xsysmonpsu.h"
+
+/************************** Constant Definitions ****************************/
+
+/**************************** Type Definitions ******************************/
+
+/***************** Macros (Inline Functions) Definitions ********************/
+
+/************************** Function Prototypes *****************************/
+
+static void XSysMonPsu_StubHandler(void *CallBackRef);
+
+/************************** Variable Definitions ****************************/
+
+/*****************************************************************************/
+/**
+*
+* This function initializes XSysMonPsu device/instance. This function
+* must be called prior to using the System Monitor device.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param ConfigPtr points to the XSysMonPsu device configuration structure.
+* @param EffectiveAddr is the device base address in the virtual memory
+* address space. If the address translation is not used then the
+* physical address is passed.
+* Unexpected errors may occur if the address mapping is changed
+* after this function is invoked.
+*
+* @return
+* - XST_SUCCESS if successful.
+*
+* @note The user needs to first call the XSysMonPsu_LookupConfig() API
+* which returns the Configuration structure pointer which is
+* passed as a parameter to the XSysMonPsu_CfgInitialize() API.
+*
+******************************************************************************/
+s32 XSysMonPsu_CfgInitialize(XSysMonPsu *InstancePtr, XSysMonPsu_Config *ConfigPtr,
+ u32 EffectiveAddr)
+{
+ u32 PsSysmonControlStatus;
+ u32 PlSysmonControlStatus;
+
+ /* Assert the input arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(ConfigPtr != NULL);
+
+ /* Set the values read from the device config and the base address. */
+ InstancePtr->Config.DeviceId = ConfigPtr->DeviceId;
+ InstancePtr->Config.BaseAddress = EffectiveAddr;
+
+
+ /* Set all handlers to stub values, let user configure this data later. */
+ InstancePtr->Handler = XSysMonPsu_StubHandler;
+
+ /* Reset the device such that it is in a known state. */
+ XSysMonPsu_Reset(InstancePtr);
+
+ PsSysmonControlStatus = XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_PS_SYSMON_CSTS_OFFSET);
+
+ /* Check if the PS Sysmon is in Idle / ready state or not */
+ while(PsSysmonControlStatus != XSYSMONPSU_PS_SYSMON_READY) {
+ PsSysmonControlStatus = XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_PS_SYSMON_CSTS_OFFSET);
+ }
+
+ PlSysmonControlStatus = XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_PL_SYSMON_CSTS_OFFSET);
+
+ /* Check if the PL Sysmon is accessible to PS Sysmon or not */
+ while((PlSysmonControlStatus & XSYSMONPSU_PL_SYSMON_CSTS_ACESBLE_MASK)
+ != XSYSMONPSU_PL_SYSMON_CSTS_ACESBLE_MASK) {
+ PlSysmonControlStatus = XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_PL_SYSMON_CSTS_OFFSET);
+ }
+
+ /* Indicate the instance is now ready to use, initialized without error */
+ InstancePtr->IsReady = XIL_COMPONENT_IS_READY;
+
+ return XST_SUCCESS;
+}
+
+/****************************************************************************/
+/**
+*
+* This function is a stub handler that is the default handler such that if the
+* application has not set the handler when interrupts are enabled, this
+* function will be called.
+*
+* @param CallBackRef is unused by this function.
+* @param Event is unused by this function.
+*
+* @return None.
+*
+* @note None.
+*
+*****************************************************************************/
+static void XSysMonPsu_StubHandler(void *CallBackRef)
+{
+ (void *) CallBackRef;
+
+ /* Assert occurs always since this is a stub and should never be called */
+ Xil_AssertVoidAlways();
+}
+
+/*****************************************************************************/
+/**
+*
+* This function resets the SystemMonitor
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+*
+* @return None.
+*
+* @note Upon reset, all Maximum and Minimum status registers will be
+* reset to their default values. Currently running and any averaging
+* will restart. Refer to the device data sheet for the device status and
+* register values after the reset.
+*
+******************************************************************************/
+void XSysMonPsu_Reset(XSysMonPsu *InstancePtr)
+{
+ /* Assert the arguments. */
+ Xil_AssertVoid(InstancePtr != NULL);
+
+ /* RESET the PS SYSMON */
+ XSysmonPsu_WriteReg(InstancePtr->Config.BaseAddress + XPS_BA_OFFSET +
+ XSYSMONPSU_VP_VN_OFFSET, XSYSMONPSU_VP_VN_MASK);
+
+ /* RESET the PL SYSMON */
+ XSysmonPsu_WriteReg(InstancePtr->Config.BaseAddress + XPL_BA_OFFSET +
+ XSYSMONPSU_VP_VN_OFFSET, XSYSMONPSU_VP_VN_MASK);
+
+}
+
+/****************************************************************************/
+/**
+*
+* This function reads the contents of the Status Register.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return A 32-bit value representing the contents of the Status Register.
+* Use the XSYSMONPSU_MON_STS_* constants defined in xsysmonpsu_hw.h to
+* interpret the returned value.
+*
+* @note None.
+*****************************************************************************/
+u32 XSysMonPsu_GetStatus(XSysMonPsu *InstancePtr, u32 SysmonBlk)
+{
+ u32 Status;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /* Read the Sysmon Status Register and return the value. */
+ Status = XSysmonPsu_ReadReg(EffectiveBaseAddress + XSYSMONPSU_MON_STS_OFFSET);
+
+ return Status;
+}
+
+/****************************************************************************/
+/**
+*
+* This function starts the ADC conversion in the Single Channel event driven
+* sampling mode. The EOC bit in Status Register will be set once the conversion
+* is finished. Refer to the device specification for more details.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+*
+* @return None.
+*
+* @note The default state of the CONVST bit is a logic 0. The conversion
+* is started when the CONVST bit is set to 1 from 0.
+* This bit is self-clearing so that the next conversion
+* can be started by setting this bit.
+*
+*****************************************************************************/
+void XSysMonPsu_StartAdcConversion(XSysMonPsu *InstancePtr)
+{
+ u32 ControlStatus;
+
+ /* Assert the arguments. */
+ Xil_AssertVoid(InstancePtr != NULL);
+ Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ /*
+ * Start the conversion by setting the CONVST bit to 1 only if auto-convst
+ * bit is not enabled. This convst bit is self-clearing.
+ */
+ ControlStatus = XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_PS_SYSMON_CSTS_OFFSET);
+
+ if ((ControlStatus & XSYSMONPSU_PS_SYSMON_CSTS_AUTO_CONVST_MASK )
+ != XSYSMONPSU_PS_SYSMON_CSTS_AUTO_CONVST_MASK) {
+ XSysmonPsu_WriteReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_PS_SYSMON_CSTS_OFFSET,
+ (ControlStatus | (u32)XSYSMONPSU_PS_SYSMON_CSTS_CONVST_MASK));
+ }
+}
+
+/****************************************************************************/
+/**
+*
+* Get the ADC converted data for the specified channel.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param Channel is the channel number. Use the XSM_CH_* defined in
+* the file xsysmonpsu.h. The valid channels for PS / PL SysMon are 0 - 6,
+* 8 - 10 and 13 - 37. For AMS, 38 - 53 channels are valid.
+* @param Block is the value that tells whether it is for PS Sysmon block
+* or PL Sysmon block or the AMS controller register region.
+*
+* @return A 16-bit value representing the ADC converted data for the
+* specified channel. The System Monitor device guarantees
+* a 10 bit resolution for the ADC converted data and data is the
+* 10 MSB bits of the 16 data read from the device.
+*
+* @note Please make sure that the proper channel number is passed.
+*
+*****************************************************************************/
+u16 XSysMonPsu_GetAdcData(XSysMonPsu *InstancePtr, u8 Channel, u32 Block)
+{
+ u16 AdcData;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((Channel <= XSM_CH_SUPPLY3) ||
+ ((Channel >= XSM_CH_SUPPLY_CALIB) &&
+ (Channel <= XSM_CH_GAINERR_CALIB)) ||
+ ((Channel >= XSM_CH_SUPPLY4) &&
+ (Channel <= XSM_CH_RESERVE1)));
+ Xil_AssertNonvoid((Block == XSYSMON_PS)||(Block == XSYSMON_PL)
+ ||(Block == XSYSMON_AMS));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ Block);
+
+ /*
+ * Read the selected ADC converted data for the specified channel
+ * and return the value.
+ */
+ if (Channel <= XSM_CH_AUX_MAX) {
+ AdcData = (u16) (XSysmonPsu_ReadReg(EffectiveBaseAddress + ((u32)Channel << 2U)));
+ } else if ((Channel >= XSM_CH_SUPPLY7) && (Channel <= XSM_CH_TEMP_REMTE)){
+ AdcData = (u16) (XSysmonPsu_ReadReg(EffectiveBaseAddress + XSM_ADC_CH_OFFSET +
+ (((u32)Channel - XSM_CH_SUPPLY7) << 2U)));
+ } else {
+ AdcData = (u16) (XSysmonPsu_ReadReg(EffectiveBaseAddress + XSM_AMS_CH_OFFSET +
+ (((u32)Channel - XSM_CH_VCC_PSLL0) << 2U)));
+ }
+
+ return AdcData;
+}
+
+/****************************************************************************/
+/**
+*
+* This function gets the calibration coefficient data for the specified
+* parameter.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param CoeffType specifies the calibration coefficient
+* to be read. Use XSM_CALIB_* constants defined in xsysmonpsu.h to
+* specify the calibration coefficient to be read.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return A 16-bit value representing the calibration coefficient.
+* The System Monitor device guarantees a 10 bit resolution for
+* the ADC converted data and data is the 10 MSB bits of the 16
+* data read from the device.
+*
+* @note None.
+*
+*****************************************************************************/
+u16 XSysMonPsu_GetCalibCoefficient(XSysMonPsu *InstancePtr, u8 CoeffType,
+ u32 SysmonBlk)
+{
+ u16 CalibData;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid(CoeffType <= XSM_CALIB_GAIN_ERROR_COEFF);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /* Read the selected calibration coefficient. */
+ CalibData = (u16) XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_CAL_SUP_OFF_OFFSET + ((u32)CoeffType << 2U));
+
+ return CalibData;
+}
+
+/****************************************************************************/
+/**
+*
+* This function reads the Minimum/Maximum measurement for one of the
+* XSM_MIN_* or XSM_MAX_* constants defined in xsysmonpsu.h
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param MeasurementType specifies the parameter for which the
+* Minimum/Maximum measurement has to be read.
+* Use XSM_MAX_* and XSM_MIN_* constants defined in xsysmonpsu.h to
+* specify the data to be read.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return A 16-bit value representing the maximum/minimum measurement for
+* specified parameter.
+* The System Monitor device guarantees a 10 bit resolution for
+* the ADC converted data and data is the 10 MSB bits of 16 bit
+* data read from the device.
+*
+*****************************************************************************/
+u16 XSysMonPsu_GetMinMaxMeasurement(XSysMonPsu *InstancePtr, u8 MeasurementType,
+ u32 SysmonBlk)
+{
+ u16 MinMaxData;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((MeasurementType <= XSM_MAX_SUPPLY6) ||
+ ((MeasurementType >= XSM_MIN_SUPPLY4) &&
+ (MeasurementType <= XSM_MIN_SUPPLY6)) ||
+ ((MeasurementType >= XSM_MAX_SUPPLY7) &&
+ (MeasurementType <= XSM_MAX_TEMP_REMOTE)) ||
+ ((MeasurementType >= XSM_MIN_SUPPLY7) &&
+ (MeasurementType <= XSM_MIN_TEMP_REMOTE)));
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /* Read and return the specified Minimum/Maximum measurement. */
+ MinMaxData = (u16) (XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSM_MIN_MAX_CH_OFFSET + ((u32)MeasurementType << 2U)));
+
+ return MinMaxData;
+}
+
+/****************************************************************************/
+/**
+*
+* This function sets the number of samples of averaging that is to be done for
+* all the channels in both the single channel mode and sequence mode of
+* operations.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param Average is the number of samples of averaging programmed to the
+* Configuration Register 0. Use the XSM_AVG_* definitions defined
+* in xsysmonpsu.h file :
+* - XSM_AVG_0_SAMPLES for no averaging
+* - XSM_AVG_16_SAMPLES for 16 samples of averaging
+* - XSM_AVG_64_SAMPLES for 64 samples of averaging
+* - XSM_AVG_256_SAMPLES for 256 samples of averaging
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return None.
+*
+* @note None.
+*
+*****************************************************************************/
+void XSysMonPsu_SetAvg(XSysMonPsu *InstancePtr, u8 Average, u32 SysmonBlk)
+{
+ u32 RegValue;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertVoid(InstancePtr != NULL);
+ Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertVoid(Average <= XSM_AVG_256_SAMPLES);
+ Xil_AssertVoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /* Write the averaging value into the Configuration Register 0. */
+ RegValue = XSysmonPsu_ReadReg(EffectiveBaseAddress + XSYSMONPSU_CFG_REG0_OFFSET)
+ & (u32)(~XSYSMONPSU_CFG_REG0_AVRGNG_MASK);
+ RegValue |= (((u32) Average << XSYSMONPSU_CFG_REG0_AVRGNG_SHIFT));
+ XSysmonPsu_WriteReg(EffectiveBaseAddress + XSYSMONPSU_CFG_REG0_OFFSET,
+ RegValue);
+}
+
+/****************************************************************************/
+/**
+*
+* This function returns the number of samples of averaging configured for all
+* the channels in the Configuration Register 0.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return The averaging read from the Configuration Register 0 is
+* returned. Use the XSM_AVG_* bit definitions defined in xsysmonpsu.h
+* file to interpret the returned value :
+* - XSM_AVG_0_SAMPLES means no averaging
+* - XSM_AVG_16_SAMPLES means 16 samples of averaging
+* - XSM_AVG_64_SAMPLES means 64 samples of averaging
+* - XSM_AVG_256_SAMPLES means 256 samples of averaging
+*
+* @note None.
+*
+*****************************************************************************/
+u8 XSysMonPsu_GetAvg(XSysMonPsu *InstancePtr, u32 SysmonBlk)
+{
+ u32 Average;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /* Read the averaging value from the Configuration Register 0. */
+ Average = XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_CFG_REG0_OFFSET) & XSYSMONPSU_CFG_REG0_AVRGNG_MASK;
+
+ return (u8)(Average >> XSYSMONPSU_CFG_REG0_AVRGNG_SHIFT);
+}
+
+/****************************************************************************/
+/**
+*
+* The function sets the given parameters in the Configuration Register 0 in
+* the single channel mode.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param Channel is the channel number for conversion. The valid
+* channels are 0 - 6, 8 - 10, 13 - 37.
+* @param IncreaseAcqCycles is a boolean parameter which specifies whether
+* the Acquisition time for the external channels has to be
+* increased to 10 ADCCLK cycles (specify TRUE) or remain at the
+* default 4 ADCCLK cycles (specify FALSE). This parameter is
+* only valid for the external channels.
+* @param IsEventMode is a boolean parameter that specifies continuous
+* sampling (specify FALSE) or event driven sampling mode (specify
+* TRUE) for the given channel.
+* @param IsDifferentialMode is a boolean parameter which specifies
+* unipolar(specify FALSE) or differential mode (specify TRUE) for
+* the analog inputs. The input mode is only valid for the
+* external channels.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return
+* - XST_SUCCESS if the given values were written successfully to
+* the Configuration Register 0.
+* - XST_FAILURE if the channel sequencer is enabled or the input
+* parameters are not valid for the selected channel.
+*
+* @note
+* - The number of samples for the averaging for all the channels
+* is set by using the function XSysMonPsu_SetAvg.
+* - The calibration of the device is done by doing a ADC
+* conversion on the calibration channel(channel 8). The input
+* parameters IncreaseAcqCycles, IsDifferentialMode and
+* IsEventMode are not valid for this channel.
+*
+*****************************************************************************/
+s32 XSysMonPsu_SetSingleChParams(XSysMonPsu *InstancePtr, u8 Channel,
+ u32 IncreaseAcqCycles, u32 IsEventMode,
+ u32 IsDifferentialMode, u32 SysmonBlk)
+{
+ u32 RegValue;
+ u32 EffectiveBaseAddress;
+ s32 Status;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((Channel <= XSM_CH_SUPPLY3) ||
+ ((Channel >= XSM_CH_SUPPLY_CALIB) &&
+ (Channel <= XSM_CH_GAINERR_CALIB)) ||
+ ((Channel >= XSM_CH_SUPPLY4) &&
+ (Channel <= XSM_CH_TEMP_REMTE)));
+ Xil_AssertNonvoid((IncreaseAcqCycles == TRUE) ||
+ (IncreaseAcqCycles == FALSE));
+ Xil_AssertNonvoid((IsEventMode == TRUE) || (IsEventMode == FALSE));
+ Xil_AssertNonvoid((IsDifferentialMode == TRUE) ||
+ (IsDifferentialMode == FALSE));
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /* Check if the device is in single channel mode else return failure */
+ if ((XSysMonPsu_GetSequencerMode(InstancePtr, SysmonBlk)
+ != XSM_SEQ_MODE_SINGCHAN)) {
+ Status = (s32)XST_FAILURE;
+ goto End;
+ }
+
+ /* Read the Configuration Register 0 and extract out Averaging value. */
+ RegValue = XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_CFG_REG0_OFFSET) & XSYSMONPSU_CFG_REG0_AVRGNG_MASK;
+
+ /*
+ * Select the number of acquisition cycles. The acquisition cycles is
+ * only valid for the external channels.
+ */
+ if (IncreaseAcqCycles == TRUE) {
+ if (((Channel >= XSM_CH_AUX_MIN) && (Channel <= XSM_CH_AUX_MAX))
+ || (Channel == XSM_CH_VPVN)) {
+ RegValue |= XSYSMONPSU_CFG_REG0_ACQ_MASK;
+ } else {
+ Status = (s32)XST_FAILURE;
+ goto End;
+ }
+ }
+
+ /*
+ * Select the input mode. The input mode is only valid for the
+ * external channels.
+ */
+ if (IsDifferentialMode == TRUE) {
+
+ if (((Channel >= XSM_CH_AUX_MIN) && (Channel <= XSM_CH_AUX_MAX))
+ || (Channel == XSM_CH_VPVN)) {
+ RegValue |= XSYSMONPSU_CFG_REG0_BU_MASK;
+ } else {
+ Status = (s32)XST_FAILURE;
+ goto End;
+ }
+ }
+
+ /* Select the ADC mode. */
+ if (IsEventMode == TRUE) {
+ RegValue |= XSYSMONPSU_CFG_REG0_EC_MASK;
+ }
+
+ /* Write the given values into the Configuration Register 0. */
+ RegValue |= ((u32)Channel & XSYSMONPSU_CFG_REG0_MUX_CH_MASK);
+ XSysmonPsu_WriteReg(EffectiveBaseAddress + XSYSMONPSU_CFG_REG0_OFFSET,
+ RegValue);
+
+ Status = (s32)XST_SUCCESS;
+
+End:
+ return Status;
+}
+
+/****************************************************************************/
+/**
+*
+* This function enables the alarm outputs for the specified alarms in the
+* Configuration Registers 1:
+*
+* - OT for Over Temperature (XSYSMONPSU_CFR_REG1_ALRM_OT_MASK)
+* - ALM0 for On board Temperature (XSYSMONPSU_CFR_REG1_ALRM_TEMP_MASK)
+* - ALM1 for SUPPLY1 (XSYSMONPSU_CFR_REG1_ALRM_SUPPLY1_MASK)
+* - ALM2 for SUPPLY2 (XSYSMONPSU_CFR_REG1_ALRM_SUPPLY2_MASK)
+* - ALM3 for SUPPLY3 (XSYSMONPSU_CFR_REG1_ALRM_SUPPLY3_MASK)
+* - ALM4 for SUPPLY4 (XSYSMONPSU_CFR_REG1_ALRM__SUPPLY4_MASK)
+* - ALM5 for SUPPLY5 (XSYSMONPSU_CFR_REG1_ALRM_SUPPLY5_MASK)
+* - ALM6 for SUPPLY6 (XSYSMONPSU_CFR_REG1_ALRM_SUPPLY6_MASK)
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param AlmEnableMask is the bit-mask of the alarm outputs to be enabled
+* in the Configuration Register 1.
+* Bit positions of 1 will be enabled. Bit positions of 0 will be
+* disabled. This mask is formed by OR'ing XSYSMONPSU_CFR_REG1_ALRM_*_MASK
+* masks defined in xsysmonpsu.h.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return None.
+*
+* @note The implementation of the alarm enables in the Configuration
+* register 1 is such that the alarms for bit positions of 0 will
+* be enabled and alarms for bit positions of 1 will be disabled.
+* The alarm outputs specified by the AlmEnableMask are negated
+* before writing to the Configuration Register 1 because it
+* was Disable register bits.
+*
+*****************************************************************************/
+void XSysMonPsu_SetAlarmEnables(XSysMonPsu *InstancePtr, u32 AlmEnableMask,
+ u32 SysmonBlk)
+{
+ u32 RegValue;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertVoid(InstancePtr != NULL);
+ Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertVoid(AlmEnableMask <= XSYSMONPSU_CFG_REG1_ALRM_ALL_MASK);
+ Xil_AssertVoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ RegValue = XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_CFG_REG1_OFFSET);
+ RegValue &= (u32)(~XSYSMONPSU_CFG_REG1_ALRM_ALL_MASK);
+ RegValue |= (~AlmEnableMask & (u32)XSYSMONPSU_CFG_REG1_ALRM_ALL_MASK);
+
+ /*
+ * Enable/disables the alarm enables for the specified alarm bits in the
+ * Configuration Register 1.
+ */
+ XSysmonPsu_WriteReg(EffectiveBaseAddress + XSYSMONPSU_CFG_REG1_OFFSET,
+ RegValue);
+}
+
+/****************************************************************************/
+/**
+*
+* This function gets the status of the alarm output enables in the
+* Configuration Register 1.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return This is the bit-mask of the enabled alarm outputs in the
+* Configuration Register 1. Use the masks XSYSMONPSU_CFG_REG1_ALRM_*_MASK
+* masks defined in xsysmonpsu.h to interpret the returned value.
+*
+* Bit positions of 1 indicate that the alarm output is enabled.
+* Bit positions of 0 indicate that the alarm output is disabled.
+*
+*
+* @note The implementation of the alarm enables in the Configuration
+* register 1 is such that alarms for the bit positions of 1 will
+* be disabled and alarms for bit positions of 0 will be enabled.
+* The enabled alarm outputs returned by this function is the
+* negated value of the the data read from the Configuration
+* Register 1.
+*
+*****************************************************************************/
+u32 XSysMonPsu_GetAlarmEnables(XSysMonPsu *InstancePtr, u32 SysmonBlk)
+{
+ u32 RegValue;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /*
+ * Read the status of alarm output enables from the Configuration
+ * Register 1.
+ */
+ RegValue = XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_CFG_REG1_OFFSET) & XSYSMONPSU_CFG_REG1_ALRM_ALL_MASK;
+ RegValue = (~RegValue & XSYSMONPSU_CFG_REG1_ALRM_ALL_MASK);
+
+ return RegValue;
+}
+
+/****************************************************************************/
+/**
+*
+* This function sets the specified Channel Sequencer Mode in the Configuration
+* Register 1 :
+* - Default safe mode (XSM_SEQ_MODE_SAFE)
+* - One pass through sequence (XSM_SEQ_MODE_ONEPASS)
+* - Continuous channel sequencing (XSM_SEQ_MODE_CONTINPASS)
+* - Single Channel/Sequencer off (XSM_SEQ_MODE_SINGCHAN)
+* - Olympus sampling mode (XSM_SEQ_MODE_OYLMPUS)
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param SequencerMode is the sequencer mode to be set.
+* Use XSM_SEQ_MODE_* bits defined in xsysmonpsu.h.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return None.
+*
+* @note Only one of the modes can be enabled at a time.
+*
+*****************************************************************************/
+void XSysMonPsu_SetSequencerMode(XSysMonPsu *InstancePtr, u8 SequencerMode,
+ u32 SysmonBlk)
+{
+ u32 RegValue;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertVoid(InstancePtr != NULL);
+ Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertVoid((SequencerMode <= XSM_SEQ_MODE_SINGCHAN) ||
+ (SequencerMode == XSM_SEQ_MODE_OYLMPUS));
+ Xil_AssertVoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /* Set the specified sequencer mode in the Configuration Register 1. */
+ RegValue = XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_CFG_REG1_OFFSET);
+ RegValue &= (u32)(~ XSYSMONPSU_CFG_REG1_SEQ_MDE_MASK);
+ RegValue |= (((u32)SequencerMode << XSYSMONPSU_CFG_REG1_SEQ_MDE_SHIFT) &
+ XSYSMONPSU_CFG_REG1_SEQ_MDE_MASK);
+ XSysmonPsu_WriteReg(EffectiveBaseAddress +
+ XSYSMONPSU_CFG_REG1_OFFSET, RegValue);
+}
+
+/****************************************************************************/
+/**
+*
+* This function gets the channel sequencer mode from the Configuration
+* Register 1.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return The channel sequencer mode :
+* - XSM_SEQ_MODE_SAFE : Default safe mode
+* - XSM_SEQ_MODE_ONEPASS : One pass through sequence
+* - XSM_SEQ_MODE_CONTINPASS : Continuous channel sequencing
+* - XSM_SEQ_MODE_SINGCHAN : Single channel/Sequencer off
+* - XSM_SEQ_MODE_OLYMPUS : Olympus sampling mode
+*
+* @note None.
+*
+*****************************************************************************/
+u8 XSysMonPsu_GetSequencerMode(XSysMonPsu *InstancePtr, u32 SysmonBlk)
+{
+ u8 SequencerMode;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /* Read the channel sequencer mode from the Configuration Register 1. */
+ SequencerMode = ((u8) ((XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_CFG_REG1_OFFSET) & XSYSMONPSU_CFG_REG1_SEQ_MDE_MASK) >>
+ XSYSMONPSU_CFG_REG1_SEQ_MDE_SHIFT));
+
+ return SequencerMode;
+}
+
+/****************************************************************************/
+/**
+*
+* The function enables the Event mode or Continuous mode in the sequencer mode.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param IsEventMode is a boolean parameter that specifies continuous
+* sampling (specify FALSE) or event driven sampling mode (specify
+* TRUE) for the channel.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return None.
+*
+* @note None.
+*
+*****************************************************************************/
+void XSysMonPsu_SetSequencerEvent(XSysMonPsu *InstancePtr, u32 IsEventMode,
+ u32 SysmonBlk)
+{
+ u32 RegValue;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertVoid(InstancePtr != NULL);
+ Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertVoid((IsEventMode == TRUE) || (IsEventMode == FALSE));
+ Xil_AssertVoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /* Read the Configuration Register 0. */
+ RegValue = XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_CFG_REG0_OFFSET);
+
+ /* Set the ADC mode. */
+ if (IsEventMode == TRUE) {
+ RegValue |= XSYSMONPSU_CFG_REG0_EC_MASK;
+ } else {
+ RegValue &= (u32)(~XSYSMONPSU_CFG_REG0_EC_MASK);
+ }
+
+ XSysmonPsu_WriteReg(EffectiveBaseAddress + XSYSMONPSU_CFG_REG0_OFFSET,
+ RegValue);
+}
+
+/****************************************************************************/
+/**
+*
+* The function returns the mode of the sequencer.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return Returns the Sequencer mode. XSYSMONPSU_EVENT_MODE for Event mode
+* and XSYSMONPSU_CONTINUOUS_MODE for continuous mode.
+*
+* @note None.
+*
+*****************************************************************************/
+s32 XSysMonPsu_GetSequencerEvent(XSysMonPsu *InstancePtr, u32 SysmonBlk)
+{
+ s32 Mode;
+ u32 RegValue;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /* Read the Configuration Register 0. */
+ RegValue = XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_CFG_REG0_OFFSET);
+
+ RegValue &= XSYSMONPSU_CFG_REG0_EC_MASK;
+
+ if (RegValue == XSYSMONPSU_CFG_REG0_EC_MASK) {
+ Mode = XSYSMONPSU_EVENT_MODE;
+ } else {
+ Mode = XSYSMONPSU_CONTINUOUS_MODE;
+ }
+
+ return Mode;
+}
+
+/****************************************************************************/
+/**
+*
+* The function enables the external mux and connects a channel to the mux.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param Channel is the channel number used to connect to the external
+* Mux. The valid channels are 0 to 5 and 16 to 31.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return
+* - XST_SUCCESS if the given values were written successfully to
+* the Configuration Register 0.
+* - XST_FAILURE if the channel sequencer is enabled or the input
+* parameters are not valid for the selected channel.
+*
+* @note None.
+*
+*****************************************************************************/
+void XSysMonPsu_SetExtenalMux(XSysMonPsu *InstancePtr, u8 Channel, u32 SysmonBlk)
+{
+ u32 RegValue;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertVoid(InstancePtr != NULL);
+ Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertVoid((Channel <= XSM_CH_VREFN) ||
+ ((Channel >= XSM_CH_AUX_MIN) &&
+ (Channel <= XSM_CH_AUX_MAX)));
+ Xil_AssertVoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /*
+ * Read the Configuration Register 0 and the clear the channel selection
+ * bits.
+ */
+ RegValue = XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_CFG_REG0_OFFSET);
+ RegValue &= ~(XSYSMONPSU_CFG_REG0_MUX_CH_MASK);
+
+ /* Enable the External Mux and select the channel. */
+ RegValue |= (XSYSMONPSU_CFG_REG0_XTRNL_MUX_MASK | (u32)Channel);
+ XSysmonPsu_WriteReg(EffectiveBaseAddress + XSYSMONPSU_CFG_REG0_OFFSET,
+ RegValue);
+}
+
+/****************************************************************************/
+/**
+*
+* The function returns the external mux channel.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return Returns the channel number used to connect to the external
+* Mux. The valid channels are 0 to 6, 8 to 16, and 31 to 36..
+*
+* @note None.
+*
+*****************************************************************************/
+u32 XSysMonPsu_GetExtenalMux(XSysMonPsu *InstancePtr, u32 SysmonBlk)
+{
+ u32 RegValue;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /*
+ * Read the Configuration Register 0 and derive the channel selection
+ * bits.
+ */
+ RegValue = XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_CFG_REG0_OFFSET);
+ RegValue &= XSYSMONPSU_CFG_REG0_MUX_CH_MASK;
+
+ return RegValue;
+}
+
+/****************************************************************************/
+/**
+*
+* The function sets the frequency of the ADCCLK by configuring the DCLK to
+* ADCCLK ratio in the Configuration Register #2.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param Divisor is clock divisor used to derive ADCCLK from DCLK.
+* Valid values of the divisor are
+* PS:
+* - 0 means divide by 8.
+* - 1,2 means divide by 2.
+* - 3 to 255 means divide by that value.
+* PL:
+* - 0,1,2 means divide by 2.
+* - 3 to 255 means divide by that value.
+* Refer to the device specification for more details.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return None.
+*
+* @note - The ADCCLK is an internal clock used by the ADC and is
+* synchronized to the DCLK clock. The ADCCLK is equal to DCLK
+* divided by the user selection in the Configuration Register 2.
+* - There is no Assert on the minimum value of the Divisor.
+*
+*****************************************************************************/
+void XSysMonPsu_SetAdcClkDivisor(XSysMonPsu *InstancePtr, u8 Divisor,
+ u32 SysmonBlk)
+{
+ u32 RegValue;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertVoid(InstancePtr != NULL);
+ Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertVoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /*
+ * Read the Configuration Register 2 and the clear the clock divisor
+ * bits.
+ */
+ RegValue = XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_CFG_REG2_OFFSET);
+ RegValue &= ~(XSYSMONPSU_CFG_REG2_CLK_DVDR_MASK);
+
+ /* Write the divisor value into the Configuration Register 2. */
+ RegValue |= ((u32)Divisor << XSYSMONPSU_CFG_REG2_CLK_DVDR_SHIFT) &
+ XSYSMONPSU_CFG_REG2_CLK_DVDR_MASK;
+ XSysmonPsu_WriteReg(EffectiveBaseAddress + XSYSMONPSU_CFG_REG2_OFFSET,
+ RegValue);
+
+}
+
+/****************************************************************************/
+/**
+*
+* The function gets the ADCCLK divisor from the Configuration Register 2.
+*
+* @param InstancePtr is a pointer to the XSysMon instance.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return The divisor read from the Configuration Register 2.
+*
+* @note The ADCCLK is an internal clock used by the ADC and is
+* synchronized to the DCLK clock. The ADCCLK is equal to DCLK
+* divided by the user selection in the Configuration Register 2.
+*
+*****************************************************************************/
+u8 XSysMonPsu_GetAdcClkDivisor(XSysMonPsu *InstancePtr, u32 SysmonBlk)
+{
+ u16 Divisor;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /* Read the divisor value from the Configuration Register 2. */
+ Divisor = (u16) XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_CFG_REG2_OFFSET);
+
+ return (u8) (Divisor >> XSYSMONPSU_CFG_REG2_CLK_DVDR_SHIFT);
+}
+
+/****************************************************************************/
+/**
+*
+* This function enables the specified channels in the ADC Channel Selection
+* Sequencer Registers. The sequencer must be in the Safe Mode before writing
+* to these registers.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param ChEnableMask is the bit mask of all the channels to be enabled.
+* Use XSYSMONPSU_SEQ_CH* defined in xsysmon_hw.h to specify the Channel
+* numbers. Bit masks of 1 will be enabled and bit mask of 0 will
+* be disabled.
+* The ChEnableMask is a 32 bit mask that is written to the two
+* 16 bit ADC Channel Selection Sequencer Registers.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return
+* - XST_SUCCESS if the given values were written successfully to
+* the ADC Channel Selection Sequencer Registers.
+* - XST_FAILURE if the channel sequencer is enabled.
+*
+* @note None.
+*
+*****************************************************************************/
+s32 XSysMonPsu_SetSeqChEnables(XSysMonPsu *InstancePtr, u32 ChEnableMask,
+ u32 SysmonBlk)
+{
+ s32 Status;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /*
+ * The sequencer must be in the Default Safe Mode before writing
+ * to these registers. Return XST_FAILURE if the channel sequencer
+ * is enabled.
+ */
+ if ((XSysMonPsu_GetSequencerMode(InstancePtr,SysmonBlk) != XSM_SEQ_MODE_SAFE)) {
+ Status = (s32)XST_FAILURE;
+ goto End;
+ }
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /*
+ * Enable the specified channels in the ADC Channel Selection Sequencer
+ * Registers.
+ */
+ XSysmonPsu_WriteReg(EffectiveBaseAddress + XSYSMONPSU_SEQ_CH0_OFFSET,
+ (ChEnableMask & XSYSMONPSU_SEQ_CH0_VALID_MASK));
+
+ XSysmonPsu_WriteReg(EffectiveBaseAddress + XSYSMONPSU_SEQ_CH1_OFFSET,
+ (ChEnableMask >> XSM_SEQ_CH_SHIFT) &
+ XSYSMONPSU_SEQ_CH1_VALID_MASK);
+
+ Status = (s32)XST_SUCCESS;
+
+End:
+ return Status;
+}
+
+/****************************************************************************/
+/**
+*
+* This function gets the channel enable bits status from the ADC Channel
+* Selection Sequencer Registers.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return Gets the channel enable bits. Use XSYSMONPSU_SEQ_CH* defined in
+* xsysmonpsu_hw.h to interpret the Channel numbers. Bit masks of 1
+* are the channels that are enabled and bit mask of 0 are
+* the channels that are disabled.
+*
+* @return None.
+*
+* @note None.
+*
+*****************************************************************************/
+u32 XSysMonPsu_GetSeqChEnables(XSysMonPsu *InstancePtr, u32 SysmonBlk)
+{
+ u32 RegVal;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /*
+ * Read the channel enable bits for all the channels from the ADC
+ * Channel Selection Register.
+ */
+ RegVal = XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_SEQ_CH0_OFFSET) & XSYSMONPSU_SEQ_CH0_VALID_MASK;
+ RegVal |= (XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_SEQ_CH1_OFFSET) & XSYSMONPSU_SEQ_CH1_VALID_MASK) <<
+ XSM_SEQ_CH_SHIFT;
+
+ return RegVal;
+}
+
+/****************************************************************************/
+/**
+*
+* This function enables the averaging for the specified channels in the ADC
+* Channel Averaging Enable Sequencer Registers. The sequencer must be in
+* the Safe Mode before writing to these registers.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param AvgEnableChMask is the bit mask of all the channels for which
+* averaging is to be enabled. Use XSYSMONPSU_SEQ_AVERAGE* defined in
+* xsysmonpsu_hw.h to specify the Channel numbers. Averaging will be
+* enabled for bit masks of 1 and disabled for bit mask of 0.
+* The AvgEnableChMask is a 32 bit mask that is written to the
+* two 16 bit ADC Channel Averaging Enable Sequencer Registers.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return
+* - XST_SUCCESS if the given values were written successfully to
+* the ADC Channel Averaging Enables Sequencer Registers.
+* - XST_FAILURE if the channel sequencer is enabled.
+*
+* @note None.
+*
+*****************************************************************************/
+s32 XSysMonPsu_SetSeqAvgEnables(XSysMonPsu *InstancePtr, u32 AvgEnableChMask,
+ u32 SysmonBlk)
+{
+ s32 Status;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /*
+ * The sequencer must be disabled for writing any of these registers.
+ * Return XST_FAILURE if the channel sequencer is enabled.
+ */
+ if ((XSysMonPsu_GetSequencerMode(InstancePtr,SysmonBlk)
+ != XSM_SEQ_MODE_SAFE)) {
+ Status = (s32)XST_FAILURE;
+ goto End;
+ }
+
+ /*
+ * Enable/disable the averaging for the specified channels in the
+ * ADC Channel Averaging Enables Sequencer Registers.
+ */
+ XSysmonPsu_WriteReg(EffectiveBaseAddress +
+ XSYSMONPSU_SEQ_AVERAGE0_OFFSET,
+ (AvgEnableChMask & XSYSMONPSU_SEQ_AVERAGE0_MASK));
+
+ XSysmonPsu_WriteReg(EffectiveBaseAddress +
+ XSYSMONPSU_SEQ_AVERAGE1_OFFSET,
+ (AvgEnableChMask >> XSM_SEQ_CH_SHIFT) &
+ XSYSMONPSU_SEQ_AVERAGE1_MASK);
+
+ Status = (s32)XST_SUCCESS;
+End:
+ return Status;
+}
+
+/****************************************************************************/
+/**
+*
+* This function returns the channels for which the averaging has been enabled
+* in the ADC Channel Averaging Enables Sequencer Registers.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @returns The status of averaging (enabled/disabled) for all the channels.
+* Use XSYSMONPSU_SEQ_AVERAGE* defined in xsysmonpsu_hw.h to interpret the
+* Channel numbers. Bit masks of 1 are the channels for which
+* averaging is enabled and bit mask of 0 are the channels for
+* averaging is disabled.
+*
+* @note None.
+*
+*****************************************************************************/
+u32 XSysMonPsu_GetSeqAvgEnables(XSysMonPsu *InstancePtr, u32 SysmonBlk)
+{
+ u32 RegVal;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /*
+ * Read the averaging enable status for all the channels from the
+ * ADC Channel Averaging Enables Sequencer Registers.
+ */
+ RegVal = XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_SEQ_AVERAGE0_OFFSET) & XSYSMONPSU_SEQ_AVERAGE0_MASK;
+ RegVal |= (XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_SEQ_AVERAGE1_OFFSET) & XSYSMONPSU_SEQ_AVERAGE1_MASK) <<
+ XSM_SEQ_CH_SHIFT;
+
+ return RegVal;
+}
+
+/****************************************************************************/
+/**
+*
+* This function sets the Analog input mode for the specified channels in the
+* ADC Channel Analog-Input Mode Sequencer Registers. The sequencer must be in
+* the Safe Mode before writing to these registers.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param InputModeChMask is the bit mask of all the channels for which
+* the input mode is differential mode. Use XSYSMONPSU_SEQ_INPUT_MDE*
+* defined in xsysmonpsu_hw.h to specify the channel numbers. Differential
+* or Bipolar input mode will be set for bit masks of 1 and unipolar input
+* mode for bit masks of 0.
+* The InputModeChMask is a 32 bit mask that is written to the two
+* 16 bit ADC Channel Analog-Input Mode Sequencer Registers.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return
+* - XST_SUCCESS if the given values were written successfully to
+* the ADC Channel Analog-Input Mode Sequencer Registers.
+* - XST_FAILURE if the channel sequencer is enabled.
+*
+* @note None.
+*
+*****************************************************************************/
+s32 XSysMonPsu_SetSeqInputMode(XSysMonPsu *InstancePtr, u32 InputModeChMask,
+ u32 SysmonBlk)
+{
+ s32 Status;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /*
+ * The sequencer must be in the Safe Mode before writing to
+ * these registers. Return XST_FAILURE if the channel sequencer
+ * is enabled.
+ */
+ if ((XSysMonPsu_GetSequencerMode(InstancePtr,SysmonBlk)
+ != XSM_SEQ_MODE_SAFE)) {
+ Status = (s32)XST_FAILURE;
+ goto End;
+ }
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /*
+ * Set the input mode for the specified channels in the ADC Channel
+ * Analog-Input Mode Sequencer Registers.
+ */
+ XSysmonPsu_WriteReg(EffectiveBaseAddress +
+ XSYSMONPSU_SEQ_INPUT_MDE0_OFFSET,
+ (InputModeChMask & XSYSMONPSU_SEQ_INPUT_MDE0_MASK));
+
+ XSysmonPsu_WriteReg(EffectiveBaseAddress +
+ XSYSMONPSU_SEQ_INPUT_MDE1_OFFSET,
+ (InputModeChMask >> XSM_SEQ_CH_SHIFT) &
+ XSYSMONPSU_SEQ_INPUT_MDE1_MASK);
+
+ Status = (s32)XST_SUCCESS;
+
+End:
+ return Status;
+}
+
+/****************************************************************************/
+/**
+*
+* This function gets the Analog input mode for all the channels from
+* the ADC Channel Analog-Input Mode Sequencer Registers.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @returns The input mode for all the channels.
+* Use XSYSMONPSU_SEQ_INPUT_MDE* defined in xsysmonpsu_hw.h to interpret the
+* Channel numbers. Bit masks of 1 are the channels for which
+* input mode is differential/Bipolar and bit mask of 0 are the channels
+* for which input mode is unipolar.
+*
+* @note None.
+*
+*****************************************************************************/
+u32 XSysMonPsu_GetSeqInputMode(XSysMonPsu *InstancePtr, u32 SysmonBlk)
+{
+ u32 InputMode;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /*
+ * Get the input mode for all the channels from the ADC Channel
+ * Analog-Input Mode Sequencer Registers.
+ */
+ InputMode = XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_SEQ_INPUT_MDE0_OFFSET) & XSYSMONPSU_SEQ_INPUT_MDE0_MASK;
+ InputMode |= (XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_SEQ_INPUT_MDE1_OFFSET) & XSYSMONPSU_SEQ_INPUT_MDE1_MASK) <<
+ XSM_SEQ_CH_SHIFT;
+
+ return InputMode;
+}
+
+/****************************************************************************/
+/**
+*
+* This function sets the number of Acquisition cycles in the ADC Channel
+* Acquisition Time Sequencer Registers. The sequencer must be in the Safe Mode
+* before writing to these registers.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param AcqCyclesChMask is the bit mask of all the channels for which
+* the number of acquisition cycles is to be extended.
+* Use XSYSMONPSU_SEQ_ACQ* defined in xsysmonpsu_hw.h to specify the Channel
+* numbers. Acquisition cycles will be extended to 10 ADCCLK cycles
+* for bit masks of 1 and will be the default 4 ADCCLK cycles for
+* bit masks of 0.
+* The AcqCyclesChMask is a 32 bit mask that is written to the two
+* 16 bit ADC Channel Acquisition Time Sequencer Registers.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return
+* - XST_SUCCESS if the given values were written successfully to
+* the Channel Sequencer Registers.
+* - XST_FAILURE if the channel sequencer is enabled.
+*
+* @note None.
+*
+*****************************************************************************/
+s32 XSysMonPsu_SetSeqAcqTime(XSysMonPsu *InstancePtr, u32 AcqCyclesChMask,
+ u32 SysmonBlk)
+{
+ s32 Status;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /*
+ * The sequencer must be in the Safe Mode before writing
+ * to these registers. Return XST_FAILURE if the channel
+ * sequencer is enabled.
+ */
+ if ((XSysMonPsu_GetSequencerMode(InstancePtr,SysmonBlk)
+ != XSM_SEQ_MODE_SAFE)) {
+ Status = (s32)XST_FAILURE;
+ goto End;
+ }
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /*
+ * Set the Acquisition time for the specified channels in the
+ * ADC Channel Acquisition Time Sequencer Registers.
+ */
+ XSysmonPsu_WriteReg(EffectiveBaseAddress + XSYSMONPSU_SEQ_ACQ0_OFFSET,
+ (AcqCyclesChMask & XSYSMONPSU_SEQ_ACQ0_MASK));
+
+ XSysmonPsu_WriteReg(EffectiveBaseAddress + XSYSMONPSU_SEQ_ACQ1_OFFSET,
+ (AcqCyclesChMask >> XSM_SEQ_CH_SHIFT) & XSYSMONPSU_SEQ_ACQ1_MASK);
+
+ Status = (s32)XST_SUCCESS;
+
+End:
+ return Status;
+}
+
+/****************************************************************************/
+/**
+*
+* This function gets the status of acquisition time from the ADC Channel Acquisition
+* Time Sequencer Registers.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @returns The acquisition time for all the channels.
+* Use XSYSMONPSU_SEQ_ACQ* defined in xsysmonpsu_hw.h to interpret the
+* Channel numbers. Bit masks of 1 are the channels for which
+* acquisition cycles are extended and bit mask of 0 are the
+* channels for which acquisition cycles are not extended.
+*
+* @note None.
+*
+*****************************************************************************/
+u32 XSysMonPsu_GetSeqAcqTime(XSysMonPsu *InstancePtr, u32 SysmonBlk)
+{
+ u32 RegValAcq;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /*
+ * Get the Acquisition cycles for the specified channels from the ADC
+ * Channel Acquisition Time Sequencer Registers.
+ */
+ RegValAcq = XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_SEQ_ACQ0_OFFSET) & XSYSMONPSU_SEQ_ACQ0_MASK;
+ RegValAcq |= (XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_SEQ_ACQ1_OFFSET) & XSYSMONPSU_SEQ_ACQ1_MASK) <<
+ XSM_SEQ_CH_SHIFT;
+
+ return RegValAcq;
+}
+
+/****************************************************************************/
+/**
+*
+* This functions sets the contents of the given Alarm Threshold Register.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param AlarmThrReg is the index of an Alarm Threshold Register to
+* be set. Use XSM_ATR_* constants defined in xsysmonpsu.h to
+* specify the index.
+* @param Value is the 16-bit threshold value to write into the register.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return None.
+*
+* @note None.
+*
+*****************************************************************************/
+void XSysMonPsu_SetAlarmThreshold(XSysMonPsu *InstancePtr, u8 AlarmThrReg,
+ u16 Value, u32 SysmonBlk)
+{
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertVoid(InstancePtr != NULL);
+ Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertVoid((AlarmThrReg <= XSM_ATR_TEMP_RMTE_UPPER) ||
+ ((AlarmThrReg >= XSM_ATR_SUP7_LOWER) &&
+ (AlarmThrReg <= XSM_ATR_TEMP_RMTE_LOWER)));
+ Xil_AssertVoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /* Write the value into the specified Alarm Threshold Register. */
+ XSysmonPsu_WriteReg(EffectiveBaseAddress + XSYSMONPSU_ALRM_TEMP_UPR_OFFSET +
+ ((u32)AlarmThrReg << 2U), Value);
+}
+
+/****************************************************************************/
+/**
+*
+* This function returns the contents of the specified Alarm Threshold Register.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param AlarmThrReg is the index of an Alarm Threshold Register
+* to be read. Use XSM_ATR_* constants defined in xsysmonpsu.h
+* to specify the index.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon
+* block or PL Sysmon block register region.
+*
+* @return A 16-bit value representing the contents of the selected Alarm
+* Threshold Register.
+*
+* @note None.
+*
+*****************************************************************************/
+u16 XSysMonPsu_GetAlarmThreshold(XSysMonPsu *InstancePtr, u8 AlarmThrReg,
+ u32 SysmonBlk)
+{
+ u16 AlarmThreshold;
+ u32 EffectiveBaseAddress;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+ Xil_AssertNonvoid((AlarmThrReg <= XSM_ATR_TEMP_RMTE_UPPER) ||
+ ((AlarmThrReg >= XSM_ATR_SUP7_LOWER) &&
+ (AlarmThrReg <= XSM_ATR_TEMP_RMTE_LOWER)));
+ Xil_AssertNonvoid((SysmonBlk == XSYSMON_PS)||(SysmonBlk == XSYSMON_PL));
+
+ /* Calculate the effective baseaddress based on the Sysmon instance. */
+ EffectiveBaseAddress =
+ XSysMonPsu_GetEffBaseAddress(InstancePtr->Config.BaseAddress,
+ SysmonBlk);
+
+ /*
+ * Read the specified Alarm Threshold Register and return
+ * the value.
+ */
+ AlarmThreshold = (u16) XSysmonPsu_ReadReg(EffectiveBaseAddress +
+ XSYSMONPSU_ALRM_TEMP_UPR_OFFSET + ((u32)AlarmThrReg << 2));
+
+ return AlarmThreshold;
+}
+
+/****************************************************************************/
+/**
+*
+* This function sets the conversion to be automatic for PS SysMon.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+*
+* @return None
+*
+* @note In the auto-trigger mode, sample rate is of 1 Million samples.
+*
+*****************************************************************************/
+void XSysMonPsu_SetPSAutoConversion(XSysMonPsu *InstancePtr)
+{
+ u32 PSSysMonStatusReg;
+
+ /* Assert the arguments. */
+ Xil_AssertVoid(InstancePtr != NULL);
+ Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ /* Set the automatic conversion triggering in PS control register. */
+ PSSysMonStatusReg = XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_PS_SYSMON_CSTS_OFFSET);
+ PSSysMonStatusReg |= XSYSMONPSU_PS_SYSMON_CSTS_AUTO_CONVST_MASK;
+ XSysmonPsu_WriteReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_PS_SYSMON_CSTS_OFFSET, PSSysMonStatusReg);
+}
+
+/****************************************************************************/
+/**
+*
+* This function gets the AMS monitor status.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+*
+* @return Returns the monitor status. See XSYSMONPSU_MON_STS_*_MASK
+* definations present in xsysmonpsu_hw.h for knowing the status.
+*
+* @note None
+* .
+*****************************************************************************/
+u32 XSysMonPsu_GetMonitorStatus(XSysMonPsu *InstancePtr)
+{
+ u32 AMSMonStatusReg;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ /*
+ * Read the AMS monitor status. This gives tells about JTAG Locked / ADC
+ * busy / ADC Current Channel number and its ADC output.
+ */
+ AMSMonStatusReg = XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_MON_STS_OFFSET);
+
+ return AMSMonStatusReg;
+}
+
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu.h
new file mode 100644
index 000000000..ae55db9ce
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu.h
@@ -0,0 +1,592 @@
+/******************************************************************************
+*
+* Copyright (C) 2016 Xilinx, Inc. All rights reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+* (a) running on a Xilinx device, or
+* (b) that interact with a Xilinx device through a bus or interconnect.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*
+* Except as contained in this notice, the name of the Xilinx shall not be used
+* in advertising or otherwise to promote the sale, use or other dealings in
+* this Software without prior written authorization from Xilinx.
+*
+******************************************************************************/
+/*****************************************************************************/
+/**
+* @file xsysmonpsu.h
+*
+* The XSysMon driver supports the Xilinx System Monitor device.
+*
+* The System Monitor device has the following features:
+* - PL Sysmon instance has 10-bit, 200-KSPS (kilo samples per second)
+* Analog-to-Digital Converter (ADC)
+* - PS Sysmon instance has 10-bit, 1000-KSPS ADC.
+* - Monitoring of on-chip supply voltages and temperature
+* - 1 dedicated differential analog-input pair and
+* 16 auxiliary differential analog-input pairs
+* - Automatic alarms based on user defined limits for the on-chip
+* supply voltages and temperature
+* - Automatic Channel Sequencer, programmable averaging, programmable
+* acquisition time for the external inputs, unipolar or differential
+* input selection for the external inputs
+* - Inbuilt Calibration
+* - Optional interrupt request generation
+* - External Mux
+*
+*
+* The user should refer to the hardware device specification for detailed
+* information about the device.
+*
+* This header file contains the prototypes of driver functions that can
+* be used to access the System Monitor device.
+*
+*
+* System Monitor Channel Sequencer Modes
+*
+* The System Monitor Channel Sequencer supports the following operating modes:
+*
+* - Default : This is the default mode after power up.
+* In this mode of operation the System Monitor operates in
+* a sequence mode, monitoring the on chip sensors:
+* Temperature, VCCINT, and VCCAUX.
+* - One pass through sequence : In this mode the System Monitor
+* converts the channels enabled in the Sequencer Channel Enable
+* registers for a single pass and then stops.
+* - Continuous cycling of sequence : In this mode the System Monitor
+* converts the channels enabled in the Sequencer Channel Enable
+* registers continuously.
+* - Single channel mode: In this mode the System Monitor Channel
+* Sequencer is disabled and the System Monitor operates in a
+* Single Channel Mode.
+* The System Monitor can operate either in a Continuous or Event
+* driven sampling mode in the single channel mode.
+*
+*
+* Initialization and Configuration
+*
+* The device driver enables higher layer software (e.g., an application) to
+* communicate to the System Monitor device.
+*
+* XSysMonPsu_CfgInitialize() API is used to initialize the System Monitor
+* device. The user needs to first call the XSysMonPsu_LookupConfig() API which
+* returns the Configuration structure pointer which is passed as a parameter to
+* the XSysMonPsu_CfgInitialize() API.
+*
+*
+* Interrupts
+*
+* The System Monitor device supports interrupt driven mode and the default
+* operation mode is polling mode.
+*
+* This driver does not provide a Interrupt Service Routine (ISR) for the device.
+* It is the responsibility of the application to provide one if needed. Refer to
+* the interrupt example provided with this driver for details on using the
+* device in interrupt mode.
+*
+*
+* Virtual Memory
+*
+* This driver supports Virtual Memory. The RTOS is responsible for calculating
+* the correct device base address in Virtual Memory space.
+*
+*
+* Threads
+*
+* This driver is not thread safe. Any needs for threads or thread mutual
+* exclusion must be satisfied by the layer above this driver.
+*
+*
+* Asserts
+*
+* Asserts are used within all Xilinx drivers to enforce constraints on argument
+* values. Asserts can be turned off on a system-wide basis by defining, at
+* compile time, the NDEBUG identifier. By default, asserts are turned on and it
+* is recommended that users leave asserts on during development.
+*
+*
+* Building the driver
+*
+* The XSysMonPsu driver is composed of several source files. This allows the user
+* to build and link only those parts of the driver that are necessary.
+*
+*
+* Limitations of the driver
+*
+* System Monitor device can be accessed through the JTAG port and the AXI
+* interface. The driver implementation does not support the simultaneous access
+* of the device by both these interfaces. The user has to take care of this
+* situation in the user application code.
+*
+*
+*
+*
+*
+*
+*
+* MODIFICATION HISTORY:
+*
+* Ver Who Date Changes
+* ----- ----- -------- -----------------------------------------------
+* 1.00 kvn 12/15/15 First release
+* 02/15/16 Corrected Assert function call in
+* XSysMonPsu_GetMonitorStatus API.
+* 03/03/16 Added Temperature remote channel for Setsingle
+* channel API. Also corrected external mux channel
+* numbers.
+*
+*
+*
+******************************************************************************/
+
+
+#ifndef XSYSMONPSU_H_ /* prevent circular inclusions */
+#define XSYSMONPSU_H_ /* by using protection macros */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************** Include Files *********************************/
+
+#include "xstatus.h"
+#include "xil_assert.h"
+#include "xil_io.h"
+#include "xsysmonpsu_hw.h"
+#include "xil_types.h"
+
+/************************** Constant Definitions *****************************/
+
+/**
+ * @name Indexes for the different channels.
+ * @{
+ */
+#define XSM_CH_TEMP 0x0U /**< On Chip Temperature */
+#define XSM_CH_SUPPLY1 0x1U /**< SUPPLY1 VCC_PSINTLP */
+#define XSM_CH_SUPPLY2 0x2U /**< SUPPLY2 VCC_PSINTFP */
+#define XSM_CH_VPVN 0x3U /**< VP/VN Dedicated analog inputs */
+#define XSM_CH_VREFP 0x4U /**< VREFP */
+#define XSM_CH_VREFN 0x5U /**< VREFN */
+#define XSM_CH_SUPPLY3 0x6U /**< SUPPLY3 VCC_PSAUX */
+#define XSM_CH_SUPPLY_CALIB 0x08U /**< Supply Calib Data Reg */
+#define XSM_CH_ADC_CALIB 0x09U /**< ADC Offset Channel Reg */
+#define XSM_CH_GAINERR_CALIB 0x0AU /**< Gain Error Channel Reg */
+#define XSM_CH_SUPPLY4 0x0DU /**< SUPPLY4 VCC_PSDDR_504 */
+#define XSM_CH_SUPPLY5 0x0EU /**< SUPPLY5 VCC_PSIO3_503 */
+#define XSM_CH_SUPPLY6 0x0FU /**< SUPPLY6 VCC_PSIO0_500 */
+#define XSM_CH_AUX_MIN 16U /**< Channel number for 1st Aux Channel */
+#define XSM_CH_AUX_MAX 31U /**< Channel number for Last Aux channel */
+#define XSM_CH_SUPPLY7 32U /**< SUPPLY7 VCC_PSIO1_501 */
+#define XSM_CH_SUPPLY8 33U /**< SUPPLY8 VCC_PSIO2_502 */
+#define XSM_CH_SUPPLY9 34U /**< SUPPLY9 PS_MGTRAVCC */
+#define XSM_CH_SUPPLY10 35U /**< SUPPLY10 PS_MGTRAVTT */
+#define XSM_CH_VCCAMS 36U /**< VCCAMS */
+#define XSM_CH_TEMP_REMTE 37U /**< Temperature Remote */
+#define XSM_CH_VCC_PSLL0 38U /**< VCC_PSLL0 */
+#define XSM_CH_VCC_PSLL1 39U /**< VCC_PSLL1 */
+#define XSM_CH_VCC_PSLL2 40U /**< VCC_PSLL2 */
+#define XSM_CH_VCC_PSLL3 41U /**< VCC_PSLL3 */
+#define XSM_CH_VCC_PSLL4 42U /**< VCC_PSLL4 */
+#define XSM_CH_VCC_PSBATT 43U /**< VCC_PSBATT */
+#define XSM_CH_VCCINT 44U /**< VCCINT */
+#define XSM_CH_VCCBRAM 45U /**< VCCBRAM */
+#define XSM_CH_VCCAUX 46U /**< VCCAUX */
+#define XSM_CH_VCC_PSDDRPLL 47U /**< VCC_PSDDRPLL */
+#define XSM_CH_DDRPHY_VREF 48U /**< DDRPHY_VREF */
+#define XSM_CH_DDRPHY_AT0 49U /**< DDRPHY_AT0 */
+#define XSM_CH_PSGT_AT0 50U /**< PSGT_AT0 */
+#define XSM_CH_PSGT_AT1 51U /**< PSGT_AT0 */
+#define XSM_CH_RESERVE0 52U /**< PSGT_AT0 */
+#define XSM_CH_RESERVE1 53U /**< PSGT_AT0 */
+
+/*@}*/
+
+/**
+ * @name Indexes for reading the Calibration Coefficient Data.
+ * @{
+ */
+#define XSM_CALIB_SUPPLY_OFFSET_COEFF 0U /**< Supply Offset Calib Coefficient */
+#define XSM_CALIB_ADC_OFFSET_COEFF 1U /**< ADC Offset Calib Coefficient */
+#define XSM_CALIB_GAIN_ERROR_COEFF 2U /**< Gain Error Calib Coefficient*/
+
+/*@}*/
+
+/**
+ * @name Indexes for reading the Minimum/Maximum Measurement Data.
+ * @{
+ */
+#define XSM_MAX_TEMP 0U /**< Maximum Temperature Data */
+#define XSM_MAX_SUPPLY1 1U /**< Maximum SUPPLY1 Data */
+#define XSM_MAX_SUPPLY2 2U /**< Maximum SUPPLY2 Data */
+#define XSM_MAX_SUPPLY3 3U /**< Maximum SUPPLY3 Data */
+#define XSM_MIN_TEMP 4U /**< Minimum Temperature Data */
+#define XSM_MIN_SUPPLY1 5U /**< Minimum SUPPLY1 Data */
+#define XSM_MIN_SUPPLY2 6U /**< Minimum SUPPLY2 Data */
+#define XSM_MIN_SUPPLY3 7U /**< Minimum SUPPLY3 Data */
+#define XSM_MAX_SUPPLY4 8U /**< Maximum SUPPLY4 Data */
+#define XSM_MAX_SUPPLY5 9U /**< Maximum SUPPLY5 Data */
+#define XSM_MAX_SUPPLY6 0xAU /**< Maximum SUPPLY6 Data */
+#define XSM_MIN_SUPPLY4 0xCU /**< Minimum SUPPLY4 Data */
+#define XSM_MIN_SUPPLY5 0xDU /**< Minimum SUPPLY5 Data */
+#define XSM_MIN_SUPPLY6 0xEU /**< Minimum SUPPLY6 Data */
+#define XSM_MAX_SUPPLY7 0x80U /**< Maximum SUPPLY7 Data */
+#define XSM_MAX_SUPPLY8 0x81U /**< Maximum SUPPLY8 Data */
+#define XSM_MAX_SUPPLY9 0x82U /**< Maximum SUPPLY9 Data */
+#define XSM_MAX_SUPPLY10 0x83U /**< Maximum SUPPLY10 Data */
+#define XSM_MAX_VCCAMS 0x84U /**< Maximum VCCAMS Data */
+#define XSM_MAX_TEMP_REMOTE 0x85U /**< Maximum Remote Temperature Data */
+#define XSM_MIN_SUPPLY7 0x88U /**< Minimum SUPPLY7 Data */
+#define XSM_MIN_SUPPLY8 0x89U /**< Minimum SUPPLY8 Data */
+#define XSM_MIN_SUPPLY9 0x8AU /**< Minimum SUPPLY9 Data */
+#define XSM_MIN_SUPPLY10 0x8BU /**< Minimum SUPPLY10 Data */
+#define XSM_MIN_VCCAMS 0x8CU /**< Minimum VCCAMS Data */
+#define XSM_MIN_TEMP_REMOTE 0x8DU /**< Minimum Remote Temperature Data */
+
+/*@}*/
+
+/**
+ * @name Averaging to be done for the channels.
+ * @{
+ */
+#define XSM_AVG_0_SAMPLES 0U /**< No Averaging */
+#define XSM_AVG_16_SAMPLES 1U /**< Average 16 samples */
+#define XSM_AVG_64_SAMPLES 2U /**< Average 64 samples */
+#define XSM_AVG_256_SAMPLES 3U /**< Average 256 samples */
+
+/*@}*/
+
+/**
+ * @name Channel Sequencer Modes of operation.
+ * @{
+ */
+#define XSM_SEQ_MODE_SAFE 0U /**< Default Safe Mode */
+#define XSM_SEQ_MODE_ONEPASS 1U /**< Onepass through Sequencer */
+#define XSM_SEQ_MODE_CONTINPASS 2U /**< Continuous Cycling Seqquencer */
+#define XSM_SEQ_MODE_SINGCHAN 3U /**< Single channel - No Sequencing */
+#define XSM_SEQ_MODE_OYLMPUS 6U /**< Olympus mode */
+
+/*@}*/
+
+/**
+ * @name Clock Divisor values range.
+ * @{
+ */
+#define XSM_CLK_DIV_MIN 0U /**< Minimum Clock Divisor value */
+#define XSM_CLK_DIV_MAX 255U /**< Maximum Clock Divisor value */
+
+/*@}*/
+
+/**
+ * @name Alarm Threshold(Limit) Register (ATR) indexes.
+ * @{
+ */
+#define XSM_ATR_TEMP_UPPER 0U /**< High user Temperature limit */
+#define XSM_ATR_SUP1_UPPER 1U /**< Supply1 high voltage limit */
+#define XSM_ATR_SUP2_UPPER 2U /**< Supply2 high voltage limit */
+#define XSM_ATR_OT_UPPER 3U /**< Upper Over Temperature limit */
+#define XSM_ATR_TEMP_LOWER 4U /**< Low user Temperature */
+#define XSM_ATR_SUP1_LOWER 5U /**< Suuply1 low voltage limit */
+#define XSM_ATR_SUP2_LOWER 6U /**< Supply2 low voltage limit */
+#define XSM_ATR_OT_LOWER 7U /**< Lower Over Temperature limit */
+#define XSM_ATR_SUP3_UPPER 8U /**< Supply3 high voltage limit */
+#define XSM_ATR_SUP4_UPPER 9U /**< Supply4 high voltage limit */
+#define XSM_ATR_SUP5_UPPER 0xAU /**< Supply5 high voltage limit */
+#define XSM_ATR_SUP6_UPPER 0xBU /**< Supply6 high voltage limit */
+#define XSM_ATR_SUP3_LOWER 0xCU /**< Supply3 low voltage limit */
+#define XSM_ATR_SUP4_LOWER 0xDU /**< Supply4 low voltage limit */
+#define XSM_ATR_SUP5_LOWER 0xEU /**< Supply5 low voltage limit */
+#define XSM_ATR_SUP6_LOWER 0xFU /**< Supply6 low voltage limit */
+#define XSM_ATR_SUP7_UPPER 0x10U /**< Supply7 high voltage limit */
+#define XSM_ATR_SUP8_UPPER 0x11U /**< Supply8 high voltage limit */
+#define XSM_ATR_SUP9_UPPER 0x12U /**< Supply9 high voltage limit */
+#define XSM_ATR_SUP10_UPPER 0x13U /**< Supply10 high voltage limit */
+#define XSM_ATR_VCCAMS_UPPER 0x14U /**< VCCAMS high voltage limit */
+#define XSM_ATR_TEMP_RMTE_UPPER 0x15U /**< High remote Temperature limit */
+#define XSM_ATR_SUP7_LOWER 0x18U /**< Supply7 low voltage limit */
+#define XSM_ATR_SUP8_LOWER 0x19U /**< Supply8 low voltage limit */
+#define XSM_ATR_SUP9_LOWER 0x1AU /**< Supply9 low voltage limit */
+#define XSM_ATR_SUP10_LOWER 0x1BU /**< Supply10 low voltage limit */
+#define XSM_ATR_VCCAMS_LOWER 0x1CU /**< VCCAMS low voltage limit */
+#define XSM_ATR_TEMP_RMTE_LOWER 0x1DU /**< Low remote Temperature limit */
+
+/*@}*/
+
+/**
+ * @name Alarm masks for channels in Configuration registers 1
+ * @{
+ */
+#define XSM_CFR_ALM_SUPPLY6_MASK 0x0800 /**< Alarm 6 - SUPPLY6 */
+#define XSM_CFR_ALM_SUPPLY5_MASK 0x0400 /**< Alarm 5 - SUPPLY5 */
+#define XSM_CFR_ALM_SUPPLY4_MASK 0x0200 /**< Alarm 4 - SUPPLY4 */
+#define XSM_CFR_ALM_SUPPLY3_MASK 0x0100 /**< Alarm 3 - SUPPLY3 */
+#define XSM_CFR_ALM_SUPPLY2_MASK 0x0008 /**< Alarm 2 - SUPPLY2 */
+#define XSM_CFR_ALM_SUPPLY1_MASK 0x0004 /**< Alarm 1 - SUPPLY1 */
+#define XSM_CFR_ALM_TEMP_MASK 0x0002 /**< Alarm 0 - Temperature */
+#define XSM_CFR_ALM_OT_MASK 0x0001 /**< Over Temperature Alarm */
+
+/*@}*/
+
+/**************************** Type Definitions *******************************/
+
+/******************************************************************************/
+/**
+ * This data type defines a handler that an application defines to communicate
+ * with interrupt system to retrieve state information about an application.
+ *
+ * @param CallBackRef is a callback reference passed in by the upper layer
+ * when setting the handler, and is passed back to the upper layer
+ * when the handler is called. It is used to find the device driver
+ * instance.
+ *
+ ******************************************************************************/
+typedef void (*XSysMonPsu_Handler) (void *CallBackRef);
+
+/**
+ * This typedef contains configuration information for a device.
+ */
+typedef struct {
+ u16 DeviceId; /**< Unique ID of device */
+ u32 BaseAddress; /**< Register base address */
+} XSysMonPsu_Config;
+
+/**
+ * The XSysmonPsu driver instance data. The user is required to allocate a
+ * variable of this type for the SYSMON device in the system. A pointer
+ * to a variable of this type is then passed to the driver API functions.
+ */
+typedef struct {
+ XSysMonPsu_Config Config; /**< Device configuration */
+ u32 IsReady; /**< Device is initialized and ready */
+ XSysMonPsu_Handler Handler;
+ void *CallBackRef; /**< Callback reference for event handler */
+} XSysMonPsu;
+
+/* BaseAddress Offsets */
+#define XSYSMON_PS 1U
+#define XSYSMON_PL 2U
+#define XSYSMON_AMS 3U
+#define XPS_BA_OFFSET 0x00000800U
+#define XPL_BA_OFFSET 0x00000C00U
+#define XSM_ADC_CH_OFFSET 0x00000200U
+#define XSM_AMS_CH_OFFSET 0x00000060U
+#define XSM_MIN_MAX_CH_OFFSET 0x00000080U
+
+/************************* Variable Definitions ******************************/
+
+/***************** Macros (Inline Functions) Definitions *********************/
+
+/****************************************************************************/
+/**
+*
+* This macro converts System Monitor Raw Data to Temperature(centigrades)
+* for On-Chip Sensors.
+*
+* @param AdcData is the SysMon Raw ADC Data.
+*
+* @return The Temperature in centigrades.
+*
+* @note C-Style signature:
+* float XSysMon_RawToTemperature_OnChip(u32 AdcData)
+*
+*****************************************************************************/
+#define XSysMonPsu_RawToTemperature_OnChip(AdcData) \
+ ((((float)(AdcData)/65536.0f)/0.00199451786f ) - 273.6777f)
+
+/****************************************************************************/
+/**
+*
+* This macro converts System Monitor Raw Data to Temperature(centigrades)
+* for external reference.
+*
+* @param AdcData is the SysMon Raw ADC Data.
+*
+* @return The Temperature in centigrades.
+*
+* @note C-Style signature:
+* float XSysMon_RawToTemperature_ExternalRef(u32 AdcData)
+*
+*****************************************************************************/
+#define XSysMonPsu_RawToTemperature_ExternalRef(AdcData) \
+ ((((float)(AdcData)/65536.0f)/0.00198842814f ) - 273.8195f)
+
+/****************************************************************************/
+/**
+*
+* This macro converts System Monitor Raw Data to Voltage(volts).
+*
+* @param AdcData is the System Monitor ADC Raw Data.
+*
+* @return The Voltage in volts.
+*
+* @note C-Style signature:
+* float XSysMon_RawToVoltage(u32 AdcData)
+*
+*****************************************************************************/
+#define XSysMonPsu_RawToVoltage(AdcData) \
+ ((((float)(AdcData))* (3.0f))/65536.0f)
+
+/****************************************************************************/
+/**
+*
+* This macro converts Temperature in centigrades to System Monitor Raw Data
+* for On-Chip Sensors.
+*
+* @param Temperature is the Temperature in centigrades to be
+* converted to System Monitor ADC Raw Data.
+*
+* @return The System Monitor ADC Raw Data.
+*
+* @note C-Style signature:
+* int XSysMon_TemperatureToRaw_OnChip(float Temperature)
+*
+*****************************************************************************/
+#define XSysMonPsu_TemperatureToRaw_OnChip(Temperature) \
+ ((int)(((Temperature) + 273.6777f)*65536.0f*0.00199451786f))
+
+/****************************************************************************/
+/**
+*
+* This macro converts Temperature in centigrades to System Monitor Raw Data
+* for external reference.
+*
+* @param Temperature is the Temperature in centigrades to be
+* converted to System Monitor ADC Raw Data.
+*
+* @return The System Monitor ADC Raw Data.
+*
+* @note C-Style signature:
+* int XSysMon_TemperatureToRaw_ExternalRef(float Temperature)
+*
+*****************************************************************************/
+#define XSysMonPsu_TemperatureToRaw_ExternalRef(Temperature) \
+ ((int)(((Temperature) + 273.8195f)*65536.0f*0.00198842814f))
+
+/****************************************************************************/
+/**
+*
+* This macro converts Voltage in Volts to System Monitor Raw Data.
+*
+* @param Voltage is the Voltage in volts to be converted to
+* System Monitor/ADC Raw Data.
+*
+* @return The System Monitor ADC Raw Data.
+*
+* @note C-Style signature:
+* int XSysMon_VoltageToRaw(float Voltage)
+*
+*****************************************************************************/
+#define XSysMonPsu_VoltageToRaw(Voltage) \
+ ((s32)((Voltage)*65536.0f/3.0f))
+
+/****************************************************************************/
+/**
+*
+* This static inline macro calculates the effective baseaddress based on the
+* Sysmon instance. For PS Sysmon, use additional offset XPS_BA_OFFSET and For
+* PL Sysmon, use additional offset XPL_BA_OFFSET.
+*
+* @param BaseAddress is the starting address of the SysMon block in
+* register database.
+* @param SysmonBlk is the value that tells whether it is for PS Sysmon block
+* or PL Sysmon block or the AMS controller register region.
+*
+* @return Returns the effective baseaddress of the sysmon instance.
+*
+*****************************************************************************/
+static inline u32 XSysMonPsu_GetEffBaseAddress(u32 BaseAddress, u32 SysmonBlk)
+ {
+ u32 EffBaseAddr;
+
+ if (SysmonBlk == XSYSMON_PS) {
+ EffBaseAddr = BaseAddress + XPS_BA_OFFSET;
+ } else if(SysmonBlk == XSYSMON_PL) {
+ EffBaseAddr = BaseAddress + XPL_BA_OFFSET;
+ } else {
+ EffBaseAddr = BaseAddress;
+ }
+
+ return EffBaseAddr;
+ }
+
+/************************** Function Prototypes ******************************/
+
+/* Functions in xsysmonpsu.c */
+s32 XSysMonPsu_CfgInitialize(XSysMonPsu *InstancePtr, XSysMonPsu_Config *ConfigPtr,
+ u32 EffectiveAddr);
+void XSysMonPsu_Reset(XSysMonPsu *InstancePtr);
+void XSysMonPsu_Reset_FromLPD(XSysMonPsu *InstancePtr);
+u32 XSysMonPsu_GetStatus(XSysMonPsu *InstancePtr, u32 SysmonBlk);
+void XSysMonPsu_StartAdcConversion(XSysMonPsu *InstancePtr);
+u16 XSysMonPsu_GetAdcData(XSysMonPsu *InstancePtr, u8 Channel, u32 SysmonBlk);
+u16 XSysMonPsu_GetCalibCoefficient(XSysMonPsu *InstancePtr, u8 CoeffType, u32 SysmonBlk);
+u16 XSysMonPsu_GetMinMaxMeasurement(XSysMonPsu *InstancePtr, u8 MeasurementType,
+ u32 SysmonBlk);
+void XSysMonPsu_SetAvg(XSysMonPsu *InstancePtr, u8 Average, u32 SysmonBlk);
+u8 XSysMonPsu_GetAvg(XSysMonPsu *InstancePtr, u32 SysmonBlk);
+s32 XSysMonPsu_SetSingleChParams(XSysMonPsu *InstancePtr, u8 Channel,
+ u32 IncreaseAcqCycles, u32 IsEventMode,
+ u32 IsDifferentialMode, u32 SysmonBlk);
+void XSysMonPsu_SetAlarmEnables(XSysMonPsu *InstancePtr, u32 AlmEnableMask,
+ u32 SysmonBlk);
+u32 XSysMonPsu_GetAlarmEnables(XSysMonPsu *InstancePtr, u32 SysmonBlk);
+void XSysMonPsu_SetSequencerMode(XSysMonPsu *InstancePtr, u8 SequencerMode,
+ u32 SysmonBlk);
+u8 XSysMonPsu_GetSequencerMode(XSysMonPsu *InstancePtr, u32 SysmonBlk);
+void XSysMonPsu_SetSequencerEvent(XSysMonPsu *InstancePtr, u32 IsEventMode,
+ u32 SysmonBlk);
+s32 XSysMonPsu_GetSequencerEvent(XSysMonPsu *InstancePtr, u32 SysmonBlk);
+void XSysMonPsu_SetExtenalMux(XSysMonPsu *InstancePtr, u8 Channel, u32 SysmonBlk);
+u32 XSysMonPsu_GetExtenalMux(XSysMonPsu *InstancePtr, u32 SysmonBlk);
+void XSysMonPsu_SetAdcClkDivisor(XSysMonPsu *InstancePtr, u8 Divisor, u32 SysmonBlk);
+u8 XSysMonPsu_GetAdcClkDivisor(XSysMonPsu *InstancePtr, u32 SysmonBlk);
+s32 XSysMonPsu_SetSeqChEnables(XSysMonPsu *InstancePtr, u32 ChEnableMask,
+ u32 SysmonBlk);
+u32 XSysMonPsu_GetSeqAvgEnables(XSysMonPsu *InstancePtr, u32 SysmonBlk);
+u32 XSysMonPsu_GetSeqChEnables(XSysMonPsu *InstancePtr, u32 SysmonBlk);
+s32 XSysMonPsu_SetSeqAvgEnables(XSysMonPsu *InstancePtr, u32 AvgEnableChMask,
+ u32 SysmonBlk);
+s32 XSysMonPsu_SetSeqInputMode(XSysMonPsu *InstancePtr, u32 InputModeChMask,
+ u32 SysmonBlk);
+u32 XSysMonPsu_GetSeqInputMode(XSysMonPsu *InstancePtr, u32 SysmonBlk);
+s32 XSysMonPsu_SetSeqAcqTime(XSysMonPsu *InstancePtr, u32 AcqCyclesChMask,
+ u32 SysmonBlk);
+u32 XSysMonPsu_GetSeqAcqTime(XSysMonPsu *InstancePtr, u32 SysmonBlk);
+void XSysMonPsu_SetAlarmThreshold(XSysMonPsu *InstancePtr, u8 AlarmThrReg,
+ u16 Value, u32 SysmonBlk);
+u16 XSysMonPsu_GetAlarmThreshold(XSysMonPsu *InstancePtr, u8 AlarmThrReg,
+ u32 SysmonBlk);
+void XSysMonPsu_SetPSAutoConversion(XSysMonPsu *InstancePtr);
+u32 XSysMonPsu_GetMonitorStatus(XSysMonPsu *InstancePtr);
+
+/* interrupt functions in xsysmonpsu_intr.c */
+void XSysMonPsu_IntrEnable(XSysMonPsu *InstancePtr, u64 Mask);
+void XSysMonPsu_IntrDisable(XSysMonPsu *InstancePtr, u64 Mask);
+u64 XSysMonPsu_IntrGetEnabled(XSysMonPsu *InstancePtr);
+u64 XSysMonPsu_IntrGetStatus(XSysMonPsu *InstancePtr);
+void XSysMonPsu_IntrClear(XSysMonPsu *InstancePtr, u64 Mask);
+
+/* Functions in xsysmonpsu_selftest.c */
+s32 XSysMonPsu_SelfTest(XSysMonPsu *InstancePtr);
+
+/* Functions in xsysmonpsu_sinit.c */
+XSysMonPsu_Config *XSysMonPsu_LookupConfig(u16 DeviceId);
+
+
+#endif /* XSYSMONPSU_H_ */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandps_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu_g.c
similarity index 84%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandps_g.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu_g.c
index dd3a3d3fc..ace39e369 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/nandpsu_v1_0/src/xnandps_g.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu_g.c
@@ -1,55 +1,55 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Driver configuration
-*
-*******************************************************************/
-
-#include "xparameters.h"
-#include "xnandpsu.h"
-
-/*
-* The configuration table for devices
-*/
-
-XNandPsu_Config XNandPsu_ConfigTable[] =
-{
- {
- XPAR_PSU_NAND_0_DEVICE_ID,
- XPAR_PSU_NAND_0_BASEADDR
- }
-};
-
-
+
+/*******************************************************************
+*
+* CAUTION: This file is automatically generated by HSI.
+* Version:
+* DO NOT EDIT.
+*
+* Copyright (C) 2010-2016 Xilinx, Inc. All Rights Reserved.*
+*Permission is hereby granted, free of charge, to any person obtaining a copy
+*of this software and associated documentation files (the Software), to deal
+*in the Software without restriction, including without limitation the rights
+*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*copies of the Software, and to permit persons to whom the Software is
+*furnished to do so, subject to the following conditions:
+*
+*The above copyright notice and this permission notice shall be included in
+*all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+*(a) running on a Xilinx device, or
+*(b) that interact with a Xilinx device through a bus or interconnect.
+*
+*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+*XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+*Except as contained in this notice, the name of the Xilinx shall not be used
+*in advertising or otherwise to promote the sale, use or other dealings in
+*this Software without prior written authorization from Xilinx.
+*
+
+*
+* Description: Driver configuration
+*
+*******************************************************************/
+
+#include "xparameters.h"
+#include "xsysmonpsu.h"
+
+/*
+* The configuration table for devices
+*/
+
+XSysMonPsu_Config XSysMonPsu_ConfigTable[] =
+{
+ {
+ XPAR_PSU_AMS_DEVICE_ID,
+ XPAR_PSU_AMS_BASEADDR
+ }
+};
+
+
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu_hw.h
new file mode 100644
index 000000000..3012bf327
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu_hw.h
@@ -0,0 +1,2268 @@
+/******************************************************************************
+*
+* Copyright (C) 2016 Xilinx, Inc. All rights reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+* (a) running on a Xilinx device, or
+* (b) that interact with a Xilinx device through a bus or interconnect.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*
+* Except as contained in this notice, the name of the Xilinx shall not be used
+* in advertising or otherwise to promote the sale, use or other dealings in
+* this Software without prior written authorization from Xilinx.
+*
+******************************************************************************/
+/*****************************************************************************/
+/**
+*
+* @file xsysmonpsu_hw.h
+*
+* This header file contains the identifiers and basic driver functions (or
+* macros) that can be used to access the device. Other driver functions
+* are defined in xsysmonpsu.h.
+*
+*
+* MODIFICATION HISTORY:
+*
+* Ver Who Date Changes
+* ----- ----- -------- -----------------------------------------------
+* 1.0 kvn 12/15/15 First release
+*
+*
+* MODIFICATION HISTORY:
+*
+* Ver Who Date Changes
+* ----- ----- -------- -----------------------------------------------
+* 1.0 kvn 12/15/15 First release
+*
+*
+******************************************************************************/
+
+/***************************** Include Files *********************************/
+
+#include "xsysmonpsu.h"
+
+/************************** Constant Definitions *****************************/
+
+/**************************** Type Definitions *******************************/
+
+/***************** Macros (Inline Functions) Definitions *********************/
+
+/************************** Variable Definitions *****************************/
+
+/************************** Function Prototypes ******************************/
+
+/************************** Variable Definitions ****************************/
+
+/****************************************************************************/
+/**
+*
+* This function enables the specified interrupts in the device.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param Mask is the 64 bit-mask of the interrupts to be enabled.
+* Bit positions of 1 will be enabled. Bit positions of 0 will
+* keep the previous setting. This mask is formed by OR'ing
+* XSYSMONPSU_IER_0_* and XSYSMONPSU_IER_1_* bits defined in
+* xsysmonpsu_hw.h.
+*
+* @return None.
+*
+* @note None.
+*
+*****************************************************************************/
+void XSysMonPsu_IntrEnable(XSysMonPsu *InstancePtr, u64 Mask)
+{
+ u32 RegValue;
+
+ /* Assert the arguments. */
+ Xil_AssertVoid(InstancePtr != NULL);
+ Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ /* Enable the specified interrupts in the AMS Interrupt Enable Register. */
+ RegValue = XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_IER_0_OFFSET);
+ RegValue |= (u32)(Mask & (u64)XSYSMONPSU_IXR_0_MASK);
+ XSysmonPsu_WriteReg(InstancePtr->Config.BaseAddress + XSYSMONPSU_IER_0_OFFSET,
+ RegValue);
+
+ RegValue = XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_IER_1_OFFSET);
+ RegValue |= (u32)((Mask >> XSYSMONPSU_IXR_1_SHIFT) & XSYSMONPSU_IXR_1_MASK);
+ XSysmonPsu_WriteReg(InstancePtr->Config.BaseAddress + XSYSMONPSU_IER_1_OFFSET,
+ RegValue);
+}
+
+/****************************************************************************/
+/**
+*
+* This function disables the specified interrupts in the device.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param Mask is the 64 bit-mask of the interrupts to be disabled.
+* Bit positions of 1 will be disabled. Bit positions of 0 will
+* keep the previous setting. This mask is formed by OR'ing
+* XSYSMONPSU_IDR_0_* and XSYSMONPSU_IDR_1_* bits defined in
+* xsysmonpsu_hw.h.
+*
+* @return None.
+*
+* @note None.
+*
+*****************************************************************************/
+void XSysMonPsu_IntrDisable(XSysMonPsu *InstancePtr, u64 Mask)
+{
+ u32 RegValue;
+
+ /* Assert the arguments. */
+ Xil_AssertVoid(InstancePtr != NULL);
+ Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ /* Disable the specified interrupts in the AMS Interrupt Disable Register. */
+ RegValue = XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_IDR_0_OFFSET);
+ RegValue |= (u32)(Mask & (u64)XSYSMONPSU_IXR_0_MASK);
+ XSysmonPsu_WriteReg(InstancePtr->Config.BaseAddress + XSYSMONPSU_IDR_0_OFFSET,
+ RegValue);
+
+ RegValue = XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_IDR_1_OFFSET);
+ RegValue |= (u32)((Mask >> XSYSMONPSU_IXR_1_SHIFT) & XSYSMONPSU_IXR_1_MASK);
+ XSysmonPsu_WriteReg(InstancePtr->Config.BaseAddress + XSYSMONPSU_IDR_1_OFFSET,
+ RegValue);
+}
+
+/****************************************************************************/
+/**
+*
+* This function returns the enabled interrupts read from the Interrupt Enable
+* Register (IER). Use the XSYSMONPSU_IER_0_* and XSYSMONPSU_IER_1_* constants
+* defined in xsysmonpsu_hw.h to interpret the returned value.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+*
+* @return A 64-bit value representing the contents of the Interrupt Mask
+* Registers (IMR1 IMR0).
+*
+* @note None.
+*
+*****************************************************************************/
+u64 XSysMonPsu_IntrGetEnabled(XSysMonPsu *InstancePtr)
+{
+ u64 MaskedInterrupts;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ /* Return the value read from the AMS Interrupt Mask Register. */
+ MaskedInterrupts = (u64)XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_IMR_0_OFFSET) & (u64)XSYSMONPSU_IXR_0_MASK;
+ MaskedInterrupts |= ((u64)XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_IMR_1_OFFSET) & (u64)XSYSMONPSU_IXR_1_MASK)
+ << XSYSMONPSU_IXR_1_SHIFT;
+
+ return (~MaskedInterrupts);
+}
+
+/****************************************************************************/
+/**
+*
+* This function returns the interrupt status read from Interrupt Status
+* Register(ISR). Use the XSYSMONPSU_ISR_0_* and XSYSMONPSU_ISR_1_ constants
+* defined in xsysmonpsu_hw.h to interpret the returned value.
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+*
+* @return A 64-bit value representing the contents of the Interrupt Status
+* Registers (ISR1 ISR0).
+*
+* @note None.
+*
+*****************************************************************************/
+u64 XSysMonPsu_IntrGetStatus(XSysMonPsu *InstancePtr)
+{
+ u64 IntrStatusRegister;
+
+ /* Assert the arguments. */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ /* Return the value read from the AMS ISR. */
+ IntrStatusRegister = (u64)XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_ISR_0_OFFSET) & (u64)XSYSMONPSU_IXR_0_MASK;
+ IntrStatusRegister |= ((u64)XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_ISR_1_OFFSET) & (u64)XSYSMONPSU_IXR_1_MASK)
+ << XSYSMONPSU_IXR_1_SHIFT;
+
+ return IntrStatusRegister;
+}
+
+/****************************************************************************/
+/**
+*
+* This function clears the specified interrupts in the Interrupt Status
+* Register (ISR).
+*
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
+* @param Mask is the 64 bit-mask of the interrupts to be cleared.
+* Bit positions of 1 will be cleared. Bit positions of 0 will not
+* change the previous interrupt status. This mask is formed by
+* OR'ing the XSYSMONPSU_ISR_0_* and XSYSMONPSU_ISR_1_* bits
+* which are defined in xsysmonpsu_hw.h.
+*
+* @return None.
+*
+* @note None.
+*
+*****************************************************************************/
+void XSysMonPsu_IntrClear(XSysMonPsu *InstancePtr, u64 Mask)
+{
+ u32 RegValue;
+
+ /* Assert the arguments. */
+ Xil_AssertVoid(InstancePtr != NULL);
+ Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
+
+ /* Clear the specified interrupts in the Interrupt Status register. */
+ RegValue = XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_ISR_0_OFFSET);
+ RegValue &= (u32)(Mask & (u64)XSYSMONPSU_IXR_0_MASK);
+ XSysmonPsu_WriteReg(InstancePtr->Config.BaseAddress + XSYSMONPSU_ISR_0_OFFSET,
+ RegValue);
+
+ RegValue = XSysmonPsu_ReadReg(InstancePtr->Config.BaseAddress +
+ XSYSMONPSU_ISR_1_OFFSET);
+ RegValue &= (u32)((Mask >> XSYSMONPSU_IXR_1_SHIFT) & XSYSMONPSU_IXR_1_MASK);
+ XSysmonPsu_WriteReg(InstancePtr->Config.BaseAddress + XSYSMONPSU_ISR_1_OFFSET,
+ RegValue);
+}
+
+
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_hw.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu_selftest.c
similarity index 50%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_hw.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu_selftest.c
index 3c4f510b2..5b709be14 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/spips_v3_0/src/xspips_hw.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu_selftest.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2013 - 2015 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2016 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -18,8 +18,8 @@
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
@@ -32,98 +32,101 @@
/*****************************************************************************/
/**
*
-* @file xspips_hw.c
+* @file xsysmon_selftest.c
*
-* Contains the reset and post boot rom state initialization.
-* Function prototypes in xspips_hw.h
+* This file contains a diagnostic self test function for the XSysMon driver.
+* The self test function does a simple read/write test of the Alarm Threshold
+* Register.
+*
+* See xsysmonpsu.h for more information.
+*
+* @note None.
*
*
+*
* MODIFICATION HISTORY:
*
* Ver Who Date Changes
-* ----- ------ -------- -----------------------------------------------
-* 1.06a hk 08/22/13 First release.
-* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
+* ----- ----- -------- -----------------------------------------------------
+* 1.0 kvn 12/15/15 First release
*
*
*
-******************************************************************************/
-
-/***************************** Include Files *********************************/
+*****************************************************************************/
-#include "xspips_hw.h"
+/***************************** Include Files ********************************/
-/************************** Constant Definitions *****************************/
+#include "xsysmonpsu.h"
+/************************** Constant Definitions ****************************/
-/**************************** Type Definitions *******************************/
+/*
+ * The following constant defines the test value to be written
+ * to the Alarm Threshold Register
+ */
+#define XSM_ATR_TEST_VALUE 0x55U
+/**************************** Type Definitions ******************************/
-/***************** Macros (Inline Functions) Definitions *********************/
+/***************** Macros (Inline Functions) Definitions ********************/
+/************************** Variable Definitions ****************************/
-/************************** Variable Definitions *****************************/
-
+/************************** Function Prototypes *****************************/
/*****************************************************************************/
/**
*
-* Resets the spi module
+* Run a self-test on the driver/device. The test
+* - Resets the device,
+* - Writes a value into the Alarm Threshold register and reads it back
+* for comparison.
+* - Resets the device again.
+*
*
-* @param BaseAddress is the base address of the device.
+* @param InstancePtr is a pointer to the XSysMonPsu instance.
*
-* @return None
+* @return
+* - XST_SUCCESS if the value read from the Alarm Threshold
+* register is the same as the value written.
+* - XST_FAILURE Otherwise
*
-* @note None.
+* @note This is a destructive test in that resets of the device are
+* performed. Refer to the device specification for the
+* device status after the reset operation.
*
******************************************************************************/
-void XSpiPs_ResetHw(u32 BaseAddress)
+s32 XSysMonPsu_SelfTest(XSysMonPsu *InstancePtr)
{
- u32 Check;
- /*
- * Disable Interrupts
- */
- XSpiPs_WriteReg(BaseAddress, XSPIPS_IDR_OFFSET,
- XSPIPS_IXR_DISABLE_ALL_MASK);
+ s32 Status;
+ u32 RegValue;
- /*
- * Disable device
- */
- XSpiPs_WriteReg(BaseAddress, XSPIPS_ER_OFFSET,
- 0U);
- /*
- * Write default value to RX and TX threshold registers
- * RX threshold should be set to 1 here as the corresponding
- * status bit is used to clear the FIFO next
- */
- XSpiPs_WriteReg(BaseAddress, XSPIPS_TXWR_OFFSET,
- (XSPIPS_TXWR_RESET_VALUE & XSPIPS_TXWR_MASK));
- XSpiPs_WriteReg(BaseAddress, XSPIPS_RXWR_OFFSET,
- (XSPIPS_RXWR_RESET_VALUE & XSPIPS_RXWR_MASK));
+ /* Assert the argument */
+ Xil_AssertNonvoid(InstancePtr != NULL);
+ Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- /*
- * Clear RXFIFO
- */
- Check = (XSpiPs_ReadReg(BaseAddress,XSPIPS_SR_OFFSET) &
- XSPIPS_IXR_RXNEMPTY_MASK);
- while (Check != 0U) {
- (void)XSpiPs_ReadReg(BaseAddress, XSPIPS_RXD_OFFSET);
- Check = (XSpiPs_ReadReg(BaseAddress,XSPIPS_SR_OFFSET) &
- XSPIPS_IXR_RXNEMPTY_MASK);
- }
+ /* Reset the device to get it back to its default state */
+ XSysMonPsu_Reset(InstancePtr);
/*
- * Clear status register by writing 1 to the write to clear bits
+ * Write a value into the Alarm Threshold registers, read it back, and
+ * do the comparison
*/
- XSpiPs_WriteReg(BaseAddress, XSPIPS_SR_OFFSET,
- XSPIPS_IXR_WR_TO_CLR_MASK);
+ XSysMonPsu_SetAlarmThreshold(InstancePtr, XSM_ATR_SUP1_UPPER,
+ XSM_ATR_TEST_VALUE, XSYSMON_PS);
+ RegValue = (u32)XSysMonPsu_GetAlarmThreshold(InstancePtr,
+ XSM_ATR_SUP1_UPPER, XSYSMON_PS);
+
+ if (RegValue == XSM_ATR_TEST_VALUE) {
+ Status = XST_SUCCESS;
+ } else {
+ Status = XST_FAILURE;
+ }
- /*
- * Write default value to configuration register
- * De-select all slaves
- */
- XSpiPs_WriteReg(BaseAddress, XSPIPS_CR_OFFSET,
- XSPIPS_CR_RESET_STATE |
- XSPIPS_CR_SSCTRL_MASK);
+ /* Reset the device again to its default state. */
+ XSysMonPsu_Reset(InstancePtr);
+ /* Return the test result. */
+ return Status;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu_sinit.c
similarity index 66%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_sinit.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu_sinit.c
index 84bbc35b0..34249a209 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/sysmonpsu_v1_0/src/xsysmonpsu_sinit.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
+* Copyright (C) 2016 Xilinx, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -18,8 +18,8 @@
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
@@ -29,68 +29,71 @@
* this Software without prior written authorization from Xilinx.
*
******************************************************************************/
-/****************************************************************************/
+/*****************************************************************************/
/**
*
-* @file xusbpsu_sinit.h
+* @file xsysmonpsu_sinit.c
+*
+* This file contains the implementation of the XSysMonPsu driver's static
+* initialization functionality.
*
+* @note None.
*
*
+*
* MODIFICATION HISTORY:
*
-* Ver Who Date Changes
-* ----- ---- -------- -------------------------------------------------------
-* 1.00a bss 01/22/15 First release
+* Ver Who Date Changes
+* ----- ----- -------- -----------------------------------------------
+* 1.0 kvn 12/15/15 First release.
*
*
*
-*****************************************************************************/
+******************************************************************************/
/***************************** Include Files *********************************/
+#include "xsysmonpsu.h"
#include "xparameters.h"
-#include "xusbpsu.h"
/************************** Constant Definitions *****************************/
-
/**************************** Type Definitions *******************************/
-
/***************** Macros (Inline Functions) Definitions *********************/
-
/************************** Function Prototypes ******************************/
-
/************************** Variable Definitions *****************************/
-extern XUsbPsu_Config XUsbPsu_ConfigTable[];
-
+extern XSysMonPsu_Config XSysMonPsu_ConfigTable[];
/*****************************************************************************/
/**
-* Lookup the device configuration based on the unique device ID. The table
-* contains the configuration info for each device in the system.
*
-* @param DeviceId is the unique device ID of the device being looked up.
+* This function looks for the device configuration based on the unique device
+* ID. The table XSysmonPsu_ConfigTable[] contains the configuration information
+* for each device in the system.
+*
+* @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.
*
-* @return
-* A pointer to the configuration table entry corresponding to the given
-* device ID, or NULL if no match is found.
+* @note None.
*
******************************************************************************/
-XUsbPsu_Config *XUsbPsu_LookupConfig(u16 DeviceId)
+XSysMonPsu_Config *XSysMonPsu_LookupConfig(u16 DeviceId)
{
- XUsbPsu_Config *CfgPtr = NULL;
- int i;
+ XSysMonPsu_Config *CfgPtr = NULL;
+ u32 Index;
- for (i = 0; i < XPAR_XUSBPSU_NUM_INSTANCES; i++) {
- if (XUsbPsu_ConfigTable[i].DeviceId == DeviceId) {
- CfgPtr = &XUsbPsu_ConfigTable[i];
+ for (Index = 0U; Index < (u32)XPAR_XSYSMONPSU_NUM_INSTANCES; Index++) {
+ if (XSysMonPsu_ConfigTable[Index].DeviceId == DeviceId) {
+ CfgPtr = &XSysMonPsu_ConfigTable[Index];
break;
}
}
- return (CfgPtr);
+ return CfgPtr;
}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps.h
deleted file mode 100644
index 86bcb97cc..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps.h
+++ /dev/null
@@ -1,408 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xttcps.h
-*
-* This is the driver for one 16-bit timer counter in the Triple Timer Counter
-* (TTC) module in the Ps block.
-*
-* The TTC module provides three independent timer/counter modules that can each
-* be clocked using either the system clock (pclk) or an externally driven
-* clock (ext_clk). In addition, each counter can independently prescale its
-* selected clock input (divided by 2 to 65536). Counters can be set to
-* decrement or increment.
-*
-* Each of the counters can be programmed to generate interrupt pulses:
-* . At a regular, predefined period, that is on a timed interval
-* . When the counter registers overflow
-* . When the count matches any one of the three 'match' registers
-*
-* Therefore, up to six different events can trigger a timer interrupt: three
-* match interrupts, an overflow interrupt, an interval interrupt and an event
-* timer interrupt. Note that the overflow interrupt and the interval interrupt
-* are mutually exclusive.
-*
-* Initialization & Configuration
-*
-* An XTtcPs_Config structure is used to configure a driver instance.
-* Information in the XTtcPs_Config structure is the hardware properties
-* about the device.
-*
-* A driver instance is initialized through
-* XTtcPs_CfgInitialize(InstancePtr, CfgPtr, EffectiveAddr). Where CfgPtr
-* is a pointer to the XTtcPs_Config structure, it can be looked up statically
-* through XTtcPs_LookupConfig(DeviceID), or passed in by the caller. The
-* EffectiveAddr can be the static base address of the device or virtual
-* mapped address if address translation is supported.
-*
-* Interrupts
-*
-* Interrupt handler is not provided by the driver, as handling of interrupt
-* is application specific.
-*
-* @note
-* The default setting for a timer/counter is:
-* - Overflow Mode
-* - Internal clock (pclk) selected
-* - Counter disabled
-* - All Interrupts disabled
-* - Output waveforms disabled
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- -----------------------------------------------------
-* 1.00a drg/jz 01/20/10 First release..
-* 2.0 adk 12/10/13 Updated as per the New Tcl API's
-* 3.0 pkp 12/09/14 Added support for Zynq Ultrascale Mp.Also code
-* modified for MISRA-C:2012 compliance.
-*
-*
-******************************************************************************/
-
-#ifndef XTTCPS_H /* prevent circular inclusions */
-#define XTTCPS_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files *********************************/
-
-#include "xttcps_hw.h"
-#include "xstatus.h"
-
-/************************** Constant Definitions *****************************/
-
-/** @name Configuration options
- *
- * Options for the device. Each of the options is bit field, so more than one
- * options can be specified.
- *
- * @{
- */
-#define XTTCPS_OPTION_EXTERNAL_CLK 0x00000001U /**< External clock source */
-#define XTTCPS_OPTION_CLK_EDGE_NEG 0x00000002U /**< Clock on trailing edge for
- external clock*/
-#define XTTCPS_OPTION_INTERVAL_MODE 0x00000004U /**< Interval mode */
-#define XTTCPS_OPTION_DECREMENT 0x00000008U /**< Decrement the counter */
-#define XTTCPS_OPTION_MATCH_MODE 0x00000010U /**< Match mode */
-#define XTTCPS_OPTION_WAVE_DISABLE 0x00000020U /**< No waveform output */
-#define XTTCPS_OPTION_WAVE_POLARITY 0x00000040U /**< Waveform polarity */
-/*@}*/
-
-/**************************** Type Definitions *******************************/
-
-/**
- * This typedef contains configuration information for the device.
- */
-typedef struct {
- u16 DeviceId; /**< Unique ID for device */
- u32 BaseAddress; /**< Base address for device */
- u32 InputClockHz; /**< Input clock frequency */
-} XTtcPs_Config;
-
-/**
- * The XTtcPs driver instance data. The user is required to allocate a
- * variable of this type for each PS timer/counter device in the system. A
- * pointer to a variable of this type is then passed to various driver API
- * functions.
- */
-typedef struct {
- XTtcPs_Config Config; /**< Configuration structure */
- u32 IsReady; /**< Device is initialized and ready */
-} XTtcPs;
-
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/*
- * Internal helper macros
- */
-#define InstReadReg(InstancePtr, RegOffset) \
- (Xil_In32(((InstancePtr)->Config.BaseAddress) + (u32)(RegOffset)))
-
-#define InstWriteReg(InstancePtr, RegOffset, Data) \
- (Xil_Out32(((InstancePtr)->Config.BaseAddress) + (u32)(RegOffset), (u32)(Data)))
-
-/*****************************************************************************/
-/**
-*
-* This function starts the counter/timer without resetting the counter value.
-*
-* @param InstancePtr is a pointer to the XTtcPs instance.
-*
-* @return None
-*
-* @note C-style signature:
-* void XTtcPs_Start(XTtcPs *InstancePtr)
-*
-****************************************************************************/
-#define XTtcPs_Start(InstancePtr) \
- InstWriteReg((InstancePtr), XTTCPS_CNT_CNTRL_OFFSET, \
- (InstReadReg((InstancePtr), XTTCPS_CNT_CNTRL_OFFSET) & \
- ~XTTCPS_CNT_CNTRL_DIS_MASK))
-
-/*****************************************************************************/
-/**
-*
-* This function stops the counter/timer. This macro may be called at any time
-* to stop the counter. The counter holds the last value until it is reset,
-* restarted or enabled.
-*
-* @param InstancePtr is a pointer to the XTtcPs instance.
-*
-* @return None
-*
-* @note C-style signature:
-* void XTtcPs_Stop(XTtcPs *InstancePtr)
-*
-****************************************************************************/
-#define XTtcPs_Stop(InstancePtr) \
- InstWriteReg((InstancePtr), XTTCPS_CNT_CNTRL_OFFSET, \
- (InstReadReg((InstancePtr), XTTCPS_CNT_CNTRL_OFFSET) | \
- XTTCPS_CNT_CNTRL_DIS_MASK))
-
-/*****************************************************************************/
-/**
-*
-* This function checks whether the timer counter has already started.
-*
-* @param InstancePtr is a pointer to the XTtcPs instance
-*
-* @return Non-zero if the device has started, '0' otherwise.
-*
-* @note C-style signature:
-* int XTtcPs_IsStarted(XTtcPs *InstancePtr)
-*
-****************************************************************************/
-#define XTtcPs_IsStarted(InstancePtr) \
- ((InstReadReg((InstancePtr), XTTCPS_CNT_CNTRL_OFFSET) & \
- XTTCPS_CNT_CNTRL_DIS_MASK) == 0U)
-
-/*****************************************************************************/
-/**
-*
-* This function returns the current 16-bit counter value. It may be called at
-* any time.
-*
-* @param InstancePtr is a pointer to the XTtcPs instance.
-*
-* @return 16-bit counter value.
-*
-* @note C-style signature:
-* u16 XTtcPs_GetCounterValue(XTtcPs *InstancePtr)
-*
-****************************************************************************/
-#define XTtcPs_GetCounterValue(InstancePtr) \
- (u16)InstReadReg((InstancePtr), XTTCPS_COUNT_VALUE_OFFSET)
-
-/*****************************************************************************/
-/**
-*
-* This function sets the interval value to be used in interval mode.
-*
-* @param InstancePtr is a pointer to the XTtcPs instance.
-* @param Value is the 16-bit value to be set in the interval register.
-*
-* @return None
-*
-* @note C-style signature:
-* void XTtcPs_SetInterval(XTtcPs *InstancePtr, u16 Value)
-*
-****************************************************************************/
-#define XTtcPs_SetInterval(InstancePtr, Value) \
- InstWriteReg((InstancePtr), XTTCPS_INTERVAL_VAL_OFFSET, (Value))
-
-/*****************************************************************************/
-/**
-*
-* This function gets the interval value from the interval register.
-*
-* @param InstancePtr is a pointer to the XTtcPs instance.
-*
-* @return 16-bit interval value
-*
-* @note C-style signature:
-* u16 XTtcPs_GetInterval(XTtcPs *InstancePtr)
-*
-****************************************************************************/
-#define XTtcPs_GetInterval(InstancePtr) \
- (u16)InstReadReg((InstancePtr), XTTCPS_INTERVAL_VAL_OFFSET)
-
-/*****************************************************************************/
-/**
-*
-* This macro resets the count register. It may be called at any time. The
-* counter is reset to either 0 or 0xFFFF, or the interval value, depending on
-* the increment/decrement mode. The state of the counter, as started or
-* stopped, is not affected by calling reset.
-*
-* @param InstancePtr is a pointer to the XTtcPs instance.
-*
-* @return None
-*
-* @note C-style signature:
-* void XTtcPs_ResetCounterValue(XTtcPs *InstancePtr)
-*
-****************************************************************************/
-#define XTtcPs_ResetCounterValue(InstancePtr) \
- InstWriteReg((InstancePtr), XTTCPS_CNT_CNTRL_OFFSET, \
- (InstReadReg((InstancePtr), XTTCPS_CNT_CNTRL_OFFSET) | \
- (u32)XTTCPS_CNT_CNTRL_RST_MASK))
-
-/*****************************************************************************/
-/**
-*
-* This function enables the interrupts.
-*
-* @param InstancePtr is a pointer to the XTtcPs instance.
-* @param InterruptMask defines which interrupt should be enabled.
-* Constants are defined in xttcps_hw.h as XTTCPS_IXR_*.
-* This is a bit mask, all set bits will be enabled, cleared bits
-* will not be disabled.
-*
-* @return None.
-*
-* @note
-* C-style signature:
-* void XTtcPs_EnableInterrupts(XTtcPs *InstancePtr, u32 InterruptMask)
-*
-******************************************************************************/
-#define XTtcPs_EnableInterrupts(InstancePtr, InterruptMask) \
- InstWriteReg((InstancePtr), XTTCPS_IER_OFFSET, \
- (InstReadReg((InstancePtr), XTTCPS_IER_OFFSET) | \
- (InterruptMask)))
-
-/*****************************************************************************/
-/**
-*
-* This function disables the interrupts.
-*
-* @param InstancePtr is a pointer to the XTtcPs instance.
-* @param InterruptMask defines which interrupt should be disabled.
-* Constants are defined in xttcps_hw.h as XTTCPS_IXR_*.
-* This is a bit mask, all set bits will be disabled, cleared bits
-* will not be disabled.
-*
-* @return None.
-*
-* @note
-* C-style signature:
-* void XTtcPs_DisableInterrupts(XTtcPs *InstancePtr, u32 InterruptMask)
-*
-******************************************************************************/
-#define XTtcPs_DisableInterrupts(InstancePtr, InterruptMask) \
- InstWriteReg((InstancePtr), XTTCPS_IER_OFFSET, \
- (InstReadReg((InstancePtr), XTTCPS_IER_OFFSET) & \
- ~(InterruptMask)))
-
-/*****************************************************************************/
-/**
-*
-* This function reads the interrupt status.
-*
-* @param InstancePtr is a pointer to the XTtcPs instance.
-*
-* @return None.
-*
-* @note C-style signature:
-* u32 XTtcPs_GetInterruptStatus(XTtcPs *InstancePtr)
-*
-******************************************************************************/
-#define XTtcPs_GetInterruptStatus(InstancePtr) \
- InstReadReg((InstancePtr), XTTCPS_ISR_OFFSET)
-
-/*****************************************************************************/
-/**
-*
-* This function clears the interrupt status.
-*
-* @param InstancePtr is a pointer to the XTtcPs instance.
-* @param InterruptMask defines which interrupt should be cleared.
-* Constants are defined in xttcps_hw.h as XTTCPS_IXR_*.
-* This is a bit mask, all set bits will be cleared, cleared bits
-* will not be cleared.
-*
-* @return None.
-*
-* @note
-* C-style signature:
-* void XTtcPs_ClearInterruptStatus(XTtcPs *InstancePtr, u32 InterruptMask)
-*
-******************************************************************************/
-#define XTtcPs_ClearInterruptStatus(InstancePtr, InterruptMask) \
- InstWriteReg((InstancePtr), XTTCPS_ISR_OFFSET, \
- (InterruptMask))
-
-
-/************************** Function Prototypes ******************************/
-
-/*
- * Initialization functions in xttcps_sinit.c
- */
-XTtcPs_Config *XTtcPs_LookupConfig(u16 DeviceId);
-
-/*
- * Required functions, in xttcps.c
- */
-s32 XTtcPs_CfgInitialize(XTtcPs *InstancePtr,
- XTtcPs_Config * ConfigPtr, u32 EffectiveAddr);
-
-void XTtcPs_SetMatchValue(XTtcPs *InstancePtr, u8 MatchIndex, u16 Value);
-u16 XTtcPs_GetMatchValue(XTtcPs *InstancePtr, u8 MatchIndex);
-
-void XTtcPs_SetPrescaler(XTtcPs *InstancePtr, u8 PrescalerValue);
-u8 XTtcPs_GetPrescaler(XTtcPs *InstancePtr);
-
-void XTtcPs_CalcIntervalFromFreq(XTtcPs *InstancePtr, u32 Freq,
- u16 *Interval, u8 *Prescaler);
-
-/*
- * Functions for options, in file xttcps_options.c
- */
-s32 XTtcPs_SetOptions(XTtcPs *InstancePtr, u32 Options);
-u32 XTtcPs_GetOptions(XTtcPs *InstancePtr);
-
-/*
- * Function for self-test, in file xttcps_selftest.c
- */
-s32 XTtcPs_SelfTest(XTtcPs *InstancePtr);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/Makefile
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/Makefile
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/Makefile
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps.c
index de19fcc66..4534553f6 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps.c
@@ -33,6 +33,8 @@
/**
*
* @file xttcps.c
+* @addtogroup ttcps_v3_0
+* @{
*
* This file contains the implementation of the XTtcPs driver. This driver
* controls the operation of one timer counter in the Triple Timer Counter (TTC)
@@ -46,6 +48,8 @@
* ----- ------ -------- -------------------------------------------------
* 1.00a drg/jz 01/21/10 First release
* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
+* 3.01 pkp 01/30/16 Modified XTtcPs_CfgInitialize to add XTtcps_Stop
+* to stop the timer before configuring
*
*
*
@@ -128,6 +132,11 @@ s32 XTtcPs_CfgInitialize(XTtcPs *InstancePtr, XTtcPs_Config *ConfigPtr,
if(IsStartResult == (u32)TRUE) {
Status = XST_DEVICE_IS_STARTED;
} else {
+
+ /*
+ * stop the timer before configuring
+ */
+ XTtcPs_Stop(InstancePtr);
/*
* Reset the count control register to it's default value.
*/
@@ -429,3 +438,4 @@ void XTtcPs_CalcIntervalFromFreq(XTtcPs *InstancePtr, u32 Freq,
*Prescaler = 0XFFU;
return;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xttcps.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps.h
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xttcps.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps.h
index 86bcb97cc..646d24db5 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xttcps.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps.h
@@ -33,6 +33,9 @@
/**
*
* @file xttcps.h
+* @addtogroup ttcps_v3_0
+* @{
+* @details
*
* This is the driver for one 16-bit timer counter in the Triple Timer Counter
* (TTC) module in the Ps block.
@@ -406,3 +409,4 @@ s32 XTtcPs_SelfTest(XTtcPs *InstancePtr);
#endif
#endif /* end of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps_g.c
similarity index 92%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps_g.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps_g.c
index da161db1e..10c16eb02 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps_g.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps_g.c
@@ -1,111 +1,111 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Driver configuration
-*
-*******************************************************************/
-
-#include "xparameters.h"
-#include "xttcps.h"
-
-/*
-* The configuration table for devices
-*/
-
-XTtcPs_Config XTtcPs_ConfigTable[] =
-{
- {
- XPAR_PSU_TTC_0_DEVICE_ID,
- XPAR_PSU_TTC_0_BASEADDR,
- XPAR_PSU_TTC_0_TTC_CLK_FREQ_HZ
- },
- {
- XPAR_PSU_TTC_1_DEVICE_ID,
- XPAR_PSU_TTC_1_BASEADDR,
- XPAR_PSU_TTC_1_TTC_CLK_FREQ_HZ
- },
- {
- XPAR_PSU_TTC_2_DEVICE_ID,
- XPAR_PSU_TTC_2_BASEADDR,
- XPAR_PSU_TTC_2_TTC_CLK_FREQ_HZ
- },
- {
- XPAR_PSU_TTC_3_DEVICE_ID,
- XPAR_PSU_TTC_3_BASEADDR,
- XPAR_PSU_TTC_3_TTC_CLK_FREQ_HZ
- },
- {
- XPAR_PSU_TTC_4_DEVICE_ID,
- XPAR_PSU_TTC_4_BASEADDR,
- XPAR_PSU_TTC_4_TTC_CLK_FREQ_HZ
- },
- {
- XPAR_PSU_TTC_5_DEVICE_ID,
- XPAR_PSU_TTC_5_BASEADDR,
- XPAR_PSU_TTC_5_TTC_CLK_FREQ_HZ
- },
- {
- XPAR_PSU_TTC_6_DEVICE_ID,
- XPAR_PSU_TTC_6_BASEADDR,
- XPAR_PSU_TTC_6_TTC_CLK_FREQ_HZ
- },
- {
- XPAR_PSU_TTC_7_DEVICE_ID,
- XPAR_PSU_TTC_7_BASEADDR,
- XPAR_PSU_TTC_7_TTC_CLK_FREQ_HZ
- },
- {
- XPAR_PSU_TTC_8_DEVICE_ID,
- XPAR_PSU_TTC_8_BASEADDR,
- XPAR_PSU_TTC_8_TTC_CLK_FREQ_HZ
- },
- {
- XPAR_PSU_TTC_9_DEVICE_ID,
- XPAR_PSU_TTC_9_BASEADDR,
- XPAR_PSU_TTC_9_TTC_CLK_FREQ_HZ
- },
- {
- XPAR_PSU_TTC_10_DEVICE_ID,
- XPAR_PSU_TTC_10_BASEADDR,
- XPAR_PSU_TTC_10_TTC_CLK_FREQ_HZ
- },
- {
- XPAR_PSU_TTC_11_DEVICE_ID,
- XPAR_PSU_TTC_11_BASEADDR,
- XPAR_PSU_TTC_11_TTC_CLK_FREQ_HZ
- }
-};
-
-
+
+/*******************************************************************
+*
+* CAUTION: This file is automatically generated by HSI.
+* Version:
+* DO NOT EDIT.
+*
+* Copyright (C) 2010-2016 Xilinx, Inc. All Rights Reserved.*
+*Permission is hereby granted, free of charge, to any person obtaining a copy
+*of this software and associated documentation files (the Software), to deal
+*in the Software without restriction, including without limitation the rights
+*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*copies of the Software, and to permit persons to whom the Software is
+*furnished to do so, subject to the following conditions:
+*
+*The above copyright notice and this permission notice shall be included in
+*all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+*(a) running on a Xilinx device, or
+*(b) that interact with a Xilinx device through a bus or interconnect.
+*
+*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+*XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+*Except as contained in this notice, the name of the Xilinx shall not be used
+*in advertising or otherwise to promote the sale, use or other dealings in
+*this Software without prior written authorization from Xilinx.
+*
+
+*
+* Description: Driver configuration
+*
+*******************************************************************/
+
+#include "xparameters.h"
+#include "xttcps.h"
+
+/*
+* The configuration table for devices
+*/
+
+XTtcPs_Config XTtcPs_ConfigTable[] =
+{
+ {
+ XPAR_PSU_TTC_0_DEVICE_ID,
+ XPAR_PSU_TTC_0_BASEADDR,
+ XPAR_PSU_TTC_0_TTC_CLK_FREQ_HZ
+ },
+ {
+ XPAR_PSU_TTC_1_DEVICE_ID,
+ XPAR_PSU_TTC_1_BASEADDR,
+ XPAR_PSU_TTC_1_TTC_CLK_FREQ_HZ
+ },
+ {
+ XPAR_PSU_TTC_2_DEVICE_ID,
+ XPAR_PSU_TTC_2_BASEADDR,
+ XPAR_PSU_TTC_2_TTC_CLK_FREQ_HZ
+ },
+ {
+ XPAR_PSU_TTC_3_DEVICE_ID,
+ XPAR_PSU_TTC_3_BASEADDR,
+ XPAR_PSU_TTC_3_TTC_CLK_FREQ_HZ
+ },
+ {
+ XPAR_PSU_TTC_4_DEVICE_ID,
+ XPAR_PSU_TTC_4_BASEADDR,
+ XPAR_PSU_TTC_4_TTC_CLK_FREQ_HZ
+ },
+ {
+ XPAR_PSU_TTC_5_DEVICE_ID,
+ XPAR_PSU_TTC_5_BASEADDR,
+ XPAR_PSU_TTC_5_TTC_CLK_FREQ_HZ
+ },
+ {
+ XPAR_PSU_TTC_6_DEVICE_ID,
+ XPAR_PSU_TTC_6_BASEADDR,
+ XPAR_PSU_TTC_6_TTC_CLK_FREQ_HZ
+ },
+ {
+ XPAR_PSU_TTC_7_DEVICE_ID,
+ XPAR_PSU_TTC_7_BASEADDR,
+ XPAR_PSU_TTC_7_TTC_CLK_FREQ_HZ
+ },
+ {
+ XPAR_PSU_TTC_8_DEVICE_ID,
+ XPAR_PSU_TTC_8_BASEADDR,
+ XPAR_PSU_TTC_8_TTC_CLK_FREQ_HZ
+ },
+ {
+ XPAR_PSU_TTC_9_DEVICE_ID,
+ XPAR_PSU_TTC_9_BASEADDR,
+ XPAR_PSU_TTC_9_TTC_CLK_FREQ_HZ
+ },
+ {
+ XPAR_PSU_TTC_10_DEVICE_ID,
+ XPAR_PSU_TTC_10_BASEADDR,
+ XPAR_PSU_TTC_10_TTC_CLK_FREQ_HZ
+ },
+ {
+ XPAR_PSU_TTC_11_DEVICE_ID,
+ XPAR_PSU_TTC_11_BASEADDR,
+ XPAR_PSU_TTC_11_TTC_CLK_FREQ_HZ
+ }
+};
+
+
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps_hw.h
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps_hw.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps_hw.h
index 8f12e3c10..af78bcd67 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps_hw.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps_hw.h
@@ -33,6 +33,8 @@
/**
*
* @file xttcps_hw.h
+* @addtogroup ttcps_v3_0
+* @{
*
* This file defines the hardware interface to one of the three timer counters
* in the Ps block.
@@ -207,3 +209,4 @@ extern "C" {
}
#endif
#endif /* end of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps_options.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps_options.c
similarity index 99%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps_options.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps_options.c
index 26c7264e7..532b235c5 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps_options.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps_options.c
@@ -33,6 +33,8 @@
/**
*
* @file xttcps_options.c
+* @addtogroup ttcps_v3_0
+* @{
*
* This file contains functions to get or set option features for the device.
*
@@ -238,3 +240,4 @@ u32 XTtcPs_GetOptions(XTtcPs *InstancePtr)
return OptionsFlag;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps_selftest.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps_selftest.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps_selftest.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps_selftest.c
index da4354fd3..4923df667 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps_selftest.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps_selftest.c
@@ -33,6 +33,8 @@
/**
*
* @file xttcps_selftest.c
+* @addtogroup ttcps_v3_0
+* @{
*
* This file contains the implementation of self test function for the
* XTtcPs driver.
@@ -104,3 +106,4 @@ s32 XTtcPs_SelfTest(XTtcPs *InstancePtr)
}
return Status;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps_sinit.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps_sinit.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps_sinit.c
index fe524ed16..ef3c6ea6b 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_0/src/xttcps_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/ttcps_v3_1/src/xttcps_sinit.c
@@ -33,6 +33,8 @@
/**
*
* @file xttcps_sinit.c
+* @addtogroup ttcps_v3_0
+* @{
*
* The implementation of the XTtcPs driver's static initialization functionality.
*
@@ -93,3 +95,4 @@ XTtcPs_Config *XTtcPs_LookupConfig(u16 DeviceId)
return (XTtcPs_Config *)CfgPtr;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps.h
deleted file mode 100644
index ae72e66d7..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps.h
+++ /dev/null
@@ -1,509 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/****************************************************************************/
-/**
-*
-* @file xuartps.h
-*
-* This driver supports the following features:
-*
-* - Dynamic data format (baud rate, data bits, stop bits, parity)
-* - Polled mode
-* - Interrupt driven mode
-* - Transmit and receive FIFOs (32 byte FIFO depth)
-* - Access to the external modem control lines
-*
-* Initialization & Configuration
-*
-* The XUartPs_Config structure is used by the driver to configure itself.
-* Fields inside this structure are properties of XUartPs based on its hardware
-* build.
-*
-* To support multiple runtime loading and initialization strategies employed
-* by various operating systems, the driver instance can be initialized in the
-* following way:
-*
-* - XUartPs_CfgInitialize(InstancePtr, CfgPtr, EffectiveAddr) - Uses a
-* configuration structure provided by the caller. If running in a system
-* with address translation, the parameter EffectiveAddr should be the
-* virtual address.
-*
-* Baud Rate
-*
-* The UART has an internal baud rate generator, which furnishes the baud rate
-* clock for both the receiver and the transmitter. Ther input clock frequency
-* can be either the master clock or the master clock divided by 8, configured
-* through the mode register.
-*
-* Accompanied with the baud rate divider register, the baud rate is determined
-* by:
-*
-* where bgen is the value of the baud rate generator, and bdiv is the value of
-* baud rate divider.
-*
-* Interrupts
-*
-* The FIFOs are not flushed when the driver is initialized, but a function is
-* provided to allow the user to reset the FIFOs if desired.
-*
-* The driver defaults to no interrupts at initialization such that interrupts
-* must be enabled if desired. An interrupt is generated for one of the
-* following conditions.
-*
-* - A change in the modem signals
-* - Data in the receive FIFO for a configuable time without receiver activity
-* - A parity error
-* - A framing error
-* - An overrun error
-* - Transmit FIFO is full
-* - Transmit FIFO is empty
-* - Receive FIFO is full
-* - Receive FIFO is empty
-* - Data in the receive FIFO equal to the receive threshold
-*
-* The application can control which interrupts are enabled using the
-* XUartPs_SetInterruptMask() function.
-*
-* In order to use interrupts, it is necessary for the user to connect the
-* driver interrupt handler, XUartPs_InterruptHandler(), to the interrupt
-* system of the application. A separate handler should be provided by the
-* application to communicate with the interrupt system, and conduct
-* application specific interrupt handling. An application registers its own
-* handler through the XUartPs_SetHandler() function.
-*
-* Data Transfer
-*
-* The functions, XUartPs_Send() and XUartPs_Recv(), are provided in the
-* driver to allow data to be sent and received. They can be used in either
-* polled or interrupt mode.
-*
-* @note
-*
-* The default configuration for the UART after initialization is:
-*
-* - 9,600 bps or XPAR_DFT_BAUDRATE if defined
-* - 8 data bits
-* - 1 stop bit
-* - no parity
-* - FIFO's are enabled with a receive threshold of 8 bytes
-* - The RX timeout is enabled with a timeout of 1 (4 char times)
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- ----------------------------------------------
-* 1.00a drg/jz 01/12/10 First Release
-* 1.00a sdm 09/27/11 Fixed compiler warnings and also a bug
-* in XUartPs_SetFlowDelay where the value was not
-* being written to the register.
-* 1.01a sdm 12/20/11 Removed the InputClockHz parameter from the XUartPs
-* instance structure and the driver is updated to use
-* InputClockHz parameter from the XUartPs_Config config
-* structure.
-* Added a parameter to XUartPs_Config structure which
-* specifies whether the user has selected Modem pins
-* to be connected to MIO or FMIO.
-* Added the tcl file to generate the xparameters.h
-* 1.02a sg 05/16/12 Changed XUARTPS_RXWM_MASK to 0x3F for CR 652540 fix.
-* 1.03a sg 07/16/12 Updated XUARTPS_FORMAT_7_BITS and XUARTPS_FORMAT_6_BITS
-* with the correct values for CR 666724
-* Added defines for XUARTPS_IXR_TOVR, XUARTPS_IXR_TNFUL
-* and XUARTPS_IXR_TTRIG.
-* Modified the name of these defines
-* XUARTPS_MEDEMSR_DCDX to XUARTPS_MODEMSR_DDCD
-* XUARTPS_MEDEMSR_RIX to XUARTPS_MODEMSR_TERI
-* XUARTPS_MEDEMSR_DSRX to XUARTPS_MODEMSR_DDSR
-* XUARTPS_MEDEMSR_CTSX to XUARTPS_MODEMSR_DCTS
-* 1.05a hk 08/22/13 Added API for uart reset and related
-* constant definitions.
-* 2.0 hk 03/07/14 Version number revised.
-* 2.1 hk 04/16/14 Change XUARTPS_MAX_RATE to 921600. CR# 780625.
-* 2.2 hk 06/23/14 SW reset of RX and TX should be done when changing
-* baud rate. CR# 804281.
-* 3.0 vm 12/09/14 Modified source code according to misrac guideline.
-* Support for Zynq Ultrascale Mp added.
-*
-*
-*
-*****************************************************************************/
-
-#ifndef XUARTPS_H /* prevent circular inclusions */
-#define XUARTPS_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files ********************************/
-
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xstatus.h"
-#include "xuartps_hw.h"
-
-/************************** Constant Definitions ****************************/
-
-/*
- * The following constants indicate the max and min baud rates and these
- * numbers are based only on the testing that has been done. The hardware
- * is capable of other baud rates.
- */
-#define XUARTPS_MAX_RATE 921600U
-#define XUARTPS_MIN_RATE 110U
-
-#define XUARTPS_DFT_BAUDRATE 115200U /* Default baud rate */
-
-/** @name Configuration options
- * @{
- */
-/**
- * These constants specify the options that may be set or retrieved
- * with the driver, each is a unique bit mask such that multiple options
- * may be specified. These constants indicate the available options
- * in active state.
- *
- */
-
-#define XUARTPS_OPTION_SET_BREAK 0x0080U /**< Starts break transmission */
-#define XUARTPS_OPTION_STOP_BREAK 0x0040U /**< Stops break transmission */
-#define XUARTPS_OPTION_RESET_TMOUT 0x0020U /**< Reset the receive timeout */
-#define XUARTPS_OPTION_RESET_TX 0x0010U /**< Reset the transmitter */
-#define XUARTPS_OPTION_RESET_RX 0x0008U /**< Reset the receiver */
-#define XUARTPS_OPTION_ASSERT_RTS 0x0004U /**< Assert the RTS bit */
-#define XUARTPS_OPTION_ASSERT_DTR 0x0002U /**< Assert the DTR bit */
-#define XUARTPS_OPTION_SET_FCM 0x0001U /**< Turn on flow control mode */
-/*@}*/
-
-
-/** @name Channel Operational Mode
- *
- * The UART can operate in one of four modes: Normal, Local Loopback, Remote
- * Loopback, or automatic echo.
- *
- * @{
- */
-
-#define XUARTPS_OPER_MODE_NORMAL (u8)0x00U /**< Normal Mode */
-#define XUARTPS_OPER_MODE_AUTO_ECHO (u8)0x01U /**< Auto Echo Mode */
-#define XUARTPS_OPER_MODE_LOCAL_LOOP (u8)0x02U /**< Local Loopback Mode */
-#define XUARTPS_OPER_MODE_REMOTE_LOOP (u8)0x03U /**< Remote Loopback Mode */
-
-/* @} */
-
-/** @name Data format values
- *
- * These constants specify the data format that the driver supports.
- * The data format includes the number of data bits, the number of stop
- * bits and parity.
- *
- * @{
- */
-#define XUARTPS_FORMAT_8_BITS 0U /**< 8 data bits */
-#define XUARTPS_FORMAT_7_BITS 2U /**< 7 data bits */
-#define XUARTPS_FORMAT_6_BITS 3U /**< 6 data bits */
-
-#define XUARTPS_FORMAT_NO_PARITY 4U /**< No parity */
-#define XUARTPS_FORMAT_MARK_PARITY 3U /**< Mark parity */
-#define XUARTPS_FORMAT_SPACE_PARITY 2U /**< parity */
-#define XUARTPS_FORMAT_ODD_PARITY 1U /**< Odd parity */
-#define XUARTPS_FORMAT_EVEN_PARITY 0U /**< Even parity */
-
-#define XUARTPS_FORMAT_2_STOP_BIT 2U /**< 2 stop bits */
-#define XUARTPS_FORMAT_1_5_STOP_BIT 1U /**< 1.5 stop bits */
-#define XUARTPS_FORMAT_1_STOP_BIT 0U /**< 1 stop bit */
-/*@}*/
-
-/** @name Callback events
- *
- * These constants specify the handler events that an application can handle
- * using its specific handler function. Note that these constants are not bit
- * mask, so only one event can be passed to an application at a time.
- *
- * @{
- */
-#define XUARTPS_EVENT_RECV_DATA 1U /**< Data receiving done */
-#define XUARTPS_EVENT_RECV_TOUT 2U /**< A receive timeout occurred */
-#define XUARTPS_EVENT_SENT_DATA 3U /**< Data transmission done */
-#define XUARTPS_EVENT_RECV_ERROR 4U /**< A receive error detected */
-#define XUARTPS_EVENT_MODEM 5U /**< Modem status changed */
-/*@}*/
-
-
-/**************************** Type Definitions ******************************/
-
-/**
- * This typedef contains configuration information for the device.
- */
-typedef struct {
- u16 DeviceId; /**< Unique ID of device */
- u32 BaseAddress; /**< Base address of device (IPIF) */
- u32 InputClockHz;/**< Input clock frequency */
- s32 ModemPinsConnected; /** Specifies whether modem pins are connected
- * to MIO or FMIO */
-} XUartPs_Config;
-
-/*
- * Keep track of state information about a data buffer in the interrupt mode.
- */
-typedef struct {
- u8 *NextBytePtr;
- u32 RequestedBytes;
- u32 RemainingBytes;
-} XUartPsBuffer;
-
-/**
- * Keep track of data format setting of a device.
- */
-typedef struct {
- u32 BaudRate; /**< In bps, ie 1200 */
- u32 DataBits; /**< Number of data bits */
- u32 Parity; /**< Parity */
- u8 StopBits; /**< Number of stop bits */
-} XUartPsFormat;
-
-/******************************************************************************/
-/**
- * This data type defines a handler that an application defines to communicate
- * with interrupt system to retrieve state information about an application.
- *
- * @param CallBackRef is a callback reference passed in by the upper layer
- * when setting the handler, and is passed back to the upper layer
- * when the handler is called. It is used to find the device driver
- * instance.
- * @param Event contains one of the event constants indicating events that
- * have occurred.
- * @param EventData contains the number of bytes sent or received at the
- * time of the call for send and receive events and contains the
- * modem status for modem events.
- *
- ******************************************************************************/
-typedef void (*XUartPs_Handler) (void *CallBackRef, u32 Event,
- u32 EventData);
-
-/**
- * The XUartPs driver instance data structure. A pointer to an instance data
- * structure is passed around by functions to refer to a specific driver
- * instance.
- */
-typedef struct {
- XUartPs_Config Config; /* Configuration data structure */
- u32 InputClockHz; /* Input clock frequency */
- u32 IsReady; /* Device is initialized and ready */
- u32 BaudRate; /* Current baud rate */
-
- XUartPsBuffer SendBuffer;
- XUartPsBuffer ReceiveBuffer;
-
- XUartPs_Handler Handler;
- void *CallBackRef; /* Callback reference for event handler */
-} XUartPs;
-
-
-/***************** Macros (Inline Functions) Definitions ********************/
-
-/****************************************************************************/
-/**
-* Get the UART Channel Status Register.
-*
-* @param InstancePtr is a pointer to the XUartPs instance.
-*
-* @return The value read from the register.
-*
-* @note C-Style signature:
-* u16 XUartPs_GetChannelStatus(XUartPs *InstancePtr)
-*
-******************************************************************************/
-#define XUartPs_GetChannelStatus(InstancePtr) \
- Xil_In32(((InstancePtr)->Config.BaseAddress) + (u32)XUARTPS_SR_OFFSET)
-
-/****************************************************************************/
-/**
-* Get the UART Mode Control Register.
-*
-* @param InstancePtr is a pointer to the XUartPs instance.
-*
-* @return The value read from the register.
-*
-* @note C-Style signature:
-* u32 XUartPs_GetControl(XUartPs *InstancePtr)
-*
-******************************************************************************/
-#define XUartPs_GetModeControl(InstancePtr) \
- Xil_In32(((InstancePtr)->Config.BaseAddress) + (u32)XUARTPS_CR_OFFSET)
-
-/****************************************************************************/
-/**
-* Set the UART Mode Control Register.
-*
-* @param InstancePtr is a pointer to the XUartPs instance.
-* @param RegisterValue is the value to be written to the register.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XUartPs_SetModeControl(XUartPs *InstancePtr, u16 RegisterValue)
-*
-******************************************************************************/
-#define XUartPs_SetModeControl(InstancePtr, RegisterValue) \
- Xil_Out32(((InstancePtr)->Config.BaseAddress) + (u32)XUARTPS_CR_OFFSET, \
- (u32)(RegisterValue))
-
-/****************************************************************************/
-/**
-* Enable the transmitter and receiver of the UART.
-*
-* @param InstancePtr is a pointer to the XUartPs instance.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XUartPs_EnableUart(XUartPs *InstancePtr)
-*
-******************************************************************************/
-#define XUartPs_EnableUart(InstancePtr) \
- Xil_Out32(((InstancePtr)->Config.BaseAddress + (u32)XUARTPS_CR_OFFSET), \
- ((Xil_In32((InstancePtr)->Config.BaseAddress + (u32)XUARTPS_CR_OFFSET) & \
- (u32)(~XUARTPS_CR_EN_DIS_MASK)) | ((u32)XUARTPS_CR_RX_EN | (u32)XUARTPS_CR_TX_EN)))
-
-/****************************************************************************/
-/**
-* Disable the transmitter and receiver of the UART.
-*
-* @param InstancePtr is a pointer to the XUartPs instance.
-*
-* @return None.
-*
-* @note C-Style signature:
-* void XUartPs_DisableUart(XUartPs *InstancePtr)
-*
-******************************************************************************/
-#define XUartPs_DisableUart(InstancePtr) \
- Xil_Out32(((InstancePtr)->Config.BaseAddress + (u32)XUARTPS_CR_OFFSET), \
- (((Xil_In32((InstancePtr)->Config.BaseAddress + (u32)XUARTPS_CR_OFFSET)) & \
- (u32)(~XUARTPS_CR_EN_DIS_MASK)) | ((u32)XUARTPS_CR_RX_DIS | (u32)XUARTPS_CR_TX_DIS)))
-
-/****************************************************************************/
-/**
-* Determine if the transmitter FIFO is empty.
-*
-* @param InstancePtr is a pointer to the XUartPs instance.
-*
-* @return
-* - TRUE if a byte can be sent
-* - FALSE if the Transmitter Fifo is not empty
-*
-* @note C-Style signature:
-* u32 XUartPs_IsTransmitEmpty(XUartPs InstancePtr)
-*
-******************************************************************************/
-#define XUartPs_IsTransmitEmpty(InstancePtr) \
- ((Xil_In32(((InstancePtr)->Config.BaseAddress) + (u32)XUARTPS_SR_OFFSET) & \
- (u32)XUARTPS_SR_TXEMPTY) == (u32)XUARTPS_SR_TXEMPTY)
-
-
-/************************** Function Prototypes *****************************/
-
-/*
- * Static lookup function implemented in xuartps_sinit.c
- */
-XUartPs_Config *XUartPs_LookupConfig(u16 DeviceId);
-
-/*
- * Interface functions implemented in xuartps.c
- */
-s32 XUartPs_CfgInitialize(XUartPs *InstancePtr,
- XUartPs_Config * Config, u32 EffectiveAddr);
-
-u32 XUartPs_Send(XUartPs *InstancePtr,u8 *BufferPtr,
- u32 NumBytes);
-
-u32 XUartPs_Recv(XUartPs *InstancePtr,u8 *BufferPtr,
- u32 NumBytes);
-
-s32 XUartPs_SetBaudRate(XUartPs *InstancePtr, u32 BaudRate);
-
-/*
- * Options functions in xuartps_options.c
- */
-void XUartPs_SetOptions(XUartPs *InstancePtr, u16 Options);
-
-u16 XUartPs_GetOptions(XUartPs *InstancePtr);
-
-void XUartPs_SetFifoThreshold(XUartPs *InstancePtr, u8 TriggerLevel);
-
-u8 XUartPs_GetFifoThreshold(XUartPs *InstancePtr);
-
-u16 XUartPs_GetModemStatus(XUartPs *InstancePtr);
-
-u32 XUartPs_IsSending(XUartPs *InstancePtr);
-
-u8 XUartPs_GetOperMode(XUartPs *InstancePtr);
-
-void XUartPs_SetOperMode(XUartPs *InstancePtr, u8 OperationMode);
-
-u8 XUartPs_GetFlowDelay(XUartPs *InstancePtr);
-
-void XUartPs_SetFlowDelay(XUartPs *InstancePtr, u8 FlowDelayValue);
-
-u8 XUartPs_GetRecvTimeout(XUartPs *InstancePtr);
-
-void XUartPs_SetRecvTimeout(XUartPs *InstancePtr, u8 RecvTimeout);
-
-s32 XUartPs_SetDataFormat(XUartPs *InstancePtr, XUartPsFormat * FormatPtr);
-
-void XUartPs_GetDataFormat(XUartPs *InstancePtr, XUartPsFormat * FormatPtr);
-
-/*
- * interrupt functions in xuartps_intr.c
- */
-u32 XUartPs_GetInterruptMask(XUartPs *InstancePtr);
-
-void XUartPs_SetInterruptMask(XUartPs *InstancePtr, u32 Mask);
-
-void XUartPs_InterruptHandler(XUartPs *InstancePtr);
-
-void XUartPs_SetHandler(XUartPs *InstancePtr, XUartPs_Handler FuncPtr,
- void *CallBackRef);
-
-/*
- * self-test functions in xuartps_selftest.c
- */
-s32 XUartPs_SelfTest(XUartPs *InstancePtr);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of protection macro */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/Makefile b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/Makefile
similarity index 100%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/Makefile
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/Makefile
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps.c
similarity index 89%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps.c
index 4090ef72e..a338d1f09 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps.c
@@ -33,6 +33,8 @@
/**
*
* @file xuartps.c
+* @addtogroup uartps_v3_1
+* @{
*
* This file contains the implementation of the interface functions for XUartPs
* driver. Refer to the header file xuartps.h for more detailed information.
@@ -46,6 +48,7 @@
* 2.2 hk 06/23/14 SW reset of RX and TX should be done when changing
* baud rate. CR# 804281.
* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
+* 3.1 kvn 04/10/15 Modified code for latest RTL changes.
*
*
*****************************************************************************/
@@ -131,22 +134,16 @@ s32 XUartPs_CfgInitialize(XUartPs *InstancePtr,
u32 ModeRegister;
u32 BaudRate;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(Config != NULL);
- /*
- * Setup the driver instance using passed in parameters
- */
+ /* Setup the driver instance using passed in parameters */
InstancePtr->Config.BaseAddress = EffectiveAddr;
InstancePtr->Config.InputClockHz = Config->InputClockHz;
InstancePtr->Config.ModemPinsConnected = Config->ModemPinsConnected;
- /*
- * Initialize other instance data to default values
- */
+ /* Initialize other instance data to default values */
InstancePtr->Handler = XUartPs_StubHandler;
InstancePtr->SendBuffer.NextBytePtr = NULL;
@@ -157,9 +154,12 @@ s32 XUartPs_CfgInitialize(XUartPs *InstancePtr,
InstancePtr->ReceiveBuffer.RemainingBytes = 0U;
InstancePtr->ReceiveBuffer.RequestedBytes = 0U;
- /*
- * Flag that the driver instance is ready to use
- */
+ /* Initialize the platform data */
+ InstancePtr->Platform = XGetPlatform_Info();
+
+ InstancePtr->is_rxbs_error = 0U;
+
+ /* Flag that the driver instance is ready to use */
InstancePtr->IsReady = XIL_COMPONENT_IS_READY;
/*
@@ -179,41 +179,29 @@ s32 XUartPs_CfgInitialize(XUartPs *InstancePtr,
ModeRegister = XUartPs_ReadReg(InstancePtr->Config.BaseAddress,
XUARTPS_MR_OFFSET);
- /*
- * Mask off what's already there
- */
+ /* Mask off what's already there */
ModeRegister &= (~((u32)XUARTPS_MR_CHARLEN_MASK |
(u32)XUARTPS_MR_STOPMODE_MASK |
(u32)XUARTPS_MR_PARITY_MASK));
- /*
- * Set the register value to the desired data format
- */
+ /* Set the register value to the desired data format */
ModeRegister |= ((u32)XUARTPS_MR_CHARLEN_8_BIT |
(u32)XUARTPS_MR_STOPMODE_1_BIT |
(u32)XUARTPS_MR_PARITY_NONE);
- /*
- * Write the mode register out
- */
+ /* Write the mode register out */
XUartPs_WriteReg(InstancePtr->Config.BaseAddress, XUARTPS_MR_OFFSET,
ModeRegister);
- /*
- * Set the RX FIFO trigger at 8 data bytes.
- */
+ /* Set the RX FIFO trigger at 8 data bytes. */
XUartPs_WriteReg(InstancePtr->Config.BaseAddress,
XUARTPS_RXWM_OFFSET, 0x08U);
- /*
- * Set the RX timeout to 1, which will be 4 character time
- */
+ /* Set the RX timeout to 1, which will be 4 character time */
XUartPs_WriteReg(InstancePtr->Config.BaseAddress,
XUARTPS_RXTOUT_OFFSET, 0x01U);
- /*
- * Disable all interrupts, polled mode is the default
- */
+ /* Disable all interrupts, polled mode is the default */
XUartPs_WriteReg(InstancePtr->Config.BaseAddress, XUARTPS_IDR_OFFSET,
XUARTPS_IXR_MASK);
@@ -261,9 +249,7 @@ u32 XUartPs_Send(XUartPs *InstancePtr, u8 *BufferPtr,
{
u32 BytesSent;
- /*
- * Asserts validate the input arguments
- */
+ /* Asserts validate the input arguments */
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(BufferPtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -275,9 +261,7 @@ u32 XUartPs_Send(XUartPs *InstancePtr, u8 *BufferPtr,
XUartPs_WriteReg(InstancePtr->Config.BaseAddress, XUARTPS_IDR_OFFSET,
(XUARTPS_IXR_TXEMPTY | XUARTPS_IXR_TXFULL));
- /*
- * Setup the buffer parameters
- */
+ /* Setup the buffer parameters */
InstancePtr->SendBuffer.RequestedBytes = NumBytes;
InstancePtr->SendBuffer.RemainingBytes = NumBytes;
InstancePtr->SendBuffer.NextBytePtr = BufferPtr;
@@ -328,9 +312,7 @@ u32 XUartPs_Recv(XUartPs *InstancePtr,
u32 ReceivedCount;
u32 ImrRegister;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(BufferPtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -344,21 +326,15 @@ u32 XUartPs_Recv(XUartPs *InstancePtr,
XUartPs_WriteReg(InstancePtr->Config.BaseAddress, XUARTPS_IDR_OFFSET,
XUARTPS_IXR_MASK);
- /*
- * Setup the buffer parameters
- */
+ /* Setup the buffer parameters */
InstancePtr->ReceiveBuffer.RequestedBytes = NumBytes;
InstancePtr->ReceiveBuffer.RemainingBytes = NumBytes;
InstancePtr->ReceiveBuffer.NextBytePtr = BufferPtr;
- /*
- * Receive the data from the device
- */
+ /* Receive the data from the device */
ReceivedCount = XUartPs_ReceiveBuffer(InstancePtr);
- /*
- * Restore the interrupt state
- */
+ /* Restore the interrupt state */
XUartPs_WriteReg(InstancePtr->Config.BaseAddress, XUARTPS_IER_OFFSET,
ImrRegister);
@@ -406,23 +382,17 @@ u32 XUartPs_SendBuffer(XUartPs *InstancePtr)
while ((!XUartPs_IsTransmitFull(InstancePtr->Config.BaseAddress)) &&
(InstancePtr->SendBuffer.RemainingBytes > SentCount)) {
- /*
- * Fill the FIFO from the buffer
- */
+ /* Fill the FIFO from the buffer */
XUartPs_WriteReg(InstancePtr->Config.BaseAddress,
XUARTPS_FIFO_OFFSET,
((u32)InstancePtr->SendBuffer.
NextBytePtr[SentCount]));
- /*
- * Increment the send count.
- */
+ /* Increment the send count. */
SentCount++;
}
- /*
- * Update the buffer to reflect the bytes that were sent from it
- */
+ /* Update the buffer to reflect the bytes that were sent from it */
InstancePtr->SendBuffer.NextBytePtr += SentCount;
InstancePtr->SendBuffer.RemainingBytes -= SentCount;
@@ -479,6 +449,8 @@ u32 XUartPs_ReceiveBuffer(XUartPs *InstancePtr)
{
u32 CsrRegister;
u32 ReceivedCount = 0U;
+ u32 ByteStatusValue, EventData;
+ u32 Event;
/*
* Read the Channel Status Register to determine if there is any data in
@@ -491,9 +463,26 @@ u32 XUartPs_ReceiveBuffer(XUartPs *InstancePtr)
* Loop until there is no more data in RX FIFO or the specified
* number of bytes has been received
*/
- while((ReceivedCount < InstancePtr->ReceiveBuffer.RemainingBytes)&&
+ while((ReceivedCount <= InstancePtr->ReceiveBuffer.RemainingBytes)&&
(((CsrRegister & XUARTPS_SR_RXEMPTY) == (u32)0))){
+ if (InstancePtr->is_rxbs_error) {
+ ByteStatusValue = XUartPs_ReadReg(
+ InstancePtr->Config.BaseAddress,
+ XUARTPS_RXBS_OFFSET);
+ if((ByteStatusValue & XUARTPS_RXBS_MASK)!= (u32)0) {
+ EventData = ByteStatusValue;
+ Event = XUARTPS_EVENT_PARE_FRAME_BRKE;
+ /*
+ * Call the application handler to indicate that there is a receive
+ * error or a break interrupt, if the application cares about the
+ * error it call a function to get the last errors.
+ */
+ InstancePtr->Handler(InstancePtr->CallBackRef,
+ Event, EventData);
+ }
+ }
+
InstancePtr->ReceiveBuffer.NextBytePtr[ReceivedCount] =
XUartPs_ReadReg(InstancePtr->Config.
BaseAddress,
@@ -504,7 +493,7 @@ u32 XUartPs_ReceiveBuffer(XUartPs *InstancePtr)
CsrRegister = XUartPs_ReadReg(InstancePtr->Config.BaseAddress,
XUARTPS_SR_OFFSET);
}
-
+ InstancePtr->is_rxbs_error = 0;
/*
* Update the receive buffer to reflect the number of bytes just
* received
@@ -549,9 +538,7 @@ s32 XUartPs_SetBaudRate(XUartPs *InstancePtr, u32 BaudRate)
u32 ModeReg;
u32 InputClk;
- /*
- * Asserts validate the input arguments
- */
+ /* Asserts validate the input arguments */
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
Xil_AssertNonvoid(BaudRate <= (u32)XUARTPS_MAX_RATE);
@@ -564,9 +551,7 @@ s32 XUartPs_SetBaudRate(XUartPs *InstancePtr, u32 BaudRate)
if ((BaudRate * 2) > InstancePtr->Config.InputClockHz) {
return XST_UART_BAUD_ERROR;
}
- /*
- * Check whether the input clock is divided by 8
- */
+ /* Check whether the input clock is divided by 8 */
ModeReg = XUartPs_ReadReg( InstancePtr->Config.BaseAddress,
XUARTPS_MR_OFFSET);
@@ -581,19 +566,13 @@ s32 XUartPs_SetBaudRate(XUartPs *InstancePtr, u32 BaudRate)
*/
for (IterBAUDDIV = 4; IterBAUDDIV < 255; IterBAUDDIV++) {
- /*
- * Calculate the value for BRGR register
- */
+ /* Calculate the value for BRGR register */
BRGR_Value = InputClk / (BaudRate * (IterBAUDDIV + 1));
- /*
- * Calculate the baud rate from the BRGR value
- */
+ /* Calculate the baud rate from the BRGR value */
CalcBaudRate = InputClk/ (BRGR_Value * (IterBAUDDIV + 1));
- /*
- * Avoid unsigned integer underflow
- */
+ /* Avoid unsigned integer underflow */
if (BaudRate > CalcBaudRate) {
BaudError = BaudRate - CalcBaudRate;
}
@@ -601,9 +580,7 @@ s32 XUartPs_SetBaudRate(XUartPs *InstancePtr, u32 BaudRate)
BaudError = CalcBaudRate - BaudRate;
}
- /*
- * Find the calculated baud rate closest to requested baud rate.
- */
+ /* Find the calculated baud rate closest to requested baud rate. */
if (Best_Error > BaudError) {
Best_BRGR = BRGR_Value;
@@ -612,17 +589,13 @@ s32 XUartPs_SetBaudRate(XUartPs *InstancePtr, u32 BaudRate)
}
}
- /*
- * Make sure the best error is not too large.
- */
+ /* Make sure the best error is not too large. */
PercentError = (Best_Error * 100) / BaudRate;
if (XUARTPS_MAX_BAUD_ERROR_RATE < PercentError) {
return XST_UART_BAUD_ERROR;
}
- /*
- * Disable TX and RX to avoid glitches when setting the baud rate.
- */
+ /* Disable TX and RX to avoid glitches when setting the baud rate. */
XUartPs_DisableUart(InstancePtr);
XUartPs_WriteReg(InstancePtr->Config.BaseAddress,
@@ -630,15 +603,11 @@ s32 XUartPs_SetBaudRate(XUartPs *InstancePtr, u32 BaudRate)
XUartPs_WriteReg(InstancePtr->Config.BaseAddress,
XUARTPS_BAUDDIV_OFFSET, Best_BAUDDIV);
- /*
- * RX and TX SW reset
- */
+ /* RX and TX SW reset */
XUartPs_WriteReg(InstancePtr->Config.BaseAddress, XUARTPS_CR_OFFSET,
XUARTPS_CR_TXRST | XUARTPS_CR_RXRST);
- /*
- * Enable device
- */
+ /* Enable device */
XUartPs_EnableUart(InstancePtr);
InstancePtr->BaudRate = BaudRate;
@@ -669,8 +638,7 @@ static void XUartPs_StubHandler(void *CallBackRef, u32 Event,
(void *) CallBackRef;
(void) Event;
(void) ByteCount;
- /*
- * Assert occurs always since this is a stub and should never be called
- */
+ /* Assert occurs always since this is a stub and should never be called */
Xil_AssertVoidAlways();
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xuartps.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps.h
similarity index 93%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xuartps.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps.h
index ae72e66d7..6bd42b21c 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/include/xuartps.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps.h
@@ -33,6 +33,9 @@
/**
*
* @file xuartps.h
+* @addtogroup uartps_v3_1
+* @{
+* @details
*
* This driver supports the following features:
*
@@ -154,6 +157,10 @@
* baud rate. CR# 804281.
* 3.0 vm 12/09/14 Modified source code according to misrac guideline.
* Support for Zynq Ultrascale Mp added.
+* 3.1 kvn 04/10/15 Modified code for latest RTL changes. Also added
+* platform variable in driver instance structure.
+* 3.1 adk 14/03/16 Include interrupt examples in the peripheral test when
+* uart is connected to a valid interrupt controller CR#946803.
*
*
*
@@ -172,6 +179,7 @@ extern "C" {
#include "xil_assert.h"
#include "xstatus.h"
#include "xuartps_hw.h"
+#include "xplatform_info.h"
/************************** Constant Definitions ****************************/
@@ -253,11 +261,14 @@ extern "C" {
*
* @{
*/
-#define XUARTPS_EVENT_RECV_DATA 1U /**< Data receiving done */
-#define XUARTPS_EVENT_RECV_TOUT 2U /**< A receive timeout occurred */
-#define XUARTPS_EVENT_SENT_DATA 3U /**< Data transmission done */
-#define XUARTPS_EVENT_RECV_ERROR 4U /**< A receive error detected */
-#define XUARTPS_EVENT_MODEM 5U /**< Modem status changed */
+#define XUARTPS_EVENT_RECV_DATA 1U /**< Data receiving done */
+#define XUARTPS_EVENT_RECV_TOUT 2U /**< A receive timeout occurred */
+#define XUARTPS_EVENT_SENT_DATA 3U /**< Data transmission done */
+#define XUARTPS_EVENT_RECV_ERROR 4U /**< A receive error detected */
+#define XUARTPS_EVENT_MODEM 5U /**< Modem status changed */
+#define XUARTPS_EVENT_PARE_FRAME_BRKE 6U /**< A receive parity, frame, break
+ * error detected */
+#define XUARTPS_EVENT_RECV_ORERR 7U /**< A receive overrun error detected */
/*@}*/
@@ -274,9 +285,7 @@ typedef struct {
* to MIO or FMIO */
} XUartPs_Config;
-/*
- * Keep track of state information about a data buffer in the interrupt mode.
- */
+/* Keep track of state information about a data buffer in the interrupt mode. */
typedef struct {
u8 *NextBytePtr;
u32 RequestedBytes;
@@ -328,6 +337,8 @@ typedef struct {
XUartPs_Handler Handler;
void *CallBackRef; /* Callback reference for event handler */
+ u32 Platform;
+ u8 is_rxbs_error;
} XUartPs;
@@ -435,14 +446,10 @@ typedef struct {
/************************** Function Prototypes *****************************/
-/*
- * Static lookup function implemented in xuartps_sinit.c
- */
+/* Static lookup function implemented in xuartps_sinit.c */
XUartPs_Config *XUartPs_LookupConfig(u16 DeviceId);
-/*
- * Interface functions implemented in xuartps.c
- */
+/* Interface functions implemented in xuartps.c */
s32 XUartPs_CfgInitialize(XUartPs *InstancePtr,
XUartPs_Config * Config, u32 EffectiveAddr);
@@ -454,9 +461,7 @@ u32 XUartPs_Recv(XUartPs *InstancePtr,u8 *BufferPtr,
s32 XUartPs_SetBaudRate(XUartPs *InstancePtr, u32 BaudRate);
-/*
- * Options functions in xuartps_options.c
- */
+/* Options functions in xuartps_options.c */
void XUartPs_SetOptions(XUartPs *InstancePtr, u16 Options);
u16 XUartPs_GetOptions(XUartPs *InstancePtr);
@@ -485,9 +490,7 @@ s32 XUartPs_SetDataFormat(XUartPs *InstancePtr, XUartPsFormat * FormatPtr);
void XUartPs_GetDataFormat(XUartPs *InstancePtr, XUartPsFormat * FormatPtr);
-/*
- * interrupt functions in xuartps_intr.c
- */
+/* interrupt functions in xuartps_intr.c */
u32 XUartPs_GetInterruptMask(XUartPs *InstancePtr);
void XUartPs_SetInterruptMask(XUartPs *InstancePtr, u32 Mask);
@@ -497,9 +500,7 @@ void XUartPs_InterruptHandler(XUartPs *InstancePtr);
void XUartPs_SetHandler(XUartPs *InstancePtr, XUartPs_Handler FuncPtr,
void *CallBackRef);
-/*
- * self-test functions in xuartps_selftest.c
- */
+/* self-test functions in xuartps_selftest.c */
s32 XUartPs_SelfTest(XUartPs *InstancePtr);
#ifdef __cplusplus
@@ -507,3 +508,4 @@ s32 XUartPs_SelfTest(XUartPs *InstancePtr);
#endif
#endif /* end of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_g.c
similarity index 91%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_g.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_g.c
index f117c6868..94aaf5b2e 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_g.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_g.c
@@ -1,63 +1,63 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Driver configuration
-*
-*******************************************************************/
-
-#include "xparameters.h"
-#include "xuartps.h"
-
-/*
-* The configuration table for devices
-*/
-
-XUartPs_Config XUartPs_ConfigTable[] =
-{
- {
- XPAR_PSU_UART_0_DEVICE_ID,
- XPAR_PSU_UART_0_BASEADDR,
- XPAR_PSU_UART_0_UART_CLK_FREQ_HZ,
- XPAR_PSU_UART_0_HAS_MODEM
- },
- {
- XPAR_PSU_UART_1_DEVICE_ID,
- XPAR_PSU_UART_1_BASEADDR,
- XPAR_PSU_UART_1_UART_CLK_FREQ_HZ,
- XPAR_PSU_UART_1_HAS_MODEM
- }
-};
-
-
+
+/*******************************************************************
+*
+* CAUTION: This file is automatically generated by HSI.
+* Version:
+* DO NOT EDIT.
+*
+* Copyright (C) 2010-2016 Xilinx, Inc. All Rights Reserved.*
+*Permission is hereby granted, free of charge, to any person obtaining a copy
+*of this software and associated documentation files (the Software), to deal
+*in the Software without restriction, including without limitation the rights
+*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*copies of the Software, and to permit persons to whom the Software is
+*furnished to do so, subject to the following conditions:
+*
+*The above copyright notice and this permission notice shall be included in
+*all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+*(a) running on a Xilinx device, or
+*(b) that interact with a Xilinx device through a bus or interconnect.
+*
+*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+*XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+*Except as contained in this notice, the name of the Xilinx shall not be used
+*in advertising or otherwise to promote the sale, use or other dealings in
+*this Software without prior written authorization from Xilinx.
+*
+
+*
+* Description: Driver configuration
+*
+*******************************************************************/
+
+#include "xparameters.h"
+#include "xuartps.h"
+
+/*
+* The configuration table for devices
+*/
+
+XUartPs_Config XUartPs_ConfigTable[] =
+{
+ {
+ XPAR_PSU_UART_0_DEVICE_ID,
+ XPAR_PSU_UART_0_BASEADDR,
+ XPAR_PSU_UART_0_UART_CLK_FREQ_HZ,
+ XPAR_PSU_UART_0_HAS_MODEM
+ },
+ {
+ XPAR_PSU_UART_1_DEVICE_ID,
+ XPAR_PSU_UART_1_BASEADDR,
+ XPAR_PSU_UART_1_UART_CLK_FREQ_HZ,
+ XPAR_PSU_UART_1_HAS_MODEM
+ }
+};
+
+
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_hw.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_hw.c
similarity index 92%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_hw.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_hw.c
index 3dd652c7f..299dd35ae 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_hw.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_hw.c
@@ -33,6 +33,8 @@
/**
*
* @file xuartps_hw.c
+* @addtogroup uartps_v3_1
+* @{
*
*
*
@@ -77,16 +79,12 @@
*****************************************************************************/
void XUartPs_SendByte(u32 BaseAddress, u8 Data)
{
- /*
- * Wait until there is space in TX FIFO
- */
+ /* Wait until there is space in TX FIFO */
while (XUartPs_IsTransmitFull(BaseAddress)) {
;
}
- /*
- * Write the byte into the TX FIFO
- */
+ /* Write the byte into the TX FIFO */
XUartPs_WriteReg(BaseAddress, XUARTPS_FIFO_OFFSET, (u32)Data);
}
@@ -106,16 +104,12 @@ void XUartPs_SendByte(u32 BaseAddress, u8 Data)
u8 XUartPs_RecvByte(u32 BaseAddress)
{
u32 RecievedByte;
- /*
- * Wait until there is data
- */
+ /* Wait until there is data */
while (!XUartPs_IsReceiveData(BaseAddress)) {
;
}
RecievedByte = XUartPs_ReadReg(BaseAddress, XUARTPS_FIFO_OFFSET);
- /*
- * Return the byte received
- */
+ /* Return the byte received */
return (u8)RecievedByte;
}
@@ -134,14 +128,10 @@ u8 XUartPs_RecvByte(u32 BaseAddress)
void XUartPs_ResetHw(u32 BaseAddress)
{
- /*
- * Disable interrupts
- */
+ /* Disable interrupts */
XUartPs_WriteReg(BaseAddress, XUARTPS_IDR_OFFSET, XUARTPS_IXR_MASK);
- /*
- * Disable receive and transmit
- */
+ /* Disable receive and transmit */
XUartPs_WriteReg(BaseAddress, XUARTPS_CR_OFFSET,
((u32)XUARTPS_CR_RX_DIS | (u32)XUARTPS_CR_TX_DIS));
@@ -152,9 +142,7 @@ void XUartPs_ResetHw(u32 BaseAddress)
XUartPs_WriteReg(BaseAddress, XUARTPS_CR_OFFSET,
((u32)XUARTPS_CR_TXRST | (u32)XUARTPS_CR_RXRST));
- /*
- * Clear status flags - SW reset wont clear sticky flags.
- */
+ /* Clear status flags - SW reset wont clear sticky flags. */
XUartPs_WriteReg(BaseAddress, XUARTPS_ISR_OFFSET, XUARTPS_IXR_MASK);
/*
@@ -164,23 +152,17 @@ void XUartPs_ResetHw(u32 BaseAddress)
XUartPs_WriteReg(BaseAddress, XUARTPS_MR_OFFSET,
XUARTPS_MR_CHMODE_NORM);
- /*
- * Rx and TX trigger register reset values
- */
+ /* Rx and TX trigger register reset values */
XUartPs_WriteReg(BaseAddress, XUARTPS_RXWM_OFFSET,
XUARTPS_RXWM_RESET_VAL);
XUartPs_WriteReg(BaseAddress, XUARTPS_TXWM_OFFSET,
XUARTPS_TXWM_RESET_VAL);
- /*
- * Rx timeout disabled by default
- */
+ /* Rx timeout disabled by default */
XUartPs_WriteReg(BaseAddress, XUARTPS_RXTOUT_OFFSET,
XUARTPS_RXTOUT_DISABLE);
- /*
- * Baud rate generator and dividor reset values
- */
+ /* Baud rate generator and dividor reset values */
XUartPs_WriteReg(BaseAddress, XUARTPS_BAUDGEN_OFFSET,
XUARTPS_BAUDGEN_RESET_VAL);
XUartPs_WriteReg(BaseAddress, XUARTPS_BAUDDIV_OFFSET,
@@ -195,3 +177,4 @@ void XUartPs_ResetHw(u32 BaseAddress)
(u32)XUARTPS_CR_STOPBRK));
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_hw.h
similarity index 91%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_hw.h
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_hw.h
index a47629dae..9f5f0b700 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_hw.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_hw.h
@@ -33,6 +33,8 @@
/**
*
* @file xuartps_hw.h
+* @addtogroup uartps_v3_1
+* @{
*
* This header file contains the hardware interface of an XUartPs device.
*
@@ -52,6 +54,7 @@
* 1.05a hk 08/22/13 Added prototype for uart reset and related
* constant definitions.
* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
+* 3.1 kvn 04/10/15 Modified code for latest RTL changes.
*
*
*
@@ -92,6 +95,7 @@ extern "C" {
#define XUARTPS_BAUDDIV_OFFSET 0x0034U /**< Baud Rate Divider [7:0] */
#define XUARTPS_FLOWDEL_OFFSET 0x0038U /**< Flow Delay [5:0] */
#define XUARTPS_TXWM_OFFSET 0x0044U /**< TX FIFO Trigger Level [5:0] */
+#define XUARTPS_RXBS_OFFSET 0x0048U /**< RX FIFO Byte Status [11:0] */
/* @} */
/** @name Control Register
@@ -165,6 +169,7 @@ extern "C" {
*
* @{
*/
+#define XUARTPS_IXR_RBRK 0x00002000U /**< Rx FIFO break detect interrupt */
#define XUARTPS_IXR_TOVR 0x00001000U /**< Tx FIFO Overflow interrupt */
#define XUARTPS_IXR_TNFUL 0x00000800U /**< Tx FIFO Nearly Full interrupt */
#define XUARTPS_IXR_TTRIG 0x00000400U /**< Tx Trig interrupt */
@@ -178,7 +183,7 @@ extern "C" {
#define XUARTPS_IXR_RXFULL 0x00000004U /**< RX FIFO full interrupt. */
#define XUARTPS_IXR_RXEMPTY 0x00000002U /**< RX FIFO empty interrupt. */
#define XUARTPS_IXR_RXOVR 0x00000001U /**< RX FIFO trigger interrupt. */
-#define XUARTPS_IXR_MASK 0x00001FFFU /**< Valid bit mask */
+#define XUARTPS_IXR_MASK 0x00003FFFU /**< Valid bit mask */
/* @} */
@@ -293,11 +298,6 @@ extern "C" {
#define XUARTPS_SR_FLOWDEL 0x00001000U /**< RX FIFO fill over flow delay */
#define XUARTPS_SR_TACTIVE 0x00000800U /**< TX active */
#define XUARTPS_SR_RACTIVE 0x00000400U /**< RX active */
-#define XUARTPS_SR_DMS 0x00000200U /**< Delta modem status change */
-#define XUARTPS_SR_TOUT 0x00000100U /**< RX timeout */
-#define XUARTPS_SR_PARITY 0x00000080U /**< RX parity error */
-#define XUARTPS_SR_FRAME 0x00000040U /**< RX frame error */
-#define XUARTPS_SR_OVER 0x00000020U /**< RX overflow error */
#define XUARTPS_SR_TXFULL 0x00000010U /**< TX FIFO full */
#define XUARTPS_SR_TXEMPTY 0x00000008U /**< TX FIFO empty */
#define XUARTPS_SR_RXFULL 0x00000004U /**< RX FIFO full */
@@ -320,6 +320,30 @@ extern "C" {
#define XUARTPS_FLOWDEL_MASK XUARTPS_RXWM_MASK /**< Valid bit mask */
/* @} */
+/** @name Receiver FIFO Byte Status Register
+ *
+ * The Receiver FIFO Status register is used to have a continuous
+ * monitoring of the raw unmasked byte status information. The register
+ * contains frame, parity and break status information for the top
+ * four bytes in the RX FIFO.
+ *
+ * Receiver FIFO Byte Status Register Bit Definition
+ * @{
+ */
+#define XUARTPS_RXBS_BYTE3_BRKE 0x00000800U /**< Byte3 Break Error */
+#define XUARTPS_RXBS_BYTE3_FRME 0x00000400U /**< Byte3 Frame Error */
+#define XUARTPS_RXBS_BYTE3_PARE 0x00000200U /**< Byte3 Parity Error */
+#define XUARTPS_RXBS_BYTE2_BRKE 0x00000100U /**< Byte2 Break Error */
+#define XUARTPS_RXBS_BYTE2_FRME 0x00000080U /**< Byte2 Frame Error */
+#define XUARTPS_RXBS_BYTE2_PARE 0x00000040U /**< Byte2 Parity Error */
+#define XUARTPS_RXBS_BYTE1_BRKE 0x00000020U /**< Byte1 Break Error */
+#define XUARTPS_RXBS_BYTE1_FRME 0x00000010U /**< Byte1 Frame Error */
+#define XUARTPS_RXBS_BYTE1_PARE 0x00000008U /**< Byte1 Parity Error */
+#define XUARTPS_RXBS_BYTE0_BRKE 0x00000004U /**< Byte0 Break Error */
+#define XUARTPS_RXBS_BYTE0_FRME 0x00000002U /**< Byte0 Frame Error */
+#define XUARTPS_RXBS_BYTE0_PARE 0x00000001U /**< Byte0 Parity Error */
+#define XUARTPS_RXBS_MASK 0x00000007U /**< 3 bit RX byte status mask */
+/* @} */
/*
@@ -422,3 +446,4 @@ void XUartPs_ResetHw(u32 BaseAddress);
#endif
#endif /* end of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_intr.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_intr.c
similarity index 88%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_intr.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_intr.c
index 156d3e263..849cb48db 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_intr.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_intr.c
@@ -33,6 +33,8 @@
/**
*
* @file xuartps_intr.c
+* @addtogroup uartps_v3_1
+* @{
*
* This file contains the functions for interrupt handling
*
@@ -43,6 +45,7 @@
* ----- ------ -------- -----------------------------------------------
* 1.00 drg/jz 01/13/10 First Release
* 3.00 kvn 02/13/15 Modified code for MISRA-C:2012 compliance.
+* 3.1 kvn 04/10/15 Modified code for latest RTL changes.
*
*
*****************************************************************************/
@@ -61,7 +64,7 @@
static void ReceiveDataHandler(XUartPs *InstancePtr);
static void SendDataHandler(XUartPs *InstancePtr, u32 IsrStatus);
-static void ReceiveErrorHandler(XUartPs *InstancePtr);
+static void ReceiveErrorHandler(XUartPs *InstancePtr, u32 IsrStatus);
static void ReceiveTimeoutHandler(XUartPs *InstancePtr);
static void ModemHandler(XUartPs *InstancePtr);
@@ -90,14 +93,10 @@ typedef void (*Handler)(XUartPs *InstancePtr);
*****************************************************************************/
u32 XUartPs_GetInterruptMask(XUartPs *InstancePtr)
{
- /*
- * Assert validates the input argument
- */
+ /* Assert validates the input argument */
Xil_AssertNonvoid(InstancePtr != NULL);
- /*
- * Read the Interrupt Mask register
- */
+ /* Read the Interrupt Mask register */
return (XUartPs_ReadReg(InstancePtr->Config.BaseAddress,
XUARTPS_IMR_OFFSET));
}
@@ -119,22 +118,16 @@ u32 XUartPs_GetInterruptMask(XUartPs *InstancePtr)
void XUartPs_SetInterruptMask(XUartPs *InstancePtr, u32 Mask)
{
u32 TempMask = Mask;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertVoid(InstancePtr != NULL);
TempMask &= (u32)XUARTPS_IXR_MASK;
- /*
- * Write the mask to the IER Register
- */
+ /* Write the mask to the IER Register */
XUartPs_WriteReg(InstancePtr->Config.BaseAddress,
XUARTPS_IER_OFFSET, TempMask);
- /*
- * Write the inverse of the Mask to the IDR register
- */
+ /* Write the inverse of the Mask to the IDR register */
XUartPs_WriteReg(InstancePtr->Config.BaseAddress,
XUARTPS_IDR_OFFSET, (~TempMask));
@@ -205,9 +198,7 @@ void XUartPs_InterruptHandler(XUartPs *InstancePtr)
IsrStatus &= XUartPs_ReadReg(InstancePtr->Config.BaseAddress,
XUARTPS_ISR_OFFSET);
- /*
- * Dispatch an appropriate handler.
- */
+ /* Dispatch an appropriate handler. */
if((IsrStatus & ((u32)XUARTPS_IXR_RXOVR | (u32)XUARTPS_IXR_RXEMPTY |
(u32)XUARTPS_IXR_RXFULL)) != (u32)0) {
/* Received data interrupt */
@@ -220,10 +211,11 @@ void XUartPs_InterruptHandler(XUartPs *InstancePtr)
SendDataHandler(InstancePtr, IsrStatus);
}
- if((IsrStatus & ((u32)XUARTPS_IXR_OVER | (u32)XUARTPS_IXR_FRAMING |
- (u32)XUARTPS_IXR_PARITY)) != (u32)0) {
+ /* XUARTPS_IXR_RBRK is applicable only for Zynq Ultrascale+ MP */
+ if ((IsrStatus & ((u32)XUARTPS_IXR_OVER | (u32)XUARTPS_IXR_FRAMING |
+ (u32)XUARTPS_IXR_PARITY | (u32)XUARTPS_IXR_RBRK)) != (u32)0) {
/* Received Error Status interrupt */
- ReceiveErrorHandler(InstancePtr);
+ ReceiveErrorHandler(InstancePtr, IsrStatus);
}
if((IsrStatus & ((u32)XUARTPS_IXR_TOUT)) != (u32)0) {
@@ -236,9 +228,7 @@ void XUartPs_InterruptHandler(XUartPs *InstancePtr)
ModemHandler(InstancePtr);
}
- /*
- * Clear the interrupt status.
- */
+ /* Clear the interrupt status. */
XUartPs_WriteReg(InstancePtr->Config.BaseAddress, XUARTPS_ISR_OFFSET,
IsrStatus);
@@ -257,28 +247,42 @@ void XUartPs_InterruptHandler(XUartPs *InstancePtr)
* @note None.
*
*****************************************************************************/
-static void ReceiveErrorHandler(XUartPs *InstancePtr)
+static void ReceiveErrorHandler(XUartPs *InstancePtr, u32 IsrStatus)
{
+ u32 ByteStatusValue, EventData;
+ u32 Event;
+
+ InstancePtr->is_rxbs_error = 0;
+
+ if ((InstancePtr->Platform == XPLAT_ZYNQ_ULTRA_MP) &&
+ (IsrStatus & ((u32)XUARTPS_IXR_PARITY | (u32)XUARTPS_IXR_RBRK
+ | (u32)XUARTPS_IXR_FRAMING))) {
+ InstancePtr->is_rxbs_error = 1;
+ }
/*
* If there are bytes still to be received in the specified buffer
* go ahead and receive them. Removing bytes from the RX FIFO will
* clear the interrupt.
*/
- if (InstancePtr->ReceiveBuffer.RemainingBytes != (u32)0) {
- (void)XUartPs_ReceiveBuffer(InstancePtr);
- }
- /*
- * Call the application handler to indicate that there is a receive
- * error or a break interrupt, if the application cares about the
- * error it call a function to get the last errors.
- */
- InstancePtr->Handler(InstancePtr->CallBackRef,
- XUARTPS_EVENT_RECV_ERROR,
- (InstancePtr->ReceiveBuffer.RequestedBytes -
- InstancePtr->ReceiveBuffer.RemainingBytes));
+ (void)XUartPs_ReceiveBuffer(InstancePtr);
+ if (!(InstancePtr->is_rxbs_error)) {
+ Event = XUARTPS_EVENT_RECV_ERROR;
+ EventData = InstancePtr->ReceiveBuffer.RequestedBytes -
+ InstancePtr->ReceiveBuffer.RemainingBytes;
+
+ /*
+ * Call the application handler to indicate that there is a receive
+ * error or a break interrupt, if the application cares about the
+ * error it call a function to get the last errors.
+ */
+ InstancePtr->Handler(InstancePtr->CallBackRef,
+ Event,
+ EventData);
+ }
}
+
/****************************************************************************/
/**
*
@@ -400,9 +404,7 @@ static void SendDataHandler(XUartPs *InstancePtr, u32 IsrStatus)
InstancePtr->SendBuffer.RemainingBytes);
}
- /*
- * If TX FIFO is empty, send more.
- */
+ /* If TX FIFO is empty, send more. */
else if((IsrStatus & ((u32)XUARTPS_IXR_TXEMPTY)) != (u32)0) {
(void)XUartPs_SendBuffer(InstancePtr);
}
@@ -445,3 +447,4 @@ static void ModemHandler(XUartPs *InstancePtr)
MsrRegister);
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_options.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_options.c
similarity index 94%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_options.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_options.c
index d8ad1d7a7..7051d07ec 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_options.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_options.c
@@ -33,6 +33,8 @@
/**
*
* @file xuartps_options.c
+* @addtogroup uartps_v3_1
+* @{
*
* The implementation of the options functions for the XUartPs driver.
*
@@ -119,9 +121,7 @@ u16 XUartPs_GetOptions(XUartPs *InstancePtr)
u32 Register;
u32 Index;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -174,9 +174,7 @@ void XUartPs_SetOptions(XUartPs *InstancePtr, u16 Options)
u32 Index;
u32 Register;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -234,9 +232,7 @@ u8 XUartPs_GetFifoThreshold(XUartPs *InstancePtr)
{
u8 RtrigRegister;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -272,9 +268,7 @@ void XUartPs_SetFifoThreshold(XUartPs *InstancePtr, u8 TriggerLevel)
{
u32 RtrigRegister;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(TriggerLevel <= (u8)XUARTPS_RXWM_MASK);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -316,9 +310,7 @@ u16 XUartPs_GetModemStatus(XUartPs *InstancePtr)
{
u32 ModemStatusRegister;
u16 TmpRegister;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -351,9 +343,7 @@ u32 XUartPs_IsSending(XUartPs *InstancePtr)
u32 ActiveResult;
u32 EmptyResult;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -398,23 +388,17 @@ u8 XUartPs_GetOperMode(XUartPs *InstancePtr)
u32 ModeRegister;
u8 OperMode;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- /*
- * Read the Mode register.
- */
+ /* Read the Mode register. */
ModeRegister =
XUartPs_ReadReg(InstancePtr->Config.BaseAddress,
XUARTPS_MR_OFFSET);
ModeRegister &= (u32)XUARTPS_MR_CHMODE_MASK;
- /*
- * Return the constant
- */
+ /* Return the constant */
switch (ModeRegister) {
case XUARTPS_MR_CHMODE_NORM:
OperMode = XUARTPS_OPER_MODE_NORMAL;
@@ -456,23 +440,17 @@ void XUartPs_SetOperMode(XUartPs *InstancePtr, u8 OperationMode)
{
u32 ModeRegister;
- /*
- * Assert validates the input arguments.
- */
+ /* Assert validates the input arguments. */
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
Xil_AssertVoid(OperationMode <= XUARTPS_OPER_MODE_REMOTE_LOOP);
- /*
- * Read the Mode register.
- */
+ /* Read the Mode register. */
ModeRegister =
XUartPs_ReadReg(InstancePtr->Config.BaseAddress,
XUARTPS_MR_OFFSET);
- /*
- * Set the correct value by masking the bits, then ORing the const.
- */
+ /* Set the correct value by masking the bits, then ORing the const. */
ModeRegister &= (u32)(~XUARTPS_MR_CHMODE_MASK);
switch (OperationMode) {
@@ -520,21 +498,15 @@ u8 XUartPs_GetFlowDelay(XUartPs *InstancePtr)
{
u32 FdelTmpRegister;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- /*
- * Read the Mode register.
- */
+ /* Read the Mode register. */
FdelTmpRegister = XUartPs_ReadReg(InstancePtr->Config.BaseAddress,
XUARTPS_FLOWDEL_OFFSET);
- /*
- * Return the contents of the flow delay register
- */
+ /* Return the contents of the flow delay register */
FdelTmpRegister = (u8)(FdelTmpRegister & (u32)XUARTPS_FLOWDEL_MASK);
return FdelTmpRegister;
}
@@ -559,9 +531,7 @@ void XUartPs_SetFlowDelay(XUartPs *InstancePtr, u8 FlowDelayValue)
{
u32 FdelRegister;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(FlowDelayValue > (u8)XUARTPS_FLOWDEL_MASK);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -594,21 +564,15 @@ u8 XUartPs_GetRecvTimeout(XUartPs *InstancePtr)
u32 RtoRegister;
u8 RtoRTmpRegister;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- /*
- * Read the Receive Timeout register.
- */
+ /* Read the Receive Timeout register. */
RtoRegister = XUartPs_ReadReg(InstancePtr->Config.BaseAddress,
XUARTPS_RXTOUT_OFFSET);
- /*
- * Return the contents of the mode register shifted appropriately
- */
+ /* Return the contents of the mode register shifted appropriately */
RtoRTmpRegister = (u8)(RtoRegister & (u32)XUARTPS_RXTOUT_MASK);
return RtoRTmpRegister;
}
@@ -633,23 +597,17 @@ void XUartPs_SetRecvTimeout(XUartPs *InstancePtr, u8 RecvTimeout)
{
u32 RtoRegister;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- /*
- * Set the correct value by masking the bits
- */
+ /* Set the correct value by masking the bits */
RtoRegister = ((u32)RecvTimeout & (u32)XUARTPS_RXTOUT_MASK);
XUartPs_WriteReg(InstancePtr->Config.BaseAddress,
XUARTPS_RXTOUT_OFFSET, RtoRegister);
- /*
- * Configure CR to restart the receiver timeout counter
- */
+ /* Configure CR to restart the receiver timeout counter */
RtoRegister =
XUartPs_ReadReg(InstancePtr->Config.BaseAddress,
XUARTPS_CR_OFFSET);
@@ -695,9 +653,7 @@ s32 XUartPs_SetDataFormat(XUartPs *InstancePtr,
Xil_AssertNonvoid(FormatPtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- /*
- * Verify the inputs specified are valid
- */
+ /* Verify the inputs specified are valid */
if ((FormatPtr->DataBits > ((u32)XUARTPS_FORMAT_6_BITS)) ||
(FormatPtr->StopBits > ((u8)XUARTPS_FORMAT_2_STOP_BIT)) ||
(FormatPtr->Parity > ((u32)XUARTPS_FORMAT_NO_PARITY))) {
@@ -741,9 +697,7 @@ s32 XUartPs_SetDataFormat(XUartPs *InstancePtr,
ModeRegister &= (u32)(~XUARTPS_MR_PARITY_MASK);
ModeRegister |= (FormatPtr->Parity << XUARTPS_MR_PARITY_SHIFT);
- /*
- * Update the mode register
- */
+ /* Update the mode register */
XUartPs_WriteReg(InstancePtr->Config.BaseAddress, XUARTPS_MR_OFFSET,
ModeRegister);
@@ -774,9 +728,7 @@ void XUartPs_GetDataFormat(XUartPs *InstancePtr, XUartPsFormat * FormatPtr)
u32 ModeRegister;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(FormatPtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
@@ -791,24 +743,19 @@ void XUartPs_GetDataFormat(XUartPs *InstancePtr, XUartPsFormat * FormatPtr)
ModeRegister = XUartPs_ReadReg(InstancePtr->Config.BaseAddress,
XUARTPS_MR_OFFSET);
- /*
- * Get the length of data (8,7,6,5)
- */
+ /* Get the length of data (8,7,6,5) */
FormatPtr->DataBits =
((ModeRegister & (u32)XUARTPS_MR_CHARLEN_MASK) >>
XUARTPS_MR_CHARLEN_SHIFT);
- /*
- * Get the number of stop bits
- */
+ /* Get the number of stop bits */
FormatPtr->StopBits =
(u8)((ModeRegister & (u32)XUARTPS_MR_STOPMODE_MASK) >>
XUARTPS_MR_STOPMODE_SHIFT);
- /*
- * Determine what parity is
- */
+ /* Determine what parity is */
FormatPtr->Parity =
(u32)((ModeRegister & (u32)XUARTPS_MR_PARITY_MASK) >>
XUARTPS_MR_PARITY_SHIFT);
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_selftest.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_selftest.c
similarity index 95%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_selftest.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_selftest.c
index a5a4757f4..a1a7dd366 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_selftest.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_selftest.c
@@ -33,6 +33,8 @@
/**
*
* @file xuartps_selftest.c
+* @addtogroup uartps_v3_1
+* @{
*
* This file contains the self-test functions for the XUartPs driver.
*
@@ -100,32 +102,24 @@ s32 XUartPs_SelfTest(XUartPs *InstancePtr)
u8 Index;
u32 ReceiveDataResult;
- /*
- * Assert validates the input arguments
- */
+ /* Assert validates the input arguments */
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
- /*
- * Disable all interrupts in the interrupt disable register
- */
+ /* Disable all interrupts in the interrupt disable register */
IntrRegister = XUartPs_ReadReg(InstancePtr->Config.BaseAddress,
XUARTPS_IMR_OFFSET);
XUartPs_WriteReg(InstancePtr->Config.BaseAddress, XUARTPS_IDR_OFFSET,
XUARTPS_IXR_MASK);
- /*
- * Setup for local loopback
- */
+ /* Setup for local loopback */
ModeRegister = XUartPs_ReadReg(InstancePtr->Config.BaseAddress,
XUARTPS_MR_OFFSET);
XUartPs_WriteReg(InstancePtr->Config.BaseAddress, XUARTPS_MR_OFFSET,
((ModeRegister & (u32)(~XUARTPS_MR_CHMODE_MASK)) |
(u32)XUARTPS_MR_CHMODE_L_LOOP));
- /*
- * Send a number of bytes and receive them, one at a time.
- */
+ /* Send a number of bytes and receive them, one at a time. */
for (Index = 0U; Index < XUARTPS_TOTAL_BYTES; Index++) {
/*
* Send out the byte and if it was not sent then the failure
@@ -144,9 +138,7 @@ s32 XUartPs_SelfTest(XUartPs *InstancePtr)
XUARTPS_SR_RXEMPTY;
}
- /*
- * Receive the byte
- */
+ /* Receive the byte */
(void)XUartPs_Recv(InstancePtr, &ReturnString[Index], 1U);
}
@@ -171,3 +163,4 @@ s32 XUartPs_SelfTest(XUartPs *InstancePtr)
return Status;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_sinit.c
similarity index 98%
rename from FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_sinit.c
rename to FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_sinit.c
index e9dfaa96e..8dc87dae3 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_0/src/xuartps_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/uartps_v3_1/src/xuartps_sinit.c
@@ -33,6 +33,8 @@
/**
*
* @file xuartps_sinit.c
+* @addtogroup uartps_v3_1
+* @{
*
* The implementation of the XUartPs driver's static initialzation
* functionality.
@@ -94,3 +96,4 @@ XUartPs_Config *XUartPs_LookupConfig(u16 DeviceId)
return (XUartPs_Config *)CfgPtr;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu.c
deleted file mode 100644
index 1a67a0ffd..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu.c
+++ /dev/null
@@ -1,689 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/****************************************************************************/
-/**
-*
-* @file xusbpsu.c
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ----- -------- -----------------------------------------------------
-* 1.00a bss 01/22/15 First release
-* 1.00a bss 03/18/15 Added XUsbPsu_Wait_Clear_Timeout and
-* XUsbPsu_Wait_Set_Timeout functions
-*
-*
-*
-*****************************************************************************/
-
-/***************************** Include Files ********************************/
-
-#include "xusbpsu.h"
-
-/************************** Constant Definitions *****************************/
-
-
-/**************************** Type Definitions *******************************/
-
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-
-/************************** Function Prototypes ******************************/
-
-
-/************************** Variable Definitions *****************************/
-
-/*****************************************************************************/
-/**
-* Waits until a bit in a register is cleared or timeout occurs
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance to be worked on.
-* @param Offset is register offset.
-* @param BitMask is bit mask of required bit to be checked.
-* @param Timeout is the time to wait specified in micro seconds.
-*
-* @return
-* - XST_SUCCESS when bit is cleared.
-* - XST_FAILURE when timed out.
-*
-******************************************************************************/
-int XUsbPsu_Wait_Clear_Timeout(struct XUsbPsu *InstancePtr, u32 Offset,
- u32 BitMask, u32 Timeout)
-{
- u32 RegVal;
-
- do {
- RegVal = XUsbPsu_ReadReg(InstancePtr, Offset);
- if (!(RegVal & BitMask))
- break;
- Timeout--;
- if (!Timeout)
- return XST_FAILURE;
- usleep(1);
- } while (1);
-
- return XST_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
-* Waits until a bit in a register is set or timeout occurs
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance to be worked on.
-* @param Offset is register offset.
-* @param BitMask is bit mask of required bit to be checked.
-* @param Timeout is the time to wait specified in micro seconds.
-*
-* @return
-* - XST_SUCCESS when bit is set.
-* - XST_FAILURE when timed out.
-*
-******************************************************************************/
-int XUsbPsu_Wait_Set_Timeout(struct XUsbPsu *InstancePtr, u32 Offset,
- u32 BitMask, u32 Timeout)
-{
- u32 RegVal;
-
- do {
- RegVal = XUsbPsu_ReadReg(InstancePtr, Offset);
- if (RegVal & BitMask)
- break;
- Timeout--;
- if (!Timeout)
- return XST_FAILURE;
- usleep(1);
- } while (1);
-
- return XST_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
-* Sets mode of Core to USB Device/Host/OTG.
-*
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance to be worked on.
-* @param Mode is mode to set
-* - XUSBPSU_GCTL_PRTCAP_OTG
-* - XUSBPSU_GCTL_PRTCAP_HOST
-* - XUSBPSU_GCTL_PRTCAP_DEVICE
-*
-* @return None
-*
-******************************************************************************/
-void XUsbPsu_SetMode(struct XUsbPsu *InstancePtr, u32 Mode)
-{
- u32 RegVal;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(Mode <= XUSBPSU_GCTL_PRTCAP_OTG &&
- Mode >= XUSBPSU_GCTL_PRTCAP_HOST);
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_GCTL);
- RegVal &= ~(XUSBPSU_GCTL_PRTCAPDIR(XUSBPSU_GCTL_PRTCAP_OTG));
- RegVal |= XUSBPSU_GCTL_PRTCAPDIR(Mode);
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GCTL, RegVal);
-}
-
-/*****************************************************************************/
-/**
-* Issues core PHY reset.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance to be worked on.
-*
-* @return None
-*
-******************************************************************************/
-void XUsbPsu_PhyReset(struct XUsbPsu *InstancePtr)
-{
- u32 RegVal;
-
- Xil_AssertVoid(InstancePtr != NULL);
-
- /* Before Resetting PHY, put Core in Reset */
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_GCTL);
- RegVal |= XUSBPSU_GCTL_CORESOFTRESET;
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GCTL, RegVal);
-
- /* Assert USB3 PHY reset */
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_GUSB3PIPECTL(0));
- RegVal |= XUSBPSU_GUSB3PIPECTL_PHYSOFTRST;
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GUSB3PIPECTL(0), RegVal);
-
- /* Assert USB2 PHY reset */
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_GUSB2PHYCFG(0));
- RegVal |= XUSBPSU_GUSB2PHYCFG_PHYSOFTRST;
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GUSB2PHYCFG(0), RegVal);
-
- usleep(XUSBPSU_PHY_TIMEOUT);
-
- /* Clear USB3 PHY reset */
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_GUSB3PIPECTL(0));
- RegVal &= ~XUSBPSU_GUSB3PIPECTL_PHYSOFTRST;
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GUSB3PIPECTL(0), RegVal);
-
- /* Clear USB2 PHY reset */
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_GUSB2PHYCFG(0));
- RegVal &= ~XUSBPSU_GUSB2PHYCFG_PHYSOFTRST;
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GUSB2PHYCFG(0), RegVal);
-
- usleep(XUSBPSU_PHY_TIMEOUT);
-
- /* After PHYs are stable we can take Core out of reset State */
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_GCTL);
- RegVal &= ~XUSBPSU_GCTL_CORESOFTRESET;
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GCTL, RegVal);
-}
-
-/*****************************************************************************/
-/**
-* Sets up Event buffers so that events are written by Core.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance to be worked on.
-*
-* @return None
-*
-******************************************************************************/
-void XUsbPsu_EventBuffersSetup(struct XUsbPsu *InstancePtr)
-{
- struct XUsbPsu_EvtBuffer *Evt;
-
- Xil_AssertVoid(InstancePtr != NULL);
-
- Evt = &InstancePtr->Evt;
- Evt->BuffAddr = (void *)InstancePtr->EventBuffer;
-
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GEVNTADRLO(0),
- (UINTPTR)InstancePtr->EventBuffer);
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GEVNTADRHI(0),
- ((UINTPTR)(InstancePtr->EventBuffer) >> 16) >> 16);
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GEVNTSIZ(0),
- XUSBPSU_GEVNTSIZ_SIZE(sizeof(InstancePtr->EventBuffer)));
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GEVNTCOUNT(0), 0);
-}
-
-/*****************************************************************************/
-/**
-* Resets Event buffer Registers to zero so that events are not written by Core.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance to be worked on.
-*
-* @return None
-*
-******************************************************************************/
-void XUsbPsu_EventBuffersReset(struct XUsbPsu *InstancePtr)
-{
-
- Xil_AssertVoid(InstancePtr != NULL);
-
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GEVNTADRLO(0), 0);
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GEVNTADRHI(0), 0);
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GEVNTSIZ(0),
- XUSBPSU_GEVNTSIZ_INTMASK | XUSBPSU_GEVNTSIZ_SIZE(0));
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GEVNTCOUNT(0), 0);
-}
-
-/*****************************************************************************/
-/**
-* Reads data from Hardware Params Registers of Core.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance to be worked on.
-* @param RegIndex is Register number to read
-* - XUSBPSU_GHWPARAMS0
-* - XUSBPSU_GHWPARAMS1
-* - XUSBPSU_GHWPARAMS2
-* - XUSBPSU_GHWPARAMS3
-* - XUSBPSU_GHWPARAMS4
-* - XUSBPSU_GHWPARAMS5
-* - XUSBPSU_GHWPARAMS6
-* - XUSBPSU_GHWPARAMS7
-*
-* @return One of the GHWPARAMS RegValister contents.
-*
-******************************************************************************/
-u32 XUsbPsu_ReadHwParams(struct XUsbPsu *InstancePtr, u8 RegIndex)
-{
- u32 RegVal;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(RegIndex >= XUSBPSU_GHWPARAMS0 &&
- RegIndex <= XUSBPSU_GHWPARAMS7);
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, (XUSBPSU_GHWPARAMS0_OFFSET +
- (RegIndex * 4)));
- return RegVal;
-}
-
-/*****************************************************************************/
-/**
-* Initializes Core.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance to be worked on.
-*
-* @return
-* - XST_SUCCESS if initialization was successful
-* - XST_FAILURE if initialization was not successful
-*
-******************************************************************************/
-int XUsbPsu_CoreInit(struct XUsbPsu *InstancePtr)
-{
- u32 RegVal;
- u32 Hwparams1;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
-
- /* issue device SoftReset too */
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DCTL, XUSBPSU_DCTL_CSFTRST);
-
- if (XUsbPsu_Wait_Clear_Timeout(InstancePtr, XUSBPSU_DCTL,
- XUSBPSU_DCTL_CSFTRST, 500) == XST_FAILURE) {
- /* timed out return failure */
- return XST_FAILURE;
- }
-
- XUsbPsu_PhyReset(InstancePtr);
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_GCTL);
- RegVal &= ~XUSBPSU_GCTL_SCALEDOWN_MASK;
- RegVal &= ~XUSBPSU_GCTL_DISSCRAMBLE;
-
- Hwparams1 = XUsbPsu_ReadHwParams(InstancePtr, 1);
-
- switch (XUSBPSU_GHWPARAMS1_EN_PWROPT(Hwparams1)) {
- case XUSBPSU_GHWPARAMS1_EN_PWROPT_CLK:
- RegVal &= ~XUSBPSU_GCTL_DSBLCLKGTNG;
- break;
- case XUSBPSU_GHWPARAMS1_EN_PWROPT_HIB:
- /* enable hibernation here */
- break;
- default:
- break;
- }
-
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GCTL, RegVal);
-
- return XST_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
-* Enables an interrupt in Event Enable RegValister.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance to be worked on
-* @param Mask is the OR of any Interrupt Enable Masks:
-* - XUSBPSU_DEVTEN_VNDRDEVTSTRCVEDEN
-* - XUSBPSU_DEVTEN_EVNTOVERFLOWEN
-* - XUSBPSU_DEVTEN_CMDCMPLTEN
-* - XUSBPSU_DEVTEN_ERRTICERREN
-* - XUSBPSU_DEVTEN_SOFEN
-* - XUSBPSU_DEVTEN_EOPFEN
-* - XUSBPSU_DEVTEN_HIBERNATIONREQEVTEN
-* - XUSBPSU_DEVTEN_WKUPEVTEN
-* - XUSBPSU_DEVTEN_ULSTCNGEN
-* - XUSBPSU_DEVTEN_CONNECTDONEEN
-* - XUSBPSU_DEVTEN_USBRSTEN
-* - XUSBPSU_DEVTEN_DISCONNEVTEN
-*
-* @return None
-*
-******************************************************************************/
-void XUsbPsu_EnableIntr(struct XUsbPsu *InstancePtr, u32 Mask)
-{
- u32 RegVal;
-
- Xil_AssertVoid(InstancePtr != NULL);
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DEVTEN);
- RegVal |= Mask;
-
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DEVTEN, RegVal);
-}
-
-/*****************************************************************************/
-/**
-* Disables an interrupt in Event Enable RegValister.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance to be worked on.
-* @param Mask is the OR of Interrupt Enable Masks
-* - XUSBPSU_DEVTEN_VNDRDEVTSTRCVEDEN
-* - XUSBPSU_DEVTEN_EVNTOVERFLOWEN
-* - XUSBPSU_DEVTEN_CMDCMPLTEN
-* - XUSBPSU_DEVTEN_ERRTICERREN
-* - XUSBPSU_DEVTEN_SOFEN
-* - XUSBPSU_DEVTEN_EOPFEN
-* - XUSBPSU_DEVTEN_HIBERNATIONREQEVTEN
-* - XUSBPSU_DEVTEN_WKUPEVTEN
-* - XUSBPSU_DEVTEN_ULSTCNGEN
-* - XUSBPSU_DEVTEN_CONNECTDONEEN
-* - XUSBPSU_DEVTEN_USBRSTEN
-* - XUSBPSU_DEVTEN_DISCONNEVTEN
-*
-* @return None
-*
-******************************************************************************/
-void XUsbPsu_DisableIntr(struct XUsbPsu *InstancePtr, u32 Mask)
-{
- u32 RegVal;
-
- Xil_AssertVoid(InstancePtr != NULL);
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DEVTEN);
- RegVal &= ~Mask;
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DEVTEN, RegVal);
-}
-
-/****************************************************************************/
-/**
-*
-* This function does the following:
-* - initializes a specific XUsbPsu instance.
-* - sets up Event Buffer for Core to write events.
-* - Core Reset and PHY Reset.
-* - Sets core in Device Mode.
-* - Sets default speed as HIGH_SPEED.
-* - Sets Device Address to 0.
-* - Enables interrupts.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param ConfigPtr points to the XUsbPsu device configuration structure.
-* @param BaseAddress is the device base address in the virtual memory
-* address space. If the address translation is not used then the
-* physical address is passed.
-* Unexpected errors may occur if the address mapping is changed
-* after this function is invoked.
-*
-* @return XST_SUCCESS else XST_FAILURE
-*
-* @note None.
-*
-*****************************************************************************/
-int XUsbPsu_CfgInitialize(struct XUsbPsu *InstancePtr,
- XUsbPsu_Config *ConfigPtr, u32 BaseAddress)
-{
- int Ret;
- u32 RegVal;
- u32 IntrMask;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(ConfigPtr != NULL);
-
- InstancePtr->ConfigPtr = ConfigPtr;
-
- Ret = XUsbPsu_CoreInit(InstancePtr);
- if (Ret) {
- return XST_FAILURE;
- }
-
- RegVal = XUsbPsu_ReadHwParams(InstancePtr, 3);
- InstancePtr->NumInEps = XUSBPSU_NUM_IN_EPS(RegVal);
- InstancePtr->NumOutEps = XUSBPSU_NUM_EPS(RegVal) - InstancePtr->NumInEps;
-
- /* Map USB and Physical Endpoints */
- XUsbPsu_InitializeEps(InstancePtr);
-
- XUsbPsu_EventBuffersSetup(InstancePtr);
-
- XUsbPsu_SetMode(InstancePtr, XUSBPSU_GCTL_PRTCAP_DEVICE);
-
- XUsbPsu_SetSpeed(InstancePtr, XUSBPSU_DCFG_HIGHSPEED);
-
- XUsbPsu_SetDeviceAddress(InstancePtr, 0);
-
- return XST_SUCCESS;
-}
-
-/****************************************************************************/
-/**
-*
-* Starts the controller so that Host can detect this device.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-*
-* @return XST_SUCCESS else XST_FAILURE
-*
-* @note None.
-*
-*****************************************************************************/
-int XUsbPsu_Start(struct XUsbPsu *InstancePtr)
-{
- u32 RegVal;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DCTL);
-
- RegVal |= XUSBPSU_DCTL_RUN_STOP;
-
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DCTL, RegVal);
-
- if (XUsbPsu_Wait_Clear_Timeout(InstancePtr, XUSBPSU_DSTS,
- XUSBPSU_DSTS_DEVCTRLHLT, 500) == XST_FAILURE) {
- return XST_FAILURE;
- }
-
- return XST_SUCCESS;
-}
-
-/****************************************************************************/
-/**
-*
-* Stops the controller so that Device disconnects from Host.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-*
-* @return XST_SUCCESS else XST_FAILURE
-*
-* @note None.
-*
-*****************************************************************************/
-int XUsbPsu_Stop(struct XUsbPsu *InstancePtr)
-{
- u32 RegVal;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DCTL);
- RegVal &= ~XUSBPSU_DCTL_RUN_STOP;
-
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DCTL, RegVal);
-
- if (XUsbPsu_Wait_Set_Timeout(InstancePtr, XUSBPSU_DSTS,
- XUSBPSU_DSTS_DEVCTRLHLT, 500) == XST_FAILURE) {
- return XST_FAILURE;
- }
-
- return XST_SUCCESS;
-}
-
-/****************************************************************************/
-/**
- * Enables USB2 Test Modes
- *
- * @param InstancePtr is a pointer to the XUsbPsu instance.
- * @param Mode is Test mode to set.
- *
- * @return XST_SUCCESS else XST_FAILURE
- *
- * @note None.
- *
- ****************************************************************************/
-int XUsbPsu_SetTestMode(struct XUsbPsu *InstancePtr, int Mode)
-{
- u32 RegVal;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(Mode >= TEST_J && Mode <= TEST_FORCE_ENABLE);
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DCTL);
- RegVal &= ~XUSBPSU_DCTL_TSTCTRL_MASK;
-
- switch (Mode) {
- case TEST_J:
- case TEST_K:
- case TEST_SE0_NAK:
- case TEST_PACKET:
- case TEST_FORCE_ENABLE:
- RegVal |= Mode << 1;
- break;
- default:
- return XST_FAILURE;
- }
-
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DCTL, RegVal);
-
- return XST_SUCCESS;
-}
-
-/****************************************************************************/
-/**
- * Gets current State of USB Link
- *
- * @param InstancePtr is a pointer to the XUsbPsu instance.
- *
- * @return Link State
- *
- * @note None.
- *
- ****************************************************************************/
-u32 XUsbPsu_GetLinkState(struct XUsbPsu *InstancePtr)
-{
- u32 RegVal;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DSTS);
-
- return XUSBPSU_DSTS_USBLNKST(RegVal);
-}
-
-/****************************************************************************/
-/**
- * Sets USB Link to a particular State
- *
- * @param InstancePtr is a pointer to the XUsbPsu instance.
- * @param State is State of Link to set.
- *
- * @return XST_SUCCESS else XST_FAILURE
- *
- * @note None.
- *
- ****************************************************************************/
-int XUsbPsu_SetLinkState(struct XUsbPsu *InstancePtr, u8 State)
-{
- u32 RegVal;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
-
- /* Wait until device controller is ready. */
- if (XUsbPsu_Wait_Clear_Timeout(InstancePtr, XUSBPSU_DSTS,
- XUSBPSU_DSTS_DCNRD, 500) == XST_FAILURE) {
- return XST_FAILURE;
- }
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DCTL);
- RegVal &= ~XUSBPSU_DCTL_ULSTCHNGREQ_MASK;
-
- RegVal |= XUSBPSU_DCTL_ULSTCHNGREQ(State);
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DCTL, RegVal);
-
- return XST_SUCCESS;
-}
-
-/****************************************************************************/
-/**
-* Sets speed of the Core for connecting to Host
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Speed is required speed
-* - XUSBPSU_DCFG_HIGHSPEED
-* - XUSBPSU_DCFG_FULLSPEED2
-* - XUSBPSU_DCFG_LOWSPEED
-* - XUSBPSU_DCFG_FULLSPEED1
-*
-* @return None
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_SetSpeed(struct XUsbPsu *InstancePtr, u32 Speed)
-{
- u32 RegVal;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(Speed >= XUSBPSU_DCFG_HIGHSPEED &&
- Speed <= XUSBPSU_DCFG_SUPERSPEED);
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DCFG);
- RegVal &= ~(XUSBPSU_DCFG_SPEED_MASK);
- RegVal |= Speed;
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DCFG, RegVal);
-}
-
-/****************************************************************************/
-/**
-* Sets Device Address of the Core
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Addr is address to set.
-*
-* @return XST_SUCCESS else XST_FAILURE
-*
-* @note None.
-*
-*****************************************************************************/
-int XUsbPsu_SetDeviceAddress(struct XUsbPsu *InstancePtr, u16 Addr)
-{
- u32 RegVal;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(Addr <= 127);
-
- if (InstancePtr->State == XUSBPSU_STATE_CONFIGURED) {
- return XST_FAILURE;
- }
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DCFG);
- RegVal &= ~(XUSBPSU_DCFG_DEVADDR_MASK);
- RegVal |= XUSBPSU_DCFG_DEVADDR(Addr);
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DCFG, RegVal);
-
- if (Addr != 0)
- InstancePtr->State = XUSBPSU_STATE_ADDRESS;
- else
- InstancePtr->State = XUSBPSU_STATE_DEFAULT;
-
- return XST_FAILURE;
-}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu.h
deleted file mode 100644
index a7ad3d7e7..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu.h
+++ /dev/null
@@ -1,569 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/****************************************************************************/
-/**
-*
-* @file xusbpsu.h
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ----- -------- -----------------------------------------------------
-* 1.00a bss 01/22/15 First release
-* 1.00a bss 03/18/15 Added support for Non-control endpoints
-* Added mass storage example
-*
-*
-*
-*****************************************************************************/
-#ifndef XUSBPSU_H /* Prevent circular inclusions */
-#define XUSBPSU_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files ********************************/
-#include "xparameters.h"
-#include "xil_types.h"
-#include "xil_assert.h"
-#include "xstatus.h"
-#include "xusbpsu_hw.h"
-
-/************************** Constant Definitions ****************************/
-
-#define ALIGNMENT_CACHELINE __attribute__ ((aligned(64)))
-
-#define XUSBPSU_PHY_TIMEOUT 5000 /* in micro seconds */
-
-#define XUSBPSU_EP_DIR_IN 1
-#define XUSBPSU_EP_DIR_OUT 0
-
-#define USB_ENDPOINT_NUMBER_MASK 0x0f /* in bEndpointAddress */
-#define USB_ENDPOINT_DIR_MASK 0x80
-
-#define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */
-#define USB_ENDPOINT_XFER_CONTROL 0
-#define USB_ENDPOINT_XFER_ISOC 1
-#define USB_ENDPOINT_XFER_BULK 2
-#define USB_ENDPOINT_XFER_INT 3
-#define USB_ENDPOINT_MAX_ADJUSTABLE 0x80
-
-#define TEST_J 1
-#define TEST_K 2
-#define TEST_SE0_NAK 3
-#define TEST_PACKET 4
-#define TEST_FORCE_ENABLE 5
-
-#define XUSBPSU_NUM_TRBS 8
-
-#define XUSBPSU_EVENT_PENDING (1 << 0)
-
-#define XUSBPSU_EP_ENABLED (1 << 0)
-#define XUSBPSU_EP_STALL (1 << 1)
-#define XUSBPSU_EP_WEDGE (1 << 2)
-#define XUSBPSU_EP_BUSY (1 << 4)
-#define XUSBPSU_EP_PENDING_REQUEST (1 << 5)
-#define XUSBPSU_EP_MISSED_ISOC (1 << 6)
-
-#define XUSBPSU_GHWPARAMS0 0
-#define XUSBPSU_GHWPARAMS1 1
-#define XUSBPSU_GHWPARAMS2 2
-#define XUSBPSU_GHWPARAMS3 3
-#define XUSBPSU_GHWPARAMS4 4
-#define XUSBPSU_GHWPARAMS5 5
-#define XUSBPSU_GHWPARAMS6 6
-#define XUSBPSU_GHWPARAMS7 7
-
-/* HWPARAMS0 */
-#define XUSBPSU_MODE(n) ((n) & 0x7)
-#define XUSBPSU_MDWIDTH(n) (((n) & 0xff00) >> 8)
-
-/* HWPARAMS1 */
-#define XUSBPSU_NUM_INT(n) (((n) & (0x3f << 15)) >> 15)
-
-/* HWPARAMS3 */
-#define XUSBPSU_NUM_IN_EPS_MASK (0x1f << 18)
-#define XUSBPSU_NUM_EPS_MASK (0x3f << 12)
-#define XUSBPSU_NUM_EPS(p) (((p) & \
- (XUSBPSU_NUM_EPS_MASK)) >> 12)
-#define XUSBPSU_NUM_IN_EPS(p) (((p) & \
- (XUSBPSU_NUM_IN_EPS_MASK)) >> 18)
-
-/* HWPARAMS7 */
-#define XUSBPSU_RAM1_DEPTH(n) ((n) & 0xffff)
-
-#define XUSBPSU_DEPEVT_XFERCOMPLETE 0x01
-#define XUSBPSU_DEPEVT_XFERINPROGRESS 0x02
-#define XUSBPSU_DEPEVT_XFERNOTREADY 0x03
-#define XUSBPSU_DEPEVT_STREAMEVT 0x06
-#define XUSBPSU_DEPEVT_EPCMDCMPLT 0x07
-
-/* Within XferNotReady */
-#define DEPEVT_STATUS_TRANSFER_ACTIVE (1 << 3)
-
-/* Within XferComplete */
-#define DEPEVT_STATUS_BUSERR (1 << 0)
-#define DEPEVT_STATUS_SHORT (1 << 1)
-#define DEPEVT_STATUS_IOC (1 << 2)
-#define DEPEVT_STATUS_LST (1 << 3)
-
-/* Stream event only */
-#define DEPEVT_STREAMEVT_FOUND 1
-#define DEPEVT_STREAMEVT_NOTFOUND 2
-
-/* Control-only Status */
-#define DEPEVT_STATUS_CONTROL_DATA 1
-#define DEPEVT_STATUS_CONTROL_STATUS 2
-#define DEPEVT_STATUS_CONTROL_DATA_INVALTRB 9
-#define DEPEVT_STATUS_CONTROL_STATUS_INVALTRB 0xA
-
-#define XUSBPSU_ENDPOINTS_NUM 12
-
-#define XUSBPSU_EVENT_SIZE 4 /* bytes */
-#define XUSBPSU_EVENT_MAX_NUM 64 /* 2 events/endpoint */
-#define XUSBPSU_EVENT_BUFFERS_SIZE (XUSBPSU_EVENT_SIZE * \
- XUSBPSU_EVENT_MAX_NUM)
-
-#define XUSBPSU_EVENT_TYPE_MASK 0xfe
-
-#define XUSBPSU_EVENT_TYPE_DEV 0
-#define XUSBPSU_EVENT_TYPE_CARKIT 3
-#define XUSBPSU_EVENT_TYPE_I2C 4
-
-#define XUSBPSU_DEVICE_EVENT_DISCONNECT 0
-#define XUSBPSU_DEVICE_EVENT_RESET 1
-#define XUSBPSU_DEVICE_EVENT_CONNECT_DONE 2
-#define XUSBPSU_DEVICE_EVENT_LINK_STATUS_CHANGE 3
-#define XUSBPSU_DEVICE_EVENT_WAKEUP 4
-#define XUSBPSU_DEVICE_EVENT_HIBER_REQ 5
-#define XUSBPSU_DEVICE_EVENT_EOPF 6
-#define XUSBPSU_DEVICE_EVENT_SOF 7
-#define XUSBPSU_DEVICE_EVENT_ERRATIC_ERROR 9
-#define XUSBPSU_DEVICE_EVENT_CMD_CMPL 10
-#define XUSBPSU_DEVICE_EVENT_OVERFLOW 11
-
-#define XUSBPSU_GEVNTCOUNT_MASK 0xfffc
-
-/*
- * Control Endpoint state
- */
-#define XUSBPSU_EP0_SETUP_PHASE 1 /**< Setup Phase */
-#define XUSBPSU_EP0_DATA_PHASE 2 /**< Data Phase */
-#define XUSBPSU_EP0_STATUS_PHASE 3 /**< Status Pahse */
-
-/*
- * Link State
- */
-#define XUSBPSU_LINK_STATE_U0 0x00 /**< in HS - ON */
-#define XUSBPSU_LINK_STATE_U1 0x01
-#define XUSBPSU_LINK_STATE_U2 0x02 /**< in HS - SLEEP */
-#define XUSBPSU_LINK_STATE_U3 0x03 /**< in HS - SUSPEND */
-#define XUSBPSU_LINK_STATE_SS_DIS 0x04
-#define XUSBPSU_LINK_STATE_RX_DET 0x05
-#define XUSBPSU_LINK_STATE_SS_INACT 0x06
-#define XUSBPSU_LINK_STATE_POLL 0x07
-#define XUSBPSU_LINK_STATE_RECOV 0x08
-#define XUSBPSU_LINK_STATE_HRESET 0x09
-#define XUSBPSU_LINK_STATE_CMPLY 0x0A
-#define XUSBPSU_LINK_STATE_LPBK 0x0B
-#define XUSBPSU_LINK_STATE_RESET 0x0E
-#define XUSBPSU_LINK_STATE_RESUME 0x0F
-#define XUSBPSU_LINK_STATE_MASK 0x0F
-
-/*
- * Device States
- */
-#define XUSBPSU_STATE_ATTACHED 0
-#define XUSBPSU_STATE_POWERED 1
-#define XUSBPSU_STATE_DEFAULT 2
-#define XUSBPSU_STATE_ADDRESS 3
-#define XUSBPSU_STATE_CONFIGURED 4
-#define XUSBPSU_STATE_SUSPENDED 5
-
-/*
- * Device Speeds
- */
-#define XUSBPSU_SPEED_UNKNOWN 0
-#define XUSBPSU_SPEED_LOW 1
-#define XUSBPSU_SPEED_FULL 2
-#define XUSBPSU_SPEED_HIGH 3
-#define XUSBPSU_SPEED_SUPER 4
-
-
-
-/**************************** Type Definitions ******************************/
-
-/**
- * This typedef contains configuration information for the XUSBPSU
- * device.
- */
-typedef struct {
- u16 DeviceId; /**< Unique ID of controller */
- u32 BaseAddress; /**< Core register base address */
-} XUsbPsu_Config;
-
-/**
- * Software Event buffer representation
- */
-struct XUsbPsu_EvtBuffer {
- void *BuffAddr;
- u32 Offset;
- u32 Count;
- u32 Flags;
-};
-
-/**
- * Transfer Request Block - Hardware format
- */
-struct XUsbPsu_Trb {
- u32 BufferPtrLow;
- u32 BufferPtrHigh;
- u32 Size;
- u32 Ctrl;
-} __attribute__((packed));
-
-
-/*
- * Endpoint Parameters
- */
-struct XUsbPsu_EpParams {
- u32 Param2; /**< Parameter 2 */
- u32 Param1; /**< Parameter 1 */
- u32 Param0; /**< Parameter 0 */
-};
-
-/**
- * USB Standard Control Request
- */
-typedef struct {
- u8 bRequestType;
- u8 bRequest;
- u16 wValue;
- u16 wIndex;
- u16 wLength;
-} __attribute__ ((packed)) SetupPacket;
-
-/**
- * Endpoint representation
- */
-struct XUsbPsu_Ep {
- void (*Handler)(void *, u32, u32);
- /** < User handler called
- * when data is sent for IN Ep
- * and received for OUT Ep
- */
- struct XUsbPsu_Trb EpTrb ALIGNMENT_CACHELINE;/**< TRB used by endpoint */
- u32 EpStatus; /**< Flags to represent Endpoint status */
- u32 RequestedBytes; /**< RequestedBytes for transfer */
- u32 BytesTxed; /**< Actual Bytes transferred */
- u32 Cmd; /**< command issued to EP lately */
- u16 MaxSize; /**< Size of endpoint */
- u8 *BufferPtr; /**< Buffer location */
- u8 ResourceIndex; /**< Resource Index assigned to
- * Endpoint by core
- */
- u8 PhyEpNum; /**< Physical Endpoint Number in core */
- u8 UsbEpNum; /**< USB Endpoint Number */
- u8 Type; /**< Type of Endpoint -
- * Control/BULK/INTERRUPT/ISOC
- */
- u8 Direction; /**< Direction - EP_DIR_OUT/EP_DIR_IN */
- u8 UnalignedTx;
-};
-
-/**
- * USB Device Controller representation
- */
-struct XUsbPsu {
- SetupPacket SetupData ALIGNMENT_CACHELINE;
- /**< Setup Packet buffer */
- struct XUsbPsu_Trb Ep0_Trb ALIGNMENT_CACHELINE;
- /**< TRB for control transfers */
- XUsbPsu_Config *ConfigPtr; /**< Configuration info pointer */
- struct XUsbPsu_Ep eps[XUSBPSU_ENDPOINTS_NUM]; /**< Endpoints */
- struct XUsbPsu_EvtBuffer Evt;
- struct XUsbPsu_EpParams EpParams;
- u32 BaseAddress; /**< Core register base address */
- u32 MaxSpeed;
- u32 DevDescSize;
- u32 ConfigDescSize;
- void (*Chapter9)(struct XUsbPsu *, SetupPacket *);
- void (*ClassHandler)(struct XUsbPsu *, SetupPacket *);
- void *DevDesc;
- void *ConfigDesc;
- u8 EventBuffer[XUSBPSU_EVENT_BUFFERS_SIZE]
- __attribute__((aligned(XUSBPSU_EVENT_BUFFERS_SIZE)));
- u8 NumOutEps;
- u8 NumInEps;
- u8 ControlDir;
- u8 IsInTestMode;
- u8 TestMode;
- u8 Speed;
- u8 State;
- u8 Ep0State;
- u8 LinkState;
- u8 UnalignedTx;
- u8 IsConfigDone;
- u8 IsThreeStage;
-};
-
-struct XUsbPsu_Event_Type {
- u32 Is_DevEvt:1;
- u32 Type:7;
- u32 Reserved8_31:24;
-} __attribute__((packed));
-
-/**
- * struct XUsbPsu_event_depvt - Device Endpoint Events
- * @Is_EpEvt: indicates this is an endpoint event
- * @endpoint_number: number of the endpoint
- * @endpoint_event: The event we have:
- * 0x00 - Reserved
- * 0x01 - XferComplete
- * 0x02 - XferInProgress
- * 0x03 - XferNotReady
- * 0x04 - RxTxFifoEvt (IN->Underrun, OUT->Overrun)
- * 0x05 - Reserved
- * 0x06 - StreamEvt
- * 0x07 - EPCmdCmplt
- * @Reserved11_10: Reserved, don't use.
- * @Status: Indicates the status of the event. Refer to databook for
- * more information.
- * @Parameters: Parameters of the current event. Refer to databook for
- * more information.
- */
-struct XUsbPsu_Event_Epevt {
- u32 Is_EpEvt:1;
- u32 Epnumber:5;
- u32 Endpoint_Event:4;
- u32 Reserved11_10:2;
- u32 Status:4;
- u32 Parameters:16;
-} __attribute__((packed));
-
-/**
- * struct XUsbPsu_event_devt - Device Events
- * @Is_DevEvt: indicates this is a non-endpoint event
- * @Device_Event: indicates it's a device event. Should read as 0x00
- * @Type: indicates the type of device event.
- * 0 - DisconnEvt
- * 1 - USBRst
- * 2 - ConnectDone
- * 3 - ULStChng
- * 4 - WkUpEvt
- * 5 - Reserved
- * 6 - EOPF
- * 7 - SOF
- * 8 - Reserved
- * 9 - ErrticErr
- * 10 - CmdCmplt
- * 11 - EvntOverflow
- * 12 - VndrDevTstRcved
- * @Reserved15_12: Reserved, not used
- * @Event_Info: Information about this event
- * @Reserved31_25: Reserved, not used
- */
-struct XUsbPsu_Event_Devt {
- u32 Is_DevEvt:1;
- u32 Device_Event:7;
- u32 Type:4;
- u32 Reserved15_12:4;
- u32 Event_Info:9;
- u32 Reserved31_25:7;
-} __attribute__((packed));
-
-/**
- * struct XUsbPsu_event_gevt - Other Core Events
- * @one_bit: indicates this is a non-endpoint event (not used)
- * @device_event: indicates it's (0x03) Carkit or (0x04) I2C event.
- * @phy_port_number: self-explanatory
- * @reserved31_12: Reserved, not used.
- */
-struct XUsbPsu_Event_Gevt {
- u32 Is_GlobalEvt:1;
- u32 Device_Event:7;
- u32 Phy_Port_Number:4;
- u32 Reserved31_12:20;
-} __attribute__((packed));
-
-/**
- * union XUsbPsu_event - representation of Event Buffer contents
- * @raw: raw 32-bit event
- * @type: the type of the event
- * @depevt: Device Endpoint Event
- * @devt: Device Event
- * @gevt: Global Event
- */
-union XUsbPsu_Event {
- u32 Raw;
- struct XUsbPsu_Event_Type Type;
- struct XUsbPsu_Event_Epevt Epevt;
- struct XUsbPsu_Event_Devt Devt;
- struct XUsbPsu_Event_Gevt Gevt;
-};
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-#define IS_ALIGNED(x, a) (((x) & ((typeof(x))(a) - 1)) == 0)
-
-#define roundup(x, y) ( \
-{ \
- const typeof(y) __y = y; \
- (((x) + (__y - 1)) / __y) * __y; \
-} \
-)
-
-#define DECLARE_DEV_DESC(Instance, desc) \
- (Instance).DevDesc = &(desc); \
- (Instance).DevDescSize = sizeof((desc))
-
-#define DECLARE_CONFIG_DESC(Instance, desc) \
- (Instance).ConfigDesc = &(desc); \
- (Instance).ConfigDescSize = sizeof((desc))
-
-/************************** Function Prototypes ******************************/
-
-/*
- * Functions in xusbpsu.c
- */
-int XUsbPsu_Wait_Clear_Timeout(struct XUsbPsu *InstancePtr, u32 Offset,
- u32 BitMask, u32 Timeout);
-int XUsbPsu_Wait_Set_Timeout(struct XUsbPsu *InstancePtr, u32 Offset,
- u32 BitMask, u32 Timeout);
-void XUsbPsu_SetMode(struct XUsbPsu *InstancePtr, u32 mode);
-void XUsbPsu_PhyReset(struct XUsbPsu *InstancePtr);
-void XUsbPsu_EventBuffersSetup(struct XUsbPsu *InstancePtr);
-void XUsbPsu_EventBuffersReset(struct XUsbPsu *InstancePtr);
-void XUsbPsu_CoreNumEps(struct XUsbPsu *InstancePtr);
-void XUsbPsu_cache_hwparams(struct XUsbPsu *InstancePtr);
-int XUsbPsu_CoreInit(struct XUsbPsu *InstancePtr);
-void XUsbPsu_EnableIntr(struct XUsbPsu *InstancePtr, u32 Mask);
-void XUsbPsu_DisableIntr(struct XUsbPsu *InstancePtr, u32 Mask);
-int XUsbPsu_CfgInitialize(struct XUsbPsu *InstancePtr,
- XUsbPsu_Config *ConfigPtr, u32 BaseAddress);
-int XUsbPsu_Start(struct XUsbPsu *InstancePtr);
-int XUsbPsu_Stop(struct XUsbPsu *InstancePtr);
-int XUsbPsu_SetTestMode(struct XUsbPsu *InstancePtr, int mode);
-u32 XUsbPsu_GetLinkState(struct XUsbPsu *InstancePtr);
-int XUsbPsu_SetLinkState(struct XUsbPsu *InstancePtr,
- u8 state);
-int XUsbPsu_SendGenericCmd(struct XUsbPsu *InstancePtr,
- int cmd, u32 param);
-void XUsbPsu_SetSpeed(struct XUsbPsu *InstancePtr, u32 Speed);
-int XUsbPsu_SetDeviceAddress(struct XUsbPsu *InstancePtr, u16 Addr);
-
-/*
- * Functions in xusbpsu_endpoint.c
- */
-struct XUsbPsu_EpParams *XUsbPsu_GetEpParams(struct XUsbPsu *InstancePtr);
-u32 XUsbPsu_EpGetTransferIndex(struct XUsbPsu *InstancePtr, u8 UsbEpNum,
- u8 dir);
-const char *XUsbPsu_EpCmdString(u8 cmd);
-int XUsbPsu_SendEpCmd(struct XUsbPsu *InstancePtr, u8 ep, u8 direction,
- u32 cmd, struct XUsbPsu_EpParams *params);
-int XUsbPsu_StartEpConfig(struct XUsbPsu *InstancePtr, u32 ep,
- u8 dir);
-int XUsbPsu_SetEpConfig(struct XUsbPsu *InstancePtr, u8 ep, u8 dir,
- u16 size, u8 type);
-int XUsbPsu_SetXferResource(struct XUsbPsu *InstancePtr, u8 ep, u8 dir);
-int XUsbPsu_EpEnable(struct XUsbPsu *InstancePtr, u8 UsbEp, u8 dir,
- u16 maxsize, u8 type);
-int XUsbPsu_EpDisable(struct XUsbPsu *InstancePtr, u8 UsbEp, u8 dir);
-int XUsbPsu_EnableControlEp(struct XUsbPsu *InstancePtr, u16 size);
-void XUsbPsu_InitializeEps(struct XUsbPsu *InstancePtr);
-void XUsbPsu_StopTransfer(struct XUsbPsu *InstancePtr, u8 ep, u8 dir);
-void XUsbPsu_ClearStalls(struct XUsbPsu *InstancePtr);
-int XUsbPsu_EpBufferSend(struct XUsbPsu *InstancePtr, u8 EpNum,
- u8 *BufferPtr, u32 BufferLen);
-int XUsbPsu_EpBufferRecv(struct XUsbPsu *InstancePtr, u8 EpNum,
- u8 *BufferPtr, u32 length);
-void XUsbPsu_EpSetStall(struct XUsbPsu *InstancePtr, u8 epnum, u8 Dir);
-void XUsbPsu_EpClearStall(struct XUsbPsu *InstancePtr, u8 epnum, u8 Dir);
-void XUsbPsu_SetEpHandler(struct XUsbPsu *InstancePtr, u8 epnum,
- u8 dir, void (*Handler)(void *, u32, u32));
-int XUsbPsu_IsEpStalled(struct XUsbPsu *InstancePtr, u8 Epnum, u8 Dir);
-
-/*
- * Functions in xusbpsu_controltransfers.c
- */
-int XUsbPsu_RecvSetup(struct XUsbPsu *InstancePtr);
-void XUsbPsu_Ep0StallRestart(struct XUsbPsu *InstancePtr);
-int XUsbPsu_SetConfiguration(struct XUsbPsu *InstancePtr,
- SetupPacket *ctrl);
-void XUsbPsu_Ep0DataDone(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *event);
-void XUsbPsu_Ep0StatusDone(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *event);
-void XUsbPsu_Ep0XferComplete(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *event);
-int XUsbPsu_Ep0StartStatus(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *event);
-void XUsbPsu_Ep0_EndControlData(struct XUsbPsu *InstancePtr,
- struct XUsbPsu_Ep *dep);
-void XUsbPsu_Ep0XferNotReady(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *event);
-void XUsbPsu_Ep0Intr(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *event);
-int XUsbPsu_Ep0Send(struct XUsbPsu *InstancePtr, u8 *BufferPtr,
- u32 BufferLen);
-int XUsbPsu_Ep0Recv(struct XUsbPsu *InstancePtr, u8 *BufferPtr, u32 Length);
-
-/*
- * Functions in xusbpsu_intr.c
- */
-void XUsbPsu_EpInterrupt(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *event);
-void XUsbPsu_DisconnectIntr(struct XUsbPsu *InstancePtr);
-void XUsbPsu_ResetIntr(struct XUsbPsu *InstancePtr);
-void XUsbPsu_ConnDoneIntr(struct XUsbPsu *InstancePtr);
-void XUsbPsu_LinkStsChangeIntr(struct XUsbPsu *InstancePtr,
- u32 evtinfo);
-void XUsbPsu_DevInterrupt(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Devt *event);
-void XUsbPsu_ProcessEvent(struct XUsbPsu *InstancePtr,
- const union XUsbPsu_Event *event);
-void XUsbPsu_ProcessEvtBuffer(struct XUsbPsu *InstancePtr);
-void XUsbPsu_IntrHandler(void *XUsbPsu);
-
-/*
- * Functions in xusbpsu_sinit.c
- */
-XUsbPsu_Config *XUsbPsu_LookupConfig(u16 DeviceId);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* End of protection macro. */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_controltransfers.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_controltransfers.c
deleted file mode 100644
index 5d7d8060a..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_controltransfers.c
+++ /dev/null
@@ -1,702 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/****************************************************************************/
-/**
-*
-* @file xusbpsu_controltransfers.c
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -------------------------------------------------------
-* 1.00a bss 01/22/15 First release
-* 1.00a bss 03/18/15 Modified u32 pointer casts to UINTPTR.
-*
-*
-*
-*****************************************************************************/
-
-/***************************** Include Files *********************************/
-
-#include "xusbpsu.h"
-
-/************************** Constant Definitions *****************************/
-
-#define USB_DIR_OUT 0 /* to device */
-#define USB_DIR_IN 0x80 /* to host */
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/************************** Function Prototypes ******************************/
-
-
-/************************** Variable Definitions *****************************/
-
-
-/****************************************************************************/
-/**
-* Initiates DMA on Control Endpoint 0 to receive Setup packet.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-*
-* @return XST_SUCCESS else XST_FAILURE.
-*
-* @note None.
-*
-*****************************************************************************/
-int XUsbPsu_RecvSetup(struct XUsbPsu *InstancePtr)
-{
- struct XUsbPsu_EpParams *Params;
- struct XUsbPsu_Trb *TrbPtr;
- struct XUsbPsu_Ep *Ept;
- int Ret;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
-
- Params = XUsbPsu_GetEpParams(InstancePtr);
- /* Setup packet always on EP0 */
- Ept = &InstancePtr->eps[0];
- if (Ept->EpStatus & XUSBPSU_EP_BUSY) {
- return XST_FAILURE;
- }
-
- TrbPtr = &InstancePtr->Ep0_Trb;
-
- TrbPtr->BufferPtrLow = (UINTPTR)&InstancePtr->SetupData;
- TrbPtr->BufferPtrHigh = ((UINTPTR)&InstancePtr->SetupData >> 16) >> 16;
- TrbPtr->Size = 8;
- TrbPtr->Ctrl = XUSBPSU_TRBCTL_CONTROL_SETUP;
-
- TrbPtr->Ctrl |= (XUSBPSU_TRB_CTRL_HWO
- | XUSBPSU_TRB_CTRL_LST
- | XUSBPSU_TRB_CTRL_IOC
- | XUSBPSU_TRB_CTRL_ISP_IMI);
-
- Xil_DCacheFlushRange(TrbPtr, sizeof(struct XUsbPsu_Trb));
-
- Params->Param0 = 0;
- Params->Param1 = (UINTPTR)TrbPtr;
-
- InstancePtr->Ep0State = XUSBPSU_EP0_SETUP_PHASE;
-
- Ept->Cmd = XUSBPSU_DEPCMD_STARTTRANSFER;
- Ret = XUsbPsu_SendEpCmd(InstancePtr, 0, XUSBPSU_EP_DIR_OUT,
- XUSBPSU_DEPCMD_STARTTRANSFER, Params);
- if (Ret < 0) {
- return Ret;
- }
-
- Ept->EpStatus |= XUSBPSU_EP_BUSY;
- Ept->ResourceIndex = XUsbPsu_EpGetTransferIndex(InstancePtr,
- Ept->UsbEpNum, Ept->Direction);
-
- return XST_SUCCESS;
-}
-
-/****************************************************************************/
-/**
-* Stalls Control Endpoint and restarts to receive Setup packet.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-*
-* @return None
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_Ep0StallRestart(struct XUsbPsu *InstancePtr)
-{
- struct XUsbPsu_Ep *Ept;
-
- Xil_AssertVoid(InstancePtr != NULL);
-
- /* reinitialize physical ep1 */
- Ept = &InstancePtr->eps[1];
- Ept->EpStatus = XUSBPSU_EP_ENABLED;
-
- /* stall is always issued on EP0 */
- XUsbPsu_EpSetStall(InstancePtr, 0, XUSBPSU_EP_DIR_OUT);
-
- Ept = &InstancePtr->eps[0];
- Ept->EpStatus = XUSBPSU_EP_ENABLED;
- InstancePtr->Ep0State = XUSBPSU_EP0_SETUP_PHASE;
- XUsbPsu_RecvSetup(InstancePtr);
-}
-
-/****************************************************************************/
-/**
-* Changes State of Core to USB configured State.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Ctrl is a pointer to the Setup packet data.
-*
-* @return XST_SUCCESS else XST_FAILURE
-*
-* @note None.
-*
-*****************************************************************************/
-int XUsbPsu_SetConfiguration(struct XUsbPsu *InstancePtr, SetupPacket *Ctrl)
-{
- u8 State;
- int Ret;
- u32 RegVal;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(Ctrl != NULL);
-
- State = InstancePtr->State;
- InstancePtr->IsConfigDone = 0;
-
- switch (State) {
- case XUSBPSU_STATE_DEFAULT:
- return XST_FAILURE;
- break;
-
- case XUSBPSU_STATE_ADDRESS:
- InstancePtr->State = XUSBPSU_STATE_CONFIGURED;
- break;
-
- case XUSBPSU_STATE_CONFIGURED:
- break;
-
- default:
- Ret = XST_FAILURE;
- break;
- }
-
- return Ret;
-}
-
-/****************************************************************************/
-/**
-* Checks the Data Phase and calls user Endpoint handler.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Event is a pointer to the Endpoint event occured in core.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_Ep0DataDone(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *Event)
-{
- struct XUsbPsu_Ep *Ept;
- struct XUsbPsu_Trb *TrbPtr;
- u32 Status;
- u32 Length;
- u32 EpNum;
- u8 Dir;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(Event != NULL);
-
- EpNum = Event->Epnumber;
- Dir = !!EpNum;
- Ept = &InstancePtr->eps[EpNum];
- TrbPtr = &InstancePtr->Ep0_Trb;
-
- Xil_DCacheInvalidateRange(TrbPtr, sizeof(struct XUsbPsu_Trb));
-
- Status = XUSBPSU_TRB_SIZE_TRBSTS(TrbPtr->Size);
- if (Status == XUSBPSU_TRBSTS_SETUP_PENDING) {
- return;
- }
-
- Length = TrbPtr->Size & XUSBPSU_TRB_SIZE_MASK;
-
- if (Length && Dir) { /* IN */
- Ept->BytesTxed = Ept->RequestedBytes - Length;
- }
-
- if (!Length) {
- Ept->BytesTxed = Ept->RequestedBytes;
- }
-
- if (Length && !Dir) { /* OUT */
- /* may be wLength < Maxpacketsize */
- if (InstancePtr->UnalignedTx) {
- Ept->BytesTxed = Ept->RequestedBytes;
- InstancePtr->UnalignedTx = 0;
- }
- }
-
- if (!Dir) {
- /* Invalidate Cache */
- Xil_DCacheInvalidateRange(Ept->BufferPtr, Ept->BytesTxed);
- }
-
- if (Ept->Handler) {
- Ept->Handler(InstancePtr, Ept->RequestedBytes, Ept->BytesTxed);
- }
-}
-
-/****************************************************************************/
-/**
-* Checks the Status Phase and starts next Control transfer.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Event is a pointer to the Endpoint event occured in core.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_Ep0StatusDone(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *Event)
-{
- struct XUsbPsu_Trb *TrbPtr;
- u32 Status;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(Event != NULL);
-
- TrbPtr = &InstancePtr->Ep0_Trb;
-
- if (InstancePtr->IsInTestMode) {
- int Ret;
-
- Ret = XUsbPsu_SetTestMode(InstancePtr,
- InstancePtr->TestMode);
- if (Ret < 0) {
- XUsbPsu_Ep0StallRestart(InstancePtr);
- return;
- }
- }
- Xil_DCacheInvalidateRange(TrbPtr, sizeof(struct XUsbPsu_Trb));
- Status = XUSBPSU_TRB_SIZE_TRBSTS(TrbPtr->Size);
- /* There is nothing driver can do for Setup Pending received */
-
- XUsbPsu_RecvSetup(InstancePtr);
-}
-
-/****************************************************************************/
-/**
-* Handles Transfer complete event of Control Endpoints EP0 OUT and EP0 IN.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Event is a pointer to the Endpoint event occured in core.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_Ep0XferComplete(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *Event)
-{
- struct XUsbPsu_Ep *Ept;
- SetupPacket *Ctrl;
- u16 Length;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(Event != NULL);
-
- Ept = &InstancePtr->eps[Event->Epnumber];
- Ctrl = &InstancePtr->SetupData;
-
- Ept->EpStatus &= ~XUSBPSU_EP_BUSY;
- Ept->ResourceIndex = 0;
-
- switch (InstancePtr->Ep0State) {
- case XUSBPSU_EP0_SETUP_PHASE:
- Xil_DCacheInvalidateRange(&InstancePtr->SetupData,
- sizeof(InstancePtr->SetupData));
- Length = Ctrl->wLength;
- if (!Length) {
- InstancePtr->IsThreeStage = 0;
- InstancePtr->ControlDir = XUSBPSU_EP_DIR_OUT;
- } else {
- InstancePtr->IsThreeStage = 1;
- InstancePtr->ControlDir = !!(Ctrl->bRequestType &
- USB_DIR_IN);
- }
-
- if (InstancePtr->Chapter9 == NULL) {
- /* ? */
- } else {
- InstancePtr->Chapter9(InstancePtr,
- &InstancePtr->SetupData);
- }
- break;
-
- case XUSBPSU_EP0_DATA_PHASE:
- XUsbPsu_Ep0DataDone(InstancePtr, Event);
- break;
-
- case XUSBPSU_EP0_STATUS_PHASE:
- XUsbPsu_Ep0StatusDone(InstancePtr, Event);
- break;
-
- default:
- break;
- }
-}
-
-/****************************************************************************/
-/**
-* Starts Status Phase of Control Transfer
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Event is a pointer to the Endpoint event occured in core.
-*
-* @return XST_SUCCESS else XST_FAILURE
-*
-* @note None.
-*
-*****************************************************************************/
-int XUsbPsu_Ep0StartStatus(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *Event)
-{
- struct XUsbPsu_Ep *Ept;
- struct XUsbPsu_EpParams *Params;
- struct XUsbPsu_Trb *TrbPtr;
- u32 Type;
- int Ret;
- u8 Dir;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(Event != NULL);
-
- Ept = &InstancePtr->eps[Event->Epnumber];
- Params = XUsbPsu_GetEpParams(InstancePtr);
- if (Ept->EpStatus & XUSBPSU_EP_BUSY) {
- return XST_FAILURE;
- }
-
- Type = InstancePtr->IsThreeStage ? XUSBPSU_TRBCTL_CONTROL_STATUS3
- : XUSBPSU_TRBCTL_CONTROL_STATUS2;
- TrbPtr = &InstancePtr->Ep0_Trb;
- /* we use same TrbPtr for setup packet */
- TrbPtr->BufferPtrLow = (UINTPTR)&InstancePtr->SetupData;
- TrbPtr->BufferPtrHigh = ((UINTPTR)&InstancePtr->SetupData >> 16) >> 16;
- TrbPtr->Size = 0;
- TrbPtr->Ctrl = Type;
-
- TrbPtr->Ctrl |= (XUSBPSU_TRB_CTRL_HWO
- | XUSBPSU_TRB_CTRL_LST
- | XUSBPSU_TRB_CTRL_IOC
- | XUSBPSU_TRB_CTRL_ISP_IMI);
-
- Xil_DCacheFlushRange(TrbPtr, sizeof(struct XUsbPsu_Trb));
-
- Params->Param0 = 0;
- Params->Param1 = (UINTPTR)TrbPtr;
-
- InstancePtr->Ep0State = XUSBPSU_EP0_STATUS_PHASE;
-
- /*
- * Control OUT transfer - Status stage happens on EP0 IN - EP1
- * Control IN transfer - Status stage happens on EP0 OUT - EP0
- */
- Dir = !InstancePtr->ControlDir;
- Ept->Cmd = XUSBPSU_DEPCMD_STARTTRANSFER;
- Ret = XUsbPsu_SendEpCmd(InstancePtr, 0, Dir,
- XUSBPSU_DEPCMD_STARTTRANSFER, Params);
- if (Ret != XST_SUCCESS) {
- return XST_FAILURE;
- }
-
- Ept->EpStatus |= XUSBPSU_EP_BUSY;
- Ept->ResourceIndex = XUsbPsu_EpGetTransferIndex(InstancePtr,
- Ept->UsbEpNum, Ept->Direction);
-
- return XST_SUCCESS;
-}
-
-/****************************************************************************/
-/**
-* Ends Data Phase - used incase of error.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Dep is a pointer to the Endpoint structure.
-*
-* @return None
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_Ep0_EndControlData(struct XUsbPsu *InstancePtr,
- struct XUsbPsu_Ep *Ept)
-{
- struct XUsbPsu_EpParams *Params;
- u32 Cmd;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(Ept != NULL);
-
- if (!Ept->ResourceIndex)
- return;
-
- Params = XUsbPsu_GetEpParams(InstancePtr);
- Cmd = XUSBPSU_DEPCMD_ENDTRANSFER;
- Cmd |= XUSBPSU_DEPCMD_PARAM(Ept->ResourceIndex);
- Ept->Cmd = XUSBPSU_DEPCMD_ENDTRANSFER;
- XUsbPsu_SendEpCmd(InstancePtr, Ept->UsbEpNum, Ept->Direction,
- Cmd, Params);
- Ept->ResourceIndex = 0;
- usleep(200);
-}
-
-/****************************************************************************/
-/**
-* Handles Transfer Not Ready event of Control Endpoints EP0 OUT and EP0 IN.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Event is a pointer to the Endpoint event occured in core.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_Ep0XferNotReady(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *Event)
-{
- struct XUsbPsu_Ep *Ept;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(Event != NULL);
-
- Ept = &InstancePtr->eps[Event->Epnumber];
-
- switch (Event->Status) {
- case DEPEVT_STATUS_CONTROL_DATA:
- /*
- * We already have a DATA transfer in the controller's cache,
- * if we receive a XferNotReady(DATA) we will ignore it, unless
- * it's for the wrong direction.
- *
- * In that case, we must issue END_TRANSFER command to the Data
- * Phase we already have started and issue SetStall on the
- * control endpoint.
- */
- if (Event->Epnumber != InstancePtr->ControlDir) {
- XUsbPsu_Ep0_EndControlData(InstancePtr, Ept);
- XUsbPsu_Ep0StallRestart(InstancePtr);
- }
- break;
-
- case DEPEVT_STATUS_CONTROL_STATUS:
- XUsbPsu_Ep0StartStatus(InstancePtr, Event);
- break;
- }
-}
-
-/****************************************************************************/
-/**
-* Handles Interrupts of Control Endpoints EP0 OUT and EP0 IN.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Event is a pointer to the Endpoint event occured in core.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_Ep0Intr(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *Event)
-{
- u32 EpNum;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(Event != NULL);
-
- EpNum = Event->Epnumber;
- switch (Event->Endpoint_Event) {
- case XUSBPSU_DEPEVT_XFERCOMPLETE:
- XUsbPsu_Ep0XferComplete(InstancePtr, Event);
- break;
-
- case XUSBPSU_DEPEVT_XFERNOTREADY:
- XUsbPsu_Ep0XferNotReady(InstancePtr, Event);
- break;
-
- case XUSBPSU_DEPEVT_XFERINPROGRESS:
- case XUSBPSU_DEPEVT_STREAMEVT:
- case XUSBPSU_DEPEVT_EPCMDCMPLT:
- break;
- }
-}
-
-/****************************************************************************/
-/**
-* Initiates DMA to send data on Control Endpoint EP0 IN to Host.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param BufferPtr is pointer to data.
-* @param BufferLen is Length of data buffer.
-*
-* @return XST_SUCCESS else XST_FAILURE
-*
-* @note None.
-*
-*****************************************************************************/
-int XUsbPsu_Ep0Send(struct XUsbPsu *InstancePtr, u8 *BufferPtr, u32 BufferLen)
-{
- /* Control IN - EP1 */
- struct XUsbPsu_EpParams *Params;
- struct XUsbPsu_Ep *Ept;
- struct XUsbPsu_Trb *TrbPtr;
- u32 Type;
- int Ret;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(BufferPtr != NULL);
-
- Ept = &InstancePtr->eps[1];
- Params = XUsbPsu_GetEpParams(InstancePtr);
- if (Ept->EpStatus & XUSBPSU_EP_BUSY) {
- return XST_FAILURE;
- }
-
- Ept->RequestedBytes = BufferLen;
- Ept->BytesTxed = 0;
- Ept->BufferPtr = BufferPtr;
-
- TrbPtr = &InstancePtr->Ep0_Trb;
-
- TrbPtr->BufferPtrLow = (UINTPTR)BufferPtr;
- TrbPtr->BufferPtrHigh = ((UINTPTR)BufferPtr >> 16) >> 16;
- TrbPtr->Size = BufferLen;
- TrbPtr->Ctrl = XUSBPSU_TRBCTL_CONTROL_DATA;
-
- TrbPtr->Ctrl |= (XUSBPSU_TRB_CTRL_HWO
- | XUSBPSU_TRB_CTRL_LST
- | XUSBPSU_TRB_CTRL_IOC
- | XUSBPSU_TRB_CTRL_ISP_IMI);
-
- Params->Param0 = 0;
- Params->Param1 = (UINTPTR)TrbPtr;
-
- Xil_DCacheFlushRange(TrbPtr, sizeof(struct XUsbPsu_Trb));
- Xil_DCacheFlushRange(BufferPtr, BufferLen);
-
- InstancePtr->Ep0State = XUSBPSU_EP0_DATA_PHASE;
-
- Ept->Cmd = XUSBPSU_DEPCMD_STARTTRANSFER;
- Ret = XUsbPsu_SendEpCmd(InstancePtr, 0, XUSBPSU_EP_DIR_IN,
- XUSBPSU_DEPCMD_STARTTRANSFER, Params);
- if (Ret != XST_SUCCESS) {
- return XST_FAILURE;
- }
-
- Ept->EpStatus |= XUSBPSU_EP_BUSY;
- Ept->ResourceIndex = XUsbPsu_EpGetTransferIndex(InstancePtr,
- Ept->UsbEpNum, Ept->Direction);
-
- return XST_SUCCESS;
-}
-
-/****************************************************************************/
-/**
-* Initiates DMA to receive data on Control Endpoint EP0 OUT from Host.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param BufferPtr is pointer to data.
-* @param Length is Length of data to be received.
-*
-* @return XST_SUCCESS else XST_FAILURE
-*
-* @note None.
-*
-*****************************************************************************/
-int XUsbPsu_Ep0Recv(struct XUsbPsu *InstancePtr, u8 *BufferPtr, u32 Length)
-{
- struct XUsbPsu_EpParams *Params;
- struct XUsbPsu_Ep *Ept;
- struct XUsbPsu_Trb *TrbPtr;
- u32 Type;
- u32 Size;
- int Ret;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(BufferPtr != NULL);
-
- Ept = &InstancePtr->eps[0];
- Params = XUsbPsu_GetEpParams(InstancePtr);
- if (Ept->EpStatus & XUSBPSU_EP_BUSY) {
- return XST_FAILURE;
- }
-
- Size = Ept->RequestedBytes = Length;
- Ept->BytesTxed = 0;
- Ept->BufferPtr = BufferPtr;
-
- /*
- * 8.2.5 - An OUT transfer size (Total TRB buffer allocation)
- * must be a multiple of MaxPacketSize even if software is expecting a
- * fixed non-multiple of MaxPacketSize transfer from the Host.
- */
- if (!IS_ALIGNED(Length, Ept->MaxSize)) {
- Size = roundup(Length, Ept->MaxSize);
- InstancePtr->UnalignedTx = 1;
- }
-
- TrbPtr = &InstancePtr->Ep0_Trb;
-
- TrbPtr->BufferPtrLow = (UINTPTR)BufferPtr;
- TrbPtr->BufferPtrHigh = ((UINTPTR)BufferPtr >> 16) >> 16;
- TrbPtr->Size = Size;
- TrbPtr->Ctrl = XUSBPSU_TRBCTL_CONTROL_DATA;
-
- TrbPtr->Ctrl |= (XUSBPSU_TRB_CTRL_HWO
- | XUSBPSU_TRB_CTRL_LST
- | XUSBPSU_TRB_CTRL_IOC
- | XUSBPSU_TRB_CTRL_ISP_IMI);
-
- Xil_DCacheFlushRange(TrbPtr, sizeof(struct XUsbPsu_Trb));
-
- Params->Param0 = 0;
- Params->Param1 = (UINTPTR)TrbPtr;
-
- InstancePtr->Ep0State = XUSBPSU_EP0_DATA_PHASE;
-
- Ept->Cmd = XUSBPSU_DEPCMD_STARTTRANSFER;
- Ret = XUsbPsu_SendEpCmd(InstancePtr, 0, XUSBPSU_EP_DIR_OUT,
- XUSBPSU_DEPCMD_STARTTRANSFER, Params);
- if (Ret < 0) {
- return Ret;
- }
-
- Ept->EpStatus |= XUSBPSU_EP_BUSY;
- Ept->ResourceIndex = XUsbPsu_EpGetTransferIndex(InstancePtr,
- Ept->UsbEpNum, Ept->Direction);
-
- return XST_SUCCESS;
-}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_endpoint.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_endpoint.c
deleted file mode 100644
index 8e7d4c5cd..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_endpoint.c
+++ /dev/null
@@ -1,925 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-*****************************************************************************/
-/****************************************************************************/
-/**
-*
-* @file xusbpsu_endpoint.c
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -------------------------------------------------------
-* 1.00a bss 01/22/15 First release
-* 1.00a bss 03/18/15 Added XUsbPsu_EpXferComplete function to handle Non
-* control endpoint interrupt.
-*
-*
-*
-*****************************************************************************/
-
-/***************************** Include Files *********************************/
-
-#include "xusbpsu.h"
-
-/************************** Constant Definitions *****************************/
-
-
-/**************************** Type Definitions *******************************/
-
-/* return Physical EP number as dwc3 mapping */
-#define PhysicalEp(epnum, direction) ((epnum) << 1 ) | (direction)
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-
-/************************** Function Prototypes ******************************/
-
-
-/************************** Variable Definitions *****************************/
-
-
-/****************************************************************************/
-/**
-* Returns zeroed parameters to be used by Endpoint commands
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-*
-* @return Zeroed Params structure pointer.
-*
-* @note None.
-*
-*****************************************************************************/
-struct XUsbPsu_EpParams *XUsbPsu_GetEpParams(struct XUsbPsu *InstancePtr)
-{
- Xil_AssertNonvoid(InstancePtr != NULL);
-
- InstancePtr->EpParams.Param0 = 0x00;
- InstancePtr->EpParams.Param1 = 0x00;
- InstancePtr->EpParams.Param2 = 0x00;
-
- return &InstancePtr->EpParams;
-}
-
-/****************************************************************************/
-/**
-* Returns Transfer Index assigned by Core for an Endpoint transfer.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param UsbEpNum is USB endpoint number.
-* @param Dir is direction of endpoint - XUSBPSU_EP_DIR_IN/XUSBPSU_EP_DIR_OUT
-*
-* @return Transfer Resource Index.
-*
-* @note None.
-*
-*****************************************************************************/
-u32 XUsbPsu_EpGetTransferIndex(struct XUsbPsu *InstancePtr, u8 UsbEpNum,
- u8 Dir)
-{
- u8 PhyEpNum;
- u32 ResourceIndex;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(UsbEpNum >= 0 && UsbEpNum <= 16);
- Xil_AssertNonvoid((Dir == XUSBPSU_EP_DIR_IN) ||
- (Dir == XUSBPSU_EP_DIR_OUT));
-
- PhyEpNum = PhysicalEp(UsbEpNum, Dir);
- ResourceIndex = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DEPCMD(PhyEpNum));
-
- return XUSBPSU_DEPCMD_GET_RSC_IDX(ResourceIndex);
-}
-
-/****************************************************************************/
-/**
-* Sends Endpoint command to Endpoint.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param UsbEpNum is USB endpoint number.
-* @param Dir is direction of endpoint
-* - XUSBPSU_EP_DIR_IN/ XUSBPSU_EP_DIR_OUT.
-* @param Cmd is Endpoint command.
-* @param Params is Endpoint command parameters.
-*
-* @return XST_SUCCESS else XST_FAILURE.
-*
-* @note None.
-*
-*****************************************************************************/
-int XUsbPsu_SendEpCmd(struct XUsbPsu *InstancePtr, u8 UsbEpNum, u8 Dir,
- u32 Cmd, struct XUsbPsu_EpParams *Params)
-{
- u32 RegVal;
- u32 PhyEpnum;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(UsbEpNum >= 0 && UsbEpNum <= 16);
- Xil_AssertNonvoid((Dir == XUSBPSU_EP_DIR_IN) ||
- (Dir == XUSBPSU_EP_DIR_OUT));
-
- PhyEpnum = PhysicalEp(UsbEpNum, Dir);
-
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DEPCMDPAR0(PhyEpnum),
- Params->Param0);
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DEPCMDPAR1(PhyEpnum),
- Params->Param1);
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DEPCMDPAR2(PhyEpnum),
- Params->Param2);
-
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DEPCMD(PhyEpnum),
- Cmd | XUSBPSU_DEPCMD_CMDACT);
-
- if (XUsbPsu_Wait_Clear_Timeout(InstancePtr, XUSBPSU_DEPCMD(PhyEpnum),
- XUSBPSU_DEPCMD_CMDACT, 500) == XST_FAILURE) {
- return XST_FAILURE;
- }
-
- return XST_SUCCESS;
-}
-
-/****************************************************************************/
-/**
-* Sends Start New Configuration command to Endpoint.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param UsbEpNum is USB endpoint number.
-* @param Dir is direction of endpoint
-* - XUSBPSU_EP_DIR_IN/ XUSBPSU_EP_DIR_OUT.
-*
-* @return XST_SUCCESS else XST_FAILURE.
-*
-* @note
-* As per data book this command should be issued by software
-* under these conditions:
-* 1. After power-on-reset with XferRscIdx=0 before starting
-* to configure Physical Endpoints 0 and 1.
-* 2. With XferRscIdx=2 before starting to configure
-* Physical Endpoints > 1
-* 3. This command should always be issued to
-* Endpoint 0 (DEPCMD0).
-*
-*****************************************************************************/
-int XUsbPsu_StartEpConfig(struct XUsbPsu *InstancePtr, u32 UsbEpNum, u8 Dir)
-{
- struct XUsbPsu_EpParams *Params;
- u32 Cmd;
- u8 PhyEpNum;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(UsbEpNum >= 0 && UsbEpNum <= 16);
- Xil_AssertNonvoid((Dir == XUSBPSU_EP_DIR_IN) ||
- (Dir == XUSBPSU_EP_DIR_OUT));
-
- PhyEpNum = PhysicalEp(UsbEpNum, Dir);
- Params = XUsbPsu_GetEpParams(InstancePtr);
-
- if (PhyEpNum != 1) {
- Cmd = XUSBPSU_DEPCMD_DEPSTARTCFG;
- /* XferRscIdx == 0 for EP0 and 2 for the remaining */
- if (PhyEpNum > 1) {
- if (InstancePtr->IsConfigDone)
- return XST_SUCCESS;
- InstancePtr->IsConfigDone = 1;
- Cmd |= XUSBPSU_DEPCMD_PARAM(2);
- }
- InstancePtr->eps[0].Cmd = XUSBPSU_DEPCMD_DEPSTARTCFG;
- return XUsbPsu_SendEpCmd(InstancePtr, 0, XUSBPSU_EP_DIR_OUT,
- Cmd, Params);
- }
-
- return XST_SUCCESS;
-}
-
-/****************************************************************************/
-/**
-* Sends Set Endpoint Configuration command to Endpoint.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param UsbEpNum is USB endpoint number.
-* @param Dir is direction of endpoint - XUSBPSU_EP_DIR_IN/XUSBPSU_EP_DIR_OUT.
-* @param Size is size of Endpoint size.
-* @param Type is Endpoint type Control/Bulk/Interrupt/Isoc.
-*
-* @return XST_SUCCESS else XST_FAILURE.
-*
-* @note None.
-*
-*****************************************************************************/
-int XUsbPsu_SetEpConfig(struct XUsbPsu *InstancePtr, u8 UsbEpNum, u8 Dir,
- u16 Size, u8 Type)
-{
- struct XUsbPsu_EpParams *Params;
- u8 PhyEpnum;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(UsbEpNum >= 0 && UsbEpNum <= 16);
- Xil_AssertNonvoid((Dir == XUSBPSU_EP_DIR_IN) ||
- (Dir == XUSBPSU_EP_DIR_OUT));
- Xil_AssertNonvoid(Size >= 64 && Size <= 1024);
-
- Params = XUsbPsu_GetEpParams(InstancePtr);
- PhyEpnum = PhysicalEp(UsbEpNum , Dir);
-
- Params->Param0 = XUSBPSU_DEPCFG_EP_TYPE(Type)
- | XUSBPSU_DEPCFG_MAX_PACKET_SIZE(Size);
-
- Params->Param1 = XUSBPSU_DEPCFG_XFER_COMPLETE_EN
- | XUSBPSU_DEPCFG_XFER_NOT_READY_EN;
-
- /*
- * We are doing 1:1 mapping for endpoints, meaning
- * Physical Endpoints 2 maps to Logical Endpoint 2 and
- * so on. We consider the direction bit as part of the physical
- * endpoint number. So USB endpoint 0x81 is 0x03.
- */
- Params->Param1 |= XUSBPSU_DEPCFG_EP_NUMBER(PhyEpnum);
-
- if (Dir)
- Params->Param0 |= XUSBPSU_DEPCFG_FIFO_NUMBER(PhyEpnum >> 1);
-
- InstancePtr->eps[PhyEpnum].Cmd = XUSBPSU_DEPCMD_SETEPCONFIG;
-
- return XUsbPsu_SendEpCmd(InstancePtr, UsbEpNum, Dir,
- XUSBPSU_DEPCMD_SETEPCONFIG, Params);
-}
-
-/****************************************************************************/
-/**
-* Sends Set Transfer Resource command to Endpoint.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param UsbEpNum is USB endpoint number.
-* @param Dir is direction of endpoint - XUSBPSU_EP_DIR_IN/
-* XUSBPSU_EP_DIR_OUT.
-*
-* @return XST_SUCCESS else XST_FAILURE.
-*
-* @note None.
-*
-*****************************************************************************/
-int XUsbPsu_SetXferResource(struct XUsbPsu *InstancePtr, u8 UsbEpNum, u8 Dir)
-{
- struct XUsbPsu_EpParams *Params;
- u8 PhyEpnum;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(UsbEpNum >= 0 && UsbEpNum <= 16);
- Xil_AssertNonvoid((Dir == XUSBPSU_EP_DIR_IN) ||
- (Dir == XUSBPSU_EP_DIR_OUT));
-
- PhyEpnum = PhysicalEp(UsbEpNum , Dir);
- Params = XUsbPsu_GetEpParams(InstancePtr);
-
- Params->Param0 = XUSBPSU_DEPXFERCFG_NUM_XFER_RES(1);
-
- InstancePtr->eps[PhyEpnum].Cmd = XUSBPSU_DEPCMD_SETTRANSFRESOURCE;
-
- return XUsbPsu_SendEpCmd(InstancePtr, UsbEpNum, Dir,
- XUSBPSU_DEPCMD_SETTRANSFRESOURCE, Params);
-}
-
-/****************************************************************************/
-/**
-* Enables Endpoint for sending/receiving data.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param UsbEpNum is USB endpoint number.
-* @param Dir is direction of endpoint - XUSBPSU_EP_DIR_IN/XUSBPSU_EP_DIR_OUT.
-* @param Maxsize is size of Endpoint size.
-* @param Type is Endpoint type Control/Bulk/Interrupt/Isoc.
-*
-* @return XST_SUCCESS else XST_FAILURE.
-*
-* @note None.
-*
-****************************************************************************/
-int XUsbPsu_EpEnable(struct XUsbPsu *InstancePtr, u8 UsbEpNum, u8 Dir,
- u16 Maxsize, u8 Type)
-{
- struct XUsbPsu_Ep *Ept;
- u32 RegVal;
- int Ret = XST_FAILURE;
- u32 PhyEpnum;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(UsbEpNum >= 0 && UsbEpNum <= 16);
- Xil_AssertNonvoid((Dir == XUSBPSU_EP_DIR_IN) ||
- (Dir == XUSBPSU_EP_DIR_OUT));
- Xil_AssertNonvoid(Maxsize >= 64 && Maxsize <= 1024);
-
- PhyEpnum = PhysicalEp(UsbEpNum , Dir);
- Ept = &InstancePtr->eps[PhyEpnum];
-
- Ept->UsbEpNum = UsbEpNum;
- Ept->Direction = Dir;
- Ept->Type = Type;
- Ept->MaxSize = Maxsize;
- Ept->PhyEpNum = PhyEpnum;
-
- if (!(Ept->EpStatus & XUSBPSU_EP_ENABLED)) {
- Ret = XUsbPsu_StartEpConfig(InstancePtr, UsbEpNum, Dir);
- if (Ret)
- return Ret;
- }
-
- Ret = XUsbPsu_SetEpConfig(InstancePtr, UsbEpNum, Dir, Maxsize, Type);
- if (Ret)
- return Ret;
-
- if (!(Ept->EpStatus & XUSBPSU_EP_ENABLED)) {
- Ret = XUsbPsu_SetXferResource(InstancePtr, UsbEpNum, Dir);
- if (Ret)
- return Ret;
-
- Ept->EpStatus |= XUSBPSU_EP_ENABLED;
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DALEPENA);
- RegVal |= XUSBPSU_DALEPENA_EP(Ept->PhyEpNum);
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DALEPENA, RegVal);
- }
-
- return XST_SUCCESS;
-}
-
-/****************************************************************************/
-/**
-* Disables Endpoint.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param UsbEpNum is USB endpoint number.
-* @param Dir is direction of endpoint
-* - XUSBPSU_EP_DIR_IN/XUSBPSU_EP_DIR_OUT.
-*
-* @return XST_SUCCESS else XST_FAILURE.
-*
-* @note None.
-*
-****************************************************************************/
-int XUsbPsu_EpDisable(struct XUsbPsu *InstancePtr, u8 UsbEpNum, u8 Dir)
-{
- u32 RegVal;
- u8 PhyEpNum;
- struct XUsbPsu_Ep *Ept;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(UsbEpNum >= 0 && UsbEpNum <= 16);
- Xil_AssertNonvoid((Dir == XUSBPSU_EP_DIR_IN) ||
- (Dir == XUSBPSU_EP_DIR_OUT));
-
- PhyEpNum = PhysicalEp(UsbEpNum , Dir);
- Ept = &InstancePtr->eps[PhyEpNum];
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DALEPENA);
- RegVal &= ~XUSBPSU_DALEPENA_EP(PhyEpNum);
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DALEPENA, RegVal);
-
- Ept->Type = 0;
- Ept->EpStatus = 0;
- Ept->MaxSize = 0;
-
- return XST_SUCCESS;
-}
-
-/****************************************************************************/
-/**
-* Enables USB Control Endpoint i.e., EP0OUT and EP0IN of Core.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Size is control endpoint size.
-*
-* @return XST_SUCCESS else XST_FAILURE.
-*
-* @note None.
-*
-****************************************************************************/
-int XUsbPsu_EnableControlEp(struct XUsbPsu *InstancePtr, u16 Size)
-{
- int RetVal;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(Size >= 64 && Size <= 512);
-
- RetVal = XUsbPsu_EpEnable(InstancePtr, 0, XUSBPSU_EP_DIR_OUT, Size,
- USB_ENDPOINT_XFER_CONTROL);
- if (RetVal) {
- return XST_FAILURE;
- }
-
- RetVal = XUsbPsu_EpEnable(InstancePtr, 0, XUSBPSU_EP_DIR_IN, Size,
- USB_ENDPOINT_XFER_CONTROL);
- if (RetVal) {
- return XST_FAILURE;
- }
-
- return XST_SUCCESS;
-}
-
-/****************************************************************************/
-/**
-* Initializes Endpoints. All OUT endpoints are even numbered and all IN
-* endpoints are odd numbered. EP0 is for Control OUT and EP1 is for
-* Control IN.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-*
-* @return None.
-*
-* @note None.
-*
-****************************************************************************/
-void XUsbPsu_InitializeEps(struct XUsbPsu *InstancePtr)
-{
- struct XUsbPsu_Ep *Ept;
- u8 i;
- u8 epnum;
-
- Xil_AssertVoid(InstancePtr != NULL);
-
- for (i = 0; i < InstancePtr->NumOutEps; i++) {
- epnum = (i << 1) | XUSBPSU_EP_DIR_OUT;
- InstancePtr->eps[epnum].PhyEpNum = epnum;
- InstancePtr->eps[epnum].Direction = XUSBPSU_EP_DIR_OUT;
- }
- for (i = 0; i < InstancePtr->NumInEps; i++) {
- epnum = (i << 1) | XUSBPSU_EP_DIR_IN;
- InstancePtr->eps[epnum].PhyEpNum = epnum;
- InstancePtr->eps[epnum].Direction = XUSBPSU_EP_DIR_IN;
- }
-}
-
-/****************************************************************************/
-/**
-* Stops transfer on Endpoint.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param UsbEpNum is USB endpoint number.
-* @param Dir is direction of endpoint - XUSBPSU_EP_DIR_IN/XUSBPSU_EP_DIR_OUT.
-*
-* @return None.
-*
-* @note None.
-*
-****************************************************************************/
-void XUsbPsu_StopTransfer(struct XUsbPsu *InstancePtr, u8 UsbEpNum, u8 Dir)
-{
- struct XUsbPsu_Ep *Ept;
- struct XUsbPsu_EpParams *Params;
- u8 PhyEpNum;
- u32 Cmd;
- int Ret;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(UsbEpNum >= 0 && UsbEpNum <= 16);
- Xil_AssertVoid((Dir == XUSBPSU_EP_DIR_IN) || (Dir == XUSBPSU_EP_DIR_OUT));
-
- PhyEpNum = PhysicalEp(UsbEpNum, Dir);
- Params = XUsbPsu_GetEpParams(InstancePtr);
- Ept = &InstancePtr->eps[PhyEpNum];
-
- if (!Ept->ResourceIndex)
- return;
-
- /*
- * - Issue EndTransfer WITH CMDIOC bit set
- * - Wait 100us
- */
- Cmd = XUSBPSU_DEPCMD_ENDTRANSFER;
- Cmd |= XUSBPSU_DEPCMD_CMDIOC;
- Cmd |= XUSBPSU_DEPCMD_PARAM(Ept->ResourceIndex);
- Ept->Cmd = XUSBPSU_DEPCMD_ENDTRANSFER;
- Ret = XUsbPsu_SendEpCmd(InstancePtr, Ept->PhyEpNum, Ept->Direction,
- Cmd, Params);
- Ept->ResourceIndex = 0;
- Ept->EpStatus &= ~XUSBPSU_EP_BUSY;
- usleep(100);
-}
-
-/****************************************************************************/
-/**
-* Clears Stall on all endpoints.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-*
-* @return None.
-*
-* @note None.
-*
-****************************************************************************/
-void XUsbPsu_ClearStalls(struct XUsbPsu *InstancePtr)
-{
- struct XUsbPsu_EpParams *Params;
- u32 epnum;
- struct XUsbPsu_Ep *Ept;
-
- Xil_AssertVoid(InstancePtr != NULL);
-
- Params = XUsbPsu_GetEpParams(InstancePtr);
- for (epnum = 1; epnum < XUSBPSU_ENDPOINTS_NUM; epnum++) {
-
- Ept = &InstancePtr->eps[epnum];
- if (!Ept)
- continue;
-
- if (!(Ept->EpStatus & XUSBPSU_EP_STALL))
- continue;
-
- Ept->EpStatus &= ~XUSBPSU_EP_STALL;
-
- Ept->Cmd = XUSBPSU_DEPCMD_CLEARSTALL;
- XUsbPsu_SendEpCmd(InstancePtr, Ept->PhyEpNum,
- Ept->Direction, XUSBPSU_DEPCMD_CLEARSTALL,
- Params);
- }
-}
-
-/****************************************************************************/
-/**
-* Initiates DMA to send data on endpoint to Host.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param UsbEp is USB endpoint number.
-* @param BufferPtr is pointer to data.
-* @param BufferLen is length of data buffer.
-*
-* @return XST_SUCCESS else XST_FAILURE
-*
-* @note None.
-*
-*****************************************************************************/
-int XUsbPsu_EpBufferSend(struct XUsbPsu *InstancePtr, u8 UsbEp,
- u8 *BufferPtr, u32 BufferLen)
-{
- u8 PhyEpNum;
- int RetVal;
- struct XUsbPsu_Trb *TrbPtr;
- struct XUsbPsu_Ep *Ept;
- struct XUsbPsu_EpParams *Params;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(UsbEp >= 0 && UsbEp <= 16);
- Xil_AssertNonvoid(BufferPtr != NULL);
-
- PhyEpNum = PhysicalEp(UsbEp, XUSBPSU_EP_DIR_IN);
- if (PhyEpNum == 1)
- {
- RetVal = XUsbPsu_Ep0Send(InstancePtr, BufferPtr, BufferLen);
- return RetVal;
- }
-
- Ept = &InstancePtr->eps[PhyEpNum];
-
- if (Ept->Direction != XUSBPSU_EP_DIR_IN) {
- return XST_FAILURE;
- }
-
- Ept->RequestedBytes = BufferLen;
- Ept->BytesTxed = 0;
- Ept->BufferPtr = BufferPtr;
-
- TrbPtr = &Ept->EpTrb;
-
- TrbPtr->BufferPtrLow = (UINTPTR)BufferPtr;
- TrbPtr->BufferPtrHigh = ((UINTPTR)BufferPtr >> 16) >> 16;
- TrbPtr->Size = BufferLen & XUSBPSU_TRB_SIZE_MASK;
- TrbPtr->Ctrl = XUSBPSU_TRBCTL_NORMAL;
-
- TrbPtr->Ctrl |= (XUSBPSU_TRB_CTRL_HWO
- | XUSBPSU_TRB_CTRL_LST
- | XUSBPSU_TRB_CTRL_IOC
- | XUSBPSU_TRB_CTRL_ISP_IMI);
-
- Xil_DCacheFlushRange(TrbPtr, sizeof(struct XUsbPsu_Trb));
- Xil_DCacheFlushRange(BufferPtr, BufferLen);
-
- Params = XUsbPsu_GetEpParams(InstancePtr);
- Params->Param0 = 0;
- Params->Param1 = (UINTPTR)TrbPtr;
-
- Ept->Cmd = XUSBPSU_DEPCMD_STARTTRANSFER;
- RetVal = XUsbPsu_SendEpCmd(InstancePtr, UsbEp, Ept->Direction,
- XUSBPSU_DEPCMD_STARTTRANSFER, Params);
- if (RetVal != XST_SUCCESS) {
- return XST_FAILURE;
- }
- Ept->ResourceIndex = XUsbPsu_EpGetTransferIndex(InstancePtr,
- Ept->UsbEpNum,
- Ept->Direction);
- return XST_SUCCESS;
-}
-
-/****************************************************************************/
-/**
-* Initiates DMA to receive data on Endpoint from Host.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param EpNum is USB endpoint number.
-* @param BufferPtr is pointer to data.
-* @param Length is length of data to be received.
-*
-* @return XST_SUCCESS else XST_FAILURE
-*
-* @note None.
-*
-*****************************************************************************/
-int XUsbPsu_EpBufferRecv(struct XUsbPsu *InstancePtr, u8 UsbEp,
- u8 *BufferPtr, u32 Length)
-{
- u8 PhyEpNum;
- u32 Size;
- int RetVal;
- struct XUsbPsu_Trb *TrbPtr;
- struct XUsbPsu_Ep *Ept;
- struct XUsbPsu_EpParams *Params;
-
- Xil_AssertNonvoid(InstancePtr != NULL);
- Xil_AssertNonvoid(UsbEp >= 0 && UsbEp <= 16);
- Xil_AssertNonvoid(BufferPtr != NULL);
-
- PhyEpNum = PhysicalEp(UsbEp, XUSBPSU_EP_DIR_OUT);
- if (PhyEpNum == 0)
- {
- RetVal = XUsbPsu_Ep0Recv(InstancePtr, BufferPtr, Length);
- return RetVal;
- }
-
- Ept = &InstancePtr->eps[PhyEpNum];
-
- if (Ept->Direction != XUSBPSU_EP_DIR_OUT) {
- return XST_FAILURE;
- }
-
- Params = XUsbPsu_GetEpParams(InstancePtr);
-
- Size = Ept->RequestedBytes = Length;
- Ept->BytesTxed = 0;
- Ept->BufferPtr = BufferPtr;
-
- /*
- * 8.2.5 - An OUT transfer size (Total TRB buffer allocation)
- * must be a multiple of MaxPacketSize even if software is expecting a
- * fixed non-multiple of MaxPacketSize transfer from the Host.
- */
- if (!IS_ALIGNED(Length, Ept->MaxSize)) {
- Size = roundup(Length, Ept->MaxSize);
- Ept->UnalignedTx = 1;
- }
-
- TrbPtr = &Ept->EpTrb;
-
- TrbPtr->BufferPtrLow = (UINTPTR)BufferPtr;
- TrbPtr->BufferPtrHigh = ((UINTPTR)BufferPtr >> 16) >> 16;
- TrbPtr->Size = Size;
- TrbPtr->Ctrl = XUSBPSU_TRBCTL_NORMAL;
-
- TrbPtr->Ctrl |= (XUSBPSU_TRB_CTRL_HWO
- | XUSBPSU_TRB_CTRL_LST
- | XUSBPSU_TRB_CTRL_IOC
- | XUSBPSU_TRB_CTRL_ISP_IMI);
-
- Params->Param0 = 0;
- Params->Param1 = (UINTPTR)TrbPtr;
-
- Xil_DCacheFlushRange(TrbPtr, sizeof(struct XUsbPsu_Trb));
-
- Params = XUsbPsu_GetEpParams(InstancePtr);
- Params->Param0 = 0;
- Params->Param1 = (UINTPTR)TrbPtr;
-
- Ept->Cmd = XUSBPSU_DEPCMD_STARTTRANSFER;
-
- RetVal = XUsbPsu_SendEpCmd(InstancePtr, UsbEp, Ept->Direction,
- XUSBPSU_DEPCMD_STARTTRANSFER, Params);
- if (RetVal != XST_SUCCESS) {
- return XST_FAILURE;
- }
- Ept->ResourceIndex = XUsbPsu_EpGetTransferIndex(InstancePtr,
- Ept->UsbEpNum,
- Ept->Direction);
- return XST_SUCCESS;
-}
-
-/****************************************************************************/
-/**
-* Stalls an Endpoint.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param EpNum is USB endpoint number.
-* @param Dir is direction.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_EpSetStall(struct XUsbPsu *InstancePtr, u8 Epnum, u8 Dir)
-{
- u8 PhyEpNum;
- struct XUsbPsu_Ep *Ept;
- struct XUsbPsu_EpParams *Params;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(Epnum >= 0 && Epnum <= 16);
- Xil_AssertVoid((Dir == XUSBPSU_EP_DIR_IN) || (Dir == XUSBPSU_EP_DIR_OUT));
-
- PhyEpNum = PhysicalEp(Epnum, Dir);
- Params = XUsbPsu_GetEpParams(InstancePtr);
-
- if ((PhyEpNum == 0) || (PhyEpNum == 1)) {
- /* Control Endpoint stall is issued on EP0 */
- Ept = &InstancePtr->eps[0];
- }
-
- Ept->Cmd = XUSBPSU_DEPCMD_SETSTALL;
- XUsbPsu_SendEpCmd(InstancePtr, Ept->PhyEpNum, Ept->Direction,
- XUSBPSU_DEPCMD_SETSTALL, Params);
-
- Ept->EpStatus |= XUSBPSU_EP_STALL;
-}
-
-/****************************************************************************/
-/**
-* Clears Stall on an Endpoint.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param EpNum is USB endpoint number.
-* @param Dir is direction.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_EpClearStall(struct XUsbPsu *InstancePtr, u8 Epnum, u8 Dir)
-{
- u8 PhyEpNum;
- struct XUsbPsu_Ep *Ept;
- struct XUsbPsu_EpParams *Params;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(Epnum >= 0 && Epnum <= 16);
- Xil_AssertVoid((Dir == XUSBPSU_EP_DIR_IN) || (Dir == XUSBPSU_EP_DIR_OUT));
-
- PhyEpNum = PhysicalEp(Epnum, Dir);
- Params = XUsbPsu_GetEpParams(InstancePtr);
-
- if ((PhyEpNum == 0) || (PhyEpNum == 1)) {
- /* Control Endpoint stall is issued on EP0 */
- Ept = &InstancePtr->eps[0];
- }
-
- Ept->Cmd = XUSBPSU_DEPCMD_CLEARSTALL;
- XUsbPsu_SendEpCmd(InstancePtr, Ept->PhyEpNum, Ept->Direction,
- XUSBPSU_DEPCMD_CLEARSTALL, Params);
-
- Ept->EpStatus &= ~XUSBPSU_EP_STALL;
-}
-
-/****************************************************************************/
-/**
-* Sets an user handler to be called after data is sent/received by an Endpoint
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param EpNum is USB endpoint number.
-* @param Dir is direction of endpoint - XUSBPSU_EP_DIR_IN/XUSBPSU_EP_DIR_OUT.
-* @param Handler is user handler to be called.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_SetEpHandler(struct XUsbPsu *InstancePtr, u8 Epnum,
- u8 Dir, void (*Handler)(void *, u32, u32))
-{
- u8 PhyEpNum;
- struct XUsbPsu_Ep *Ept;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(Epnum >= 0 && Epnum <= 16);
- Xil_AssertVoid((Dir == XUSBPSU_EP_DIR_IN) || (Dir == XUSBPSU_EP_DIR_OUT));
-
- PhyEpNum = PhysicalEp(Epnum, Dir);
- Ept = &InstancePtr->eps[PhyEpNum];
- Ept->Handler = Handler;
-}
-
-/****************************************************************************/
-/**
-* Returns status of endpoint - Stalled or not
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param EpNum is USB endpoint number.
-* @param Dir is direction of endpoint - XUSBPSU_EP_DIR_IN/XUSBPSU_EP_DIR_OUT.
-*
-* @return
-* 1 - if stalled
-* 0 - if not stalled
-*
-* @note None.
-*
-*****************************************************************************/
-int XUsbPsu_IsEpStalled(struct XUsbPsu *InstancePtr, u8 Epnum, u8 Dir)
-{
- u8 PhyEpNum;
- struct XUsbPsu_Ep *Ept;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(Epnum >= 0 && Epnum <= 16);
- Xil_AssertVoid((Dir == XUSBPSU_EP_DIR_IN) || (Dir == XUSBPSU_EP_DIR_OUT));
-
- PhyEpNum = PhysicalEp(Epnum, Dir);
- Ept = &InstancePtr->eps[PhyEpNum];
-
- return !!(Ept->EpStatus & XUSBPSU_EP_STALL);
-}
-
-/****************************************************************************/
-/**
-* Checks the Data Phase and calls user Endpoint handler.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Event is a pointer to the Endpoint event occured in core.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_EpXferComplete(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *Event)
-{
- struct XUsbPsu_Ep *Ept;
- struct XUsbPsu_Trb *TrbPtr;
- u32 Status;
- u32 Length;
- u32 EpNum;
- u8 Dir;
-
- Xil_AssertVoid(InstancePtr != NULL);
- Xil_AssertVoid(Event != NULL);
-
- EpNum = Event->Epnumber;
- Ept = &InstancePtr->eps[EpNum];
- Dir = Ept->Direction;
- TrbPtr = &Ept->EpTrb;
-
- Xil_DCacheInvalidateRange(TrbPtr, sizeof(struct XUsbPsu_Trb));
-
- Status = XUSBPSU_TRB_SIZE_TRBSTS(TrbPtr->Size);
- Length = TrbPtr->Size & XUSBPSU_TRB_SIZE_MASK;
-
- if (Length && Dir) { /* IN */
- Ept->BytesTxed = Ept->RequestedBytes - Length;
- }
-
- if (!Length) {
- Ept->BytesTxed = Ept->RequestedBytes;
- }
-
- if (Length && !Dir) { /* OUT */
- if (Ept->UnalignedTx == 1) {
- Ept->BytesTxed = Ept->RequestedBytes;
- Ept->UnalignedTx = 0;
- }
- }
-
- if (!Dir) {
- /* Invalidate Cache */
- Xil_DCacheInvalidateRange(Ept->BufferPtr, Ept->BytesTxed);
- }
-
- if (Ept->Handler) {
- Ept->Handler(InstancePtr, Ept->RequestedBytes, Ept->BytesTxed);
- }
-}
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_hw.h
deleted file mode 100644
index cd5cd33ec..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_hw.h
+++ /dev/null
@@ -1,457 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/****************************************************************************/
-/**
-*
-* @file xusbpsu_hw.h
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ----- -------- -----------------------------------------------------
-* 1.00a bss 01/22/15 First release
-*
-*
-*
-*****************************************************************************/
-
-#ifndef XUSBPSU_HW_H /* Prevent circular inclusions */
-#define XUSBPSU_HW_H /* by using protection macros */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************** Include Files ********************************/
-
-/************************** Constant Definitions ****************************/
-
-/**@name Register offsets
- *
- * The following constants provide access to each of the registers of the
- * USBPSU device.
- * @{
- */
-
-/* XUSBPSU registers memory space boundries */
-#define XUSBPSU_GLOBALS_REGS_START 0xc100
-#define XUSBPSU_GLOBALS_REGS_END 0xc6ff
-#define XUSBPSU_DEVICE_REGS_START 0xc700
-#define XUSBPSU_DEVICE_REGS_END 0xcbff
-#define XUSBPSU_OTG_REGS_START 0xcc00
-#define XUSBPSU_OTG_REGS_END 0xccff
-
-/* Global Registers */
-#define XUSBPSU_GSBUSCFG0 0xc100
-#define XUSBPSU_GSBUSCFG1 0xc104
-#define XUSBPSU_GTXTHRCFG 0xc108
-#define XUSBPSU_GRXTHRCFG 0xc10c
-#define XUSBPSU_GCTL 0xc110
-#define XUSBPSU_GEVTEN 0xc114
-#define XUSBPSU_GSTS 0xc118
-#define XUSBPSU_GSNPSID 0xc120
-#define XUSBPSU_GGPIO 0xc124
-#define XUSBPSU_GUID 0xc128
-#define XUSBPSU_GUCTL 0xc12c
-#define XUSBPSU_GBUSERRADDR0 0xc130
-#define XUSBPSU_GBUSERRADDR1 0xc134
-#define XUSBPSU_GPRTBIMAP0 0xc138
-#define XUSBPSU_GPRTBIMAP1 0xc13c
-#define XUSBPSU_GHWPARAMS0_OFFSET 0xc140
-#define XUSBPSU_GHWPARAMS1_OFFSET 0xc144
-#define XUSBPSU_GHWPARAMS2_OFFSET 0xc148
-#define XUSBPSU_GHWPARAMS3_OFFSET 0xc14c
-#define XUSBPSU_GHWPARAMS4_OFFSET 0xc150
-#define XUSBPSU_GHWPARAMS5_OFFSET 0xc154
-#define XUSBPSU_GHWPARAMS6_OFFSET 0xc158
-#define XUSBPSU_GHWPARAMS7_OFFSET 0xc15c
-#define XUSBPSU_GDBGFIFOSPACE 0xc160
-#define XUSBPSU_GDBGLTSSM 0xc164
-#define XUSBPSU_GPRTBIMAP_HS0 0xc180
-#define XUSBPSU_GPRTBIMAP_HS1 0xc184
-#define XUSBPSU_GPRTBIMAP_FS0 0xc188
-#define XUSBPSU_GPRTBIMAP_FS1 0xc18c
-
-#define XUSBPSU_GUSB2PHYCFG(n) (0xc200 + (n * 0x04))
-#define XUSBPSU_GUSB2I2CCTL(n) (0xc240 + (n * 0x04))
-
-#define XUSBPSU_GUSB2PHYACC(n) (0xc280 + (n * 0x04))
-
-#define XUSBPSU_GUSB3PIPECTL(n) (0xc2c0 + (n * 0x04))
-
-#define XUSBPSU_GTXFIFOSIZ(n) (0xc300 + (n * 0x04))
-#define XUSBPSU_GRXFIFOSIZ(n) (0xc380 + (n * 0x04))
-
-#define XUSBPSU_GEVNTADRLO(n) (0xc400 + (n * 0x10))
-#define XUSBPSU_GEVNTADRHI(n) (0xc404 + (n * 0x10))
-#define XUSBPSU_GEVNTSIZ(n) (0xc408 + (n * 0x10))
-#define XUSBPSU_GEVNTCOUNT(n) (0xc40c + (n * 0x10))
-
-#define XUSBPSU_GHWPARAMS8 0xc600
-
-/* Device Registers */
-#define XUSBPSU_DCFG 0xc700
-#define XUSBPSU_DCTL 0xc704
-#define XUSBPSU_DEVTEN 0xc708
-#define XUSBPSU_DSTS 0xc70c
-#define XUSBPSU_DGCMDPAR 0xc710
-#define XUSBPSU_DGCMD 0xc714
-#define XUSBPSU_DALEPENA 0xc720
-#define XUSBPSU_DEPCMDPAR2(n) (0xc800 + (n * 0x10))
-#define XUSBPSU_DEPCMDPAR1(n) (0xc804 + (n * 0x10))
-#define XUSBPSU_DEPCMDPAR0(n) (0xc808 + (n * 0x10))
-#define XUSBPSU_DEPCMD(n) (0xc80c + (n * 0x10))
-
-/* OTG Registers */
-#define XUSBPSU_OCFG 0xcc00
-#define XUSBPSU_OCTL 0xcc04
-#define XUSBPSU_OEVT 0xcc08
-#define XUSBPSU_OEVTEN 0xcc0C
-#define XUSBPSU_OSTS 0xcc10
-
-/* Bit fields */
-
-/* Global Configuration Register */
-#define XUSBPSU_GCTL_PWRDNSCALE(n) ((n) << 19)
-#define XUSBPSU_GCTL_U2RSTECN (1 << 16)
-#define XUSBPSU_GCTL_RAMCLKSEL(x) (((x) & XUSBPSU_GCTL_CLK_MASK) << 6)
-#define XUSBPSU_GCTL_CLK_BUS (0)
-#define XUSBPSU_GCTL_CLK_PIPE (1)
-#define XUSBPSU_GCTL_CLK_PIPEHALF (2)
-#define XUSBPSU_GCTL_CLK_MASK (3)
-
-#define XUSBPSU_GCTL_PRTCAP(n) (((n) & (3 << 12)) >> 12)
-#define XUSBPSU_GCTL_PRTCAPDIR(n) ((n) << 12)
-#define XUSBPSU_GCTL_PRTCAP_HOST 1
-#define XUSBPSU_GCTL_PRTCAP_DEVICE 2
-#define XUSBPSU_GCTL_PRTCAP_OTG 3
-
-#define XUSBPSU_GCTL_CORESOFTRESET (1 << 11)
-#define XUSBPSU_GCTL_SOFITPSYNC (1 << 10)
-#define XUSBPSU_GCTL_SCALEDOWN(n) ((n) << 4)
-#define XUSBPSU_GCTL_SCALEDOWN_MASK XUSBPSU_GCTL_SCALEDOWN(3)
-#define XUSBPSU_GCTL_DISSCRAMBLE (1 << 3)
-#define XUSBPSU_GCTL_GBLHIBERNATIONEN (1 << 1)
-#define XUSBPSU_GCTL_DSBLCLKGTNG (1 << 0)
-
-/* Global Status Register Device Interrupt Mask */
-#define XUSBPSU_GSTS_DEVICE_IP_MASK 0x00000040
-
-/* Global USB2 PHY Configuration Register */
-#define XUSBPSU_GUSB2PHYCFG_PHYSOFTRST (1 << 31)
-#define XUSBPSU_GUSB2PHYCFG_SUSPHY (1 << 6)
-
-/* Global USB3 PIPE Control Register */
-#define XUSBPSU_GUSB3PIPECTL_PHYSOFTRST (1 << 31)
-#define XUSBPSU_GUSB3PIPECTL_SUSPHY (1 << 17)
-
-/* Global TX Fifo Size Register */
-#define XUSBPSU_GTXFIFOSIZ_TXFDEF(n) ((n) & 0xffff)
-#define XUSBPSU_GTXFIFOSIZ_TXFSTADDR(n) ((n) & 0xffff0000)
-
-/* Global Event Size Registers */
-#define XUSBPSU_GEVNTSIZ_INTMASK (1 << 31)
-#define XUSBPSU_GEVNTSIZ_SIZE(n) ((n) & 0xffff)
-
-/* Global HWPARAMS1 Register */
-#define XUSBPSU_GHWPARAMS1_EN_PWROPT(n) (((n) & (3 << 24)) >> 24)
-#define XUSBPSU_GHWPARAMS1_EN_PWROPT_NO 0
-#define XUSBPSU_GHWPARAMS1_EN_PWROPT_CLK 1
-#define XUSBPSU_GHWPARAMS1_EN_PWROPT_HIB 2
-#define XUSBPSU_GHWPARAMS1_PWROPT(n) ((n) << 24)
-#define XUSBPSU_GHWPARAMS1_PWROPT_MASK XUSBPSU_GHWPARAMS1_PWROPT(3)
-
-/* Global HWPARAMS4 Register */
-#define XUSBPSU_GHWPARAMS4_HIBER_SCRATCHBUFS(n) (((n) & (0x0f << 13)) >> 13)
-#define XUSBPSU_MAX_HIBER_SCRATCHBUFS 15
-
-/* Device Configuration Register */
-#define XUSBPSU_DCFG_DEVADDR(addr) ((addr) << 3)
-#define XUSBPSU_DCFG_DEVADDR_MASK XUSBPSU_DCFG_DEVADDR(0x7f)
-
-#define XUSBPSU_DCFG_SPEED_MASK 7
-#define XUSBPSU_DCFG_SUPERSPEED 4
-#define XUSBPSU_DCFG_HIGHSPEED 0
-#define XUSBPSU_DCFG_FULLSPEED2 1
-#define XUSBPSU_DCFG_LOWSPEED 2
-#define XUSBPSU_DCFG_FULLSPEED1 3
-
-#define XUSBPSU_DCFG_LPM_CAP (1 << 22)
-
-/* Device Control Register */
-#define XUSBPSU_DCTL_RUN_STOP (1 << 31)
-#define XUSBPSU_DCTL_CSFTRST (1 << 30)
-#define XUSBPSU_DCTL_LSFTRST (1 << 29)
-
-#define XUSBPSU_DCTL_HIRD_THRES_MASK (0x1f << 24)
-#define XUSBPSU_DCTL_HIRD_THRES(n) ((n) << 24)
-
-#define XUSBPSU_DCTL_APPL1RES (1 << 23)
-
-/* These apply for core versions 1.87a and earlier */
-#define XUSBPSU_DCTL_TRGTULST_MASK (0x0f << 17)
-#define XUSBPSU_DCTL_TRGTULST(n) ((n) << 17)
-#define XUSBPSU_DCTL_TRGTULST_U2 (XUSBPSU_DCTL_TRGTULST(2))
-#define XUSBPSU_DCTL_TRGTULST_U3 (XUSBPSU_DCTL_TRGTULST(3))
-#define XUSBPSU_DCTL_TRGTULST_SS_DIS (XUSBPSU_DCTL_TRGTULST(4))
-#define XUSBPSU_DCTL_TRGTULST_RX_DET (XUSBPSU_DCTL_TRGTULST(5))
-#define XUSBPSU_DCTL_TRGTULST_SS_INACT (XUSBPSU_DCTL_TRGTULST(6))
-
-/* These apply for core versions 1.94a and later */
-#define XUSBPSU_DCTL_KEEP_CONNECT (1 << 19)
-#define XUSBPSU_DCTL_L1_HIBER_EN (1 << 18)
-#define XUSBPSU_DCTL_CRS (1 << 17)
-#define XUSBPSU_DCTL_CSS (1 << 16)
-
-#define XUSBPSU_DCTL_INITU2ENA (1 << 12)
-#define XUSBPSU_DCTL_ACCEPTU2ENA (1 << 11)
-#define XUSBPSU_DCTL_INITU1ENA (1 << 10)
-#define XUSBPSU_DCTL_ACCEPTU1ENA (1 << 9)
-#define XUSBPSU_DCTL_TSTCTRL_MASK (0xf << 1)
-
-#define XUSBPSU_DCTL_ULSTCHNGREQ_MASK (0x0f << 5)
-#define XUSBPSU_DCTL_ULSTCHNGREQ(n) (((n) << 5) & XUSBPSU_DCTL_ULSTCHNGREQ_MASK)
-
-#define XUSBPSU_DCTL_ULSTCHNG_NO_ACTION (XUSBPSU_DCTL_ULSTCHNGREQ(0))
-#define XUSBPSU_DCTL_ULSTCHNG_SS_DISABLED (XUSBPSU_DCTL_ULSTCHNGREQ(4))
-#define XUSBPSU_DCTL_ULSTCHNG_RX_DETECT (XUSBPSU_DCTL_ULSTCHNGREQ(5))
-#define XUSBPSU_DCTL_ULSTCHNG_SS_INACTIVE (XUSBPSU_DCTL_ULSTCHNGREQ(6))
-#define XUSBPSU_DCTL_ULSTCHNG_RECOVERY (XUSBPSU_DCTL_ULSTCHNGREQ(8))
-#define XUSBPSU_DCTL_ULSTCHNG_COMPLIANCE (XUSBPSU_DCTL_ULSTCHNGREQ(10))
-#define XUSBPSU_DCTL_ULSTCHNG_LOOPBACK (XUSBPSU_DCTL_ULSTCHNGREQ(11))
-
-/* Device Event Enable Register */
-#define XUSBPSU_DEVTEN_VNDRDEVTSTRCVEDEN (1 << 12)
-#define XUSBPSU_DEVTEN_EVNTOVERFLOWEN (1 << 11)
-#define XUSBPSU_DEVTEN_CMDCMPLTEN (1 << 10)
-#define XUSBPSU_DEVTEN_ERRTICERREN (1 << 9)
-#define XUSBPSU_DEVTEN_SOFEN (1 << 7)
-#define XUSBPSU_DEVTEN_EOPFEN (1 << 6)
-#define XUSBPSU_DEVTEN_HIBERNATIONREQEVTEN (1 << 5)
-#define XUSBPSU_DEVTEN_WKUPEVTEN (1 << 4)
-#define XUSBPSU_DEVTEN_ULSTCNGEN (1 << 3)
-#define XUSBPSU_DEVTEN_CONNECTDONEEN (1 << 2)
-#define XUSBPSU_DEVTEN_USBRSTEN (1 << 1)
-#define XUSBPSU_DEVTEN_DISCONNEVTEN (1 << 0)
-
-/* Device Status Register */
-#define XUSBPSU_DSTS_DCNRD (1 << 29)
-
-/* This applies for core versions 1.87a and earlier */
-#define XUSBPSU_DSTS_PWRUPREQ (1 << 24)
-
-/* These apply for core versions 1.94a and later */
-#define XUSBPSU_DSTS_RSS (1 << 25)
-#define XUSBPSU_DSTS_SSS (1 << 24)
-
-#define XUSBPSU_DSTS_COREIDLE (1 << 23)
-#define XUSBPSU_DSTS_DEVCTRLHLT (1 << 22)
-
-#define XUSBPSU_DSTS_USBLNKST_MASK (0x0f << 18)
-#define XUSBPSU_DSTS_USBLNKST(n) (((n) & XUSBPSU_DSTS_USBLNKST_MASK) >> 18)
-
-#define XUSBPSU_DSTS_RXFIFOEMPTY (1 << 17)
-
-#define XUSBPSU_DSTS_SOFFN_MASK (0x3fff << 3)
-#define XUSBPSU_DSTS_SOFFN(n) (((n) & XUSBPSU_DSTS_SOFFN_MASK) >> 3)
-
-#define XUSBPSU_DSTS_CONNECTSPD (7 << 0)
-
-#define XUSBPSU_DSTS_SUPERSPEED (4 << 0)
-#define XUSBPSU_DSTS_HIGHSPEED (0 << 0)
-#define XUSBPSU_DSTS_FULLSPEED2 (1 << 0)
-#define XUSBPSU_DSTS_LOWSPEED (2 << 0)
-#define XUSBPSU_DSTS_FULLSPEED1 (3 << 0)
-
-/* Device Generic Command Register */
-#define XUSBPSU_DGCMD_SET_LMP 0x01
-#define XUSBPSU_DGCMD_SET_PERIODIC_PAR 0x02
-#define XUSBPSU_DGCMD_XMIT_FUNCTION 0x03
-
-/* These apply for core versions 1.94a and later */
-#define XUSBPSU_DGCMD_SET_SCRATCHPAD_ADDR_LO 0x04
-#define XUSBPSU_DGCMD_SET_SCRATCHPAD_ADDR_HI 0x05
-
-#define XUSBPSU_DGCMD_SELECTED_FIFO_FLUSH 0x09
-#define XUSBPSU_DGCMD_ALL_FIFO_FLUSH 0x0a
-#define XUSBPSU_DGCMD_SET_ENDPOINT_NRDY 0x0c
-#define XUSBPSU_DGCMD_RUN_SOC_BUS_LOOPBACK 0x10
-
-#define XUSBPSU_DGCMD_STATUS(n) (((n) >> 15) & 1)
-#define XUSBPSU_DGCMD_CMDACT (1 << 10)
-#define XUSBPSU_DGCMD_CMDIOC (1 << 8)
-
-/* Device Generic Command Parameter Register */
-#define XUSBPSU_DGCMDPAR_FORCE_LINKPM_ACCEPT (1 << 0)
-#define XUSBPSU_DGCMDPAR_FIFO_NUM(n) ((n) << 0)
-#define XUSBPSU_DGCMDPAR_RX_FIFO (0 << 5)
-#define XUSBPSU_DGCMDPAR_TX_FIFO (1 << 5)
-#define XUSBPSU_DGCMDPAR_LOOPBACK_DIS (0 << 0)
-#define XUSBPSU_DGCMDPAR_LOOPBACK_ENA (1 << 0)
-
-/* Device Endpoint Command Register */
-#define XUSBPSU_DEPCMD_PARAM_SHIFT 16
-#define XUSBPSU_DEPCMD_PARAM(x) ((x) << XUSBPSU_DEPCMD_PARAM_SHIFT)
-#define XUSBPSU_DEPCMD_GET_RSC_IDX(x) (((x) >> XUSBPSU_DEPCMD_PARAM_SHIFT) & \
- 0x7f)
-#define XUSBPSU_DEPCMD_STATUS(x) (((x) >> 12) & 0xF)
-#define XUSBPSU_DEPCMD_HIPRI_FORCERM (1 << 11)
-#define XUSBPSU_DEPCMD_CMDACT (1 << 10)
-#define XUSBPSU_DEPCMD_CMDIOC (1 << 8)
-
-#define XUSBPSU_DEPCMD_DEPSTARTCFG 0x09
-#define XUSBPSU_DEPCMD_ENDTRANSFER 0x08
-#define XUSBPSU_DEPCMD_UPDATETRANSFER 0x07
-#define XUSBPSU_DEPCMD_STARTTRANSFER 0x06
-#define XUSBPSU_DEPCMD_CLEARSTALL 0x05
-#define XUSBPSU_DEPCMD_SETSTALL 0x04
-#define XUSBPSU_DEPCMD_GETEPSTATE 0x03
-#define XUSBPSU_DEPCMD_SETTRANSFRESOURCE 0x02
-#define XUSBPSU_DEPCMD_SETEPCONFIG 0x01
-
-/* The EP number goes 0..31 so ep0 is always out and ep1 is always in */
-#define XUSBPSU_DALEPENA_EP(n) (1 << n)
-
-#define XUSBPSU_DEPCFG_INT_NUM(n) ((n) << 0)
-#define XUSBPSU_DEPCFG_XFER_COMPLETE_EN (1 << 8)
-#define XUSBPSU_DEPCFG_XFER_IN_PROGRESS_EN (1 << 9)
-#define XUSBPSU_DEPCFG_XFER_NOT_READY_EN (1 << 10)
-#define XUSBPSU_DEPCFG_FIFO_ERROR_EN (1 << 11)
-#define XUSBPSU_DEPCFG_STREAM_EVENT_EN (1 << 13)
-#define XUSBPSU_DEPCFG_BINTERVAL_M1(n) ((n) << 16)
-#define XUSBPSU_DEPCFG_STREAM_CAPABLE (1 << 24)
-#define XUSBPSU_DEPCFG_EP_NUMBER(n) ((n) << 25)
-#define XUSBPSU_DEPCFG_BULK_BASED (1 << 30)
-#define XUSBPSU_DEPCFG_FIFO_BASED (1 << 31)
-
-/* DEPCFG parameter 0 */
-#define XUSBPSU_DEPCFG_EP_TYPE(n) ((n) << 1)
-#define XUSBPSU_DEPCFG_MAX_PACKET_SIZE(n) ((n) << 3)
-#define XUSBPSU_DEPCFG_FIFO_NUMBER(n) ((n) << 17)
-#define XUSBPSU_DEPCFG_BURST_SIZE(n) ((n) << 22)
-#define XUSBPSU_DEPCFG_DATA_SEQ_NUM(n) ((n) << 26)
-/* This applies for core versions earlier than 1.94a */
-#define XUSBPSU_DEPCFG_IGN_SEQ_NUM (1 << 31)
-/* These apply for core versions 1.94a and later */
-#define XUSBPSU_DEPCFG_ACTION_INIT (0 << 30)
-#define XUSBPSU_DEPCFG_ACTION_RESTORE (1 << 30)
-#define XUSBPSU_DEPCFG_ACTION_MODIFY (2 << 30)
-
-/* DEPXFERCFG parameter 0 */
-#define XUSBPSU_DEPXFERCFG_NUM_XFER_RES(n) ((n) & 0xffff)
-
-#define XUSBPSU_DEPCMD_TYPE_BULK 2
-#define XUSBPSU_DEPCMD_TYPE_INTR 3
-
-/* TRB Length, PCM and Status */
-#define XUSBPSU_TRB_SIZE_MASK (0x00ffffff)
-#define XUSBPSU_TRB_SIZE_LENGTH(n) ((n) & XUSBPSU_TRB_SIZE_MASK)
-#define XUSBPSU_TRB_SIZE_PCM1(n) (((n) & 0x03) << 24)
-#define XUSBPSU_TRB_SIZE_TRBSTS(n) (((n) & (0x0f << 28)) >> 28)
-
-#define XUSBPSU_TRBSTS_OK 0
-#define XUSBPSU_TRBSTS_MISSED_ISOC 1
-#define XUSBPSU_TRBSTS_SETUP_PENDING 2
-#define XUSBPSU_TRB_STS_XFER_IN_PROG 4
-
-/* TRB Control */
-#define XUSBPSU_TRB_CTRL_HWO (1 << 0)
-#define XUSBPSU_TRB_CTRL_LST (1 << 1)
-#define XUSBPSU_TRB_CTRL_CHN (1 << 2)
-#define XUSBPSU_TRB_CTRL_CSP (1 << 3)
-#define XUSBPSU_TRB_CTRL_TRBCTL(n) (((n) & 0x3f) << 4)
-#define XUSBPSU_TRB_CTRL_ISP_IMI (1 << 10)
-#define XUSBPSU_TRB_CTRL_IOC (1 << 11)
-#define XUSBPSU_TRB_CTRL_SID_SOFN(n) (((n) & 0xffff) << 14)
-
-#define XUSBPSU_TRBCTL_NORMAL XUSBPSU_TRB_CTRL_TRBCTL(1)
-#define XUSBPSU_TRBCTL_CONTROL_SETUP XUSBPSU_TRB_CTRL_TRBCTL(2)
-#define XUSBPSU_TRBCTL_CONTROL_STATUS2 XUSBPSU_TRB_CTRL_TRBCTL(3)
-#define XUSBPSU_TRBCTL_CONTROL_STATUS3 XUSBPSU_TRB_CTRL_TRBCTL(4)
-#define XUSBPSU_TRBCTL_CONTROL_DATA XUSBPSU_TRB_CTRL_TRBCTL(5)
-#define XUSBPSU_TRBCTL_ISOCHRONOUS_FIRST XUSBPSU_TRB_CTRL_TRBCTL(6)
-#define XUSBPSU_TRBCTL_ISOCHRONOUS XUSBPSU_TRB_CTRL_TRBCTL(7)
-#define XUSBPSU_TRBCTL_LINK_TRB XUSBPSU_TRB_CTRL_TRBCTL(8)
-
-/*@}*/
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/*****************************************************************************/
-/**
-*
-* Read a register of the USBPS8 device. This macro provides register
-* access to all registers using the register offsets defined above.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Offset is the offset of the register to read.
-*
-* @return The contents of the register.
-*
-* @note C-style Signature:
-* u32 XUsbPsu_ReadReg(struct XUsbPsu *InstancePtr, u32 Offset);
-*
-******************************************************************************/
-#define XUsbPsu_ReadReg(InstancePtr, Offset) \
- Xil_In32((InstancePtr)->ConfigPtr->BaseAddress + (Offset))
-
-/*****************************************************************************/
-/**
-*
-* Write a register of the USBPS8 device. This macro provides
-* register access to all registers using the register offsets defined above.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param RegOffset is the offset of the register to write.
-* @param Data is the value to write to the register.
-*
-* @return None.
-*
-* @note C-style Signature:
-* void XUsbPsu_WriteReg(struct XUsbPsu *InstancePtr,
-* u32 Offset,u32 Data)
-*
-******************************************************************************/
-#define XUsbPsu_WriteReg(InstancePtr, Offset, Data) \
- Xil_Out32((InstancePtr)->ConfigPtr->BaseAddress + (Offset), (Data))
-
-/************************** Function Prototypes ******************************/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* End of protection macro. */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_intr.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_intr.c
deleted file mode 100644
index a1840b6f8..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/usbpsu_v1_0/src/xusbpsu_intr.c
+++ /dev/null
@@ -1,403 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2015 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/****************************************************************************/
-/**
-*
-* @file xusbpsu_intr.c
-*
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ---- -------- -------------------------------------------------------
-* 1.00a bss 01/22/15 First release
-* 1.00a bss 03/18/15 Added support for Non control endpoint interrupts.
-*
-*
-*
-*****************************************************************************/
-
-/***************************** Include Files ********************************/
-
-#include "xusbpsu.h"
-
-/************************** Constant Definitions *****************************/
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/************************** Function Prototypes ******************************/
-
-/************************** Variable Definitions *****************************/
-
-/****************************************************************************/
-/**
-* Endpoint interrupt handler.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Event is endpoint Event occured in the core.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_EpInterrupt(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Epevt *Event)
-{
- struct XUsbPsu_Ep *Ept;
- u32 EpNum;
-
- Xil_AssertVoid(Event != NULL);
-
- EpNum = Event->Epnumber;
- Ept = &InstancePtr->eps[EpNum];
-
- if (!(Ept->EpStatus & XUSBPSU_EP_ENABLED))
- return;
-
- if (EpNum == 0 || EpNum == 1) {
- XUsbPsu_Ep0Intr(InstancePtr, Event);
- return;
- }
-
- /* Handle other endpoint events */
- switch (Event->Endpoint_Event) {
- case XUSBPSU_DEPEVT_XFERCOMPLETE:
- XUsbPsu_EpXferComplete(InstancePtr, Event);
- break;
-
- case XUSBPSU_DEPEVT_XFERNOTREADY:
- break;
-
- default:
- break;
- }
-}
-
-/****************************************************************************/
-/**
-* Disconnect Interrupt handler.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_DisconnectIntr(struct XUsbPsu *InstancePtr)
-{
- u32 RegVal;
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DCTL);
- RegVal &= ~XUSBPSU_DCTL_INITU1ENA;
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DCTL, RegVal);
-
- RegVal &= ~XUSBPSU_DCTL_INITU2ENA;
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DCTL, RegVal);
-
- InstancePtr->IsConfigDone = 0;
- InstancePtr->Speed = XUSBPSU_SPEED_UNKNOWN;
-}
-
-/****************************************************************************/
-/**
-* Reset Interrupt handler.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_ResetIntr(struct XUsbPsu *InstancePtr)
-{
- u32 RegVal;
- int Index;
-
- InstancePtr->State = XUSBPSU_STATE_DEFAULT;
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DCTL);
- RegVal &= ~XUSBPSU_DCTL_TSTCTRL_MASK;
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DCTL, RegVal);
- InstancePtr->TestMode = 0;
-
- for (Index = 0; Index < InstancePtr->NumInEps + InstancePtr->NumOutEps;
- Index++)
- {
- InstancePtr->eps[Index].EpStatus = 0;
- }
-
- InstancePtr->IsConfigDone = 0;
-
- /* Reset device address to zero */
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DCFG);
- RegVal &= ~(XUSBPSU_DCFG_DEVADDR_MASK);
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_DCFG, RegVal);
-}
-
-/****************************************************************************/
-/**
-* Connection Done Interrupt handler.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_ConnDoneIntr(struct XUsbPsu *InstancePtr)
-{
- int Ret;
- u32 RegVal;
- u16 Size;
- u8 Speed;
-
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_DSTS);
- Speed = RegVal & XUSBPSU_DSTS_CONNECTSPD;
- InstancePtr->Speed = Speed;
- Size = 64;
-
- switch (Speed) {
- case XUSBPSU_DCFG_SUPERSPEED:
- Size = 512;
- InstancePtr->Speed = XUSBPSU_SPEED_SUPER;
- break;
- case XUSBPSU_DCFG_HIGHSPEED:
- Size = 64;
- InstancePtr->Speed = XUSBPSU_SPEED_HIGH;
- break;
- case XUSBPSU_DCFG_FULLSPEED2:
- case XUSBPSU_DCFG_FULLSPEED1:
- Size = 64;
- InstancePtr->Speed = XUSBPSU_SPEED_FULL;
- break;
- case XUSBPSU_DCFG_LOWSPEED:
- Size = 64;
- InstancePtr->Speed = XUSBPSU_SPEED_LOW;
- break;
- }
-
- XUsbPsu_EnableControlEp(InstancePtr, Size);
- XUsbPsu_RecvSetup(InstancePtr);
-}
-
-/****************************************************************************/
-/**
-* Link Status Change Interrupt handler.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param EvtInfo is Event information.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_LinkStsChangeIntr(struct XUsbPsu *InstancePtr, u32 EvtInfo)
-{
- u8 State = EvtInfo & XUSBPSU_LINK_STATE_MASK;
-
- InstancePtr->LinkState = State;
-}
-
-/****************************************************************************/
-/**
-* Interrupt handler for device specific events.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Event is the Device Event occured in core.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_DevInterrupt(struct XUsbPsu *InstancePtr,
- const struct XUsbPsu_Event_Devt *Event)
-{
- Xil_AssertVoid(Event != NULL);
-
- switch (Event->Type) {
- case XUSBPSU_DEVICE_EVENT_DISCONNECT:
- XUsbPsu_DisconnectIntr(InstancePtr);
- break;
- case XUSBPSU_DEVICE_EVENT_RESET:
- XUsbPsu_ResetIntr(InstancePtr);
- break;
- case XUSBPSU_DEVICE_EVENT_CONNECT_DONE:
- XUsbPsu_ConnDoneIntr(InstancePtr);
- break;
- case XUSBPSU_DEVICE_EVENT_WAKEUP:
- break;
- case XUSBPSU_DEVICE_EVENT_HIBER_REQ:
- break;
- case XUSBPSU_DEVICE_EVENT_LINK_STATUS_CHANGE:
- XUsbPsu_LinkStsChangeIntr(InstancePtr,
- Event->Event_Info);
- break;
- case XUSBPSU_DEVICE_EVENT_EOPF:
- break;
- case XUSBPSU_DEVICE_EVENT_SOF:
- break;
- case XUSBPSU_DEVICE_EVENT_ERRATIC_ERROR:
- break;
- case XUSBPSU_DEVICE_EVENT_CMD_CMPL:
- break;
- case XUSBPSU_DEVICE_EVENT_OVERFLOW:
- break;
- default:
- break;
- }
-}
-
-/****************************************************************************/
-/**
-* Processes an Event entry in Event Buffer.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @param Event is the Event entry.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_ProcessEvent(struct XUsbPsu *InstancePtr,
- const union XUsbPsu_Event *Event)
-{
- Xil_AssertVoid(Event != NULL);
-
- if (Event->Type.Is_DevEvt == 0) {
- /* Device Endpoint Event */
- return XUsbPsu_EpInterrupt(InstancePtr, &Event->Epevt);
- }
-
- switch (Event->Type.Type) {
- case XUSBPSU_EVENT_TYPE_DEV:
- XUsbPsu_DevInterrupt(InstancePtr, &Event->Devt);
- break;
- /* Carkit and I2C events not supported now */
- default:
- break;
- }
-}
-
-/****************************************************************************/
-/**
-* Processes events in an Event Buffer.
-*
-* @param InstancePtr is a pointer to the XUsbPsu instance.
-* @bus Event buffer number.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_ProcessEvtBuffer(struct XUsbPsu *InstancePtr)
-{
- struct XUsbPsu_EvtBuffer *Evt;
- union XUsbPsu_Event Event;
- int RemainingEvnts;
- u32 RegVal;
-
- Evt = &InstancePtr->Evt;
- RemainingEvnts = Evt->Count;
-
- Xil_DCacheInvalidateRange(Evt->BuffAddr, XUSBPSU_EVENT_BUFFERS_SIZE);
-
- while (RemainingEvnts > 0) {
- Event.Raw = *(u32 *) (Evt->BuffAddr + Evt->Offset);
-
- XUsbPsu_ProcessEvent(InstancePtr, &Event);
-
- Evt->Offset = (Evt->Offset + 4) % XUSBPSU_EVENT_BUFFERS_SIZE;
- RemainingEvnts -= 4;
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GEVNTCOUNT(0), 4);
- }
-
- Evt->Count = 0;
- Evt->Flags &= ~XUSBPSU_EVENT_PENDING;
-
- /* Unmask interrupt */
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_GEVNTSIZ(0));
- RegVal &= ~XUSBPSU_GEVNTSIZ_INTMASK;
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GEVNTSIZ(0), RegVal);
-}
-
-/****************************************************************************/
-/**
-* Main Interrupt Handler.
-*
-* @return None.
-*
-* @note None.
-*
-*****************************************************************************/
-void XUsbPsu_IntrHandler(void *XUsbPsu)
-{
- struct XUsbPsu *InstancePtr;
- struct XUsbPsu_EvtBuffer *Evt;
- u32 Count;
- u32 RegVal;
-
- Xil_AssertVoid(XUsbPsu != NULL);
-
- InstancePtr = XUsbPsu;
- Evt = &InstancePtr->Evt;
-
- Count = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_GEVNTCOUNT(0));
- Count &= XUSBPSU_GEVNTCOUNT_MASK;
- /*
- * As per data book software should only process Events if Event count
- * is greater than zero.
- */
- if (!Count)
- return;
-
- Evt->Count = Count;
- Evt->Flags |= XUSBPSU_EVENT_PENDING;
-
- /* Mask interrupt */
- RegVal = XUsbPsu_ReadReg(InstancePtr, XUSBPSU_GEVNTSIZ(0));
- RegVal |= XUSBPSU_GEVNTSIZ_INTMASK;
- XUsbPsu_WriteReg(InstancePtr, XUSBPSU_GEVNTSIZ(0), RegVal);
-
- XUsbPsu_ProcessEvtBuffer(InstancePtr);
-}
-
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps.c
index 1a3eb0834..fc5db32fe 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps.c
@@ -33,6 +33,8 @@
/**
*
* @file xwdtps.c
+* @addtogroup wdtps_v3_0
+* @{
*
* Contains the implementation of interface functions of the XWdtPs driver.
* See xwdtps.h for a description of the driver.
@@ -481,3 +483,4 @@ void XWdtPs_SetControlValue(XWdtPs *InstancePtr, u8 Control, u32 Value)
XWdtPs_WriteReg(InstancePtr->Config.BaseAddress, XWDTPS_CCR_OFFSET,
Register);
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps.h
index 498e60bee..893d516e7 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps.h
@@ -33,6 +33,9 @@
/**
*
* @file xwdtps.h
+* @addtogroup wdtps_v3_0
+* @{
+* @details
*
* The Xilinx watchdog timer driver supports the Xilinx watchdog timer hardware.
*
@@ -217,3 +220,4 @@ s32 XWdtPs_SelfTest(XWdtPs *InstancePtr);
#endif
#endif /* end of protection macro */
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_g.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_g.c
index 59625ec5f..5147be676 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_g.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_g.c
@@ -1,59 +1,59 @@
-
-/*******************************************************************
-*
-* CAUTION: This file is automatically generated by HSI.
-* Version:
-* DO NOT EDIT.
-*
-* Copyright (C) 2010-2015 Xilinx, Inc. All Rights Reserved.*
-*Permission is hereby granted, free of charge, to any person obtaining a copy
-*of this software and associated documentation files (the Software), to deal
-*in the Software without restriction, including without limitation the rights
-*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*copies of the Software, and to permit persons to whom the Software is
-*furnished to do so, subject to the following conditions:
-*
-*The above copyright notice and this permission notice shall be included in
-*all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-*(a) running on a Xilinx device, or
-*(b) that interact with a Xilinx device through a bus or interconnect.
-*
-*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*
-*Except as contained in this notice, the name of the Xilinx shall not be used
-*in advertising or otherwise to promote the sale, use or other dealings in
-*this Software without prior written authorization from Xilinx.
-*
-
-*
-* Description: Driver configuration
-*
-*******************************************************************/
-
-#include "xparameters.h"
-#include "xwdtps.h"
-
-/*
-* The configuration table for devices
-*/
-
-XWdtPs_Config XWdtPs_ConfigTable[] =
-{
- {
- XPAR_PSU_WDT_0_DEVICE_ID,
- XPAR_PSU_WDT_0_BASEADDR
- },
- {
- XPAR_PSU_WDT_1_DEVICE_ID,
- XPAR_PSU_WDT_1_BASEADDR
- }
-};
-
-
+
+/*******************************************************************
+*
+* CAUTION: This file is automatically generated by HSI.
+* Version:
+* DO NOT EDIT.
+*
+* Copyright (C) 2010-2016 Xilinx, Inc. All Rights Reserved.*
+*Permission is hereby granted, free of charge, to any person obtaining a copy
+*of this software and associated documentation files (the Software), to deal
+*in the Software without restriction, including without limitation the rights
+*to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*copies of the Software, and to permit persons to whom the Software is
+*furnished to do so, subject to the following conditions:
+*
+*The above copyright notice and this permission notice shall be included in
+*all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+*(a) running on a Xilinx device, or
+*(b) that interact with a Xilinx device through a bus or interconnect.
+*
+*THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+*XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+*WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+*OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+*Except as contained in this notice, the name of the Xilinx shall not be used
+*in advertising or otherwise to promote the sale, use or other dealings in
+*this Software without prior written authorization from Xilinx.
+*
+
+*
+* Description: Driver configuration
+*
+*******************************************************************/
+
+#include "xparameters.h"
+#include "xwdtps.h"
+
+/*
+* The configuration table for devices
+*/
+
+XWdtPs_Config XWdtPs_ConfigTable[] =
+{
+ {
+ XPAR_PSU_WDT_0_DEVICE_ID,
+ XPAR_PSU_WDT_0_BASEADDR
+ },
+ {
+ XPAR_PSU_WDT_1_DEVICE_ID,
+ XPAR_PSU_WDT_1_BASEADDR
+ }
+};
+
+
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_hw.h
index 2cd3b272b..4b5a3df31 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_hw.h
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_hw.h
@@ -33,6 +33,8 @@
/**
*
* @file xwdtps_hw.h
+* @addtogroup wdtps_v3_0
+* @{
*
* This file contains the hardware interface to the System Watch Dog Timer (WDT).
*
@@ -188,3 +190,4 @@ extern "C" {
#endif
#endif
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_selftest.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_selftest.c
index e6bf838f8..bcd5f356b 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_selftest.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_selftest.c
@@ -33,6 +33,8 @@
/**
*
* @file xwdtps_selftest.c
+* @addtogroup wdtps_v3_0
+* @{
*
* Contains diagnostic self-test functions for the XWdtPs driver.
*
@@ -168,3 +170,4 @@ s32 XWdtPs_SelfTest(XWdtPs *InstancePtr)
}
return Status;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_sinit.c b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_sinit.c
index 6794aa2f3..f468c9903 100644
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_sinit.c
+++ b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/wdtps_v3_0/src/xwdtps_sinit.c
@@ -33,6 +33,8 @@
/**
*
* @file xwdtps_sinit.c
+* @addtogroup wdtps_v3_0
+* @{
*
* This file contains method for static initialization (compile-time) of the
* driver.
@@ -91,3 +93,4 @@ XWdtPs_Config *XWdtPs_LookupConfig(u16 DeviceId)
}
return (XWdtPs_Config *)CfgPtr;
}
+/** @} */
diff --git a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/zdma_v1_0/src/xzdma_hw.h b/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/zdma_v1_0/src/xzdma_hw.h
deleted file mode 100644
index 22a006e19..000000000
--- a/FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53_bsp/psu_cortexa53_0/libsrc/zdma_v1_0/src/xzdma_hw.h
+++ /dev/null
@@ -1,380 +0,0 @@
-/******************************************************************************
-*
-* Copyright (C) 2014 Xilinx, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documentation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* Use of the Software is limited solely to applications:
-* (a) running on a Xilinx device, or
-* (b) that interact with a Xilinx device through a bus or interconnect.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*
-* Except as contained in this notice, the name of the Xilinx shall not be used
-* in advertising or otherwise to promote the sale, use or other dealings in
-* this Software without prior written authorization from Xilinx.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xzdma_hw.h
-*
-* This header file contains identifiers and register-level driver functions (or
-* macros) that can be used to access the Xilinx ZDMA core.
-*
-*
-* MODIFICATION HISTORY:
-*
-* Ver Who Date Changes
-* ----- ------ -------- ------------------------------------------------------
-* 1.0 vns 2/27/15 First release
-*
-Bypasses the PLL clock. The usable clock will be determined from the POST_SRC field. (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Bypasses the PLL clock. The usable clock will be determined from the POST_SRC field. (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Bypasses the PLL clock. The usable clock will be determined from the POST_SRC field. (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Bypasses the PLL clock. The usable clock will be determined from the POST_SRC field. (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Bypasses the PLL clock. The usable clock will be determined from the POST_SRC field. (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Bypasses the PLL clock. The usable clock will be determined from the POST_SRC field. (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Bypasses the PLL clock. The usable clock will be determined from the POST_SRC field. (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Bypasses the PLL clock. The usable clock will be determined from the POST_SRC field. (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Bypasses the PLL clock. The usable clock will be determined from the POST_SRC field. (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Bypasses the PLL clock. The usable clock will be determined from the POST_SRC field. (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_GEM0_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-2
-
-
-20000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_GEM0_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-28
-
-
-2800
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_GEM0_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_GEM1_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-2
-
-
-20000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_GEM1_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-28
-
-
-2800
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_GEM1_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_GEM2_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-2
-
-
-20000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_GEM2_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-28
-
-
-2800
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_GEM2_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_GEM3_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-2
-
-
-20000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_GEM3_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-28
-
-
-2800
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_GEM3_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_USB0_BUS_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-1
-
-
-10000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_USB0_BUS_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-32
-
-
-3200
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_USB0_BUS_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_USB3_DUAL_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-1
-
-
-10000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_USB3_DUAL_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-8
-
-
-800
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_USB3_DUAL_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL. (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_QSPI_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-2
-
-
-20000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_QSPI_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-32
-
-
-3200
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_QSPI_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_SDIO0_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-2
-
-
-20000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_SDIO0_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-32
-
-
-3200
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_SDIO0_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = VPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_SDIO1_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-2
-
-
-20000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_SDIO1_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-32
-
-
-3200
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_SDIO1_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = VPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_UART0_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-2
-
-
-20000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_UART0_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-28
-
-
-2800
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_UART0_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_UART1_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-2
-
-
-20000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_UART1_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-28
-
-
-2800
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_UART1_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_I2C0_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-2
-
-
-20000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_I2C0_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-28
-
-
-2800
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_I2C0_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_I2C1_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-a
-
-
-a0000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_I2C1_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-32
-
-
-3200
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_I2C1_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_SPI0_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-2
-
-
-20000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_SPI0_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-28
-
-
-2800
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_SPI0_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_SPI1_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-a
-
-
-a0000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_SPI1_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-32
-
-
-3200
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_SPI1_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_CAN0_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-2
-
-
-20000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_CAN0_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-28
-
-
-2800
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_CAN0_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_CAN1_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-2
-
-
-20000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_CAN1_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-28
-
-
-2800
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_CAN1_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_CPU_R5_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-3f
-
-
-3f00
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_CPU_R5_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-2
-
-
-2
-
-
-000 = RPLL; 010 = IOPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_IOU_SWITCH_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-6
-
-
-600
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_IOU_SWITCH_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = RPLL; 010 = IOPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_PCAP_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-8
-
-
-800
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_PCAP_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_LPD_SWITCH_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-4
-
-
-400
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_LPD_SWITCH_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-2
-
-
-2
-
-
-000 = RPLL; 010 = IOPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_LPD_LSBUS_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-14
-
-
-1400
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_LPD_LSBUS_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-2
-
-
-2
-
-
-000 = RPLL; 010 = IOPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_DBG_LPD_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-3f
-
-
-3f00
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_DBG_LPD_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = RPLL; 010 = IOPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_NAND_REF_CTRL_DIVISOR1
-
-
-21:16
-
-
-3f0000
-
-
-2
-
-
-20000
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_NAND_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-32
-
-
-3200
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_NAND_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-0
-
-
-0
-
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Clock active signal. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRL_APB_ADMA_REF_CTRL_DIVISOR0
-
-
-13:8
-
-
-3f00
-
-
-4
-
-
-400
-
-
-6 bit divider
-
-
-
-
-PSU_CRL_APB_ADMA_REF_CTRL_SRCSEL
-
-
-2:0
-
-
-7
-
-
-2
-
-
-2
-
-
-000 = RPLL; 010 = IOPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-000 = RPLL; 010 = IOPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-
-
-
-PSU_CRL_APB_AMS_REF_CTRL_CLKACT
-
-
-24:24
-
-
-1000000
-
-
-1
-
-
-1000000
-
-
-Clock active signal. Switch to 0 to disable the clock
-
-000 = IOPLL; 001 = RPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-1XX = pss_ref_clk; 000 = RPLL; 010 = IOPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-
-
-
-PSU_CRL_APB_TIMESTAMP_REF_CTRL_CLKACT
-
-
-24:24
-
-
-1000000
-
-
-1
-
-
-1000000
-
-
-Clock active signal. Switch to 0 to disable the clock
-
-000 = IOPLL; 010 = RPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-
-
-
-PSU_CRF_APB_PCIE_REF_CTRL_CLKACT
-
-
-24:24
-
-
-1000000
-
-
-1
-
-
-1000000
-
-
-Clock active signal. Switch to 0 to disable the clock
-
-000 = VPLL; 010 = DPLL; 011 = RPLL - might be using extra mux; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-
-
-
-PSU_CRF_APB_DP_VIDEO_REF_CTRL_CLKACT
-
-
-24:24
-
-
-1000000
-
-
-1
-
-
-1000000
-
-
-Clock active signal. Switch to 0 to disable the clock
-
-000 = VPLL; 010 = DPLL; 011 = RPLL - might be using extra mux; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-
-
-
-PSU_CRF_APB_DP_AUDIO_REF_CTRL_CLKACT
-
-
-24:24
-
-
-1000000
-
-
-1
-
-
-1000000
-
-
-Clock active signal. Switch to 0 to disable the clock
-
-000 = VPLL; 010 = DPLL; 011 = RPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-
-
-
-PSU_CRF_APB_DP_STC_REF_CTRL_CLKACT
-
-
-24:24
-
-
-1000000
-
-
-1
-
-
-1000000
-
-
-Clock active signal. Switch to 0 to disable the clock
-
-000 = APLL; 010 = DPLL; 011 = VPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-
-
-
-PSU_CRF_APB_ACPU_CTRL_CLKACT_HALF
-
-
-25:25
-
-
-2000000
-
-
-1
-
-
-2000000
-
-
-Clock active signal. Switch to 0 to disable the clock. For the half speed APU Clock
-
-
-
-
-PSU_CRF_APB_ACPU_CTRL_CLKACT_FULL
-
-
-24:24
-
-
-1000000
-
-
-1
-
-
-1000000
-
-
-Clock active signal. Switch to 0 to disable the clock. For the full speed ACPUX Clock. This will shut off the high speed clock to the entire APU
-
-000 = IOPLL; 010 = DPLL; 011 = APLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-
-
-
-PSU_CRF_APB_DBG_TRACE_CTRL_CLKACT
-
-
-24:24
-
-
-1000000
-
-
-1
-
-
-1000000
-
-
-Clock active signal. Switch to 0 to disable the clock
-
-000 = IOPLL; 010 = DPLL; 011 = APLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-
-
-
-PSU_CRF_APB_DBG_FPD_CTRL_CLKACT
-
-
-24:24
-
-
-1000000
-
-
-1
-
-
-1000000
-
-
-Clock active signal. Switch to 0 to disable the clock
-
-000 = DPLL; 001 = VPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-000 = IOPLL; 010 = VPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-
-
-
-PSU_CRF_APB_GPU_REF_CTRL_CLKACT
-
-
-24:24
-
-
-1000000
-
-
-1
-
-
-1000000
-
-
-Clock active signal. Switch to 0 to disable the clock. Will stop clock for both Pixel Processors below
-
-
-
-
-PSU_CRF_APB_GPU_REF_CTRL_PP0_CLKACT
-
-
-25:25
-
-
-2000000
-
-
-1
-
-
-2000000
-
-
-Clock active signal for Pixel Processor. Switch to 0 to disable the clock
-
-
-
-
-PSU_CRF_APB_GPU_REF_CTRL_PP1_CLKACT
-
-
-26:26
-
-
-4000000
-
-
-1
-
-
-4000000
-
-
-Clock active signal for Pixel Processor. Switch to 0 to disable the clock
-
-000 = APLL; 010 = VPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-
-
-
-PSU_CRF_APB_GDMA_REF_CTRL_CLKACT
-
-
-24:24
-
-
-1000000
-
-
-1
-
-
-1000000
-
-
-Clock active signal. Switch to 0 to disable the clock
-
-000 = APLL; 010 = VPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-
-
-
-PSU_CRF_APB_DPDMA_REF_CTRL_CLKACT
-
-
-24:24
-
-
-1000000
-
-
-1
-
-
-1000000
-
-
-Clock active signal. Switch to 0 to disable the clock
-
-000 = APLL; 010 = VPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-
-
-
-PSU_CRF_APB_TOPSW_MAIN_CTRL_CLKACT
-
-
-24:24
-
-
-1000000
-
-
-1
-
-
-1000000
-
-
-Clock active signal. Switch to 0 to disable the clock
-
-000 = APLL; 010 = IOPLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-
-
-
-PSU_CRF_APB_TOPSW_LSBUS_CTRL_CLKACT
-
-
-24:24
-
-
-1000000
-
-
-1
-
-
-1000000
-
-
-Clock active signal. Switch to 0 to disable the clock
-
-000 = IOPLL; 010 = APLL; 011 = DPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-
-
-
-PSU_CRF_APB_GTGREF0_REF_CTRL_CLKACT
-
-
-24:24
-
-
-1000000
-
-
-1
-
-
-1000000
-
-
-Clock active signal. Switch to 0 to disable the clock
-
-000 = APLL; 010 = DPLL; 011 = VPLL; (This signal may only be toggled after 4 cycles of the old clock and 4 cycles of the new clock. This is not usually an issue, but designers must be aware.)
-
-Level 1 Mux Select 0= Level 2 Mux Output 1= usb1, Input, usb1_ulpi_nxt- (Data flow control signal from the PHY)
-
-
-
-
-PSU_IOU_SLCR_MIO_PIN_67_L2_SEL
-
-
-4:3
-
-
-18
-
-
-1
-
-
-8
-
-
-Level 2 Mux Select 0= Level 3 Mux Output 1= sd0, Input, sd0_data_in[0]- (8-bit Data bus) = sd0, Output, sdio0_data_out[0]- (8-bit Data bus) 2= Not Used 3= Not Used
-
-Level 2 Mux Select 0= Level 3 Mux Output 1= sd0, Input, sd0_data_in[1]- (8-bit Data bus) = sd0, Output, sdio0_data_out[1]- (8-bit Data bus) 2= Not Used 3= Not Used
-
-I2C Loopback Control. 0 = Connect I2C inputs according to MIO mapping. 1 = Loop I2C 0 outputs to I2C 1 inputs, and I2C 1 outputs to I2C 0 inputs.
-
-
-
-
-PSU_IOU_SLCR_MIO_LOOPBACK_CAN0_LOOP_CAN1
-
-
-2:2
-
-
-4
-
-
-0
-
-
-0
-
-
-CAN Loopback Control. 0 = Connect CAN inputs according to MIO mapping. 1 = Loop CAN 0 Tx to CAN 1 Rx, and CAN 1 Tx to CAN 0 Rx.
-
-
-
-
-PSU_IOU_SLCR_MIO_LOOPBACK_UA0_LOOP_UA1
-
-
-1:1
-
-
-2
-
-
-0
-
-
-0
-
-
-UART Loopback Control. 0 = Connect UART inputs according to MIO mapping. 1 = Loop UART 0 outputs to UART 1 inputs, and UART 1 outputs to UART 0 inputs. RXD/TXD cross-connected. RTS/CTS cross-connected. DSR, DTR, DCD and RI not used.
-
-
-
-
-PSU_IOU_SLCR_MIO_LOOPBACK_SPI0_LOOP_SPI1
-
-
-0:0
-
-
-1
-
-
-0
-
-
-0
-
-
-SPI Loopback Control. 0 = Connect SPI inputs according to MIO mapping. 1 = Loop SPI 0 outputs to SPI 1 inputs, and SPI 1 outputs to SPI 0 inputs. The other SPI core will appear on the LS Slave Select.
-
-Stop transmitter break: 0: no affect 1: stop transmission of the break after a minimum of one character length and transmit a high level during 12 bit periods. It can be set regardless of the value of STTBRK.
-
-
-
-
-PSU_UART0_CONTROL_REG0_STTBRK
-
-
-7:7
-
-
-80
-
-
-0
-
-
-0
-
-
-Start transmitter break: 0: no affect 1: start to transmit a break after the characters currently present in the FIFO and the transmit shift register have been transmitted. It can only be set if STPBRK (Stop transmitter break) is not high.
-
-
-
-
-PSU_UART0_CONTROL_REG0_RSTTO
-
-
-6:6
-
-
-40
-
-
-0
-
-
-0
-
-
-Restart receiver timeout counter: 1: receiver timeout counter is restarted. This bit is self clearing once the restart has completed.
-
-Transmit enable: 0: disable transmitter 1: enable transmitter, provided the TXDIS field is set to 0.
-
-
-
-
-PSU_UART0_CONTROL_REG0_RXDIS
-
-
-3:3
-
-
-8
-
-
-0
-
-
-0
-
-
-Receive disable: 0: enable 1: disable, regardless of the value of RXEN
-
-
-
-
-PSU_UART0_CONTROL_REG0_RXEN
-
-
-2:2
-
-
-4
-
-
-1
-
-
-4
-
-
-Receive enable: 0: disable 1: enable When set to one, the receiver logic is enabled, provided the RXDIS field is set to zero.
-
-
-
-
-PSU_UART0_CONTROL_REG0_TXRES
-
-
-1:1
-
-
-2
-
-
-1
-
-
-2
-
-
-Software reset for Tx data path: 0: no affect 1: transmitter logic is reset and all pending transmitter data is discarded This bit is self clearing once the reset has completed.
-
-
-
-
-PSU_UART0_CONTROL_REG0_RXRES
-
-
-0:0
-
-
-1
-
-
-1
-
-
-1
-
-
-Software reset for Rx data path: 0: no affect 1: receiver logic is reset and all pending receiver data is discarded. This bit is self clearing once the reset has completed.
-
-Channel mode: Defines the mode of operation of the UART. 00: normal 01: automatic echo 10: local loopback 11: remote loopback
-
-
-
-
-PSU_UART0_MODE_REG0_NBSTOP
-
-
-7:6
-
-
-c0
-
-
-0
-
-
-0
-
-
-Number of stop bits: Defines the number of stop bits to detect on receive and to generate on transmit. 00: 1 stop bit 01: 1.5 stop bits 10: 2 stop bits 11: reserved
-
-
-
-
-PSU_UART0_MODE_REG0_PAR
-
-
-5:3
-
-
-38
-
-
-4
-
-
-20
-
-
-Parity type select: Defines the expected parity to check on receive and the parity to generate on transmit. 000: even parity 001: odd parity 010: forced to 0 parity (space) 011: forced to 1 parity (mark) 1xx: no parity
-
-
-
-
-PSU_UART0_MODE_REG0_CHRL
-
-
-2:1
-
-
-6
-
-
-0
-
-
-0
-
-
-Character length select: Defines the number of bits in each character. 11: 6 bits 10: 7 bits 0x: 8 bits
-
-
-
-
-PSU_UART0_MODE_REG0_CLKS
-
-
-0:0
-
-
-1
-
-
-0
-
-
-0
-
-
-Clock source select: This field defines whether a pre-scalar of 8 is applied to the baud rate generator input clock. 0: clock source is uart_ref_clk 1: clock source is uart_ref_clk/8
-
-Stop transmitter break: 0: no affect 1: stop transmission of the break after a minimum of one character length and transmit a high level during 12 bit periods. It can be set regardless of the value of STTBRK.
-
-
-
-
-PSU_UART1_CONTROL_REG0_STTBRK
-
-
-7:7
-
-
-80
-
-
-0
-
-
-0
-
-
-Start transmitter break: 0: no affect 1: start to transmit a break after the characters currently present in the FIFO and the transmit shift register have been transmitted. It can only be set if STPBRK (Stop transmitter break) is not high.
-
-
-
-
-PSU_UART1_CONTROL_REG0_RSTTO
-
-
-6:6
-
-
-40
-
-
-0
-
-
-0
-
-
-Restart receiver timeout counter: 1: receiver timeout counter is restarted. This bit is self clearing once the restart has completed.
-
-Transmit enable: 0: disable transmitter 1: enable transmitter, provided the TXDIS field is set to 0.
-
-
-
-
-PSU_UART1_CONTROL_REG0_RXDIS
-
-
-3:3
-
-
-8
-
-
-0
-
-
-0
-
-
-Receive disable: 0: enable 1: disable, regardless of the value of RXEN
-
-
-
-
-PSU_UART1_CONTROL_REG0_RXEN
-
-
-2:2
-
-
-4
-
-
-1
-
-
-4
-
-
-Receive enable: 0: disable 1: enable When set to one, the receiver logic is enabled, provided the RXDIS field is set to zero.
-
-
-
-
-PSU_UART1_CONTROL_REG0_TXRES
-
-
-1:1
-
-
-2
-
-
-1
-
-
-2
-
-
-Software reset for Tx data path: 0: no affect 1: transmitter logic is reset and all pending transmitter data is discarded This bit is self clearing once the reset has completed.
-
-
-
-
-PSU_UART1_CONTROL_REG0_RXRES
-
-
-0:0
-
-
-1
-
-
-1
-
-
-1
-
-
-Software reset for Rx data path: 0: no affect 1: receiver logic is reset and all pending receiver data is discarded. This bit is self clearing once the reset has completed.
-
-Channel mode: Defines the mode of operation of the UART. 00: normal 01: automatic echo 10: local loopback 11: remote loopback
-
-
-
-
-PSU_UART1_MODE_REG0_NBSTOP
-
-
-7:6
-
-
-c0
-
-
-0
-
-
-0
-
-
-Number of stop bits: Defines the number of stop bits to detect on receive and to generate on transmit. 00: 1 stop bit 01: 1.5 stop bits 10: 2 stop bits 11: reserved
-
-
-
-
-PSU_UART1_MODE_REG0_PAR
-
-
-5:3
-
-
-38
-
-
-4
-
-
-20
-
-
-Parity type select: Defines the expected parity to check on receive and the parity to generate on transmit. 000: even parity 001: odd parity 010: forced to 0 parity (space) 011: forced to 1 parity (mark) 1xx: no parity
-
-
-
-
-PSU_UART1_MODE_REG0_CHRL
-
-
-2:1
-
-
-6
-
-
-0
-
-
-0
-
-
-Character length select: Defines the number of bits in each character. 11: 6 bits 10: 7 bits 0x: 8 bits
-
-
-
-
-PSU_UART1_MODE_REG0_CLKS
-
-
-0:0
-
-
-1
-
-
-0
-
-
-0
-
-
-Clock source select: This field defines whether a pre-scalar of 8 is applied to the baud rate generator input clock. 0: clock source is uart_ref_clk 1: clock source is uart_ref_clk/8
-