/** @file\r
Read EDID information and parse EDID information.\r
\r
- Copyright (c) 2008, Intel Corporation\r
- All rights reserved. This program and the accompanying materials\r
+ Copyright (c) 2008 - 2014, Intel Corporation. All rights reserved.<BR>\r
+ 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
\r
#include "CirrusLogic5430.h"\r
+#include "CirrusLogic5430I2c.h"\r
\r
//\r
// EDID block\r
@retval EFI_SUCCESS\r
\r
**/\r
-STATIC\r
EFI_STATUS\r
ReadEdidData (\r
CIRRUS_LOGIC_5430_PRIVATE_DATA *Private,\r
UINTN *EdidSize\r
)\r
{\r
- UINT8 Index;\r
+ UINTN Index;\r
UINT8 EdidData[EDID_BLOCK_SIZE * 2];\r
UINT8 *ValidEdid;\r
UINT64 Signature;\r
\r
for (Index = 0; Index < EDID_BLOCK_SIZE * 2; Index ++) {\r
- I2cReadByte (Private->PciIo, 0xa0, Index, &EdidData[Index]);\r
+ I2cReadByte (Private->PciIo, 0xa0, (UINT8)Index, &EdidData[Index]);\r
}\r
\r
//\r
}\r
\r
*EdidDataBlock = AllocateCopyPool (\r
- sizeof (EDID_BLOCK_SIZE),\r
+ EDID_BLOCK_SIZE,\r
ValidEdid\r
);\r
if (*EdidDataBlock == NULL) {\r
@return The 32 bit unique key for search.\r
\r
**/\r
-STATIC\r
UINT32\r
CalculateEdidKey (\r
EDID_TIMING *EdidTiming\r
@retval FALSE Not found.\r
\r
**/\r
-STATIC\r
BOOLEAN\r
SearchEdidTiming (\r
VALID_EDID_TIMING *ValidEdidTiming,\r
@retval FALSE The EDID data is invalid.\r
\r
**/\r
-STATIC\r
BOOLEAN\r
ParseEdidData (\r
UINT8 *EdidBuffer,\r
//\r
// Allocate double size of VESA_BIOS_EXTENSIONS_EDID_BLOCK_SIZE to avoid overflow\r
//\r
- EdidOverrideDataBlock = AllocatePool (sizeof (EDID_BLOCK_SIZE * 2));\r
+ EdidOverrideDataBlock = AllocatePool (EDID_BLOCK_SIZE * 2);\r
if (NULL == EdidOverrideDataBlock) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Done;\r
// If EDID Override data doesn't exist or EFI_EDID_OVERRIDE_DONT_OVERRIDE returned,\r
// read EDID information through I2C Bus\r
//\r
- if (ReadEdidData (Private, &EdidDiscoveredDataBlock, &EdidDiscoveredDataSize) == EFI_SUCCESS) {;\r
+ if (ReadEdidData (Private, &EdidDiscoveredDataBlock, &EdidDiscoveredDataSize) == EFI_SUCCESS) {\r
Private->EdidDiscovered.SizeOfEdid = (UINT32) EdidDiscoveredDataSize;\r
Private->EdidDiscovered.Edid = (UINT8 *) AllocateCopyPool (\r
EdidDiscoveredDataSize,\r
Private->MaxMode = CIRRUS_LOGIC_5430_MODE_COUNT;\r
}\r
\r
- FreePool (EdidOverrideDataBlock);\r
+ if (EdidOverrideDataBlock != NULL) {\r
+ FreePool (EdidOverrideDataBlock);\r
+ }\r
+\r
return EFI_SUCCESS;\r
\r
Done:\r