ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

pciide.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.