forked from Minki/linux
ide-disk: add ide_do_setfeature() helper
Add ide_do_setfeature() helper and convert set_{wcache,acoustic}() to use it. There should be no functional changes caused by this patch. Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
parent
35c1375312
commit
be3c096ebd
@ -580,6 +580,19 @@ static int set_nowerr(ide_drive_t *drive, int arg)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ide_do_setfeature(ide_drive_t *drive, u8 feature, u8 nsect)
|
||||
{
|
||||
ide_task_t task;
|
||||
|
||||
memset(&task, 0, sizeof(task));
|
||||
task.tf.feature = feature;
|
||||
task.tf.nsect = nsect;
|
||||
task.tf.command = ATA_CMD_SET_FEATURES;
|
||||
task.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
|
||||
|
||||
return ide_no_data_taskfile(drive, &task);
|
||||
}
|
||||
|
||||
static void update_ordered(ide_drive_t *drive)
|
||||
{
|
||||
u16 *id = drive->id;
|
||||
@ -619,19 +632,14 @@ ide_devset_get(wcache, wcache);
|
||||
|
||||
static int set_wcache(ide_drive_t *drive, int arg)
|
||||
{
|
||||
ide_task_t args;
|
||||
int err = 1;
|
||||
|
||||
if (arg < 0 || arg > 1)
|
||||
return -EINVAL;
|
||||
|
||||
if (ata_id_flush_enabled(drive->id)) {
|
||||
memset(&args, 0, sizeof(ide_task_t));
|
||||
args.tf.feature = arg ?
|
||||
SETFEATURES_WC_ON : SETFEATURES_WC_OFF;
|
||||
args.tf.command = ATA_CMD_SET_FEATURES;
|
||||
args.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
|
||||
err = ide_no_data_taskfile(drive, &args);
|
||||
err = ide_do_setfeature(drive,
|
||||
arg ? SETFEATURES_WC_ON : SETFEATURES_WC_OFF, 0);
|
||||
if (err == 0)
|
||||
drive->wcache = arg;
|
||||
}
|
||||
@ -658,18 +666,14 @@ ide_devset_get(acoustic, acoustic);
|
||||
|
||||
static int set_acoustic(ide_drive_t *drive, int arg)
|
||||
{
|
||||
ide_task_t args;
|
||||
|
||||
if (arg < 0 || arg > 254)
|
||||
return -EINVAL;
|
||||
|
||||
memset(&args, 0, sizeof(ide_task_t));
|
||||
args.tf.feature = arg ? SETFEATURES_AAM_ON : SETFEATURES_AAM_OFF;
|
||||
args.tf.nsect = arg;
|
||||
args.tf.command = ATA_CMD_SET_FEATURES;
|
||||
args.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
|
||||
ide_no_data_taskfile(drive, &args);
|
||||
ide_do_setfeature(drive,
|
||||
arg ? SETFEATURES_AAM_ON : SETFEATURES_AAM_OFF, arg);
|
||||
|
||||
drive->acoustic = arg;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user