EFI_STATUS Init_Gen ( IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, IN VOID *NullPpi ) { EFI_STATUS Status; EFI_PEI_SMBUS_PPI *SmBus; EFI_SMBUS_DEVICE_ADDRESS Address; UINT8 Value; UINTN Len = 1; Address.SmbusDeviceAddress = 0x5A >> 1; Status = (*PeiServices)->LocatePpi( PeiServices, &gPeiSmBusPpiGuid, 0, NULL, &SmBus ); ASSERT_PEI_ERROR( PeiServices, Status); Value = 0x80; SmBus->Execute( PeiServices, SmBus, Address, 0x05, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0xC4; SmBus->Execute( PeiServices, SmBus, Address, 0x05, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x44; SmBus->Execute( PeiServices, SmBus, Address, 0x06, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x00; SmBus->Execute( PeiServices, SmBus, Address, 0x1C, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x01; SmBus->Execute( PeiServices, SmBus, Address, 0x1D, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x03; SmBus->Execute( PeiServices, SmBus, Address, 0x1E, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x02; SmBus->Execute( PeiServices, SmBus, Address, 0x1F, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x00; SmBus->Execute( PeiServices, SmBus, Address, 0x1C, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x01; SmBus->Execute( PeiServices, SmBus, Address, 0x1D, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x04; SmBus->Execute( PeiServices, SmBus, Address, 0x1E, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x02; SmBus->Execute( PeiServices, SmBus, Address, 0x1F, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x00; SmBus->Execute( PeiServices, SmBus, Address, 0x1C, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x01; SmBus->Execute( PeiServices, SmBus, Address, 0x1D, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x05; SmBus->Execute( PeiServices, SmBus, Address, 0x1E, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x02; SmBus->Execute( PeiServices, SmBus, Address, 0x1F, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x00; SmBus->Execute( PeiServices, SmBus, Address, 0x1C, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x01; SmBus->Execute( PeiServices, SmBus, Address, 0x1D, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x06; SmBus->Execute( PeiServices, SmBus, Address, 0x1E, EfiSmbusWriteByte, 0, &Len, &Value); Value = 0x02; SmBus->Execute( PeiServices, SmBus, Address, 0x1F, EfiSmbusWriteByte, 0, &Len, &Value); PEI_TRACE((TRACE_ALWAYS, PeiServices, "Program CK505 end.\n")); return EFI_SUCCESS;