ReactOS  0.4.15-dev-1197-g8081ba9
machxbox.c
Go to the documentation of this file.
1 /*
2  * FreeLoader
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License along
15  * with this program; if not, write to the Free Software Foundation, Inc.,
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17  */
18 
19 #include <freeldr.h>
20 #include <drivers/xbox/superio.h>
21 
22 #include <debug.h>
23 DBG_DEFAULT_CHANNEL(HWDETECT);
24 
25 #define MAX_XBOX_COM_PORTS 2
26 
27 extern PVOID FrameBuffer;
28 extern ULONG FrameBufferSize;
29 
30 BOOLEAN
32 {
33  /* We emulate PCI BIOS here, there are 2 known working PCI buses on an original Xbox */
34 
35  BusData->NoBuses = 2;
36  BusData->MajorRevision = 1;
37  BusData->MinorRevision = 0;
38  BusData->HardwareMechanism = 1;
39  return TRUE;
40 }
41 
42 extern
43 VOID
45 
46 static
47 ULONG
49 {
50  /*
51  * Xbox may have maximum two Serial COM ports
52  * if the Super I/O chip is connected via LPC
53  */
55  ULONG ComBase = 0;
56 
58 
59  // Select serial device
61 
62  // Check if selected device is active
64  {
65  ComBase = LpcGetIoBase();
66  *Irq = LpcGetIrqPrimary();
67  }
68 
69  LpcExitConfig();
70 
71  return ComBase;
72 }
73 
74 extern
75 VOID
77 
78 VOID
80 {
81  TRACE("XboxGetExtendedBIOSData(): UNIMPLEMENTED\n");
84 }
85 
86 // NOTE: Similar to machpc.c!PcGetHarddiskConfigurationData(),
87 // but without extended geometry support.
88 static
91 {
92  PCM_PARTIAL_RESOURCE_LIST PartialResourceList;
93  PCM_DISK_GEOMETRY_DEVICE_DATA DiskGeometry;
94  //EXTENDED_GEOMETRY ExtGeometry;
95  GEOMETRY Geometry;
96  ULONG Size;
97 
98  //
99  // Initialize returned size
100  //
101  *pSize = 0;
102 
103  /* Set 'Configuration Data' value */
104  Size = sizeof(CM_PARTIAL_RESOURCE_LIST) +
106  PartialResourceList = FrLdrHeapAlloc(Size, TAG_HW_RESOURCE_LIST);
107  if (PartialResourceList == NULL)
108  {
109  ERR("Failed to allocate a full resource descriptor\n");
110  return NULL;
111  }
112 
113  memset(PartialResourceList, 0, Size);
114  PartialResourceList->Version = 1;
115  PartialResourceList->Revision = 1;
116  PartialResourceList->Count = 1;
117  PartialResourceList->PartialDescriptors[0].Type =
119 // PartialResourceList->PartialDescriptors[0].ShareDisposition =
120 // PartialResourceList->PartialDescriptors[0].Flags =
121  PartialResourceList->PartialDescriptors[0].u.DeviceSpecificData.DataSize =
123 
124  /* Get pointer to geometry data */
125  DiskGeometry = (PVOID)(((ULONG_PTR)PartialResourceList) + sizeof(CM_PARTIAL_RESOURCE_LIST));
126 
127  /* Get the disk geometry */
128  //ExtGeometry.Size = sizeof(EXTENDED_GEOMETRY);
129 
130  if (XboxDiskGetDriveGeometry(DriveNumber, &Geometry))
131  {
132  DiskGeometry->BytesPerSector = Geometry.BytesPerSector;
133  DiskGeometry->NumberOfCylinders = Geometry.Cylinders;
134  DiskGeometry->SectorsPerTrack = Geometry.Sectors;
135  DiskGeometry->NumberOfHeads = Geometry.Heads;
136  }
137  else
138  {
139  ERR("Reading disk geometry failed\n");
140  FrLdrHeapFree(PartialResourceList, TAG_HW_RESOURCE_LIST);
141  return NULL;
142  }
143  TRACE("Disk %x: %u Cylinders %u Heads %u Sectors %u Bytes\n",
144  DriveNumber,
145  DiskGeometry->NumberOfCylinders,
146  DiskGeometry->NumberOfHeads,
147  DiskGeometry->SectorsPerTrack,
148  DiskGeometry->BytesPerSector);
149 
150  //
151  // Return configuration data
152  //
153  *pSize = Size;
154  return PartialResourceList;
155 }
156 
157 static VOID
159 {
160  CHAR Buffer[80];
161  PCONFIGURATION_COMPONENT_DATA ControllerKey;
162  PCM_PARTIAL_RESOURCE_LIST PartialResourceList;
163  PCM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptor;
164  ULONG Size;
165 
166  if (FrameBufferSize == 0)
167  return;
168 
169  strcpy(Buffer, "NV2A Framebuffer");
170 
171  Size = sizeof(CM_PARTIAL_RESOURCE_LIST);
172  PartialResourceList = FrLdrHeapAlloc(Size, TAG_HW_RESOURCE_LIST);
173  if (PartialResourceList == NULL)
174  {
175  ERR("Failed to allocate resource descriptor\n");
176  return;
177  }
178  memset(PartialResourceList, 0, Size);
179 
180  /* Initialize resource descriptor */
181  PartialResourceList->Version = 1;
182  PartialResourceList->Revision = 1;
183  PartialResourceList->Count = 1;
184 
185  /* Set Memory */
186  PartialDescriptor = &PartialResourceList->PartialDescriptors[0];
187  PartialDescriptor->Type = CmResourceTypeMemory;
189  PartialDescriptor->Flags = CM_RESOURCE_MEMORY_READ_WRITE;
190  PartialDescriptor->u.Memory.Start.LowPart = (ULONG_PTR)FrameBuffer & 0x0FFFFFFF;
191  PartialDescriptor->u.Memory.Length = FrameBufferSize;
192 
193  FldrCreateComponentKey(BusKey,
195  DisplayController,
196  0x0,
197  0x0,
198  0xFFFFFFFF,
199  Buffer,
200  PartialResourceList,
201  Size,
202  &ControllerKey);
203 
204  TRACE("Created key: DisplayController\\0\n");
205 }
206 
207 static
208 VOID
210 {
211  PCM_PARTIAL_RESOURCE_LIST PartialResourceList;
213  ULONG Size;
214 
215  /* Set 'Configuration Data' value */
216  Size = sizeof(CM_PARTIAL_RESOURCE_LIST) -
218  PartialResourceList = FrLdrHeapAlloc(Size, TAG_HW_RESOURCE_LIST);
219  if (PartialResourceList == NULL)
220  {
221  TRACE("Failed to allocate resource descriptor\n");
222  return;
223  }
224 
225  /* Initialize resource descriptor */
226  memset(PartialResourceList, 0, Size);
227  PartialResourceList->Version = 1;
228  PartialResourceList->Revision = 1;
229  PartialResourceList->Count = 0;
230 
231  /* Create new bus key */
232  FldrCreateComponentKey(SystemKey,
233  AdapterClass,
234  MultiFunctionAdapter,
235  0x0,
236  0x0,
237  0xFFFFFFFF,
238  "ISA",
239  PartialResourceList,
240  Size,
241  &BusKey);
242 
243  /* Increment bus number */
244  (*BusNumber)++;
245 
246  /* Detect ISA/BIOS devices */
247  DetectBiosDisks(SystemKey, BusKey);
249  DetectDisplayController(BusKey);
250 
251  /* FIXME: Detect more ISA devices */
252 }
253 
254 static
255 UCHAR
257 {
258  /* On a PC we use CMOS/RTC I/O ports 0x70 and 0x71 to detect floppies.
259  * However an Xbox CMOS memory range [0x10, 0x70) and [0x80, 0x100)
260  * is filled with 0x55 0xAA 0x55 0xAA ... byte pattern which is used
261  * to validate the date/time settings by Xbox OS.
262  *
263  * Technically it's possible to connect a floppy drive to Xbox, but
264  * CMOS detection method should not be used here. */
265 
266  WARN("XboxGetFloppyCount() is UNIMPLEMENTED, returning 0\n");
267  return 0;
268 }
269 
272 {
274  ULONG BusNumber = 0;
275 
276  TRACE("DetectHardware()\n");
277 
278  /* Create the 'System' key */
279  FldrCreateSystemKey(&SystemKey);
280  FldrSetIdentifier(SystemKey, "Original Xbox (PC/AT like)");
281 
284 
285  /* TODO: Build actual xbox's hardware configuration tree */
286  DetectPciBios(SystemKey, &BusNumber);
287  DetectIsaBios(SystemKey, &BusNumber);
288 
289  TRACE("DetectHardware() Done\n");
290  return SystemKey;
291 }
292 
294 {
295  /* UNIMPLEMENTED */
296 }
297 
298 
299 /******************************************************************************/
300 
301 VOID
302 MachInit(const char *CmdLine)
303 {
304  ULONG PciId;
305 
306  memset(&MachVtbl, 0, sizeof(MACHVTBL));
307 
308  /* Check for Xbox by identifying device at PCI 0:0:0, if it's
309  * 0x10DE/0x02A5 then we're running on an Xbox */
310  WRITE_PORT_ULONG((PULONG)0xCF8, CONFIG_CMD(0, 0, 0));
311  PciId = READ_PORT_ULONG((PULONG)0xCFC);
312  if (PciId != 0x02A510DE)
313  {
314  ERR("This is not original Xbox!\n");
315 
316  /* Disable and halt the CPU */
317  _disable();
318  __halt();
319 
320  while (TRUE);
321  }
322 
323  /* Set LEDs to red before anything is initialized */
324  XboxSetLED("rrrr");
325 
326  /* Setup vtbl */
343  MachVtbl.Beep = PcBeep;
355 
356  /* Initialize our stuff */
357  XboxMemInit();
358  XboxVideoInit();
359 
360  /* Set LEDs to orange after init */
361  XboxSetLED("oooo");
362 
364 }
365 
366 VOID
368 {
369  /* On Xbox, prepare video and disk support */
373 
374  /* Turn off debug messages to screen */
375  DebugDisableScreenPort();
376 }
377 
378 /* EOF */
VOID NTAPI FldrSetIdentifier(IN PCONFIGURATION_COMPONENT_DATA ComponentData, IN PCHAR IdentifierString)
Definition: archwsup.c:56
struct _CM_PARTIAL_RESOURCE_LIST CM_PARTIAL_RESOURCE_LIST
BOOLEAN XboxConsKbHit(VOID)
Definition: xboxcons.c:69
VOID DetectSerialPorts(PCONFIGURATION_COMPONENT_DATA BusKey, GET_SERIAL_PORT MachGetSerialPort, ULONG Count)
Definition: machpc.c:659
PCONFIGURATION_COMPONENT_DATA XboxHwDetect(VOID)
Definition: machxbox.c:271
VOID DetectBiosDisks(PCONFIGURATION_COMPONENT_DATA SystemKey, PCONFIGURATION_COMPONENT_DATA BusKey)
Definition: pchw.c:344
#define CmResourceTypeDeviceSpecific
Definition: hwresource.cpp:127
PFREELDR_MEMORY_DESCRIPTOR(* GetMemoryMap)(PULONG MaxMemoryMapSize)
Definition: machine.h:63
#define ExtendedBIOSDataSize
Definition: winldr.c:421
#define MAX_XBOX_COM_PORTS
Definition: machxbox.c:25
FORCEINLINE VOID FrLdrHeapFree(PVOID MemoryPointer, ULONG Tag)
Definition: mm.h:170
_In_ PIRP _In_ PDEVICE_OBJECT Device
Definition: fatprocs.h:2029
GLint x0
Definition: linetemp.h:95
ULONG(* GET_SERIAL_PORT)(ULONG Index, PULONG Irq)
Definition: hardware.h:49
#define TRUE
Definition: types.h:120
VOID(* GetExtendedBIOSData)(PULONG ExtendedBIOSDataArea, PULONG ExtendedBIOSDataSize)
Definition: machine.h:64
ULONG Cylinders
Definition: disk.h:26
VOID(* VideoClearScreen)(UCHAR Attr)
Definition: machine.h:45
unsigned char * PUCHAR
Definition: retypes.h:3
char CHAR
Definition: xmlstorage.h:175
#define WARN(fmt,...)
Definition: debug.h:112
#define LPC_DEVICE_SERIAL_PORT_1
Definition: superio.h:23
__INTRIN_INLINE void __halt(void)
Definition: intrin_x86.h:1609
PCONFIGURATION_COMPONENT_DATA(* HwDetect)(VOID)
Definition: machine.h:77
#define LPC_DEVICE_SERIAL_PORT_2
Definition: superio.h:24
_In_opt_ ULONG Base
Definition: rtlfuncs.h:2373
UCHAR HardwareMechanism
Definition: pci.h:110
VOID(* VideoGetDisplaySize)(PULONG Width, PULONG Height, PULONG Depth)
Definition: machine.h:47
ULONG NTAPI READ_PORT_ULONG(IN PULONG Port)
Definition: portio.c:70
static UCHAR XboxGetFloppyCount(VOID)
Definition: machxbox.c:256
VOID XboxVideoCopyOffScreenBufferToVRAM(PVOID Buffer)
Definition: xboxvideo.c:275
_Inout_ __drv_aliasesMem PSLIST_ENTRY _Inout_ PSLIST_ENTRY _In_ ULONG Count
Definition: exfuncs.h:1223
FORCEINLINE VOID LpcExitConfig(VOID)
Definition: superio.h:51
UCHAR MinorRevision
Definition: pci.h:108
VOID XboxVideoClearScreen(UCHAR Attr)
Definition: xboxvideo.c:126
VOID XboxConsPutChar(int c)
Definition: xboxcons.c:26
BOOLEAN(* VideoIsPaletteFixed)(VOID)
Definition: machine.h:54
FORCEINLINE UCHAR LpcReadRegister(UCHAR Register)
Definition: superio.h:59
static VOID DetectDisplayController(PCONFIGURATION_COMPONENT_DATA BusKey)
Definition: machxbox.c:158
UCHAR(* GetFloppyCount)(VOID)
Definition: machine.h:66
#define CM_RESOURCE_MEMORY_READ_WRITE
Definition: cmtypes.h:120
FORCEINLINE ULONG LpcGetIoBase()
Definition: superio.h:96
BOOLEAN XboxFindPciBios(PPCI_REGISTRY_INFO BusData)
Definition: machxbox.c:31
uint32_t ULONG_PTR
Definition: typedefs.h:65
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@384::@389 Memory
VOID XboxMemInit(VOID)
Definition: xboxmem.c:58
VOID XboxVideoSetTextCursorPosition(UCHAR X, UCHAR Y)
Definition: xboxvideo.c:263
#define LPC_CONFIG_DEVICE_NUMBER
Definition: superio.h:30
VOID NTAPI WRITE_PORT_ULONG(IN PULONG Port, IN ULONG Value)
Definition: portio.c:123
BOOLEAN XboxDiskReadLogicalSectors(IN UCHAR DriveNumber, IN ULONGLONG SectorNumber, IN ULONG SectorCount, OUT PVOID Buffer)
Definition: xboxdisk.c:84
FIND_PCI_BIOS FindPciBios
Definition: hwpci.c:26
#define FALSE
Definition: types.h:117
BOOLEAN PcInitializeBootDevices(VOID)
Definition: hwdisk.c:470
UCHAR MajorRevision
Definition: pci.h:107
VOID(* VideoGetFontsFromFirmware)(PULONG RomFontPointers)
Definition: machine.h:49
int XboxConsGetCh(void)
Definition: xboxcons.c:76
unsigned char BOOLEAN
BOOLEAN(* DiskGetDriveGeometry)(UCHAR DriveNumber, PGEOMETRY DriveGeometry)
Definition: machine.h:68
VOID(* VideoSetTextCursorPosition)(UCHAR X, UCHAR Y)
Definition: machine.h:50
smooth NULL
Definition: ftsmooth.c:416
ULONG XboxVideoGetBufferSize(VOID)
Definition: xboxvideo.c:251
Definition: bufpool.h:45
void * PVOID
Definition: retypes.h:9
TIMEINFO *(* GetTime)(VOID)
Definition: machine.h:72
GET_HARDDISK_CONFIG_DATA GetHarddiskConfigurationData
Definition: pchw.c:45
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
Definition: halfuncs.h:156
VOID XboxVideoGetFontsFromFirmware(PULONG RomFontPointers)
Definition: xboxvideo.c:257
BOOLEAN(* InitializeBootDevices)(VOID)
Definition: machine.h:76
ULONG Sectors
Definition: disk.h:28
#define ExtendedBIOSDataArea
Definition: winldr.c:420
FORCEINLINE PVOID FrLdrHeapAlloc(SIZE_T MemorySize, ULONG Tag)
Definition: mm.h:163
#define TRACE(s)
Definition: solgame.cpp:4
DBG_DEFAULT_CHANNEL(HWDETECT)
VOID(* VideoGetPaletteColor)(UCHAR Color, UCHAR *Red, UCHAR *Green, UCHAR *Blue)
Definition: machine.h:56
BOOLEAN XboxVideoIsPaletteFixed(VOID)
Definition: xboxvideo.c:291
VOID __cdecl DiskStopFloppyMotor(VOID)
Definition: pc98hw.c:1244
PFREELDR_MEMORY_DESCRIPTOR XboxMemGetMemoryMap(ULONG *MemoryMapSize)
Definition: xboxmem.c:158
VOID XboxVideoGetDisplaySize(PULONG Width, PULONG Height, PULONG Depth)
Definition: xboxvideo.c:243
static const UCHAR Index[8]
Definition: usbohci.c:18
VOID XboxPrepareForReactOS(VOID)
Definition: machxbox.c:367
VOID XboxHwIdle(VOID)
Definition: machxbox.c:293
VOID DetectPciBios(PCONFIGURATION_COMPONENT_DATA SystemKey, ULONG *BusNumber)
Definition: hwpci.c:176
FORCEINLINE VOID LpcWriteRegister(UCHAR Register, UCHAR Value)
Definition: superio.h:67
BOOLEAN(* DiskReadLogicalSectors)(UCHAR DriveNumber, ULONGLONG SectorNumber, ULONG SectorCount, PVOID Buffer)
Definition: machine.h:67
BOOLEAN(* ConsKbHit)(VOID)
Definition: machine.h:42
PVOID FrameBuffer
Definition: xboxvideo.c:28
VOID XboxVideoSync(VOID)
Definition: xboxvideo.c:309
CHAR CmdLine[MAX_PATH]
Definition: mach.c:34
unsigned char UCHAR
Definition: xmlstorage.h:181
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]
Definition: hwresource.cpp:119
VOID(* VideoPutChar)(int Ch, UCHAR Attr, unsigned X, unsigned Y)
Definition: machine.h:52
VOID XboxVideoInit(VOID)
Definition: xboxvideo.c:196
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@384::@393 DeviceSpecificData
void XboxSetLED(PCSTR pattern)
Definition: xboxi2c.c:198
VOID XboxVideoPutChar(int Ch, UCHAR Attr, unsigned X, unsigned Y)
Definition: xboxvideo.c:136
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:361
static ULONG XboxGetSerialPort(ULONG Index, PULONG Irq)
Definition: machxbox.c:48
VOID(* VideoSetPaletteColor)(UCHAR Color, UCHAR Red, UCHAR Green, UCHAR Blue)
Definition: machine.h:55
VOID XboxVideoPrepareForReactOS(VOID)
Definition: xboxvideo.c:315
VOID XboxVideoHideShowTextCursor(BOOLEAN Show)
Definition: xboxvideo.c:269
VOID(* PrepareForReactOS)(VOID)
Definition: machine.h:59
VOID NTAPI FldrCreateComponentKey(IN PCONFIGURATION_COMPONENT_DATA SystemNode, IN CONFIGURATION_CLASS Class, IN CONFIGURATION_TYPE Type, IN IDENTIFIER_FLAG Flags, IN ULONG Key, IN ULONG Affinity, IN PCHAR IdentifierString, IN PCM_PARTIAL_RESOURCE_LIST ResourceList, IN ULONG Size, OUT PCONFIGURATION_COMPONENT_DATA *ComponentKey)
Definition: archwsup.c:147
ULONG(* VideoGetBufferSize)(VOID)
Definition: machine.h:48
int(* ConsGetCh)(VOID)
Definition: machine.h:43
#define ERR(fmt,...)
Definition: debug.h:110
ULONG(* DiskGetCacheableBlockCount)(UCHAR DriveNumber)
Definition: machine.h:69
VOID(* ConsPutChar)(int Ch)
Definition: machine.h:41
BOOLEAN XboxDiskGetDriveGeometry(UCHAR DriveNumber, PGEOMETRY Geometry)
Definition: xboxdisk.c:103
MACHVTBL MachVtbl
Definition: arcemul.c:21
ULONG BytesPerSector
Definition: disk.h:29
FORCEINLINE VOID LpcEnterConfig(VOID)
Definition: superio.h:43
VOID PcBeep(VOID)
Definition: pcbeep.c:34
VOID DetectSerialPointerPeripheral(PCONFIGURATION_COMPONENT_DATA ControllerKey, PUCHAR Base)
#define LPC_CONFIG_DEVICE_ACTIVATE
Definition: superio.h:31
ULONG FrameBufferSize
Definition: xboxvideo.c:29
VOID(* HwIdle)(VOID)
Definition: machine.h:78
Definition: disk.h:24
VOID HalpCalibrateStallExecution(VOID)
Definition: pchw.c:105
unsigned int * PULONG
Definition: retypes.h:1
UCHAR NoBuses
Definition: pci.h:109
#define CONFIG_CMD(bus, dev_fn, where)
Definition: hardware.h:23
VOID MachInit(const char *CmdLine)
Definition: machxbox.c:302
VOID(* VideoSync)(VOID)
Definition: machine.h:57
void __cdecl _disable(void)
Definition: intrin_arm.h:365
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
VOID XboxVideoSetPaletteColor(UCHAR Color, UCHAR Red, UCHAR Green, UCHAR Blue)
Definition: xboxvideo.c:297
unsigned int ULONG
Definition: retypes.h:1
VOID XboxVideoGetPaletteColor(UCHAR Color, UCHAR *Red, UCHAR *Green, UCHAR *Blue)
Definition: xboxvideo.c:303
VOID(* VideoCopyOffScreenBufferToVRAM)(PVOID Buffer)
Definition: machine.h:53
#define ULONG_PTR
Definition: config.h:101
VIDEODISPLAYMODE(* VideoSetDisplayMode)(char *DisplayMode, BOOLEAN Init)
Definition: machine.h:46
VOID NTAPI FldrCreateSystemKey(OUT PCONFIGURATION_COMPONENT_DATA *SystemNode)
Definition: archwsup.c:89
VOID XboxGetExtendedBIOSData(PULONG ExtendedBIOSDataArea, PULONG ExtendedBIOSDataSize)
Definition: machxbox.c:79
VIDEODISPLAYMODE XboxVideoSetDisplayMode(char *DisplayMode, BOOLEAN Init)
Definition: xboxvideo.c:236
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@384 u
#define CmResourceTypeMemory
Definition: hwresource.cpp:125
VOID(* Beep)(VOID)
Definition: machine.h:58
#define memset(x, y, z)
Definition: compat.h:39
TIMEINFO * XboxGetTime(VOID)
Definition: xboxrtc.c:40
FORCEINLINE ULONG LpcGetIrqPrimary()
Definition: superio.h:126
static VOID DetectIsaBios(PCONFIGURATION_COMPONENT_DATA SystemKey, ULONG *BusNumber)
Definition: machxbox.c:209
static PCM_PARTIAL_RESOURCE_LIST XboxGetHarddiskConfigurationData(UCHAR DriveNumber, ULONG *pSize)
Definition: machxbox.c:90
struct _CM_DISK_GEOMETRY_DEVICE_DATA CM_DISK_GEOMETRY_DEVICE_DATA
VOID XboxDiskInit(BOOLEAN Init)
Definition: xboxdisk.c:26
#define TAG_HW_RESOURCE_LIST
Definition: hardware.h:26
ULONG XboxDiskGetCacheableBlockCount(UCHAR DriveNumber)
Definition: xboxdisk.c:122
VOID(* VideoHideShowTextCursor)(BOOLEAN Show)
Definition: machine.h:51
ULONG Heads
Definition: disk.h:27