ReactOS 0.4.16-dev-2633-g8dc9e50
ati.c File Reference
#include "pciidex.h"
Include dependency graph for ati.c:

Go to the source code of this file.

Macros

#define PCI_DEV_IXP200_IDE   0x4349
 
#define PCI_DEV_IXP300_IDE   0x4369
 
#define PCI_DEV_IXP400_IDE   0x4376
 
#define PCI_DEV_IXP600_IDE   0x438C
 
#define PCI_DEV_IXP700_IDE   0x439C
 

Functions

NTSTATUS AtiGetControllerProperties (_Inout_ PATA_CONTROLLER Controller)
 

Variables

static PCIIDEX_PAGED_DATA const ATA_PCI_ENABLE_BITS AtiEnableBits [MAX_IDE_CHANNEL]
 

Macro Definition Documentation

◆ PCI_DEV_IXP200_IDE

#define PCI_DEV_IXP200_IDE   0x4349

Definition at line 19 of file ati.c.

◆ PCI_DEV_IXP300_IDE

#define PCI_DEV_IXP300_IDE   0x4369

Definition at line 20 of file ati.c.

◆ PCI_DEV_IXP400_IDE

#define PCI_DEV_IXP400_IDE   0x4376

Definition at line 21 of file ati.c.

◆ PCI_DEV_IXP600_IDE

#define PCI_DEV_IXP600_IDE   0x438C

Definition at line 22 of file ati.c.

◆ PCI_DEV_IXP700_IDE

#define PCI_DEV_IXP700_IDE   0x439C

Definition at line 23 of file ati.c.

Function Documentation

◆ AtiGetControllerProperties()

NTSTATUS AtiGetControllerProperties ( _Inout_ PATA_CONTROLLER  Controller)

Definition at line 36 of file ati.c.

38{
40 ULONG i;
41
42 PAGED_CODE();
43 ASSERT(Controller->Pci.VendorID == PCI_VEN_ATI);
44
45 if (Controller->Pci.DeviceID != PCI_DEV_IXP200_IDE &&
46 Controller->Pci.DeviceID != PCI_DEV_IXP300_IDE &&
47 Controller->Pci.DeviceID != PCI_DEV_IXP400_IDE &&
48 Controller->Pci.DeviceID != PCI_DEV_IXP600_IDE &&
49 Controller->Pci.DeviceID != PCI_DEV_IXP700_IDE)
50 {
51 return STATUS_NO_MATCH;
52 }
53
54 Controller->ChannelEnableBits = AtiEnableBits;
55
56 if (Controller->Pci.DeviceID == PCI_DEV_IXP600_IDE)
57 Controller->MaxChannels = 1;
58
59 Status = PciIdeCreateChannelData(Controller, 0);
60 if (!NT_SUCCESS(Status))
61 return Status;
62
63 for (i = 0; i < Controller->MaxChannels; ++i)
64 {
65 PCHANNEL_DATA_PATA ChanData = Controller->Channels[i];
66
67 ChanData->SetTransferMode = SvwSetTransferMode;
68 ChanData->TransferModeSupported = PIO_ALL | MWDMA_ALL | UDMA_MODES(0, 5);
69
70 if (Controller->Pci.DeviceID == PCI_DEV_IXP200_IDE)
71 ChanData->TransferModeSupported &= ~UDMA_MODE5;
72
73 if (!SvwHasUdmaCable(Controller, i))
74 {
75 INFO("CH %lu: BIOS hasn't selected mode faster than UDMA 2, "
76 "assume 40-conductor cable\n",
77 ChanData->Channel);
78 ChanData->TransferModeSupported &= ~UDMA_80C_ALL;
79 }
80 }
81
82 return STATUS_SUCCESS;
83}
#define PAGED_CODE()
#define MWDMA_ALL
Definition: ata_user.h:27
#define PIO_ALL
Definition: ata_user.h:19
static PCIIDEX_PAGED_DATA const ATA_PCI_ENABLE_BITS AtiEnableBits[MAX_IDE_CHANNEL]
Definition: ati.c:26
#define PCI_DEV_IXP200_IDE
Definition: ati.c:19
#define PCI_DEV_IXP700_IDE
Definition: ati.c:23
#define PCI_DEV_IXP600_IDE
Definition: ati.c:22
#define PCI_DEV_IXP400_IDE
Definition: ati.c:21
#define PCI_DEV_IXP300_IDE
Definition: ati.c:20
LONG NTSTATUS
Definition: precomp.h:26
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
#define INFO
Definition: debug.h:89
Status
Definition: gdiplustypes.h:25
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define ASSERT(a)
Definition: mode.c:44
#define STATUS_NO_MATCH
Definition: ntstatus.h:873
#define PCI_VEN_ATI
Definition: pata.h:10
#define UDMA_MODES(MinMode, MaxMode)
Definition: pata.h:49
NTSTATUS PciIdeCreateChannelData(_In_ PATA_CONTROLLER Controller, _In_ ULONG HwExtensionSize)
CHANNEL_SET_MODE_EX SvwSetTransferMode
Definition: pciidex.h:813
#define STATUS_SUCCESS
Definition: shellext.h:65
BOOLEAN SvwHasUdmaCable(_In_ PATA_CONTROLLER Controller, _In_ ULONG Channel)
Definition: svw_pata.c:213
uint32_t ULONG
Definition: typedefs.h:59

Referenced by PciIdeGetControllerProperties().

Variable Documentation

◆ AtiEnableBits

Initial value:
=
{
{ 0x48, 0x01, 0x00 },
{ 0x48, 0x08, 0x00 },
}

Definition at line 26 of file ati.c.

Referenced by AtiGetControllerProperties().