Add few VDD API prototypes:
- VDDReserve/ReleaseIrqLine to get a "lock" on an IRQ line (so that VDDs can check whether some IRQs are free or not).
- Add DMA services.

svn path=/trunk/; revision=65436
This commit is contained in:
Hermès Bélusca-Maïto 2014-11-21 00:13:51 +00:00
parent b17f25b733
commit fc11139981

View file

@ -41,6 +41,27 @@ WINAPI
VDDTerminateVDM(VOID); VDDTerminateVDM(VOID);
/*
* IRQ services
*/
WORD
WINAPI
VDDReserveIrqLine
(
IN HANDLE hVdd,
IN WORD IrqLine
);
BOOL
WINAPI
VDDReleaseIrqLine
(
IN HANDLE hVdd,
IN WORD IrqLine
);
/* /*
* I/O Port services * I/O Port services
*/ */
@ -76,19 +97,69 @@ BOOL
WINAPI WINAPI
VDDInstallIOHook VDDInstallIOHook
( (
HANDLE hVdd, IN HANDLE hVdd,
WORD cPortRange, IN WORD cPortRange,
PVDD_IO_PORTRANGE pPortRange, IN PVDD_IO_PORTRANGE pPortRange,
PVDD_IO_HANDLERS IOhandler IN PVDD_IO_HANDLERS IOhandler
); );
VOID VOID
WINAPI WINAPI
VDDDeInstallIOHook VDDDeInstallIOHook
( (
HANDLE hVdd, IN HANDLE hVdd,
WORD cPortRange, IN WORD cPortRange,
PVDD_IO_PORTRANGE pPortRange IN PVDD_IO_PORTRANGE pPortRange
);
/*
* DMA services
*/
typedef struct _VDD_DMA_INFO
{
WORD addr;
WORD count;
WORD page;
BYTE status;
BYTE mode;
BYTE mask;
} VDD_DMA_INFO, *PVDD_DMA_INFO;
#define VDD_DMA_ADDR 0x01
#define VDD_DMA_COUNT 0x02
#define VDD_DMA_PAGE 0x04
#define VDD_DMA_STATUS 0x08
#define VDD_DMA_ALL (VDD_DMA_ADDR | VDD_DMA_COUNT | VDD_DMA_PAGE | VDD_DMA_STATUS)
DWORD
WINAPI
VDDRequestDMA
(
IN HANDLE hVdd,
IN WORD iChannel,
IN OUT PVOID Buffer,
IN DWORD length
);
BOOL
WINAPI
VDDQueryDMA
(
IN HANDLE hVdd,
IN WORD iChannel,
IN PVDD_DMA_INFO pDmaInfo
);
BOOL
WINAPI
VDDSetDMA
(
IN HANDLE hVdd,
IN WORD iChannel,
IN WORD fDMA,
IN PVDD_DMA_INFO pDmaInfo
); );