⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pdcadma.c

📁 这个linux源代码是很全面的~基本完整了~使用c编译的~由于时间问题我没有亲自测试~但就算用来做参考资料也是非常好的
💻 C
字号:
/* * linux/drivers/ide/pci/pdcadma.c		Version 0.05	Sept 10, 2002 * * Copyright (C) 1999-2000		Andre Hedrick <andre@linux-ide.org> * May be copied or modified under the terms of the GNU General Public License * */#include <linux/config.h>#include <linux/types.h>#include <linux/kernel.h>#include <linux/delay.h>#include <linux/timer.h>#include <linux/mm.h>#include <linux/ioport.h>#include <linux/blkdev.h>#include <linux/hdreg.h>#include <linux/interrupt.h>#include <linux/init.h>#include <linux/pci.h>#include <linux/ide.h>#include <asm/io.h>#include <asm/irq.h>#include "ide_modes.h"#include "pdcadma.h"#if defined(DISPLAY_PDCADMA_TIMINGS) && defined(CONFIG_PROC_FS)#include <linux/stat.h>#include <linux/proc_fs.h>static u8 pdcadma_proc = 0;#define PDC_MAX_DEVS		5static struct pci_dev *pdc_devs[PDC_MAX_DEVS];static int n_pdc_devs;static int pdcadma_get_info (char *buffer, char **addr, off_t offset, int count){	char *p = buffer;	int i;	for (i = 0; i < n_pdc_devs; i++) {		struct pci_dev *dev	= pdc_devs[i];		unsigned long bibma = pci_resource_start(dev, 4);		p += sprintf(p, "\n                                "			"PDC ADMA %04X Chipset.\n", dev->device);		p += sprintf(p, "UDMA\n");		p += sprintf(p, "PIO\n");	}	return p-buffer;	/* => must be less than 4k! */}#endif  /* defined(DISPLAY_PDCADMA_TIMINGS) && defined(CONFIG_PROC_FS) *//* * pdcadma_dma functions() initiates/aborts (U)DMA read/write * operations on a drive. */#if 0        int (*ide_dma_read)(ide_drive_t *drive);        int (*ide_dma_write)(ide_drive_t *drive);        int (*ide_dma_begin)(ide_drive_t *drive);        int (*ide_dma_end)(ide_drive_t *drive);        int (*ide_dma_check)(ide_drive_t *drive);        int (*ide_dma_on)(ide_drive_t *drive);        int (*ide_dma_off)(ide_drive_t *drive);        int (*ide_dma_off_quietly)(ide_drive_t *drive);        int (*ide_dma_test_irq)(ide_drive_t *drive);        int (*ide_dma_host_on)(ide_drive_t *drive);        int (*ide_dma_host_off)(ide_drive_t *drive);        int (*ide_dma_bad_drive)(ide_drive_t *drive);        int (*ide_dma_good_drive)(ide_drive_t *drive);        int (*ide_dma_count)(ide_drive_t *drive);        int (*ide_dma_verbose)(ide_drive_t *drive);        int (*ide_dma_retune)(ide_drive_t *drive);        int (*ide_dma_lostirq)(ide_drive_t *drive);        int (*ide_dma_timeout)(ide_drive_t *drive);#endifstatic unsigned int __init init_chipset_pdcadma (struct pci_dev *dev, const char *name){#if defined(DISPLAY_PDCADMA_TIMINGS) && defined(CONFIG_PROC_FS)	pdc_devs[n_pdc_devs++] = dev;	if (!pdcadma_proc) {		pdcadma_proc = 1;		ide_pci_register_host_proc(&pdcadma_procs[0]);	}#endif /* DISPLAY_PDCADMA_TIMINGS && CONFIG_PROC_FS */	return 0;}static void __init init_hwif_pdcadma (ide_hwif_t *hwif){	hwif->autodma = 0;	hwif->dma_base = 0;//	hwif->tuneproc = &pdcadma_tune_drive;//	hwif->speedproc = &pdcadma_tune_chipset;//	if (hwif->dma_base) {//		hwif->autodma = 1;//	}	hwif->udma_four = 1;//	hwif->atapi_dma = 1;//	hwif->ultra_mask = 0x7f;//	hwif->mwdma_mask = 0x07;//	hwif->swdma_mask = 0x07;}static void __init init_dma_pdcadma (ide_hwif_t *hwif, unsigned long dmabase){#if 0	ide_setup_dma(hwif, dmabase, 8);#endif}extern void ide_setup_pci_device(struct pci_dev *, ide_pci_device_t *);static int __devinit pdcadma_init_one(struct pci_dev *dev, const struct pci_device_id *id){	ide_pci_device_t *d = &pdcadma_chipsets[id->driver_data];	if (dev->device != d->device)		BUG();	ide_setup_pci_device(dev, d);	MOD_INC_USE_COUNT;	return 1;}static struct pci_device_id pdcadma_pci_tbl[] __devinitdata = {	{ PCI_VENDOR_ID_PDC, PCI_DEVICE_ID_PDC_1841, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},	{ 0, },};static struct pci_driver driver = {	.name		= "PDCADMA-IDE",	.id_table	= pdcadma_pci_tbl,	.probe		= pdcadma_init_one,};static int pdcadma_ide_init(void){	return ide_pci_register_driver(&driver);}static void pdcadma_ide_exit(void){	ide_pci_unregister_driver(&driver);}module_init(pdcadma_ide_init);module_exit(pdcadma_ide_exit);MODULE_AUTHOR("Andre Hedrick");MODULE_DESCRIPTION("PCI driver module for PDCADMA IDE");MODULE_LICENSE("GPL");EXPORT_NO_SYMBOLS;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -