From 345bf56a82a444300347968d27b2dffdb6dd6523 Mon Sep 17 00:00:00 2001 From: plutooo Date: Sun, 15 Apr 2018 21:04:03 +0200 Subject: [PATCH] Added dma clear --- nx/include/switch/nvidia/cmds/dma_clear.h | 1 + nx/source/nvidia/cmds/dma_clear.c | 26 +++++++++++++++++++++++ nx/source/nvidia/cmds/dma_memset.c | 14 ------------ 3 files changed, 27 insertions(+), 14 deletions(-) create mode 100644 nx/source/nvidia/cmds/dma_clear.c delete mode 100644 nx/source/nvidia/cmds/dma_memset.c diff --git a/nx/include/switch/nvidia/cmds/dma_clear.h b/nx/include/switch/nvidia/cmds/dma_clear.h index 9317e090..29208ef7 100644 --- a/nx/include/switch/nvidia/cmds/dma_clear.h +++ b/nx/include/switch/nvidia/cmds/dma_clear.h @@ -1 +1,2 @@ void vnDmaClear32(Vn* vn, iova_t dst, u32 val, size_t size); +void vnDmaClear64(Vn* vn, iova_t dst, u64 val, size_t size); diff --git a/nx/source/nvidia/cmds/dma_clear.c b/nx/source/nvidia/cmds/dma_clear.c new file mode 100644 index 00000000..b0dad4f7 --- /dev/null +++ b/nx/source/nvidia/cmds/dma_clear.c @@ -0,0 +1,26 @@ +#include +#include + +void vnDmaClear32(Vn* vn, iova_t dst, u32 val, size_t size) { + vnAddCmd( + vn, + NvIncr(4, NvRegDma_RemapConstant, val), + NvIncr(4, NvRegDma_RemapControl, 0x30000 | (NvRegDmaRemapValue_Constant0 * 0x1111)), + NvIncr(4, NvRegDma_SourceAddr, dst>>32, dst, dst>>32, dst), + NvIncr(4, NvRegDma_DestinationWidth, size/4, 1), + NvIncr(4, NvRegDma_Count, size), + NvIncr(4, NvRegDma_Launch, 0x586) + ); +} + +void vnDmaClear64(Vn* vn, iova_t dst, u64 val, size_t size) { + vnAddCmd( + vn, + NvIncr(4, NvRegDma_RemapConstant, val, val>>32), + NvIncr(4, NvRegDma_RemapControl, 0x30000 | (NvRegDmaRemapValue_Constant0 * 0x1010) | (NvRegDmaRemapValue_Constant1 * 0x0101)), + NvIncr(4, NvRegDma_SourceAddr, dst>>32, dst, dst>>32, dst), + NvIncr(4, NvRegDma_DestinationWidth, size/4, 1), + NvIncr(4, NvRegDma_Count, size), + NvIncr(4, NvRegDma_Launch, 0x586) + ); +} diff --git a/nx/source/nvidia/cmds/dma_memset.c b/nx/source/nvidia/cmds/dma_memset.c deleted file mode 100644 index d9a2c7a2..00000000 --- a/nx/source/nvidia/cmds/dma_memset.c +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include - -void vnDmaClear32(Vn* vn, iova_t dst, u32 val, size_t size) { - vnAddCmd( - vn, - NvIncr(4, NvRegDma_RemapConstant, val), - NvIncr(4, NvRegDma_RemapControl, 0x30000 | (NvRegDmaRemapValue_Constant0 * 0x1111)), - NvIncr(4, NvRegDma_SourceAddr, dst>>32, dst, dst>>32, dst), - NvIncr(4, NvRegDma_DestinationWidth, size/4, 1), - NvIncr(4, NvRegDma_Count, size), - NvIncr(4, NvRegDma_Launch, 0x586) - ); -}