diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c index f58e49e3515a..d3a45e94657d 100644 --- a/sys/dev/ata/ata-all.c +++ b/sys/dev/ata/ata-all.c @@ -276,6 +276,13 @@ ata_reinit(struct ata_channel *ch) ch->device[SLAVE].attach) ch->device[SLAVE].attach(&ch->device[SLAVE]); } + + /* restore transfermode on devices */ + if (ch->devices & (ATA_ATA_MASTER | ATA_ATAPI_MASTER)) + ch->device[MASTER].setmode(&ch->device[MASTER],ch->device[MASTER].mode); + if (ch->devices & (ATA_ATA_SLAVE | ATA_ATAPI_SLAVE)) + ch->device[SLAVE].setmode(&ch->device[SLAVE], ch->device[SLAVE].mode); + #ifdef DEV_ATAPICAM atapi_cam_reinit_bus(ch); #endif