Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenpciide.c
Go to the documentation of this file.
00001 /* 00002 * COPYRIGHT: See COPYING in the top level directory 00003 * PROJECT: PCI IDE bus driver 00004 * FILE: drivers/storage/pciide/pciide.c 00005 * PURPOSE: Main file 00006 * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org) 00007 */ 00008 00009 #include "pciide.h" 00010 00011 #define NDEBUG 00012 #include <debug.h> 00013 00014 IDE_CHANNEL_STATE NTAPI 00015 PciIdeChannelEnabled( 00016 IN PVOID DeviceExtension, 00017 IN ULONG Channel) 00018 { 00019 PCI_COMMON_CONFIG PciConfig; 00020 NTSTATUS Status; 00021 00022 DPRINT("PciIdeChannelEnabled(%p, %lu)\n", DeviceExtension, Channel); 00023 00024 Status = PciIdeXGetBusData( 00025 DeviceExtension, 00026 &PciConfig, 00027 0, 00028 PCI_COMMON_HDR_LENGTH); 00029 if (!NT_SUCCESS(Status)) 00030 { 00031 DPRINT("PciIdeXGetBusData() failed with status 0x%08lx\n", Status); 00032 return ChannelStateUnknown; 00033 } 00034 00035 if (PCI_CONFIGURATION_TYPE(&PciConfig) != PCI_DEVICE_TYPE) 00036 { 00037 DPRINT("Wrong PCI card type. Disabling IDE channel #%lu\n", Channel); 00038 return ChannelDisabled; 00039 } 00040 00041 if (PciConfig.BaseClass != PCI_CLASS_MASS_STORAGE_CTLR || PciConfig.SubClass != PCI_SUBCLASS_MSC_IDE_CTLR) 00042 { 00043 DPRINT("Wrong PCI card base class/sub class. Disabling IDE channel #%lu\n", Channel); 00044 return ChannelDisabled; 00045 } 00046 00047 return ChannelStateUnknown; 00048 } 00049 00050 BOOLEAN NTAPI 00051 PciIdeSyncAccessRequired( 00052 IN PVOID DeviceExtension) 00053 { 00054 DPRINT1("PciIdeSyncAccessRequired %p\n", DeviceExtension); 00055 00056 return FALSE; /* FIXME */ 00057 } 00058 00059 NTSTATUS NTAPI 00060 PciIdeTransferModeSelect( 00061 IN PVOID DeviceExtension, 00062 IN PPCIIDE_TRANSFER_MODE_SELECT XferMode) 00063 { 00064 ULONG i; 00065 00066 DPRINT1("PciIdeTransferModeSelect(%p %p)\n", DeviceExtension, XferMode); 00067 00068 for (i = 0; i < MAX_IDE_DEVICE; i++) 00069 XferMode->DevicePresent[i] = FALSE; /* FIXME */ 00070 00071 return STATUS_SUCCESS; 00072 } 00073 00074 ULONG NTAPI 00075 PciIdeUseDma( 00076 IN PVOID DeviceExtension, 00077 IN PUCHAR CdbCommand, 00078 IN PUCHAR Slave) 00079 { 00080 DPRINT("PciIdeUseDma(%p %p %p)\n", DeviceExtension, CdbCommand, Slave); 00081 00082 /* Nothing should prevent us to use DMA */ 00083 return 1; 00084 } 00085 00086 NTSTATUS NTAPI 00087 PciIdeGetControllerProperties( 00088 IN PVOID DeviceExtension, 00089 OUT PIDE_CONTROLLER_PROPERTIES ControllerProperties) 00090 { 00091 if (ControllerProperties->Size != sizeof(IDE_CONTROLLER_PROPERTIES)) 00092 return STATUS_REVISION_MISMATCH; 00093 00094 ControllerProperties->PciIdeChannelEnabled = PciIdeChannelEnabled; 00095 ControllerProperties->PciIdeSyncAccessRequired = PciIdeSyncAccessRequired; 00096 ControllerProperties->PciIdeTransferModeSelect = PciIdeTransferModeSelect; 00097 ControllerProperties->IgnoreActiveBitForAtaDevice = FALSE; 00098 ControllerProperties->AlwaysClearBusMasterInterrupt = TRUE; 00099 ControllerProperties->PciIdeUseDma = PciIdeUseDma; 00100 ControllerProperties->AlignmentRequirement = 1; 00101 ControllerProperties->DefaultPIO = 0; /* FIXME */ 00102 ControllerProperties->PciIdeUdmaModesSupported = NULL; /* optional */ 00103 00104 ControllerProperties->SupportedTransferMode[0][0] = 00105 ControllerProperties->SupportedTransferMode[0][1] = 00106 ControllerProperties->SupportedTransferMode[1][0] = 00107 ControllerProperties->SupportedTransferMode[1][1] = 00108 PIO_MODE0 | PIO_MODE1 | PIO_MODE2 | PIO_MODE3 | PIO_MODE4 | 00109 SWDMA_MODE0 | SWDMA_MODE1 | SWDMA_MODE2 | 00110 MWDMA_MODE0 | MWDMA_MODE1 | MWDMA_MODE2 | 00111 UDMA_MODE0 | UDMA_MODE1 | UDMA_MODE2 | UDMA_MODE3 | UDMA_MODE4; 00112 00113 return STATUS_SUCCESS; 00114 } 00115 00116 NTSTATUS NTAPI 00117 DriverEntry( 00118 IN PDRIVER_OBJECT DriverObject, 00119 IN PUNICODE_STRING RegistryPath) 00120 { 00121 NTSTATUS Status; 00122 00123 Status = PciIdeXInitialize( 00124 DriverObject, 00125 RegistryPath, 00126 PciIdeGetControllerProperties, 00127 0); 00128 00129 return Status; 00130 } Generated on Sun May 27 2012 04:28:22 for ReactOS by
1.7.6.1
|