⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comem_if.h

📁 一个amccs5933芯片的驱动程序开发源程序和部分文档
💻 H
📖 第 1 页 / 共 2 页
字号:
{
   unsigned long membase0;    // 0x00
   unsigned long memsize0;
   unsigned long unused_08;
   unsigned long unused_0c;

   unsigned long membase1;    // 0x10
   unsigned long memsize1;
   unsigned long unused_18;
   unsigned long unused_1c;

   unsigned long membase2;    // 0x20
   unsigned long memsize2;
   unsigned long unused_28;
   unsigned long unused_2c;

   unsigned long membase3;    // 0x30
   unsigned long memsize3;
   unsigned long unused_38;
   unsigned long unused_3c;

   unsigned long csbase0;     // 0x40
   unsigned long cssize0;
   unsigned long unused_48;
   unsigned long unused_4c;

   unsigned long csbase1;     // 0x50
   unsigned long cssize1;
   unsigned long unused_58;
   unsigned long unused_5c;

   unsigned long dahbase;     // 0x60
   unsigned long dasize;
   unsigned long dalbase;
   unsigned long unused_6c;

   unsigned long nfcmd;       // 0x70
   unsigned long unused_74;
   unsigned long unused_78;
   unsigned long unused_7c;

   unsigned long hmbase;      // 0x80
   unsigned long hmsize;
   unsigned long pfaddr;
   unsigned long unused_8;

   unsigned long opsbase;     // 0x90
   unsigned long unused_94;
   unsigned long unused_98;
   unsigned long unused_9c;

   unsigned long nvcmd;       // 0xa0
   unsigned long nvread;
   unsigned long nvstat;
   unsigned long unused_ac;

   unsigned long unused_b0;      // 0xb0
   unsigned long unused_b4;
   unsigned long unused_b8;
   unsigned long unused_bc;

   unsigned long unused_c0;      // 0xc0
   unsigned long unused_c4;
   unsigned long unused_c8;
   unsigned long unused_cc;

   unsigned long unused_d0;      // 0xd0
   unsigned long unused_d4;
   unsigned long unused_d8;
   unsigned long unused_dc;

   unsigned long hctl;        // 0xe0
   unsigned long hint;
   unsigned long hldata;
   unsigned long unused_ec;

   unsigned long lctl;        // 0xf0
   unsigned long lint;
   unsigned long lhdata;
   unsigned long unused_fc;
} comem_opsregs_struct;

struct nfcmd_struct
{
	unsigned long command : 4;
	unsigned long dcacheFlag : 1;
	unsigned long unused : 4;
	unsigned long addr : 15;
	unsigned long unused2 : 8;
};

struct hctl_struct
{
   unsigned long resetOut : 1;
   unsigned long unused   : 4;
   unsigned long debug    : 3;
   unsigned long ifill    : 2;
   unsigned long dfill    : 3;
   unsigned long dwrite   : 3;
   unsigned long unused2  : 16;
};

#define  NUM_HINT_INTERRUPTS  ( 9)

struct hint_struct
{
   unsigned long intType   : NUM_HINT_INTERRUPTS;
   unsigned long unused    : 4;
   unsigned long region    : 3;
   unsigned long intMask   : NUM_HINT_INTERRUPTS;
   unsigned long unused2   : 16-NUM_HINT_INTERRUPTS;
};

#define HINT_REGION_ACCESS 1
#define HINT_REGION_MISS   2	
#define HINT_PAGE_FAULT	   4
#define HINT_SW			   8
#define HINT_HW			   0x10
#define HINT_NAIL_DONE	   0x20
#define HINT_FLUSH_DONE	   0x40
#define HINT_NF_DONE	   (HINT_NAIL_DONE | HINT_FLUSH_DONE)
#define HINT_DCACHE_OV	   0x80
#define HINT_ICACHE_OV	   0x100
#define HINT_TYPE_MASK	   ONES_RANGE32(NUM_HINT_INTERRUPTS-1, 0)


struct hldata_struct
{
   unsigned long data    : 16;
   unsigned long unused  : 8;
   unsigned long intOut  : 1;
   unsigned long unused2 : 7;
};


struct lctl_struct
{
   unsigned long mode_486 : 1;
   unsigned long unused   : 15;
   unsigned long unused2  : 16;
};

#define  NUM_LINT_INTERRUPTS  ( 9)
struct lint_struct
{
   unsigned long intType   : NUM_LINT_INTERRUPTS;
   unsigned long unused    : 4;
   unsigned long region    : 3;
   unsigned long intMask   : NUM_LINT_INTERRUPTS;
   unsigned long unused2   : 16-NUM_LINT_INTERRUPTS;

};

struct lhdata_struct
{
   unsigned long data    : 16;
   unsigned long unused  : 8;
   unsigned long intOut  : 1;
   unsigned long unused2 : 7;
};

#define LCTL_486_MODE  1

#ifdef __cplusplus
const comem_opsregs_struct ops;
#define ops_offset(hmsize) ((&ops.hmsize-&ops.membase0) * sizeof(long))
#endif

#define NFCMD_INVALIDATE	8
#define NFCMD_FLUSH			9
#define NFCMD_NAIL_NOFILL	1
#define NFCMD_NONAIL_FILL	2
#define NFCMD_NAIL_FILL		3
#define NFCMD_UNNAIL		4
#define NFCMD_DCACHE		0x10
#define NFCMD_ICACHE		0x00
#define NFCMD_DATA_MASK		0xfffe00


//////////////////////////////////////////////////////////////////////
// VxD related values
//////////////////////////////////////////////////////////////////////
#include "comemdrv.h"

/////////////////////////////////////////////////////////////////////////////			 
// Vxd Interface functions
DWORD comemOpenDriver(DWORD comemID);
DWORD comemCloseDriver(DWORD comemID);
DWORD comemAllocMemory(AllocMemoryIn *in, AllocMemoryOut *out, DWORD comemID);
DWORD comemGetStatus(DWORD *refCount, DWORD comemID);
DWORD comemGetVersion();
DWORD comemGetPCIInfo(PCI_CONFIG_HEADER_0 *pciPtr, DWORD comemID);
DWORD comemSetPCIInfo(PCI_CONFIG_HEADER_0 *pciPtr, DWORD comemID);
DWORD comemDeallocMemory(DWORD comemID);
DWORD comemCreateLinPtr(DWORD comemID, AllocBlockAll *out);
DWORD comemDestroyLinPtr(DWORD comemID);
DWORD comemCreateBarPtr(DWORD linBAR[COMEM_MAX_BARS], DWORD *linPage, DWORD *physPage, DWORD comemID);
DWORD comemCopyBarPtr(DWORD linBAR[COMEM_MAX_BARS], DWORD *linPage, DWORD *physPage, DWORD comemID);                                                                            
DWORD comemDestroyBarPtr(DWORD comemID);

void nail(DWORD, DWORD, DWORD);

#define OPS ((comem_opsregs_struct *)(comemDev[comemID]->linBAR[1]))

enum errcodeE fake_write(DWORD addr, DWORD data, DWORD comemID);
int get_text_ini_parm(char *varptr,
   char *varname, const char *filename);
int get_hex_ini_parm(DWORD *varptr,
   char *varname, const char *filename);
void write_hex_ini_parm(char *lpKeyName, DWORD inData, const char* filename);
void write_text_ini_parm(char *lpKeyName, const char *inData, const char* filename);
void flush_ini(const char *filename);

#ifdef __cplusplus
const int COLUMN_PRIORITY = 0;
const int COLUMN_UPROC_START = 1;
const int COLUMN_UPROC_BLOCK = 2;
const int COLUMN_TYPE = 3;
const int COLUMN_ALLOCATION = 4;

const int ROW_OPS_REG = 0;
const int ROW_DA = 1;
const int ROW_CS = 2;
const int ROW_CACHE = 3;
inline int getRowType(int row)
{
	switch (row)
	{
		case 0:
			return ROW_OPS_REG;
		case 1:
			return ROW_DA;
		case 2:
		case 3:
			return ROW_CS;
		case 4:
		case 5:
		case 6:
		case 7:
			return ROW_CACHE;
		default:
			report_error("Bad row %d passed to getRowType.", row);
			return 0;
	}
}

static const char *priority[] = {"Ops regs", "Direct Access", "CS-0", "CS-1", "Memory 0", "Memory 1", "Memory 2", "Memory 3", "Unused area" };
static const char* cache_type[] = {"disabled", "RW prog", "RO prog", "RW data", "hardware"};
static const char* cs_type[] = {"disabled", "RDY in->out",
	"0 wait states",	"1 wait state",	"2 wait states",	"3 wait states",
	"4 wait states",	"5 wait states",	"6 wait states",	"7 wait states",
	"8 wait states",	"9 wait states",	"10 wait states",	"11 wait states",
	"12 wait states",	"13 wait states",	"14 wait states",	"15 wait states"};
static const char* da_type[] = {"disabled", "Int ACK/special", "I/O cycle", "Memory cycle", "Config cycle"};
static const char* ops_reg_type[] = {"No writes", "Limited access", "Full access"};
// spaces in "block size are intended to increase field width in the grid.
static const char* headers[] = {"Region  ", "Target addr", "block size    ", "Access type", "PCI addr  "};

extern const char *ini_file_name;
#endif // cplusplus


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -