[memdisk] Additional EDD Device Parameter Table fields
authorShao Miller <shao.miller@yrdsb.edu.on.ca>
Fri, 31 Jul 2009 05:27:05 +0000 (01:27 -0400)
committerShao Miller <shao.miller@yrdsb.edu.on.ca>
Fri, 31 Jul 2009 05:27:05 +0000 (01:27 -0400)
Some additional fields from the EDD-4 spec. draft for the Device Parameter
Table have been added into the structure in setup.c and memdisk.inc.  These
were added in the hopes of resolving a FreeDOS MEMDISK bug on IBM ThinkPads.

memdisk/memdisk.inc
memdisk/setup.c

index 2699c34..b4d45c4 100644 (file)
@@ -1008,6 +1008,17 @@ EDD_DPT:
 .totalsize     dd 0, 0                 ; Filled in by installer
 .bytespersec   dw SECTORSIZE
 .eddtable      dw -1, -1               ; Invalid DPTE pointer
+.dpikey                dw 0                    ; Device Path Info magic (not impl.)
+                                       ; Would be 0beddh if implemented
+.dpilen                db 2ch                  ; DPI len
+.res1          db 0                    ; Reserved
+.res2          db 0                    ; Reserved
+.bustype       equ 'PCI '              ; Host bus type (4 bytes, space padded)
+.inttype       equ 'ATA     '          ; Interface type (8 bytes, spc. padded)
+.intpath       dd 0, 0                 ; Interface path
+.devpath       dd 0, 0, 0, 0           ; Device path
+.res3          db 0                    ; Reserved
+.chksum                db 0                    ; DPI checksum (not implemented)
 
 %endif
 
index 98c4b69..958f601 100644 (file)
@@ -80,6 +80,15 @@ struct edd_dpt {
     uint64_t sectors;          /* Total sectors */
     uint16_t bytespersec;      /* Bytes/sector */
     uint16_t dpte_off, dpte_seg;       /* DPTE pointer */
+    uint16_t dpikey;           /* Device Path Info magic */
+    uint8_t  res1;             /* Reserved */
+    uint8_t  res2;             /* Reserved */
+    uint8_t  bustype[4];       /* Host bus type */
+    uint8_t  inttype[8];       /* Interface type */
+    uint64_t intpath;          /* Interface path */
+    uint64_t devpath[2];       /* Device path (double QuadWord!) */
+    uint8_t  res3;             /* Reserved */
+    uint8_t  chksum;           /* DPI checksum */
 };
 
 struct patch_area {