Index: /trunk/src/VBox/Devices/Storage/DevATA.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/DevATA.cpp	(revision 65109)
+++ /trunk/src/VBox/Devices/Storage/DevATA.cpp	(revision 65110)
@@ -61,4 +61,5 @@
 #include <VBox/sup.h>
 #include <VBox/scsi.h>
+#include <VBox/scsiinline.h>
 #include <VBox/ata.h>
 
@@ -1097,73 +1098,4 @@
             pbDst[i ^ 1] = ' ';
     }
-}
-
-
-static void ataR3SCSIPadStr(uint8_t *pbDst, const char *pbSrc, uint32_t cbSize)
-{
-    for (uint32_t i = 0; i < cbSize; i++)
-    {
-        if (*pbSrc)
-            pbDst[i] = *pbSrc++;
-        else
-            pbDst[i] = ' ';
-    }
-}
-
-
-DECLINLINE(void) ataH2BE_U16(uint8_t *pbBuf, uint16_t val)
-{
-    pbBuf[0] = val >> 8;
-    pbBuf[1] = val;
-}
-
-
-DECLINLINE(void) ataH2BE_U24(uint8_t *pbBuf, uint32_t val)
-{
-    pbBuf[0] = val >> 16;
-    pbBuf[1] = val >> 8;
-    pbBuf[2] = val;
-}
-
-
-DECLINLINE(void) ataH2BE_U32(uint8_t *pbBuf, uint32_t val)
-{
-    pbBuf[0] = val >> 24;
-    pbBuf[1] = val >> 16;
-    pbBuf[2] = val >> 8;
-    pbBuf[3] = val;
-}
-
-
-DECLINLINE(uint16_t) ataBE2H_U16(const uint8_t *pbBuf)
-{
-    return (pbBuf[0] << 8) | pbBuf[1];
-}
-
-
-DECLINLINE(uint32_t) ataBE2H_U24(const uint8_t *pbBuf)
-{
-    return (pbBuf[0] << 16) | (pbBuf[1] << 8) | pbBuf[2];
-}
-
-
-DECLINLINE(uint32_t) ataBE2H_U32(const uint8_t *pbBuf)
-{
-    return (pbBuf[0] << 24) | (pbBuf[1] << 16) | (pbBuf[2] << 8) | pbBuf[3];
-}
-
-
-DECLINLINE(void) ataLBA2MSF(uint8_t *pbBuf, uint32_t iATAPILBA)
-{
-    iATAPILBA += 150;
-    pbBuf[0] = (iATAPILBA / 75) / 60;
-    pbBuf[1] = (iATAPILBA / 75) % 60;
-    pbBuf[2] = iATAPILBA % 75;
-}
-
-
-DECLINLINE(uint32_t) ataMSF2LBA(const uint8_t *pbBuf)
-{
-    return (pbBuf[0] * 60 + pbBuf[1]) * 75 + pbBuf[2];
 }
 
@@ -1845,5 +1777,5 @@
                 *pbBuf++ = 0x00;
                 /* MSF */
-                ataLBA2MSF(pbBuf, i);
+                scsiLBA2MSF(pbBuf, i);
                 pbBuf += 3;
                 *pbBuf++ = 0x01; /* mode 1 data */
@@ -1950,5 +1882,5 @@
         case SCSI_MODE_SELECT_10:
         {
-            size_t cbBlkDescLength = ataBE2H_U16(&s->CTX_SUFF(pbIOBuffer)[6]);
+            size_t cbBlkDescLength = scsiBE2H_U16(&s->CTX_SUFF(pbIOBuffer)[6]);
 
             SCSILogModePage(szBuf, sizeof(szBuf) - 1,
@@ -1991,19 +1923,19 @@
             case SCSI_WRITE_10:
             case SCSI_WRITE_AND_VERIFY_10:
-                iATAPILBA = ataBE2H_U32(s->aATAPICmd + 2);
-                cSectors = ataBE2H_U16(s->aATAPICmd + 7);
+                iATAPILBA = scsiBE2H_U32(s->aATAPICmd + 2);
+                cSectors = scsiBE2H_U16(s->aATAPICmd + 7);
                 break;
             case SCSI_READ_12:
             case SCSI_WRITE_12:
-                iATAPILBA = ataBE2H_U32(s->aATAPICmd + 2);
-                cSectors = ataBE2H_U32(s->aATAPICmd + 6);
+                iATAPILBA = scsiBE2H_U32(s->aATAPICmd + 2);
+                cSectors = scsiBE2H_U32(s->aATAPICmd + 6);
                 break;
             case SCSI_READ_CD:
-                iATAPILBA = ataBE2H_U32(s->aATAPICmd + 2);
-                cSectors = ataBE2H_U24(s->aATAPICmd + 6);
+                iATAPILBA = scsiBE2H_U32(s->aATAPICmd + 2);
+                cSectors = scsiBE2H_U24(s->aATAPICmd + 6);
                 break;
             case SCSI_READ_CD_MSF:
-                iATAPILBA = ataMSF2LBA(s->aATAPICmd + 3);
-                cSectors = ataMSF2LBA(s->aATAPICmd + 6) - iATAPILBA;
+                iATAPILBA = scsiMSF2LBA(s->aATAPICmd + 3);
+                cSectors = scsiMSF2LBA(s->aATAPICmd + 6) - iATAPILBA;
                 break;
             default:
@@ -2034,19 +1966,19 @@
                 case SCSI_WRITE_10:
                 case SCSI_WRITE_AND_VERIFY_10:
-                    ataH2BE_U32(aATAPICmd + 2, iATAPILBA);
-                    ataH2BE_U16(aATAPICmd + 7, cReqSectors);
+                    scsiH2BE_U32(aATAPICmd + 2, iATAPILBA);
+                    scsiH2BE_U16(aATAPICmd + 7, cReqSectors);
                     break;
                 case SCSI_READ_12:
                 case SCSI_WRITE_12:
-                    ataH2BE_U32(aATAPICmd + 2, iATAPILBA);
-                    ataH2BE_U32(aATAPICmd + 6, cReqSectors);
+                    scsiH2BE_U32(aATAPICmd + 2, iATAPILBA);
+                    scsiH2BE_U32(aATAPICmd + 6, cReqSectors);
                     break;
                 case SCSI_READ_CD:
-                    ataH2BE_U32(aATAPICmd + 2, iATAPILBA);
-                    ataH2BE_U24(aATAPICmd + 6, cReqSectors);
+                    scsiH2BE_U32(aATAPICmd + 2, iATAPILBA);
+                    scsiH2BE_U24(aATAPICmd + 6, cReqSectors);
                     break;
                 case SCSI_READ_CD_MSF:
-                    ataLBA2MSF(aATAPICmd + 3, iATAPILBA);
-                    ataLBA2MSF(aATAPICmd + 6, iATAPILBA + cReqSectors);
+                    scsiLBA2MSF(aATAPICmd + 3, iATAPILBA);
+                    scsiLBA2MSF(aATAPICmd + 6, iATAPILBA + cReqSectors);
                     break;
             }
@@ -2067,19 +1999,19 @@
                 case SCSI_WRITE_10:
                 case SCSI_WRITE_AND_VERIFY_10:
-                    ataH2BE_U32(s->aATAPICmd + 2, iATAPILBA);
-                    ataH2BE_U16(s->aATAPICmd + 7, cSectors - cSectorsMax);
+                    scsiH2BE_U32(s->aATAPICmd + 2, iATAPILBA);
+                    scsiH2BE_U16(s->aATAPICmd + 7, cSectors - cSectorsMax);
                     break;
                 case SCSI_READ_12:
                 case SCSI_WRITE_12:
-                    ataH2BE_U32(s->aATAPICmd + 2, iATAPILBA);
-                    ataH2BE_U32(s->aATAPICmd + 6, cSectors - cSectorsMax);
+                    scsiH2BE_U32(s->aATAPICmd + 2, iATAPILBA);
+                    scsiH2BE_U32(s->aATAPICmd + 6, cSectors - cSectorsMax);
                     break;
                 case SCSI_READ_CD:
-                    ataH2BE_U32(s->aATAPICmd + 2, iATAPILBA);
-                    ataH2BE_U24(s->aATAPICmd + 6, cSectors - cSectorsMax);
+                    scsiH2BE_U32(s->aATAPICmd + 2, iATAPILBA);
+                    scsiH2BE_U24(s->aATAPICmd + 6, cSectors - cSectorsMax);
                     break;
                 case SCSI_READ_CD_MSF:
-                    ataLBA2MSF(s->aATAPICmd + 3, iATAPILBA);
-                    ataLBA2MSF(s->aATAPICmd + 6, iATAPILBA + cSectors - cSectorsMax);
+                    scsiLBA2MSF(s->aATAPICmd + 3, iATAPILBA);
+                    scsiLBA2MSF(s->aATAPICmd + 6, iATAPILBA + cSectors - cSectorsMax);
                     break;
                 default:
@@ -2163,7 +2095,7 @@
                  *             invisible as possible to the guest. */
                 Log3(("ATAPI PT inquiry data before (%d): %.*Rhxs\n", cbTransfer, cbTransfer, s->CTX_SUFF(pbIOBuffer)));
-                ataR3SCSIPadStr(s->CTX_SUFF(pbIOBuffer) + 8, "VBOX", 8);
-                ataR3SCSIPadStr(s->CTX_SUFF(pbIOBuffer) + 16, "CD-ROM", 16);
-                ataR3SCSIPadStr(s->CTX_SUFF(pbIOBuffer) + 32, "1.0", 4);
+                scsiPadStr(s->CTX_SUFF(pbIOBuffer) + 8, "VBOX", 8);
+                scsiPadStr(s->CTX_SUFF(pbIOBuffer) + 16, "CD-ROM", 16);
+                scsiPadStr(s->CTX_SUFF(pbIOBuffer) + 32, "1.0", 4);
             }
 
@@ -2213,5 +2145,5 @@
     int format = s->aATAPICmd[7];
 
-    uint16_t max_len = ataBE2H_U16(&s->aATAPICmd[8]);
+    uint16_t max_len = scsiBE2H_U16(&s->aATAPICmd[8]);
 
     memset(buf, 0, max_len);
@@ -2270,10 +2202,10 @@
 
                         /* FIXME: 0x30000 per spec? */
-                        ataH2BE_U32(buf + 8, 0); /* start sector */
-                        ataH2BE_U32(buf + 12, total_sectors - 1); /* end sector */
-                        ataH2BE_U32(buf + 16, total_sectors - 1); /* l0 end sector */
+                        scsiH2BE_U32(buf + 8, 0); /* start sector */
+                        scsiH2BE_U32(buf + 12, total_sectors - 1); /* end sector */
+                        scsiH2BE_U32(buf + 16, total_sectors - 1); /* l0 end sector */
 
                         /* Size of buffer, not including 2 byte size field */
-                        ataH2BE_U32(&buf[0], 2048 + 2);
+                        scsiH2BE_U32(&buf[0], 2048 + 2);
 
                         /* 2k data + 4 byte header */
@@ -2286,5 +2218,5 @@
 
                         /* Size of buffer, not including 2 byte size field */
-                        ataH2BE_U16(buf, 4 + 2);
+                        scsiH2BE_U16(buf, 4 + 2);
 
                         /* 4 byte header + 4 byte data */
@@ -2298,5 +2230,5 @@
                     case 0x04: /* DVD disc manufacturing information */
                         /* Size of buffer, not including 2 byte size field */
-                        ataH2BE_U16(buf, 2048 + 2);
+                        scsiH2BE_U16(buf, 2048 + 2);
 
                         /* 2k data + 4 byte header */
@@ -2311,20 +2243,20 @@
                         buf[4] = 0x00; /* Physical format */
                         buf[5] = 0x40; /* Not writable, is readable */
-                        ataH2BE_U16((buf + 6), 2048 + 4);
+                        scsiH2BE_U16((buf + 6), 2048 + 4);
 
                         buf[8] = 0x01; /* Copyright info */
                         buf[9] = 0x40; /* Not writable, is readable */
-                        ataH2BE_U16((buf + 10), 4 + 4);
+                        scsiH2BE_U16((buf + 10), 4 + 4);
 
                         buf[12] = 0x03; /* BCA info */
                         buf[13] = 0x40; /* Not writable, is readable */
-                        ataH2BE_U16((buf + 14), 188 + 4);
+                        scsiH2BE_U16((buf + 14), 188 + 4);
 
                         buf[16] = 0x04; /* Manufacturing info */
                         buf[17] = 0x40; /* Not writable, is readable */
-                        ataH2BE_U16((buf + 18), 2048 + 4);
+                        scsiH2BE_U16((buf + 18), 2048 + 4);
 
                         /* Size of buffer, not including 2 byte size field */
-                        ataH2BE_U16(buf, 16 + 2);
+                        scsiH2BE_U16(buf, 16 + 2);
 
                         /* data written + 4 byte header */
@@ -2380,6 +2312,6 @@
     Assert(s->uTxDir == PDMMEDIATXDIR_FROM_DEVICE);
     Assert(s->cbElementaryTransfer <= 8);
-    ataH2BE_U32(pbBuf, s->cTotalSectors - 1);
-    ataH2BE_U32(pbBuf + 4, 2048);
+    scsiH2BE_U32(pbBuf, s->cTotalSectors - 1);
+    scsiH2BE_U32(pbBuf + 4, 2048);
     s->iSourceSink = ATAFN_SS_NULL;
     atapiR3CmdOK(s);
@@ -2395,5 +2327,5 @@
     Assert(s->cbElementaryTransfer <= 34);
     memset(pbBuf, '\0', 34);
-    ataH2BE_U16(pbBuf, 32);
+    scsiH2BE_U16(pbBuf, 32);
     pbBuf[2] = (0 << 4) | (3 << 2) | (2 << 0); /* not erasable, complete session, complete disc */
     pbBuf[3] = 1; /* number of first track */
@@ -2406,6 +2338,6 @@
     pbBuf[10] = 0; /* number of sessions (MSB) */
     pbBuf[11] = 0; /* number of sessions (MSB) */
-    ataH2BE_U32(pbBuf + 16, 0x00ffffff); /* last session lead-in start time is not available */
-    ataH2BE_U32(pbBuf + 20, 0x00ffffff); /* last possible start time for lead-out is not available */
+    scsiH2BE_U32(pbBuf + 16, 0x00ffffff); /* last session lead-in start time is not available */
+    scsiH2BE_U32(pbBuf + 20, 0x00ffffff); /* last possible start time for lead-out is not available */
     s->iSourceSink = ATAFN_SS_NULL;
     atapiR3CmdOK(s);
@@ -2421,5 +2353,5 @@
     Assert(s->cbElementaryTransfer <= 36);
     /* Accept address/number type of 1 only, and only track 1 exists. */
-    if ((s->aATAPICmd[1] & 0x03) != 1 || ataBE2H_U32(&s->aATAPICmd[2]) != 1)
+    if ((s->aATAPICmd[1] & 0x03) != 1 || scsiBE2H_U32(&s->aATAPICmd[2]) != 1)
     {
         atapiR3CmdErrorSimple(s, SCSI_SENSE_ILLEGAL_REQUEST, SCSI_ASC_INV_FIELD_IN_CMD_PACKET);
@@ -2427,5 +2359,5 @@
     }
     memset(pbBuf, '\0', 36);
-    ataH2BE_U16(pbBuf, 34);
+    scsiH2BE_U16(pbBuf, 34);
     pbBuf[2] = 1; /* track number (LSB) */
     pbBuf[3] = 1; /* session number (LSB) */
@@ -2433,6 +2365,6 @@
     pbBuf[6] = (0 << 7) | (0 << 6) | (0 << 5) | (0 << 6) | (1 << 0); /* not reserved track, not blank, not packet writing, not fixed packet, data mode 1 */
     pbBuf[7] = (0 << 1) | (0 << 0); /* last recorded address not valid, next recordable address not valid */
-    ataH2BE_U32(pbBuf + 8, 0); /* track start address is 0 */
-    ataH2BE_U32(pbBuf + 24, s->cTotalSectors); /* track size */
+    scsiH2BE_U32(pbBuf + 8, 0); /* track start address is 0 */
+    scsiH2BE_U32(pbBuf + 24, s->cTotalSectors); /* track size */
     pbBuf[32] = 0; /* track number (MSB) */
     pbBuf[33] = 0; /* session number (MSB) */
@@ -2448,12 +2380,12 @@
         return 0;
 
-    ataH2BE_U16(pbBuf, 0x0); /* feature 0: list of profiles supported */
+    scsiH2BE_U16(pbBuf, 0x0); /* feature 0: list of profiles supported */
     pbBuf[2] = (0 << 2) | (1 << 1) | (1 << 0); /* version 0, persistent, current */
     pbBuf[3] = 8; /* additional bytes for profiles */
     /* The MMC-3 spec says that DVD-ROM read capability should be reported
      * before CD-ROM read capability. */
-    ataH2BE_U16(pbBuf + 4, 0x10); /* profile: read-only DVD */
+    scsiH2BE_U16(pbBuf + 4, 0x10); /* profile: read-only DVD */
     pbBuf[6] = (0 << 0); /* NOT current profile */
-    ataH2BE_U16(pbBuf + 8, 0x08); /* profile: read only CD */
+    scsiH2BE_U16(pbBuf + 8, 0x08); /* profile: read only CD */
     pbBuf[10] = (1 << 0); /* current profile */
 
@@ -2467,8 +2399,8 @@
         return 0;
 
-    ataH2BE_U16(pbBuf, 0x1); /* feature 0001h: Core Feature */
+    scsiH2BE_U16(pbBuf, 0x1); /* feature 0001h: Core Feature */
     pbBuf[2] = (0x2 << 2) | RT_BIT(1) | RT_BIT(0); /* Version | Persistent | Current */
     pbBuf[3] = 8; /* Additional length */
-    ataH2BE_U16(pbBuf + 4, 0x00000002); /* Physical interface ATAPI. */
+    scsiH2BE_U16(pbBuf + 4, 0x00000002); /* Physical interface ATAPI. */
     pbBuf[8] = RT_BIT(0); /* DBE */
     /* Rest is reserved. */
@@ -2483,5 +2415,5 @@
         return 0;
 
-    ataH2BE_U16(pbBuf, 0x2); /* feature 0002h: Morphing Feature */
+    scsiH2BE_U16(pbBuf, 0x2); /* feature 0002h: Morphing Feature */
     pbBuf[2] = (0x1 << 2) | RT_BIT(1) | RT_BIT(0); /* Version | Persistent | Current */
     pbBuf[3] = 4; /* Additional length */
@@ -2498,5 +2430,5 @@
         return 0;
 
-    ataH2BE_U16(pbBuf, 0x3); /* feature 0003h: Removable Medium Feature */
+    scsiH2BE_U16(pbBuf, 0x3); /* feature 0003h: Removable Medium Feature */
     pbBuf[2] = (0x2 << 2) | RT_BIT(1) | RT_BIT(0); /* Version | Persistent | Current */
     pbBuf[3] = 4; /* Additional length */
@@ -2514,9 +2446,9 @@
         return 0;
 
-    ataH2BE_U16(pbBuf, 0x10); /* feature 0010h: Random Readable Feature */
+    scsiH2BE_U16(pbBuf, 0x10); /* feature 0010h: Random Readable Feature */
     pbBuf[2] = (0x0 << 2) | RT_BIT(1) | RT_BIT(0); /* Version | Persistent | Current */
     pbBuf[3] = 8; /* Additional length */
-    ataH2BE_U32(pbBuf + 4, 2048); /* Logical block size. */
-    ataH2BE_U16(pbBuf + 8, 0x10); /* Blocking (0x10 for DVD, CD is not defined). */
+    scsiH2BE_U32(pbBuf + 4, 2048); /* Logical block size. */
+    scsiH2BE_U16(pbBuf + 8, 0x10); /* Blocking (0x10 for DVD, CD is not defined). */
     pbBuf[10] = 0; /* PP not present */
     /* Rest is reserved. */
@@ -2531,5 +2463,5 @@
         return 0;
 
-    ataH2BE_U16(pbBuf, 0x1e); /* feature 001Eh: CD Read Feature */
+    scsiH2BE_U16(pbBuf, 0x1e); /* feature 001Eh: CD Read Feature */
     pbBuf[2] = (0x2 << 2) | RT_BIT(1) | RT_BIT(0); /* Version | Persistent | Current */
     pbBuf[3] = 0; /* Additional length */
@@ -2546,5 +2478,5 @@
         return 0;
 
-    ataH2BE_U16(pbBuf, 0x100); /* feature 0100h: Power Management Feature */
+    scsiH2BE_U16(pbBuf, 0x100); /* feature 0100h: Power Management Feature */
     pbBuf[2] = (0x0 << 2) | RT_BIT(1) | RT_BIT(0); /* Version | Persistent | Current */
     pbBuf[3] = 0; /* Additional length */
@@ -2559,5 +2491,5 @@
         return 0;
 
-    ataH2BE_U16(pbBuf, 0x105); /* feature 0105h: Timeout Feature */
+    scsiH2BE_U16(pbBuf, 0x105); /* feature 0105h: Timeout Feature */
     pbBuf[2] = (0x0 << 2) | RT_BIT(1) | RT_BIT(0); /* Version | Persistent | Current */
     pbBuf[3] = 4; /* Additional length */
@@ -2572,5 +2504,5 @@
     uint32_t cbBuf = s->cbIOBuffer;
     uint32_t cbCopied = 0;
-    uint16_t u16Sfn = ataBE2H_U16(&s->aATAPICmd[2]);
+    uint16_t u16Sfn = scsiBE2H_U16(&s->aATAPICmd[2]);
 
     Assert(s->uTxDir == PDMMEDIATXDIR_FROM_DEVICE);
@@ -2586,7 +2518,7 @@
      * way to differentiate them right now is based on the image size). */
     if (s->cTotalSectors)
-        ataH2BE_U16(pbBuf + 6, 0x08); /* current profile: read-only CD */
+        scsiH2BE_U16(pbBuf + 6, 0x08); /* current profile: read-only CD */
     else
-        ataH2BE_U16(pbBuf + 6, 0x00); /* current profile: none -> no media */
+        scsiH2BE_U16(pbBuf + 6, 0x00); /* current profile: none -> no media */
     cbBuf    -= 8;
     pbBuf    += 8;
@@ -2625,5 +2557,5 @@
 
     /* Set data length now - the field is not included in the final length. */
-    ataH2BE_U32(s->CTX_SUFF(pbIOBuffer), s->cbIOBuffer - cbBuf - 4);
+    scsiH2BE_U32(s->CTX_SUFF(pbIOBuffer), s->cbIOBuffer - cbBuf - 4);
 
     /* Other profiles we might want to add in the future: 0x40 (BD-ROM) and 0x50 (HDDVD-ROM) */
@@ -2657,5 +2589,5 @@
             case ATA_EVENT_STATUS_MEDIA_NEW:
                 /* mount */
-                ataH2BE_U16(pbBuf + 0, 6);
+                scsiH2BE_U16(pbBuf + 0, 6);
                 pbBuf[2] = 0x04; /* media */
                 pbBuf[3] = 0x5e; /* supported = busy|media|external|power|operational */
@@ -2669,5 +2601,5 @@
             case ATA_EVENT_STATUS_MEDIA_REMOVED:
                 /* umount */
-                ataH2BE_U16(pbBuf + 0, 6);
+                scsiH2BE_U16(pbBuf + 0, 6);
                 pbBuf[2] = 0x04; /* media */
                 pbBuf[3] = 0x5e; /* supported = busy|media|external|power|operational */
@@ -2681,5 +2613,5 @@
 
             case ATA_EVENT_STATUS_MEDIA_EJECT_REQUESTED: /* currently unused */
-                ataH2BE_U16(pbBuf + 0, 6);
+                scsiH2BE_U16(pbBuf + 0, 6);
                 pbBuf[2] = 0x04; /* media */
                 pbBuf[3] = 0x5e; /* supported = busy|media|external|power|operational */
@@ -2692,5 +2624,5 @@
             case ATA_EVENT_STATUS_UNCHANGED:
             default:
-                ataH2BE_U16(pbBuf + 0, 6);
+                scsiH2BE_U16(pbBuf + 0, 6);
                 pbBuf[2] = 0x01; /* operational change request / notification */
                 pbBuf[3] = 0x5e; /* supported = busy|media|external|power|operational */
@@ -2728,7 +2660,7 @@
     pbBuf[6] = 0; /* reserved */
     pbBuf[7] = 0; /* reserved */
-    ataR3SCSIPadStr(pbBuf + 8, s->szInquiryVendorId, 8);
-    ataR3SCSIPadStr(pbBuf + 16, s->szInquiryProductId, 16);
-    ataR3SCSIPadStr(pbBuf + 32, s->szInquiryRevision, 4);
+    scsiPadStr(pbBuf + 8, s->szInquiryVendorId, 8);
+    scsiPadStr(pbBuf + 16, s->szInquiryProductId, 16);
+    scsiPadStr(pbBuf + 32, s->szInquiryRevision, 4);
     s->iSourceSink = ATAFN_SS_NULL;
     atapiR3CmdOK(s);
@@ -2743,5 +2675,5 @@
     Assert(s->uTxDir == PDMMEDIATXDIR_FROM_DEVICE);
     Assert(s->cbElementaryTransfer <= 16);
-    ataH2BE_U16(&pbBuf[0], 16 + 6);
+    scsiH2BE_U16(&pbBuf[0], 16 + 6);
     pbBuf[2] = (uint8_t)s->MediaTrackType;
     pbBuf[3] = 0;
@@ -2771,5 +2703,5 @@
     Assert(s->uTxDir == PDMMEDIATXDIR_FROM_DEVICE);
     Assert(s->cbElementaryTransfer <= 40);
-    ataH2BE_U16(&pbBuf[0], 38);
+    scsiH2BE_U16(&pbBuf[0], 38);
     pbBuf[2] = (uint8_t)s->MediaTrackType;
     pbBuf[3] = 0;
@@ -2792,19 +2724,19 @@
         pbBuf[14] |= 1 << 1; /* report lock state */
     pbBuf[15] = 0; /* no subchannel reads supported, no separate audio volume control, no changer etc. */
-    ataH2BE_U16(&pbBuf[16], 5632); /* (obsolete) claim 32x speed support */
-    ataH2BE_U16(&pbBuf[18], 2); /* number of audio volume levels */
-    ataH2BE_U16(&pbBuf[20], s->cbIOBuffer / _1K); /* buffer size supported in Kbyte */
-    ataH2BE_U16(&pbBuf[22], 5632); /* (obsolete) current read speed 32x */
+    scsiH2BE_U16(&pbBuf[16], 5632); /* (obsolete) claim 32x speed support */
+    scsiH2BE_U16(&pbBuf[18], 2); /* number of audio volume levels */
+    scsiH2BE_U16(&pbBuf[20], s->cbIOBuffer / _1K); /* buffer size supported in Kbyte */
+    scsiH2BE_U16(&pbBuf[22], 5632); /* (obsolete) current read speed 32x */
     pbBuf[24] = 0; /* reserved */
     pbBuf[25] = 0; /* reserved for digital audio (see idx 15) */
-    ataH2BE_U16(&pbBuf[26], 0); /* (obsolete) maximum write speed */
-    ataH2BE_U16(&pbBuf[28], 0); /* (obsolete) current write speed */
-    ataH2BE_U16(&pbBuf[30], 0); /* copy management revision supported 0=no CSS */
+    scsiH2BE_U16(&pbBuf[26], 0); /* (obsolete) maximum write speed */
+    scsiH2BE_U16(&pbBuf[28], 0); /* (obsolete) current write speed */
+    scsiH2BE_U16(&pbBuf[30], 0); /* copy management revision supported 0=no CSS */
     pbBuf[32] = 0; /* reserved */
     pbBuf[33] = 0; /* reserved */
     pbBuf[34] = 0; /* reserved */
     pbBuf[35] = 1; /* rotation control CAV */
-    ataH2BE_U16(&pbBuf[36], 0); /* current write speed */
-    ataH2BE_U16(&pbBuf[38], 0); /* number of write speed performance descriptors */
+    scsiH2BE_U16(&pbBuf[36], 0); /* current write speed */
+    scsiH2BE_U16(&pbBuf[38], 0); /* number of write speed performance descriptors */
     s->iSourceSink = ATAFN_SS_NULL;
     atapiR3CmdOK(s);
@@ -2832,5 +2764,5 @@
     Assert(s->uTxDir == PDMMEDIATXDIR_FROM_DEVICE);
     Assert(s->cbElementaryTransfer <= 8);
-    ataH2BE_U16(pbBuf, 0);
+    scsiH2BE_U16(pbBuf, 0);
     /* no current LBA */
     pbBuf[2] = 0;
@@ -2838,5 +2770,5 @@
     pbBuf[4] = 0;
     pbBuf[5] = 1;
-    ataH2BE_U16(pbBuf + 6, 0);
+    scsiH2BE_U16(pbBuf + 6, 0);
     s->iSourceSink = ATAFN_SS_NULL;
     atapiR3CmdOK(s);
@@ -2871,5 +2803,5 @@
         {
             *q++ = 0; /* reserved */
-            ataLBA2MSF(q, 0);
+            scsiLBA2MSF(q, 0);
             q += 3;
         }
@@ -2877,5 +2809,5 @@
         {
             /* sector 0 */
-            ataH2BE_U32(q, 0);
+            scsiH2BE_U32(q, 0);
             q += 4;
         }
@@ -2889,14 +2821,14 @@
     {
         *q++ = 0; /* reserved */
-        ataLBA2MSF(q, s->cTotalSectors);
+        scsiLBA2MSF(q, s->cTotalSectors);
         q += 3;
     }
     else
     {
-        ataH2BE_U32(q, s->cTotalSectors);
+        scsiH2BE_U32(q, s->cTotalSectors);
         q += 4;
     }
     cbSize = q - pbBuf;
-    ataH2BE_U16(pbBuf, cbSize - 2);
+    scsiH2BE_U16(pbBuf, cbSize - 2);
     if (cbSize < s->cbTotalTransfer)
         s->cbTotalTransfer = cbSize;
@@ -2926,10 +2858,10 @@
     {
         pbBuf[8] = 0; /* reserved */
-        ataLBA2MSF(&pbBuf[9], 0);
+        scsiLBA2MSF(&pbBuf[9], 0);
     }
     else
     {
         /* sector 0 */
-        ataH2BE_U32(pbBuf + 8, 0);
+        scsiH2BE_U32(pbBuf + 8, 0);
     }
     s->iSourceSink = ATAFN_SS_NULL;
@@ -2987,10 +2919,10 @@
     {
         *q++ = 0; /* reserved */
-        ataLBA2MSF(q, s->cTotalSectors);
+        scsiLBA2MSF(q, s->cTotalSectors);
         q += 3;
     }
     else
     {
-        ataH2BE_U32(q, s->cTotalSectors);
+        scsiH2BE_U32(q, s->cTotalSectors);
         q += 4;
     }
@@ -3006,5 +2938,5 @@
     {
         *q++ = 0; /* reserved */
-        ataLBA2MSF(q, 0);
+        scsiLBA2MSF(q, 0);
         q += 3;
     }
@@ -3012,10 +2944,10 @@
     {
         /* sector 0 */
-        ataH2BE_U32(q, 0);
+        scsiH2BE_U32(q, 0);
         q += 4;
     }
 
     cbSize = q - pbBuf;
-    ataH2BE_U16(pbBuf, cbSize - 2);
+    scsiH2BE_U16(pbBuf, cbSize - 2);
     if (cbSize < s->cbTotalTransfer)
         s->cbTotalTransfer = cbSize;
@@ -3050,5 +2982,5 @@
             break;
         case SCSI_GET_EVENT_STATUS_NOTIFICATION:
-            cbMax = ataBE2H_U16(pbPacket + 7);
+            cbMax = scsiBE2H_U16(pbPacket + 7);
             ataR3StartTransfer(s, RT_MIN(cbMax, 8), PDMMEDIATXDIR_FROM_DEVICE, ATAFN_BT_ATAPI_CMD, ATAFN_SS_ATAPI_GET_EVENT_STATUS_NOTIFICATION, true);
             break;
@@ -3056,5 +2988,5 @@
         {
             uint8_t uPageControl, uPageCode;
-            cbMax = ataBE2H_U16(pbPacket + 7);
+            cbMax = scsiBE2H_U16(pbPacket + 7);
             uPageControl = pbPacket[2] >> 6;
             uPageCode = pbPacket[2] & 0x3f;
@@ -3118,8 +3050,8 @@
             }
             if (pbPacket[0] == SCSI_READ_10)
-                cSectors = ataBE2H_U16(pbPacket + 7);
+                cSectors = scsiBE2H_U16(pbPacket + 7);
             else
-                cSectors = ataBE2H_U32(pbPacket + 6);
-            iATAPILBA = ataBE2H_U32(pbPacket + 2);
+                cSectors = scsiBE2H_U32(pbPacket + 6);
+            iATAPILBA = scsiBE2H_U32(pbPacket + 2);
             if (cSectors == 0)
             {
@@ -3161,5 +3093,5 @@
             }
             cSectors = (pbPacket[6] << 16) | (pbPacket[7] << 8) | pbPacket[8];
-            iATAPILBA = ataBE2H_U32(pbPacket + 2);
+            iATAPILBA = scsiBE2H_U32(pbPacket + 2);
             if (cSectors == 0)
             {
@@ -3217,5 +3149,5 @@
                 break;
             }
-            iATAPILBA = ataBE2H_U32(pbPacket + 2);
+            iATAPILBA = scsiBE2H_U32(pbPacket + 2);
             if (iATAPILBA > s->cTotalSectors)
             {
@@ -3283,5 +3215,5 @@
         case SCSI_MECHANISM_STATUS:
         {
-            cbMax = ataBE2H_U16(pbPacket + 8);
+            cbMax = scsiBE2H_U16(pbPacket + 8);
             ataR3StartTransfer(s, RT_MIN(cbMax, 8), PDMMEDIATXDIR_FROM_DEVICE, ATAFN_BT_ATAPI_CMD, ATAFN_SS_ATAPI_MECHANISM_STATUS, true);
             break;
@@ -3302,5 +3234,5 @@
                 break;
             }
-            cbMax = ataBE2H_U16(pbPacket + 7);
+            cbMax = scsiBE2H_U16(pbPacket + 7);
             /* SCSI MMC-3 spec says format is at offset 2 (lower 4 bits),
              * but Linux kernel uses offset 9 (topmost 2 bits). Hope that
@@ -3351,5 +3283,5 @@
                 break;
             }
-            cbMax = ataBE2H_U16(pbPacket + 7);
+            cbMax = scsiBE2H_U16(pbPacket + 7);
             ataR3StartTransfer(s, RT_MIN(cbMax, 34), PDMMEDIATXDIR_FROM_DEVICE, ATAFN_BT_ATAPI_CMD, ATAFN_SS_ATAPI_READ_DISC_INFORMATION, true);
             break;
@@ -3366,19 +3298,19 @@
                 break;
             }
-            cbMax = ataBE2H_U16(pbPacket + 7);
+            cbMax = scsiBE2H_U16(pbPacket + 7);
             ataR3StartTransfer(s, RT_MIN(cbMax, 36), PDMMEDIATXDIR_FROM_DEVICE, ATAFN_BT_ATAPI_CMD, ATAFN_SS_ATAPI_READ_TRACK_INFORMATION, true);
             break;
         case SCSI_GET_CONFIGURATION:
             /* No media change stuff here, it can confuse Linux guests. */
-            cbMax = ataBE2H_U16(pbPacket + 7);
+            cbMax = scsiBE2H_U16(pbPacket + 7);
             ataR3StartTransfer(s, RT_MIN(cbMax, 80), PDMMEDIATXDIR_FROM_DEVICE, ATAFN_BT_ATAPI_CMD, ATAFN_SS_ATAPI_GET_CONFIGURATION, true);
             break;
         case SCSI_INQUIRY:
-            cbMax = ataBE2H_U16(pbPacket + 3);
+            cbMax = scsiBE2H_U16(pbPacket + 3);
             ataR3StartTransfer(s, RT_MIN(cbMax, 36), PDMMEDIATXDIR_FROM_DEVICE, ATAFN_BT_ATAPI_CMD, ATAFN_SS_ATAPI_INQUIRY, true);
             break;
         case SCSI_READ_DVD_STRUCTURE:
         {
-            cbMax = ataBE2H_U16(pbPacket + 8);
+            cbMax = scsiBE2H_U16(pbPacket + 8);
             ataR3StartTransfer(s, RT_MIN(cbMax, 4), PDMMEDIATXDIR_FROM_DEVICE, ATAFN_BT_ATAPI_CMD, ATAFN_SS_ATAPI_READ_DVD_STRUCTURE, true);
             break;
@@ -3411,6 +3343,6 @@
             goto sendcmd;
         case SCSI_ERASE_10:
-            iATAPILBA = ataBE2H_U32(pbPacket + 2);
-            cbTransfer = ataBE2H_U16(pbPacket + 7);
+            iATAPILBA = scsiBE2H_U32(pbPacket + 2);
+            cbTransfer = scsiBE2H_U16(pbPacket + 7);
             Log2(("ATAPI PT: lba %d\n", iATAPILBA));
             uTxDir = PDMMEDIATXDIR_TO_DEVICE;
@@ -3421,9 +3353,9 @@
             goto sendcmd;
         case SCSI_GET_CONFIGURATION:
-            cbTransfer = ataBE2H_U16(pbPacket + 7);
+            cbTransfer = scsiBE2H_U16(pbPacket + 7);
             uTxDir = PDMMEDIATXDIR_FROM_DEVICE;
             goto sendcmd;
         case SCSI_GET_EVENT_STATUS_NOTIFICATION:
-            cbTransfer = ataBE2H_U16(pbPacket + 7);
+            cbTransfer = scsiBE2H_U16(pbPacket + 7);
             if (ASMAtomicReadU32(&s->MediaEventStatus) != ATA_EVENT_STATUS_UNCHANGED)
             {
@@ -3438,5 +3370,5 @@
             goto sendcmd;
         case SCSI_INQUIRY:
-            cbTransfer = ataBE2H_U16(pbPacket + 3);
+            cbTransfer = scsiBE2H_U16(pbPacket + 3);
             uTxDir = PDMMEDIATXDIR_FROM_DEVICE;
             goto sendcmd;
@@ -3444,13 +3376,13 @@
             goto sendcmd;
         case SCSI_MECHANISM_STATUS:
-            cbTransfer = ataBE2H_U16(pbPacket + 8);
+            cbTransfer = scsiBE2H_U16(pbPacket + 8);
             uTxDir = PDMMEDIATXDIR_FROM_DEVICE;
             goto sendcmd;
         case SCSI_MODE_SELECT_10:
-            cbTransfer = ataBE2H_U16(pbPacket + 7);
+            cbTransfer = scsiBE2H_U16(pbPacket + 7);
             uTxDir = PDMMEDIATXDIR_TO_DEVICE;
             goto sendcmd;
         case SCSI_MODE_SENSE_10:
-            cbTransfer = ataBE2H_U16(pbPacket + 7);
+            cbTransfer = scsiBE2H_U16(pbPacket + 7);
             uTxDir = PDMMEDIATXDIR_FROM_DEVICE;
             goto sendcmd;
@@ -3467,6 +3399,6 @@
             goto sendcmd;
         case SCSI_READ_10:
-            iATAPILBA = ataBE2H_U32(pbPacket + 2);
-            cSectors = ataBE2H_U16(pbPacket + 7);
+            iATAPILBA = scsiBE2H_U32(pbPacket + 2);
+            cSectors = scsiBE2H_U16(pbPacket + 7);
             Log2(("ATAPI PT: lba %d sectors %d\n", iATAPILBA, cSectors));
             s->cbATAPISector = 2048;
@@ -3475,6 +3407,6 @@
             goto sendcmd;
         case SCSI_READ_12:
-            iATAPILBA = ataBE2H_U32(pbPacket + 2);
-            cSectors = ataBE2H_U32(pbPacket + 6);
+            iATAPILBA = scsiBE2H_U32(pbPacket + 2);
+            cSectors = scsiBE2H_U32(pbPacket + 6);
             Log2(("ATAPI PT: lba %d sectors %d\n", iATAPILBA, cSectors));
             s->cbATAPISector = 2048;
@@ -3483,9 +3415,9 @@
             goto sendcmd;
         case SCSI_READ_BUFFER:
-            cbTransfer = ataBE2H_U24(pbPacket + 6);
+            cbTransfer = scsiBE2H_U24(pbPacket + 6);
             uTxDir = PDMMEDIATXDIR_FROM_DEVICE;
             goto sendcmd;
         case SCSI_READ_BUFFER_CAPACITY:
-            cbTransfer = ataBE2H_U16(pbPacket + 7);
+            cbTransfer = scsiBE2H_U16(pbPacket + 7);
             uTxDir = PDMMEDIATXDIR_FROM_DEVICE;
             goto sendcmd;
@@ -3505,7 +3437,7 @@
 
                     if (pbPacket[0] == SCSI_READ_CD)
-                        iLbaStart = ataBE2H_U32(&pbPacket[2]);
+                        iLbaStart = scsiBE2H_U32(&pbPacket[2]);
                     else
-                        iLbaStart = ataMSF2LBA(&pbPacket[3]);
+                        iLbaStart = scsiMSF2LBA(&pbPacket[3]);
 
                     if (s->pTrackList)
@@ -3536,8 +3468,8 @@
 
             if (pbPacket[0] == SCSI_READ_CD)
-                cbTransfer = ataBE2H_U24(pbPacket + 6) * s->cbATAPISector;
+                cbTransfer = scsiBE2H_U24(pbPacket + 6) * s->cbATAPISector;
             else /* SCSI_READ_MSF */
             {
-                cSectors = ataMSF2LBA(pbPacket + 6) - ataMSF2LBA(pbPacket + 3);
+                cSectors = scsiMSF2LBA(pbPacket + 6) - scsiMSF2LBA(pbPacket + 3);
                 if (cSectors > 32)
                     cSectors = 32; /* Limit transfer size to 64~74K. Safety first. In any case this can only harm software doing CDDA extraction. */
@@ -3548,25 +3480,25 @@
         }
         case SCSI_READ_DISC_INFORMATION:
-            cbTransfer = ataBE2H_U16(pbPacket + 7);
+            cbTransfer = scsiBE2H_U16(pbPacket + 7);
             uTxDir = PDMMEDIATXDIR_FROM_DEVICE;
             goto sendcmd;
         case SCSI_READ_DVD_STRUCTURE:
-            cbTransfer = ataBE2H_U16(pbPacket + 8);
+            cbTransfer = scsiBE2H_U16(pbPacket + 8);
             uTxDir = PDMMEDIATXDIR_FROM_DEVICE;
             goto sendcmd;
         case SCSI_READ_FORMAT_CAPACITIES:
-            cbTransfer = ataBE2H_U16(pbPacket + 7);
+            cbTransfer = scsiBE2H_U16(pbPacket + 7);
             uTxDir = PDMMEDIATXDIR_FROM_DEVICE;
             goto sendcmd;
         case SCSI_READ_SUBCHANNEL:
-            cbTransfer = ataBE2H_U16(pbPacket + 7);
+            cbTransfer = scsiBE2H_U16(pbPacket + 7);
             uTxDir = PDMMEDIATXDIR_FROM_DEVICE;
             goto sendcmd;
         case SCSI_READ_TOC_PMA_ATIP:
-            cbTransfer = ataBE2H_U16(pbPacket + 7);
+            cbTransfer = scsiBE2H_U16(pbPacket + 7);
             uTxDir = PDMMEDIATXDIR_FROM_DEVICE;
             goto sendcmd;
         case SCSI_READ_TRACK_INFORMATION:
-            cbTransfer = ataBE2H_U16(pbPacket + 7);
+            cbTransfer = scsiBE2H_U16(pbPacket + 7);
             uTxDir = PDMMEDIATXDIR_FROM_DEVICE;
             goto sendcmd;
@@ -3574,5 +3506,5 @@
             goto sendcmd;
         case SCSI_REPORT_KEY:
-            cbTransfer = ataBE2H_U16(pbPacket + 8);
+            cbTransfer = scsiBE2H_U16(pbPacket + 8);
             uTxDir = PDMMEDIATXDIR_FROM_DEVICE;
             goto sendcmd;
@@ -3593,21 +3525,21 @@
             goto sendcmd;
         case SCSI_SEND_CUE_SHEET:
-            cbTransfer = ataBE2H_U24(pbPacket + 6);
+            cbTransfer = scsiBE2H_U24(pbPacket + 6);
             uTxDir = PDMMEDIATXDIR_TO_DEVICE;
             goto sendcmd;
         case SCSI_SEND_DVD_STRUCTURE:
-            cbTransfer = ataBE2H_U16(pbPacket + 8);
+            cbTransfer = scsiBE2H_U16(pbPacket + 8);
             uTxDir = PDMMEDIATXDIR_TO_DEVICE;
             goto sendcmd;
         case SCSI_SEND_EVENT:
-            cbTransfer = ataBE2H_U16(pbPacket + 8);
+            cbTransfer = scsiBE2H_U16(pbPacket + 8);
             uTxDir = PDMMEDIATXDIR_TO_DEVICE;
             goto sendcmd;
         case SCSI_SEND_KEY:
-            cbTransfer = ataBE2H_U16(pbPacket + 8);
+            cbTransfer = scsiBE2H_U16(pbPacket + 8);
             uTxDir = PDMMEDIATXDIR_TO_DEVICE;
             goto sendcmd;
         case SCSI_SEND_OPC_INFORMATION:
-            cbTransfer = ataBE2H_U16(pbPacket + 7);
+            cbTransfer = scsiBE2H_U16(pbPacket + 7);
             uTxDir = PDMMEDIATXDIR_TO_DEVICE;
             goto sendcmd;
@@ -3617,5 +3549,5 @@
             goto sendcmd;
         case SCSI_SET_STREAMING:
-            cbTransfer = ataBE2H_U16(pbPacket + 9);
+            cbTransfer = scsiBE2H_U16(pbPacket + 9);
             uTxDir = PDMMEDIATXDIR_TO_DEVICE;
             goto sendcmd;
@@ -3632,6 +3564,6 @@
         case SCSI_WRITE_10:
         case SCSI_WRITE_AND_VERIFY_10:
-            iATAPILBA = ataBE2H_U32(pbPacket + 2);
-            cSectors = ataBE2H_U16(pbPacket + 7);
+            iATAPILBA = scsiBE2H_U32(pbPacket + 2);
+            cSectors = scsiBE2H_U16(pbPacket + 7);
             if (s->pTrackList)
                 s->cbATAPISector = ATAPIPassthroughTrackListGetSectorSizeFromLba(s->pTrackList, iATAPILBA);
@@ -3643,6 +3575,6 @@
             goto sendcmd;
         case SCSI_WRITE_12:
-            iATAPILBA = ataBE2H_U32(pbPacket + 2);
-            cSectors = ataBE2H_U32(pbPacket + 6);
+            iATAPILBA = scsiBE2H_U32(pbPacket + 2);
+            cSectors = scsiBE2H_U32(pbPacket + 6);
             if (s->pTrackList)
                 s->cbATAPISector = ATAPIPassthroughTrackListGetSectorSizeFromLba(s->pTrackList, iATAPILBA);
@@ -3666,5 +3598,5 @@
                     break;
                 default:
-                    cbTransfer = ataBE2H_U16(pbPacket + 6);
+                    cbTransfer = scsiBE2H_U16(pbPacket + 6);
                     uTxDir = PDMMEDIATXDIR_TO_DEVICE;
                     goto sendcmd;
@@ -3672,5 +3604,5 @@
             break;
         case SCSI_REPORT_LUNS: /* Not part of MMC-3, but used by Windows. */
-            cbTransfer = ataBE2H_U32(pbPacket + 6);
+            cbTransfer = scsiBE2H_U32(pbPacket + 6);
             uTxDir = PDMMEDIATXDIR_FROM_DEVICE;
             goto sendcmd;
