]> git.lizzy.rs Git - plan9front.git/blob - sys/src/9/alphapc/fdc37c93x.c
pci: add intel qm67 pch
[plan9front.git] / sys / src / 9 / alphapc / fdc37c93x.c
1 #include "u.h"
2 #include "../port/lib.h"
3 #include "mem.h"
4 #include "dat.h"
5 #include "fns.h"
6 #include "io.h"
7
8 /*
9  * SMC FDC37C93x Plug and Play Compatible Ultra I/O Controller.
10  */
11 enum {                                  /* I/O Ports */
12         Config          = 0x370,        /* could also be 0x3F0 */
13
14         Index           = 0,
15         Data            = 1,
16 };
17
18 static int fddregs[] = {
19         0x30,
20         0x60, 0x61,
21         0x70,
22         0x74,
23         0xF0,
24         0xF1,
25         0xF2,
26         0xF4,
27         0xF5,
28         0,
29 };
30
31 #define OUTB(p, d)      outb(p, d); microdelay(10);
32
33 void
34 fdc37c93xdump(void)
35 {
36         int config, i, x;
37
38         config = Config;
39
40         OUTB(config, 0x55);
41         OUTB(config, 0x55);
42
43         OUTB(config+Index, 0x20);
44         x = inb(config+Data);
45         print("fdc37c93x: Device ID 0x%2.2uX\n", x);
46         OUTB(config+Index, 0x22);
47         x = inb(config+Data);
48         print("fdc37c93x: Power/Control 0x%2.2uX\n", x);
49
50         OUTB(config+Index, 0x07);
51         OUTB(config+Data, 0);
52         for(i = 0; fddregs[i]; i++){
53                 OUTB(config+Index, fddregs[i]);
54                 x = inb(config+Data);
55                 print("FDD%2.2uX: 0x%2.2uX\n", fddregs[i], x);
56         }
57
58         OUTB(config+Index, 0x70);
59         OUTB(config+Data, 0x06);
60         OUTB(config+Index, 0x74);
61         OUTB(config+Data, 0x02);
62         OUTB(config+Index, 0x30);
63         OUTB(config+Data, 0x01);
64
65         OUTB(config, 0xAA);
66 }