34c4c00de02a3356b923b81246f519299a6d06c7
[linux-flexiantxendom0-3.2.10.git] / drivers / ide / pci / serverworks.h
1
2 #ifndef SERVERWORKS_H
3 #define SERVERWORKS_H
4
5 #include <linux/config.h>
6 #include <linux/pci.h>
7 #include <linux/ide.h>
8
9 #undef SVWKS_DEBUG_DRIVE_INFO
10
11 #define SVWKS_CSB5_REVISION_NEW 0x92 /* min PCI_REVISION_ID for UDMA5 (A2.0) */
12 #define SVWKS_CSB6_REVISION     0xa0 /* min PCI_REVISION_ID for UDMA4 (A1.0) */
13
14 /* Seagate Barracuda ATA IV Family drives in UDMA mode 5
15  * can overrun their FIFOs when used with the CSB5 */
16 const char *svwks_bad_ata100[] = {
17         "ST320011A",
18         "ST340016A",
19         "ST360021A",
20         "ST380021A",
21         NULL
22 };
23
24 #define DISPLAY_SVWKS_TIMINGS   1
25
26 #if defined(DISPLAY_SVWKS_TIMINGS) && defined(CONFIG_PROC_FS)
27 #include <linux/stat.h>
28 #include <linux/proc_fs.h>
29
30 static u8 svwks_proc;
31
32 static int svwks_get_info(char *, char **, off_t, int);
33
34 static ide_pci_host_proc_t svwks_procs[] = {
35 {
36                 .name           = "svwks",
37                 .set            = 1,
38                 .get_info       = svwks_get_info,
39                 .parent         = NULL,
40         },
41 };
42 #endif  /* defined(DISPLAY_SVWKS_TIMINGS) && defined(CONFIG_PROC_FS) */
43
44 static void init_setup_svwks(struct pci_dev *, ide_pci_device_t *);
45 static void init_setup_csb6(struct pci_dev *, ide_pci_device_t *);
46 static unsigned int init_chipset_svwks(struct pci_dev *, const char *);
47 static void init_hwif_svwks(ide_hwif_t *);
48 static void init_dma_svwks(ide_hwif_t *, unsigned long);
49
50 static ide_pci_device_t serverworks_chipsets[] __devinitdata = {
51         {       /* 0 */
52                 .vendor         = PCI_VENDOR_ID_SERVERWORKS,
53                 .device         = PCI_DEVICE_ID_SERVERWORKS_OSB4IDE,
54                 .name           = "SvrWks OSB4",
55                 .init_setup     = init_setup_svwks,
56                 .init_chipset   = init_chipset_svwks,
57                 .init_iops      = NULL,
58                 .init_hwif      = init_hwif_svwks,
59                 .init_dma       = NULL,
60                 .channels       = 2,
61                 .autodma        = AUTODMA,
62                 .enablebits     = {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
63                 .bootable       = ON_BOARD,
64                 .extra          = 0,
65         },{     /* 1 */
66                 .vendor         = PCI_VENDOR_ID_SERVERWORKS,
67                 .device         = PCI_DEVICE_ID_SERVERWORKS_CSB5IDE,
68                 .name           = "SvrWks CSB5",
69                 .init_setup     = init_setup_svwks,
70                 .init_chipset   = init_chipset_svwks,
71                 .init_iops      = NULL,
72                 .init_hwif      = init_hwif_svwks,
73                 .init_dma       = init_dma_svwks,
74                 .channels       = 2,
75                 .autodma        = AUTODMA,
76                 .enablebits     = {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
77                 .bootable       = ON_BOARD,
78                 .extra          = 0,
79         },{     /* 2 */
80                 .vendor         = PCI_VENDOR_ID_SERVERWORKS,
81                 .device         = PCI_DEVICE_ID_SERVERWORKS_CSB6IDE,
82                 .name           = "SvrWks CSB6",
83                 .init_setup     = init_setup_csb6,
84                 .init_chipset   = init_chipset_svwks,
85                 .init_iops      = NULL,
86                 .init_hwif      = init_hwif_svwks,
87                 .init_dma       = init_dma_svwks,
88                 .channels       = 2,
89                 .autodma        = AUTODMA,
90                 .enablebits     = {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
91                 .bootable       = ON_BOARD,
92                 .extra          = 0,
93         },{     /* 3 */
94                 .vendor         = PCI_VENDOR_ID_SERVERWORKS,
95                 .device         = PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2,
96                 .name           = "SvrWks CSB6",
97                 .init_setup     = init_setup_csb6,
98                 .init_chipset   = init_chipset_svwks,
99                 .init_iops      = NULL,
100                 .init_hwif      = init_hwif_svwks,
101                 .init_dma       = init_dma_svwks,
102                 .channels       = 1,    /* 2 */
103                 .autodma        = AUTODMA,
104                 .enablebits     = {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
105                 .bootable       = ON_BOARD,
106                 .extra          = 0,
107         },{
108                 .vendor         = 0,
109                 .device         = 0,
110                 .channels       = 0,
111                 .bootable       = EOL,
112         }
113 };
114
115 #endif /* SERVERWORKS_H */