IDE updates part 3
Subsystems (4)
PATCH 1/1 IDE updates part 3
The previous IDE update is in the mainline and there is also -git9 snapshot containing it so lets have two IDE updates the same day!
- rework of I/O and MEM resource handling, the final part
- add struct ide_port_ops and struct ide_dma_ops (a lot of help to get it right from Sergei Shtylyov)
- cleanup patches (Borislav Petkov and Harvey Harrison)
- misc changes
Linus, please pull from:
master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6.git/
to receive the following updates:
Documentation/mips/AU1xxx_IDE.README | 46 --- drivers/ide/arm/bast-ide.c | 3 +- drivers/ide/arm/icside.c | 56 ++- drivers/ide/arm/ide_arm.c | 18 +- drivers/ide/arm/palm_bk3710.c | 28 +- drivers/ide/arm/rapide.c | 1 - drivers/ide/cris/ide-cris.c | 33 +- drivers/ide/h8300/ide-h8300.c | 1 - drivers/ide/ide-acpi.c | 12 +- drivers/ide/ide-cd.c | 585 +++++++++++++++-------------- drivers/ide/ide-dma.c | 140 ++------ drivers/ide/ide-floppy.c | 6 +- drivers/ide/ide-generic.c | 20 +- drivers/ide/ide-io.c | 13 +- drivers/ide/ide-iops.c | 38 ++- drivers/ide/ide-lib.c | 26 +- drivers/ide/ide-pnp.c | 28 ++- drivers/ide/ide-probe.c | 164 ++++++--- drivers/ide/ide-proc.c | 6 +- drivers/ide/ide-scan-pci.c | 2 +- drivers/ide/ide-tape.c | 35 +- drivers/ide/ide-taskfile.c | 19 +- drivers/ide/ide.c | 86 +---- drivers/ide/legacy/ali14xx.c | 38 +-- drivers/ide/legacy/buddha.c | 2 - drivers/ide/legacy/dtc2278.c | 36 +-- drivers/ide/legacy/falconide.c | 1 - drivers/ide/legacy/gayle.c | 2 - drivers/ide/legacy/ht6560b.c | 46 +-- drivers/ide/legacy/ide-4drives.c | 18 +- drivers/ide/legacy/ide-cs.c | 76 +++-- drivers/ide/legacy/ide_platform.c | 1 - drivers/ide/legacy/macide.c | 2 - drivers/ide/legacy/q40ide.c | 1 - drivers/ide/legacy/qd65xx.c | 130 ++----- drivers/ide/legacy/umc8672.c | 37 +-- drivers/ide/mips/au1xxx-ide.c | 115 ++---- drivers/ide/mips/swarm.c | 4 +- drivers/ide/pci/aec62xx.c | 34 +- drivers/ide/pci/alim15x3.c | 89 +++-- drivers/ide/pci/amd74xx.c | 13 +- drivers/ide/pci/atiixp.c | 24 +- drivers/ide/pci/cmd640.c | 45 ++- drivers/ide/pci/cmd64x.c | 138 ++++--- drivers/ide/pci/cs5520.c | 26 +- drivers/ide/pci/cs5530.c | 15 +- drivers/ide/pci/cs5535.c | 22 +- drivers/ide/pci/cy82c693.c | 16 +- drivers/ide/pci/delkin_cb.c | 7 +- drivers/ide/pci/hpt34x.c | 15 +- drivers/ide/pci/hpt366.c | 128 +++++--- drivers/ide/pci/it8213.c | 22 +- drivers/ide/pci/it821x.c | 27 +- drivers/ide/pci/jmicron.c | 25 +- drivers/ide/pci/ns87415.c | 25 +- drivers/ide/pci/opti621.c | 16 +- drivers/ide/pci/pdc202xx_new.c | 23 +- drivers/ide/pci/pdc202xx_old.c | 126 +++---- drivers/ide/pci/piix.c | 13 +- drivers/ide/pci/sc1200.c | 36 +- drivers/ide/pci/scc_pata.c | 67 ++-- drivers/ide/pci/serverworks.c | 33 +- drivers/ide/pci/sgiioc4.c | 103 +++--- drivers/ide/pci/siimage.c | 114 +++--- drivers/ide/pci/sis5513.c | 30 +- drivers/ide/pci/sl82c105.c | 80 ++-- drivers/ide/pci/slc90e66.c | 14 +- drivers/ide/pci/tc86c001.c | 26 +- drivers/ide/pci/triflex.c | 11 +- drivers/ide/pci/trm290.c | 44 +-- drivers/ide/pci/via82cxxx.c | 14 +- drivers/ide/ppc/mpc8xx.c | 12 +- drivers/ide/ppc/pmac.c | 86 +++-- drivers/ide/setup-pci.c | 101 +++-- drivers/scsi/ide-scsi.c | 6 +- include/asm-mips/mach-au1x00/au1xxx_ide.h | 42 -- include/linux/ide.h | 109 +++--- 77 files changed, 1777 insertions(+), 1875 deletions(-)
Bartlomiej Zolnierkiewicz (39):
ide: add struct ide_port_ops (take 2)
ide: remove ->noprobe field from ide_hwif_t
ide: add ide_legacy_device_add() helper
ide: use ide_legacy_device_add() for qd65xx (take 2)
qd65xx: cleanup qd_probe()
ide-pnp: manage I/O resources in driver
ide-cs: manage I/O resources in driver
ide: register ports with non-present devices (for warm-plug)
ide: remove ide_hwif_release_regions()
ide-generic: manage I/O resources in driver
ide-4drives: manage I/O resources in driver
ide_arm: manage I/O resources in driver
ide: add ide_legacy_init_one() helper
ide: manage I/O resources in ide_legacy_init_one()
cmd640: manage I/O resources in driver
ide: manage resources for PCI devices in ide_pci_enable() (take 3)
ide: remove ide_hwif_request_regions()
ide: cleanup setting hwif->mmio flag
ide: remove ->extra field from struct ide_port_info
ide: remove ide_dma_iobase()
ide: remove ->cds field from ide_hwif_t (take 2)
ide: don't display "BIOS" settings in ide_setup_dma()
pdc202xx_old: remove init_dma_pdc202xx()
alim15x3: skip DMA initialization completely on revs < 0x20
ide: move ide_setup_dma() call out from ->init_dma method
ide: export ide_allocate_dma_engine()
ide: factor out setting PCI bus-mastering from ide_hwif_setup_dma()
ide: cleanup ide_setup_dma()
au1xxx-ide: fix MWDMA support
ide: do complete DMA setup in ->init_dma method (take 2)
ide-pmac: use ->init_dma method
icside: use ->init_dma method
sgiioc4: use ->init_dma method
palm_bk3710: use ->init_dma method
au1xxx-ide: use ->init_dma method
sl82c105: check bridge revision in sl82c105_init_one()
ide: add IDE_HFLAG_SERIALIZE_DMA host flag
ide: add struct ide_dma_ops (take 3)
ide: constify struct ide_dma_ops
Borislav Petkov (6):
ide-cd: include proper headers
ide-cd: put all proc-related code at one place
ide-cd: fixup comments
ide-cd: shorten lines longer than 80 columns
ide-cd: fix remaining checkpatch.pl issues
ide-tape: remove idetape_pipeline_active()
Harvey Harrison (1):
ide: replace remaining __FUNCTION__ occurrences
Documentation/mips/AU1xxx_IDE.README +0 -46
@@ -46,8 +46,6 @@ Two files are introduced: a) 'include/asm-mips/mach-au1x00/au1xxx_ide.h' containes : struct _auide_hwif - struct drive_list_entry dma_white_list - struct drive_list_entry dma_black_list timing parameters for PIO mode 0/1/2/3/4 timing parameters for MWDMA 0/1/2
@@ -63,12 +61,6 @@ Four configs variables are introduced: CONFIG_BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ - maximum transfer size per descriptor -If MWDMA is enabled and the connected hard disc is not on the white list, the -kernel switches to a "safe mwdma mode" at boot time. In this mode the IDE -performance is substantial slower then in full speed mwdma. In this case -please add your hard disc to the white list (follow instruction from 'ADD NEW -HARD DISC TO WHITE OR BLACK LIST' section). - SUPPORTED IDE MODES -------------------
@@ -120,44 +112,6 @@ CONFIG_IDEDMA_AUTO=y Also undefine 'IDE_AU1XXX_BURSTMODE' in 'drivers/ide/mips/au1xxx-ide.c' to disable the burst support on DBDMA controller. -ADD NEW HARD DISC TO WHITE OR BLACK LIST ----------------------------------------- - -Step 1 : detect the model name of your hard disc - - a) connect your hard disc to the AU1XXX - - b) boot your kernel and get the hard disc model. - - Example boot log: - - --snipped-- - Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2 - ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx - Au1xxx IDE(builtin) configured for MWDMA2 - Probing IDE interface ide0... - hda: Maxtor 6E040L0, ATA DISK drive - ide0 at 0xac800000-0xac800007,0xac8001c0 on irq 64 - hda: max request size: 64KiB - hda: 80293248 sectors (41110 MB) w/2048KiB Cache, CHS=65535/16/63, (U)DMA - --snipped-- - - In this example 'Maxtor 6E040L0'. - -Step 2 : edit 'include/asm-mips/mach-au1x00/au1xxx_ide.h' - - Add your hard disc to the dma_white_list or dma_black_list structur. - -Step 3 : Recompile the kernel - - Enable MWDMA support in the kernel configuration. Recompile the kernel and - reboot. - -Step 4 : Tests - - If you have add a hard disc to the white list, please run some stress tests - for verification. - ACKNOWLEDGMENTS ---------------
drivers/ide/arm/bast-ide.c +1 -2
@@ -55,8 +55,7 @@ static int __init bastide_register(unsigned int base, unsigned int aux, int irq)ide_init_port_data (hwif, i);ide_init_port_hw (hwif, &hw); - hwif->mmio =1 ; - hwif->quirkproc =NULL ; + hwif->port_ops =NULL ; idx[0 ] = i;
drivers/ide/arm/icside.c +36 -20
112 lines not on this page · raw message
drivers/ide/arm/ide_arm.c +17 -1
@@ -14,6 +14,8 @@#include <asm/mach-types.h> #include <asm/irq.h> +#define DRV_NAME "ide_arm" +#ifdef CONFIG_ARCH_CLPS7500 # include <asm/arch/hardware.h> #
@@ -28,10 +30,24 @@ static int __init ide_arm_init(void) {ide_hwif_t *hwif;hw_regs_t hw; +unsigned long base =IDE_ARM_IO , ctl =IDE_ARM_IO +0x206 ;u8 idx[4 ] = {0xff ,0xff ,0xff ,0xff }; +if (!request_region (base,8 ,DRV_NAME )) { +printk (KERN_ERR "%s: I/O resource 0x%lX-0x%lX not free.\n" , +DRV_NAME , base, base +7 ); +return -EBUSY ; + } + +if (!request_region (ctl,1 ,DRV_NAME )) { +printk (KERN_ERR "%s: I/O resource 0x%lX not free.\n" , +DRV_NAME , ctl); +release_region (base,8 ); +return -EBUSY ; + } +memset (&hw,0 ,sizeof (hw)); -ide_std_init_ports (&hw,IDE_ARM_IO ,IDE_ARM_IO +0x206 ); +ide_std_init_ports (&hw, base, ctl); hw.irq =IDE_ARM_IRQ ; hwif =ide_find_port ();
drivers/ide/arm/palm_bk3710.c +20 -8
@@ -317,17 +317,31 @@ static u8 __devinit palm_bk3710_cable_detect(ide_hwif_t *hwif)return ATA_CBL_PATA80 ; } -static void __devinit palm_bk3710_init_hwif (ide_hwif_t *hwif) +static int __devinit palm_bk3710_init_dma (ide_hwif_t *hwif, +const struct ide_port_info *d) { - hwif->set_pio_mode = palm_bk3710_set_pio_mode; - hwif->set_dma_mode = palm_bk3710_set_dma_mode; +unsigned long base = + hwif->io_ports[IDE_DATA_OFFSET ] -IDE_PALM_ATA_PRI_REG_OFFSET ; - hwif->cable_detect = palm_bk3710_cable_detect; +printk (KERN_INFO " %s: MMIO-DMA\n" , hwif->name); + +if (ide_allocate_dma_engine (hwif)) +return -1 ; + +ide_setup_dma (hwif, base); + +return 0 ; } +static const struct ide_port_ops palm_bk3710_ports_ops = { + .set_pio_mode = palm_bk3710_set_pio_mode, + .set_dma_mode = palm_bk3710_set_dma_mode, + .cable_detect = palm_bk3710_cable_detect, +}; +static const struct ide_port_info __devinitdata palm_bk3710_port_info = { - .init_hwif = palm_bk3710_init_hwif, - .host_flags =IDE_HFLAG_NO_DMA ,/* hack (no PCI) */ + .init_dma = palm_bk3710_init_dma, + .port_ops = &palm_bk3710_ports_ops, .pio_mask =ATA_PIO4 , .udma_mask =ATA_UDMA4 ,/* (input clk 99MHz) */ .mwdma_mask =ATA_MWDMA2 ,
@@ -394,8 +408,6 @@ static int __devinit palm_bk3710_probe(struct platform_device *pdev) hwif->mmio =1 ;default_hwif_mmiops (hwif); -ide_setup_dma (hwif, mem->start); - idx[0 ] = i;ide_device_add (idx, &palm_bk3710_port_info);
drivers/ide/arm/rapide.c +0 -1
@@ -53,7 +53,6 @@ rapide_probe(struct expansion_card *ec, const struct ecard_id *id)ide_init_port_hw (hwif, &hw); - hwif->mmio =1 ;default_hwif_mmiops (hwif); idx[0 ] = hwif->index;
drivers/ide/cris/ide-cris.c +19 -14
@@ -673,11 +673,6 @@ cris_ide_inb(unsigned long reg)return (unsigned char )cris_ide_inw (reg); } -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); -static int cris_dma_test_irq (ide_drive_t *drive); -static void cris_dma_start (ide_drive_t *drive);static void cris_ide_input_data (ide_drive_t *drive,void *,unsigned int );static void cris_ide_output_data (ide_drive_t *drive,void *,unsigned int );static void cris_atapi_input_bytes (ide_drive_t *drive,void *,unsigned int );
@@ -782,8 +777,17 @@ static void __init cris_setup_ports(hw_regs_t *hw, unsigned long base) hw->ack_intr = cris_ide_ack_intr; } +static const struct ide_port_ops cris_port_ops = { + .set_pio_mode = cris_set_pio_mode, + .set_dma_mode = cris_set_dma_mode, +}; + +static const struct ide_dma_ops cris_dma_ops; +static const struct ide_port_info cris_port_info__initdata = { .chipset = ide_etrax100, + .port_ops = &cris_port_ops, + .dma_ops = &cris_dma_ops, .host_flags =IDE_HFLAG_NO_ATAPI_DMA |IDE_HFLAG_NO_DMA ,/* no SFF-style DMA */ .pio_mask =ATA_PIO4 ,
@@ -809,19 +813,11 @@ static int __init init_e100_ide(void)continue ;ide_init_port_data (hwif, hwif->index);ide_init_port_hw (hwif, &hw); - hwif->mmio =1 ; - hwif->set_pio_mode = &cris_set_pio_mode; - hwif->set_dma_mode = &cris_set_dma_mode; + hwif->ata_input_data = &cris_ide_input_data; 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->dma_host_set = &cris_dma_host_set; - hwif->ide_dma_end = &cris_dma_end; - hwif->dma_setup = &cris_dma_setup; - hwif->dma_exec_cmd = &cris_dma_exec_cmd; - hwif->ide_dma_test_irq = &cris_dma_test_irq; - hwif->dma_start = &cris_dma_start; hwif->OUTB = &cris_ide_outb; hwif->OUTW = &cris_ide_outw; hwif->OUTBSYNC = &cris_ide_outbsync;
@@ -1076,6 +1072,15 @@ static void cris_dma_start(ide_drive_t *drive) } } +static const struct ide_dma_ops cris_dma_ops = { + .dma_host_set = cris_dma_host_set, + .dma_setup = cris_dma_setup, + .dma_exec_cmd = cris_dma_exec_cmd, + .dma_start = cris_dma_start, + .dma_end = cris_dma_end, + .dma_test_irq = cris_dma_test_irq, +}; +module_init (init_e100_ide);MODULE_LICENSE ("GPL" );
drivers/ide/h8300/ide-h8300.c +0 -1
@@ -74,7 +74,6 @@ static inline void hwif_setup(ide_hwif_t *hwif) {default_hwif_iops (hwif); - hwif->mmio =1 ; hwif->OUTW = mm_outw; hwif->OUTSW = mm_outsw; hwif->INW = mm_inw;
drivers/ide/ide-acpi.c +6 -6
@@ -55,7 +55,7 @@ struct ide_acpi_hwif_link {/* note: adds function name and KERN_DEBUG */ #ifdef DEBUGGING #define DEBPRINT(fmt, args...) \ - printk(KERN_DEBUG "%s: " fmt, __FUNCTION__, ## args) + printk(KERN_DEBUG "%s: " fmt, __func__, ## args)#else #define DEBPRINT(fmt, args...) do {} while (0)#endif /* DEBUGGING */
@@ -309,7 +309,7 @@ static int do_drive_get_GTF(ide_drive_t *drive,if (ACPI_FAILURE (status)) {printk (KERN_DEBUG "%s: Run _GTF error: status = 0x%x\n" , - __FUNCTION__, status); + __func__, status); goto out; }
@@ -335,7 +335,7 @@ static int do_drive_get_GTF(ide_drive_t *drive, out_obj->buffer.length % REGS_PER_GTF) {printk (KERN_ERR "%s: unexpected GTF length (%d) or addr (0x%p)\n" , - __FUNCTION__, out_obj->buffer.length, + __func__, out_obj->buffer.length, out_obj->buffer.pointer); err = -ENOENT ;kfree (output.pointer);
@@ -384,7 +384,7 @@ static int taskfile_load_raw(ide_drive_t *drive, err =ide_no_data_taskfile (drive, &args);if (err)printk (KERN_ERR "%s: ide_no_data_taskfile failed: %u\n" , - __FUNCTION__, err); + __func__, err);return err; }
@@ -422,7 +422,7 @@ static int do_drive_set_taskfiles(ide_drive_t *drive,if (gtf_length %REGS_PER_GTF ) {printk (KERN_ERR "%s: unexpected GTF length (%d)\n" , - __FUNCTION__, gtf_length); + __func__, gtf_length); goto out; }
@@ -547,7 +547,7 @@ void ide_acpi_get_timing(ide_hwif_t *hwif)printk (KERN_ERR "%s: unexpected _GTM length (0x%x)[should be 0x%zx] or " "addr (0x%p)\n" , - __FUNCTION__, out_obj->buffer.length, + __func__, out_obj->buffer.length,sizeof (struct GTM_buffer ), out_obj->buffer.pointer);return ; }
drivers/ide/ide-cd.c +293 -292
1,236 lines not on this page · raw message
drivers/ide/ide-dma.c +31 -109
236 lines not on this page · raw message
drivers/ide/ide-floppy.c +3 -3
@@ -411,7 +411,7 @@ static ide_startstop_t idefloppy_pc_intr(ide_drive_t *drive)debug_log ("Reached %s interrupt handler\n" , __func__);if (pc->flags &PC_FLAG_DMA_IN_PROGRESS ) { - dma_error = hwif->ide_dma_end (drive); + dma_error = hwif->dma_ops->dma_end (drive);if (dma_error) {printk (KERN_ERR "%s: DMA %s error\n" , drive->name,rq_data_dir (rq) ?"write" :"read" );
@@ -663,7 +663,7 @@ static ide_startstop_t idefloppy_issue_pc(ide_drive_t *drive, dma =0 ;if ((pc->flags &PC_FLAG_DMA_RECOMMENDED ) && drive->using_dma) - dma = !hwif->dma_setup (drive); + dma = !hwif->dma_ops->dma_setup (drive);ide_pktcmd_tf_load (drive,IDE_TFLAG_NO_SELECT_MASK |IDE_TFLAG_OUT_DEVICE , bcount, dma);
@@ -671,7 +671,7 @@ static ide_startstop_t idefloppy_issue_pc(ide_drive_t *drive,if (dma) {/* Begin DMA, if necessary */ pc->flags |=PC_FLAG_DMA_IN_PROGRESS ; - hwif->dma_start (drive); + hwif->dma_ops->dma_start (drive); }/* Can we transfer the packet when we get the interrupt or wait? */
drivers/ide/ide-generic.c +18 -2
@@ -94,7 +94,24 @@ static int __init ide_generic_init(void)unsigned long io_addr =ide_default_io_base (i);hw_regs_t hw; + idx[i] =0xff ; +if (io_addr) { +if (!request_region (io_addr,8 ,DRV_NAME )) { +printk (KERN_ERR "%s: I/O resource 0x%lX-0x%lX " +"not free.\n" , +DRV_NAME , io_addr, io_addr +7 ); +continue ; + } + +if (!request_region (io_addr +0x206 ,1 ,DRV_NAME )) { +printk (KERN_ERR "%s: I/O resource 0x%lX " +"not free.\n" , +DRV_NAME , io_addr +0x206 ); +release_region (io_addr,8 ); +continue ; + } +/* * Skip probing if the corresponding * slot is already occupied.
@@ -111,8 +128,7 @@ static int __init ide_generic_init(void)ide_init_port_hw (hwif, &hw); idx[i] = i; - }else - idx[i] =0xff ; + } }ide_device_add_all (idx,NULL );
drivers/ide/ide-io.c +7 -6
@@ -218,7 +218,7 @@ static ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request ** we could be smarter and check for current xfer_speed * in struct drive etc... */ -if (drive->hwif->dma_host_set ==NULL ) +if (drive->hwif->dma_ops ==NULL )break ;/* * TODO: respect ->using_dma setting
@@ -721,6 +721,7 @@ static ide_startstop_t do_special (ide_drive_t *drive)#endif if (s->b.set_tune) {ide_hwif_t *hwif = drive->hwif; +const struct ide_port_ops *port_ops = hwif->port_ops;u8 req_pio = drive->tune_req; s->b.set_tune =0 ;
@@ -733,10 +734,10 @@ static ide_startstop_t do_special (ide_drive_t *drive)unsigned long flags;spin_lock_irqsave (&ide_lock, flags); - hwif->set_pio_mode (drive, req_pio); + port_ops->set_pio_mode (drive, req_pio);spin_unlock_irqrestore (&ide_lock, flags); }else - hwif->set_pio_mode (drive, req_pio); + port_ops->set_pio_mode (drive, req_pio); }else {int keep_dma = drive->using_dma;
@@ -1237,12 +1238,12 @@ static ide_startstop_t ide_dma_timeout_retry(ide_drive_t *drive, int error)if (error <0 ) {printk (KERN_WARNING "%s: DMA timeout error\n" , drive->name); - (void )HWIF (drive)->ide_dma_end (drive); + (void )hwif->dma_ops->dma_end (drive); ret =ide_error (drive,"dma timeout error" ,ide_read_status (drive)); }else {printk (KERN_WARNING "%s: DMA timeout retry\n" , drive->name); - hwif->dma_timeout (drive); + hwif->dma_ops->dma_timeout (drive); }/*
@@ -1354,7 +1355,7 @@ void ide_timer_expiry (unsigned long data) startstop =handler (drive); }else if (drive_is_ready (drive)) {if (drive->waiting_for_dma) - hwgroup->hwif->dma_lost_irq (drive); + hwif->dma_ops->dma_lost_irq (drive); (void )ide_ack_intr (hwif);printk (KERN_WARNING "%s: lost interrupt\n" , drive->name); startstop =handler (drive);
drivers/ide/ide-iops.c +23 -15
@@ -159,17 +159,20 @@ EXPORT_SYMBOL(default_hwif_mmiops);void SELECT_DRIVE (ide_drive_t *drive) {ide_hwif_t *hwif = drive->hwif; +const struct ide_port_ops *port_ops = hwif->port_ops; -if (hwif->selectproc) - hwif->selectproc (drive); +if (port_ops && port_ops->selectproc) + port_ops->selectproc (drive); hwif->OUTB (drive->select.all, hwif->io_ports[IDE_SELECT_OFFSET ]); }void SELECT_MASK (ide_drive_t *drive,int mask) { -if (HWIF (drive)->maskproc) -HWIF (drive)->maskproc (drive, mask); +const struct ide_port_ops *port_ops = drive->hwif->port_ops; + +if (port_ops && port_ops->maskproc) + port_ops->maskproc (drive, mask); }/*
@@ -429,7 +432,7 @@ int drive_is_ready (ide_drive_t *drive)u8 stat =0 ;if (drive->waiting_for_dma) -return hwif->ide_dma_test_irq (drive); +return hwif->dma_ops->dma_test_irq (drive);#if 0 /* need to guarantee 400ns since last command was issued */
@@ -700,8 +703,8 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)// msleep(50); #ifdef CONFIG_BLK_DEV_IDEDMA -if (hwif->dma_host_set)/* check if host supports DMA */ - hwif->dma_host_set (drive,0 ); +if (hwif->dma_ops)/* check if host supports DMA */ + hwif->dma_ops->dma_host_set (drive,0 );#endif /* Skip setting PIO flow-control modes on pre-EIDE drives */
@@ -759,8 +762,8 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)#ifdef CONFIG_BLK_DEV_IDEDMA if ((speed >=XFER_SW_DMA_0 || (hwif->host_flags &IDE_HFLAG_VDMA )) && drive->using_dma) - hwif->dma_host_set (drive,1 ); -else if (hwif->dma_host_set)/* check if host supports DMA */ + hwif->dma_ops->dma_host_set (drive,1 ); +else if (hwif->dma_ops)/* check if host supports DMA */ ide_dma_off_quietly (drive);#endif
@@ -905,10 +908,11 @@ static ide_startstop_t reset_pollfunc (ide_drive_t *drive) {ide_hwgroup_t *hwgroup =HWGROUP (drive);ide_hwif_t *hwif =HWIF (drive); +const struct ide_port_ops *port_ops = hwif->port_ops;u8 tmp; -if (hwif->reset_poll !=NULL ) { -if (hwif->reset_poll (drive)) { +if (port_ops && port_ops->reset_poll) { +if (port_ops->reset_poll (drive)) {printk (KERN_ERR "%s: host reset_poll failure for %s.\n" , hwif->name, drive->name);return ide_stopped;
@@ -974,6 +978,8 @@ static void ide_disk_pre_reset(ide_drive_t *drive)static void pre_reset (ide_drive_t *drive) { +const struct ide_port_ops *port_ops = drive->hwif->port_ops; +if (drive->media == ide_disk)ide_disk_pre_reset (drive);else
@@ -994,8 +1000,8 @@ static void pre_reset(ide_drive_t *drive)return ; } -if (HWIF (drive)->pre_reset !=NULL ) -HWIF (drive)->pre_reset (drive); +if (port_ops && port_ops->pre_reset) + port_ops->pre_reset (drive);if (drive->current_speed !=0xff ) drive->desired_speed = drive->current_speed;
@@ -1023,6 +1029,7 @@ static ide_startstop_t do_reset1 (ide_drive_t *drive, int do_not_try_atapi)unsigned long flags;ide_hwif_t *hwif;ide_hwgroup_t *hwgroup; +const struct ide_port_ops *port_ops;u8 ctl;spin_lock_irqsave (&ide_lock, flags);
@@ -1089,8 +1096,9 @@ static ide_startstop_t do_reset1 (ide_drive_t *drive, int do_not_try_atapi)* state when the disks are reset this way. At least, the Winbond * 553 documentation says that */ -if (hwif->resetproc) - hwif->resetproc (drive); + port_ops = hwif->port_ops; +if (port_ops && port_ops->resetproc) + port_ops->resetproc (drive);spin_unlock_irqrestore (&ide_lock, flags);return ide_started;
drivers/ide/ide-lib.c +15 -11
@@ -85,7 +85,7 @@ static u8 ide_rate_filter(ide_drive_t *drive, u8 speed) mode =XFER_PIO_4 ; } -// printk("%s: mode 0x%02x, speed 0x%02x\n", __FUNCTION__, mode, speed); +/* printk("%s: mode 0x%02x, speed 0x%02x\n", __func__, mode, speed); */ return min (speed, mode); }
@@ -288,9 +288,10 @@ EXPORT_SYMBOL_GPL(ide_get_best_pio_mode);void ide_set_pio (ide_drive_t *drive,u8 req_pio) {ide_hwif_t *hwif = drive->hwif; +const struct ide_port_ops *port_ops = hwif->port_ops;u8 host_pio, pio; -if (hwif->set_pio_mode ==NULL || +if (port_ops ==NULL || port_ops->set_pio_mode ==NULL || (hwif->host_flags &IDE_HFLAG_NO_SET_MODE ))return ;
@@ -343,29 +344,30 @@ void ide_toggle_bounce(ide_drive_t *drive, int on)int ide_set_pio_mode (ide_drive_t *drive,const u8 mode) {ide_hwif_t *hwif = drive->hwif; +const struct ide_port_ops *port_ops = hwif->port_ops;if (hwif->host_flags &IDE_HFLAG_NO_SET_MODE )return 0 ; -if (hwif->set_pio_mode ==NULL ) +if (port_ops ==NULL || port_ops->set_pio_mode ==NULL )return -1 ;/* * TODO: temporary hack for some legacy host drivers that didn't * set transfer mode on the device in ->set_pio_mode method... */ -if (hwif->set_dma_mode ==NULL ) { - hwif->set_pio_mode (drive, mode -XFER_PIO_0 ); +if (port_ops->set_dma_mode ==NULL ) { + port_ops->set_pio_mode (drive, mode -XFER_PIO_0 );return 0 ; }if (hwif->host_flags &IDE_HFLAG_POST_SET_MODE ) {if (ide_config_drive_speed (drive, mode))return -1 ; - hwif->set_pio_mode (drive, mode -XFER_PIO_0 ); + port_ops->set_pio_mode (drive, mode -XFER_PIO_0 );return 0 ; }else { - hwif->set_pio_mode (drive, mode -XFER_PIO_0 ); + port_ops->set_pio_mode (drive, mode -XFER_PIO_0 );return ide_config_drive_speed (drive, mode); } }
@@ -373,20 +375,21 @@ int ide_set_pio_mode(ide_drive_t *drive, const u8 mode)int ide_set_dma_mode (ide_drive_t *drive,const u8 mode) {ide_hwif_t *hwif = drive->hwif; +const struct ide_port_ops *port_ops = hwif->port_ops;if (hwif->host_flags &IDE_HFLAG_NO_SET_MODE )return 0 ; -if (hwif->set_dma_mode ==NULL ) +if (port_ops ==NULL || port_ops->set_dma_mode ==NULL )return -1 ;if (hwif->host_flags &IDE_HFLAG_POST_SET_MODE ) {if (ide_config_drive_speed (drive, mode))return -1 ; - hwif->set_dma_mode (drive, mode); + port_ops->set_dma_mode (drive, mode);return 0 ; }else { - hwif->set_dma_mode (drive, mode); + port_ops->set_dma_mode (drive, mode);return ide_config_drive_speed (drive, mode); } }
@@ -406,8 +409,9 @@ EXPORT_SYMBOL_GPL(ide_set_dma_mode);int ide_set_xfer_rate (ide_drive_t *drive,u8 rate) {ide_hwif_t *hwif = drive->hwif; +const struct ide_port_ops *port_ops = hwif->port_ops; -if (hwif->set_dma_mode ==NULL || +if (port_ops ==NULL || port_ops->set_dma_mode ==NULL || (hwif->host_flags &IDE_HFLAG_NO_SET_MODE ))return -1 ;
drivers/ide/ide-pnp.c +26 -2
@@ -18,6 +18,8 @@#include <linux/pnp.h> #include <linux/ide.h> +#define DRV_NAME "ide-pnp" +/* Add your devices here :)) */ static struct pnp_device_id idepnp_devices[] = {/* Generic ESDI/IDE/ATA compatible hard disk controller */
@@ -29,13 +31,29 @@ static int idepnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id) {hw_regs_t hw;ide_hwif_t *hwif; +unsigned long base, ctl;if (!(pnp_port_valid (dev,0 ) &&pnp_port_valid (dev,1 ) &&pnp_irq_valid (dev,0 )))return -1 ; + base =pnp_port_start (dev,0 ); + ctl =pnp_port_start (dev,1 ); + +if (!request_region (base,8 ,DRV_NAME )) { +printk (KERN_ERR "%s: I/O resource 0x%lX-0x%lX not free.\n" , +DRV_NAME , base, base +7 ); +return -EBUSY ; + } + +if (!request_region (ctl,1 ,DRV_NAME )) { +printk (KERN_ERR "%s: I/O resource 0x%lX not free.\n" , +DRV_NAME , ctl); +release_region (base,8 ); +return -EBUSY ; + } +memset (&hw,0 ,sizeof (hw)); -ide_std_init_ports (&hw,pnp_port_start (dev,0 ), -pnp_port_start (dev,1 )); +ide_std_init_ports (&hw, base, ctl); hw.irq =pnp_irq (dev,0 ); hwif =ide_find_port ();
@@ -54,6 +72,9 @@ static int idepnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id)return 0 ; } +release_region (ctl,1 ); +release_region (base,8 ); +return -1 ; }
@@ -65,6 +86,9 @@ static void idepnp_remove(struct pnp_dev *dev)ide_unregister (hwif->index); else printk(KERN_ERR "idepnp: Unable to remove device, please report.\n"); + +release_region (pnp_port_start (dev,1 ),1 ); +release_region (pnp_port_start (dev,0 ),8 ); }static struct pnp_driver idepnp_driver = {
drivers/ide/ide-probe.c +119 -45
271 lines not on this page · raw message
drivers/ide/ide-proc.c +3 -3
@@ -599,14 +599,14 @@ static int ide_replace_subdriver(ide_drive_t *drive, const char *driver) err =device_attach (dev);if (err <0 )printk (KERN_WARNING "IDE: %s: device_attach error: %d\n" , - __FUNCTION__, err); + __func__, err); drive->driver_req[0 ] =0 ;if (dev->driver ==NULL ) { err =device_attach (dev);if (err <0 )printk (KERN_WARNING "IDE: %s: device_attach(2) error: %d\n" , - __FUNCTION__, err); + __func__, err); }if (dev->driver && !strcmp (dev->driver->name, driver)) ret =0 ;
@@ -820,7 +820,7 @@ static int ide_drivers_show(struct seq_file *s, void *p) err =bus_for_each_drv (&ide_bus_type,NULL , s, proc_print_driver);if (err <0 )printk (KERN_WARNING "IDE: %s: bus_for_each_drv error: %d\n" , - __FUNCTION__, err); + __func__, err);return 0 ; }
drivers/ide/ide-scan-pci.c +1 -1
@@ -102,7 +102,7 @@ static int __init ide_scan_pcibus(void)if (__pci_register_driver (d, d->driver.owner, d->driver.mod_name))printk (KERN_ERR "%s: failed to register %s driver\n" , - __FUNCTION__, d->driver.mod_name); + __func__, d->driver.mod_name); }return 0 ;
drivers/ide/ide-tape.c +14 -21
@@ -993,7 +993,7 @@ static ide_startstop_t idetape_pc_intr(ide_drive_t *drive) stat =ide_read_status (drive);if (pc->flags &PC_FLAG_DMA_IN_PROGRESS ) { -if (hwif->ide_dma_end (drive) || (stat &ERR_STAT )) { +if (hwif->dma_ops->dma_end (drive) || (stat &ERR_STAT )) {/* * A DMA error is sometimes expected. For example, * if the tape is crossing a filemark during a
@@ -1213,7 +1213,7 @@ static ide_startstop_t idetape_transfer_pc(ide_drive_t *drive)#ifdef CONFIG_BLK_DEV_IDEDMA /* Begin DMA, if necessary */ if (pc->flags &PC_FLAG_DMA_IN_PROGRESS ) - hwif->dma_start (drive); + hwif->dma_ops->dma_start (drive);#endif /* Send the actual packet */ HWIF (drive)->atapi_output_bytes (drive, pc->c,12 );
@@ -1279,7 +1279,7 @@ static ide_startstop_t idetape_issue_pc(ide_drive_t *drive,ide_dma_off (drive); }if ((pc->flags &PC_FLAG_DMA_RECOMMENDED ) && drive->using_dma) - dma_ok = !hwif->dma_setup (drive); + dma_ok = !hwif->dma_ops->dma_setup (drive);ide_pktcmd_tf_load (drive,IDE_TFLAG_NO_SELECT_MASK |IDE_TFLAG_OUT_DEVICE , bcount, dma_ok);
@@ -1605,14 +1605,6 @@ out: }/* Pipeline related functions */ -static inline int idetape_pipeline_active (idetape_tape_t *tape) -{ -int rc1, rc2; - - rc1 =test_bit (IDETAPE_FLAG_PIPELINE_ACTIVE , &tape->flags); - rc2 = (tape->active_data_rq !=NULL ); -return rc1; -}/* * The function below uses __get_free_page to allocate a pipeline stage, along
@@ -2058,7 +2050,7 @@ static int __idetape_discard_read_pipeline(ide_drive_t *drive)spin_lock_irqsave (&tape->lock, flags); tape->next_stage =NULL ; -if (idetape_pipeline_active (tape)) +if (test_bit (IDETAPE_FLAG_PIPELINE_ACTIVE , &tape->flags))idetape_wait_for_request (drive, tape->active_data_rq);spin_unlock_irqrestore (&tape->lock, flags);
@@ -2131,7 +2123,7 @@ static int idetape_queue_rw_tail(ide_drive_t *drive, int cmd, int blocks,debug_log (DBG_SENSE ,"%s: cmd=%d\n" , __func__, cmd); -if (idetape_pipeline_active (tape)) { +if (test_bit (IDETAPE_FLAG_PIPELINE_ACTIVE , &tape->flags)) {printk (KERN_ERR "ide-tape: bug: the pipeline is active in %s\n" , __func__);return (0 );
@@ -2162,8 +2154,7 @@ static void idetape_plug_pipeline(ide_drive_t *drive)if (tape->next_stage ==NULL )return ; -if (!idetape_pipeline_active (tape)) { -set_bit (IDETAPE_FLAG_PIPELINE_ACTIVE , &tape->flags); +if (!test_and_set_bit (IDETAPE_FLAG_PIPELINE_ACTIVE , &tape->flags)) {idetape_activate_next_stage (drive); (void )ide_do_drive_cmd (drive, tape->active_data_rq, ide_end); }
@@ -2242,13 +2233,14 @@ static int idetape_add_chrdev_write_request(ide_drive_t *drive, int blocks)/* Attempt to allocate a new stage. Beware possible race conditions. */ while ((new_stage =idetape_kmalloc_stage (tape)) ==NULL ) {spin_lock_irqsave (&tape->lock, flags); -if (idetape_pipeline_active (tape)) { +if (test_bit (IDETAPE_FLAG_PIPELINE_ACTIVE , &tape->flags)) {idetape_wait_for_request (drive, tape->active_data_rq);spin_unlock_irqrestore (&tape->lock, flags); }else {spin_unlock_irqrestore (&tape->lock, flags);idetape_plug_pipeline (drive); -if (idetape_pipeline_active (tape)) +if (test_bit (IDETAPE_FLAG_PIPELINE_ACTIVE , + &tape->flags))continue ;/* * The machine is short on memory. Fallback to non-
@@ -2277,7 +2269,7 @@ static int idetape_add_chrdev_write_request(ide_drive_t *drive, int blocks)* starting to service requests, so that we will be able to keep up with * the higher speeds of the tape. */ - if (!idetape_pipeline_active(tape)) { + if (!test_bit(IDETAPE_FLAG_PIPELINE_ACTIVE, &tape->flags)) { if (tape->nr_stages >= tape->max_stages * 9 / 10 || tape->nr_stages >= tape->max_stages - tape->uncontrolled_pipeline_head_speed * 3 * 1024 /
@@ -2304,10 +2296,11 @@ static void idetape_wait_for_pipeline(ide_drive_t *drive)idetape_tape_t *tape = drive->driver_data;unsigned long flags; -while (tape->next_stage ||idetape_pipeline_active (tape)) { +while (tape->next_stage ||test_bit (IDETAPE_FLAG_PIPELINE_ACTIVE , + &tape->flags)) {idetape_plug_pipeline (drive);spin_lock_irqsave (&tape->lock, flags); -if (idetape_pipeline_active (tape)) +if (test_bit (IDETAPE_FLAG_PIPELINE_ACTIVE , &tape->flags))idetape_wait_for_request (drive, tape->active_data_rq);spin_unlock_irqrestore (&tape->lock, flags); }
@@ -2464,7 +2457,7 @@ static int idetape_init_read(ide_drive_t *drive, int max_stages) new_stage =idetape_kmalloc_stage (tape); } } -if (!idetape_pipeline_active (tape)) { +if (!test_bit (IDETAPE_FLAG_PIPELINE_ACTIVE , &tape->flags)) {if (tape->nr_pending_stages >=3 * max_stages /4 ) { tape->measure_insert_time =1 ; tape->insert_time = jiffies;
drivers/ide/ide-taskfile.c +10 -9
@@ -135,6 +135,7 @@ ide_startstop_t do_rw_taskfile (ide_drive_t *drive, ide_task_t *task)ide_hwif_t *hwif =HWIF (drive);struct ide_taskfile *tf = &task->tf;ide_handler_t *handler =NULL ; +const struct ide_dma_ops *dma_ops = hwif->dma_ops;if (task->data_phase ==TASKFILE_MULTI_IN || task->data_phase ==TASKFILE_MULTI_OUT ) {
@@ -178,10 +179,10 @@ ide_startstop_t do_rw_taskfile (ide_drive_t *drive, ide_task_t *task)return ide_started;default :if (task_dma_ok (task) ==0 || drive->using_dma ==0 || - hwif->dma_setup (drive)) + dma_ops->dma_setup (drive))return ide_stopped; - hwif->dma_exec_cmd (drive, tf->command); - hwif->dma_start (drive); + dma_ops->dma_exec_cmd (drive, tf->command); + dma_ops->dma_start (drive);return ide_started; } }
@@ -455,7 +456,7 @@ static ide_startstop_t task_in_intr(ide_drive_t *drive)/* Error? */ if (stat &ERR_STAT ) -return task_error (drive, rq, __FUNCTION__, stat); +return task_error (drive, rq, __func__, stat);/* Didn't want any data? Odd. */ if (!(stat &DRQ_STAT ))
@@ -467,7 +468,7 @@ static ide_startstop_t task_in_intr(ide_drive_t *drive)if (!hwif->nleft) { stat =wait_drive_not_busy (drive);if (!OK_STAT (stat,0 ,BAD_STAT )) -return task_error (drive, rq, __FUNCTION__, stat); +return task_error (drive, rq, __func__, stat);task_end_request (drive, rq, stat);return ide_stopped; }
@@ -488,11 +489,11 @@ static ide_startstop_t task_out_intr (ide_drive_t *drive)u8 stat =ide_read_status (drive);if (!OK_STAT (stat,DRIVE_READY , drive->bad_wstat)) -return task_error (drive, rq, __FUNCTION__, stat); +return task_error (drive, rq, __func__, stat);/* Deal with unexpected ATA data phase. */ if (((stat &DRQ_STAT ) ==0 ) ^ !hwif->nleft) -return task_error (drive, rq, __FUNCTION__, stat); +return task_error (drive, rq, __func__, stat);if (!hwif->nleft) {task_end_request (drive, rq, stat);
@@ -675,7 +676,7 @@ int ide_taskfile_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg)/* (hs): give up if multcount is not set */ printk (KERN_ERR "%s: %s Multimode Write " \"multcount is not set\n" , - drive->name, __FUNCTION__); + drive->name, __func__); err = -EPERM ; goto abort; }
@@ -692,7 +693,7 @@ int ide_taskfile_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg)/* (hs): give up if multcount is not set */ printk (KERN_ERR "%s: %s Multimode Read failure " \"multcount is not set\n" , - drive->name, __FUNCTION__); + drive->name, __func__); err = -EPERM ; goto abort; }
drivers/ide/ide.c +4 -82
138 lines not on this page · raw message
drivers/ide/legacy/ali14xx.c +9 -29
@@ -49,6 +49,8 @@#include <asm/io.h> +#define DRV_NAME "ali14xx" +/* port addresses for auto-detection */ #define ALI_NUM_PORTS 4 static const int ports[ALI_NUM_PORTS] __initdata =
@@ -192,18 +194,20 @@ static int __init initRegisters(void)return t; } +static const struct ide_port_ops ali14xx_port_ops = { + .set_pio_mode = ali14xx_set_pio_mode, +}; +static const struct ide_port_info ali14xx_port_info = { + .name =DRV_NAME , .chipset = ide_ali14xx, + .port_ops = &ali14xx_port_ops, .host_flags =IDE_HFLAG_NO_DMA |IDE_HFLAG_NO_AUTOTUNE , .pio_mask =ATA_PIO4 , };static int __init ali14xx_probe (void ) { -ide_hwif_t *hwif, *mate; -static u8 idx[4 ] = {0xff ,0xff ,0xff ,0xff }; -hw_regs_t hw[2 ]; -printk (KERN_DEBUG "ali14xx: base=0x%03x, regOn=0x%02x.\n" , basePort, regOn);
@@ -213,31 +217,7 @@ static int __init ali14xx_probe(void)return 1 ; } -memset (&hw,0 ,sizeof (hw)); - -ide_std_init_ports (&hw[0 ],0x1f0 ,0x3f6 ); - hw[0 ].irq =14 ; - -ide_std_init_ports (&hw[1 ],0x170 ,0x376 ); - hw[1 ].irq =15 ; - - hwif =ide_find_port (); -if (hwif) { -ide_init_port_hw (hwif, &hw[0 ]); - hwif->set_pio_mode = &ali14xx_set_pio_mode; - idx[0 ] = hwif->index; - } - - mate =ide_find_port (); -if (mate) { -ide_init_port_hw (mate, &hw[1 ]); - mate->set_pio_mode = &ali14xx_set_pio_mode; - idx[1 ] = mate->index; - } - -ide_device_add (idx, &ali14xx_port_info); - -return 0 ; +return ide_legacy_device_add (&ali14xx_port_info,0 ); }int probe_ali14xx;
drivers/ide/legacy/buddha.c +0 -2
@@ -228,8 +228,6 @@ fail_base2:ide_init_port_data (hwif, index);ide_init_port_hw (hwif, &hw); - hwif->mmio =1 ; - idx[i] = index; } }
drivers/ide/legacy/dtc2278.c +9 -27
@@ -16,6 +16,8 @@#include <asm/io.h> +#define DRV_NAME "dtc2278" +/* * Changing this #undef to #define may solve start up problems in some systems. */
@@ -86,8 +88,14 @@ static void dtc2278_set_pio_mode(ide_drive_t *drive, const u8 pio) } } +static const struct ide_port_ops dtc2278_port_ops = { + .set_pio_mode = dtc2278_set_pio_mode, +}; +static const struct ide_port_info dtc2278_port_info__initdata = { + .name =DRV_NAME , .chipset = ide_dtc2278, + .port_ops = &dtc2278_port_ops, .host_flags =IDE_HFLAG_SERIALIZE |IDE_HFLAG_NO_UNMASK_IRQS | IDE_HFLAG_IO_32BIT |
@@ -101,9 +109,6 @@ static const struct ide_port_info dtc2278_port_info __initdata = {static int __init dtc2278_probe (void ) {unsigned long flags; -ide_hwif_t *hwif, *mate; -static u8 idx[4 ] = {0xff ,0xff ,0xff ,0xff }; -hw_regs_t hw[2 ];local_irq_save (flags);/*
@@ -123,30 +128,7 @@ static int __init dtc2278_probe(void)#endif local_irq_restore (flags); -memset (&hw,0 ,sizeof (hw)); - -ide_std_init_ports (&hw[0 ],0x1f0 ,0x3f6 ); - hw[0 ].irq =14 ; - -ide_std_init_ports (&hw[1 ],0x170 ,0x376 ); - hw[1 ].irq =15 ; - - hwif =ide_find_port (); -if (hwif) { -ide_init_port_hw (hwif, &hw[0 ]); - hwif->set_pio_mode = dtc2278_set_pio_mode; - idx[0 ] = hwif->index; - } - - mate =ide_find_port (); -if (mate) { -ide_init_port_hw (mate, &hw[1 ]); - idx[1 ] = mate->index; - } - -ide_device_add (idx, &dtc2278_port_info); - -return 0 ; +return ide_legacy_device_add (&dtc2278_port_info,0 ); }int probe_dtc2278 =0 ;
drivers/ide/legacy/falconide.c +0 -1
@@ -89,7 +89,6 @@ static int __init falconide_init(void)ide_init_port_data (hwif, index);ide_init_port_hw (hwif, &hw); - hwif->mmio =1 ;ide_get_lock (NULL ,NULL );ide_device_add (idx,NULL );
drivers/ide/legacy/gayle.c +0 -2
@@ -182,8 +182,6 @@ found:ide_init_port_data (hwif, index);ide_init_port_hw (hwif, &hw); - hwif->mmio =1 ; - idx[i] = index; }else release_mem_region (res_start, res_n);
drivers/ide/legacy/ht6560b.c +11 -35
25 lines not on this page · raw message
drivers/ide/legacy/ide-cs.c +53 -23
76 lines not on this page · raw message
drivers/ide/legacy/qd65xx.c +35 -95
130 lines not on this page · raw message
drivers/ide/mips/au1xxx-ide.c +35 -80
115 lines not on this page · raw message
drivers/ide/pci/alim15x3.c +52 -37
89 lines not on this page · raw message
drivers/ide/pci/cmd640.c +36 -9
45 lines not on this page · raw message
drivers/ide/pci/cmd64x.c +78 -60
138 lines not on this page · raw message
drivers/ide/pci/hpt366.c +85 -43
128 lines not on this page · raw message
drivers/ide/pci/pdc202xx_old.c +59 -67
126 lines not on this page · raw message
drivers/ide/pci/scc_pata.c +32 -35
67 lines not on this page · raw message
drivers/ide/pci/sgiioc4.c +45 -58
103 lines not on this page · raw message
drivers/ide/pci/siimage.c +58 -56
114 lines not on this page · raw message
drivers/ide/pci/sl82c105.c +38 -42
80 lines not on this page · raw message
drivers/ide/pci/trm290.c +21 -23
44 lines not on this page · raw message
drivers/ide/ppc/pmac.c +54 -32
86 lines not on this page · raw message
drivers/ide/setup-pci.c +63 -38
101 lines not on this page · raw message
include/asm-mips/mach-au1x00/au1xxx_ide.h +0 -42
42 lines not on this page · raw message
include/linux/ide.h +62 -47
109 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.