ide: do not access ide_drive_t 'drive_data' field directly
Change ide_drive_t 'drive_data' field from 'unsigned int' type to 'void *' type, allowing a wider range of values/types to be stored in this field. Added 'ide_get_drivedata' and 'ide_set_drivedata' helpers to get and set the 'drive_data' field. Fixed all host drivers to maintain coherency with the change in the 'drive_data' field type. Signed-off-by: Joao Ramos <joao.ramos@inov.pt> [bart: fix qd65xx build, cast to 'unsigned long', minor Coding Style fixups] Acked-by: Sergei Shtylyov <sshtylyov@ru.montavista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:

committed by
Bartlomiej Zolnierkiewicz

parent
3779f818a4
commit
5bfb151f1f
@@ -138,6 +138,7 @@ static void opti621_set_pio_mode(ide_drive_t *drive, const u8 pio)
|
||||
ide_hwif_t *hwif = drive->hwif;
|
||||
ide_drive_t *pair = ide_get_pair_dev(drive);
|
||||
unsigned long flags;
|
||||
unsigned long mode = XFER_PIO_0 + pio, pair_mode;
|
||||
u8 tim, misc, addr_pio = pio, clk;
|
||||
|
||||
/* DRDY is default 2 (by OPTi Databook) */
|
||||
@@ -150,11 +151,12 @@ static void opti621_set_pio_mode(ide_drive_t *drive, const u8 pio)
|
||||
{ 0x48, 0x34, 0x21, 0x10, 0x10 } /* 25 MHz */
|
||||
};
|
||||
|
||||
drive->drive_data = XFER_PIO_0 + pio;
|
||||
ide_set_drivedata(drive, (void *)mode);
|
||||
|
||||
if (pair) {
|
||||
if (pair->drive_data && pair->drive_data < drive->drive_data)
|
||||
addr_pio = pair->drive_data - XFER_PIO_0;
|
||||
pair_mode = (unsigned long)ide_get_drivedata(pair);
|
||||
if (pair_mode && pair_mode < mode)
|
||||
addr_pio = pair_mode - XFER_PIO_0;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&opti621_lock, flags);
|
||||
|
Reference in New Issue
Block a user