globals.h revision 1.12.4.2 1 1.12.4.2 jruoho /* $NetBSD: globals.h,v 1.12.4.2 2011/06/06 09:06:35 jruoho Exp $ */
2 1.12.4.2 jruoho
3 1.12.4.2 jruoho #ifdef DEBUG
4 1.12.4.2 jruoho #define DPRINTF(x) printf x
5 1.12.4.2 jruoho #else
6 1.12.4.2 jruoho #define DPRINTF(x)
7 1.12.4.2 jruoho #endif
8 1.12.4.2 jruoho
9 1.12.4.2 jruoho /* clock feed */
10 1.12.4.2 jruoho #ifndef EXT_CLK_FREQ
11 1.12.4.2 jruoho #define EXT_CLK_FREQ 33333333 /* external clock (PCI clock) */
12 1.12.4.2 jruoho #endif
13 1.12.4.2 jruoho
14 1.12.4.2 jruoho /* brd type */
15 1.12.4.2 jruoho extern int brdtype;
16 1.12.4.2 jruoho #define BRD_SANDPOINTX2 2
17 1.12.4.2 jruoho #define BRD_SANDPOINTX3 3
18 1.12.4.2 jruoho #define BRD_ENCOREPP1 10
19 1.12.4.2 jruoho #define BRD_KUROBOX 100
20 1.12.4.2 jruoho #define BRD_QNAPTS 101
21 1.12.4.2 jruoho #define BRD_SYNOLOGY 102
22 1.12.4.2 jruoho #define BRD_STORCENTER 103
23 1.12.4.2 jruoho #define BRD_DLINKDSM 104
24 1.12.4.2 jruoho #define BRD_NH230NAS 105
25 1.12.4.2 jruoho #define BRD_UNKNOWN -1
26 1.12.4.2 jruoho
27 1.12.4.2 jruoho struct brdprop {
28 1.12.4.2 jruoho const char *family;
29 1.12.4.2 jruoho const char *verbose;
30 1.12.4.2 jruoho int brdtype;
31 1.12.4.2 jruoho uint32_t extclk;
32 1.12.4.2 jruoho char *consname;
33 1.12.4.2 jruoho int consport;
34 1.12.4.2 jruoho int consspeed;
35 1.12.4.2 jruoho void (*setup)(struct brdprop *);
36 1.12.4.2 jruoho void (*brdfix)(struct brdprop *);
37 1.12.4.2 jruoho void (*pcifix)(struct brdprop *);
38 1.12.4.2 jruoho void (*reset)(void);
39 1.12.4.2 jruoho };
40 1.12.4.2 jruoho
41 1.12.4.2 jruoho extern uint32_t cpuclock, busclock;
42 1.12.4.2 jruoho
43 1.12.4.2 jruoho /* board specific support code */
44 1.12.4.2 jruoho struct brdprop *brd_lookup(int);
45 1.12.4.2 jruoho int tstchar(void);
46 1.12.4.2 jruoho unsigned mpc107memsize(void);
47 1.12.4.2 jruoho void read_mac_from_flash(uint8_t *);
48 1.12.4.2 jruoho
49 1.12.4.2 jruoho /* PPC processor ctl */
50 1.12.4.2 jruoho void __syncicache(void *, size_t);
51 1.12.4.2 jruoho
52 1.12.4.2 jruoho /* byte swap access */
53 1.12.4.2 jruoho void out16rb(unsigned, unsigned);
54 1.12.4.2 jruoho void out32rb(unsigned, unsigned);
55 1.12.4.2 jruoho unsigned in16rb(unsigned);
56 1.12.4.2 jruoho unsigned in32rb(unsigned);
57 1.12.4.2 jruoho void iohtole16(unsigned, unsigned);
58 1.12.4.2 jruoho void iohtole32(unsigned, unsigned);
59 1.12.4.2 jruoho unsigned iole32toh(unsigned);
60 1.12.4.2 jruoho unsigned iole16toh(unsigned);
61 1.12.4.2 jruoho
62 1.12.4.2 jruoho /* far call would never return */
63 1.12.4.2 jruoho void run(void *, void *, void *, void *, void *);
64 1.12.4.2 jruoho
65 1.12.4.2 jruoho /* micro second precision delay */
66 1.12.4.2 jruoho void delay(unsigned);
67 1.12.4.2 jruoho
68 1.12.4.2 jruoho /* PCI stuff */
69 1.12.4.2 jruoho struct pcidev {
70 1.12.4.2 jruoho unsigned bdf; /* bus.dev.func */
71 1.12.4.2 jruoho unsigned pvd; /* device ID */
72 1.12.4.2 jruoho void *drv; /* driver */
73 1.12.4.2 jruoho };
74 1.12.4.2 jruoho void pcisetup(void);
75 1.12.4.2 jruoho void pcifixup(void);
76 1.12.4.2 jruoho unsigned pcimaketag(int, int, int);
77 1.12.4.2 jruoho void pcidecomposetag(unsigned, int *, int *, int *);
78 1.12.4.2 jruoho int pcifinddev(unsigned, unsigned, unsigned *);
79 1.12.4.2 jruoho int pcilookup(unsigned, struct pcidev *, int);
80 1.12.4.2 jruoho unsigned pcicfgread(unsigned, int);
81 1.12.4.2 jruoho void pcicfgwrite(unsigned, int, unsigned);
82 1.12.4.2 jruoho
83 1.12.4.2 jruoho #define PCI_ID_REG 0x00
84 1.12.4.2 jruoho #define PCI_VENDOR(id) ((id) & 0xffff)
85 1.12.4.2 jruoho #define PCI_PRODUCT(id) (((id) >> 16) & 0xffff)
86 1.12.4.2 jruoho #define PCI_VENDOR_INVALID 0xffff
87 1.12.4.2 jruoho #define PCI_DEVICE(v,p) ((v) | ((p) << 16))
88 1.12.4.2 jruoho #define PCI_COMMAND_STATUS_REG 0x04
89 1.12.4.2 jruoho #define PCI_CLASS_REG 0x08
90 1.12.4.2 jruoho #define PCI_CLASS(v) (((v) >> 16) & 0xffff)
91 1.12.4.2 jruoho #define PCI_SUBCLASS(v) (((v) >> 16) & 0xff)
92 1.12.4.2 jruoho #define PCI_INTERFACE(v) (((v) & 0xff00) >> 8)
93 1.12.4.2 jruoho #define PCI_REVISION(v) ((v) & 0xff)
94 1.12.4.2 jruoho #define PCI_CLASS_PPB 0x0604
95 1.12.4.2 jruoho #define PCI_CLASS_ETH 0x0200
96 1.12.4.2 jruoho #define PCI_CLASS_SCSI 0x0100
97 1.12.4.2 jruoho #define PCI_CLASS_IDE 0x0101
98 1.12.4.2 jruoho #define PCI_CLASS_RAID 0x0104
99 1.12.4.2 jruoho #define PCI_CLASS_SATA 0x0106
100 1.12.4.2 jruoho #define PCI_CLASS_MISCSTORAGE 0x0180
101 1.12.4.2 jruoho #define PCI_CLASS_USB 0x0c03
102 1.12.4.2 jruoho #define PCI_BHLC_REG 0x0c
103 1.12.4.2 jruoho #define PCI_HDRTYPE_TYPE(r) (((r) >> 16) & 0x7f)
104 1.12.4.2 jruoho #define PCI_HDRTYPE_MULTIFN(r) ((r) & (0x80 << 16))
105 1.12.4.2 jruoho
106 1.12.4.2 jruoho /*
107 1.12.4.2 jruoho * "Map B" layout
108 1.12.4.2 jruoho *
109 1.12.4.2 jruoho * practice direct mode configuration scheme with CONFIG_ADDR
110 1.12.4.2 jruoho * (0xfec0'0000) and CONFIG_DATA (0xfee0'0000).
111 1.12.4.2 jruoho */
112 1.12.4.2 jruoho #define PCI_MEMBASE 0x80000000 /* PCI memory space */
113 1.12.4.2 jruoho #define PCI_MEMLIMIT 0xfbffffff /* EUMB is next to this */
114 1.12.4.2 jruoho #define PCI_IOBASE 0x00001000 /* reserves room for southbridge */
115 1.12.4.2 jruoho #define PCI_IOLIMIT 0x000fffff
116 1.12.4.2 jruoho #define PCI_XIOBASE 0xfe000000 /* ISA/PCI io space */
117 1.12.4.2 jruoho #define CONFIG_ADDR 0xfec00000
118 1.12.4.2 jruoho #define CONFIG_DATA 0xfee00000
119 1.12.4.2 jruoho
120 1.12.4.2 jruoho /* cache ops */
121 1.12.4.2 jruoho void _wb(uint32_t, uint32_t);
122 1.12.4.2 jruoho void _wbinv(uint32_t, uint32_t);
123 1.12.4.2 jruoho void _inv(uint32_t, uint32_t);
124 1.12.4.2 jruoho
125 1.12.4.2 jruoho /* parsing */
126 1.12.4.2 jruoho uint32_t read_hex(const char *);
127 1.12.4.2 jruoho
128 1.12.4.2 jruoho /* heap */
129 1.12.4.2 jruoho void *allocaligned(size_t, size_t);
130 1.12.4.2 jruoho
131 1.12.4.2 jruoho /* NIF support */
132 1.12.4.2 jruoho int net_open(struct open_file *, ...);
133 1.12.4.2 jruoho int net_close(struct open_file *);
134 1.12.4.2 jruoho int net_strategy(void *, int, daddr_t, size_t, void *, size_t *);
135 1.12.4.2 jruoho
136 1.12.4.2 jruoho int netif_init(void *);
137 1.12.4.2 jruoho void netif_shutdown_all(void);
138 1.12.4.2 jruoho int netif_open(void *);
139 1.12.4.2 jruoho int netif_close(int);
140 1.12.4.2 jruoho
141 1.12.4.2 jruoho #define NIF_DECL(xxx) \
142 1.12.4.2 jruoho int xxx ## _match(unsigned, void *); \
143 1.12.4.2 jruoho void * xxx ## _init(unsigned, void *); \
144 1.12.4.2 jruoho int xxx ## _send(void *, char *, unsigned); \
145 1.12.4.2 jruoho int xxx ## _recv(void *, char *, unsigned, unsigned); \
146 1.12.4.2 jruoho void xxx ## _shutdown(void *)
147 1.12.4.2 jruoho
148 1.12.4.2 jruoho NIF_DECL(fxp);
149 1.12.4.2 jruoho NIF_DECL(tlp);
150 1.12.4.2 jruoho NIF_DECL(rge);
151 1.12.4.2 jruoho NIF_DECL(skg);
152 1.12.4.2 jruoho NIF_DECL(stg);
153 1.12.4.2 jruoho
154 1.12.4.2 jruoho /* DSK support */
155 1.12.4.2 jruoho int dskdv_init(void *);
156 1.12.4.2 jruoho
157 1.12.4.2 jruoho int dsk_open(struct open_file *, ...);
158 1.12.4.2 jruoho int dsk_close(struct open_file *);
159 1.12.4.2 jruoho int dsk_strategy(void *, int, daddr_t, size_t, void *, size_t *);
160 1.12.4.2 jruoho struct fs_ops *dsk_fsops(struct open_file *);
161 1.12.4.2 jruoho
162 1.12.4.2 jruoho #define DSK_DECL(xxx) \
163 1.12.4.2 jruoho int xxx ## _match(unsigned, void *); \
164 1.12.4.2 jruoho void * xxx ## _init(unsigned, void *)
165 1.12.4.2 jruoho
166 1.12.4.2 jruoho DSK_DECL(pciide);
167 1.12.4.2 jruoho DSK_DECL(siisata);
168 1.12.4.2 jruoho
169 1.12.4.2 jruoho /* status */
170 1.12.4.2 jruoho #define ATA_STS_BUSY 0x80
171 1.12.4.2 jruoho #define ATA_STS_DRDY 0x40
172 1.12.4.2 jruoho #define ATA_STS_ERR 0x01
173 1.12.4.2 jruoho /* command */
174 1.12.4.2 jruoho #define ATA_CMD_IDENT 0xec
175 1.12.4.2 jruoho #define ATA_CMD_READ 0x20
176 1.12.4.2 jruoho #define ATA_CMD_READ_EXT 0x24
177 1.12.4.2 jruoho #define ATA_CMD_SETF 0xef
178 1.12.4.2 jruoho /* device */
179 1.12.4.2 jruoho #define ATA_DEV_LBA 0xe0
180 1.12.4.2 jruoho #define ATA_DEV_OBS 0x90
181 1.12.4.2 jruoho /* control */
182 1.12.4.2 jruoho #define ATA_DREQ 0x08
183 1.12.4.2 jruoho #define ATA_SRST 0x04
184 1.12.4.2 jruoho
185 1.12.4.2 jruoho #define ATA_XFER 0x03
186 1.12.4.2 jruoho #define XFER_PIO4 0x0c
187 1.12.4.2 jruoho #define XFER_PIO0 0x08
188 1.12.4.2 jruoho
189 1.12.4.2 jruoho struct dvata_chan {
190 1.12.4.2 jruoho uint32_t cmd, ctl, alt, dma;
191 1.12.4.2 jruoho };
192 1.12.4.2 jruoho #define _DAT 0 /* RW */
193 1.12.4.2 jruoho #define _ERR 1 /* R */
194 1.12.4.2 jruoho #define _FEA 1 /* W */
195 1.12.4.2 jruoho #define _NSECT 2 /* RW */
196 1.12.4.2 jruoho #define _LBAL 3 /* RW */
197 1.12.4.2 jruoho #define _LBAM 4 /* RW */
198 1.12.4.2 jruoho #define _LBAH 5 /* RW */
199 1.12.4.2 jruoho #define _DEV 6 /* W */
200 1.12.4.2 jruoho #define _STS 7 /* R */
201 1.12.4.2 jruoho #define _CMD 7 /* W */
202 1.12.4.2 jruoho
203 1.12.4.2 jruoho struct dkdev_ata {
204 1.12.4.2 jruoho unsigned tag;
205 1.12.4.2 jruoho uint32_t bar[6];
206 1.12.4.2 jruoho struct dvata_chan chan[4];
207 1.12.4.2 jruoho int presense[4];
208 1.12.4.2 jruoho char *iobuf;
209 1.12.4.2 jruoho };
210 1.12.4.2 jruoho
211 1.12.4.2 jruoho struct disk {
212 1.12.4.2 jruoho char xname[8];
213 1.12.4.2 jruoho void *dvops;
214 1.12.4.2 jruoho unsigned unittag;
215 1.12.4.2 jruoho uint16_t ident[128];
216 1.12.4.2 jruoho uint64_t nsect;
217 1.12.4.2 jruoho uint64_t first;
218 1.12.4.2 jruoho void *dlabel;
219 1.12.4.2 jruoho int part;
220 1.12.4.2 jruoho void *fsops;
221 1.12.4.2 jruoho int (*lba_read)(struct disk *, int64_t, int, void *);
222 1.12.4.2 jruoho };
223 1.12.4.2 jruoho
224 1.12.4.2 jruoho int spinwait_unbusy(struct dkdev_ata *, int, int, const char **);
225 1.12.4.2 jruoho int perform_atareset(struct dkdev_ata *, int);
226 1.12.4.2 jruoho int satapresense(struct dkdev_ata *, int);
227