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 *, int);
95 int t128_biosparam(int, int, int*);
96 int t128_detect(int);
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 {"Trantor T128/T128F/T228", t128_detect, t128_info,\
122 NULL, t128_queue_command, t128_abort, t128_reset, NULL, \
123 t128_biosparam, \
124 CAN_QUEUE, 7, SG_ALL, \
125 CMD_PER_LUN , 0, 0}
126
127 #else
128
129 #define NCR5380_implementation_fields \
130 volatile unsigned char *base
131
132 #define NCR5380_local_declare() \
133 volatile unsigned char *base
134
135 #define NCR5380_setup(instance) \
136 base = (volatile unsigned char *) (instance)->base
137
138 #define T128_address(reg) (base + T_5380_OFFSET + ((reg) * 0x20))
139
140 #if !(TDEBUG & TDEBUG_TRANSFER)
141 #define NCR5380_read(reg) (*(T128_address(reg)))
142 #define NCR5380_write(reg, value) (*(T128_address(reg)) = (value))
143 #else
144 #define NCR5380_read(reg) \
145 (((unsigned char) printk("scsi%d : read register %d at address %08x\n"\
146 , instance->hostno, (reg), T128_address(reg))), *(T128_address(reg)))
147
148 #define NCR5380_write(reg, value) { \
149 printk("scsi%d : write %02x to register %d at address %08x\n", \
150 instance->hostno, (value), (reg), T128_address(reg)); \
151 *(T128_address(reg)) = (value); \
152 }
153 #endif
154
155 #define NCR5380_intr t128_intr
156 #define NCR5380_queue_command t128_queue_command
157 #define NCR5380_abort t128_abort
158 #define NCR5380_reset t128_reset
159
160
161
162
163 #define T128_IRQS 0xc4a8
164
165 #endif
166 #endif
167 #endif