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

📄 window.c

📁 WinCE 3.0 BSP, 包含Inter SA1110, Intel_815E, Advantech_PCM9574 等
💻 C
📖 第 1 页 / 共 3 页
字号:
/*++
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, 1996, 1997  Microsoft Corporation
Copyright (c) 1998  NEC Electronics Inc.

Module Name:

    window.c

Abstract:  

    This file implements the PCMCIA platform dependent window control
    functions and window definitions.


Functions:

    PDCardGetWindow()
    PDCardSetWindow()
    PDCardInquireWindow()

Notes:


--*/

#include <windows.h>
#include <types.h>
#include <cardserv.h>
#include <sockserv.h>
#include <sockpd.h>
#include <memory.h>

//#include <eagle.h>

#define PCMCIA_NUM_WINDOWS      14

#define PCMCIA0_8_ATTR_WIN_BASE  0x10010000
#define PCMCIA0_8_ATTR_WIN_SIZE  0x00010000
#define PCMCIA0_16_ATTR_WIN_BASE 0x10020000
#define PCMCIA0_16_ATTR_WIN_SIZE 0x00010000
#define PCMCIA0_MEM1_WIN_BASE    0x10030000
#define PCMCIA0_MEM1_WIN_SIZE    0x000BE000
#define PCMCIA0_MEM2_WIN_BASE    0x100EE000
#define PCMCIA0_MEM2_WIN_SIZE    0x00008000
#define PCMCIA0_MEM3_WIN_BASE    0x100F7000
#define PCMCIA0_MEM3_WIN_SIZE    0x00008000
#define PCMCIA0_IO0_WIN_BASE     0x16000000
#define PCMCIA0_IO0_WIN_SIZE     0x00010000
#define PCMCIA0_IO1_WIN_BASE     0x16000000
#define PCMCIA0_IO1_WIN_SIZE     0x00010000

#define PCMCIA1_8_ATTR_WIN_BASE  0x10110000
#define PCMCIA1_8_ATTR_WIN_SIZE  0x00010000
#define PCMCIA1_16_ATTR_WIN_BASE 0x10120000
#define PCMCIA1_16_ATTR_WIN_SIZE 0x00010000
#define PCMCIA1_MEM1_WIN_BASE    0x10130000
#define PCMCIA1_MEM1_WIN_SIZE    0x000BE000
#define PCMCIA1_MEM2_WIN_BASE    0x101EE000
#define PCMCIA1_MEM2_WIN_SIZE    0x00008000
#define PCMCIA1_MEM3_WIN_BASE    0x101F7000
#define PCMCIA1_MEM3_WIN_SIZE    0x00008000
#define PCMCIA1_IO0_WIN_BASE     0x16000000
#define PCMCIA1_IO0_WIN_SIZE     0x00010000
#define PCMCIA1_IO1_WIN_BASE     0x16000000
#define PCMCIA1_IO1_WIN_SIZE     0x00010000

#define SLOT0_WINDOW_NUM_ATTRIBUTE8  0
#define SLOT0_WINDOW_NUM_ATTRIBUTE16 1
#define SLOT1_WINDOW_NUM_ATTRIBUTE8  2
#define SLOT1_WINDOW_NUM_ATTRIBUTE16 3
#define SLOT0_WINDOW_NUM_COMMON1     4
#define SLOT0_WINDOW_NUM_COMMON2     5
#define SLOT1_WINDOW_NUM_COMMON1     6
#define SLOT1_WINDOW_NUM_COMMON2     7
#define SLOT0_WINDOW_NUM_COMMON3     8
#define SLOT0_WINDOW_NUM_IO0         9
#define SLOT1_WINDOW_NUM_COMMON3    10
#define SLOT1_WINDOW_NUM_IO0        11
#define SLOT0_WINDOW_NUM_IO1        12
#define SLOT1_WINDOW_NUM_IO1        13


// @doc DRIVERS

PDCARD_WINDOW_STATE v_WinState[PCMCIA_NUM_WINDOWS] = {
{   // PCMCIA window 0 - 8bit attribute memory on socket 0
    0,                    // socket number
    WIN_STATE_ENABLED|WIN_STATE_ATTRIBUTE,    // state flags
    WIN_SPEED_EXP_1NS|WIN_SPEED_MANT_10|WIN_SPEED_USE_WAIT,
    PCMCIA0_8_ATTR_WIN_SIZE,
    PCMCIA0_8_ATTR_WIN_BASE,
    0                     // card offset
},
{   // PCMCIA window 1 - 16bit attribute memory on socket 0
    0,                    // socket number
    WIN_STATE_ENABLED|WIN_STATE_ATTRIBUTE|WIN_STATE_16BIT,    // state flags
    WIN_SPEED_EXP_1NS|WIN_SPEED_MANT_10|WIN_SPEED_USE_WAIT,
    PCMCIA0_16_ATTR_WIN_SIZE,
    PCMCIA0_16_ATTR_WIN_BASE,
    0
},
{   // PCMCIA window 2 - 8bit attribute memory on socket 1
    1,                    // socket number
    WIN_STATE_ENABLED|WIN_STATE_ATTRIBUTE,    // state flags
    WIN_SPEED_EXP_1NS|WIN_SPEED_MANT_10|WIN_SPEED_USE_WAIT,
    PCMCIA1_8_ATTR_WIN_SIZE,
    PCMCIA1_8_ATTR_WIN_BASE,
    0                     // card offset
},
{   // PCMCIA window 3 - 16bit attribute memory on socket 1
    1,                    // socket number
    WIN_STATE_ENABLED|WIN_STATE_ATTRIBUTE|WIN_STATE_16BIT,    // state flags
    WIN_SPEED_EXP_1NS|WIN_SPEED_MANT_10|WIN_SPEED_USE_WAIT,
    PCMCIA1_16_ATTR_WIN_SIZE,
    PCMCIA1_16_ATTR_WIN_BASE,
    0
},
{   // PCMCIA window 4 common memory window on socket 0
    0,                    // socket number
    WIN_STATE_ENABLED,    // state flags
    WIN_SPEED_EXP_1NS|WIN_SPEED_MANT_10|WIN_SPEED_USE_WAIT,
    PCMCIA0_MEM1_WIN_SIZE,
    PCMCIA0_MEM1_WIN_BASE,
    0
},
{   // PCMCIA window 5 common memory window on socket 0
    0,                    // socket number
    WIN_STATE_ENABLED,    // state flags
    WIN_SPEED_EXP_1NS|WIN_SPEED_MANT_10|WIN_SPEED_USE_WAIT,
    PCMCIA0_MEM2_WIN_SIZE,
    PCMCIA0_MEM2_WIN_BASE,
    0
},
{   // PCMCIA window 6 common memory window on socket 1
    1,                    // socket number
    WIN_STATE_ENABLED,    // state flags
    WIN_SPEED_EXP_1NS|WIN_SPEED_MANT_10|WIN_SPEED_USE_WAIT,
    PCMCIA1_MEM1_WIN_SIZE,
    PCMCIA1_MEM1_WIN_BASE,
    0
},
{   // PCMCIA window 7 common memory window on socket 1
    1,                    // socket number
    WIN_STATE_ENABLED,    // state flags
    WIN_SPEED_EXP_1NS|WIN_SPEED_MANT_10|WIN_SPEED_USE_WAIT,
    PCMCIA1_MEM2_WIN_SIZE,
    PCMCIA1_MEM2_WIN_BASE,
    0
},
{   // PCMCIA window 8 comon memory window on socket 0
    0,                    // socket number
    WIN_STATE_ENABLED,    // state flags
    WIN_SPEED_EXP_1NS|WIN_SPEED_MANT_10|WIN_SPEED_USE_WAIT,
    PCMCIA0_MEM3_WIN_SIZE,
    PCMCIA0_MEM3_WIN_BASE,
    0
},
{   // PCMCIA window 9 I/O window 0 on socket 0
    0,                    // socket number
    WIN_STATE_ENABLED|WIN_STATE_MAPS_IO,
    WIN_SPEED_EXP_1NS|WIN_SPEED_MANT_10|WIN_SPEED_USE_WAIT,
    PCMCIA0_IO0_WIN_SIZE,
    PCMCIA0_IO0_WIN_BASE,
    0
},
{   // PCMCIA window 10 comon memory window on socket 1
    1,                    // socket number
    WIN_STATE_ENABLED,    // state flags
    WIN_SPEED_EXP_1NS|WIN_SPEED_MANT_10|WIN_SPEED_USE_WAIT,
    PCMCIA1_MEM3_WIN_SIZE,
    PCMCIA1_MEM3_WIN_BASE,
    0
},
{   // PCMCIA window 11 I/O window 0 on socket 1
    1,                    // socket number
    WIN_STATE_ENABLED|WIN_STATE_MAPS_IO,
    WIN_SPEED_EXP_1NS|WIN_SPEED_MANT_10|WIN_SPEED_USE_WAIT,
    PCMCIA1_IO0_WIN_SIZE,
    PCMCIA1_IO0_WIN_BASE,
    0
},
{   // PCMCIA window 12 I/O window 1 on socket 0
    0,                    // socket number
    WIN_STATE_ENABLED|WIN_STATE_MAPS_IO,
    WIN_SPEED_EXP_1NS|WIN_SPEED_MANT_10|WIN_SPEED_USE_WAIT,
    PCMCIA0_IO1_WIN_SIZE,
    PCMCIA0_IO1_WIN_BASE,
    0
},
{   // PCMCIA window 13 I/O window 1 on socket 1
    1,                    // socket number
    WIN_STATE_ENABLED|WIN_STATE_MAPS_IO,
    WIN_SPEED_EXP_1NS|WIN_SPEED_MANT_10|WIN_SPEED_USE_WAIT,
    PCMCIA1_IO1_WIN_SIZE,
    PCMCIA1_IO1_WIN_BASE,
    0
}
};

//
// Stuff to make PDCardSetWindow smaller and more readable
//

//
// The format of each of these tables is RegisterIndex:Data
//
const UINT8 Socket0AttributeMemoryWindowRegisters8[] = {
    INDEX_MEMORY_MAP0_START_ADDRESS_LOW, 0x10,
    INDEX_MEMORY_MAP0_START_ADDRESS_HI,  0x0,
    INDEX_MEMORY_MAP0_END_ADDRESS_LOW,   0x1F,
    INDEX_MEMORY_MAP0_END_ADDRESS_HI,    0x0,
    INDEX_MEMORY_MAP0_ADDRESS_OFFSET_LOW,0xF0,
    INDEX_MEMORY_MAP0_ADDRESS_OFFSET_HI, 0x7F
};
const UINT8 Socket0AttributeMemoryWindowRegisters16[] = {
    INDEX_MEMORY_MAP1_START_ADDRESS_LOW, 0x20,
    INDEX_MEMORY_MAP1_START_ADDRESS_HI,  0x0,
    INDEX_MEMORY_MAP1_END_ADDRESS_LOW,   0x2F,
    INDEX_MEMORY_MAP1_END_ADDRESS_HI,    0x0,
    INDEX_MEMORY_MAP1_ADDRESS_OFFSET_LOW,0xE0,
    INDEX_MEMORY_MAP1_ADDRESS_OFFSET_HI, 0x7F
};
const UINT8 Socket0CommonMemoryWindowRegisters1[] = {
    INDEX_MEMORY_MAP2_START_ADDRESS_LOW, 0x30,
    INDEX_MEMORY_MAP2_START_ADDRESS_HI,  0x0,
    INDEX_MEMORY_MAP2_END_ADDRESS_LOW,   0xED,
    INDEX_MEMORY_MAP2_END_ADDRESS_HI,    0x0,
    INDEX_MEMORY_MAP2_ADDRESS_OFFSET_LOW,0xD0,
    INDEX_MEMORY_MAP2_ADDRESS_OFFSET_HI, 0x3F
};
const UINT8 Socket0CommonMemoryWindowRegisters2[] = {
    INDEX_MEMORY_MAP3_START_ADDRESS_LOW, 0xEE,
    INDEX_MEMORY_MAP3_START_ADDRESS_HI,  0x0,
    INDEX_MEMORY_MAP3_END_ADDRESS_LOW,   0xF6,
    INDEX_MEMORY_MAP3_END_ADDRESS_HI,    0x0,
};
const UINT8 Socket0CommonMemoryWindowRegisters3[] = {
    INDEX_MEMORY_MAP4_START_ADDRESS_LOW, 0xF7,
    INDEX_MEMORY_MAP4_START_ADDRESS_HI,  0x0,
    INDEX_MEMORY_MAP4_END_ADDRESS_LOW,   0xFF,
    INDEX_MEMORY_MAP4_END_ADDRESS_HI,    0x0,
};
const UINT8 Socket0IOMemoryWindowRegisters[] = {
    INDEX_IO_MAP0_START_ADDRESS_LOW, 0x00,
    INDEX_IO_MAP0_START_ADDRESS_HI,  0x00,
    INDEX_IO_MAP0_END_ADDRESS_LOW,   0xFF,
    INDEX_IO_MAP0_END_ADDRESS_HI,    0x7F,
    INDEX_IO_MAP1_START_ADDRESS_LOW, 0x00,
    INDEX_IO_MAP1_START_ADDRESS_HI,  0x80,
    INDEX_IO_MAP1_END_ADDRESS_LOW,   0xFF,
    INDEX_IO_MAP1_END_ADDRESS_HI,    0xFF
};

const UINT8 Socket1AttributeMemoryWindowRegisters8[] = {
    INDEX_MEMORY_MAP0_START_ADDRESS_LOW, 0x10,
    INDEX_MEMORY_MAP0_START_ADDRESS_HI,  0x1,
    INDEX_MEMORY_MAP0_END_ADDRESS_LOW,   0x1F,
    INDEX_MEMORY_MAP0_END_ADDRESS_HI,    0x1,
    INDEX_MEMORY_MAP0_ADDRESS_OFFSET_LOW,0xF0,
    INDEX_MEMORY_MAP0_ADDRESS_OFFSET_HI, 0x7E
};
const UINT8 Socket1AttributeMemoryWindowRegisters16[] = {
    INDEX_MEMORY_MAP1_START_ADDRESS_LOW, 0x20,
    INDEX_MEMORY_MAP1_START_ADDRESS_HI,  0x1,
    INDEX_MEMORY_MAP1_END_ADDRESS_LOW,   0x2F,
    INDEX_MEMORY_MAP1_END_ADDRESS_HI,    0x1,
    INDEX_MEMORY_MAP1_ADDRESS_OFFSET_LOW,0xE0,
    INDEX_MEMORY_MAP1_ADDRESS_OFFSET_HI, 0x7E
};
const UINT8 Socket1CommonMemoryWindowRegisters1[] = {
    INDEX_MEMORY_MAP2_START_ADDRESS_LOW, 0x30,
    INDEX_MEMORY_MAP2_START_ADDRESS_HI,  0x1,
    INDEX_MEMORY_MAP2_END_ADDRESS_LOW,   0xED,
    INDEX_MEMORY_MAP2_END_ADDRESS_HI,    0x1,
    INDEX_MEMORY_MAP2_ADDRESS_OFFSET_LOW,0xD0,
    INDEX_MEMORY_MAP2_ADDRESS_OFFSET_HI, 0x3E
};
const UINT8 Socket1CommonMemoryWindowRegisters2[] = {
    INDEX_MEMORY_MAP3_START_ADDRESS_LOW, 0xEE,
    INDEX_MEMORY_MAP3_START_ADDRESS_HI,  0x1,
    INDEX_MEMORY_MAP3_END_ADDRESS_LOW,   0xF6,
    INDEX_MEMORY_MAP3_END_ADDRESS_HI,    0x1,
};
const UINT8 Socket1CommonMemoryWindowRegisters3[] = {
    INDEX_MEMORY_MAP4_START_ADDRESS_LOW, 0xF7,
    INDEX_MEMORY_MAP4_START_ADDRESS_HI,  0x1,
    INDEX_MEMORY_MAP4_END_ADDRESS_LOW,   0xFF,
    INDEX_MEMORY_MAP4_END_ADDRESS_HI,    0x1,
};

const UINT8 Socket1IOMemoryWindowRegisters[] = {
    INDEX_IO_MAP0_START_ADDRESS_LOW, 0x00,
    INDEX_IO_MAP0_START_ADDRESS_HI,  0x00,
    INDEX_IO_MAP0_END_ADDRESS_LOW,   0xFF,
    INDEX_IO_MAP0_END_ADDRESS_HI,    0x7F,
    INDEX_IO_MAP1_START_ADDRESS_LOW, 0x00,
    INDEX_IO_MAP1_START_ADDRESS_HI,  0x80,
    INDEX_IO_MAP1_END_ADDRESS_LOW,   0xFF,
    INDEX_IO_MAP1_END_ADDRESS_HI,    0xFF
};


//
// Structure to track memory window registers
//
typedef struct _WINDOW_REG_DESCR {
    const UINT8 *pRegisters;
    INT    RegSize;
    INT    EnableBits;
} WINDOW_REG_DESCR, * PWINDOW_REG_DESCR;

const WINDOW_REG_DESCR SetWindowRegisters[PCMCIA_NUM_WINDOWS] = {
    { Socket0AttributeMemoryWindowRegisters8,
      sizeof(Socket0AttributeMemoryWindowRegisters8),
      DATA_MEMORY_MAP0_ENABLE
    },
    { Socket0AttributeMemoryWindowRegisters16,
      sizeof(Socket0AttributeMemoryWindowRegisters16),
      DATA_MEMORY_MAP1_ENABLE
    },
    { Socket1AttributeMemoryWindowRegisters8,
      sizeof(Socket1AttributeMemoryWindowRegisters8),
      DATA_MEMORY_MAP0_ENABLE
    },
    { Socket1AttributeMemoryWindowRegisters16,
      sizeof(Socket1AttributeMemoryWindowRegisters16),
      DATA_MEMORY_MAP1_ENABLE
    },
    { Socket0CommonMemoryWindowRegisters1,
      sizeof(Socket0CommonMemoryWindowRegisters1),
      DATA_MEMORY_MAP2_ENABLE
    },

⌨️ 快捷键说明

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