+++ /dev/null
-/*++\r
- \r
-Copyright (c) 2006, Intel Corporation \r
-All rights reserved. This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
-\r
- MiscPortInternalConnectorDesignatorFunction.c\r
- \r
-Abstract: \r
-\r
- This driver parses the mMiscSubclassDataTable structure and reports\r
- any generated data to the DataHub.\r
-\r
---*/\r
-\r
-#include "MiscSubclassDriver.h"\r
-\r
-//\r
-//\r
-//\r
-MISC_SUBCLASS_TABLE_FUNCTION (\r
- MiscPortInternalConnectorDesignator\r
- )\r
-/*++\r
-Description:\r
-\r
- This function makes boot time changes to the contents of the\r
- MiscPortConnectorInformation (Type 8).\r
-\r
-Parameters:\r
-\r
- RecordType\r
- Type of record to be processed from the Data Table.\r
- mMiscSubclassDataTable[].RecordType\r
-\r
- RecordLen\r
- Size of static RecordData from the Data Table.\r
- mMiscSubclassDataTable[].RecordLen\r
-\r
- RecordData\r
- Pointer to copy of RecordData from the Data Table. Changes made\r
- to this copy will be written to the Data Hub but will not alter\r
- the contents of the static Data Table.\r
-\r
- LogRecordData\r
- Set *LogRecordData to TRUE to log RecordData to Data Hub.\r
- Set *LogRecordData to FALSE when there is no more data to log.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS\r
- All parameters were valid and *RecordData and *LogRecordData have\r
- been set.\r
-\r
- EFI_UNSUPPORTED\r
- Unexpected RecordType value.\r
-\r
- EFI_INVALID_PARAMETER\r
- One of the following parameter conditions was true:\r
- RecordLen was zero.\r
- RecordData was NULL.\r
- LogRecordData was NULL.\r
---*/\r
-{\r
- STATIC BOOLEAN Done = FALSE;\r
- STATIC PS2_CONN_DEVICE_PATH mPs2KeyboardDevicePath = { DP_ACPI, DP_PCI (0x1F, 0x00), DP_LPC (0x0303, 0), DP_END };\r
- STATIC PS2_CONN_DEVICE_PATH mPs2MouseDevicePath = { DP_ACPI, DP_PCI (0x1F, 0x00), DP_LPC (0x0303, 1), DP_END };\r
- STATIC SERIAL_CONN_DEVICE_PATH mCom1DevicePath = { DP_ACPI, DP_PCI (0x1F, 0x00), DP_LPC (0x0501, 0), DP_END };\r
- STATIC SERIAL_CONN_DEVICE_PATH mCom2DevicePath = { DP_ACPI, DP_PCI (0x1F, 0x00), DP_LPC (0x0501, 1), DP_END };\r
- //STATIC PARALLEL_CONN_DEVICE_PATH mLpt1DevicePath = { DP_ACPI, DP_PCI (0x1F, 0x00), DP_LPC (0x0401, 0), DP_END };\r
- STATIC FLOOPY_CONN_DEVICE_PATH mFloopyADevicePath = { DP_ACPI, DP_PCI (0x1F, 0x00), DP_LPC (0x0604, 0), DP_END };\r
- //STATIC FLOOPY_CONN_DEVICE_PATH mFloopyBDevicePath = { DP_ACPI, DP_PCI (0x1F, 0x00), DP_LPC (0x0604, 1), DP_END };\r
- //STATIC USB_PORT_DEVICE_PATH mUsb0DevicePath = { DP_ACPI, DP_PCI (0x1d, 0x00), DP_END };\r
- //STATIC USB_PORT_DEVICE_PATH mUsb1DevicePath = { DP_ACPI, DP_PCI (0x1d, 0x01), DP_END };\r
- //STATIC USB_PORT_DEVICE_PATH mUsb2DevicePath = { DP_ACPI, DP_PCI (0x1d, 0x02), DP_END };\r
- //STATIC USB_PORT_DEVICE_PATH mUsb3DevicePath = { DP_ACPI, DP_PCI (0x1d, 0x07), DP_END };\r
- //STATIC IDE_DEVICE_PATH mIdeDevicePath = { DP_ACPI, DP_PCI (0x1F, 0x01), DP_END };\r
- //STATIC GB_NIC_DEVICE_PATH mGbNicDevicePath = { DP_ACPI, DP_PCI( 0x03,0x00 ),DP_PCI( 0x1F,0x00 ),DP_PCI( 0x07,0x00 ), DP_END };\r
- EFI_DEVICE_PATH_PROTOCOL EndDevicePath = DP_END;\r
-\r
- //\r
- // First check for invalid parameters.\r
- //\r
- // Shanmu >> to fix the Device Path Issue...\r
- // if (RecordLen == 0 || RecordData == NULL || LogRecordData == NULL) {\r
- //\r
- if (*RecordLen == 0 || RecordData == NULL || LogRecordData == NULL) {\r
- //\r
- // End Shanmu\r
- //\r
- return EFI_INVALID_PARAMETER;\r
- }\r
- //\r
- // Then check for unsupported RecordType.\r
- //\r
- if (RecordType != EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER) {\r
- return EFI_UNSUPPORTED;\r
- }\r
- //\r
- // Is this the first time through this function?\r
- //\r
- if (!Done) {\r
- //\r
- // Yes, this is the first time. Inspect/Change the contents of the\r
- // RecordData structure.\r
- //\r
- //\r
- // Device path is only updated here as it was not taking that in static data\r
- //\r
- // Shanmu >> to fix the Device Path Issue...\r
- //\r
-\r
- /*\r
- switch (((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *)RecordData)->PortInternalConnectorDesignator) \r
- {\r
- case STR_MISC_PORT_INTERNAL_MOUSE:\r
- {\r
- (EFI_DEVICE_PATH_PROTOCOL)((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *)RecordData)->PortPath = *((EFI_DEVICE_PATH_PROTOCOL*)&mPs2MouseDevicePath); \r
- }break;\r
- case STR_MISC_PORT_INTERNAL_KEYBOARD:\r
- {\r
- (EFI_DEVICE_PATH_PROTOCOL)((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *)RecordData)->PortPath = *((EFI_DEVICE_PATH_PROTOCOL*)&mPs2KeyboardDevicePath); \r
- }break;\r
- case STR_MISC_PORT_INTERNAL_COM1:\r
- {\r
- (EFI_DEVICE_PATH_PROTOCOL)((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *)RecordData)->PortPath = *((EFI_DEVICE_PATH_PROTOCOL*)&mCom1DevicePath); \r
- }break;\r
- case STR_MISC_PORT_INTERNAL_COM2:\r
- {\r
- (EFI_DEVICE_PATH_PROTOCOL)((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *)RecordData)->PortPath = *((EFI_DEVICE_PATH_PROTOCOL*)&mCom2DevicePath); \r
- }break;\r
- case STR_MISC_PORT_INTERNAL_LPT1:\r
- {\r
- (EFI_DEVICE_PATH_PROTOCOL)((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *)RecordData)->PortPath = *((EFI_DEVICE_PATH_PROTOCOL*)&mLpt1DevicePath); \r
- }break;\r
- case STR_MISC_PORT_INTERNAL_USB1:\r
- {\r
- (EFI_DEVICE_PATH_PROTOCOL)((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *)RecordData)->PortPath = *((EFI_DEVICE_PATH_PROTOCOL*)&mUsb0DevicePath); \r
- }break;\r
- case STR_MISC_PORT_INTERNAL_USB2:\r
- {\r
- (EFI_DEVICE_PATH_PROTOCOL)((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *)RecordData)->PortPath = *((EFI_DEVICE_PATH_PROTOCOL*)&mUsb1DevicePath); \r
- }break;\r
- case STR_MISC_PORT_INTERNAL_USB3:\r
- {\r
- (EFI_DEVICE_PATH_PROTOCOL)((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *)RecordData)->PortPath = *((EFI_DEVICE_PATH_PROTOCOL*)&mUsb2DevicePath); \r
- }break;\r
- case STR_MISC_PORT_INTERNAL_NETWORK:\r
- {\r
- (EFI_DEVICE_PATH_PROTOCOL)((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *)RecordData)->PortPath = *((EFI_DEVICE_PATH_PROTOCOL*)&mGbNicDevicePath); \r
- }break;\r
- case STR_MISC_PORT_INTERNAL_FLOPPY:\r
- {\r
- (EFI_DEVICE_PATH_PROTOCOL)((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *)RecordData)->PortPath = *((EFI_DEVICE_PATH_PROTOCOL*)&mFloopyADevicePath); \r
- }break;\r
- case STR_MISC_PORT_INTERNAL_IDE1:\r
- {\r
- (EFI_DEVICE_PATH_PROTOCOL)((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *)RecordData)->PortPath = *((EFI_DEVICE_PATH_PROTOCOL*)&mIdeDevicePath); \r
- }break;\r
- case STR_MISC_PORT_INTERNAL_IDE2:\r
- {\r
- (EFI_DEVICE_PATH_PROTOCOL)((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *)RecordData)->PortPath = *((EFI_DEVICE_PATH_PROTOCOL*)&mIdeDevicePath); \r
- }break;\r
- default:\r
- {\r
- (EFI_DEVICE_PATH_PROTOCOL)((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *)RecordData)->PortPath = EndDevicePath;\r
- }break; \r
- }\r
- */\r
- switch (((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *) RecordData)->PortInternalConnectorDesignator) {\r
- case STR_MISC_PORT_INTERNAL_MOUSE:\r
- {\r
- CopyMem (\r
- &((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *) RecordData)->PortPath,\r
- &mPs2MouseDevicePath,\r
- GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) &mPs2MouseDevicePath)\r
- );\r
- *RecordLen = *RecordLen - sizeof (EFI_MISC_PORT_DEVICE_PATH) + GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) &mPs2MouseDevicePath);\r
- }\r
- break;\r
-\r
- case STR_MISC_PORT_INTERNAL_KEYBOARD:\r
- {\r
- CopyMem (\r
- &((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *) RecordData)->PortPath,\r
- &mPs2KeyboardDevicePath,\r
- GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) &mPs2KeyboardDevicePath)\r
- );\r
- *RecordLen = *RecordLen - sizeof (EFI_MISC_PORT_DEVICE_PATH) + GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) &mPs2KeyboardDevicePath);\r
- }\r
- break;\r
-\r
- case STR_MISC_PORT_INTERNAL_COM1:\r
- {\r
- CopyMem (\r
- &((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *) RecordData)->PortPath,\r
- &mCom1DevicePath,\r
- GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) &mCom1DevicePath)\r
- );\r
- *RecordLen = *RecordLen - sizeof (EFI_MISC_PORT_DEVICE_PATH) + GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) &mCom1DevicePath);\r
- }\r
- break;\r
-\r
- case STR_MISC_PORT_INTERNAL_COM2:\r
- {\r
- CopyMem (\r
- &((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *) RecordData)->PortPath,\r
- &mCom2DevicePath,\r
- GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) &mCom2DevicePath)\r
- );\r
- *RecordLen = *RecordLen - sizeof (EFI_MISC_PORT_DEVICE_PATH) + GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) &mCom2DevicePath);\r
- }\r
- break;\r
-\r
- case STR_MISC_PORT_INTERNAL_FLOPPY:\r
- {\r
- CopyMem (\r
- &((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *) RecordData)->PortPath,\r
- &mFloopyADevicePath,\r
- GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) &mFloopyADevicePath)\r
- );\r
- *RecordLen = *RecordLen - sizeof (EFI_MISC_PORT_DEVICE_PATH) + GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) &mFloopyADevicePath);\r
- }\r
- break;\r
-\r
- default:\r
- {\r
- CopyMem (\r
- &((EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *) RecordData)->PortPath,\r
- &EndDevicePath,\r
- GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) &EndDevicePath)\r
- );\r
- *RecordLen = *RecordLen - sizeof (EFI_MISC_PORT_DEVICE_PATH) + GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) &EndDevicePath);\r
- }\r
- break;\r
- }\r
- //\r
- // End Shanmu\r
- //\r
- // Set Done flag to TRUE for next pass through this function.\r
- // Set *LogRecordData to TRUE so data will get logged to Data Hub.\r
- //\r
- Done = TRUE;\r
- *LogRecordData = TRUE;\r
- } else {\r
- //\r
- // No, this is the second time. Reset the state of the Done flag\r
- // to FALSE and tell the data logger that there is no more data\r
- // to be logged for this record type. If any memory allocations\r
- // were made by earlier passes, they must be released now.\r
- //\r
- Done = FALSE;\r
- *LogRecordData = FALSE;\r
- }\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/* eof - MiscSystemManufacturerFunction.c */\r