The patch titled revert "pcmcia: Make ide_cs work with the memory space of CF-Cards if IO space is not available" has been added to the -mm tree. Its filename is revert-pcmcia-make-ide_cs-work-with-the-memory-space-of-cf-cards-if-io-space-is-not-available.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: revert "pcmcia: Make ide_cs work with the memory space of CF-Cards if IO space is not available" From: Andrew Morton <akpm@xxxxxxxx> Two reports (http://lkml.org/lkml/2006/6/15/155 and Pavel) of ide-cs breakage. I'm suspecting it was this patch but have yet to have confirmation from Pavel or Andy (hint). Cc: Pavel Machek <pavel@xxxxxx> Cc: Andy Isaacson <adi@xxxxxxxxxxxxx> Cc: Thomas Kleffel <tk@xxxxxxxxxxx> Cc: Dominik Brodowski <linux@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/ide/legacy/ide-cs.c | 81 ++++------------------------------ 1 file changed, 10 insertions(+), 71 deletions(-) diff -puN drivers/ide/legacy/ide-cs.c~revert-pcmcia-make-ide_cs-work-with-the-memory-space-of-cf-cards-if-io-space-is-not-available drivers/ide/legacy/ide-cs.c --- a/drivers/ide/legacy/ide-cs.c~revert-pcmcia-make-ide_cs-work-with-the-memory-space-of-cf-cards-if-io-space-is-not-available +++ a/drivers/ide/legacy/ide-cs.c @@ -146,16 +146,7 @@ static void ide_detach(struct pcmcia_dev kfree(link->priv); } /* ide_detach */ -static void idecs_mmio_fixup(ide_hwif_t *hwif) -{ - default_hwif_mmiops(hwif); - hwif->mmio = 2; - - ide_undecoded_slave(hwif); -} - -static int idecs_register(unsigned long io, unsigned long ctl, - unsigned long irq, struct pcmcia_device *handle, int is_mmio) +static int idecs_register(unsigned long io, unsigned long ctl, unsigned long irq, struct pcmcia_device *handle) { hw_regs_t hw; memset(&hw, 0, sizeof(hw)); @@ -163,19 +154,7 @@ static int idecs_register(unsigned long hw.irq = irq; hw.chipset = ide_pci; hw.dev = &handle->dev; - - if(is_mmio) - return ide_register_hw_with_fixup(&hw, NULL, idecs_mmio_fixup); - else - return ide_register_hw_with_fixup(&hw, NULL, ide_undecoded_slave); -} - -void outb_io(unsigned char value, unsigned long port) { - outb(value, port); -} - -void outb_mem(unsigned char value, unsigned long port) { - writeb(value, (void __iomem *) port); + return ide_register_hw_with_fixup(&hw, NULL, ide_undecoded_slave); } /*====================================================================== @@ -201,8 +180,7 @@ static int ide_config(struct pcmcia_devi } *stk = NULL; cistpl_cftable_entry_t *cfg; int i, pass, last_ret = 0, last_fn = 0, hd, is_kme = 0; - unsigned long io_base, ctl_base, is_mmio, try_slave; - void (*my_outb)(unsigned char, unsigned long); + unsigned long io_base, ctl_base; DEBUG(0, "ide_config(0x%p)\n", link); @@ -232,7 +210,7 @@ static int ide_config(struct pcmcia_devi /* Not sure if this is right... look up the current Vcc */ CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(link, &stk->conf)); - pass = io_base = ctl_base = is_mmio = try_slave = 0; + pass = io_base = ctl_base = 0; tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; tuple.Attributes = 0; CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); @@ -280,45 +258,11 @@ static int ide_config(struct pcmcia_devi goto next_entry; io_base = link->io.BasePort1; ctl_base = link->io.BasePort1 + 0x0e; - - if (io->win[0].len >= 0x20) - try_slave = 1; - } else goto next_entry; /* If we've got this far, we're done */ break; } - if ((cfg->mem.nwin > 0) || (stk->dflt.mem.nwin > 0)) { - win_req_t req; - memreq_t map; - cistpl_mem_t *mem = (cfg->mem.nwin) ? &cfg->mem : &stk->dflt.mem; - - if (mem->win[0].len < 16) - goto next_entry; - - req.Attributes = WIN_DATA_WIDTH_16|WIN_MEMORY_TYPE_CM; - req.Attributes |= WIN_ENABLE; - req.Base = mem->win[0].host_addr; - req.Size = 0; - - req.AccessSpeed = 0; - if (pcmcia_request_window(&link, &req, &link->win) != 0) - goto next_entry; - map.Page = 0; map.CardOffset = mem->win[0].card_addr; - if (pcmcia_map_mem_page(link->win, &map) != 0) - goto next_entry; - - io_base = (unsigned long) ioremap(req.Base, req.Size); - ctl_base = io_base + 0x0e; - is_mmio = 1; - - if (mem->win[0].len >= 0x20) - try_slave = 1; - - break; - } - next_entry: if (cfg->flags & CISTPL_CFTABLE_DEFAULT) memcpy(&stk->dflt, cfg, sizeof(stk->dflt)); @@ -334,26 +278,21 @@ static int ide_config(struct pcmcia_devi CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); - if(is_mmio) - my_outb = outb_mem; - else - my_outb = outb_io; - /* disable drive interrupts during IDE probe */ - my_outb(0x02, ctl_base); + outb(0x02, ctl_base); /* special setup for KXLC005 card */ if (is_kme) - my_outb(0x81, ctl_base+1); + outb(0x81, ctl_base+1); /* retry registration in case device is still spinning up */ for (hd = -1, i = 0; i < 10; i++) { - hd = idecs_register(io_base, ctl_base, link->irq.AssignedIRQ, link, is_mmio); + hd = idecs_register(io_base, ctl_base, link->irq.AssignedIRQ, link); if (hd >= 0) break; - if (try_slave) { - my_outb(0x02, ctl_base + 0x10); + if (link->io.NumPorts1 == 0x20) { + outb(0x02, ctl_base + 0x10); hd = idecs_register(io_base + 0x10, ctl_base + 0x10, - link->irq.AssignedIRQ, link, is_mmio); + link->irq.AssignedIRQ, link); if (hd >= 0) { io_base += 0x10; ctl_base += 0x10; _ Patches currently in -mm which might be from akpm@xxxxxxxx are dont-select-config_hotplug.patch x86_64-e820c-needs-pgtableh.patch count_vm_events-fix.patch add-computone-intelliport-plus-serial-hotplug-support.patch add-specialix-io8-card-support-hotplug-support.patch fadvise-remove-dead-comments.patch vt-remove-vt-specific-declarations-and-definitions-from.patch tty-remove-include-of-screen_infoh-from-ttyh.patch md-include-sector-number-in-messages-about-corrected-read-errors.patch md-oops-workaround.patch disable-debugging-version-of-write_lock.patch acpi-initialise-cm_sbs_sem.patch acpi-asus-s3-resume-fix-fix.patch sony_apci-resume.patch maestro3-section-fix.patch kauditd_thread-warning-fix.patch add-__must_check-to-device-management-code.patch v4l-dev2-handle-__must_check.patch videodev-check-return-values.patch git-geode-fixup.patch git-gfs2.patch git-gfs2-fixup.patch git-ia64.patch git-ia64-fixup.patch git-ieee1394-fixup.patch git-input.patch git-klibc.patch git-hdrcleanup-vs-git-klibc-on-ia64.patch git-hdrcleanup-vs-git-klibc-on-ia64-2.patch git-libata-all.patch sata-is-bust-on-s390.patch git-netdev-all.patch e1000-irq-naming-update.patch 8139cp-printk-fix.patch 82596-section-fixes.patch ac3200-section-fixes.patch cops-section-fix.patch cs89x0-section-fix.patch at1700-section-fix.patch e2100-section-fix.patch eepro-section-fix.patch eexpress-section-fix.patch es3210-section-fix.patch eth16i-section-fix.patch lance-section-fix.patch lne390-section-fix.patch ni52-section-fix.patch ibmtr-section-fix.patch smctr-section-fix.patch wd-section-fix.patch ni65-section-fix.patch seeq8005-section-fix.patch winbond-840-section-fix.patch fealnx-section-fix.patch sundance-section-fix.patch drivers-net-ns83820c-add-paramter-to-disable-auto.patch git-sas.patch serial-8250-sysrq-deadlock-fix.patch serial-fix-uart_bug_txen-test.patch revert-gregkh-pci-pci-test-that-drivers-properly-call-pci_set_master.patch revert-gregkh-pci-msi-drop-pci_msi_quirk.patch revert-gregkh-pci-msi-stop-inheriting-bus-flags-and-check-root-chipset-bus-flags-instead.patch revert-gregkh-pci-msi-factorize-common-msi-detection-code-from-pci_enable_msi-and-msix.patch revert-gregkh-pci-msi-blacklist-pci-e-chipsets-depending-on-hypertransport-msi-capabality.patch revert-gregkh-pci-msi-rename-pci_cap_id_ht_irqconf-into-pci_cap_id_ht.patch revert-gregkh-pci-msi-merge-existing-msi-disabling-quirks.patch revert-VIA-quirk-fixup-additional-PCI-IDs.patch revert-PCI-quirk-VIA-IRQ-fixup-should-only-run-for-VIA-southbridges.patch NCR_D700-section-fix.patch areca-raid-linux-scsi-driver.patch git-scsi-target-fixup.patch usb-storage-uname-in-pr-sc-unneeded-message-fix.patch pm-usb-hcds-use-pm_event_prethaw-fix.patch kill-usb-kconfig-warning.patch rtl8150_disconnect-needs-tasklet_kill.patch git-supertrak-fixup.patch bcm43xx-opencoded-locking.patch mm-x86_64-mm-init-rdtscp-warning-fix.patch sleazy-fpu-feature-x86_64-support.patch x86_64-wire-up-oops_enter-oops_exit.patch adix-tree-rcu-lockless-readside-update-tidy.patch mm-tracking-shared-dirty-pages-checks.patch mm-tracking-shared-dirty-pages-wimp.patch convert-i386-numa-kva-space-to-bootmem-tidy.patch reduce-max_nr_zones-make-display-of-highmem-counters-conditional-on-config_highmem-tidy.patch reduce-max_nr_zones-use-enum-to-define-zones-reformat-and-comment-cleanup.patch acx1xx-wireless-driver.patch tiacx-pci-build-fix.patch tiacx-ia64-fix.patch tiacx-build-fix.patch binfmt_elf-consistently-use-loff_t.patch fdpic-move-roundup-into-linux-kernelh-fix.patch swsusp-warning-fix.patch swsusp-write-timer.patch swsusp-write-speedup.patch swsusp-read-timer.patch swsusp-read-speedup.patch swsusp-read-speedup-fix.patch swsusp-read-speedup-cleanup.patch swsusp-read-speedup-cleanup-2.patch uml-timer-initialization-cleanup-fix.patch uml-move-_kernc-files-fix.patch deprecate-smbfs-in-favour-of-cifs.patch edac-new-opteron-athlon64-memory-controller-driver-tidy.patch x86-microcode-microcode-driver-cleanup-tidy.patch x86-microcode-add-sysfs-and-hotplug-support-fix.patch x86-microcode-add-sysfs-and-hotplug-support-fix-fix.patch add-address_space_operationsbatch_write-tidy.patch fix-weird-logic-in-alloc_fdtable.patch alloc_fdtable-cleanup.patch pc8736x_gpio-fix-re-modprobe-errors-fix-finish-cdev-init-tidy.patch revert-pcmcia-make-ide_cs-work-with-the-memory-space-of-cf-cards-if-io-space-is-not-available.patch reiserfs-on-demand-bitmap-loading.patch per-task-delay-accounting-taskstats-interface.patch per-task-delay-accounting-proc-export-of-aggregated-block-i-o-delays.patch delay-accounting-taskstats-interface-send-tgid-once.patch per-task-delay-accounting-taskstats-interface-control-exit-data-through-cpumasks-fix.patch task-watchers-task-watchers.patch task-watchers-add-support-for-per-task-watchers.patch swap_prefetch-vs-zoned-counters.patch ecryptfs-mmap-operations.patch ecryptfs-alpha-build-fix.patch ecryptfs-more-elegant-aes-key-size-manipulation.patch ecryptfs-get_sb_dev-fix.patch namespaces-add-nsproxy-dont-include-compileh.patch namespaces-utsname-switch-to-using-uts-namespaces.patch namespaces-utsname-use-init_utsname-when-appropriate.patch namespaces-utsname-implement-utsname-namespaces.patch namespaces-utsname-sysctl-hack.patch ipc-namespace-core.patch readahead-sysctl-parameters-fix.patch make-copy_from_user_inatomic-not-zero-the-tail-on-i386-vs-reiser4.patch reiser4-hardirq-include-fix.patch reiser4-run-truncate_inode_pages-in-reiser4_delete_inode.patch reiser4-get_sb_dev-fix.patch reiser4-vs-zoned-allocator.patch hpt3xx-rework-rate-filtering-tidy.patch cirrus-logic-framebuffer-i2c-support-fix.patch genirq-convert-the-i386-architecture-to-irq-chips.patch genirq-x86_64-irq-reenable-migrating-irqs-to-other-cpus.patch genirq-msi-simplify-msi-enable-and-disable.patch genirq-ia64-irq-dynamic-irq-support.patch genirq-msi-only-build-msi-apicc-on-ia64-fix.patch genirq-i386-irq-remove-the-msi-assumption-that-irq-==-vector.patch nr_blockdev_pages-in_interrupt-warning.patch device-suspend-debug.patch revert-tty-buffering-comment-out-debug-code.patch slab-leaks3-default-y.patch x86-kmap_atomic-debugging.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html