blob: aad9017a2a15e8096d64baa981b9fb5b487c27f3 [file] [log] [blame]
/*------------------------------------------------------------------------------
* Module Name: SiIRXIO
*
* Module Description: Reading and writing in SiI RX
*
* Copyright © 2002-2005, Silicon Image, Inc. All rights reserved.
*
* No part of this work may be reproduced, modified, distributed, transmitted,
* transcribed, or translated into any language or computer format, in any form
* or by any means without written permission of: Silicon Image, Inc.,
* 1060 East Arques Avenue, Sunnyvale, California 94085
*----------------------------------------------------------------------------
*/
#include "SiIRXIO.h"
/*------------------------------------------------------------------------------
* Function Name: siiReadBlockHDMIRXP0
* Function Description: Reads block of data from HDMI RX (page 0)
*
* Accepts: none
* Returns: none
* Globals: none
*----------------------------------------------------------------------------
*/
void siiReadBlockHDMIRXP0(BYTE bAddr, BYTE bNBytes, BYTE *pbData)
{
struct I2CShortCommandType_s I2CComm;
I2CComm.SlaveAddr = RX_SLV0;
I2CComm.Flags = 0;
I2CComm.NBytes = bNBytes;
I2CComm.RegAddrL = bAddr;
hlBlockRead_8BAS((struct I2CShortCommandType_s *)&I2CComm, pbData);
}
/*------------------------------------------------------------------------------
* Function Name: siiReadBlockHDMIRXP1
* Function Description: Reads block of data from HDMI RX (page 1)
*
* Accepts: none
* Returns: none
* Globals: none
*----------------------------------------------------------------------------
*/
void siiReadBlockHDMIRXP1(BYTE bAddr, BYTE bNBytes, BYTE *pbData)
{
struct I2CShortCommandType_s I2CComm;
I2CComm.SlaveAddr = RX_SLV1;
I2CComm.Flags = 0;
I2CComm.NBytes = bNBytes;
I2CComm.RegAddrL = bAddr;
hlBlockRead_8BAS((struct I2CShortCommandType_s *)&I2CComm, pbData);
}
/*------------------------------------------------------------------------------
* Function Name: siiWriteBlockHDMIRXP0
* Function Description: Writes block of data from HDMI RX (page 0)
*
* Accepts: none
* Returns: none
* Globals: none
*----------------------------------------------------------------------------
*/
void siiWriteBlockHDMIRXP0(BYTE bAddr, BYTE bNBytes, BYTE *pbData)
{
struct I2CShortCommandType_s I2CComm;
I2CComm.SlaveAddr = RX_SLV0;
I2CComm.Flags = 0;
I2CComm.NBytes = bNBytes;
I2CComm.RegAddrL = bAddr;
hlBlockWrite_8BAS((struct I2CShortCommandType_s *)&I2CComm, pbData);
}
/*------------------------------------------------------------------------------
* Function Name: siiModifyBits
* Function Description: this function reads byte from i2c device, modifys bit
* in the byte, then writes it back
* Accepts: none
* Returns: none
* Globals: none
*----------------------------------------------------------------------------
*/
void siiModifyBits(BYTE bSlaveAddr, BYTE bRegAddr, BYTE bModVal, BOOL qSet)
{
BYTE bRegVal;
bRegVal = hlReadByte_8BA(bSlaveAddr, bRegAddr);
if (qSet)
bRegVal |= bModVal;
else
bRegVal &= (~bModVal);
hlWriteByte_8BA(bSlaveAddr, bRegAddr, bRegVal);
}
/*------------------------------------------------------------------------------
* Function Name: siiReadModWriteByte
* Function Description: Reads byte at bRegAddr from i2c device at bSlaveAddr
* Clears any bits set in bBitmask
* Sets any bits set in bNewValue
* Writes byte back to bRegAddr i2c device at bSlaveAddr
* Accepts: none
* Returns: none
* Globals: none
*----------------------------------------------------------------------------
*/
void siiReadModWriteByte(BYTE bSlaveAddr, BYTE bRegAddr,
BYTE bBitMask, BYTE bNewValue)
{
/*BYTE bRegVal;
*
* bRegVal = hlReadByte_8BA ( bSlaveAddr, bRegAddr );
* bRegVal &= ~bBitMask;
* bRegVal |= bNewValue;
* hlWriteByte_8BA ( bSlaveAddr, bRegAddr, bRegVal );
*/
hlWriteByte_8BA(bSlaveAddr, bRegAddr,
(hlReadByte_8BA(bSlaveAddr, bRegAddr) & ~bBitMask) | bNewValue);
}
/*------------------------------------------------------------------------------
* Function Name: siiWriteBlockHDMIRXP1
* Function Description: Writes block of data from HDMI RX (page 1)
*
* Accepts: none
* Returns: none
* Globals: none
*----------------------------------------------------------------------------
*/
#ifdef _UNUSED_FUNC_
void siiWriteBlockHDMIRXP1(BYTE bAddr, BYTE bNBytes, BYTE *pbData)
{
struct I2CShortCommandType_s I2CComm;
I2CComm.Bus = BUS_1;
I2CComm.SlaveAddr = RX_SLV1;
I2CComm.Flags = 0;
I2CComm.NBytes = bNBytes;
I2CComm.RegAddrL = bAddr;
hlBlockWrite_8BAS((struct I2CShortCommandType_s *)&I2CComm, pbData);
}
#endif /* end _UNUSED_FUNC_ */