\r
\r
/**\r
- Number of nodes in OpenFirmware device paths that is required and examined.\r
+ Numbers of nodes in OpenFirmware device paths that are required and examined.\r
**/\r
-#define FIXED_OFW_NODES 4\r
+#define REQUIRED_OFW_NODES 2\r
+#define EXAMINED_OFW_NODES 4\r
\r
\r
/**\r
//\r
// Get PCI device and optional PCI function. Assume a single PCI root.\r
//\r
- if (NumNodes < FIXED_OFW_NODES ||\r
+ if (NumNodes < REQUIRED_OFW_NODES ||\r
!SubstringEq (OfwNode[0].DriverName, "pci")\r
) {\r
return RETURN_UNSUPPORTED;\r
return RETURN_UNSUPPORTED;\r
}\r
\r
- if (SubstringEq (OfwNode[1].DriverName, "ide") &&\r
+ if (NumNodes >= 4 &&\r
+ SubstringEq (OfwNode[1].DriverName, "ide") &&\r
SubstringEq (OfwNode[2].DriverName, "drive") &&\r
SubstringEq (OfwNode[3].DriverName, "disk")\r
) {\r
Secondary ? "Secondary" : "Primary",\r
Slave ? "Slave" : "Master"\r
);\r
- } else if (SubstringEq (OfwNode[1].DriverName, "isa") &&\r
+ } else if (NumNodes >= 4 &&\r
+ SubstringEq (OfwNode[1].DriverName, "isa") &&\r
SubstringEq (OfwNode[2].DriverName, "fdc") &&\r
SubstringEq (OfwNode[3].DriverName, "floppy")\r
) {\r
{\r
UINTN NumNodes;\r
RETURN_STATUS Status;\r
- OFW_NODE Node[FIXED_OFW_NODES];\r
+ OFW_NODE Node[EXAMINED_OFW_NODES];\r
BOOLEAN IsFinal;\r
OFW_NODE Skip;\r
\r
++NumNodes;\r
Status = ParseOfwNode (\r
Ptr,\r
- (NumNodes < FIXED_OFW_NODES) ? &Node[NumNodes] : &Skip,\r
+ (NumNodes < EXAMINED_OFW_NODES) ? &Node[NumNodes] : &Skip,\r
&IsFinal\r
);\r
}\r
\r
Status = TranslateOfwNodes (\r
Node,\r
- NumNodes < FIXED_OFW_NODES ? NumNodes : FIXED_OFW_NODES,\r
+ NumNodes < EXAMINED_OFW_NODES ? NumNodes : EXAMINED_OFW_NODES,\r
Translated,\r
TranslatedSize);\r
switch (Status) {\r