ReactOS 0.4.17-dev-116-ga4b6fe9
pciide.c
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: PCI IDE bus driver
4 * FILE: drivers/storage/pciide/pciide.c
5 * PURPOSE: Main file
6 * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org)
7 */
8
9#include "pciide.h"
10
11#define NDEBUG
12#include <debug.h>
13
16 IN PVOID DeviceExtension,
18{
19 DPRINT("PciIdeChannelEnabled(%p, %lu)\n", DeviceExtension, Channel);
20
22}
23
26 IN PVOID DeviceExtension)
27{
28 DPRINT("PciIdeSyncAccessRequired %p\n", DeviceExtension);
29
30 return FALSE;
31}
32
35 IN PVOID DeviceExtension,
36 IN PUCHAR CdbCommand,
37 IN PUCHAR Slave)
38{
39 DPRINT("PciIdeUseDma(%p %p %p)\n", DeviceExtension, CdbCommand, Slave);
40
41 /* Nothing should prevent us to use DMA */
42 return 1;
43}
44
47 IN PVOID DeviceExtension,
48 OUT PIDE_CONTROLLER_PROPERTIES ControllerProperties)
49{
50 ULONG SupportedMode;
51 USHORT PciCommand;
52
53 if (ControllerProperties->Size != sizeof(IDE_CONTROLLER_PROPERTIES))
55
56 ControllerProperties->PciIdeChannelEnabled = PciIdeChannelEnabled;
57 ControllerProperties->PciIdeSyncAccessRequired = PciIdeSyncAccessRequired;
58 ControllerProperties->IgnoreActiveBitForAtaDevice = FALSE;
59 ControllerProperties->AlwaysClearBusMasterInterrupt = TRUE;
60 ControllerProperties->PciIdeUseDma = PciIdeUseDma;
61 ControllerProperties->AlignmentRequirement = 1;
62
63 PciIdeXGetBusData(DeviceExtension,
64 &PciCommand,
66 sizeof(PciCommand));
67 if (!(PciCommand & PCI_ENABLE_BUS_MASTER))
68 {
69 SupportedMode = PIO_MODE0 | PIO_MODE1 | PIO_MODE2 | PIO_MODE3 | PIO_MODE4;
70 }
71 else
72 {
73 SupportedMode = PIO_MODE0 | PIO_MODE1 | PIO_MODE2 | PIO_MODE3 | PIO_MODE4 |
78 }
79
80 ControllerProperties->SupportedTransferMode[0][0] =
81 ControllerProperties->SupportedTransferMode[0][1] =
82 ControllerProperties->SupportedTransferMode[1][0] =
83 ControllerProperties->SupportedTransferMode[1][1] = SupportedMode;
84
85 return STATUS_SUCCESS;
86}
87
92{
94
99 0);
100
101 return Status;
102}
unsigned char BOOLEAN
Definition: actypes.h:127
LONG NTSTATUS
Definition: precomp.h:26
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
DRIVER_INITIALIZE DriverEntry
Definition: condrv.c:21
Status
Definition: gdiplustypes.h:25
#define SWDMA_MODE2
Definition: ide.h:285
#define UDMA_MODE6
Definition: ide.h:297
#define UDMA_MODE0
Definition: ide.h:291
#define UDMA_MODE2
Definition: ide.h:293
#define PIO_MODE4
Definition: ide.h:281
#define MWDMA_MODE0
Definition: ide.h:287
#define PIO_MODE0
Definition: ide.h:277
#define UDMA_MODE4
Definition: ide.h:295
#define PIO_MODE2
Definition: ide.h:279
IDE_CHANNEL_STATE
Definition: ide.h:196
@ ChannelStateUnknown
Definition: ide.h:199
#define UDMA_MODE1
Definition: ide.h:292
#define PIO_MODE3
Definition: ide.h:280
#define UDMA_MODE5
Definition: ide.h:296
#define SWDMA_MODE1
Definition: ide.h:284
#define PIO_MODE1
Definition: ide.h:278
#define SWDMA_MODE0
Definition: ide.h:283
#define MWDMA_MODE1
Definition: ide.h:288
#define MWDMA_MODE2
Definition: ide.h:289
#define UDMA_MODE3
Definition: ide.h:294
#define STATUS_REVISION_MISMATCH
Definition: ntstatus.h:419
BOOLEAN NTAPI PciIdeSyncAccessRequired(IN PVOID DeviceExtension)
Definition: pciide.c:25
IDE_CHANNEL_STATE NTAPI PciIdeChannelEnabled(IN PVOID DeviceExtension, IN ULONG Channel)
Definition: pciide.c:15
NTSTATUS NTAPI PciIdeGetControllerProperties(IN PVOID DeviceExtension, OUT PIDE_CONTROLLER_PROPERTIES ControllerProperties)
Definition: pciide.c:46
ULONG NTAPI PciIdeUseDma(IN PVOID DeviceExtension, IN PUCHAR CdbCommand, IN PUCHAR Slave)
Definition: pciide.c:34
NTSTATUS NTAPI PciIdeXInitialize(_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath, _In_ PCONTROLLER_PROPERTIES HwGetControllerProperties, _In_ ULONG ExtensionSize)
Definition: pciidex.c:514
_In_ ULONG Channel
Definition: pciidex.h:74
unsigned short USHORT
Definition: pedump.c:61
#define STATUS_SUCCESS
Definition: shellext.h:65
#define DPRINT
Definition: sndvol32.h:73
NTSTATUS NTAPI PciIdeXGetBusData(_In_ PVOID DeviceExtension, _Out_writes_bytes_all_(BufferLength) PVOID Buffer, _In_ ULONG ConfigDataOffset, _In_ ULONG BufferLength)
Definition: miniport.c:59
Definition: shell.h:41
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
#define NTAPI
Definition: typedefs.h:36
#define IN
Definition: typedefs.h:39
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
Definition: wdfdriver.h:215
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
#define PCI_ENABLE_BUS_MASTER
Definition: iotypes.h:3620