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

Go to the source code of this file.

Macros

#define PCI_DEV_PICCOLO_1   0x0101
 
#define PCI_DEV_PICCOLO_2   0x0102
 
#define PCI_DEV_PICCOLO_3   0x0103
 
#define PCI_DEV_PICCOLO_5   0x0105
 
#define PICCOLO_REG_PIO_TIMING   0x50
 
#define PICCOLO_REG_DMA_TIMING   0x5C
 
#define PICCOLO_PIO_MASK   0xFFFFE088
 
#define PICCOLO_DMA_MASK   0xFFFFE088
 
#define PICCOLO_UDMA_MASK   0x78FFE088
 

Functions

static VOID ToshibaSetTransferMode (_In_ PATA_CONTROLLER Controller, _In_ ULONG Channel, _In_reads_(MAX_IDE_DEVICE) PCHANNEL_DEVICE_CONFIG *DeviceList)
 
NTSTATUS ToshibaGetControllerProperties (_Inout_ PATA_CONTROLLER Controller)
 

Variables

static const ULONG PiccoloPioTimings []
 
static const ULONG PiccoloMwDmaTimings []
 
static const ULONG PiccoloUdmaTimings []
 

Macro Definition Documentation

◆ PCI_DEV_PICCOLO_1

#define PCI_DEV_PICCOLO_1   0x0101

Definition at line 19 of file toshiba.c.

◆ PCI_DEV_PICCOLO_2

#define PCI_DEV_PICCOLO_2   0x0102

Definition at line 20 of file toshiba.c.

◆ PCI_DEV_PICCOLO_3

#define PCI_DEV_PICCOLO_3   0x0103

Definition at line 21 of file toshiba.c.

◆ PCI_DEV_PICCOLO_5

#define PCI_DEV_PICCOLO_5   0x0105

Definition at line 22 of file toshiba.c.

◆ PICCOLO_DMA_MASK

#define PICCOLO_DMA_MASK   0xFFFFE088

Definition at line 28 of file toshiba.c.

◆ PICCOLO_PIO_MASK

#define PICCOLO_PIO_MASK   0xFFFFE088

Definition at line 27 of file toshiba.c.

◆ PICCOLO_REG_DMA_TIMING

#define PICCOLO_REG_DMA_TIMING   0x5C

Definition at line 25 of file toshiba.c.

◆ PICCOLO_REG_PIO_TIMING

#define PICCOLO_REG_PIO_TIMING   0x50

Definition at line 24 of file toshiba.c.

◆ PICCOLO_UDMA_MASK

#define PICCOLO_UDMA_MASK   0x78FFE088

Definition at line 29 of file toshiba.c.

Function Documentation

◆ ToshibaGetControllerProperties()

NTSTATUS ToshibaGetControllerProperties ( _Inout_ PATA_CONTROLLER  Controller)

Definition at line 102 of file toshiba.c.

104{
106 ULONG i;
107
108 PAGED_CODE();
109 ASSERT(Controller->Pci.VendorID == PCI_VEN_TOSHIBA);
110
111 if (Controller->Pci.DeviceID != PCI_DEV_PICCOLO_1 &&
112 Controller->Pci.DeviceID != PCI_DEV_PICCOLO_2 &&
113 Controller->Pci.DeviceID != PCI_DEV_PICCOLO_3 &&
114 Controller->Pci.DeviceID != PCI_DEV_PICCOLO_5)
115 {
116 return STATUS_NO_MATCH;
117 }
118
119 Controller->MaxChannels = 1;
120
121 Status = PciIdeCreateChannelData(Controller, 0);
122 if (!NT_SUCCESS(Status))
123 return Status;
124
125 for (i = 0; i < Controller->MaxChannels; ++i)
126 {
127 PCHANNEL_DATA_PATA ChanData = Controller->Channels[i];
128
129 ChanData->TransferModeSupported = PIO_ALL | MWDMA_ALL | UDMA_MODES(0, 2);
130 ChanData->SetTransferMode = ToshibaSetTransferMode;
131 }
132
133 return STATUS_SUCCESS;
134}
#define PAGED_CODE()
#define MWDMA_ALL
Definition: ata_user.h:27
#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
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_TOSHIBA
Definition: pata.h:17
#define UDMA_MODES(MinMode, MaxMode)
Definition: pata.h:49
NTSTATUS PciIdeCreateChannelData(_In_ PATA_CONTROLLER Controller, _In_ ULONG HwExtensionSize)
#define STATUS_SUCCESS
Definition: shellext.h:65
#define PCI_DEV_PICCOLO_3
Definition: toshiba.c:21
#define PCI_DEV_PICCOLO_5
Definition: toshiba.c:22
#define PCI_DEV_PICCOLO_1
Definition: toshiba.c:19
static VOID ToshibaSetTransferMode(_In_ PATA_CONTROLLER Controller, _In_ ULONG Channel, _In_reads_(MAX_IDE_DEVICE) PCHANNEL_DEVICE_CONFIG *DeviceList)
Definition: toshiba.c:58
#define PCI_DEV_PICCOLO_2
Definition: toshiba.c:20
uint32_t ULONG
Definition: typedefs.h:59

Referenced by PciIdeGetControllerProperties().

◆ ToshibaSetTransferMode()

static VOID ToshibaSetTransferMode ( _In_ PATA_CONTROLLER  Controller,
_In_ ULONG  Channel,
_In_reads_(MAX_IDE_DEVICE) PCHANNEL_DEVICE_CONFIG DeviceList 
)
static

Definition at line 58 of file toshiba.c.

62{
63 ULONG i;
64
66
67 for (i = 0; i < MAX_IDE_DEVICE; ++i)
68 {
70 ULONG TimingReg;
71
72 if (!Device)
73 continue;
74
75 TimingReg = PciRead32(Controller, PICCOLO_REG_PIO_TIMING);
76 TimingReg &= PICCOLO_PIO_MASK;
77 TimingReg |= PiccoloPioTimings[Device->PioMode];
78 PciWrite32(Controller, PICCOLO_REG_PIO_TIMING, TimingReg);
79
80 if (Device->DmaMode != PIO_MODE(0))
81 {
82 TimingReg = PciRead32(Controller, PICCOLO_REG_DMA_TIMING);
83
84 if (Device->DmaMode >= UDMA_MODE(0))
85 {
86 TimingReg &= PICCOLO_UDMA_MASK;
87 TimingReg |= PiccoloUdmaTimings[Device->DmaMode - UDMA_MODE(0)];
88 }
89 else
90 {
91 TimingReg &= PICCOLO_DMA_MASK;
92 TimingReg |= PiccoloMwDmaTimings[Device->DmaMode - MWDMA_MODE(0)];
93 }
94
95 PciWrite32(Controller, PICCOLO_REG_DMA_TIMING, TimingReg);
96 }
97 }
98}
#define PIO_MODE(n)
Definition: ata_user.h:36
#define MWDMA_MODE(n)
Definition: ata_user.h:38
#define UDMA_MODE(n)
Definition: ata_user.h:39
PDEVICE_LIST DeviceList
Definition: utils.c:27
#define MAX_IDE_DEVICE
Definition: ide.h:32
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:329
_In_ ULONG Channel
Definition: pciidex.h:74
FORCEINLINE VOID PciWrite32(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset, _In_ ULONG Value)
Definition: pciidex.h:903
FORCEINLINE ULONG PciRead32(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset)
Definition: pciidex.h:871
static const ULONG PiccoloMwDmaTimings[]
Definition: toshiba.c:40
#define PICCOLO_REG_DMA_TIMING
Definition: toshiba.c:25
#define PICCOLO_DMA_MASK
Definition: toshiba.c:28
static const ULONG PiccoloPioTimings[]
Definition: toshiba.c:31
#define PICCOLO_PIO_MASK
Definition: toshiba.c:27
#define PICCOLO_REG_PIO_TIMING
Definition: toshiba.c:24
#define PICCOLO_UDMA_MASK
Definition: toshiba.c:29
static const ULONG PiccoloUdmaTimings[]
Definition: toshiba.c:47
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474

Referenced by ToshibaGetControllerProperties().

Variable Documentation

◆ PiccoloMwDmaTimings

const ULONG PiccoloMwDmaTimings[]
static
Initial value:
=
{
0x0655,
0x0200,
0x0200,
}

Definition at line 40 of file toshiba.c.

Referenced by ToshibaSetTransferMode().

◆ PiccoloPioTimings

const ULONG PiccoloPioTimings[]
static
Initial value:
=
{
0x0566,
0x0433,
0x0311,
0x0201,
0x0200
}

Definition at line 31 of file toshiba.c.

Referenced by ToshibaSetTransferMode().

◆ PiccoloUdmaTimings

const ULONG PiccoloUdmaTimings[]
static
Initial value:
=
{
0x84000222,
0x83000111,
0x82000000,
}

Definition at line 47 of file toshiba.c.

Referenced by ToshibaSetTransferMode().