Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/dma/ppc4xx/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 4 kB image not shown  

Quelle  dma.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * 440SPe's DMA engines support header file
 *
 * 2006-2009 (C) DENX Software Engineering.
 *
 * Author: Yuri Tikhonov <yur@emcraft.com>
 */


#ifndef _PPC440SPE_DMA_H
#define _PPC440SPE_DMA_H

#include <linux/types.h>

/* Number of elements in the array with statical CDBs */
#define MAX_STAT_DMA_CDBS 16
/* Number of DMA engines available on the controller */
#define DMA_ENGINES_NUM  2

/* Maximum h/w supported number of destinations */
#define DMA_DEST_MAX_NUM 2

/* FIFO's params */
#define DMA0_FIFO_SIZE  0x1000
#define DMA1_FIFO_SIZE  0x1000
#define DMA_FIFO_ENABLE  (1<<12)

/* DMA Configuration Register. Data Transfer Engine PLB Priority: */
#define DMA_CFG_DXEPR_LP (0<<26)
#define DMA_CFG_DXEPR_HP (3<<26)
#define DMA_CFG_DXEPR_HHP (2<<26)
#define DMA_CFG_DXEPR_HHHP (1<<26)

/* DMA Configuration Register. DMA FIFO Manager PLB Priority: */
#define DMA_CFG_DFMPP_LP (0<<23)
#define DMA_CFG_DFMPP_HP (3<<23)
#define DMA_CFG_DFMPP_HHP (2<<23)
#define DMA_CFG_DFMPP_HHHP (1<<23)

/* DMA Configuration Register. Force 64-byte Alignment */
#define DMA_CFG_FALGN  (1 << 19)

/*UIC0:*/
#define D0CPF_INT  (1<<12)
#define D0CSF_INT  (1<<11)
#define D1CPF_INT  (1<<10)
#define D1CSF_INT  (1<<9)
/*UIC1:*/
#define DMAE_INT  (1<<9)

/* I2O IOP Interrupt Mask Register */
#define I2O_IOPIM_P0SNE  (1<<3)
#define I2O_IOPIM_P0EM  (1<<5)
#define I2O_IOPIM_P1SNE  (1<<6)
#define I2O_IOPIM_P1EM  (1<<8)

/* DMA CDB fields */
#define DMA_CDB_MSK  (0xF)
#define DMA_CDB_64B_ADDR (1<<2)
#define DMA_CDB_NO_INT  (1<<3)
#define DMA_CDB_STATUS_MSK (0x3)
#define DMA_CDB_ADDR_MSK (0xFFFFFFF0)

/* DMA CDB OpCodes */
#define DMA_CDB_OPC_NO_OP (0x00)
#define DMA_CDB_OPC_MV_SG1_SG2 (0x01)
#define DMA_CDB_OPC_MULTICAST (0x05)
#define DMA_CDB_OPC_DFILL128 (0x24)
#define DMA_CDB_OPC_DCHECK128 (0x23)

#define DMA_CUED_XOR_BASE (0x10000000)
#define DMA_CUED_XOR_HB  (0x00000008)

#ifdef CONFIG_440SP
#define DMA_CUED_MULT1_OFF 0
#define DMA_CUED_MULT2_OFF 8
#define DMA_CUED_MULT3_OFF 16
#define DMA_CUED_REGION_OFF 24
#define DMA_CUED_XOR_WIN_MSK (0xFC000000)
#else
#define DMA_CUED_MULT1_OFF 2
#define DMA_CUED_MULT2_OFF 10
#define DMA_CUED_MULT3_OFF 18
#define DMA_CUED_REGION_OFF 26
#define DMA_CUED_XOR_WIN_MSK (0xF0000000)
#endif

#define DMA_CUED_REGION_MSK 0x3
#define DMA_RXOR123  0x0
#define DMA_RXOR124  0x1
#define DMA_RXOR125  0x2
#define DMA_RXOR12  0x3

/* S/G addresses */
#define DMA_CDB_SG_SRC  1
#define DMA_CDB_SG_DST1  2
#define DMA_CDB_SG_DST2  3

/*
 * DMAx engines Command Descriptor Block Type
 */

struct dma_cdb {
 /*
 * Basic CDB structure (Table 20-17, p.499, 440spe_um_1_22.pdf)
 */

 u8 pad0[2];        /* reserved */
 u8 attr;  /* attributes */
 u8 opc;  /* opcode */
 u32 sg1u;  /* upper SG1 address */
 u32 sg1l;  /* lower SG1 address */
 u32 cnt;  /* SG count, 3B used */
 u32 sg2u;  /* upper SG2 address */
 u32 sg2l;  /* lower SG2 address */
 u32 sg3u;  /* upper SG3 address */
 u32 sg3l;  /* lower SG3 address */
};

/*
 * DMAx hardware registers (p.515 in 440SPe UM 1.22)
 */

struct dma_regs {
 u32 cpfpl;
 u32 cpfph;
 u32 csfpl;
 u32 csfph;
 u32 dsts;
 u32 cfg;
 u8 pad0[0x8];
 u16 cpfhp;
 u16 cpftp;
 u16 csfhp;
 u16 csftp;
 u8 pad1[0x8];
 u32 acpl;
 u32 acph;
 u32 s1bpl;
 u32 s1bph;
 u32 s2bpl;
 u32 s2bph;
 u32 s3bpl;
 u32 s3bph;
 u8 pad2[0x10];
 u32 earl;
 u32 earh;
 u8 pad3[0x8];
 u32 seat;
 u32 sead;
 u32 op;
 u32 fsiz;
};

/*
 * I2O hardware registers (p.528 in 440SPe UM 1.22)
 */

struct i2o_regs {
 u32 ists;
 u32 iseat;
 u32 isead;
 u8 pad0[0x14];
 u32 idbel;
 u8 pad1[0xc];
 u32 ihis;
 u32 ihim;
 u8 pad2[0x8];
 u32 ihiq;
 u32 ihoq;
 u8 pad3[0x8];
 u32 iopis;
 u32 iopim;
 u32 iopiq;
 u8 iopoq;
 u8 pad4[3];
 u16 iiflh;
 u16 iiflt;
 u16 iiplh;
 u16 iiplt;
 u16 ioflh;
 u16 ioflt;
 u16 ioplh;
 u16 ioplt;
 u32 iidc;
 u32 ictl;
 u32 ifcpp;
 u8 pad5[0x4];
 u16 mfac0;
 u16 mfac1;
 u16 mfac2;
 u16 mfac3;
 u16 mfac4;
 u16 mfac5;
 u16 mfac6;
 u16 mfac7;
 u16 ifcfh;
 u16 ifcht;
 u8 pad6[0x4];
 u32 iifmc;
 u32 iodb;
 u32 iodbc;
 u32 ifbal;
 u32 ifbah;
 u32 ifsiz;
 u32 ispd0;
 u32 ispd1;
 u32 ispd2;
 u32 ispd3;
 u32 ihipl;
 u32 ihiph;
 u32 ihopl;
 u32 ihoph;
 u32 iiipl;
 u32 iiiph;
 u32 iiopl;
 u32 iioph;
 u32 ifcpl;
 u32 ifcph;
 u8 pad7[0x8];
 u32 iopt;
};

#endif /* _PPC440SPE_DMA_H */

Messung V0.5
C=88 H=86 G=86

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.