[PATCH] 2.5.12 IDE 49
[opensuse:kernel.git] / drivers / ide / pdcadma.c
1 /*
2  * linux/drivers/ide/pdcadma.c          Version 0.01    June 21, 2001
3  *
4  * Copyright (C) 1999-2000              Andre Hedrick <andre@linux-ide.org>
5  * May be copied or modified under the terms of the GNU General Public License
6  *
7  */
8
9 #include <linux/config.h>
10 #include <linux/types.h>
11 #include <linux/kernel.h>
12 #include <linux/delay.h>
13 #include <linux/timer.h>
14 #include <linux/mm.h>
15 #include <linux/ioport.h>
16 #include <linux/blkdev.h>
17 #include <linux/hdreg.h>
18
19 #include <linux/interrupt.h>
20 #include <linux/init.h>
21 #include <linux/pci.h>
22 #include <linux/ide.h>
23
24 #include <asm/io.h>
25 #include <asm/irq.h>
26
27 #include "ata-timing.h"
28
29 #undef DISPLAY_PDCADMA_TIMINGS
30
31 #if defined(DISPLAY_PDCADMA_TIMINGS) && defined(CONFIG_PROC_FS)
32 #include <linux/stat.h>
33 #include <linux/proc_fs.h>
34
35 static int pdcadma_get_info(char *, char **, off_t, int);
36 extern int (*pdcadma_display_info)(char *, char **, off_t, int); /* ide-proc.c */
37 static struct pci_dev *bmide_dev;
38
39 static int pdcadma_get_info (char *buffer, char **addr, off_t offset, int count)
40 {
41         char *p = buffer;
42         u32 bibma = pci_resource_start(bmide_dev, 4);
43
44         p += sprintf(p, "\n                                PDC ADMA %04X Chipset.\n", bmide_dev->device);
45         p += sprintf(p, "UDMA\n");
46         p += sprintf(p, "PIO\n");
47
48         return p-buffer;        /* => must be less than 4k! */
49 }
50 #endif
51
52 byte pdcadma_proc = 0;
53
54 extern char *ide_xfer_verbose (byte xfer_rate);
55
56 #ifdef CONFIG_BLK_DEV_IDEDMA
57
58 /*
59  * This initiates/aborts (U)DMA read/write operations on a drive.
60  */
61 int pdcadma_dmaproc(ide_dma_action_t func, struct ata_device *drive, struct request *rq)
62 {
63         switch (func) {
64                 case ide_dma_check:
65                         func = ide_dma_off_quietly;
66                 default:
67                         break;
68         }
69         return ide_dmaproc(func, drive, rq);    /* use standard DMA stuff */
70 }
71 #endif
72
73 unsigned int __init pci_init_pdcadma(struct pci_dev *dev)
74 {
75 #if defined(DISPLAY_PDCADMA_TIMINGS) && defined(CONFIG_PROC_FS)
76         if (!pdcadma_proc) {
77                 pdcadma_proc = 1;
78                 bmide_dev = dev;
79                 pdcadma_display_info = pdcadma_get_info;
80         }
81 #endif
82         return 0;
83 }
84
85 unsigned int __init ata66_pdcadma(struct ata_channel *channel)
86 {
87         return 1;
88 }
89
90 void __init ide_init_pdcadma(struct ata_channel *hwif)
91 {
92         hwif->autodma = 0;
93         hwif->dma_base = 0;
94
95 //      hwif->tuneproc = &pdcadma_tune_drive;
96 //      hwif->speedproc = &pdcadma_tune_chipset;
97
98 //      if (hwif->dma_base) {
99 //              hwif->dmaproc = &pdcadma_dmaproc;
100 //              hwif->autodma = 1;
101 //      }
102 }
103
104 void __init ide_dmacapable_pdcadma(struct ata_channel *hwif, unsigned long dmabase)
105 {
106 //      ide_setup_dma(hwif, dmabase, 8);
107 }
108