// Open PCI I/O Protocol\r
//\r
Status = gBS->OpenProtocol (\r
- Private->Handle,\r
+ Controller,\r
&gEfiPciIoProtocolGuid,\r
(VOID **) &Private->PciIo,\r
This->DriverBindingHandle,\r
- Private->Handle,\r
+ Controller,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
);\r
if (EFI_ERROR (Status)) {\r
UINTN ScreenHeight\r
)\r
{\r
- UINTN Offset;\r
- UINTN X;\r
- UINTN Y;\r
- UINT8 Color;\r
-\r
- Offset = 0;\r
- for (Y = 0; Y < ScreenHeight; Y++) {\r
- for (X = 0; X < ScreenWidth; X++) {\r
- Color = (UINT8) (256 * (X + Y) / (ScreenWidth + ScreenHeight));\r
- Private->LineBuffer[X] = Color;\r
- }\r
-\r
- Private->PciIo->Mem.Write (\r
- Private->PciIo,\r
- EfiPciIoWidthUint32,\r
- 0,\r
- Offset + (Y * ScreenWidth),\r
- ScreenWidth >> 2,\r
- Private->LineBuffer\r
- );\r
- }\r
}\r
\r
/**\r
{\r
UINT8 Byte;\r
UINTN Index;\r
+ UINT16 DeviceId;\r
+ EFI_STATUS Status;\r
+\r
+ Status = Private->PciIo->Pci.Read (\r
+ Private->PciIo,\r
+ EfiPciIoWidthUint16,\r
+ PCI_DEVICE_ID_OFFSET,\r
+ 1,\r
+ &DeviceId\r
+ );\r
+ //\r
+ // Read the PCI Configuration Header from the PCI Device\r
+ //\r
+ ASSERT_EFI_ERROR (Status);\r
\r
outw (Private, SEQ_ADDRESS_REGISTER, 0x1206);\r
outw (Private, SEQ_ADDRESS_REGISTER, 0x0012);\r
outw (Private, SEQ_ADDRESS_REGISTER, ModeData->SeqSettings[Index]);\r
}\r
\r
- outb (Private, SEQ_ADDRESS_REGISTER, 0x0f);\r
- Byte = (UINT8) ((inb (Private, SEQ_DATA_REGISTER) & 0xc7) ^ 0x30);\r
- outb (Private, SEQ_DATA_REGISTER, Byte);\r
+ if (DeviceId != CIRRUS_LOGIC_5446_DEVICE_ID) {\r
+ outb (Private, SEQ_ADDRESS_REGISTER, 0x0f);\r
+ Byte = (UINT8) ((inb (Private, SEQ_DATA_REGISTER) & 0xc7) ^ 0x30);\r
+ outb (Private, SEQ_DATA_REGISTER, Byte);\r
+ }\r
\r
outb (Private, MISC_OUTPUT_REGISTER, ModeData->MiscSetting);\r
outw (Private, GRAPH_ADDRESS_REGISTER, 0x0506);\r