ide-acpi: cleanup do_drive_set_taskfiles()

* ide_noacpi is already checked by ide_acpi_exec_tfs()
  which is the only user of do_drive_set_taskfiles().

* ide_acpi_exec_tfs() prints sufficient debug info about the
  device so no need to do it again.

* do_drive_get_GTF() + ide_acpi_exec_tfs() make sure that this
  function will never be called with incorrect gtf_length argument
  or if device is not present.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
Bartlomiej Zolnierkiewicz 2009-03-24 23:22:42 +01:00
parent 2f0d0fd2a6
commit 1f5892a5d2

View File

@ -334,32 +334,14 @@ static int do_drive_set_taskfiles(ide_drive_t *drive,
unsigned int gtf_length, unsigned int gtf_length,
unsigned long gtf_address) unsigned long gtf_address)
{ {
int rc = -ENODEV, err; int rc = 0, err;
int gtf_count = gtf_length / REGS_PER_GTF; int gtf_count = gtf_length / REGS_PER_GTF;
int ix; int ix;
struct taskfile_array *gtf; struct taskfile_array *gtf;
if (ide_noacpi)
return 0;
DEBPRINT("ENTER: %s, hard_port#: %d\n", drive->name, drive->dn);
if ((drive->dev_flags & IDE_DFLAG_PRESENT) == 0)
goto out;
if (!gtf_count) /* shouldn't be here */
goto out;
DEBPRINT("total GTF bytes=%u (0x%x), gtf_count=%d, addr=0x%lx\n", DEBPRINT("total GTF bytes=%u (0x%x), gtf_count=%d, addr=0x%lx\n",
gtf_length, gtf_length, gtf_count, gtf_address); gtf_length, gtf_length, gtf_count, gtf_address);
if (gtf_length % REGS_PER_GTF) {
printk(KERN_ERR "%s: unexpected GTF length (%d)\n",
__func__, gtf_length);
goto out;
}
rc = 0;
for (ix = 0; ix < gtf_count; ix++) { for (ix = 0; ix < gtf_count; ix++) {
gtf = (struct taskfile_array *) gtf = (struct taskfile_array *)
(gtf_address + ix * REGS_PER_GTF); (gtf_address + ix * REGS_PER_GTF);
@ -370,7 +352,6 @@ static int do_drive_set_taskfiles(ide_drive_t *drive,
rc = err; rc = err;
} }
out:
return rc; return rc;
} }