reactos/reactos/include/internal/hal/ddk.h
Eric Kohl d2e85caa9e Improved debug output and
added hal READ_XXX and WRITE_XXX functions.

svn path=/trunk/; revision=715
1999-10-21 10:59:32 +00:00

229 lines
5 KiB
C

/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* FILE: include/internal/hal/ddk.h
* PURPOSE: HAL provided defintions for device drivers
* PROGRAMMER: David Welch (welch@mcmail.com)
* REVISION HISTORY:
* 23/06/98: Taken from linux system.h
*/
#ifndef __INCLUDE_INTERNAL_HAL_DDK_H
#define __INCLUDE_INTERNAL_HAL_DDK_H
#include <internal/ntoskrnl.h>
/* HalReturnToFirmware */
#define FIRMWARE_HALT 1
#define FIRMWARE_REBOOT 3
enum
{
DEVICE_DESCRIPTION_VERSION,
DEVICE_DESCRIPTION_VERSION1,
};
typedef ULONG DMA_WIDTH;
typedef ULONG DMA_SPEED;
typedef ULONG BUS_DATA_TYPE;
/*
* PURPOSE: Types for HalGetBusData
*/
enum
{
Cmos,
EisaConfiguration,
Pos,
PCIConfiguration,
MaximumBusDataType,
};
typedef struct _DEVICE_DESCRIPTION
{
ULONG Version;
BOOLEAN Master;
BOOLEAN ScatterGather;
BOOLEAN DemandMode;
BOOLEAN AutoInitialize;
BOOLEAN Dma32BitAddress;
BOOLEAN IgnoreCount;
BOOLEAN Reserved1;
BOOLEAN Reserved2;
ULONG BusNumber;
ULONG DmaChannel;
INTERFACE_TYPE InterfaceType;
DMA_WIDTH DmaWidth;
DMA_SPEED DmaSpeed;
ULONG MaximumLength;
ULONG DmaPort;
} DEVICE_DESCRIPTION, *PDEVICE_DESCRIPTION;
typedef BOOLEAN (*PHAL_RESET_DISPLAY_PARAMETERS)(ULONG Columns, ULONG Rows);
VOID HalAcquireDisplayOwnership (
PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters);
PVOID HalAllocateCommonBuffer(PADAPTER_OBJECT AdapterObject,
ULONG Length,
PPHYSICAL_ADDRESS LogicalAddress,
BOOLEAN CacheEnabled);
NTSTATUS HalAssignSlotResources(PUNICODE_STRING RegistryPath,
PUNICODE_STRING DriverClassName,
PDRIVER_OBJECT DriverObject,
PDEVICE_OBJECT DeviceObject,
INTERFACE_TYPE BusType,
ULONG BusNumber,
ULONG SlotNumber,
PCM_RESOURCE_LIST* AllocatedResources);
VOID HalDisplayString (PCH String);
VOID HalExamineMBR(PDEVICE_OBJECT DeviceObject,
ULONG SectorSize,
ULONG MBRTypeIdentifier,
PVOID Buffer);
VOID HalFreeCommonBuffer(PADAPTER_OBJECT AdapterObject,
ULONG Length,
PHYSICAL_ADDRESS LogicalAddress,
PVOID VirtualAddress,
BOOLEAN CacheEnabled);
PADAPTER_OBJECT HalGetAdapter(PDEVICE_DESCRIPTION DeviceDescription,
PULONG NumberOfMapRegisters);
ULONG HalGetBusData(BUS_DATA_TYPE BusDataType,
ULONG BusNumber,
ULONG SlotNumber,
PVOID Buffer,
ULONG Length);
ULONG HalGetBusDataByOffset(BUS_DATA_TYPE BusDataType,
ULONG BusNumber,
ULONG SlotNumber,
PVOID Buffer,
ULONG Offset,
ULONG Length);
ULONG HalGetDmaAlignmentRequirement(VOID);
ULONG HalGetInterruptVector(INTERFACE_TYPE InterfaceType,
ULONG BusNumber,
ULONG BusInterruptLevel,
ULONG BusInterruptVector,
PKIRQL Irql,
PKAFFINITY Affinity);
BOOLEAN HalInitSystem (ULONG Phase,
boot_param *bp);
BOOLEAN HalMakeBeep (ULONG Frequency);
VOID HalQueryDisplayParameters(PULONG DispSizeX,
PULONG DispSizeY,
PULONG CursorPosX,
PULONG CursorPosY);
VOID HalQueryRealTimeClock(PTIME_FIELDS pTime);
VOID HalQuerySystemInformation(VOID);
ULONG HalReadDmaCounter(PADAPTER_OBJECT AdapterObject);
VOID HalReturnToFirmware(ULONG Action);
ULONG HalSetBusData(BUS_DATA_TYPE BusDataType,
ULONG BusNumber,
ULONG SlotNumber,
PVOID Buffer,
ULONG Length);
ULONG HalSetBusDataByOffset(BUS_DATA_TYPE BusDataType,
ULONG BusNumber,
ULONG SlotNumber,
PVOID Buffer,
ULONG Offset,
ULONG Length);
VOID HalSetDisplayParameters(ULONG CursorPosX,
ULONG CursorPosY);
BOOLEAN HalTranslateBusAddress(INTERFACE_TYPE InterfaceType,
ULONG BusNumber,
PHYSICAL_ADDRESS BusAddress,
PULONG AddressSpace,
PPHYSICAL_ADDRESS TranslatedAddress);
/*
* Kernel debugger section
*/
typedef struct _KD_PORT_INFORMATION
{
ULONG ComPort;
ULONG BaudRate;
ULONG BaseAddress;
} KD_PORT_INFORMATION, *PKD_PORT_INFORMATION;
extern ULONG KdComPortInUse;
BOOLEAN
STDCALL
KdPortInitialize (PKD_PORT_INFORMATION PortInformation,
DWORD Unknown1,
DWORD Unknown2);
VOID
STDCALL
KdPortPutByte (UCHAR ByteToSend);
/*
* Port I/O functions
*/
UCHAR
READ_PORT_BUFFER_UCHAR (PUCHAR Port, PUCHAR Value, ULONG Count);
ULONG
READ_PORT_BUFFER_ULONG (PULONG Port, PULONG Value, ULONG Count);
USHORT
READ_PORT_BUFFER_USHORT (PUSHORT Port, PUSHORT Value, ULONG Count);
UCHAR
READ_PORT_UCHAR (PUCHAR Port);
ULONG
READ_PORT_ULONG (PULONG Port);
USHORT
READ_PORT_USHORT (PUSHORT Port);
VOID
WRITE_PORT_BUFFER_UCHAR (PUCHAR Port, PUCHAR Value, ULONG Count);
VOID
WRITE_PORT_BUFFER_ULONG (PULONG Port, PULONG Value, ULONG Count);
VOID
WRITE_PORT_BUFFER_USHORT (PUSHORT Port, PUSHORT Value, ULONG Count);
VOID
WRITE_PORT_UCHAR (PUCHAR Port, UCHAR Value);
VOID
WRITE_PORT_ULONG (PULONG Port, ULONG Value);
VOID
WRITE_PORT_USHORT (PUSHORT Port, USHORT Value);
#endif /* __INCLUDE_INTERNAL_HAL_DDK_H */