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 *, int, int*);
96 int t128_detect(Scsi_Host_Template *);
97 const char *t128_info(void);
98 int t128_queue_command(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
99 int t128_reset(Scsi_Cmnd *);
100
101 #ifndef NULL
102 #define NULL 0
103 #endif
104
105 #ifndef CMD_PER_LUN
106 #define CMD_PER_LUN 2
107 #endif
108
109 #ifndef CAN_QUEUE
110 #define CAN_QUEUE 32
111 #endif
112
113
114
115
116
117
118
119 #ifdef HOSTS_C
120
121 #define TRANTOR_T128 {NULL, "Trantor T128/T128F/T228", t128_detect, NULL, \
122 t128_info, \
123 NULL, t128_queue_command, t128_abort, t128_reset, NULL, \
124 t128_biosparam, \
125 CAN_QUEUE, 7, SG_ALL, \
126 CMD_PER_LUN , 0, 0, DISABLE_CLUSTERING}
127
128 #else
129
130 #define NCR5380_implementation_fields \
131 volatile unsigned char *base
132
133 #define NCR5380_local_declare() \
134 volatile unsigned char *base
135
136 #define NCR5380_setup(instance) \
137 base = (volatile unsigned char *) (instance)->base
138
139 #define T128_address(reg) (base + T_5380_OFFSET + ((reg) * 0x20))
140
141 #if !(TDEBUG & TDEBUG_TRANSFER)
142 #define NCR5380_read(reg) (*(T128_address(reg)))
143 #define NCR5380_write(reg, value) (*(T128_address(reg)) = (value))
144 #else
145 #define NCR5380_read(reg) \
146 (((unsigned char) printk("scsi%d : read register %d at address %08x\n"\
147 , instance->hostno, (reg), T128_address(reg))), *(T128_address(reg)))
148
149 #define NCR5380_write(reg, value) { \
150 printk("scsi%d : write %02x to register %d at address %08x\n", \
151 instance->hostno, (value), (reg), T128_address(reg)); \
152 *(T128_address(reg)) = (value); \
153 }
154 #endif
155
156 #define NCR5380_intr t128_intr
157 #define NCR5380_queue_command t128_queue_command
158 #define NCR5380_abort t128_abort
159 #define NCR5380_reset t128_reset
160
161
162
163
164 #define T128_IRQS 0xc4a8
165
166 #endif
167 #endif
168 #endif