]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Move 0xE0 to callers rather than to have it in drivers
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 25 Dec 2010 02:47:51 +0000 (03:47 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 25 Dec 2010 02:47:51 +0000 (03:47 +0100)
grub-core/commands/hdparm.c
grub-core/disk/ahci.c
grub-core/disk/ata.c
grub-core/disk/pata.c

index 0154ece577558ebfab0ca2813c3a08634b3ed0fc..800bfa06d372ff3e7e889a7ddd3c8d9f31b16d0f 100644 (file)
@@ -72,6 +72,8 @@ grub_hdparm_do_ata_cmd (grub_ata_t ata, grub_uint8_t cmd,
   apt.taskfile.cmd = cmd;
   apt.taskfile.features = features;
   apt.taskfile.sectors = sectors;
+  apt.taskfile.disk = 0xE0;
+
   apt.buffer = buffer;
   apt.size = size;
 
@@ -88,6 +90,7 @@ grub_hdparm_do_check_powermode_cmd (grub_ata_t ata)
   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;
@@ -105,6 +108,7 @@ grub_hdparm_do_smart_cmd (grub_ata_t ata, grub_uint8_t features)
   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;
index d9b95df378b5d2f220a847363939e99201f00ce7..3160523ce0204b7a2e51fdbb2d7f4337001ae98f 100644 (file)
@@ -408,7 +408,6 @@ grub_ahci_readwrite_real (struct grub_ahci_device *dev,
   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],
index b33abf90df87730344568d73b3e1a189400f5175..494325aa55b1c54d541d11e2ea08cba1e667c8c1 100644 (file)
@@ -70,7 +70,7 @@ grub_atapi_identify (struct grub_ata *dev)
     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;
@@ -108,7 +108,7 @@ grub_ata_identify (struct grub_ata *dev)
   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;
 
@@ -196,7 +196,7 @@ grub_ata_setaddress (struct grub_ata *dev,
                             "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;
@@ -207,7 +207,7 @@ grub_ata_setaddress (struct grub_ata *dev,
     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;
@@ -219,7 +219,7 @@ grub_ata_setaddress (struct grub_ata *dev,
       if (size == 65536)
        size = 0;
 
-      parms->taskfile.disk = 0;
+      parms->taskfile.disk = 0xE0;
 
       /* Set "Previous".  */
       parms->taskfile.sectors = size & 0xFF;
index 940a9a5f078612e56c9bec5db9baa0ddb71360bc..f9111bc5f78a1210fe563612a2115c969966bc45 100644 (file)
@@ -151,9 +151,8 @@ grub_pata_readwrite (struct grub_ata *disk,
                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;