dma.h
来自「for mips adm5120 uclibc-0.9.19 toolchain」· C头文件 代码 · 共 241 行
H
241 行
#ifndef __IDT_DMA_H__#define __IDT_DMA_H__/******************************************************************************* * * Copyright 2002 Integrated Device Technology, Inc. * All rights reserved. * * DMA register definition. * * File : $Id: dma.h,v 1.1 2004/10/15 12:47:26 brianc Exp $ * * Author : ryan.holmQVist@idt.com * Date : 20011005 * Update : * $Log: dma.h,v $ * Revision 1.1 2004/10/15 12:47:26 brianc * Readd the file * * Revision 1.1.1.1 2004/03/29 00:54:44 daniell * Initialized the project * * Revision 1.2 2003/07/30 18:20:38 stevel * MR: 1-2IQL9 * * Add IDT and ATI Xilleon LSP's, and update related drivers. * * Revision 1.1.2.1 2003/02/15 00:06:01 stevel * New IDT board support: 79EB438 and 79RP355. Also support for * boot from PROM on 79S334A, 79EB355, 79RP355, and 79EB438. * * Revision 1.3 2002/06/06 18:34:03 astichte * Added XXX_PhysicalAddress and XXX_VirtualAddress * * Revision 1.2 2002/06/05 18:30:46 astichte * Removed IDTField * * Revision 1.1 2002/05/29 17:33:21 sysarch * jba File moved from vcode/include/idt/acacia * * ******************************************************************************/enum{ DMA0_PhysicalAddress = 0x18040000, DMA_PhysicalAddress = DMA0_PhysicalAddress, // Default DMA0_VirtualAddress = 0xb8040000, DMA_VirtualAddress = DMA0_VirtualAddress, // Default} ;/* * DMA descriptor (in physical memory). */typedef struct DMAD_s{ unsigned int control ; // Control. use DMAD_* unsigned int ca ; // Current Address. unsigned int devcs ; // Device control and status. unsigned int link ; // Next descriptor in chain.} volatile *DMAD_t ;enum{ DMAD_size = sizeof (struct DMAD_s), DMAD_count_b = 0, // in DMAD_t -> control DMAD_count_m = 0x0003ffff, // in DMAD_t -> control DMAD_ds_b = 20, // in DMAD_t -> control DMAD_ds_m = 0x00300000, // in DMAD_t -> control DMAD_ds_extToMem0_v = 0, DMAD_ds_memToExt0_v = 1, DMAD_ds_extToMem1_v = 0, DMAD_ds_memToExt1_v = 1, DMAD_ds_ethRcv0_v = 0, DMAD_ds_ethXmt0_v = 0, DMAD_ds_ethRcv1_v = 0, DMAD_ds_ethXmt2_v = 0, DMAD_ds_memToFifo_v = 0, DMAD_ds_fifoToMem_v = 0, DMAD_ds_rng_de_v = 1,//randomNumberGenerator on LC/DE DMAD_ds_pciToMem_v = 0, DMAD_ds_memToPci_v = 0, DMAD_ds_securityInput_v = 0, DMAD_ds_securityOutput_v = 0, DMAD_ds_rng_se_v = 0,//randomNumberGenerator on SE DMAD_devcmd_b = 22, // in DMAD_t -> control DMAD_devcmd_m = 0x01c00000, // in DMAD_t -> control DMAD_devcmd_byte_v = 0, //memory-to-memory DMAD_devcmd_halfword_v = 1, //memory-to-memory DMAD_devcmd_word_v = 2, //memory-to-memory DMAD_devcmd_2words_v = 3, //memory-to-memory DMAD_devcmd_4words_v = 4, //memory-to-memory DMAD_devcmd_6words_v = 5, //memory-to-memory DMAD_devcmd_8words_v = 6, //memory-to-memory DMAD_devcmd_16words_v = 7, //memory-to-memory DMAD_cof_b = 25, // chain on finished DMAD_cof_m = 0x02000000, // DMAD_cod_b = 26, // chain on done DMAD_cod_m = 0x04000000, // DMAD_iof_b = 27, // interrupt on finished DMAD_iof_m = 0x08000000, // DMAD_iod_b = 28, // interrupt on done DMAD_iod_m = 0x10000000, // DMAD_t_b = 29, // terminated DMAD_t_m = 0x20000000, // DMAD_d_b = 30, // done DMAD_d_m = 0x40000000, // DMAD_f_b = 31, // finished DMAD_f_m = 0x80000000, // } ;/* * DMA register (within Internal Register Map). */struct DMA_Chan_s{ unsigned int dmac ; // Control. unsigned int dmas ; // Status. unsigned int dmasm ; // Mask. unsigned int dmadptr ; // Descriptor pointer. unsigned int dmandptr ; // Next descriptor pointer.};typedef struct DMA_Chan_s volatile *DMA_Chan_t ;//DMA_Channels use DMACH_count insteadenum{ DMAC_run_b = 0, // DMAC_run_m = 0x00000001, // DMAC_dm_b = 1, // done mask DMAC_dm_m = 0x00000002, // DMAC_mode_b = 2, // DMAC_mode_m = 0x0000000c, // DMAC_mode_auto_v = 0, DMAC_mode_burst_v = 1, DMAC_mode_transfer_v = 2, //usually used DMAC_mode_reserved_v = 3, DMAC_a_b = 4, // DMAC_a_m = 0x00000010, // DMAS_f_b = 0, // finished (sticky) DMAS_f_m = 0x00000001, // DMAS_d_b = 1, // done (sticky) DMAS_d_m = 0x00000002, // DMAS_c_b = 2, // chain (sticky) DMAS_c_m = 0x00000004, // DMAS_e_b = 3, // error (sticky) DMAS_e_m = 0x00000008, // DMAS_h_b = 4, // halt (sticky) DMAS_h_m = 0x00000010, // DMASM_f_b = 0, // finished (1=mask) DMASM_f_m = 0x00000001, // DMASM_d_b = 1, // done (1=mask) DMASM_d_m = 0x00000002, // DMASM_c_b = 2, // chain (1=mask) DMASM_c_m = 0x00000004, // DMASM_e_b = 3, // error (1=mask) DMASM_e_m = 0x00000008, // DMASM_h_b = 4, // halt (1=mask) DMASM_h_m = 0x00000010, // } ;/* * DMA channel definitions */enum{ DMACH_extToMem0 = 0, DMACH_memToExt0 = 0, DMACH_extToMem1 = 1, DMACH_memToExt1 = 1, DMACH_ethRcv0 = 2, DMACH_ethXmt0 = 3, DMACH_ethRcv1 = 4, DMACH_ethXmt2 = 5, DMACH_memToFifo = 6, DMACH_fifoToMem = 7, DMACH_rng_de = 7,//randomNumberGenerator on LC/DE DMACH_pciToMem = 8, DMACH_memToPci = 9, DMACH_securityInput = 10, DMACH_securityOutput = 11, DMACH_rng_se = 12, //randomNumberGenerator on SE DMACH_count //must be last};typedef struct DMAC_s{ struct DMA_Chan_s ch [DMACH_count] ; //use ch[DMACH_]} volatile *DMA_t ;/* * External DMA parameters*/enum{ DMADEVCMD_ts_b = 0, // ts field in devcmd DMADEVCMD_ts_m = 0x00000007, // ts field in devcmd DMADEVCMD_ts_byte_v = 0, DMADEVCMD_ts_halfword_v = 1, DMADEVCMD_ts_word_v = 2, DMADEVCMD_ts_2word_v = 3, DMADEVCMD_ts_4word_v = 4, DMADEVCMD_ts_6word_v = 5, DMADEVCMD_ts_8word_v = 6, DMADEVCMD_ts_16word_v = 7};#if 1 // aws - Compatibility.# define EXTDMA_ts_b DMADEVCMD_ts_b# define EXTDMA_ts_m DMADEVCMD_ts_m# define EXTDMA_ts_byte_v DMADEVCMD_ts_byte_v# define EXTDMA_ts_halfword_v DMADEVCMD_ts_halfword_v# define EXTDMA_ts_word_v DMADEVCMD_ts_word_v# define EXTDMA_ts_2word_v DMADEVCMD_ts_2word_v# define EXTDMA_ts_4word_v DMADEVCMD_ts_4word_v# define EXTDMA_ts_6word_v DMADEVCMD_ts_6word_v# define EXTDMA_ts_8word_v DMADEVCMD_ts_8word_v# define EXTDMA_ts_16word_v DMADEVCMD_ts_16word_v#endif // aws - Compatibility.#endif // __IDT_DMA_H__
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?