summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2009-04-15 03:25:39 +0000
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2009-04-15 03:25:39 +0000
commit2e2938977f6fcaaf3216c086b586f58380fdfacb (patch)
treefb8479e85e6421498b1a9bdb5ebfe798af30d8af
parent88f2bdb51dd2646bf965314f03aa847c66958087 (diff)
downloadedk2-platforms-2e2938977f6fcaaf3216c086b586f58380fdfacb.tar.xz
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
-rw-r--r--OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.h2
-rw-r--r--OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430Dxe.inf6
-rw-r--r--OptionRomPkg/CirrusLogic5430Dxe/Edid.c1
-rw-r--r--OptionRomPkg/Include/Library/DxeI2cLib.h64
-rw-r--r--OptionRomPkg/Library/CirrusLogicI2cLib/CirrusLogic5430I2cLib.c436
-rw-r--r--OptionRomPkg/Library/CirrusLogicI2cLib/CirrusLogic5430I2cLib.inf45
-rw-r--r--OptionRomPkg/OptionRomPkg.dec8
-rw-r--r--OptionRomPkg/OptionRomPkg.dsc3
8 files changed, 8 insertions, 557 deletions
diff --git a/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.h b/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.h
index 3edf540463..8ff302ac2b 100644
--- a/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.h
+++ b/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.h
@@ -38,7 +38,7 @@
#include <Library/UefiBootServicesTableLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/DevicePathLib.h>
-#include <Library/DxeI2cLib.h>
+#include <Library/TimerLib.h>
#include <IndustryStandard/Pci22.h>
//
diff --git a/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430Dxe.inf b/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430Dxe.inf
index dca2b1184f..82bdce0111 100644
--- a/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430Dxe.inf
+++ b/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430Dxe.inf
@@ -9,7 +9,7 @@
# 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
# 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
# are licensed and made available under the terms and conditions of the BSD License
@@ -49,6 +49,8 @@
CirrusLogic5430.c
CirrusLogic5430.h
Edid.c
+ CirrusLogic5430I2c.h
+ CirrusLogic5430I2c.c
[Packages]
MdePkg/MdePkg.dec
@@ -62,7 +64,7 @@
DebugLib
BaseMemoryLib
DevicePathLib
- DxeI2cLib
+ TimerLib
[Protocols]
gEfiDriverSupportedEfiVersionProtocolGuid # PROTOCOL ALWAYS_PRODUCED
diff --git a/OptionRomPkg/CirrusLogic5430Dxe/Edid.c b/OptionRomPkg/CirrusLogic5430Dxe/Edid.c
index fcbfc02410..ccf8584787 100644
--- a/OptionRomPkg/CirrusLogic5430Dxe/Edid.c
+++ b/OptionRomPkg/CirrusLogic5430Dxe/Edid.c
@@ -13,6 +13,7 @@
**/
#include "CirrusLogic5430.h"
+#include "CirrusLogic5430I2c.h"
//
// EDID block
diff --git a/OptionRomPkg/Include/Library/DxeI2cLib.h b/OptionRomPkg/Include/Library/DxeI2cLib.h
deleted file mode 100644
index 5325560cb9..0000000000
--- a/OptionRomPkg/Include/Library/DxeI2cLib.h
+++ /dev/null
@@ -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
- );
-
diff --git a/OptionRomPkg/Library/CirrusLogicI2cLib/CirrusLogic5430I2cLib.c b/OptionRomPkg/Library/CirrusLogicI2cLib/CirrusLogic5430I2cLib.c
deleted file mode 100644
index 4d1a583e49..0000000000
--- a/OptionRomPkg/Library/CirrusLogicI2cLib/CirrusLogic5430I2cLib.c
+++ /dev/null
@@ -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;
-}
-
-
-
diff --git a/OptionRomPkg/Library/CirrusLogicI2cLib/CirrusLogic5430I2cLib.inf b/OptionRomPkg/Library/CirrusLogicI2cLib/CirrusLogic5430I2cLib.inf
deleted file mode 100644
index 7474a4f05f..0000000000
--- a/OptionRomPkg/Library/CirrusLogicI2cLib/CirrusLogic5430I2cLib.inf
+++ /dev/null
@@ -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
-
-
diff --git a/OptionRomPkg/OptionRomPkg.dec b/OptionRomPkg/OptionRomPkg.dec
index 425214b893..bcfa8ebd7b 100644
--- a/OptionRomPkg/OptionRomPkg.dec
+++ b/OptionRomPkg/OptionRomPkg.dec
@@ -6,7 +6,7 @@
# 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.
#
-# Copyright (c) 2007 - 2008, Intel Corporation.
+# Copyright (c) 2007 - 2009, 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
@@ -24,12 +24,6 @@
PACKAGE_GUID = AA3865E8-7F30-4f59-8696-99F560101852
PACKAGE_VERSION = 0.1
-[Includes.common]
- Include
-
-[LibraryClasses.common]
- DxeI2cLib|Include/Library/DxeI2cLib.h
-
[PcdsFeatureFlag.common]
gOptionRomPkgTokenSpaceGuid.PcdSupportScsiPassThru|TRUE|BOOLEAN|0x00010001
gOptionRomPkgTokenSpaceGuid.PcdSupportExtScsiPassThru|TRUE|BOOLEAN|0x00010002
diff --git a/OptionRomPkg/OptionRomPkg.dsc b/OptionRomPkg/OptionRomPkg.dsc
index 1e040f68b0..29ef5cd51c 100644
--- a/OptionRomPkg/OptionRomPkg.dsc
+++ b/OptionRomPkg/OptionRomPkg.dsc
@@ -6,7 +6,7 @@
# 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.
#
-# Copyright (c) 2007 - 2008, Intel Corporation
+# Copyright (c) 2007 - 2009, 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
@@ -55,7 +55,6 @@
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
- DxeI2cLib|OptionRomPkg/Library/CirrusLogicI2cLib/CirrusLogic5430I2cLib.inf
################################################################################
#