mirror of https://github.com/acidanthera/audk.git
retire i2c library, move its implementation to CirrusLogic5430Dxe
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8085 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
88f2bdb51d
commit
2e2938977f
|
@ -38,7 +38,7 @@
|
||||||
#include <Library/UefiBootServicesTableLib.h>
|
#include <Library/UefiBootServicesTableLib.h>
|
||||||
#include <Library/BaseMemoryLib.h>
|
#include <Library/BaseMemoryLib.h>
|
||||||
#include <Library/DevicePathLib.h>
|
#include <Library/DevicePathLib.h>
|
||||||
#include <Library/DxeI2cLib.h>
|
#include <Library/TimerLib.h>
|
||||||
|
|
||||||
#include <IndustryStandard/Pci22.h>
|
#include <IndustryStandard/Pci22.h>
|
||||||
//
|
//
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
# requires both the UGA Draw and the UGA I/O Protocol. Please refer to Microsoft's
|
# requires both the UGA Draw and the UGA I/O Protocol. Please refer to Microsoft's
|
||||||
# documentation on UGA for details on how to write a UGA driver that is able
|
# documentation on UGA for details on how to write a UGA driver that is able
|
||||||
# to function both in the EFI pre-boot environment and from the OS runtime.
|
# to function both in the EFI pre-boot environment and from the OS runtime.
|
||||||
# Copyright (c) 2006 - 2007, Intel Corporation
|
# Copyright (c) 2006 - 2009, Intel Corporation
|
||||||
#
|
#
|
||||||
# All rights reserved. This program and the accompanying materials
|
# All rights reserved. This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@ -49,6 +49,8 @@
|
||||||
CirrusLogic5430.c
|
CirrusLogic5430.c
|
||||||
CirrusLogic5430.h
|
CirrusLogic5430.h
|
||||||
Edid.c
|
Edid.c
|
||||||
|
CirrusLogic5430I2c.h
|
||||||
|
CirrusLogic5430I2c.c
|
||||||
|
|
||||||
[Packages]
|
[Packages]
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
||||||
|
@ -62,7 +64,7 @@
|
||||||
DebugLib
|
DebugLib
|
||||||
BaseMemoryLib
|
BaseMemoryLib
|
||||||
DevicePathLib
|
DevicePathLib
|
||||||
DxeI2cLib
|
TimerLib
|
||||||
|
|
||||||
[Protocols]
|
[Protocols]
|
||||||
gEfiDriverSupportedEfiVersionProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
gEfiDriverSupportedEfiVersionProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
**/
|
**/
|
||||||
|
|
||||||
#include "CirrusLogic5430.h"
|
#include "CirrusLogic5430.h"
|
||||||
|
#include "CirrusLogic5430I2c.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// EDID block
|
// EDID block
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
/** @file
|
|
||||||
I2c Bus byte read/write functions.
|
|
||||||
|
|
||||||
Copyright (c) 2008, Intel Corporation
|
|
||||||
All rights reserved. This program and the accompanying materials
|
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
|
||||||
http://opensource.org/licenses/bsd-license.php
|
|
||||||
|
|
||||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#include <Protocol/PciIo.h>
|
|
||||||
|
|
||||||
/**
|
|
||||||
Read one byte data on I2C Bus.
|
|
||||||
|
|
||||||
Read one byte data from the slave device connectet to I2C Bus.
|
|
||||||
If Data is NULL, then ASSERT().
|
|
||||||
|
|
||||||
@param PciIo The pointer to PCI_IO_PROTOCOL.
|
|
||||||
@param DeviceAddress Slave device's address.
|
|
||||||
@param RegisterAddress The register address on slave device.
|
|
||||||
@param Data The pointer to returned data if EFI_SUCCESS returned.
|
|
||||||
|
|
||||||
@retval EFI_DEVICE_ERROR
|
|
||||||
@retval EFI_SUCCESS
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
I2cReadByte (
|
|
||||||
EFI_PCI_IO_PROTOCOL *PciIo,
|
|
||||||
UINT8 DeviceAddress,
|
|
||||||
UINT8 RegisterAddress,
|
|
||||||
UINT8 *Data
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
Write one byte data onto I2C Bus.
|
|
||||||
|
|
||||||
Write one byte data to the slave device connectet to I2C Bus.
|
|
||||||
If Data is NULL, then ASSERT().
|
|
||||||
|
|
||||||
@param PciIo The pointer to PCI_IO_PROTOCOL.
|
|
||||||
@param DeviceAddress Slave device's address.
|
|
||||||
@param RegisterAddress The register address on slave device.
|
|
||||||
@param Data The pointer to write data.
|
|
||||||
|
|
||||||
@retval EFI_DEVICE_ERROR
|
|
||||||
@retval EFI_SUCCESS
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
I2cWriteByte (
|
|
||||||
EFI_PCI_IO_PROTOCOL *PciIo,
|
|
||||||
UINT8 DeviceAddress,
|
|
||||||
UINT8 RegisterAddress,
|
|
||||||
UINT8 *Data
|
|
||||||
);
|
|
||||||
|
|
|
@ -1,436 +0,0 @@
|
||||||
/** @file
|
|
||||||
I2C Bus Libary implementation upon CirrusLogic.
|
|
||||||
|
|
||||||
Copyright (c) 2008, Intel Corporation
|
|
||||||
All rights reserved. This program and the accompanying materials
|
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
|
||||||
http://opensource.org/licenses/bsd-license.php
|
|
||||||
|
|
||||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#include <PiDxe.h>
|
|
||||||
|
|
||||||
#include <Library/DxeI2cLib.h>
|
|
||||||
#include <Library/TimerLib.h>
|
|
||||||
#include <Library/DebugLib.h>
|
|
||||||
|
|
||||||
#define SEQ_ADDRESS_REGISTER 0x3c4
|
|
||||||
#define SEQ_DATA_REGISTER 0x3c5
|
|
||||||
|
|
||||||
#define I2C_CONTROL 0x08
|
|
||||||
#define I2CDAT_IN 7
|
|
||||||
#define I2CCLK_IN 2
|
|
||||||
#define I2CDAT_OUT 1
|
|
||||||
#define I2CCLK_OUT 0
|
|
||||||
|
|
||||||
#define I2C_BUS_SPEED 100 //100kbps
|
|
||||||
|
|
||||||
/**
|
|
||||||
PCI I/O byte write function.
|
|
||||||
|
|
||||||
@param PciIo The pointer to PCI_IO_PROTOCOL.
|
|
||||||
@param Address The bit map of I2C Data or I2C Clock pins.
|
|
||||||
@param Data The date to write.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
I2cOutb (
|
|
||||||
EFI_PCI_IO_PROTOCOL *PciIo,
|
|
||||||
UINTN Address,
|
|
||||||
UINT8 Data
|
|
||||||
)
|
|
||||||
{
|
|
||||||
PciIo->Io.Write (
|
|
||||||
PciIo,
|
|
||||||
EfiPciIoWidthUint8,
|
|
||||||
EFI_PCI_IO_PASS_THROUGH_BAR,
|
|
||||||
Address,
|
|
||||||
1,
|
|
||||||
&Data
|
|
||||||
);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
PCI I/O byte read function.
|
|
||||||
|
|
||||||
@param PciIo The pointer to PCI_IO_PROTOCOL.
|
|
||||||
@param Address The bit map of I2C Data or I2C Clock pins.
|
|
||||||
|
|
||||||
return byte value read from PCI I/O space.
|
|
||||||
|
|
||||||
**/
|
|
||||||
UINT8
|
|
||||||
I2cInb (
|
|
||||||
EFI_PCI_IO_PROTOCOL *PciIo,
|
|
||||||
UINTN Address
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UINT8 Data;
|
|
||||||
|
|
||||||
PciIo->Io.Read (
|
|
||||||
PciIo,
|
|
||||||
EfiPciIoWidthUint8,
|
|
||||||
EFI_PCI_IO_PASS_THROUGH_BAR,
|
|
||||||
Address,
|
|
||||||
1,
|
|
||||||
&Data
|
|
||||||
);
|
|
||||||
return Data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Read status of I2C Data and I2C Clock Pins.
|
|
||||||
|
|
||||||
@param PciIo The pointer to PCI_IO_PROTOCOL.
|
|
||||||
@param Blt The bit map of I2C Data or I2C Clock pins.
|
|
||||||
|
|
||||||
@retval 0 Low on I2C Data or I2C Clock Pin.
|
|
||||||
@retval 1 High on I2C Data or I2C Clock Pin.
|
|
||||||
|
|
||||||
**/
|
|
||||||
UINT8
|
|
||||||
I2cPinRead (
|
|
||||||
EFI_PCI_IO_PROTOCOL *PciIo,
|
|
||||||
UINT8 Bit
|
|
||||||
)
|
|
||||||
{
|
|
||||||
I2cOutb (PciIo, SEQ_ADDRESS_REGISTER, I2C_CONTROL);
|
|
||||||
return (UINT8) ((I2cInb (PciIo, SEQ_DATA_REGISTER) >> Bit ) & 0xfe);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
Set/Clear I2C Data and I2C Clock Pins.
|
|
||||||
|
|
||||||
@param PciIo The pointer to PCI_IO_PROTOCOL.
|
|
||||||
@param Blt The bit map to controller I2C Data or I2C Clock pins.
|
|
||||||
@param Value 1 or 0 stands for Set or Clear I2C Data and I2C Clock Pins.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
I2cPinWrite (
|
|
||||||
EFI_PCI_IO_PROTOCOL *PciIo,
|
|
||||||
UINT8 Bit,
|
|
||||||
UINT8 Value
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UINT8 Byte;
|
|
||||||
I2cOutb (PciIo, SEQ_ADDRESS_REGISTER, I2C_CONTROL);
|
|
||||||
Byte = (UINT8) (I2cInb (PciIo, SEQ_DATA_REGISTER) & (UINT8) ~(1 << Bit)) ;
|
|
||||||
Byte = (UINT8) (Byte | ((Value & 0x01) << Bit));
|
|
||||||
I2cOutb (PciIo, SEQ_DATA_REGISTER, (UINT8) (Byte | 0x40));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Read/write delay acoording to I2C Bus Speed.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
I2cDelay (
|
|
||||||
VOID
|
|
||||||
)
|
|
||||||
{
|
|
||||||
MicroSecondDelay (1000 / I2C_BUS_SPEED);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Write a 8-bit data onto I2C Data Pin.
|
|
||||||
|
|
||||||
@param PciIo The pointer to PCI_IO_PROTOCOL.
|
|
||||||
@param Data The byte data to write.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
I2cSendByte (
|
|
||||||
EFI_PCI_IO_PROTOCOL *PciIo,
|
|
||||||
UINT8 Data
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UINTN Index;
|
|
||||||
//
|
|
||||||
// Send byte data onto I2C Bus
|
|
||||||
//
|
|
||||||
for (Index = 0; Index < 8; Index --) {
|
|
||||||
I2cPinWrite (PciIo, I2CDAT_OUT, (UINT8) (Data >> (7 - Index)));
|
|
||||||
I2cPinWrite (PciIo, I2CCLK_OUT, 1);
|
|
||||||
I2cDelay ();
|
|
||||||
I2cPinWrite (PciIo, I2CCLK_OUT, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Read a 8-bit data from I2C Data Pin.
|
|
||||||
|
|
||||||
@param PciIo The pointer to PCI_IO_PROTOCOL.
|
|
||||||
|
|
||||||
Return the byte data read from I2C Data Pin.
|
|
||||||
**/
|
|
||||||
UINT8
|
|
||||||
I2cReceiveByte (
|
|
||||||
EFI_PCI_IO_PROTOCOL *PciIo
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UINT8 Data;
|
|
||||||
UINTN Index;
|
|
||||||
|
|
||||||
Data = 0;
|
|
||||||
//
|
|
||||||
// Read byte data from I2C Bus
|
|
||||||
//
|
|
||||||
for (Index = 0; Index < 8; Index --) {
|
|
||||||
I2cPinWrite (PciIo, I2CCLK_OUT, 1);
|
|
||||||
I2cDelay ();
|
|
||||||
Data = (UINT8) (Data << 1);
|
|
||||||
Data = (UINT8) (Data | I2cPinRead (PciIo, I2CDAT_IN));
|
|
||||||
I2cPinWrite (PciIo, I2CCLK_OUT, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Receive an ACK signal from I2C Bus.
|
|
||||||
|
|
||||||
@param PciIo The pointer to PCI_IO_PROTOCOL.
|
|
||||||
|
|
||||||
**/
|
|
||||||
BOOLEAN
|
|
||||||
I2cWaitAck (
|
|
||||||
EFI_PCI_IO_PROTOCOL *PciIo
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Wait for ACK signal
|
|
||||||
//
|
|
||||||
I2cPinWrite (PciIo, I2CDAT_OUT, 1);
|
|
||||||
I2cPinWrite (PciIo, I2CCLK_OUT, 1);
|
|
||||||
I2cDelay ();
|
|
||||||
if (I2cPinRead (PciIo, I2CDAT_IN) == 0) {
|
|
||||||
I2cPinWrite (PciIo, I2CDAT_OUT, 1);
|
|
||||||
return TRUE;
|
|
||||||
} else {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Send an ACK signal onto I2C Bus.
|
|
||||||
|
|
||||||
@param PciIo The pointer to PCI_IO_PROTOCOL.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
I2cSendAck (
|
|
||||||
EFI_PCI_IO_PROTOCOL *PciIo
|
|
||||||
)
|
|
||||||
{
|
|
||||||
I2cPinWrite (PciIo, I2CCLK_OUT, 1);
|
|
||||||
I2cPinWrite (PciIo, I2CDAT_OUT, 1);
|
|
||||||
I2cPinWrite (PciIo, I2CDAT_OUT, 0);
|
|
||||||
I2cPinWrite (PciIo, I2CCLK_OUT, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Start a I2C transfer on I2C Bus.
|
|
||||||
|
|
||||||
@param PciIo The pointer to PCI_IO_PROTOCOL.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
I2cStart (
|
|
||||||
EFI_PCI_IO_PROTOCOL *PciIo
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Init CLK and DAT pins
|
|
||||||
//
|
|
||||||
I2cPinWrite (PciIo, I2CCLK_OUT, 1);
|
|
||||||
I2cPinWrite (PciIo, I2CDAT_OUT, 1);
|
|
||||||
//
|
|
||||||
// Start a I2C transfer, set SDA low from high, when SCL is high
|
|
||||||
//
|
|
||||||
I2cPinWrite (PciIo, I2CDAT_OUT, 0);
|
|
||||||
I2cPinWrite (PciIo, I2CCLK_OUT, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Stop a I2C transfer on I2C Bus.
|
|
||||||
|
|
||||||
@param PciIo The pointer to PCI_IO_PROTOCOL.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
I2cStop (
|
|
||||||
EFI_PCI_IO_PROTOCOL *PciIo
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Stop a I2C transfer, set SDA high from low, when SCL is high
|
|
||||||
//
|
|
||||||
I2cPinWrite (PciIo, I2CDAT_OUT, 0);
|
|
||||||
I2cPinWrite (PciIo, I2CCLK_OUT, 1);
|
|
||||||
I2cPinWrite (PciIo, I2CDAT_OUT, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Read one byte data on I2C Bus.
|
|
||||||
|
|
||||||
Read one byte data from the slave device connectet to I2C Bus.
|
|
||||||
If Data is NULL, then ASSERT().
|
|
||||||
|
|
||||||
@param PciIo The pointer to PCI_IO_PROTOCOL.
|
|
||||||
@param DeviceAddress Slave device's address.
|
|
||||||
@param RegisterAddress The register address on slave device.
|
|
||||||
@param Data The pointer to returned data if EFI_SUCCESS returned.
|
|
||||||
|
|
||||||
@retval EFI_DEVICE_ERROR
|
|
||||||
@retval EFI_SUCCESS
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
I2cReadByte (
|
|
||||||
EFI_PCI_IO_PROTOCOL *PciIo,
|
|
||||||
UINT8 DeviceAddress,
|
|
||||||
UINT8 RegisterAddress,
|
|
||||||
UINT8 *Data
|
|
||||||
)
|
|
||||||
{
|
|
||||||
ASSERT (Data != NULL);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Start I2C transfer
|
|
||||||
//
|
|
||||||
I2cStart (PciIo);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Send slave address with enabling write flag
|
|
||||||
//
|
|
||||||
I2cSendByte (PciIo, (UINT8) (DeviceAddress & 0xfe));
|
|
||||||
|
|
||||||
//
|
|
||||||
// Wait for ACK signal
|
|
||||||
//
|
|
||||||
if (I2cWaitAck (PciIo) == FALSE) {
|
|
||||||
return EFI_DEVICE_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Send register address
|
|
||||||
//
|
|
||||||
I2cSendByte (PciIo, RegisterAddress);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Wait for ACK signal
|
|
||||||
//
|
|
||||||
if (I2cWaitAck (PciIo) == FALSE) {
|
|
||||||
return EFI_DEVICE_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Send slave address with enabling read flag
|
|
||||||
//
|
|
||||||
I2cSendByte (PciIo, (UINT8) (DeviceAddress | 0x01));
|
|
||||||
|
|
||||||
//
|
|
||||||
// Wait for ACK signal
|
|
||||||
//
|
|
||||||
if (I2cWaitAck (PciIo) == FALSE) {
|
|
||||||
return EFI_DEVICE_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Read byte data from I2C Bus
|
|
||||||
//
|
|
||||||
*Data = I2cReceiveByte (PciIo);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Send ACK signal onto I2C Bus
|
|
||||||
//
|
|
||||||
I2cSendAck (PciIo);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Stop a I2C transfer
|
|
||||||
//
|
|
||||||
I2cStop (PciIo);
|
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Write one byte data onto I2C Bus.
|
|
||||||
|
|
||||||
Write one byte data to the slave device connectet to I2C Bus.
|
|
||||||
If Data is NULL, then ASSERT().
|
|
||||||
|
|
||||||
@param PciIo The pointer to PCI_IO_PROTOCOL.
|
|
||||||
@param DeviceAddress Slave device's address.
|
|
||||||
@param RegisterAddress The register address on slave device.
|
|
||||||
@param Data The pointer to write data.
|
|
||||||
|
|
||||||
@retval EFI_DEVICE_ERROR
|
|
||||||
@retval EFI_SUCCESS
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
I2cWriteByte (
|
|
||||||
EFI_PCI_IO_PROTOCOL *PciIo,
|
|
||||||
UINT8 DeviceAddress,
|
|
||||||
UINT8 RegisterAddress,
|
|
||||||
UINT8 *Data
|
|
||||||
)
|
|
||||||
{
|
|
||||||
ASSERT (Data != NULL);
|
|
||||||
|
|
||||||
I2cStart (PciIo);
|
|
||||||
//
|
|
||||||
// Send slave address with enabling write flag
|
|
||||||
//
|
|
||||||
I2cSendByte (PciIo, (UINT8) (DeviceAddress & 0xfe));
|
|
||||||
|
|
||||||
//
|
|
||||||
// Wait for ACK signal
|
|
||||||
//
|
|
||||||
if (I2cWaitAck (PciIo) == FALSE) {
|
|
||||||
return EFI_DEVICE_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Send register address
|
|
||||||
//
|
|
||||||
I2cSendByte (PciIo, RegisterAddress);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Wait for ACK signal
|
|
||||||
//
|
|
||||||
if (I2cWaitAck (PciIo) == FALSE) {
|
|
||||||
return EFI_DEVICE_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Send byte data onto I2C Bus
|
|
||||||
//
|
|
||||||
I2cSendByte (PciIo, *Data);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Wait for ACK signal
|
|
||||||
//
|
|
||||||
if (I2cWaitAck (PciIo) == FALSE) {
|
|
||||||
return EFI_DEVICE_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Stop a I2C transfer
|
|
||||||
//
|
|
||||||
I2cStop (PciIo);
|
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
#/** @file
|
|
||||||
# DxeI2c Library implementation on CirrusLogic.
|
|
||||||
#
|
|
||||||
# Provides I2c Bus byte read/write functions upon CirrusLogic5430.
|
|
||||||
# Copyright (c) 2008, Intel Corporation.
|
|
||||||
#
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#**/
|
|
||||||
|
|
||||||
[Defines]
|
|
||||||
INF_VERSION = 0x00010005
|
|
||||||
BASE_NAME = CirrusLogic5430I2cLib
|
|
||||||
FILE_GUID = 0C86ADD7-ED2A-4b9a-ABC9-D932E8AA349B
|
|
||||||
MODULE_TYPE = DXE_DRIVER
|
|
||||||
VERSION_STRING = 1.0
|
|
||||||
LIBRARY_CLASS = DxeI2cLib
|
|
||||||
EDK_RELEASE_VERSION = 0x00020000
|
|
||||||
EFI_SPECIFICATION_VERSION = 0x00020000
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
|
||||||
#
|
|
||||||
|
|
||||||
[Sources.common]
|
|
||||||
CirrusLogic5430I2cLib.c
|
|
||||||
|
|
||||||
|
|
||||||
[Packages]
|
|
||||||
MdePkg/MdePkg.dec
|
|
||||||
OptionRomPkg/OptionRomPkg.dec
|
|
||||||
|
|
||||||
|
|
||||||
[LibraryClasses]
|
|
||||||
TimerLib
|
|
||||||
DebugLib
|
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
# Option ROM image for all CPU architectures, including EBC target.
|
# Option ROM image for all CPU architectures, including EBC target.
|
||||||
# A single driver can support mixes of EFI 1.1, UEFI 2.0 and UEFI 2.1.
|
# A single driver can support mixes of EFI 1.1, UEFI 2.0 and UEFI 2.1.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2007 - 2008, Intel Corporation.
|
# Copyright (c) 2007 - 2009, Intel Corporation.
|
||||||
#
|
#
|
||||||
# All rights reserved. This program and the accompanying materials
|
# All rights reserved. This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@ -24,12 +24,6 @@
|
||||||
PACKAGE_GUID = AA3865E8-7F30-4f59-8696-99F560101852
|
PACKAGE_GUID = AA3865E8-7F30-4f59-8696-99F560101852
|
||||||
PACKAGE_VERSION = 0.1
|
PACKAGE_VERSION = 0.1
|
||||||
|
|
||||||
[Includes.common]
|
|
||||||
Include
|
|
||||||
|
|
||||||
[LibraryClasses.common]
|
|
||||||
DxeI2cLib|Include/Library/DxeI2cLib.h
|
|
||||||
|
|
||||||
[PcdsFeatureFlag.common]
|
[PcdsFeatureFlag.common]
|
||||||
gOptionRomPkgTokenSpaceGuid.PcdSupportScsiPassThru|TRUE|BOOLEAN|0x00010001
|
gOptionRomPkgTokenSpaceGuid.PcdSupportScsiPassThru|TRUE|BOOLEAN|0x00010001
|
||||||
gOptionRomPkgTokenSpaceGuid.PcdSupportExtScsiPassThru|TRUE|BOOLEAN|0x00010002
|
gOptionRomPkgTokenSpaceGuid.PcdSupportExtScsiPassThru|TRUE|BOOLEAN|0x00010002
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
# Option ROM image for all CPU architectures, including EBC target.
|
# Option ROM image for all CPU architectures, including EBC target.
|
||||||
# A single driver can support mixes of EFI 1.1, UEFI 2.0 and UEFI 2.1.
|
# A single driver can support mixes of EFI 1.1, UEFI 2.0 and UEFI 2.1.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2007 - 2008, Intel Corporation
|
# Copyright (c) 2007 - 2009, Intel Corporation
|
||||||
#
|
#
|
||||||
# All rights reserved. This program and the accompanying materials
|
# All rights reserved. This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@ -55,7 +55,6 @@
|
||||||
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
||||||
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
||||||
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
|
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
|
||||||
DxeI2cLib|OptionRomPkg/Library/CirrusLogicI2cLib/CirrusLogic5430I2cLib.inf
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue