diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-02-03 07:58:57 +1100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-02-03 07:58:57 +1100 |
commit | 9135f1901ee6449dfe338adf6e40e9c2025b8150 (patch) | |
tree | 05e1ab38563a93cf0df8c05d21062b85b14f8491 /drivers/ide/ide-acpi.c | |
parent | 124d3b7041f9a0ca7c43a6293e1cae4576c32fd5 (diff) | |
parent | d59823fa44f7d9babf586b3c705db314aa0f9822 (diff) | |
download | kernel_samsung_smdk4412-9135f1901ee6449dfe338adf6e40e9c2025b8150.zip kernel_samsung_smdk4412-9135f1901ee6449dfe338adf6e40e9c2025b8150.tar.gz kernel_samsung_smdk4412-9135f1901ee6449dfe338adf6e40e9c2025b8150.tar.bz2 |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (95 commits)
ide-tape: remove idetape_config_t typedef
ide-tape: remove mtio.h related comments
ide-tape: make function name more accurate
ide-tape: remove unused sense packet commands.
ide-tape: use generic byteorder macros
ide-tape: remove EXPERIMENTAL driver status
ide-tape: use generic scsi commands
ide-tape: remove struct idetape_block_size_page_t
ide-tape: remove structs os_partition_t, os_dat_entry_t, os_dat_t
ide-tape: remove struct idetape_parameter_block_descriptor_t
ide-tape: remove struct idetape_medium_partition_page_t
ide-tape: remove struct idetape_data_compression_page_t
ide-tape: remove struct idetape_inquiry_result_t
ide-tape: remove struct idetape_capabilities_page_t
ide-tape: remove IDETAPE_DEBUG_BUGS
ide-tape: remove IDETAPE_DEBUG_INFO
ide-tape: dump gcw fields on error in idetape_identify_device()
ide-tape: remove struct idetape_mode_parameter_header_t
ide-tape: remove struct idetape_request_sense_result_t
ide-tape: remove dead code
...
Diffstat (limited to 'drivers/ide/ide-acpi.c')
-rw-r--r-- | drivers/ide/ide-acpi.c | 63 |
1 files changed, 20 insertions, 43 deletions
diff --git a/drivers/ide/ide-acpi.c b/drivers/ide/ide-acpi.c index 68bc618..25aaeae 100644 --- a/drivers/ide/ide-acpi.c +++ b/drivers/ide/ide-acpi.c @@ -39,7 +39,6 @@ struct GTM_buffer { }; struct ide_acpi_drive_link { - ide_drive_t *drive; acpi_handle obj_handle; u8 idbuff[512]; }; @@ -280,16 +279,6 @@ static int do_drive_get_GTF(ide_drive_t *drive, port = hwif->channel ? drive->dn - 2: drive->dn; - if (!drive->acpidata) { - if (port == 0) { - drive->acpidata = &hwif->acpidata->master; - hwif->acpidata->master.drive = drive; - } else { - drive->acpidata = &hwif->acpidata->slave; - hwif->acpidata->slave.drive = drive; - } - } - DEBPRINT("ENTER: %s at %s, port#: %d, hard_port#: %d\n", hwif->name, dev->bus_id, port, hwif->channel); @@ -494,7 +483,6 @@ int ide_acpi_exec_tfs(ide_drive_t *drive) return ret; } -EXPORT_SYMBOL_GPL(ide_acpi_exec_tfs); /** * ide_acpi_get_timing - get the channel (controller) timings @@ -580,7 +568,6 @@ void ide_acpi_get_timing(ide_hwif_t *hwif) kfree(output.pointer); } -EXPORT_SYMBOL_GPL(ide_acpi_get_timing); /** * ide_acpi_push_timing - set the channel (controller) timings @@ -634,7 +621,6 @@ void ide_acpi_push_timing(ide_hwif_t *hwif) } DEBPRINT("_STM status: %d\n", status); } -EXPORT_SYMBOL_GPL(ide_acpi_push_timing); /** * ide_acpi_set_state - set the channel power state @@ -688,11 +674,6 @@ void ide_acpi_set_state(ide_hwif_t *hwif, int on) */ void ide_acpi_init(ide_hwif_t *hwif) { - int unit; - int err; - struct ide_acpi_drive_link *master; - struct ide_acpi_drive_link *slave; - ide_acpi_blacklist(); hwif->acpidata = kzalloc(sizeof(struct ide_acpi_hwif_link), GFP_KERNEL); @@ -704,40 +685,38 @@ void ide_acpi_init(ide_hwif_t *hwif) DEBPRINT("no ACPI object for %s found\n", hwif->name); kfree(hwif->acpidata); hwif->acpidata = NULL; - return; } +} + +void ide_acpi_port_init_devices(ide_hwif_t *hwif) +{ + ide_drive_t *drive; + int i, err; + + if (hwif->acpidata == NULL) + return; /* * The ACPI spec mandates that we send information * for both drives, regardless whether they are connected * or not. */ - hwif->acpidata->master.drive = &hwif->drives[0]; hwif->drives[0].acpidata = &hwif->acpidata->master; - master = &hwif->acpidata->master; - - hwif->acpidata->slave.drive = &hwif->drives[1]; hwif->drives[1].acpidata = &hwif->acpidata->slave; - slave = &hwif->acpidata->slave; - /* * Send IDENTIFY for each drive */ - if (master->drive->present) { - err = taskfile_lib_get_identify(master->drive, master->idbuff); - if (err) { - DEBPRINT("identify device %s failed (%d)\n", - master->drive->name, err); - } - } + for (i = 0; i < MAX_DRIVES; i++) { + drive = &hwif->drives[i]; + + if (!drive->present) + continue; - if (slave->drive->present) { - err = taskfile_lib_get_identify(slave->drive, slave->idbuff); - if (err) { + err = taskfile_lib_get_identify(drive, drive->acpidata->idbuff); + if (err) DEBPRINT("identify device %s failed (%d)\n", - slave->drive->name, err); - } + drive->name, err); } if (ide_noacpionboot) { @@ -753,13 +732,11 @@ void ide_acpi_init(ide_hwif_t *hwif) ide_acpi_get_timing(hwif); ide_acpi_push_timing(hwif); - for (unit = 0; unit < MAX_DRIVES; ++unit) { - ide_drive_t *drive = &hwif->drives[unit]; + for (i = 0; i < MAX_DRIVES; i++) { + drive = &hwif->drives[i]; - if (drive->present) { + if (drive->present) /* Execute ACPI startup code */ ide_acpi_exec_tfs(drive); - } } } -EXPORT_SYMBOL_GPL(ide_acpi_init); |