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