IDE updates (part 3)
Subsystems (3)
PATCH 1/1 IDE updates (part 3)
New week, new IDE updates...
* fix serverworks UDMA regression
(Tony Battersby <[email protected]>)
* fix some host drivers to always tune PIO: hpt366, sis5513, aec62xx, slc90e66, ide-cris, cs5530 and sc1200
* DMA setup fixes for sis5513 and atiixp host drivers
* additional id string for ide-cs
(Kristoffer Ericson <[email protected]>)
* common DMA tuning code for all host drivers: cuts ~700 LOC from IDE code and allows addition of "hdx=nodma" kernel parameter (per device DMA disable)
* and other changes...
Please pull from:
master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6.git/
to receive the following updates:
Documentation/ide.txt | 6 +- drivers/ide/Kconfig | 18 -- drivers/ide/arm/icside.c | 17 -- drivers/ide/cris/ide-cris.c | 15 +-- drivers/ide/ide-dma.c | 77 ++++--- drivers/ide/ide-io.c | 4 +- drivers/ide/ide-iops.c | 4 +- drivers/ide/ide-lib.c | 15 -- drivers/ide/ide-probe.c | 16 +-- drivers/ide/ide.c | 19 +- drivers/ide/legacy/ide-cs.c | 12 +- drivers/ide/mips/au1xxx-ide.c | 38 ++-- drivers/ide/pci/aec62xx.c | 36 +--- drivers/ide/pci/alim15x3.c | 34 +--- drivers/ide/pci/amd74xx.c | 197 +++--------------- drivers/ide/pci/atiixp.c | 93 +------- drivers/ide/pci/cmd64x.c | 27 +-- drivers/ide/pci/cs5520.c | 25 +-- drivers/ide/pci/cs5530.c | 45 +---- drivers/ide/pci/cs5535.c | 28 +--- drivers/ide/pci/cy82c693.c | 12 +- drivers/ide/pci/generic.c | 57 +++-- drivers/ide/pci/hpt34x.c | 28 +-- drivers/ide/pci/hpt366.c | 41 +--- drivers/ide/pci/it8213.c | 84 +------- drivers/ide/pci/it821x.c | 50 +---- drivers/ide/pci/jmicron.c | 32 +--- drivers/ide/pci/ns87415.c | 11 +- drivers/ide/pci/opti621.c | 14 +- drivers/ide/pci/pdc202xx_new.c | 37 +--- drivers/ide/pci/pdc202xx_old.c | 32 +--- drivers/ide/pci/piix.c | 125 +++-------- drivers/ide/pci/rz1000.c | 6 +- drivers/ide/pci/sc1200.c | 30 +-- drivers/ide/pci/scc_pata.c | 33 +--- drivers/ide/pci/serverworks.c | 33 +--- drivers/ide/pci/sgiioc4.c | 22 +-- drivers/ide/pci/siimage.c | 42 +---- drivers/ide/pci/sis5513.c | 462 ++++++++-------------------------------- drivers/ide/pci/sl82c105.c | 22 +-- drivers/ide/pci/slc90e66.c | 67 ++----- drivers/ide/pci/tc86c001.c | 21 +-- drivers/ide/pci/triflex.c | 21 +-- drivers/ide/pci/trm290.c | 10 +- drivers/ide/pci/via82cxxx.c | 37 +--- drivers/ide/ppc/pmac.c | 34 +--- drivers/ide/setup-pci.c | 48 +---- include/linux/ide.h | 11 +- 48 files changed, 449 insertions(+), 1699 deletions(-)
Adrian Bunk (2):
ide: unexport ide_tune_dma
ide: unexport noautodma
Bartlomiej Zolnierkiewicz (29):
hpt366: always tune PIO
sis5513: DMA setup fixes
sis5513: always tune PIO
aec62xx: always tune PIO
slc90e66: always tune PIO
ide-cris: always tune PIO
cs5530: always tune PIO
sc1200: always tune PIO
atiixp: DMA setup fixes
it8213/piix/slc90e66: remove {it8213,piix,slc90e66}_dma_2_pio()
au1xxx-ide: use ide_tune_dma()
ide: remove drive->init_speed zeroing
ide: remove ide_use_fast_pio()
cs5530/sc1200: add PIO autotune fallback to ->ide_dma_check
sl82c105: add PIO autotune fallback to ->ide_dma_check
ide-cris: add PIO autotune fallback to ->ide_dma_check
ide-pmac: add PIO autotune fallback to ->ide_dma_check
ide: remove ->ide_dma_check (take 2) it8213/piix/slc90e66: "de-couple" PIO and UDMA modes
sis5513: clear prefetch and postwrite for ATAPI devices
ide: use PCI_VDEVICE() macro
ide: remove CONFIG_BLK_DEV_IDEDMA_FORCED
ide: remove "idex=dma" kernel parameter
ide: remove hwif->autodma and drive->autodma
ide: add "hdx=nodma" kernel parameter
ide: remove CONFIG_IDEDMA_ONLYDISK
sis5513: remove /proc/ide/sis
amd74xx/via82cxxx: don't initialize drive->dn
amd74xx: remove /proc/ide/amd74xx
Kristoffer Ericson (1):
ide-cs: Add additional id string (corsair, 1GB)
Tony Battersby (1):
ide: fix serverworks.c UDMA regression
Documentation/ide.txt +2 -4
@@ -242,6 +242,8 @@ Summary of ide driver parameters for kernel command line and quite likely to cause trouble with older/odd IDE drives. + "hdx=nodma" : disallow DMA + "hdx=swapdata" : when the drive is a disk, byte swap all data "hdx=bswap" : same as above..........
@@ -278,8 +280,6 @@ Summary of ide driver parameters for kernel command line "idex=four" : four drives on idex and ide(x^1) share same ports "idex=reset" : reset interface after probe - - "idex=dma" : automatically configure/use DMA if possible. "idex=ata66" : informs the interface that it has an 80c cable for chipsets that are ATA-66 capable, but the
@@ -288,8 +288,6 @@ Summary of ide driver parameters for kernel command line "ide=reverse" : formerly called to pci sub-system, but now local. - "ide=nodma" : disable DMA globally for the IDE subsystem. - The following are valid ONLY on ide0, which usually corresponds to the first ATA interface found on the particular host, and the defaults for the base,ctl ports must not be altered.
drivers/ide/Kconfig +0 -18
@@ -435,24 +435,6 @@ config BLK_DEV_IDEDMA_PCI bool select BLK_DEV_IDEPCI -config BLK_DEV_IDEDMA_FORCED - bool "Force enable legacy 2.0.X HOSTS to use DMA" - depends on BLK_DEV_IDEDMA_PCI - help - This is an old piece of lost code from Linux 2.0 Kernels. - - Generally say N here. - -# TODO: remove it -config IDEDMA_ONLYDISK - bool "Enable DMA only for disks " - depends on BLK_DEV_IDEDMA_PCI - help - This is used if you know your ATAPI Devices are going to fail DMA - Transfers. - - Generally say N here. - config BLK_DEV_AEC62XX tristate "AEC62XX chipset support" select BLK_DEV_IDEDMA_PCI
drivers/ide/arm/icside.c +0 -17
@@ -309,14 +309,6 @@ static int icside_dma_on(ide_drive_t *drive)return 0 ; } -static int icside_dma_check (ide_drive_t *drive) -{ -if (ide_tune_dma (drive)) -return 0 ; - -return -1 ; -} -static int icside_dma_end (ide_drive_t *drive) {ide_hwif_t *hwif =HWIF (drive);
@@ -423,8 +415,6 @@ static void icside_dma_lost_irq(ide_drive_t *drive)static void icside_dma_init (ide_hwif_t *hwif) { -printk (" %s: SG-DMA" , hwif->name); - hwif->atapi_dma =1 ; hwif->mwdma_mask =7 ;/* MW0..2 */ hwif->swdma_mask =7 ;/* SW0..2 */
@@ -432,9 +422,7 @@ static void icside_dma_init(ide_hwif_t *hwif) hwif->dmatable_cpu =NULL ; hwif->dmatable_dma =0 ; hwif->set_dma_mode = icside_set_dma_mode; - hwif->autodma =1 ; - hwif->ide_dma_check = icside_dma_check; hwif->dma_host_off = icside_dma_host_off; hwif->dma_off_quietly = icside_dma_off_quietly; hwif->dma_host_on = icside_dma_host_on;
@@ -446,11 +434,6 @@ static void icside_dma_init(ide_hwif_t *hwif) hwif->ide_dma_test_irq = icside_dma_test_irq; hwif->dma_timeout = icside_dma_timeout; hwif->dma_lost_irq = icside_dma_lost_irq; - - hwif->drives[0 ].autodma = hwif->autodma; - hwif->drives[1 ].autodma = hwif->autodma; - - printk(" capable%s\n", hwif->autodma ? ", auto-enable" : ""); }#else #define icside_dma_init (hwif) (0)
drivers/ide/cris/ide-cris.c +2 -13
@@ -664,7 +664,6 @@ cris_ide_inb(unsigned long reg)return (unsigned char )cris_ide_inw (reg); } -static int cris_dma_check (ide_drive_t *drive);static int cris_dma_end (ide_drive_t *drive);static int cris_dma_setup (ide_drive_t *drive);static void cris_dma_exec_cmd (ide_drive_t *drive,u8 command);
@@ -792,7 +791,6 @@ init_e100_ide (void) hwif->ata_output_data = &cris_ide_output_data; hwif->atapi_input_bytes = &cris_atapi_input_bytes; hwif->atapi_output_bytes = &cris_atapi_output_bytes; - hwif->ide_dma_check = &cris_dma_check; hwif->ide_dma_end = &cris_dma_end; hwif->dma_setup = &cris_dma_setup; hwif->dma_exec_cmd = &cris_dma_exec_cmd;
@@ -808,11 +806,10 @@ init_e100_ide (void) hwif->dma_off_quietly = &cris_dma_off; hwif->cbl =ATA_CBL_PATA40 ; hwif->pio_mask =ATA_PIO4 , + hwif->drives[0 ].autotune =1 ; + hwif->drives[1 ].autotune =1 ; hwif->ultra_mask = cris_ultra_mask; hwif->mwdma_mask =0x07 ;/* Multiword DMA 0-2 */ - hwif->autodma =1 ; - hwif->drives[0 ].autodma =1 ; - hwif->drives[1 ].autodma =1 ; }/* Reset pulse */
@@ -1018,14 +1015,6 @@ static ide_startstop_t cris_dma_intr (ide_drive_t *drive)* the caller should revert to PIO for the current request. */ -static int cris_dma_check (ide_drive_t *drive) -{ -if (ide_tune_dma (drive)) -return 0 ; - -return -1 ; -} -static int cris_dma_end (ide_drive_t *drive) { drive->waiting_for_dma =0 ;
drivers/ide/ide-dma.c +45 -32
125 lines not on this page · raw message
drivers/ide/ide-io.c +2 -2
@@ -219,11 +219,11 @@ static ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request *case ide_pm_restore_dma:/* Resume step 3 (restore DMA) */ /* -* Right now, all we do is call hwif->ide_dma_check(drive), +* Right now, all we do is call ide_set_dma(drive), * we could be smarter and check for current xfer_speed * in struct drive etc... */ -if (drive->hwif->ide_dma_check ==NULL ) +if (drive->hwif->ide_dma_on ==NULL )break ; drive->hwif->dma_off_quietly (drive);/*
drivers/ide/ide-iops.c +2 -2
@@ -776,7 +776,7 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)// msleep(50); #ifdef CONFIG_BLK_DEV_IDEDMA -if (hwif->ide_dma_check)/* check if host supports DMA */ +if (hwif->ide_dma_on)/* check if host supports DMA */ hwif->dma_host_off (drive);#endif
@@ -830,7 +830,7 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)#ifdef CONFIG_BLK_DEV_IDEDMA if (speed >=XFER_SW_DMA_0 ) hwif->dma_host_on (drive); -else if (hwif->ide_dma_check)/* check if host supports DMA */ +else if (hwif->ide_dma_on)/* check if host supports DMA */ hwif->dma_off_quietly (drive);#endif
drivers/ide/ide-lib.c +0 -15
@@ -96,21 +96,6 @@ static u8 ide_rate_filter(ide_drive_t *drive, u8 speed)return min (speed, mode); } -int ide_use_fast_pio (ide_drive_t *drive) -{ -struct hd_driveid *id = drive->id; - -if ((id->capability &1 ) && drive->autodma) -return 1 ; - -if ((id->capability &8 ) || (id->field_valid &2 )) -return 1 ; - -return 0 ; -} - -EXPORT_SYMBOL_GPL (ide_use_fast_pio); -/* * Standard (generic) timings for PIO modes, from ATA2 specification. * These timings are for access to the IDE data port register *only*.
drivers/ide/ide-probe.c +2 -14
@@ -835,16 +835,7 @@ static void probe_hwif(ide_hwif_t *hwif, void (*fixup)(ide_hwif_t *hwif)) drive->nice1 =1 ; -/* -* MAJOR HACK BARF :-/ -* -* FIXME: chipsets own this cruft! -*/ -/* -* Move here to prevent module loading clashing. -*/ -// drive->autodma = hwif->autodma; -if (hwif->ide_dma_check) { +if (hwif->ide_dma_on) {/* * Force DMAing for the beginning of the check. * Some chipsets appear to do interesting
@@ -852,10 +843,7 @@ static void probe_hwif(ide_hwif_t *hwif, void (*fixup)(ide_hwif_t *hwif))* PARANOIA!!! */ hwif->dma_off_quietly (drive); -#ifdef CONFIG_IDEDMA_ONLYDISK - if (drive->media == ide_disk) -#endif -ide_set_dma (drive); +ide_set_dma (drive); } } }
drivers/ide/ide.c +8 -11
@@ -100,8 +100,6 @@ static int ide_scan_direction; /* THIS was formerly 2.2.x pci=reverse */int noautodma =0 ; -EXPORT_SYMBOL (noautodma); -#ifdef CONFIG_BLK_DEV_IDEACPI int ide_noacpi =0 ;int ide_noacpitfs =1 ;
@@ -418,7 +416,6 @@ static void ide_hwif_restore(ide_hwif_t *hwif, ide_hwif_t *tmp_hwif) hwif->dma_exec_cmd = tmp_hwif->dma_exec_cmd; hwif->dma_start = tmp_hwif->dma_start; hwif->ide_dma_end = tmp_hwif->ide_dma_end; - hwif->ide_dma_check = tmp_hwif->ide_dma_check; hwif->ide_dma_on = tmp_hwif->ide_dma_on; hwif->dma_off_quietly = tmp_hwif->dma_off_quietly; hwif->ide_dma_test_irq = tmp_hwif->ide_dma_test_irq;
@@ -461,7 +458,6 @@ static void ide_hwif_restore(ide_hwif_t *hwif, ide_hwif_t *tmp_hwif) hwif->select_data = tmp_hwif->select_data; hwif->extra_base = tmp_hwif->extra_base; hwif->extra_ports = tmp_hwif->extra_ports; - hwif->autodma = tmp_hwif->autodma; hwif->hwif_data = tmp_hwif->hwif_data; }
@@ -823,7 +819,7 @@ int set_using_dma(ide_drive_t *drive, int arg)if (!drive->id || !(drive->id->capability &1 )) goto out; -if (hwif->ide_dma_check ==NULL ) +if (hwif->ide_dma_on ==NULL ) goto out; err = -EBUSY ;
@@ -1276,7 +1272,7 @@ static int __init ide_setup(char *s)if (!strcmp (s,"ide=nodma" )) {printk (" : Prevented DMA\n" ); noautodma =1 ; -return 1 ; + goto obsolete_option; }#ifdef CONFIG_IDEPCI_PCIBUS_ORDER
@@ -1310,7 +1306,7 @@ static int __init ide_setup(char *s)*/ if (s[0 ] =='h' && s[1 ] =='d' && s[2 ] >='a' && s[2 ] <= max_drive) {const char *hd_words[] = { -"none" ,"noprobe" ,"nowerr" ,"cdrom" ,"minus5" , +"none" ,"noprobe" ,"nowerr" ,"cdrom" ,"nodma" ,"autotune" ,"noautotune" ,"minus8" ,"swapdata" ,"bswap" ,"noflush" ,"remap" ,"remap63" ,"scsi" ,NULL }; unit = s[2 ] -'a' ;
@@ -1338,6 +1334,9 @@ static int __init ide_setup(char *s) drive->ready_stat =0 ; hwif->noprobe =0 ; goto done; +case -5 :/* nodma */ + drive->nodma =1 ; + goto done;case -6 :/* "autotune" */ drive->autotune =IDE_TUNE_AUTO ; goto obsolete_option;
@@ -1399,7 +1398,7 @@ static int __init ide_setup(char *s)*/ static const char *ide_words[] = {"noprobe" ,"serialize" ,"minus3" ,"minus4" , -"reset" ,"dma" ,"ata66" ,"minus8" ,"minus9" , +"reset" ,"minus6" ,"ata66" ,"minus8" ,"minus9" ,"minus10" ,"four" ,"qd65xx" ,"ht6560b" ,"cmd640_vlb" ,"dtc2278" ,"umc8672" ,"ali14xx" ,NULL }; hw = s[3 ] -'0' ;
@@ -1478,6 +1477,7 @@ static int __init ide_setup(char *s)case -10 :/* minus10 */ case -9 :/* minus9 */ case -8 :/* minus8 */ +case -6 :case -4 :case -3 : goto bad_option;
@@ -1492,9 +1492,6 @@ static int __init ide_setup(char *s)#else goto bad_hwif;#endif -case -6 :/* dma */ - hwif->autodma =1 ; - goto obsolete_option;case -5 :/* "reset" */ hwif->reset =1 ; goto obsolete_option;
drivers/ide/legacy/ide-cs.c +7 -5
@@ -28,7 +28,7 @@and other provisions required by the GPL. If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -+ ======================================================================*/ #include <linux/module.h>
@@ -327,13 +327,13 @@ failed:After a card is removed, ide_release() will unregister the net device, and release the PCMCIA configuration. If the device is still open, this will be postponed until it is closed. -+ ======================================================================*/ void ide_release (struct pcmcia_device *link) {ide_info_t *info = link->priv; - +DEBUG (0 ,"ide_release(0x%p)\n" , link);if (info->ndev) {
@@ -353,11 +353,12 @@ void ide_release(struct pcmcia_device *link)stuff to run after an event is received. A CARD_REMOVAL event also sets some flags to discourage the ide drivers from talking to the ports. -+ ======================================================================*/ static struct pcmcia_device_id ide_ids[] = {PCMCIA_DEVICE_FUNC_ID (4 ), +PCMCIA_DEVICE_MANF_CARD (0x0000 ,0x0000 ),/* Corsair */ PCMCIA_DEVICE_MANF_CARD (0x0007 ,0x0000 ),/* Hitachi */ PCMCIA_DEVICE_MANF_CARD (0x000a ,0x0000 ),/* I-O Data CFA */ PCMCIA_DEVICE_MANF_CARD (0x001c ,0x0001 ),/* Mitsubishi CFA */
@@ -366,7 +367,7 @@ static struct pcmcia_device_id ide_ids[] = {PCMCIA_DEVICE_MANF_CARD (0x0098 ,0x0000 ),/* Toshiba */ PCMCIA_DEVICE_MANF_CARD (0x00a4 ,0x002d ),PCMCIA_DEVICE_MANF_CARD (0x00ce ,0x0000 ),/* Samsung */ -PCMCIA_DEVICE_MANF_CARD (0x0319 ,0x0000 ),/* Hitachi */ +PCMCIA_DEVICE_MANF_CARD (0x0319 ,0x0000 ),/* Hitachi */ PCMCIA_DEVICE_MANF_CARD (0x2080 ,0x0001 ),PCMCIA_DEVICE_MANF_CARD (0x4e01 ,0x0100 ),/* Viking CFA */ PCMCIA_DEVICE_MANF_CARD(0x4e01, 0x0200), /* Lexar, Viking CFA */
@@ -384,6 +385,7 @@ static struct pcmcia_device_id ide_ids[] = {PCMCIA_DEVICE_PROD_ID12 ("FREECOM" ,"PCCARD-IDE" ,0x5714cbf7 ,0x48e0ab8e ),PCMCIA_DEVICE_PROD_ID12 ("HITACHI" ,"FLASH" ,0xf4f43949 ,0x9eb86aae ),PCMCIA_DEVICE_PROD_ID12 ("HITACHI" ,"microdrive" ,0xf4f43949 ,0xa6d76178 ), +PCMCIA_DEVICE_PROD_ID12 ("Hyperstone" ,"Model1" ,0x3d5b9ef5 ,0xca6ab420 ),PCMCIA_DEVICE_PROD_ID12 ("IBM" ,"microdrive" ,0xb569a6e5 ,0xa6d76178 ),PCMCIA_DEVICE_PROD_ID12 ("IBM" ,"IBM17JSSFP20" ,0xb569a6e5 ,0xf2508753 ), PCMCIA_DEVICE_PROD_ID12("KINGSTON", "CF8GB", 0x2e6d1829, 0xacbe682e),
drivers/ide/mips/au1xxx-ide.c +15 -23
@@ -351,11 +351,18 @@ static int auide_dma_setup(ide_drive_t *drive)return 0 ; } -static int auide_dma_check (ide_drive_t *drive) +static u8 auide_mdma_filter (ide_drive_t *drive) { -u8 speed =ide_max_dma_mode (drive); +/* +* FIXME: ->white_list and ->black_list are based on completely bogus +* ->ide_dma_check implementation which didn't set neither the host +* controller timings nor the device for the desired transfer mode. +* +* They should be either removed or 0x00 MWDMA mask should be +* returned for devices on the ->black_list. +*/ -if ( dbdma_init_done ==0 ){ +if (dbdma_init_done ==0 ) { auide_hwif.white_list =ide_in_drive_list (drive->id, dma_white_list); auide_hwif.black_list = ide_in_drive_list(drive->id,
@@ -366,22 +373,11 @@ static int auide_dma_check(ide_drive_t *drive) }/* Is the drive in our DMA black list? */ - -if ( auide_hwif.black_list ) { - drive->using_dma =0 ; - -/* Borrowed the warning message from ide-dma.c */ - +if (auide_hwif.black_list)printk (KERN_WARNING "%s: Disabling DMA for %s (blacklisted)\n" , - drive->name, drive->id->model); - } -else - drive->using_dma =1 ; - -if (drive->autodma && (speed &XFER_MODE ) !=XFER_PIO ) -return 0 ; + drive->name, drive->id->model); -return -1 ; +return drive->hwif->mwdma_mask; }static int auide_dma_test_irq (ide_drive_t *drive)
@@ -692,7 +688,8 @@ static int au_ide_probe(struct device *dev) hwif->dma_off_quietly = &auide_dma_off_quietly; hwif->dma_timeout = &auide_dma_timeout; - hwif->ide_dma_check = &auide_dma_check; + hwif->mdma_filter = &auide_mdma_filter; + hwif->dma_exec_cmd = &auide_dma_exec_cmd; hwif->dma_start = &auide_dma_start; hwif->ide_dma_end = &auide_dma_end;
@@ -703,19 +700,14 @@ static int au_ide_probe(struct device *dev) hwif->dma_lost_irq = &auide_dma_lost_irq; hwif->ide_dma_on = &auide_dma_on; - hwif->autodma =1 ; - hwif->drives[0 ].autodma = hwif->autodma; - hwif->drives[1 ].autodma = hwif->autodma; hwif->atapi_dma =1 ;#else /* !CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA */ - hwif->autodma =0 ; hwif->channel =0 ; hwif->hold =1 ; hwif->select_data =0 ;/* no chipset-specific code */ hwif->config_data =0 ;/* no chipset-specific code */ - hwif->drives[0 ].autodma =0 ; hwif->drives[0 ].autotune =1 ;/* 1=autotune, 2=noautotune, 0=default */ #endif hwif->drives[0 ].no_io_32bit =1 ;
drivers/ide/pci/aec62xx.c +10 -26
@@ -1,5 +1,5 @@/* -* linux/drivers/ide/pci/aec62xx.c Version 0.24 May 24, 2007 +* linux/drivers/ide/pci/aec62xx.c Version 0.25 Aug 1, 2007 * * Copyright (C) 1999-2002 Andre Hedrick <[email protected]> * Copyright (C) 2007 MontaVista Software, Inc. <[email protected]>
@@ -141,17 +141,6 @@ static void aec_set_pio_mode(ide_drive_t *drive, const u8 pio) drive->hwif->set_dma_mode (drive, pio +XFER_PIO_0 ); } -static int aec62xx_config_drive_xfer_rate (ide_drive_t *drive) -{ -if (ide_tune_dma (drive)) -return 0 ; - -if (ide_use_fast_pio (drive)) -ide_set_max_pio (drive); - -return -1 ; -} -static void aec62xx_dma_lost_irq (ide_drive_t *drive) {switch (HWIF (drive)->pci_dev->device) {
@@ -207,15 +196,14 @@ static void __devinit init_hwif_aec62xx(ide_hwif_t *hwif) }else hwif->set_dma_mode = &aec6260_set_mode; -if (!hwif->dma_base) { - hwif->drives[0 ].autotune = hwif->drives[1 ].autotune =1 ; + hwif->drives[0 ].autotune = hwif->drives[1 ].autotune =1 ; + +if (hwif->dma_base ==0 )return ; - } hwif->ultra_mask = hwif->cds->udma_mask; hwif->mwdma_mask =0x07 ; - hwif->ide_dma_check = &aec62xx_config_drive_xfer_rate; hwif->dma_lost_irq = &aec62xx_dma_lost_irq;if (dev->device ==PCI_DEVICE_ID_ARTOP_ATP850UF ) {
@@ -230,10 +218,6 @@ static void __devinit init_hwif_aec62xx(ide_hwif_t *hwif) hwif->cbl = (ata66 & mask) ?ATA_CBL_PATA40 :ATA_CBL_PATA80 ; } - -if (!noautodma) - hwif->autodma =1 ; - hwif->drives[0 ].autodma = hwif->drives[1 ].autodma = hwif->autodma; }static int __devinit init_setup_aec62xx (struct pci_dev *dev,ide_pci_device_t *d)
@@ -325,12 +309,12 @@ static int __devinit aec62xx_init_one(struct pci_dev *dev, const struct pci_devireturn d.init_setup (dev, &d); } -static struct pci_device_id aec62xx_pci_tbl[] = { - {PCI_VENDOR_ID_ARTOP ,PCI_DEVICE_ID_ARTOP_ATP850UF ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0 }, - {PCI_VENDOR_ID_ARTOP ,PCI_DEVICE_ID_ARTOP_ATP860 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,1 }, - {PCI_VENDOR_ID_ARTOP ,PCI_DEVICE_ID_ARTOP_ATP860R ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,2 }, - {PCI_VENDOR_ID_ARTOP ,PCI_DEVICE_ID_ARTOP_ATP865 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,3 }, - {PCI_VENDOR_ID_ARTOP ,PCI_DEVICE_ID_ARTOP_ATP865R ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,4 }, +static const struct pci_device_id aec62xx_pci_tbl[] = { + {PCI_VDEVICE (ARTOP ,PCI_DEVICE_ID_ARTOP_ATP850UF ),0 }, + {PCI_VDEVICE (ARTOP ,PCI_DEVICE_ID_ARTOP_ATP860 ),1 }, + {PCI_VDEVICE (ARTOP ,PCI_DEVICE_ID_ARTOP_ATP860R ),2 }, + {PCI_VDEVICE (ARTOP ,PCI_DEVICE_ID_ARTOP_ATP865 ),3 }, + {PCI_VDEVICE (ARTOP ,PCI_DEVICE_ID_ARTOP_ATP865R ),4 }, {0 , }, };MODULE_DEVICE_TABLE (pci, aec62xx_pci_tbl);
drivers/ide/pci/alim15x3.c +3 -31
@@ -437,26 +437,6 @@ static void ali_set_dma_mode(ide_drive_t *drive, const u8 speed) }/** -* ali15x3_config_drive_for_dma - configure for DMA -* @drive: drive to configure -* -* Configure a drive for DMA operation. If DMA is not possible we -* drop the drive into PIO mode instead. -*/ - -static int ali15x3_config_drive_for_dma (ide_drive_t *drive) -{ - drive->init_speed =0 ; - -if (ide_tune_dma (drive)) -return 0 ; - -ide_set_max_pio (drive); - -return -1 ; -} - -/** * ali15x3_dma_setup - begin a DMA phase * @drive: target device *
@@ -680,7 +660,6 @@ static u8 __devinit ata66_ali15x3(ide_hwif_t *hwif)static void __devinit init_hwif_common_ali15x3 (ide_hwif_t *hwif) { - hwif->autodma =0 ; hwif->set_pio_mode = &ali_set_pio_mode; hwif->set_dma_mode = &ali_set_dma_mode; hwif->udma_filter = &ali_udma_filter;
@@ -715,17 +694,10 @@ static void __devinit init_hwif_common_ali15x3 (ide_hwif_t *hwif) hwif->mwdma_mask =0x07 ; hwif->swdma_mask =0x07 ; - hwif->ide_dma_check = &ali15x3_config_drive_for_dma; hwif->dma_setup = &ali15x3_dma_setup;if (hwif->cbl !=ATA_CBL_PATA40_SHORT ) hwif->cbl =ata66_ali15x3 (hwif); - -if (!noautodma) - hwif->autodma =1 ; - - hwif->drives[0 ].autodma = hwif->autodma; - hwif->drives[1 ].autodma = hwif->autodma; }/**
@@ -836,9 +808,9 @@ static int __devinit alim15x3_init_one(struct pci_dev *dev, const struct pci_dev } -static struct pci_device_id alim15x3_pci_tbl[] = { - {PCI_VENDOR_ID_AL ,PCI_DEVICE_ID_AL_M5229 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0 }, - {PCI_VENDOR_ID_AL ,PCI_DEVICE_ID_AL_M5228 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0 }, +static const struct pci_device_id alim15x3_pci_tbl[] = { + {PCI_VDEVICE (AL ,PCI_DEVICE_ID_AL_M5229 ),0 }, + {PCI_VDEVICE (AL ,PCI_DEVICE_ID_AL_M5228 ),0 }, {0 , }, };MODULE_DEVICE_TABLE (pci, alim15x3_pci_tbl);
drivers/ide/pci/amd74xx.c +25 -172
253 lines not on this page · raw message
drivers/ide/pci/atiixp.c +11 -82
139 lines not on this page · raw message
drivers/ide/pci/cmd64x.c +5 -22
@@ -330,17 +330,6 @@ static void cmd64x_set_dma_mode(ide_drive_t *drive, const u8 speed) (void )pci_write_config_byte (dev, pciU, regU); } -static int cmd64x_config_drive_for_dma (ide_drive_t *drive) -{ -if (ide_tune_dma (drive)) -return 0 ; - -if (ide_use_fast_pio (drive)) -ide_set_max_pio (drive); - -return -1 ; -} -static int cmd648_ide_dma_end (ide_drive_t *drive) {ide_hwif_t *hwif =HWIF (drive);
@@ -547,8 +536,6 @@ static void __devinit init_hwif_cmd64x(ide_hwif_t *hwif)if (dev->device ==PCI_DEVICE_ID_CMD_646 && rev <5 ) hwif->ultra_mask =0x00 ; - hwif->ide_dma_check = &cmd64x_config_drive_for_dma; -if (hwif->cbl !=ATA_CBL_PATA40_SHORT ) hwif->cbl =ata66_cmd64x (hwif);
@@ -572,10 +559,6 @@ static void __devinit init_hwif_cmd64x(ide_hwif_t *hwif) hwif->ide_dma_test_irq = &cmd64x_ide_dma_test_irq;break ; } - -if (!noautodma) - hwif->autodma =1 ; - hwif->drives[0 ].autodma = hwif->drives[1 ].autodma = hwif->autodma; }static int __devinit init_setup_cmd64x (struct pci_dev *dev,ide_pci_device_t *d)
@@ -654,11 +637,11 @@ static int __devinit cmd64x_init_one(struct pci_dev *dev, const struct pci_devicreturn d.init_setup (dev, &d); } -static struct pci_device_id cmd64x_pci_tbl[] = { - {PCI_VENDOR_ID_CMD ,PCI_DEVICE_ID_CMD_643 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0 }, - {PCI_VENDOR_ID_CMD ,PCI_DEVICE_ID_CMD_646 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,1 }, - {PCI_VENDOR_ID_CMD ,PCI_DEVICE_ID_CMD_648 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,2 }, - {PCI_VENDOR_ID_CMD ,PCI_DEVICE_ID_CMD_649 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,3 }, +static const struct pci_device_id cmd64x_pci_tbl[] = { + {PCI_VDEVICE (CMD ,PCI_DEVICE_ID_CMD_643 ),0 }, + {PCI_VDEVICE (CMD ,PCI_DEVICE_ID_CMD_646 ),1 }, + {PCI_VDEVICE (CMD ,PCI_DEVICE_ID_CMD_648 ),2 }, + {PCI_VDEVICE (CMD ,PCI_DEVICE_ID_CMD_649 ),3 }, {0 , }, };MODULE_DEVICE_TABLE (pci, cmd64x_pci_tbl);
drivers/ide/pci/cs5520.c +5 -20
@@ -105,15 +105,6 @@ static void cs5520_set_dma_mode(ide_drive_t *drive, const u8 speed)cs5520_set_pio_mode (drive,0 ); } -static int cs5520_config_drive_xfer_rate (ide_drive_t *drive) -{ -/* Tune the drive for PIO modes up to PIO 4 */ -ide_set_max_pio (drive); - -/* Then tell the core to use DMA operations */ -return 0 ; -} -/* * We provide a callback for our nonstandard DMA location */
@@ -148,7 +139,6 @@ static void __devinit init_hwif_cs5520(ide_hwif_t *hwif)return ; } - hwif->ide_dma_check = &cs5520_config_drive_xfer_rate; hwif->ide_dma_on = &cs5520_dma_on;/* ATAPI is harder so leave it for now */
@@ -156,12 +146,6 @@ static void __devinit init_hwif_cs5520(ide_hwif_t *hwif) hwif->ultra_mask =0 ; hwif->swdma_mask =0 ; hwif->mwdma_mask =0 ; - -if (!noautodma) - hwif->autodma =1 ; - - hwif->drives[0 ].autodma = hwif->autodma; - hwif->drives[1 ].autodma = hwif->autodma; }#define DECLARE_CS_DEV (name_str) \
@@ -171,7 +155,8 @@ static void __devinit init_hwif_cs5520(ide_hwif_t *hwif) .init_hwif = init_hwif_cs5520, \ .autodma = AUTODMA, \ .bootable = ON_BOARD, \ - .host_flags = IDE_HFLAG_ISA_PORTS, \ + .host_flags = IDE_HFLAG_ISA_PORTS | \ + IDE_HFLAG_VDMA, \ .pio_mask = ATA_PIO4, \ }
@@ -233,9 +218,9 @@ static int __devinit cs5520_init_one(struct pci_dev *dev, const struct pci_devicreturn 0 ; } -static struct pci_device_id cs5520_pci_tbl[] = { - {PCI_VENDOR_ID_CYRIX ,PCI_DEVICE_ID_CYRIX_5510 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0 }, - {PCI_VENDOR_ID_CYRIX ,PCI_DEVICE_ID_CYRIX_5520 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,1 }, +static const struct pci_device_id cs5520_pci_tbl[] = { + {PCI_VDEVICE (CYRIX ,PCI_DEVICE_ID_CYRIX_5510 ),0 }, + {PCI_VDEVICE (CYRIX ,PCI_DEVICE_ID_CYRIX_5520 ),1 }, {0 , }, };MODULE_DEVICE_TABLE (pci, cs5520_pci_tbl);
drivers/ide/pci/cs5530.c +8 -37
81 lines not on this page · raw message
drivers/ide/pci/cs5535.c +2 -26
@@ -157,19 +157,6 @@ static void cs5535_set_pio_mode(ide_drive_t *drive, const u8 pio)cs5535_set_speed (drive,XFER_PIO_0 + pio); } -static int cs5535_dma_check (ide_drive_t *drive) -{ - drive->init_speed =0 ; - -if (ide_tune_dma (drive)) -return 0 ; - -if (ide_use_fast_pio (drive)) -ide_set_max_pio (drive); - -return -1 ; -} -static u8 __devinit cs5535_cable_detect (struct pci_dev *dev) {u8 bit;
@@ -190,8 +177,6 @@ static u8 __devinit cs5535_cable_detect(struct pci_dev *dev)*/ static void __devinit init_hwif_cs5535 (ide_hwif_t *hwif) { - hwif->autodma =0 ; - hwif->set_pio_mode = &cs5535_set_pio_mode; hwif->set_dma_mode = &cs5535_set_dma_mode;
@@ -200,18 +185,11 @@ static void __devinit init_hwif_cs5535(ide_hwif_t *hwif)if (hwif->dma_base ==0 )return ; - hwif->ide_dma_check = &cs5535_dma_check; - hwif->atapi_dma =1 ; hwif->ultra_mask =0x1F ; hwif->mwdma_mask =0x07 ; hwif->cbl =cs5535_cable_detect (hwif->pci_dev); - -if (!noautodma) - hwif->autodma =1 ; - - hwif->drives[1 ].autodma = hwif->drives[0 ].autodma = hwif->autodma; }static ide_pci_device_t cs5535_chipset__devinitdata = {
@@ -229,10 +207,8 @@ static int __devinit cs5535_init_one(struct pci_dev *dev,return ide_setup_pci_device (dev, &cs5535_chipset); } -static struct pci_device_id cs5535_pci_tbl[] = -{ - {PCI_VENDOR_ID_NS ,PCI_DEVICE_ID_NS_CS5535_IDE ,PCI_ANY_ID , -PCI_ANY_ID ,0 ,0 ,0 }, +static const struct pci_device_id cs5535_pci_tbl[] = { + {PCI_VDEVICE (NS ,PCI_DEVICE_ID_NS_CS5535_IDE ),0 }, {0 , }, };
drivers/ide/pci/cy82c693.c +3 -9
@@ -428,8 +428,6 @@ static unsigned int __devinit init_chipset_cy82c693(struct pci_dev *dev, const c*/ static void __devinit init_hwif_cy82c693 (ide_hwif_t *hwif) { - hwif->autodma =0 ; - hwif->chipset = ide_cy82c693; hwif->set_pio_mode = &cy82c693_set_pio_mode;
@@ -444,10 +442,6 @@ static void __devinit init_hwif_cy82c693(ide_hwif_t *hwif) hwif->swdma_mask =0x04 ; hwif->ide_dma_on = &cy82c693_ide_dma_on; -if (!noautodma) - hwif->autodma =1 ; - hwif->drives[0 ].autodma = hwif->autodma; - hwif->drives[1 ].autodma = hwif->autodma; }static __devinitdata ide_hwif_t *primary;
@@ -469,7 +463,7 @@ static ide_pci_device_t cy82c693_chipset __devinitdata = { .init_hwif = init_hwif_cy82c693, .autodma = AUTODMA, .bootable = ON_BOARD, - .host_flags = IDE_HFLAG_SINGLE, + .host_flags = IDE_HFLAG_SINGLE | IDE_HFLAG_TRUST_BIOS_FOR_DMA, .pio_mask = ATA_PIO4, };
@@ -489,8 +483,8 @@ static int __devinit cy82c693_init_one(struct pci_dev *dev, const struct pci_devreturn ret; } -static struct pci_device_id cy82c693_pci_tbl[] = { - {PCI_VENDOR_ID_CONTAQ ,PCI_DEVICE_ID_CONTAQ_82C693 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0 }, +static const struct pci_device_id cy82c693_pci_tbl[] = { + {PCI_VDEVICE (CONTAQ ,PCI_DEVICE_ID_CONTAQ_82C693 ),0 }, {0 , }, };MODULE_DEVICE_TABLE (pci, cy82c693_pci_tbl);
drivers/ide/pci/generic.c +35 -22
148 lines not on this page · raw message
drivers/ide/pci/hpt34x.c +5 -23
@@ -80,19 +80,6 @@ static void hpt34x_set_pio_mode(ide_drive_t *drive, const u8 pio)hpt34x_set_mode (drive,XFER_PIO_0 + pio); } -static int hpt34x_config_drive_xfer_rate (ide_drive_t *drive) -{ - drive->init_speed =0 ; - -if (ide_tune_dma (drive)) -return -1 ; - -if (ide_use_fast_pio (drive)) -ide_set_max_pio (drive); - -return -1 ; -} -/* * If the BIOS does not set the IO base addaress to XX00, 343 will fail. */
@@ -140,8 +127,6 @@ static void __devinit init_hwif_hpt34x(ide_hwif_t *hwif) {u16 pcicmd =0 ; - hwif->autodma =0 ; - hwif->set_pio_mode = &hpt34x_set_pio_mode; hwif->set_dma_mode = &hpt34x_set_mode;
@@ -154,16 +139,13 @@ static void __devinit init_hwif_hpt34x(ide_hwif_t *hwif)return ;#ifdef CONFIG_HPT34X_AUTODMA +if ((pcicmd &PCI_COMMAND_MEMORY ) ==0 ) +return ; + hwif->ultra_mask =0x07 ; hwif->mwdma_mask =0x07 ; hwif->swdma_mask =0x07 ;#endif - - hwif->ide_dma_check = &hpt34x_config_drive_xfer_rate; -if (!noautodma) - hwif->autodma = (pcicmd &PCI_COMMAND_MEMORY ) ?1 :0 ; - hwif->drives[0 ].autodma = hwif->autodma; - hwif->drives[1 ].autodma = hwif->autodma; }static ide_pci_device_t hpt34x_chipset__devinitdata = {
@@ -190,8 +172,8 @@ static int __devinit hpt34x_init_one(struct pci_dev *dev, const struct pci_devicreturn ide_setup_pci_device (dev, d); } -static struct pci_device_id hpt34x_pci_tbl[] = { - {PCI_VENDOR_ID_TTI ,PCI_DEVICE_ID_TTI_HPT343 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0 }, +static const struct pci_device_id hpt34x_pci_tbl[] = { + {PCI_VDEVICE (TTI ,PCI_DEVICE_ID_TTI_HPT343 ),0 }, {0 , }, };MODULE_DEVICE_TABLE (pci, hpt34x_pci_tbl);
drivers/ide/pci/hpt366.c +11 -30
76 lines not on this page · raw message
drivers/ide/pci/it8213.c +12 -72
130 lines not on this page · raw message
drivers/ide/pci/it821x.c +8 -42
82 lines not on this page · raw message
drivers/ide/pci/jmicron.c +2 -30
@@ -100,24 +100,6 @@ static void jmicron_set_dma_mode(ide_drive_t *drive, const u8 mode) }/** -* jmicron_configure_drive_for_dma - set up for DMA transfers -* @drive: drive we are going to set up -* -* As the JMicron snoops for timings all we actually need to do is -* make sure we don't set an invalid mode. -*/ - -static int jmicron_config_drive_for_dma (ide_drive_t *drive) -{ -if (ide_tune_dma (drive)) -return 0 ; - -ide_set_max_pio (drive); - -return -1 ; -} - -/** * init_hwif_jmicron - set up hwif structs * @hwif: interface to set up *
@@ -132,25 +114,15 @@ static void __devinit init_hwif_jmicron(ide_hwif_t *hwif) hwif->drives[0 ].autotune =1 ; hwif->drives[1 ].autotune =1 ; -if (!hwif->dma_base) - goto fallback; +if (hwif->dma_base ==0 ) +return ; hwif->atapi_dma =1 ; hwif->ultra_mask =0x7f ; hwif->mwdma_mask =0x07 ; - hwif->ide_dma_check = &jmicron_config_drive_for_dma; -if (hwif->cbl !=ATA_CBL_PATA40_SHORT ) hwif->cbl =ata66_jmicron (hwif); - - hwif->autodma =1 ; - hwif->drives[0 ].autodma = hwif->autodma; - hwif->drives[1 ].autodma = hwif->autodma; -return ; -fallback: - hwif->autodma =0 ; -return ; }static ide_pci_device_t jmicron_chipset__devinitdata = {
drivers/ide/pci/ns87415.c +3 -8
@@ -197,7 +197,6 @@ static void __devinit init_hwif_ns87415 (ide_hwif_t *hwif)u8 stat;#endif - hwif->autodma =0 ; hwif->selectproc = &ns87415_selectproc;/*
@@ -259,11 +258,6 @@ static void __devinit init_hwif_ns87415 (ide_hwif_t *hwif)outb (0x60 , hwif->dma_status); hwif->dma_setup = &ns87415_ide_dma_setup; hwif->ide_dma_end = &ns87415_ide_dma_end; - -if (!noautodma) - hwif->autodma =1 ; - hwif->drives[0 ].autodma = hwif->autodma; - hwif->drives[1 ].autodma = hwif->autodma; }static ide_pci_device_t ns87415_chipset__devinitdata = {
@@ -274,6 +268,7 @@ static ide_pci_device_t ns87415_chipset __devinitdata = { .init_hwif = init_hwif_ns87415, .autodma = AUTODMA, .bootable = ON_BOARD, + .host_flags = IDE_HFLAG_TRUST_BIOS_FOR_DMA, };static int __devinit ns87415_init_one (struct pci_dev *dev,const struct pci_device_id *id)
@@ -281,8 +276,8 @@ static int __devinit ns87415_init_one(struct pci_dev *dev, const struct pci_devireturn ide_setup_pci_device (dev, &ns87415_chipset); } -static struct pci_device_id ns87415_pci_tbl[] = { - {PCI_VENDOR_ID_NS ,PCI_DEVICE_ID_NS_87415 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0 }, +static const struct pci_device_id ns87415_pci_tbl[] = { + {PCI_VDEVICE (NS ,PCI_DEVICE_ID_NS_87415 ),0 }, {0 , }, };MODULE_DEVICE_TABLE (pci, ns87415_pci_tbl);
drivers/ide/pci/opti621.c +5 -9
@@ -328,7 +328,6 @@ static void opti621_set_pio_mode(ide_drive_t *drive, const u8 pio)*/ static void __devinit init_hwif_opti621 (ide_hwif_t *hwif) { - hwif->autodma =0 ; hwif->drives[0 ].drive_data =PIO_DONT_KNOW ; hwif->drives[1 ].drive_data =PIO_DONT_KNOW ;
@@ -340,11 +339,6 @@ static void __devinit init_hwif_opti621 (ide_hwif_t *hwif) hwif->atapi_dma =1 ; hwif->mwdma_mask =0x07 ; hwif->swdma_mask =0x07 ; - -if (!noautodma) - hwif->autodma =1 ; - hwif->drives[0 ].autodma = hwif->autodma; - hwif->drives[1 ].autodma = hwif->autodma; }static ide_pci_device_t opti621_chipsets[]__devinitdata = {
@@ -355,6 +349,7 @@ static ide_pci_device_t opti621_chipsets[] __devinitdata = { .enablebits = {{0x45,0x80,0x00}, {0x40,0x08,0x00}}, .bootable = ON_BOARD, .pio_mask = ATA_PIO3, + .host_flags = IDE_HFLAG_TRUST_BIOS_FOR_DMA, },{ /* 1 */ .name = "OPTI621X", .init_hwif = init_hwif_opti621,
@@ -362,6 +357,7 @@ static ide_pci_device_t opti621_chipsets[] __devinitdata = { .enablebits = {{0x45,0x80,0x00}, {0x40,0x08,0x00}}, .bootable = ON_BOARD, .pio_mask = ATA_PIO3, + .host_flags = IDE_HFLAG_TRUST_BIOS_FOR_DMA, } };
@@ -370,9 +366,9 @@ static int __devinit opti621_init_one(struct pci_dev *dev, const struct pci_devireturn ide_setup_pci_device (dev, &opti621_chipsets[id->driver_data]); } -static struct pci_device_id opti621_pci_tbl[] = { - {PCI_VENDOR_ID_OPTI ,PCI_DEVICE_ID_OPTI_82C621 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0 }, - {PCI_VENDOR_ID_OPTI ,PCI_DEVICE_ID_OPTI_82C825 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,1 }, +static const struct pci_device_id opti621_pci_tbl[] = { + {PCI_VDEVICE (OPTI ,PCI_DEVICE_ID_OPTI_82C621 ),0 }, + {PCI_VDEVICE (OPTI ,PCI_DEVICE_ID_OPTI_82C825 ),1 }, {0 , }, };MODULE_DEVICE_TABLE (pci, opti621_pci_tbl);
drivers/ide/pci/pdc202xx_new.c +8 -29
@@ -223,19 +223,6 @@ static u8 pdcnew_cable_detect(ide_hwif_t *hwif)return ATA_CBL_PATA80 ; } -static int pdcnew_config_drive_xfer_rate (ide_drive_t *drive) -{ - drive->init_speed =0 ; - -if (ide_tune_dma (drive)) -return 0 ; - -if (ide_use_fast_pio (drive)) -ide_set_max_pio (drive); - -return -1 ; -} -static int pdcnew_quirkproc (ide_drive_t *drive) {const char **list, *model = drive->id->model;
@@ -482,8 +469,6 @@ static unsigned int __devinit init_chipset_pdcnew(struct pci_dev *dev, const chastatic void __devinit init_hwif_pdc202new (ide_hwif_t *hwif) { - hwif->autodma =0 ; - hwif->set_pio_mode = &pdcnew_set_pio_mode; hwif->set_dma_mode = &pdcnew_set_mode;
@@ -502,14 +487,8 @@ static void __devinit init_hwif_pdc202new(ide_hwif_t *hwif) hwif->ultra_mask = hwif->cds->udma_mask; hwif->mwdma_mask =0x07 ; - hwif->ide_dma_check = &pdcnew_config_drive_xfer_rate; -if (hwif->cbl !=ATA_CBL_PATA40_SHORT ) hwif->cbl =pdcnew_cable_detect (hwif); - -if (!noautodma) - hwif->autodma =1 ; - hwif->drives[0 ].autodma = hwif->drives[1 ].autodma = hwif->autodma; }static int __devinit init_setup_pdcnew (struct pci_dev *dev,ide_pci_device_t *d)
@@ -658,14 +637,14 @@ static int __devinit pdc202new_init_one(struct pci_dev *dev, const struct pci_dereturn d->init_setup (dev, d); } -static struct pci_device_id pdc202new_pci_tbl[] = { - {PCI_VENDOR_ID_PROMISE ,PCI_DEVICE_ID_PROMISE_20268 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0 }, - {PCI_VENDOR_ID_PROMISE ,PCI_DEVICE_ID_PROMISE_20269 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,1 }, - {PCI_VENDOR_ID_PROMISE ,PCI_DEVICE_ID_PROMISE_20270 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,2 }, - {PCI_VENDOR_ID_PROMISE ,PCI_DEVICE_ID_PROMISE_20271 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,3 }, - {PCI_VENDOR_ID_PROMISE ,PCI_DEVICE_ID_PROMISE_20275 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,4 }, - {PCI_VENDOR_ID_PROMISE ,PCI_DEVICE_ID_PROMISE_20276 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,5 }, - {PCI_VENDOR_ID_PROMISE ,PCI_DEVICE_ID_PROMISE_20277 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,6 }, +static const struct pci_device_id pdc202new_pci_tbl[] = { + {PCI_VDEVICE (PROMISE ,PCI_DEVICE_ID_PROMISE_20268 ),0 }, + {PCI_VDEVICE (PROMISE ,PCI_DEVICE_ID_PROMISE_20269 ),1 }, + {PCI_VDEVICE (PROMISE ,PCI_DEVICE_ID_PROMISE_20270 ),2 }, + {PCI_VDEVICE (PROMISE ,PCI_DEVICE_ID_PROMISE_20271 ),3 }, + {PCI_VDEVICE (PROMISE ,PCI_DEVICE_ID_PROMISE_20275 ),4 }, + {PCI_VDEVICE (PROMISE ,PCI_DEVICE_ID_PROMISE_20276 ),5 }, + {PCI_VDEVICE (PROMISE ,PCI_DEVICE_ID_PROMISE_20277 ),6 }, {0 , }, };MODULE_DEVICE_TABLE (pci, pdc202new_pci_tbl);
drivers/ide/pci/pdc202xx_old.c +6 -26
@@ -179,19 +179,6 @@ static void pdc_old_disable_66MHz_clock(ide_hwif_t *hwif)outb (clock & ~(hwif->channel ?0x08 :0x02 ), clock_reg); } -static int pdc202xx_config_drive_xfer_rate (ide_drive_t *drive) -{ - drive->init_speed =0 ; - -if (ide_tune_dma (drive)) -return 0 ; - -if (ide_use_fast_pio (drive)) -ide_set_max_pio (drive); - -return -1 ; -} -static int pdc202xx_quirkproc (ide_drive_t *drive) {const char **list, *model = drive->id->model;
@@ -325,8 +312,6 @@ static void __devinit init_hwif_pdc202xx(ide_hwif_t *hwif) (dev->device == PCI_DEVICE_ID_PROMISE_20265)) hwif->rqsize = 256; - hwif->autodma =0 ; - hwif->set_pio_mode = &pdc202xx_set_pio_mode; hwif->set_dma_mode = &pdc202xx_set_mode;
@@ -347,7 +332,6 @@ static void __devinit init_hwif_pdc202xx(ide_hwif_t *hwif) hwif->swdma_mask =0x07 ; hwif->atapi_dma =1 ; - hwif->ide_dma_check = &pdc202xx_config_drive_xfer_rate; hwif->dma_lost_irq = &pdc202xx_dma_lost_irq; hwif->dma_timeout = &pdc202xx_dma_timeout;
@@ -359,10 +343,6 @@ static void __devinit init_hwif_pdc202xx(ide_hwif_t *hwif) hwif->ide_dma_end = &pdc202xx_old_ide_dma_end; } hwif->ide_dma_test_irq = &pdc202xx_old_ide_dma_test_irq; - -if (!noautodma) - hwif->autodma =1 ; - hwif->drives[0 ].autodma = hwif->drives[1 ].autodma = hwif->autodma; }static void __devinit init_dma_pdc202xx (ide_hwif_t *hwif,unsigned long dmabase)
@@ -510,12 +490,12 @@ static int __devinit pdc202xx_init_one(struct pci_dev *dev, const struct pci_devreturn d->init_setup (dev, d); } -static struct pci_device_id pdc202xx_pci_tbl[] = { - {PCI_VENDOR_ID_PROMISE ,PCI_DEVICE_ID_PROMISE_20246 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0 }, - {PCI_VENDOR_ID_PROMISE ,PCI_DEVICE_ID_PROMISE_20262 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,1 }, - {PCI_VENDOR_ID_PROMISE ,PCI_DEVICE_ID_PROMISE_20263 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,2 }, - {PCI_VENDOR_ID_PROMISE ,PCI_DEVICE_ID_PROMISE_20265 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,3 }, - {PCI_VENDOR_ID_PROMISE ,PCI_DEVICE_ID_PROMISE_20267 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,4 }, +static const struct pci_device_id pdc202xx_pci_tbl[] = { + {PCI_VDEVICE (PROMISE ,PCI_DEVICE_ID_PROMISE_20246 ),0 }, + {PCI_VDEVICE (PROMISE ,PCI_DEVICE_ID_PROMISE_20262 ),1 }, + {PCI_VDEVICE (PROMISE ,PCI_DEVICE_ID_PROMISE_20263 ),2 }, + {PCI_VDEVICE (PROMISE ,PCI_DEVICE_ID_PROMISE_20265 ),3 }, + {PCI_VDEVICE (PROMISE ,PCI_DEVICE_ID_PROMISE_20267 ),4 }, {0 , }, };MODULE_DEVICE_TABLE (pci, pdc202xx_pci_tbl);
drivers/ide/pci/piix.c +36 -89
169 lines not on this page · raw message
drivers/ide/pci/rz1000.c +3 -3
@@ -61,9 +61,9 @@ static int __devinit rz1000_init_one(struct pci_dev *dev, const struct pci_devicreturn ide_setup_pci_device (dev, &rz1000_chipset); } -static struct pci_device_id rz1000_pci_tbl[] = { - {PCI_VENDOR_ID_PCTECH ,PCI_DEVICE_ID_PCTECH_RZ1000 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0 }, - {PCI_VENDOR_ID_PCTECH ,PCI_DEVICE_ID_PCTECH_RZ1001 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0 }, +static const struct pci_device_id rz1000_pci_tbl[] = { + {PCI_VDEVICE (PCTECH ,PCI_DEVICE_ID_PCTECH_RZ1000 ),0 }, + {PCI_VDEVICE (PCTECH ,PCI_DEVICE_ID_PCTECH_RZ1001 ),0 }, {0 , }, };MODULE_DEVICE_TABLE (pci, rz1000_pci_tbl);
drivers/ide/pci/sc1200.c +6 -24
@@ -1,5 +1,5 @@/* -* linux/drivers/ide/pci/sc1200.c Version 0.95 Jun 16 2007 +* linux/drivers/ide/pci/sc1200.c Version 0.97 Aug 3 2007 * * Copyright (C) 2000-2002 Mark Lord <[email protected]> * Copyright (C) 2007 Bartlomiej Zolnierkiewicz
@@ -199,19 +199,6 @@ static void sc1200_set_dma_mode(ide_drive_t *drive, const u8 mode) } } -/* -* sc1200_config_dma() handles selection/setting of DMA/UDMA modes -* for both the chipset and drive. -*/ -static int sc1200_config_dma (ide_drive_t *drive) -{ -if (ide_tune_dma (drive)) -return 0 ; - -return 1 ; -} - -/* Replacement for the standard ide_dma_end action in * dma_proc. *
@@ -377,27 +364,22 @@ static void __devinit init_hwif_sc1200 (ide_hwif_t *hwif) {if (hwif->mate) hwif->serialized = hwif->mate->serialized =1 ; - hwif->autodma =0 ; hwif->set_pio_mode = &sc1200_set_pio_mode; hwif->set_dma_mode = &sc1200_set_dma_mode; + hwif->drives[0 ].autotune =1 ; + hwif->drives[1 ].autotune =1 ; +if (hwif->dma_base ==0 )return ; hwif->udma_filter = sc1200_udma_filter; - hwif->ide_dma_check = &sc1200_config_dma; hwif->ide_dma_end = &sc1200_ide_dma_end; -if (!noautodma) - hwif->autodma =1 ; - hwif->atapi_dma =1 ; hwif->ultra_mask =0x07 ; hwif->mwdma_mask =0x07 ; - - hwif->drives[0 ].autodma = hwif->autodma; - hwif->drives[1 ].autodma = hwif->autodma; }static ide_pci_device_t sc1200_chipset__devinitdata = {
@@ -414,8 +396,8 @@ static int __devinit sc1200_init_one(struct pci_dev *dev, const struct pci_devicreturn ide_setup_pci_device (dev, &sc1200_chipset); } -static struct pci_device_id sc1200_pci_tbl[] = { - {PCI_DEVICE (PCI_VENDOR_ID_NS , PCI_DEVICE_ID_NS_SCx200_IDE),0 }, +static const struct pci_device_id sc1200_pci_tbl[] = { + {PCI_VDEVICE (NS , PCI_DEVICE_ID_NS_SCx200_IDE),0 }, {0 , }, };MODULE_DEVICE_TABLE (pci, sc1200_pci_tbl);
drivers/ide/pci/scc_pata.c +2 -31
@@ -284,28 +284,6 @@ static void scc_set_dma_mode(ide_drive_t *drive, const u8 speed) }/** -* scc_configure_drive_for_dma - set up for DMA transfers -* @drive: drive we are going to set up -* -* Set up the drive for DMA, tune the controller and drive as -* required. -* If the drive isn't suitable for DMA or we hit other problems -* then we will drop down to PIO and set up PIO appropriately. -* (return -1) -*/ - -static int scc_config_drive_for_dma (ide_drive_t *drive) -{ -if (ide_tune_dma (drive)) -return 0 ; - -if (ide_use_fast_pio (drive)) -ide_set_max_pio (drive); - -return -1 ; -} - -/** * scc_ide_dma_setup - begin a DMA phase * @drive: target device *
@@ -702,7 +680,6 @@ static void __devinit init_hwif_scc(ide_hwif_t *hwif) hwif->ide_dma_end = scc_ide_dma_end; hwif->set_pio_mode = scc_set_pio_mode; hwif->set_dma_mode = scc_set_dma_mode; - hwif->ide_dma_check = scc_config_drive_for_dma; hwif->ide_dma_test_irq = scc_dma_test_irq; hwif->udma_filter = scc_udma_filter;
@@ -720,12 +697,6 @@ static void __devinit init_hwif_scc(ide_hwif_t *hwif)/* we support 80c cable only. */ hwif->cbl =ATA_CBL_PATA80 ; - - hwif->autodma =0 ; -if (!noautodma) - hwif->autodma =1 ; - hwif->drives[0 ].autodma = hwif->autodma; - hwif->drives[1 ].autodma = hwif->autodma; }#define DECLARE_SCC_DEV (name_str) \
@@ -793,8 +764,8 @@ static void __devexit scc_remove(struct pci_dev *dev)memset (ports,0 ,sizeof (*ports)); } -static struct pci_device_id scc_pci_tbl[] = { - {PCI_VENDOR_ID_TOSHIBA_2 ,PCI_DEVICE_ID_TOSHIBA_SCC_ATA ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0 }, +static const struct pci_device_id scc_pci_tbl[] = { + {PCI_VDEVICE (TOSHIBA_2 ,PCI_DEVICE_ID_TOSHIBA_SCC_ATA ),0 }, {0 , }, };MODULE_DEVICE_TABLE (pci, scc_pci_tbl);
drivers/ide/pci/serverworks.c +7 -26
@@ -97,6 +97,7 @@ static u8 svwks_udma_filter(ide_drive_t *drive) mode =2 ;switch (mode) { +case 3 : mask =0x3f ;break ;case 2 : mask =0x1f ;break ;case 1 : mask =0x07 ;break ;default : mask =0x00 ;break ;
@@ -195,19 +196,6 @@ static void svwks_set_dma_mode(ide_drive_t *drive, const u8 speed)pci_write_config_byte (dev,0x54 , ultra_enable); } -static int svwks_config_drive_xfer_rate (ide_drive_t *drive) -{ - drive->init_speed =0 ; - -if (ide_tune_dma (drive)) -return 0 ; - -if (ide_use_fast_pio (drive)) -ide_set_max_pio (drive); - -return -1 ; -} -static unsigned int __devinit init_chipset_svwks (struct pci_dev *dev,const char *name) {unsigned int reg;
@@ -386,23 +374,16 @@ static void __devinit init_hwif_svwks (ide_hwif_t *hwif) hwif->mwdma_mask =0x07 ; - hwif->autodma =0 ; - hwif->drives[0 ].autotune =1 ; hwif->drives[1 ].autotune =1 ;if (!hwif->dma_base)return ; - hwif->ide_dma_check = &svwks_config_drive_xfer_rate;if (hwif->pci_dev->device !=PCI_DEVICE_ID_SERVERWORKS_OSB4IDE ) {if (hwif->cbl !=ATA_CBL_PATA40_SHORT ) hwif->cbl =ata66_svwks (hwif); } -if (!noautodma) - hwif->autodma =1 ; - - hwif->drives[0 ].autodma = hwif->drives[1 ].autodma =1 ; }static int __devinit init_setup_svwks (struct pci_dev *dev,ide_pci_device_t *d)
@@ -490,12 +471,12 @@ static int __devinit svwks_init_one(struct pci_dev *dev, const struct pci_devicereturn d->init_setup (dev, d); } -static struct pci_device_id svwks_pci_tbl[] = { - {PCI_VENDOR_ID_SERVERWORKS ,PCI_DEVICE_ID_SERVERWORKS_OSB4IDE ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,0 }, - {PCI_VENDOR_ID_SERVERWORKS ,PCI_DEVICE_ID_SERVERWORKS_CSB5IDE ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,1 }, - {PCI_VENDOR_ID_SERVERWORKS ,PCI_DEVICE_ID_SERVERWORKS_CSB6IDE ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,2 }, - {PCI_VENDOR_ID_SERVERWORKS ,PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,3 }, - {PCI_VENDOR_ID_SERVERWORKS ,PCI_DEVICE_ID_SERVERWORKS_HT1000IDE ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,4 }, +static const struct pci_device_id svwks_pci_tbl[] = { + {PCI_VDEVICE (SERVERWORKS ,PCI_DEVICE_ID_SERVERWORKS_OSB4IDE ),0 }, + {PCI_VDEVICE (SERVERWORKS ,PCI_DEVICE_ID_SERVERWORKS_CSB5IDE ),1 }, + {PCI_VDEVICE (SERVERWORKS ,PCI_DEVICE_ID_SERVERWORKS_CSB6IDE ),2 }, + {PCI_VDEVICE (SERVERWORKS ,PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2 ),3 }, + {PCI_VDEVICE (SERVERWORKS ,PCI_DEVICE_ID_SERVERWORKS_HT1000IDE ),4 }, {0 , }, };MODULE_DEVICE_TABLE (pci, svwks_pci_tbl);
drivers/ide/pci/sgiioc4.c +1 -21
@@ -296,20 +296,6 @@ static void sgiioc4_set_dma_mode(ide_drive_t *drive, const u8 speed) { } -static int sgiioc4_ide_dma_check (ide_drive_t *drive) -{ -if (ide_tune_dma (drive)) -return 0 ; - -/* -* ->set_pio_mode is not implemented currently -* so this is just for the completness -*/ -ide_set_max_pio (drive); - -return -1 ; -} -/* returns 1 if dma irq issued, 0 otherwise */ static int sgiioc4_ide_dma_test_irq (ide_drive_t * drive)
@@ -612,7 +598,6 @@ ide_init_sgiioc4(ide_hwif_t * hwif) hwif->dma_setup = &sgiioc4_ide_dma_setup; hwif->dma_start = &sgiioc4_ide_dma_start; hwif->ide_dma_end = &sgiioc4_ide_dma_end; - hwif->ide_dma_check = &sgiioc4_ide_dma_check; hwif->ide_dma_on = &sgiioc4_ide_dma_on; hwif->dma_off_quietly = &sgiioc4_dma_off_quietly; hwif->ide_dma_test_irq = &sgiioc4_ide_dma_test_irq;
@@ -689,12 +674,7 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev)/* Initializing chipset IRQ Registers */ writel (0x03 , (void __iomem *)(irqport +IOC4_INTR_SET *4 )); - hwif->autodma =0 ; - -if (dma_base &&ide_dma_sgiioc4 (hwif, dma_base) ==0 ) { - hwif->autodma =1 ; - hwif->drives[1 ].autodma = hwif->drives[0 ].autodma =1 ; - }else +if (dma_base ==0 ||ide_dma_sgiioc4 (hwif, dma_base))printk (KERN_INFO "%s: %s Bus-Master DMA disabled\n" , hwif->name,DRV_NAME );
drivers/ide/pci/siimage.c +4 -38
73 lines not on this page · raw message
drivers/ide/pci/sis5513.c +92 -370
429 lines not on this page · raw message
drivers/ide/pci/slc90e66.c +16 -51
67 lines not on this page · raw message
drivers/ide/setup-pci.c +3 -45
48 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.