Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
ide
qd65xx.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2000 Linus Torvalds & authors
3
*/
4
5
/*
6
* Authors: Petr Soucek <
[email protected]
>
7
* Samuel Thibault <
[email protected]
>
8
*/
9
10
/* truncates a in [b,c] */
11
#define IDE_IN(a,b,c) ( ((a)<(b)) ? (b) : ( (a)>(c) ? (c) : (a)) )
12
13
#define IDE_IMPLY(a,b) ((!(a)) || (b))
14
15
#define QD_TIM1_PORT (base)
16
#define QD_CONFIG_PORT (base+0x01)
17
#define QD_TIM2_PORT (base+0x02)
18
#define QD_CONTROL_PORT (base+0x03)
19
20
#define QD_CONFIG_IDE_BASEPORT 0x01
21
#define QD_CONFIG_BASEPORT 0x02
22
#define QD_CONFIG_ID3 0x04
23
#define QD_CONFIG_DISABLED 0x08
24
#define QD_CONFIG_QD6500 0xc0
25
#define QD_CONFIG_QD6580_A 0xa0
26
#define QD_CONFIG_QD6580_B 0x50
27
28
#define QD_CONTR_SEC_DISABLED 0x01
29
30
#define QD_ID3 ((config & QD_CONFIG_ID3)!=0)
31
32
#define QD_CONFIG(hwif) ((hwif)->config_data & 0x00ff)
33
34
static
inline
u8
QD_TIMING(
ide_drive_t
*drive)
35
{
36
return
(
unsigned
long
)ide_get_drivedata(drive) & 0x00ff;
37
}
38
39
static
inline
u8
QD_TIMREG(
ide_drive_t
*drive)
40
{
41
return
((
unsigned
long
)ide_get_drivedata(drive) & 0xff00) >> 8;
42
}
43
44
#define QD6500_DEF_DATA ((QD_TIM1_PORT<<8) | (QD_ID3 ? 0x0c : 0x08))
45
#define QD6580_DEF_DATA ((QD_TIM1_PORT<<8) | (QD_ID3 ? 0x0a : 0x00))
46
#define QD6580_DEF_DATA2 ((QD_TIM2_PORT<<8) | (QD_ID3 ? 0x0a : 0x00))
47
#define QD_DEF_CONTR (0x40 | ((control & 0x02) ? 0x9f : 0x1f))
48
49
#define QD_TESTVAL 0x19
/* safe value */
50
51
/* Drive specific timing taken from DOS driver v3.7 */
52
53
static
struct
qd65xx_timing_s {
54
s8
offset
;
/* ofset from the beginning of Model Number" */
55
char
model
[4];
/* 4 chars from Model number, no conversion */
56
s16
active
;
/* active time */
57
s16
recovery;
/* recovery time */
58
} qd65xx_timing [] = {
59
{ 30,
"2040"
, 110, 225 },
/* Conner CP30204 */
60
{ 30,
"2045"
, 135, 225 },
/* Conner CP30254 */
61
{ 30,
"1040"
, 155, 325 },
/* Conner CP30104 */
62
{ 30,
"1047"
, 135, 265 },
/* Conner CP30174 */
63
{ 30,
"5344"
, 135, 225 },
/* Conner CP3544 */
64
{ 30,
"01 4"
, 175, 405 },
/* Conner CP-3104 */
65
{ 27,
"C030"
, 175, 375 },
/* Conner CP3000 */
66
{ 8,
"PL42"
, 110, 295 },
/* Quantum LP240 */
67
{ 8,
"PL21"
, 110, 315 },
/* Quantum LP120 */
68
{ 8,
"PL25"
, 175, 385 },
/* Quantum LP52 */
69
{ 4,
"PA24"
, 110, 285 },
/* WD Piranha SP4200 */
70
{ 6,
"2200"
, 110, 260 },
/* WD Caviar AC2200 */
71
{ 6,
"3204"
, 110, 235 },
/* WD Caviar AC2340 */
72
{ 6,
"1202"
, 110, 265 },
/* WD Caviar AC2120 */
73
{ 0,
"DS3-"
, 135, 315 },
/* Teac SD340 */
74
{ 8,
"KM32"
, 175, 355 },
/* Toshiba MK234 */
75
{ 2,
"53A1"
, 175, 355 },
/* Seagate ST351A */
76
{ 2,
"4108"
, 175, 295 },
/* Seagate ST1480A */
77
{ 2,
"1344"
, 175, 335 },
/* Seagate ST3144A */
78
{ 6,
"7 12"
, 110, 225 },
/* Maxtor 7213A */
79
{ 30,
"02F4"
, 145, 295 },
/* Conner 3204F */
80
{ 2,
"1302"
, 175, 335 },
/* Seagate ST3120A */
81
{ 2,
"2334"
, 145, 265 },
/* Seagate ST3243A */
82
{ 2,
"2338"
, 145, 275 },
/* Seagate ST3283A */
83
{ 2,
"3309"
, 145, 275 },
/* Seagate ST3390A */
84
{ 2,
"5305"
, 145, 275 },
/* Seagate ST3550A */
85
{ 2,
"4100"
, 175, 295 },
/* Seagate ST1400A */
86
{ 2,
"4110"
, 175, 295 },
/* Seagate ST1401A */
87
{ 2,
"6300"
, 135, 265 },
/* Seagate ST3600A */
88
{ 2,
"5300"
, 135, 265 },
/* Seagate ST3500A */
89
{ 6,
"7 31"
, 135, 225 },
/* Maxtor 7131 AT */
90
{ 6,
"7 43"
, 115, 265 },
/* Maxtor 7345 AT */
91
{ 6,
"7 42"
, 110, 255 },
/* Maxtor 7245 AT */
92
{ 6,
"3 04"
, 135, 265 },
/* Maxtor 340 AT */
93
{ 6,
"61 0"
, 135, 285 },
/* WD AC160 */
94
{ 6,
"1107"
, 135, 235 },
/* WD AC1170 */
95
{ 6,
"2101"
, 110, 220 },
/* WD AC1210 */
96
{ 6,
"4202"
, 135, 245 },
/* WD AC2420 */
97
{ 6,
"41 0"
, 175, 355 },
/* WD Caviar 140 */
98
{ 6,
"82 0"
, 175, 355 },
/* WD Caviar 280 */
99
{ 8,
"PL01"
, 175, 375 },
/* Quantum LP105 */
100
{ 8,
"PL25"
, 110, 295 },
/* Quantum LP525 */
101
{ 10,
"4S 2"
, 175, 385 },
/* Quantum ELS42 */
102
{ 10,
"8S 5"
, 175, 385 },
/* Quantum ELS85 */
103
{ 10,
"1S72"
, 175, 385 },
/* Quantum ELS127 */
104
{ 10,
"1S07"
, 175, 385 },
/* Quantum ELS170 */
105
{ 8,
"ZE42"
, 135, 295 },
/* Quantum EZ240 */
106
{ 8,
"ZE21"
, 175, 385 },
/* Quantum EZ127 */
107
{ 8,
"ZE58"
, 175, 385 },
/* Quantum EZ85 */
108
{ 8,
"ZE24"
, 175, 385 },
/* Quantum EZ42 */
109
{ 27,
"C036"
, 155, 325 },
/* Conner CP30064 */
110
{ 27,
"C038"
, 155, 325 },
/* Conner CP30084 */
111
{ 6,
"2205"
, 110, 255 },
/* WDC AC2250 */
112
{ 2,
" CHA"
, 140, 415 },
/* WDC AH series; WDC AH260, WDC */
113
{ 2,
" CLA"
, 140, 415 },
/* WDC AL series: WDC AL2120, 2170, */
114
{ 4,
"UC41"
, 140, 415 },
/* WDC CU140 */
115
{ 6,
"1207"
, 130, 275 },
/* WDC AC2170 */
116
{ 6,
"2107"
, 130, 275 },
/* WDC AC1270 */
117
{ 6,
"5204"
, 130, 275 },
/* WDC AC2540 */
118
{ 30,
"3004"
, 110, 235 },
/* Conner CP30340 */
119
{ 30,
"0345"
, 135, 255 },
/* Conner CP30544 */
120
{ 12,
"12A3"
, 175, 320 },
/* MAXTOR LXT-213A */
121
{ 12,
"43A0"
, 145, 240 },
/* MAXTOR LXT-340A */
122
{ 6,
"7 21"
, 180, 290 },
/* Maxtor 7120 AT */
123
{ 6,
"7 71"
, 135, 240 },
/* Maxtor 7170 AT */
124
{ 12,
"45\0000"
, 110, 205 },
/* MAXTOR MXT-540 */
125
{ 8,
"PL11"
, 180, 290 },
/* QUANTUM LP110A */
126
{ 8,
"OG21"
, 150, 275 },
/* QUANTUM GO120 */
127
{ 12,
"42A5"
, 175, 320 },
/* MAXTOR LXT-245A */
128
{ 2,
"2309"
, 175, 295 },
/* ST3290A */
129
{ 2,
"3358"
, 180, 310 },
/* ST3385A */
130
{ 2,
"6355"
, 180, 310 },
/* ST3655A */
131
{ 2,
"1900"
, 175, 270 },
/* ST9100A */
132
{ 2,
"1954"
, 175, 270 },
/* ST9145A */
133
{ 2,
"1909"
, 175, 270 },
/* ST9190AG */
134
{ 2,
"2953"
, 175, 270 },
/* ST9235A */
135
{ 2,
"1359"
, 175, 270 },
/* ST3195A */
136
{ 24,
"3R11"
, 175, 290 },
/* ALPS ELECTRIC Co.,LTD, DR311C */
137
{ 0,
"2M26"
, 175, 215 },
/* M262XT-0Ah */
138
{ 4,
"2253"
, 175, 300 },
/* HP C2235A */
139
{ 4,
"-32A"
, 145, 245 },
/* H3133-A2 */
140
{ 30,
"0326"
, 150, 270 },
/* Samsung Electronics 120MB */
141
{ 30,
"3044"
, 110, 195 },
/* Conner CFA340A */
142
{ 30,
"43A0"
, 110, 195 },
/* Conner CFA340A */
143
{ -1,
" "
, 175, 415 }
/* unknown disk name */
144
};
Generated on Thu Jan 10 2013 13:36:26 for Linux Kernel by
1.8.2