diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-07 19:32:36 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-07 19:32:36 -0800 |
commit | 905adce4094d64a6691df994e424fbf486301adc (patch) | |
tree | c4e3a2fb1465eeb713b3bec5ef4634c28179a14b /drivers/ide/ide.c | |
parent | 78149df6d565c36675463352d0bfe0000b02b7a7 (diff) | |
parent | 1e8f34f7d88c969a06229a786241839d49dd63e3 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6: (23 commits)
ide-acpi support warning fix
ACPI support for IDE devices
IDE Driver for Delkin/Lexar/etc.. cardbus CF adapter
ide: it8213 IDE driver update (version 2)
ide: add it8213 IDE driver
tc86c001: add missing __init tag for tc86c001_ide_init()
tc86c001: mark init_chipset_tc86c001() with __devinit tag
tc86c001: init_hwif_tc86c001() can be static
ide: add Toshiba TC86C001 IDE driver (take 2)
pdc202xx_new: remove check_in_drive_lists abomination
pdc202xx_new: remove useless code
slc90e66: carry over fixes from piix driver
piix: tuneproc() fixes/cleanups
piix: fix 82371MX enablebits
hpt366: HPT36x PCI clock detection fix
hpt366: init code rewrite
hpt366: clean up DMA timeout handling for HPT370
hpt366: merge HPT37x speedproc handlers
hpt366: cache channel's MCR address
hpt366: switch to using pci_get_slot
...
Diffstat (limited to 'drivers/ide/ide.c')
-rw-r--r-- | drivers/ide/ide.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index 6c9bd5165bdb..c750f6ce770a 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c @@ -187,6 +187,12 @@ int noautodma = 1; EXPORT_SYMBOL(noautodma); +#ifdef CONFIG_BLK_DEV_IDEACPI +int ide_noacpi = 0; +int ide_noacpitfs = 1; +int ide_noacpionboot = 1; +#endif + /* * This is declared extern in ide.h, for access by other IDE modules: */ @@ -1214,10 +1220,15 @@ EXPORT_SYMBOL(system_bus_clock); static int generic_ide_suspend(struct device *dev, pm_message_t mesg) { ide_drive_t *drive = dev->driver_data; + ide_hwif_t *hwif = HWIF(drive); struct request rq; struct request_pm_state rqpm; ide_task_t args; + /* Call ACPI _GTM only once */ + if (!(drive->dn % 2)) + ide_acpi_get_timing(hwif); + memset(&rq, 0, sizeof(rq)); memset(&rqpm, 0, sizeof(rqpm)); memset(&args, 0, sizeof(args)); @@ -1235,10 +1246,17 @@ static int generic_ide_suspend(struct device *dev, pm_message_t mesg) static int generic_ide_resume(struct device *dev) { ide_drive_t *drive = dev->driver_data; + ide_hwif_t *hwif = HWIF(drive); struct request rq; struct request_pm_state rqpm; ide_task_t args; + /* Call ACPI _STM only once */ + if (!(drive->dn % 2)) + ide_acpi_push_timing(hwif); + + ide_acpi_exec_tfs(drive); + memset(&rq, 0, sizeof(rq)); memset(&rqpm, 0, sizeof(rqpm)); memset(&args, 0, sizeof(args)); @@ -1543,6 +1561,24 @@ static int __init ide_setup(char *s) } #endif /* CONFIG_BLK_DEV_IDEPCI */ +#ifdef CONFIG_BLK_DEV_IDEACPI + if (!strcmp(s, "ide=noacpi")) { + //printk(" : Disable IDE ACPI support.\n"); + ide_noacpi = 1; + return 1; + } + if (!strcmp(s, "ide=acpigtf")) { + //printk(" : Enable IDE ACPI _GTF support.\n"); + ide_noacpitfs = 0; + return 1; + } + if (!strcmp(s, "ide=acpionboot")) { + //printk(" : Call IDE ACPI methods on boot.\n"); + ide_noacpionboot = 0; + return 1; + } +#endif /* CONFIG_BLK_DEV_IDEACPI */ + /* * Look for drive options: "hdx=" */ |