ReactOS 0.4.16-dev-2633-g8dc9e50
pata_legacy.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS ATA Bus Driver
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: Legacy (non-PnP) IDE controllers support
5 * COPYRIGHT: Copyright 2026 Dmitry Borisov <di.sean@protonmail.com>
6 */
7
8/* INCLUDES *******************************************************************/
9
10#include "pciidex.h"
11
12/* FUNCTIONS ******************************************************************/
13
14CODE_SEG("PAGE")
17 _Inout_ PATA_CONTROLLER Controller,
19{
20 PCHANNEL_DATA_PATA ChanData;
22
23 PAGED_CODE();
24 ASSERT(Controller->Flags & CTRL_FLAG_NON_PNP);
25
26 Controller->MaxChannels = 1;
27 Controller->ChannelBitmap = 0x1;
28 Controller->Flags &= ~CTRL_FLAG_NATIVE_PCI;
29 Controller->Flags |= CTRL_FLAG_MANUAL_RES;
30
31 Status = PciIdeCreateChannelData(Controller, 0);
32 if (!NT_SUCCESS(Status))
33 return Status;
34
35 ChanData = Controller->Channels[0];
36 ChanData->ChanInfo &= ~CHANNEL_FLAG_IO32;
37 ChanData->TransferModeSupported = PIO_ALL;
38
40 if (!NT_SUCCESS(Status))
41 return Status;
42
43#if defined(_M_IX86)
44 if (ChanData->ChanInfo & CHANNEL_FLAG_CBUS)
45 {
47
48 /* Check whether the 32-bit data port can be enabled on the southbridge */
53 {
54 ChanData->ChanInfo |= CHANNEL_FLAG_IO32;
55 }
56 }
57#endif
58
59 return STATUS_SUCCESS;
60}
#define PAGED_CODE()
#define CODE_SEG(...)
#define PIO_ALL
Definition: ata_user.h:19
LONG NTSTATUS
Definition: precomp.h:26
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
Status
Definition: gdiplustypes.h:25
#define ASSERT(a)
Definition: mode.c:44
#define _Inout_
Definition: no_sal2.h:162
#define _In_
Definition: no_sal2.h:158
#define PC98_ATA_BANK
Definition: pata.h:28
#define PC98_ATA_BANK_32BIT_PORT
Definition: pata.h:29
NTSTATUS PciIdeParseResources(_In_ PCHANNEL_DATA_PATA ChanData, _In_ PCM_RESOURCE_LIST ResourcesTranslated)
Definition: pata_generic.c:849
NTSTATUS PciIdeCreateChannelData(_In_ PATA_CONTROLLER Controller, _In_ ULONG HwExtensionSize)
NTSTATUS PataGetControllerProperties(_Inout_ PATA_CONTROLLER Controller, _In_ PCM_RESOURCE_LIST ResourcesTranslated)
Definition: pata_legacy.c:16
#define READ_PORT_UCHAR(p)
Definition: pc98vid.h:22
#define WRITE_PORT_UCHAR(p, d)
Definition: pc98vid.h:21
#define CHANNEL_FLAG_IO32
Definition: pciidex.h:260
#define CTRL_FLAG_NON_PNP
Definition: pciidex.h:228
#define CTRL_FLAG_MANUAL_RES
Definition: pciidex.h:229
#define CHANNEL_FLAG_CBUS
Definition: pciidex.h:283
#define STATUS_SUCCESS
Definition: shellext.h:65
unsigned char UCHAR
Definition: typedefs.h:53
unsigned char * PUCHAR
Definition: typedefs.h:53
_In_ WDFCMRESLIST _In_ WDFCMRESLIST ResourcesTranslated
Definition: wdfdevice.h:891
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:409