OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rc203soc/] [sw/] [uClinux/] [drivers/] [scsi/] [t128.h] - Blame information for rev 1626

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1626 jcastillo
/*
2
 * Trantor T128/T128F/T228 defines
3
 *      Note : architecturally, the T100 and T128 are different and won't work
4
 *
5
 * Copyright 1993, Drew Eckhardt
6
 *      Visionary Computing
7
 *      (Unix and Linux consulting and custom programming)
8
 *      drew@colorado.edu
9
 *      +1 (303) 440-4894
10
 *
11
 * DISTRIBUTION RELEASE 3.
12
 *
13
 * For more information, please consult
14
 *
15
 * Trantor Systems, Ltd.
16
 * T128/T128F/T228 SCSI Host Adapter
17
 * Hardware Specifications
18
 *
19
 * Trantor Systems, Ltd.
20
 * 5415 Randall Place
21
 * Fremont, CA 94538
22
 * 1+ (415) 770-1400, FAX 1+ (415) 770-9910
23
 *
24
 * and
25
 *
26
 * NCR 5380 Family
27
 * SCSI Protocol Controller
28
 * Databook
29
 *
30
 * NCR Microelectronics
31
 * 1635 Aeroplaza Drive
32
 * Colorado Springs, CO 80916
33
 * 1+ (719) 578-3400
34
 * 1+ (800) 334-5454
35
 */
36
 
37
/*
38
 * $Log: not supported by cvs2svn $
39
 * Revision 1.1.1.1  2001/09/10 07:44:35  simons
40
 * Initial import
41
 *
42
 * Revision 1.1.1.1  2001/07/02 17:58:27  simons
43
 * Initial revision
44
 *
45
 */
46
 
47
#ifndef T128_H
48
#define T128_H
49
 
50
#define T128_PUBLIC_RELEASE 3
51
 
52
#define TDEBUG_INIT     0x1
53
#define TDEBUG_TRANSFER 0x2
54
 
55
/*
56
 * The trantor boards are memory mapped. They use an NCR5380 or
57
 * equivalent (my sample board had part second sourced from ZILOG).
58
 * NCR's recommended "Pseudo-DMA" architecture is used, where
59
 * a PAL drives the DMA signals on the 5380 allowing fast, blind
60
 * transfers with proper handshaking.
61
 */
62
 
63
/*
64
 * Note : a boot switch is provided for the purpose of informing the
65
 * firmware to boot or not boot from attached SCSI devices.  So, I imagine
66
 * there are fewer people who've yanked the ROM like they do on the Seagate
67
 * to make bootup faster, and I'll probably use this for autodetection.
68
 */
69
#define T_ROM_OFFSET            0
70
 
71
/*
72
 * Note : my sample board *WAS NOT* populated with the SRAM, so this
73
 * can't be used for autodetection without a ROM present.
74
 */
75
#define T_RAM_OFFSET            0x1800
76
 
77
/*
78
 * All of the registers are allocated 32 bytes of address space, except
79
 * for the data register (read/write to/from the 5380 in pseudo-DMA mode)
80
 */
81
#define T_CONTROL_REG_OFFSET    0x1c00  /* rw */
82
#define T_CR_INT                0x10    /* Enable interrupts */
83
#define T_CR_CT                 0x02    /* Reset watchdog timer */
84
 
85
#define T_STATUS_REG_OFFSET     0x1c20  /* ro */
86
#define T_ST_BOOT               0x80    /* Boot switch */
87
#define T_ST_S3                 0x40    /* User settable switches, */
88
#define T_ST_S2                 0x20    /* read 0 when switch is on, 1 off */
89
#define T_ST_S1                 0x10
90
#define T_ST_PS2                0x08    /* Set for Microchannel 228 */
91
#define T_ST_RDY                0x04    /* 5380 DRQ */
92
#define T_ST_TIM                0x02    /* indicates 40us watchdog timer fired */
93
#define T_ST_ZERO               0x01    /* Always zero */
94
 
95
#define T_5380_OFFSET           0x1d00  /* 8 registers here, see NCR5380.h */
96
 
97
#define T_DATA_REG_OFFSET       0x1e00  /* rw 512 bytes long */
98
 
99
#ifndef ASM
100
int t128_abort(Scsi_Cmnd *);
101
int t128_biosparam(Disk *, kdev_t, int*);
102
int t128_detect(Scsi_Host_Template *);
103
int t128_queue_command(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
104
int t128_reset(Scsi_Cmnd *, unsigned int reset_flags);
105
int t128_proc_info (char *buffer, char **start, off_t offset,
106
                   int length, int hostno, int inout);
107
 
108
#ifndef NULL
109
#define NULL 0
110
#endif
111
 
112
#ifndef CMD_PER_LUN
113
#define CMD_PER_LUN 2
114
#endif
115
 
116
#ifndef CAN_QUEUE
117
#define CAN_QUEUE 32 
118
#endif
119
 
120
/*
121
 * I hadn't thought of this with the earlier drivers - but to prevent
122
 * macro definition conflicts, we shouldn't define all of the internal
123
 * macros when this is being used solely for the host stub.
124
 */
125
 
126
#if defined(HOSTS_C) || defined(MODULE)
127
 
128
#define TRANTOR_T128 {NULL, NULL, NULL, NULL, \
129
        "Trantor T128/T128F/T228", t128_detect, NULL,  \
130
        NULL,                                                   \
131
        NULL, t128_queue_command, t128_abort, t128_reset, NULL,         \
132
        t128_biosparam,                                                 \
133
        /* can queue */ CAN_QUEUE, /* id */ 7, SG_ALL,                  \
134
        /* cmd per lun */ CMD_PER_LUN , 0, 0, DISABLE_CLUSTERING}
135
 
136
#endif
137
 
138
#ifndef HOSTS_C
139
 
140
#define NCR5380_implementation_fields \
141
    volatile unsigned char *base
142
 
143
#define NCR5380_local_declare() \
144
    volatile unsigned char *base
145
 
146
#define NCR5380_setup(instance) \
147
    base = (volatile unsigned char *) (instance)->base
148
 
149
#define T128_address(reg) (base + T_5380_OFFSET + ((reg) * 0x20))
150
 
151
#if !(TDEBUG & TDEBUG_TRANSFER) 
152
#define NCR5380_read(reg) (*(T128_address(reg)))
153
#define NCR5380_write(reg, value) (*(T128_address(reg)) = (value))
154
#else
155
#define NCR5380_read(reg)                                               \
156
    (((unsigned char) printk("scsi%d : read register %d at address %08x\n"\
157
    , instance->hostno, (reg), T128_address(reg))), *(T128_address(reg)))
158
 
159
#define NCR5380_write(reg, value) {                                     \
160
    printk("scsi%d : write %02x to register %d at address %08x\n",      \
161
            instance->hostno, (value), (reg), T128_address(reg));       \
162
    *(T128_address(reg)) = (value);                                     \
163
}
164
#endif
165
 
166
#define NCR5380_intr t128_intr
167
#define NCR5380_queue_command t128_queue_command
168
#define NCR5380_abort t128_abort
169
#define NCR5380_reset t128_reset
170
#define NCR5380_proc_info t128_proc_info
171
 
172
/* 15 14 12 10 7 5 3
173
   1101 0100 1010 1000 */
174
 
175
#define T128_IRQS 0xc4a8 
176
 
177
#endif /* else def HOSTS_C */
178
#endif /* ndef ASM */
179
#endif /* T128_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.