aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-10-10 16:39:27 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-10-10 16:39:27 -0400
commit263138a0ad6e38de7f6526b7de037ed4511308ef (patch)
tree1da68f098b378ddf2381c2012d700c897c6681ee /drivers
parent1e874f448365b80e69b8a60b8b575b17f00811f3 (diff)
ide: preparations for /proc/ide/hd*/settings rework
After rework settings will be no longer created dynamically for each device so we need to make some fixups first. * Use set_[ksettings,unmaskirq]() as a set function for ["keepsettings","unmaskirq"] setting. * Allow writes to ["io_32bit","unmaskirq"] settings also when drive->no_[io_32bit,unmask] is set (this is checked later inside set_[io_32bit,unmaskirq]() anywyay and keeps consistency with the corresponding HDIO_SET_[32BIT,UNMASKINTR] ioctls). * Use max possible multi sectors value (16) as an allowed max for "multcount" setting. set_multcount() set function checks against device's max possbile value anyway and it makes the proc setting consistent with the corresponding HDIO_SET_MULTCOUNT ioctl. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ide/ide-disk.c3
-rw-r--r--drivers/ide/ide-proc.c6
-rw-r--r--drivers/ide/ide.c4
3 files changed, 6 insertions, 7 deletions
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
index 5fc4213437a5..7a15907dce1d 100644
--- a/drivers/ide/ide-disk.c
+++ b/drivers/ide/ide-disk.c
@@ -760,8 +760,7 @@ static void idedisk_add_settings(ide_drive_t *drive)
760 &drive->bios_sect, NULL); 760 &drive->bios_sect, NULL);
761 ide_add_setting(drive, "address", SETTING_RW, TYPE_BYTE, 0, 2, 1, 1, 761 ide_add_setting(drive, "address", SETTING_RW, TYPE_BYTE, 0, 2, 1, 1,
762 &drive->addressing, set_lba_addressing); 762 &drive->addressing, set_lba_addressing);
763 ide_add_setting(drive, "multcount", SETTING_RW, TYPE_BYTE, 0, 763 ide_add_setting(drive, "multcount", SETTING_RW, TYPE_BYTE, 0, 16, 1, 1,
764 drive->id[ATA_ID_MAX_MULTSECT] & 0xff, 1, 1,
765 &drive->mult_count, set_multcount); 764 &drive->mult_count, set_multcount);
766 ide_add_setting(drive, "nowerr", SETTING_RW, TYPE_BYTE, 0, 1, 1, 1, 765 ide_add_setting(drive, "nowerr", SETTING_RW, TYPE_BYTE, 0, 1, 1, 1,
767 &drive->nowerr, set_nowerr); 766 &drive->nowerr, set_nowerr);
diff --git a/drivers/ide/ide-proc.c b/drivers/ide/ide-proc.c
index cbe5a7efbbad..7a64aedfa648 100644
--- a/drivers/ide/ide-proc.c
+++ b/drivers/ide/ide-proc.c
@@ -368,11 +368,11 @@ void ide_add_generic_settings (ide_drive_t *drive)
368/* 368/*
369 * drive setting name read/write access data type min max mul_factor div_factor data pointer set function 369 * drive setting name read/write access data type min max mul_factor div_factor data pointer set function
370 */ 370 */
371 __ide_add_setting(drive, "io_32bit", drive->no_io_32bit ? SETTING_READ : SETTING_RW, TYPE_BYTE, 0, 1 + (SUPPORT_VLB_SYNC << 1), 1, 1, &drive->io_32bit, set_io_32bit, 0); 371 __ide_add_setting(drive, "io_32bit", SETTING_RW, TYPE_BYTE, 0, 1 + (SUPPORT_VLB_SYNC << 1), 1, 1, &drive->io_32bit, set_io_32bit, 0);
372 __ide_add_setting(drive, "keepsettings", SETTING_RW, TYPE_BYTE, 0, 1, 1, 1, &drive->keep_settings, NULL, 0); 372 __ide_add_setting(drive, "keepsettings", SETTING_RW, TYPE_BYTE, 0, 1, 1, 1, &drive->keep_settings, set_ksettings, 0);
373 __ide_add_setting(drive, "nice1", SETTING_RW, TYPE_BYTE, 0, 1, 1, 1, &drive->nice1, NULL, 0); 373 __ide_add_setting(drive, "nice1", SETTING_RW, TYPE_BYTE, 0, 1, 1, 1, &drive->nice1, NULL, 0);
374 __ide_add_setting(drive, "pio_mode", SETTING_WRITE, TYPE_BYTE, 0, 255, 1, 1, NULL, set_pio_mode, 0); 374 __ide_add_setting(drive, "pio_mode", SETTING_WRITE, TYPE_BYTE, 0, 255, 1, 1, NULL, set_pio_mode, 0);
375 __ide_add_setting(drive, "unmaskirq", drive->no_unmask ? SETTING_READ : SETTING_RW, TYPE_BYTE, 0, 1, 1, 1, &drive->unmask, NULL, 0); 375 __ide_add_setting(drive, "unmaskirq", SETTING_RW, TYPE_BYTE, 0, 1, 1, 1, &drive->unmask, set_unmaskirq, 0);
376 __ide_add_setting(drive, "using_dma", SETTING_RW, TYPE_BYTE, 0, 1, 1, 1, &drive->using_dma, set_using_dma, 0); 376 __ide_add_setting(drive, "using_dma", SETTING_RW, TYPE_BYTE, 0, 1, 1, 1, &drive->using_dma, set_using_dma, 0);
377 __ide_add_setting(drive, "init_speed", SETTING_RW, TYPE_BYTE, 0, 70, 1, 1, &drive->init_speed, NULL, 0); 377 __ide_add_setting(drive, "init_speed", SETTING_RW, TYPE_BYTE, 0, 70, 1, 1, &drive->init_speed, NULL, 0);
378 __ide_add_setting(drive, "current_speed", SETTING_RW, TYPE_BYTE, 0, 70, 1, 1, &drive->current_speed, set_xfer_rate, 0); 378 __ide_add_setting(drive, "current_speed", SETTING_RW, TYPE_BYTE, 0, 70, 1, 1, &drive->current_speed, set_xfer_rate, 0);
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c
index 080314e3d6b7..8e0c9f27ae4a 100644
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -305,7 +305,7 @@ int set_io_32bit(ide_drive_t *drive, int arg)
305 return 0; 305 return 0;
306} 306}
307 307
308static int set_ksettings(ide_drive_t *drive, int arg) 308int set_ksettings(ide_drive_t *drive, int arg)
309{ 309{
310 if (arg < 0 || arg > 1) 310 if (arg < 0 || arg > 1)
311 return -EINVAL; 311 return -EINVAL;
@@ -394,7 +394,7 @@ int set_pio_mode(ide_drive_t *drive, int arg)
394 return 0; 394 return 0;
395} 395}
396 396
397static int set_unmaskirq(ide_drive_t *drive, int arg) 397int set_unmaskirq(ide_drive_t *drive, int arg)
398{ 398{
399 if (drive->no_unmask) 399 if (drive->no_unmask)
400 return -EPERM; 400 return -EPERM;