PERFORCE change 178943 for review
Jakub Wojciech Klama
jceel at FreeBSD.org
Fri May 28 22:50:56 UTC 2010
http://p4web.freebsd.org/@@178943?ac=10
Change 178943 by jceel at jceel on 2010/05/28 22:49:59
Provide first proof-of-concept of DMA engine framework. This code includes:
* early interface for DMA engine drivers,
* early, but working DaVinci EDMA driver,
* char device driver to test some transfers
Affected files ...
.. //depot/projects/soc2010/jceel_dma/sys/arm/conf/DAVINCI#2 edit
.. //depot/projects/soc2010/jceel_dma/sys/arm/davinci/davinci_devices.c#2 edit
.. //depot/projects/soc2010/jceel_dma/sys/arm/davinci/davinci_edma.c#1 add
.. //depot/projects/soc2010/jceel_dma/sys/arm/davinci/davinci_edmareg.h#2 edit
.. //depot/projects/soc2010/jceel_dma/sys/arm/davinci/davincireg.h#2 edit
.. //depot/projects/soc2010/jceel_dma/sys/arm/davinci/files.davinci#2 edit
.. //depot/projects/soc2010/jceel_dma/sys/conf/files#2 edit
.. //depot/projects/soc2010/jceel_dma/sys/dev/dmae/dmae.c#1 add
.. //depot/projects/soc2010/jceel_dma/sys/dev/dmae/dmae.h#1 add
.. //depot/projects/soc2010/jceel_dma/sys/dev/dmae/dmae_cdev.c#1 add
.. //depot/projects/soc2010/jceel_dma/sys/dev/dmae/dmae_cdev.h#1 add
.. //depot/projects/soc2010/jceel_dma/sys/dev/dmae/dmae_if.m#1 add
.. //depot/projects/soc2010/jceel_dma/sys/dev/dmae/dmae_sw.c#1 add
Differences ...
==== //depot/projects/soc2010/jceel_dma/sys/arm/conf/DAVINCI#2 (text+ko) ====
@@ -69,7 +69,10 @@
# Storage
device ata
device atadisk
-#device dvata # broken
device mmc
device mmcsd
device dvmmc
+
+# DMAE
+device dmae
+device edma
==== //depot/projects/soc2010/jceel_dma/sys/arm/davinci/davinci_devices.c#2 (text+ko) ====
@@ -63,6 +63,12 @@
{ DAVINCI_MMCINT, -1 },
{ DAVINCI_PSC_MMC_IDX, -1 },
},
+ { "edma", DAVINCI_EDMA_BASE, DAVINCI_EDMA_SIZE,
+ { DAVINCI_EDMA3CC_INT0, DAVINCI_EDMA3CC_ERRINT,
+ DAVINCI_EDMA3TC_ERRINT0, DAVINCI_EDMA3TC_ERRINT1, -1 },
+ { DAVINCI_PSC_EDMACC_IDX, DAVINCI_PSC_EDMATC0_IDX,
+ DAVINCI_PSC_EDMATC1_IDX, -1 },
+ },
{ .od_name = NULL, }
};
==== //depot/projects/soc2010/jceel_dma/sys/arm/davinci/davinci_edmareg.h#2 (text+ko) ====
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2010 Semihalf, Jakub Klama
+ * Copyright (c) 2010 Jakub Wojciech Klama <jceel at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -22,22 +22,26 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
*/
#ifndef _ARM_DAVINCI_DAVINCI_EDMAREG_H
#define _ARM_DAVINCI_DAVINCI_EDMAREG_H
+#define DAVINCI_EDMA_NCHANNELS 64
+
+#define DAVINCI_EDMACC_BASE 0x0
#define DAVINCI_EDMACC_PID 0x00
#define DAVINCI_EDMACC_CCCFG 0x04
#define DAVINCI_EDMACC_QCHMAP0 0x200
#define DAVINCI_EDMACC_QCHMAPn(_n) (DAVINCI_EDMACC_QCHMAP0 + (_n * 4))
#define DAVINCI_EDMACC_DMAQNUM0 0x240
-#define DAVINCI_EDMACC_DMAQNUMn(_n) DAVINCI_EDMACC_DMAQNUM0 + (_n * 4))
+#define DAVINCI_EDMACC_DMAQNUMn(_n) (DAVINCI_EDMACC_DMAQNUM0 + (_n * 4))
#define DAVINCI_EDMACC_QDMAQNUM 0x260
#define DAVINCI_EDMACC_QUEPRI 0x284
#define DAVINCI_EDMACC_EMR 0x300
#define DAVINCI_EDMACC_EMRH 0x304
-#define DAVINCI_EDMACC_EMRC 0x308
+#define DAVINCI_EDMACC_EMCR 0x308
#define DAVINCI_EDMACC_EMCRH 0x30C
#define DAVINCI_EDMACC_QEMR 0x310
#define DAVINCI_EDMACC_QEMCR 0x314
@@ -64,7 +68,7 @@
#define DAVINCI_EDMACC_ER 0x1000
#define DAVINCI_EDMACC_ERH 0x1004
#define DAVINCI_EDMACC_ECR 0x1008
-#define DAVINCI_EDMACC_ECRH 0X100C
+#define DAVINCI_EDMACC_ECRH 0x100C
#define DAVINCI_EDMACC_ESR 0x1010
#define DAVINCI_EDMACC_ESRH 0x1014
#define DAVINCI_EDMACC_CER 0x1018
@@ -73,7 +77,7 @@
#define DAVINCI_EDMACC_CEERH 0x1024
#define DAVINCI_EDMACC_EECR 0x1028
#define DAVINCI_EDMACC_EECRH 0x102C
-#define DAVINCI_EDMACC_EESR 0X1030
+#define DAVINCI_EDMACC_EESR 0x1030
#define DAVINCI_EDMACC_EESRH 0x1034
#define DAVINCI_EDMACC_SER 0x1038
#define DAVINCI_EDMACC_SERH 0x103C
@@ -86,7 +90,7 @@
#define DAVINCI_EDMACC_IESR 0x1060
#define DAVINCI_EDMACC_IESRH 0x1064
#define DAVINCI_EDMACC_IPR 0x1068
-#define DAVINCI_EDMACC_IPRH 0X106C
+#define DAVINCI_EDMACC_IPRH 0x106C
#define DAVINCI_EDMACC_ICR 0x1070
#define DAVINCI_EDMACC_ICRH 0x1074
#define DAVINCI_EDMACC_IEVAL 0x1078
@@ -97,6 +101,8 @@
#define DAVINCI_EDMACC_QSER 0x1090
#define DAVINCI_EDMACC_QSECR 0x1094
+#define DAVINCI_EDMATC0_BASE 0x10000
+#define DAVINCI_EDMATC1_BASE 0x10400
#define DAVINCI_EDMATC_PID 0x00
#define DAVINCI_EDMATC_TCCFG 0x04
#define DAVINCI_EDMATC_TCSTAT 0x100
@@ -131,6 +137,9 @@
uint32_t edma_link;
uint32_t edma_cidx;
uint32_t edma_ccnt;
-};
+} __packed;
+
+#define DAVINCI_EDMA_PARAM_BASE 0x4000
+#define DAVINCI_EDMA_PARAM(_n) (DAVINCI_EDMA_PARAM_BASE + (_n * sizeof(struct davinci_edma_desc)))
#endif /* _ARM_DAVINCI_DAVINCI_EDMAREG_H */
==== //depot/projects/soc2010/jceel_dma/sys/arm/davinci/davincireg.h#2 (text+ko) ====
@@ -36,9 +36,6 @@
* (page 21)
*/
#define DAVINCI_EDMA_BASE (DAVINCI_CFGBUS_BASE + 0x0)
-#define DAVINCI_EDMACC_BASE (DAVINCI_CFGBUS_BASE + 0x0)
-#define DAVINCI_EDMATC0_BASE (DAVINCI_CFGBUS_BASE + 0x10000)
-#define DAVINCI_EDMATC1_BASE (DAVINCI_CFGBUS_BASE + 0x10400)
#define DAVINCI_EDMA_SIZE 0x10800
#define DAVINCI_UART0_BASE (DAVINCI_CFGBUS_BASE + 0x20000)
==== //depot/projects/soc2010/jceel_dma/sys/arm/davinci/files.davinci#2 (text+ko) ====
@@ -17,3 +17,4 @@
arm/davinci/if_dve.c optional dve
arm/davinci/davinci_ata.c optional dvata
arm/davinci/davinci_mmc.c optional dvmmc
+arm/davinci/davinci_edma.c optional edma
==== //depot/projects/soc2010/jceel_dma/sys/conf/files#2 (text+ko) ====
@@ -838,6 +838,9 @@
dev/digi/digi.c optional digi
dev/digi/digi_isa.c optional digi isa
dev/digi/digi_pci.c optional digi pci
+dev/dmae/dmae.c optional dmae
+dev/dmae/dmae_cdev.c optional dmae
+dev/dmae/dmae_if.m optional dmae
dev/dpt/dpt_eisa.c optional dpt eisa
dev/dpt/dpt_pci.c optional dpt pci
dev/dpt/dpt_scsi.c optional dpt
More information about the p4-projects
mailing list