ide-acpi: remove taskfile_load_raw()

* taskfile_load_raw() is used only by do_drive_set_taskfiles()
  so inline it there.

While at it:
- rename 'args' variable to 'task'
- remove struct taskfile_array
- do ide_acpigtf check early
- use REGS_PER_GTF
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 1f5892a5
...@@ -20,9 +20,6 @@ ...@@ -20,9 +20,6 @@
#include <acpi/acpi_bus.h> #include <acpi/acpi_bus.h>
#define REGS_PER_GTF 7 #define REGS_PER_GTF 7
struct taskfile_array {
u8 tfa[REGS_PER_GTF]; /* regs. 0x1f1 - 0x1f7 */
};
struct GTM_buffer { struct GTM_buffer {
u32 PIO_speed0; u32 PIO_speed0;
...@@ -284,43 +281,6 @@ static int do_drive_get_GTF(ide_drive_t *drive, ...@@ -284,43 +281,6 @@ static int do_drive_get_GTF(ide_drive_t *drive,
return err; return err;
} }
/**
* taskfile_load_raw - send taskfile registers to drive
* @drive: drive to which output is sent
* @gtf: raw ATA taskfile register set (0x1f1 - 0x1f7)
*
* Outputs IDE taskfile to the drive.
*/
static int taskfile_load_raw(ide_drive_t *drive,
const struct taskfile_array *gtf)
{
ide_task_t args;
int err = 0;
DEBPRINT("(0x1f1-1f7): hex: "
"%02x %02x %02x %02x %02x %02x %02x\n",
gtf->tfa[0], gtf->tfa[1], gtf->tfa[2],
gtf->tfa[3], gtf->tfa[4], gtf->tfa[5], gtf->tfa[6]);
memset(&args, 0, sizeof(ide_task_t));
/* convert gtf to IDE Taskfile */
memcpy(&args.tf_array[7], &gtf->tfa, 7);
args.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
if (!ide_acpigtf) {
DEBPRINT("_GTF execution disabled\n");
return err;
}
err = ide_no_data_taskfile(drive, &args);
if (err)
printk(KERN_ERR "%s: ide_no_data_taskfile failed: %u\n",
__func__, err);
return err;
}
/** /**
* do_drive_set_taskfiles - write the drive taskfile settings from _GTF * do_drive_set_taskfiles - write the drive taskfile settings from _GTF
* @drive: the drive to which the taskfile command should be sent * @drive: the drive to which the taskfile command should be sent
...@@ -337,19 +297,36 @@ static int do_drive_set_taskfiles(ide_drive_t *drive, ...@@ -337,19 +297,36 @@ static int do_drive_set_taskfiles(ide_drive_t *drive,
int rc = 0, 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;
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);
/* send all taskfile registers (0x1f1-0x1f7) *in*that*order* */
for (ix = 0; ix < gtf_count; ix++) { for (ix = 0; ix < gtf_count; ix++) {
gtf = (struct taskfile_array *) u8 *gtf = (u8 *)(gtf_address + ix * REGS_PER_GTF);
(gtf_address + ix * REGS_PER_GTF); ide_task_t task;
/* send all TaskFile registers (0x1f1-0x1f7) *in*that*order* */ DEBPRINT("(0x1f1-1f7): "
err = taskfile_load_raw(drive, gtf); "hex: %02x %02x %02x %02x %02x %02x %02x\n",
if (err) gtf[0], gtf[1], gtf[2],
gtf[3], gtf[4], gtf[5], gtf[6]);
if (!ide_acpigtf) {
DEBPRINT("_GTF execution disabled\n");
continue;
}
/* convert GTF to taskfile */
memset(&task, 0, sizeof(ide_task_t));
memcpy(&task.tf_array[7], gtf, REGS_PER_GTF);
task.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
err = ide_no_data_taskfile(drive, &task);
if (err) {
printk(KERN_ERR "%s: ide_no_data_taskfile failed: %u\n",
__func__, err);
rc = err; rc = err;
}
} }
return rc; return rc;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment