244 lines
3.8 KiB
C
Raw Normal View History

2001-01-01 00:00:00 +01:00
/*
* Copyright (c) 1995 FirePower Systems, Inc.
* DO NOT DISTRIBUTE without permission
*
* $RCSfile: pxmemctl.c $
* $Revision: 1.16 $
* $Date: 1996/05/14 02:34:41 $
* $Locker: $
*/
/*++
Copyright (c) 1990 Microsoft Corporation
Copyright (c) 1994 MOTOROLA, INC. All Rights Reserved. This file
contains copyrighted material. Use of this file is restricted
by the provisions of a Motorola Software License Agreement.
Module Name:
pxmemctl.c
Abstract:
The module initializes any planar registers.
This module also implements machince check parity error handling.
Author:
Jim Wooldridge (jimw@austin.vnet.ibm.com)
Revision History:
--*/
#include "halp.h"
#include "pxmemctl.h"
#include "phsystem.h"
BOOLEAN
HalpInitPlanar (
VOID
)
{
return TRUE;
}
BOOLEAN
HalpMapPlanarSpace (
VOID
)
/*++
Routine Description:
This routine maps the interrupt acknowledge and error address
spaces for a PowerPC system.
Arguments:
None.
Return Value:
If the initialization is successfully completed, than a value of TRUE
is returned. Otherwise, a value of FALSE is returned.
--*/
{
PHYSICAL_ADDRESS physicalAddress;
//
// Map interrupt control space.
//
physicalAddress.HighPart = 0;
physicalAddress.LowPart = INTERRUPT_PHYSICAL_BASE;
if ( HalpInterruptBase == NULL ) {
HalpInterruptBase = MmMapIoSpace(physicalAddress,
PAGE_SIZE,
FALSE);
}
if ( HalpSystemControlBase == NULL ) {
physicalAddress.HighPart = 0;
physicalAddress.LowPart = SYSTEM_CONTROL_SPACE;
HalpSystemControlBase = MmMapIoSpace(physicalAddress,
PAGE_SIZE,
FALSE);
}
//
// Map the error address register
//
physicalAddress.HighPart = 0;
physicalAddress.LowPart = ERROR_ADDRESS_REGISTER;
HalpErrorAddressRegister = MmMapIoSpace(physicalAddress,
PAGE_SIZE,
FALSE);
if (HalpInterruptBase == NULL || HalpErrorAddressRegister == NULL)
return FALSE;
else
return TRUE;
}
BOOLEAN
HalpMapBusConfigSpace (
VOID
)
/*++
Routine Description:
This routine maps the HAL PCI config
spaces for a PowerPC system.
Arguments:
None.
Return Value:
If the initialization is successfully completed, than a value of TRUE
is returned. Otherwise, a value of FALSE is returned.
--*/
{
PHYSICAL_ADDRESS physicalAddress;
//
// Map the PCI config space.
//
physicalAddress.LowPart = PCI_CONFIG_PHYSICAL_BASE;
HalpPciConfigBase = MmMapIoSpace(physicalAddress,
PCI_CONFIG_SIZE,
FALSE);
if (HalpPciConfigBase == NULL)
return FALSE;
else
return TRUE;
}
BOOLEAN
HalpPhase0MapBusConfigSpace (
VOID
)
/*++
Routine Description:
This routine maps the HAL PCI config
spaces for a PowerPC system during phase 0 initialization.
Arguments:
None.
Return Value:
If the initialization is successfully completed, than a value of TRUE
is returned. Otherwise, a value of FALSE is returned.
--*/
{
//
// Map the PCI config space.
//
HalpPciConfigBase = (PUCHAR)KePhase0MapIo( (PVOID)PCI_CONFIG_PHYSICAL_BASE, 0x400000);
if (HalpPciConfigBase == NULL)
return FALSE;
else
return TRUE;
}
VOID
HalpPhase0UnMapBusConfigSpace (
VOID
)
/*++
Routine Description:
This routine maps the HAL PCI config
spaces for a PowerPC system during phase 0 initialization.
Arguments:
None.
Return Value:
If the initialization is successfully completed, than a value of TRUE
is returned. Otherwise, a value of FALSE is returned.
--*/
{
//
// Unmap the PCI config space and set HalpPciConfigBase to NULL.
//
KePhase0DeleteIoMap( (PVOID)PCI_CONFIG_PHYSICAL_BASE, 0x400000);
HalpPciConfigBase = NULL;
}