mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
256 lines
5.1 KiB
256 lines
5.1 KiB
/*++
|
|
|
|
Copyright (c) 1990 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
init.c
|
|
|
|
Abstract:
|
|
|
|
This is the init file for the Ungermann Bass Ethernet Controller.
|
|
This driver conforms to the NDIS 3.0 interface.
|
|
|
|
Author:
|
|
|
|
Brian Lieuallen BrianLie 11/21/93
|
|
|
|
Environment:
|
|
|
|
Kernel Mode Operating Systems : NT and other lesser OS's
|
|
|
|
Revision History:
|
|
|
|
Brian Lieuallen BrianLie 12/15/93
|
|
Made it a mini-port
|
|
|
|
|
|
--*/
|
|
|
|
#include <ndis.h>
|
|
//#include <efilter.h>
|
|
|
|
#include "niudata.h"
|
|
#include "debug.h"
|
|
#include "ubhard.h"
|
|
#include "ubsoft.h"
|
|
#include "ubnei.h"
|
|
|
|
#include "map.h"
|
|
|
|
|
|
VOID
|
|
UbneiMapRegisterChangeSync(
|
|
PSYNC_CONTEXT Context
|
|
)
|
|
|
|
{
|
|
PUBNEI_ADAPTER pAdapter=(PUBNEI_ADAPTER) Context->pAdapter;
|
|
|
|
#if DBG
|
|
|
|
UCHAR MapByte;
|
|
|
|
if (pAdapter->AdapterType==GPCNIU) {
|
|
|
|
NdisRawReadPortUchar(
|
|
pAdapter->MapPort,
|
|
&MapByte
|
|
);
|
|
|
|
|
|
if ((MapByte & 0xfc) != Context->CurrentMapRegister & 0xfc) {
|
|
IF_BAD_LOUD(
|
|
DbgPrint("UBNEI: BOOM! Wrong window mapped is %02x should be %02x\n",MapByte,Context->CurrentMapRegister);
|
|
DbgBreakPoint();
|
|
)
|
|
}
|
|
}
|
|
|
|
#endif
|
|
|
|
NdisRawWritePortUchar(
|
|
pAdapter->MapPort,
|
|
Context->NewMapRegister
|
|
);
|
|
|
|
|
|
Context->CurrentMapRegister=Context->NewMapRegister;
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#if DBG
|
|
//
|
|
// We declare these macros as functions to simplify debugging with
|
|
// the kd
|
|
|
|
|
|
|
|
VOID
|
|
ASSERT_INTERRUPT_ENABLED(
|
|
PUBNEI_ADAPTER pAdapter
|
|
)
|
|
|
|
{
|
|
|
|
UCHAR MapByte;
|
|
|
|
if (pAdapter->AdapterType==GPCNIU) {
|
|
|
|
NdisRawReadPortUchar(
|
|
(ULONG)pAdapter->MapPort,
|
|
&MapByte
|
|
);
|
|
|
|
if ((MapByte & INTERRUPT_ENABLED) == 0) {
|
|
|
|
IF_LOUD(
|
|
DbgPrint("Ubnei: Interrupt not enabled value=%02x\n",MapByte);
|
|
DbgBreakPoint();
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
VOID ASSERT_RECEIVE_WINDOW(PUBNEI_ADAPTER pNewAdapt)
|
|
{
|
|
UCHAR Map_Byte;
|
|
if (pNewAdapt->AdapterType==GPCNIU) {
|
|
|
|
NdisRawReadPortUchar(
|
|
(ULONG)pNewAdapt->MapPort,
|
|
&Map_Byte
|
|
);
|
|
if ((Map_Byte & ~INTERRUPT_ENABLED)!=(pNewAdapt->ReceiveDataWindow_Page)) {
|
|
IF_BAD_LOUD(
|
|
DbgPrint("UBNEI: Receive window not mapped in %02x\n",Map_Byte);
|
|
DbgBreakPoint();
|
|
)
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
VOID SET_RECDWINDOW(PUBNEI_ADAPTER pAdapter,UCHAR intflag)
|
|
{
|
|
IF_VERY_LOUD (DbgPrint( "-->Set to recd window\n" );)
|
|
IF_LOG('R');
|
|
|
|
pAdapter->MapRegSync.NewMapRegister=(pAdapter->ReceiveDataWindow_Page | ((UCHAR)intflag));
|
|
|
|
UbneiMapRegisterChangeSync(&pAdapter->MapRegSync);
|
|
}
|
|
|
|
VOID SET_INITWINDOW(PUBNEI_ADAPTER pAdapter,UCHAR intflag)
|
|
{
|
|
IF_VERY_LOUD (DbgPrint( "-->Set to init window\n" );)
|
|
IF_LOG('N');
|
|
|
|
pAdapter->MapRegSync.NewMapRegister=(pAdapter->InitWindow_Page | ((UCHAR)intflag));
|
|
|
|
UbneiMapRegisterChangeSync(&pAdapter->MapRegSync);
|
|
|
|
}
|
|
|
|
VOID SET_DATAWINDOW(PUBNEI_ADAPTER pAdapter,UCHAR intflag)
|
|
{
|
|
IF_VERY_LOUD (DbgPrint( "-->Set to data window\n" );)
|
|
IF_LOG('D');
|
|
|
|
pAdapter->MapRegSync.NewMapRegister=(pAdapter->DataWindow_Page | ((UCHAR)intflag));
|
|
|
|
UbneiMapRegisterChangeSync(&pAdapter->MapRegSync);
|
|
|
|
}
|
|
|
|
VOID SET_CODEWINDOW(PUBNEI_ADAPTER pAdapter,UCHAR intflag)
|
|
{
|
|
IF_VERY_LOUD (DbgPrint( "-->Set to code window\n" );)
|
|
IF_LOG('C');
|
|
|
|
pAdapter->MapRegSync.NewMapRegister=(pAdapter->CodeWindow_Page | ((UCHAR)intflag));
|
|
|
|
UbneiMapRegisterChangeSync(&pAdapter->MapRegSync);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
VOID SET_RECDWINDOW_SYNC(PUBNEI_ADAPTER pAdapter,UCHAR intflag)
|
|
{
|
|
IF_VERY_LOUD (DbgPrint( "-->Set to recd window\n" );)
|
|
IF_LOG('R');
|
|
|
|
pAdapter->MapRegSync.NewMapRegister=(pAdapter->ReceiveDataWindow_Page | ((UCHAR)intflag));
|
|
|
|
NdisMSynchronizeWithInterrupt(
|
|
&pAdapter->NdisInterrupt,
|
|
UbneiMapRegisterChangeSync,
|
|
&pAdapter->MapRegSync
|
|
);
|
|
|
|
}
|
|
|
|
VOID SET_INITWINDOW_SYNC(PUBNEI_ADAPTER pAdapter,UCHAR intflag)
|
|
{
|
|
IF_VERY_LOUD (DbgPrint( "-->Set to init window\n" );)
|
|
IF_LOG('N');
|
|
|
|
pAdapter->MapRegSync.NewMapRegister=(pAdapter->InitWindow_Page | ((UCHAR)intflag));
|
|
|
|
NdisMSynchronizeWithInterrupt(
|
|
&pAdapter->NdisInterrupt,
|
|
UbneiMapRegisterChangeSync,
|
|
&pAdapter->MapRegSync
|
|
);
|
|
|
|
|
|
}
|
|
|
|
VOID SET_DATAWINDOW_SYNC(PUBNEI_ADAPTER pAdapter,UCHAR intflag)
|
|
{
|
|
IF_VERY_LOUD (DbgPrint( "-->Set to data window\n" );)
|
|
IF_LOG('D');
|
|
|
|
pAdapter->MapRegSync.NewMapRegister=(pAdapter->DataWindow_Page | ((UCHAR)intflag));
|
|
|
|
NdisMSynchronizeWithInterrupt(
|
|
&pAdapter->NdisInterrupt,
|
|
UbneiMapRegisterChangeSync,
|
|
&pAdapter->MapRegSync
|
|
);
|
|
|
|
|
|
}
|
|
|
|
VOID SET_CODEWINDOW_SYNC(PUBNEI_ADAPTER pAdapter,UCHAR intflag)
|
|
{
|
|
IF_VERY_LOUD (DbgPrint( "-->Set to code window\n" );)
|
|
IF_LOG('C');
|
|
|
|
pAdapter->MapRegSync.NewMapRegister=(pAdapter->CodeWindow_Page | ((UCHAR)intflag));
|
|
|
|
NdisMSynchronizeWithInterrupt(
|
|
&pAdapter->NdisInterrupt,
|
|
UbneiMapRegisterChangeSync,
|
|
&pAdapter->MapRegSync
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
#endif
|