apt.taskfile.cmd = cmd;
apt.taskfile.features = features;
apt.taskfile.sectors = sectors;
+ apt.taskfile.disk = 0xE0;
+
apt.buffer = buffer;
apt.size = size;
grub_memset (&apt, 0, sizeof (apt));
apt.taskfile.cmd = GRUB_ATA_CMD_CHECK_POWER_MODE;
+ apt.taskfile.disk = 0xE0;
if (ata->dev->readwrite (ata, &apt))
return -1;
apt.taskfile.features = features;
apt.taskfile.lba_mid = 0x4f;
apt.taskfile.lba_high = 0xc2;
+ apt.taskfile.disk = 0xE0;
if (ata->dev->readwrite (ata, &apt))
return -1;
for (i = 0; i < sizeof (parms->taskfile.raw); i++)
dev->command_table[0].cfis[register_map[i]] = parms->taskfile.raw[i];
- dev->command_table[0].cfis[7] |= (parms->cmdsize ? 0 : 0xE0);
grub_dprintf ("ahci", "cfis: %02x %02x %02x %02x %02x %02x %02x %02x\n",
dev->command_table[0].cfis[0], dev->command_table[0].cfis[1],
dev->command_table[0].cfis[2], dev->command_table[0].cfis[3],
return grub_errno;
grub_memset (&parms, 0, sizeof (parms));
- parms.taskfile.disk = 0;
+ parms.taskfile.disk = 0xE0;
parms.taskfile.cmd = GRUB_ATA_CMD_IDENTIFY_PACKET_DEVICE;
parms.size = GRUB_DISK_SECTOR_SIZE;
parms.buffer = info;
grub_memset (&parms, 0, sizeof (parms));
parms.buffer = info;
parms.size = GRUB_DISK_SECTOR_SIZE;
- parms.taskfile.disk = 0;
+ parms.taskfile.disk = 0xE0;
parms.taskfile.cmd = GRUB_ATA_CMD_IDENTIFY_DEVICE;
"sector %d cannot be addressed "
"using CHS addressing", sector);
- parms->taskfile.disk = head;
+ parms->taskfile.disk = 0xE0 | head;
parms->taskfile.sectnum = sect;
parms->taskfile.cyllsb = cylinder & 0xFF;
parms->taskfile.cylmsb = cylinder >> 8;
case GRUB_ATA_LBA:
if (size == 256)
size = 0;
- parms->taskfile.disk = ((sector >> 24) & 0x0F);
+ parms->taskfile.disk = 0xE0 | ((sector >> 24) & 0x0F);
parms->taskfile.sectors = size;
parms->taskfile.lba_low = sector & 0xFF;
if (size == 65536)
size = 0;
- parms->taskfile.disk = 0;
+ parms->taskfile.disk = 0xE0;
/* Set "Previous". */
parms->taskfile.sectors = size & 0xFF;
parms->taskfile.lba_low, parms->size);
/* Set registers. */
- grub_pata_regset (dev, GRUB_ATA_REG_DISK, (parms->cmdsize ? 0 : 0xE0)
- | dev->device << 4
- | (parms->taskfile.disk & 0xf));
+ grub_pata_regset (dev, GRUB_ATA_REG_DISK, (dev->device << 4)
+ | (parms->taskfile.disk & 0xef));
if (grub_pata_check_ready (dev))
return grub_errno;