summaryrefslogtreecommitdiffstats
path: root/private/ntos/nthals/haleagle/ppc/pxsystyp.c
blob: a35666f8129a08e6b74a2e6ac91639541e28a42b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
//++
//
// Copyright (c) 1994, 1995 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:
//
//    pxsystyp.c
//
// Abstract:
//
//    Add a global variable to indicate which system implementation we are
//    running on. Called early in phase 0 init.
//
// Author:
//
//    Bill Jones			12/94
//
// Environment:
//
//    Kernel mode only.
//
// Revision History:
//
//--


#include "halp.h"
#include "fwstatus.h"
#include "arc.h"
#include "pxsystyp.h"
#include "fwnvr.h"

SYSTEM_TYPE HalpSystemType = SYSTEM_UNKNOWN;
extern NVR_SYSTEM_TYPE nvr_system_type;

extern ULONG HalpPciConfigSlot[];
ULONG HalpPciPowerStack[] = {    0x0800,
				 0x1000,
				 0x2000,
				 0x4000,
				 0x10000,
				 0x20000,
				 0x40000,
				 0x80000,
				 0x8000
			       };

BOOLEAN
HalpSetSystemType( PLOADER_PARAMETER_BLOCK LoaderBlock );

#ifdef ALLOC_PRAGMA
#pragma alloc_text(INIT,HalpSetSystemType)
#endif

BOOLEAN
HalpSetSystemType( PLOADER_PARAMETER_BLOCK LoaderBlock )
{
  PCONFIGURATION_COMPONENT_DATA ConfigurationEntry;
  ULONG       MatchKey;
  
  MatchKey = 0;
  ConfigurationEntry=KeFindConfigurationEntry(LoaderBlock->ConfigurationRoot,
					      SystemClass,
					      ArcSystem,
					      &MatchKey);

  if (ConfigurationEntry != NULL) {


#if DBG
    //DbgPrint("HAL: System configuration = %s\n",ConfigurationEntry->ComponentEntry.Identifier);
#endif

    if (!strcmp(ConfigurationEntry->ComponentEntry.Identifier,"MOTOROLA-Big Bend")) {
      HalpSystemType = MOTOROLA_BIG_BEND;
      nvr_system_type = nvr_systype_bigbend;
      
    } else {
      //
      // Assume it is a PowerStack or OEM'ed PowerStack
      //
      //
      HalpSystemType = MOTOROLA_POWERSTACK;
      nvr_system_type = nvr_systype_powerstack;
      //
      // Change PCI addresses for Blackhawk
      // to support other PCI video boards.
      //
      memcpy(HalpPciConfigSlot, HalpPciPowerStack, sizeof(HalpPciPowerStack));

    }
  }
  return TRUE;
}