1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 #ifndef T128_H
42 #define T128_H
43
44 #define T128_PUBLIC_RELEASE 3
45
46 #define TDEBUG_INIT 0x1
47 #define TDEBUG_TRANSFER 0x2
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 #define T_ROM_OFFSET 0
64
65
66
67
68
69 #define T_RAM_OFFSET 0x1800
70
71
72
73
74
75 #define T_CONTROL_REG_OFFSET 0x1c00
76 #define T_CR_INT 0x10
77 #define T_CR_CT 0x02
78
79 #define T_STATUS_REG_OFFSET 0x1c20
80 #define T_ST_BOOT 0x80
81 #define T_ST_S3 0x40
82 #define T_ST_S2 0x20
83 #define T_ST_S1 0x10
84 #define T_ST_PS2 0x08
85 #define T_ST_RDY 0x04
86 #define T_ST_TIM 0x02
87 #define T_ST_ZERO 0x01
88
89 #define T_5380_OFFSET 0x1d00
90
91 #define T_DATA_REG_OFFSET 0x1e00
92
93 #ifndef ASM
94 int t128_abort(Scsi_Cmnd *);
95 int t128_biosparam(Disk *, kdev_t, int*);
96 int t128_detect(Scsi_Host_Template *);
97 int t128_queue_command(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
98 int t128_reset(Scsi_Cmnd *, unsigned int reset_flags);
99 int t128_proc_info (char *buffer, char **start, off_t offset,
100 int length, int hostno, int inout);
101
102 #ifndef NULL
103 #define NULL 0
104 #endif
105
106 #ifndef CMD_PER_LUN
107 #define CMD_PER_LUN 2
108 #endif
109
110 #ifndef CAN_QUEUE
111 #define CAN_QUEUE 32
112 #endif
113
114
115
116
117
118
119
120 #if defined(HOSTS_C) || defined(MODULE)
121
122 #define TRANTOR_T128 {NULL, NULL, NULL, NULL, \
123 "Trantor T128/T128F/T228", t128_detect, NULL, \
124 NULL, \
125 NULL, t128_queue_command, t128_abort, t128_reset, NULL, \
126 t128_biosparam, \
127 CAN_QUEUE, 7, SG_ALL, \
128 CMD_PER_LUN , 0, 0, DISABLE_CLUSTERING}
129
130 #endif
131
132 #ifndef HOSTS_C
133
134 #define NCR5380_implementation_fields \
135 volatile unsigned char *base
136
137 #define NCR5380_local_declare() \
138 volatile unsigned char *base
139
140 #define NCR5380_setup(instance) \
141 base = (volatile unsigned char *) (instance)->base
142
143 #define T128_address(reg) (base + T_5380_OFFSET + ((reg) * 0x20))
144
145 #if !(TDEBUG & TDEBUG_TRANSFER)
146 #define NCR5380_read(reg) (*(T128_address(reg)))
147 #define NCR5380_write(reg, value) (*(T128_address(reg)) = (value))
148 #else
149 #define NCR5380_read(reg) \
150 (((unsigned char) printk("scsi%d : read register %d at address %08x\n"\
151 , instance->hostno, (reg), T128_address(reg))), *(T128_address(reg)))
152
153 #define NCR5380_write(reg, value) { \
154 printk("scsi%d : write %02x to register %d at address %08x\n", \
155 instance->hostno, (value), (reg), T128_address(reg)); \
156 *(T128_address(reg)) = (value); \
157 }
158 #endif
159
160 #define NCR5380_intr t128_intr
161 #define NCR5380_queue_command t128_queue_command
162 #define NCR5380_abort t128_abort
163 #define NCR5380_reset t128_reset
164 #define NCR5380_proc_info t128_proc_info
165
166
167
168
169 #define T128_IRQS 0xc4a8
170
171 #endif
172 #endif
173 #endif