|
|
1.1 root 1:
2: /*
3: * Definitions for VDDC CONTROLLER operations
4: *
5: */
6:
7: #define RETRY 200
8: #define DELAY(n) { register N = 3*(n); while (--N > 0 ); }
9:
10: /* *****************
11: Device parameters
12: *****************
13: */
14:
15: #define UDC_BLKLEN 256 /* Block length on UDC */
16: #define SECTSIZ 256 /* sector size */
17: #define BLKSIZ 1024 /* Logical block size */
18:
19: struct DEVPAR {
20: long nocyl; /* No of cylinders */
21: long nohead; /* No of heads */
22: long notraks; /* No of data surfaces/cyl */
23: long secs_trak; /* No of sectors/track */
24: long sector_siz; /* Sector size */
25: char alive;
26: char name[5];
27: };
28:
29:
30:
31: /* **********************
32: VDDC packet structures
33: **********************
34: */
35:
36: struct MDCB { /* Master DCB : 4 longwords */
37: long fdcb_adr; /* 1st DCB address */
38: long dcb_active;/* address of DCB in progress */
39: long dcb_int; /* address of DCB causing interrupt */
40: long ctlr_stat; /* Controller status */
41: };
42:
43: struct DCB { /* DCB structure */
44: long nxt_dcb; /* Address of next DCB */
45: unsigned short int_flags; /* Interrupt,chain flags */
46: unsigned short opcode; /* opcode */
47: long dcb_stat; /* operation status */
48: unsigned short unused;
49: char dev_sel; /* Device select */
50: char trail_wcnt; /* Trailer word count */
51:
52: long err_memadr; /* These following fields are not */
53: unsigned short unused1; /* defined in the Manual. */
54: unsigned short err_wcount;
55: unsigned short err_track;
56: unsigned short err_cyl; /* Up to here !! */
57:
58: long trailer[255]; /* Trailer 0-256 longwords */
59: };
60:
61:
62: /*
63: ** DCB Command Codes
64: */
65:
66: #define RD_DATA 0x80 /* Read Data */
67: #define FTR 0xc0 /* Full Track Read */
68: #define RAS 0x90 /* Read and Scatter */
69: #define C 0xa0 /* Compare */
70: #define FTC 0xe0 /* Full Track Compare */
71: #define RHDE 0x180 /* Read Header, Data & ECC (not used) */
72: #define WD 0x00 /* Write Data */
73: #define FTW 0x40 /* Full Track Write */
74: #define WR_COMP 0x20 /* Write Then Compare */
75: #define FTWTC 0x60 /* Full Track Write Then Compare */
76: #define GAW 0x10 /* Gather and Write */
77: #define WDE 0x100 /* Write Data & ECC (not used) */
78: #define FORMAT 0x900 /* Format Sector */
79: #define GWC 0x30 /* Gather Write & Compare */
80: #define START_DR 0x800 /* Start drives */
81: #define STOP_DR 0xa00 /* Stop drives */
82: #define SEEK 0xb00 /* Seek */
83: #define INITIALIZE 0xc00 /* Initialize VDDC */
84: #define DIAGNOSE 0xd00 /* Diagnose (self-test) VDDC */
85: #define CONFIG 0xe00 /* Reset/Configure VDDC/DDI/Drive(s) */
86: #define STATUS 0xf00 /* VDDC Status */
87: /*
88: *************************
89: VDDC CONTROLLER PARAMETERS
90: *************************
91: */
92: #define IOBASE 0xff000000
93: #define VDDCBASE 0x00ff2000 /* VDDC device address 0x2X00 */
94: /* X is switch select */
95: #define VDDCVEC 0xe0 /* Vector no. of VDDC : 0xe0 */
96:
97: /* DCB longword no. 1 */
98: #define NO_CHAIN 0
99:
100: /* Numbers used to select device */
101: #define FSD0 0
102: #define FSD1 1
103: #define SMD0 2
104: #define SMD1 3
105:
106: /* DCB longword no. 2 */
107: #define NO_MODIFIER 0x0
108: #define SGATHER 0x100 /* scatter gather */
109: #define COMPARE 0x200 /* Compare */
110:
111: #define NOOP 0
112:
113: #define NO_INT 0
114: #define INT_DONE 1 /* Interrupt when done */
115: #define INT_ERROR 2 /* Interrupt on error */
116: #define INT_SUCCESS 3 /* Interupt on success */
117:
118: /* DCB longword no. 3 */
119: #define HARDERR_MASK 0xff /* Hard error mask */
120: #define SOFTERR_MASK 0xff00 /* Soft error mask */
121: #define DATA_CORRECT 0x100000 /* Controller performed data correct. */
122: #define HARD_ERROR 0x200000
123: #define SOFT_ERROR 0x400000
124: #define ANY_ERROR 0x800000 /* Any error : bit 20,21,22 set */
125:
126: #define DCB_ABORT 0x10000000 /* DCB aborted */
127: #define UNSUCCESS 0x20000000 /* Unsuccessful completion */
128: #define DCB_DONE 0x40000000
129: #define DCB_STARTED 0x80000000
130:
131:
132: #define INVL_CMD writes("\ninvalid command\n")
133:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.