ide: use drive->select.all for REQ_TYPE_ATA_TASK in execute_drive_cmd()
PATCH 4/15 ide: use drive->select.all for REQ_TYPE_ATA_TASK in execute_drive_cmd()
Use drive->select.all for REQ_TYPE_ATA_TASK requests in execute_drive_cmd() (the obsolete bits 7 and 5 of the Device register need to be set).
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
--- drivers/ide/ide-io.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-)
drivers/ide/ide-io.c +1 -5
@@ -899,7 +899,6 @@ static ide_startstop_t execute_drive_cmdreturn do_rw_taskfile (drive, args); }else if (rq->cmd_type ==REQ_TYPE_ATA_TASK ) {u8 *args = rq->buffer; -u8 sel;if (!args) goto done;
@@ -917,10 +916,7 @@ static ide_startstop_t execute_drive_cmd hwif->OUTB (args[3 ],IDE_SECTOR_REG ); hwif->OUTB (args[4 ],IDE_LCYL_REG ); hwif->OUTB (args[5 ],IDE_HCYL_REG ); - sel = (args[6 ] & ~0x10 ); -if (drive->select.b.unit) - sel |=0x10 ; - hwif->OUTB (sel,IDE_SELECT_REG ); + hwif->OUTB ((args[6 ] &0xEF )|drive->select.all,IDE_SELECT_REG );ide_cmd (drive, args[0 ], args[2 ], &drive_cmd_intr);return ide_started; }else if (rq->cmd_type ==REQ_TYPE_ATA_CMD ) {