vrc5074.h

来自「WinCE 3.0 BSP, 包含Inter SA1110, Intel_815」· C头文件 代码 · 共 321 行

H
321
字号
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
Copyright (c) 1995-1998  Microsoft Corporation

Module Name:

   Vrc5074.h

Abstract:

    Register and constant definitions for Vrc5074 memory controller chip

Notes:


--*/


#ifndef _VRC5074_H_
#define _VRC5074_H_

#define VRC5074_PCIVID              0x009B1033

//
// PDAR registers/fields
//

#define NILE4_SDRAM0                0x0000
#define NILE4_SDRAM1                0x0008
#define NILE4_DCS2                  0x0010
#define NILE4_DCS3                  0x0018
#define NILE4_DCS4                  0x0020
#define NILE4_DCS5                  0x0028
#define NILE4_DCS6                  0x0030
#define NILE4_DCS7                  0x0038
#define NILE4_DCS8                  0x0040
#define NILE4_PCIW0                 0x0060
#define NILE4_PCIW1                 0x0068
#define NILE4_INTCS                 0x0070
#define NILE4_BOOTCS                0x0078

#define NILE4_DSCFN                 0x0150

#define PDAR_4GB                    0x4
#define PDAR_2GB                    0x5
#define PDAR_1GB                    0x6
#define PDAR_512MB                  0x7
#define PDAR_256MB                  0x8
#define PDAR_128MB                  0x9
#define PDAR_64MB                   0xA
#define PDAR_32MB                   0xB
#define PDAR_16MB                   0xC
#define PDAR_8MB                    0xD
#define PDAR_4MB                    0xE
#define PDAR_2MB                    0xF

#define PDAR_MEMLOC                 (1<<4)
#define PDAR_VISPCI                 (1<<5)
#define PDAR_8BITS                  (0<<6)
#define PDAR_16BITS                 (1<<6)
#define PDAR_32BITS                 (2<<6)
#define PDAR_64BITS                 (3<<6)

/* CPU Interface Control Registers */

#define NILE4_CPUSTAT               0x0080
#define NILE4_INTCTRL               0x0088
 
#define NILE4_INTSTAT0              0x0090 
#define NILE4_INTSTAT1              0x0098
#define NILE4_INTCLR                0x00a0
#define NILE4_INTPPES               0x00a8

/* Main Memory Control Registers */

#define NILE4_MEMCTRL               0x00c0
#define NILE4_ACSTIME               0x00c8
#define NILE4_CHKERR                0x00d0

/* PCI Control Registers */

#define NILE4_PCICTRL               0x00e0
#define NILE4_PCIARB                0x00e8
#define NILE4_PCIINIT0              0x00f0
#define NILE4_PCIINIT1              0x00f8
#define NILE4_PCIERR                0x00b8

#define PCIINIT_ACCESS_32           (0x1<<4)
#define PCIINIT_CONFIGTYPE0         (0x0<<9)
#define PCIINIT_CONFIGTYPE1         (0x1<<9)
#define PCIINIT_TYPE_MEM            (0x6<<0)
#define PCIINIT_TYPE_IO             (0x2<<0)
#define PCIINIT_TYPE_CONFIG         (0xA<<0)
#define PCIINIT_TYPE_INTACK         (0x0<<0)

/* DMA Control Registers */

#define NILE4_DMACTRL0              0x0180
#define NILE4_DMASRCA0              0x0188
#define NILE4_DMADESA0              0x0190
#define NILE4_DMACTRL1              0x0198
#define NILE4_DMASRCA1              0x01a0
#define NILE4_DMADESA1              0x01a8

/* TIMER CONROL REGISTERS */

#define NILE4_T0CTRL                0x01c0
#define NILE4_T0CNTR                0x01c8
#define NILE4_T1CTRL                0x01d0
#define NILE4_T1CNTR                0x01d8
#define NILE4_T2CTRL                0x01e0
#define NILE4_T2CNTR                0x01e8
#define NILE4_T3CTRL                0x01f0
#define NILE4_T3CNTR                0x01f8

/* UART REGISTERS */

#define UART0_BASE                  0xbfa00300 /* nile4 com port */
/*#define UART0_BASE                0xa60003f8 */ /*m1543 com1 port */
#define NILE4_UARTRBR               0x0300
#define NILE4_UARTTHR               0x0300
#define NILE4_UARTIER               0x0308
#define NILE4_UARTDLL               0x0300
#define NILE4_UARTDLM               0x0308
#define NILE4_UARTIIR               0x0310
#define NILE4_UARTFCR               0x0310
#define NILE4_UARTLCR               0x0318
#define NILE4_UARTMCR               0x0320
#define NILE4_UARTLSR               0x0328
#define NILE4_UARTMSR               0x0330
#define NILE4_UARTSCR               0x0338

/* PCI CONFIG SPACE OF NILE4*/

#define NILE4_PCIVID                0x200
#define NILE4_PCICMD                0x204
#define NILE4_PCIREVID              0x208
#define NILE4_PCICLSIZ              0x20C
#define NILE4_BARC                  0x210 
#define NILE4_BAR0                  0x218
#define NILE4_BAR1                  0x220
#define NILE4_BAR2                  0x240
#define NILE4_BAR3                  0x248
#define NILE4_BAR4                  0x250
#define NILE4_BAR5                  0x258
#define NILE4_BAR6                  0x260
#define NILE4_BAR7                  0x268
#define NILE4_BAR8                  0x270
#define NILE4_BARB                  0x278

#ifndef ASSEMBLY_LANGUAGE

//
// register structure
//

typedef struct {
    union {
        volatile ULONG Low;
        volatile ULONG Lo;
    };
    union {
        volatile ULONG High;
        volatile ULONG Hi;
    };
} VRC5074_REG, *PVRC5074_REG;

typedef struct {
    union {
        UCHAR PDAR_Space[0x80];
        struct {
            VRC5074_REG SDRAM0;
            VRC5074_REG SDRAM1;
            VRC5074_REG DCS2;
            VRC5074_REG DCS3;
            VRC5074_REG DCS4;
            VRC5074_REG DCS5;
            VRC5074_REG DCS6;
            VRC5074_REG DCS7;
            VRC5074_REG DCS8;
            VRC5074_REG RFU9;
            VRC5074_REG RFUA;
            VRC5074_REG RFUB;
            VRC5074_REG PCIW0;
            VRC5074_REG PCIW1;
            VRC5074_REG INTCS;
            VRC5074_REG BOOTCS;
        };
    };

    union {
        UCHAR CPU_Registers[0xC0-0x80];
        struct {
            VRC5074_REG CPUSTAT;
            VRC5074_REG INTCTRL;
            VRC5074_REG INTSTAT0;
            VRC5074_REG INTSTAT1;
            VRC5074_REG INTCLR;
            VRC5074_REG INTPPES;
            VRC5074_REG RESERVED_0B0;
            VRC5074_REG PCIERR;
        };
    };

    union {
        UCHAR Memory_Registers[0xE0-0xC0];
        struct {
            VRC5074_REG MEMCTRL;
            VRC5074_REG ACSTIME;
            VRC5074_REG CHKERR;
        };
    };

    union {
        UCHAR PCIBus_Registers[0x100-0xE0];
        struct {
            VRC5074_REG PCICTRL;
            VRC5074_REG PCIARB;
            VRC5074_REG PCIINIT0;
            VRC5074_REG PCIINIT1;
        };
    };

    union {
        UCHAR LocalBus_Registers[0x180-0x100];
        struct {
            VRC5074_REG LCNFG;
            VRC5074_REG RESERVED_108;
            VRC5074_REG LCST2;
            VRC5074_REG LCST3;
            VRC5074_REG LCST4;
            VRC5074_REG LCST5;
            VRC5074_REG LCST6;
            VRC5074_REG LCST7;
            VRC5074_REG LCST8;
            VRC5074_REG RESERVED_148;
            VRC5074_REG DCSFN;
            VRC5074_REG DCSIO;
            VRC5074_REG RESERVED_160;
            VRC5074_REG RESERVED_168;
            VRC5074_REG RESERVED_170;
            VRC5074_REG BCST;
        };
    };

    union {
        UCHAR Dma_Registers[0x1C0-0x180];
        struct {
            VRC5074_REG DMACTRL0;
            VRC5074_REG DMASRCA0;
            VRC5074_REG DMADESA0;
            VRC5074_REG DMACTRL1;
            VRC5074_REG DMASRCA1;
            VRC5074_REG DMADESA1;
        };
    };

    union {
        UCHAR Timer_Registers[0x200-0x180];
        struct {
            VRC5074_REG T0CTRL;
            VRC5074_REG T0CNTR;
            VRC5074_REG T1CTRL;
            VRC5074_REG T1CNTR;
            VRC5074_REG T2CTRL;
            VRC5074_REG T2CNTR;
            VRC5074_REG T3CTRL;
            VRC5074_REG T3CNTR;
        };
    };

    union {
        UCHAR PCIConfig_Registers[0x300-0x200];
        struct {
            ULONG VID;
            ULONG PCICMD;
            ULONG REVID;
            ULONG CLSIZ;
            VRC5074_REG BARC;
            VRC5074_REG BAR0;
            VRC5074_REG BAR1;
            VRC5074_REG RESERVED_228;
            ULONG RESERVED_230;
            ULONG INTLIN;
            VRC5074_REG BAR2;
            VRC5074_REG BAR3;
            VRC5074_REG BAR4;
            VRC5074_REG BAR5;
            VRC5074_REG BAR6;
            VRC5074_REG BAR7;
            VRC5074_REG BAR8;
            VRC5074_REG BARB;
        };
    };

    union {
        struct {
            VRC5074_REG UARTRBR;
            VRC5074_REG UARTTHR;
            VRC5074_REG UARTIER;
            VRC5074_REG UARTDLL;
            VRC5074_REG UARTDLM;
            VRC5074_REG UARTIIR;
            VRC5074_REG UARTFCR;
            VRC5074_REG UARTLCR;
            VRC5074_REG UARTMCR;
            VRC5074_REG UARTLSR;
            VRC5074_REG UARTMSR;
            VRC5074_REG UARTSCR;
        };
    };

} VRC5074_CONTROL, *PVRC5074_CONTROL;

#endif

#endif //_VRC5074_H_

⌨️ 快捷键说明

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