|
@@ -1,139 +0,0 @@
|
|
|
-/*
|
|
|
- I2C API, implementation depends on board specifics
|
|
|
-
|
|
|
- Copyright (c), 2004-2005,2007-2010 Trident Microsystems, Inc.
|
|
|
- All rights reserved.
|
|
|
-
|
|
|
- Redistribution and use in source and binary forms, with or without
|
|
|
- modification, are permitted provided that the following conditions are met:
|
|
|
-
|
|
|
- * Redistributions of source code must retain the above copyright notice,
|
|
|
- this list of conditions and the following disclaimer.
|
|
|
- * Redistributions in binary form must reproduce the above copyright notice,
|
|
|
- this list of conditions and the following disclaimer in the documentation
|
|
|
- and/or other materials provided with the distribution.
|
|
|
- * Neither the name of Trident Microsystems nor Hauppauge Computer Works
|
|
|
- nor the names of its contributors may be used to endorse or promote
|
|
|
- products derived from this software without specific prior written
|
|
|
- permission.
|
|
|
-
|
|
|
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
|
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
|
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
|
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
|
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
|
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
|
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
|
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
|
- POSSIBILITY OF SUCH DAMAGE.
|
|
|
-
|
|
|
- This module encapsulates I2C access.In some applications several devices
|
|
|
- share one I2C bus. If these devices have the same I2C address some kind
|
|
|
- off "switch" must be implemented to ensure error free communication with
|
|
|
- one device. In case such a "switch" is used, the device ID can be used
|
|
|
- to implement control over this "switch".
|
|
|
-*/
|
|
|
-
|
|
|
-#ifndef __BSPI2C_H__
|
|
|
-#define __BSPI2C_H__
|
|
|
-
|
|
|
-#include "bsp_types.h"
|
|
|
-
|
|
|
-/*
|
|
|
- * This structure contains the I2C address, the device ID and a user_data pointer.
|
|
|
- * The user_data pointer can be used for application specific purposes.
|
|
|
- */
|
|
|
-struct i2c_device_addr {
|
|
|
- u16 i2c_addr; /* The I2C address of the device. */
|
|
|
- u16 i2c_dev_id; /* The device identifier. */
|
|
|
- void *user_data; /* User data pointer */
|
|
|
-};
|
|
|
-
|
|
|
-
|
|
|
-/*
|
|
|
-* \def IS_I2C_10BIT( addr )
|
|
|
-* \brief Determine if I2C address 'addr' is a 10 bits address or not.
|
|
|
-* \param addr The I2C address.
|
|
|
-* \return int.
|
|
|
-* \retval 0 if address is not a 10 bits I2C address.
|
|
|
-* \retval 1 if address is a 10 bits I2C address.
|
|
|
-*/
|
|
|
-#define IS_I2C_10BIT(addr) \
|
|
|
- (((addr) & 0xF8) == 0xF0)
|
|
|
-
|
|
|
-/*------------------------------------------------------------------------------
|
|
|
-Exported FUNCTIONS
|
|
|
-------------------------------------------------------------------------------*/
|
|
|
-
|
|
|
-/*
|
|
|
-* \fn drxbsp_i2c_init()
|
|
|
-* \brief Initialize I2C communication module.
|
|
|
-* \return drx_status_t Return status.
|
|
|
-* \retval 0 Initialization successful.
|
|
|
-* \retval -EIO Initialization failed.
|
|
|
-*/
|
|
|
- drx_status_t drxbsp_i2c_init(void);
|
|
|
-
|
|
|
-/*
|
|
|
-* \fn drxbsp_i2c_term()
|
|
|
-* \brief Terminate I2C communication module.
|
|
|
-* \return drx_status_t Return status.
|
|
|
-* \retval 0 Termination successful.
|
|
|
-* \retval -EIO Termination failed.
|
|
|
-*/
|
|
|
- drx_status_t drxbsp_i2c_term(void);
|
|
|
-
|
|
|
-/*
|
|
|
-* \fn drx_status_t drxbsp_i2c_write_read( struct i2c_device_addr *w_dev_addr,
|
|
|
-* u16 w_count,
|
|
|
-* u8 *wData,
|
|
|
-* struct i2c_device_addr *r_dev_addr,
|
|
|
-* u16 r_count,
|
|
|
-* u8 *r_data)
|
|
|
-* \brief Read and/or write count bytes from I2C bus, store them in data[].
|
|
|
-* \param w_dev_addr The device i2c address and the device ID to write to
|
|
|
-* \param w_count The number of bytes to write
|
|
|
-* \param wData The array to write the data to
|
|
|
-* \param r_dev_addr The device i2c address and the device ID to read from
|
|
|
-* \param r_count The number of bytes to read
|
|
|
-* \param r_data The array to read the data from
|
|
|
-* \return drx_status_t Return status.
|
|
|
-* \retval 0 Succes.
|
|
|
-* \retval -EIO Failure.
|
|
|
-* \retval -EINVAL Parameter 'wcount' is not zero but parameter
|
|
|
-* 'wdata' contains NULL.
|
|
|
-* Idem for 'rcount' and 'rdata'.
|
|
|
-* Both w_dev_addr and r_dev_addr are NULL.
|
|
|
-*
|
|
|
-* This function must implement an atomic write and/or read action on the I2C bus
|
|
|
-* No other process may use the I2C bus when this function is executing.
|
|
|
-* The critical section of this function runs from and including the I2C
|
|
|
-* write, up to and including the I2C read action.
|
|
|
-*
|
|
|
-* The device ID can be useful if several devices share an I2C address.
|
|
|
-* It can be used to control a "switch" on the I2C bus to the correct device.
|
|
|
-*/
|
|
|
- drx_status_t drxbsp_i2c_write_read(struct i2c_device_addr *w_dev_addr,
|
|
|
- u16 w_count,
|
|
|
- u8 *w_data,
|
|
|
- struct i2c_device_addr *r_dev_addr,
|
|
|
- u16 r_count, u8 *r_data);
|
|
|
-
|
|
|
-/*
|
|
|
-* \fn drxbsp_i2c_error_text()
|
|
|
-* \brief Returns a human readable error.
|
|
|
-* Counter part of numerical drx_i2c_error_g.
|
|
|
-*
|
|
|
-* \return char* Pointer to human readable error text.
|
|
|
-*/
|
|
|
- char *drxbsp_i2c_error_text(void);
|
|
|
-
|
|
|
-/*
|
|
|
-* \var drx_i2c_error_g;
|
|
|
-* \brief I2C specific error codes, platform dependent.
|
|
|
-*/
|
|
|
- extern int drx_i2c_error_g;
|
|
|
-
|
|
|
-#endif /* __BSPI2C_H__ */
|