From owner-p4-projects@FreeBSD.ORG Fri May 28 22:50:56 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D76AA1065676; Fri, 28 May 2010 22:50:55 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9BD7E1065670 for ; Fri, 28 May 2010 22:50:55 +0000 (UTC) (envelope-from jceel@freebsd.org) Received: from repoman.freebsd.org (unknown [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 888B58FC08 for ; Fri, 28 May 2010 22:50:55 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id o4SMotLb023099 for ; Fri, 28 May 2010 22:50:55 GMT (envelope-from jceel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id o4SMot7A023097 for perforce@freebsd.org; Fri, 28 May 2010 22:50:55 GMT (envelope-from jceel@freebsd.org) Date: Fri, 28 May 2010 22:50:55 GMT Message-Id: <201005282250.o4SMot7A023097@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jceel@freebsd.org using -f From: Jakub Wojciech Klama To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 178943 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 22:50:56 -0000 http://p4web.freebsd.org/@@178943?ac=10 Change 178943 by jceel@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 * 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