summaryrefslogtreecommitdiff
path: root/packages/i2c/files
diff options
context:
space:
mode:
Diffstat (limited to 'packages/i2c/files')
-rw-r--r--packages/i2c/files/Config.h41
-rw-r--r--packages/i2c/files/Crc8.c149
-rw-r--r--packages/i2c/files/Crc8.h54
-rw-r--r--packages/i2c/files/DumpMem.c93
-rw-r--r--packages/i2c/files/DumpMem.h49
-rw-r--r--packages/i2c/files/Log.c335
-rw-r--r--packages/i2c/files/Log.h232
-rw-r--r--packages/i2c/files/i2c-api.c522
-rw-r--r--packages/i2c/files/i2c-api.h143
-rw-r--r--packages/i2c/files/i2c-dev.h365
-rw-r--r--packages/i2c/files/i2c-io-api.h52
-rw-r--r--packages/i2c/files/i2c-io.h220
-rw-r--r--packages/i2c/files/i2c.c710
-rw-r--r--packages/i2c/files/i2c.h135
-rwxr-xr-xpackages/i2c/files/i2c.init37
15 files changed, 0 insertions, 3137 deletions
diff --git a/packages/i2c/files/Config.h b/packages/i2c/files/Config.h
deleted file mode 100644
index 83bb46de84..0000000000
--- a/packages/i2c/files/Config.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/****************************************************************************
-*
-* Copyright (c) 2006 Dave Hylands <dhylands@gmail.com>
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License version 2 as
-* published by the Free Software Foundation.
-*
-* Alternatively, this software may be distributed under the terms of BSD
-* license.
-*
-* See README and COPYING for more details.
-*
-****************************************************************************/
-/**
-*
-* @file Config.h
-*
-* @brief Global Configuration information.
-*
-****************************************************************************/
-
-#if !defined( CONFIG_H )
-#define CONFIG_H /**< Include Guard */
-
-/* ---- Include Files ---------------------------------------------------- */
-
-/* ---- Constants and Types ---------------------------------------------- */
-
-/**
- * Sets Logging parameters
- */
-
-#define CFG_LOG_TO_BUFFER 0
-
-#define CFG_CRC8BLOCK 1
-
-/** @} */
-
-#endif // CONFIG_H
-
diff --git a/packages/i2c/files/Crc8.c b/packages/i2c/files/Crc8.c
deleted file mode 100644
index 87dcf5c2f4..0000000000
--- a/packages/i2c/files/Crc8.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/****************************************************************************
-*
-* Copyright (c) 2006 Dave Hylands <dhylands@gmail.com>
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License version 2 as
-* published by the Free Software Foundation.
-*
-* Alternatively, this software may be distributed under the terms of BSD
-* license.
-*
-* See README and COPYING for more details.
-*
-****************************************************************************/
-/**
-*
-* @file Crc8.c
-*
-* @brief This file contains the definition of the CRC-8 algorithim
-* used by SMBus
-*
-*
-*****************************************************************************/
-
-/* ---- Include Files ----------------------------------------------------- */
-
-#include "Config.h"
-
-#include "Crc8.h"
-
-#include "Log.h"
-
-/* ---- Public Variables -------------------------------------------------- */
-/* ---- Private Constants and Types --------------------------------------- */
-/* ---- Private Variables ------------------------------------------------- */
-/* ---- Private Function Prototypes --------------------------------------- */
-/* ---- Functions --------------------------------------------------------- */
-
-/****************************************************************************/
-/**
-* Calculates the CRC-8 used as part of SMBus.
-*
-* CRC-8 is defined to be x^8 + x^2 + x + 1
-*
-* To use this function use the following template:
-*
-* crc = Crc8( crc, data );
-*/
-
-#if 0 // Traditional implementation
-
-#define POLYNOMIAL (0x1070U << 3)
-
-unsigned char Crc8( unsigned char inCrc, unsigned char inData )
-{
- int i;
- unsigned short data;
-
- data = inCrc ^ inData;
- data <<= 8;
-
- for ( i = 0; i < 8; i++ )
- {
- if (( data & 0x8000 ) != 0 )
- {
- data = data ^ POLYNOMIAL;
- }
- data = data << 1;
- }
-
-#if 0
-#if defined( LogBuf2 )
- LogBuf2( "Crc8: data:0x%02x crc:0x%02x\n", inData, (unsigned char)( data >> 8 ));
-#else
-
- Log( "Crc8: data:0x%02x crc:0x%02x\n", inData, (unsigned char)( data >> 8 ));
-#endif
-
-#endif
-
-
- return (unsigned char)( data >> 8 );
-
-} // Crc8
-
-#else // Optimized for 8 bit CPUs (0x22 bytes on ATMega128 versus 0x30 for above version)
-
-unsigned char Crc8( unsigned char inCrc, unsigned char inData )
-{
- unsigned char i;
- unsigned char data;
-
- data = inCrc ^ inData;
-
- for ( i = 0; i < 8; i++ )
- {
- if (( data & 0x80 ) != 0 )
- {
- data <<= 1;
- data ^= 0x07;
- }
- else
- {
- data <<= 1;
- }
- }
-
-#if 0
-#if defined( LogBuf2 )
- LogBuf2( "Crc8: data:0x%02x crc:0x%02x\n", inData, data );
-#else
-
- Log( "Crc8: data:0x%02x crc:0x%02x\n", inData, data );
-#endif
-
-#endif
-
-
- return data;
-
-} // Crc8
-
-#endif
-
-
-#if defined( CFG_CRC8BLOCK )
-
-/****************************************************************************/
-/**
-* Calculates the CRC-8 used as part of SMBus over a block of memory.
-*/
-
-uint8_t Crc8Block( uint8_t crc, uint8_t *data, uint8_t len )
-{
- while ( len > 0 )
- {
- crc = Crc8( crc, *data++ );
- len--;
- }
-
- return crc;
-
-} // Crc8Block
-
-#endif // CFG_CRC8BLOCK
-
-/** @} */
-
-
diff --git a/packages/i2c/files/Crc8.h b/packages/i2c/files/Crc8.h
deleted file mode 100644
index 2d1f74b82c..0000000000
--- a/packages/i2c/files/Crc8.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/****************************************************************************
-*
-* Copyright (c) 2006 Dave Hylands <dhylands@gmail.com>
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License version 2 as
-* published by the Free Software Foundation.
-*
-* Alternatively, this software may be distributed under the terms of BSD
-* license.
-*
-* See README and COPYING for more details.
-*
-****************************************************************************/
-/**
-*
-* @file Crc8.h
-*
-* @brief This file contains the definition of the CRC-8 algorithim
-* used by SMBus
-*
-****************************************************************************/
-
-#if !defined( CRC8_H )
-#define CRC_H ///< Include Guard
-
-/* ---- Include Files ----------------------------------------------------- */
-
-#include <inttypes.h>
-
-#if defined( __cplusplus )
-extern "C"
-{
-#endif
-
-
-/* ---- Constants and Types ---------------------------------------------- */
-/* ---- Variable Externs ------------------------------------------------- */
-/* ---- Function Prototypes ---------------------------------------------- */
-
-uint8_t Crc8( uint8_t crc, uint8_t data );
-
-uint8_t Crc8Block( uint8_t crc, uint8_t *data, uint8_t len );
-
-
-#if defined( __cplusplus )
-}
-#endif
-
-
-/** @} */
-
-#endif // CRC8_H
-
diff --git a/packages/i2c/files/DumpMem.c b/packages/i2c/files/DumpMem.c
deleted file mode 100644
index e13e94b0f8..0000000000
--- a/packages/i2c/files/DumpMem.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/****************************************************************************
-*
-* Copyright (c) 2006 Dave Hylands <dhylands@gmail.com>
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License version 2 as
-* published by the Free Software Foundation.
-*
-* Alternatively, this software may be distributed under the terms of BSD
-* license.
-*
-* See README and COPYING for more details.
-*
-****************************************************************************/
-/**
-*
-* @file DumpMem.c
-*
-* @brief Memmory dump routine
-*
-****************************************************************************/
-
-// ---- Include Files -------------------------------------------------------
-
-#include <inttypes.h>
-#include "DumpMem.h"
-#include "Log.h"
-
-// ---- Public Variables ----------------------------------------------------
-// ---- Private Constants and Types -----------------------------------------
-// ---- Private Variables ---------------------------------------------------
-// ---- Private Function Prototypes -----------------------------------------
-// ---- Functions -----------------------------------------------------------
-
-/**************************************************************************/
-/**
-* Dumps a page of output for debugging purposes.
-*/
-
-void DumpMem( const char *prefix, unsigned address, const void *inData, unsigned numBytes )
-{
- const uint8_t *data = (const uint8_t *)inData;
- unsigned byteOffset;
-
- if ( numBytes == 0 )
- {
- Log( "%s: No data\n", prefix );
- return;
- }
-
-#define LINE_WIDTH 16
-
- for ( byteOffset = 0; byteOffset < numBytes; byteOffset += LINE_WIDTH )
- {
- unsigned i;
-
- Log( "%s: %04x: ", prefix, address + byteOffset );
-
- for ( i = 0; i < LINE_WIDTH; i++ )
- {
- if (( byteOffset + i ) < numBytes )
- {
- Log( "%02.2X ", data[ byteOffset + i ] );
- }
- else
- {
- Log( " " );
- }
- }
- for ( i = 0; i < LINE_WIDTH; i++ )
- {
- if (( byteOffset + i ) < numBytes )
- {
- unsigned char ch = data[ byteOffset + i ];
- if (( ch < ' ' ) || ( ch > '~' ))
- {
- Log( "." );
- }
- else
- {
- Log( "%c", ch );
- }
- }
- else
- {
- break;
- }
- }
- Log( "\n" );
- }
-
-} // DumpMem
-
diff --git a/packages/i2c/files/DumpMem.h b/packages/i2c/files/DumpMem.h
deleted file mode 100644
index 5d536f49e8..0000000000
--- a/packages/i2c/files/DumpMem.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/****************************************************************************
-*
-* Copyright (c) 2006 Dave Hylands <dhylands@gmail.com>
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License version 2 as
-* published by the Free Software Foundation.
-*
-* Alternatively, this software may be distributed under the terms of BSD
-* license.
-*
-* See README and COPYING for more details.
-*
-****************************************************************************/
-/**
-*
-* @file DumpMem.h
-*
-* @brief Debug routine for dumping memory
-*
-****************************************************************************/
-
-#if !defined( DUMPMEM_H )
-#define DUMPMEM_H ///< Include Guard
-
-// ---- Include Files -------------------------------------------------------
-
-/**
- * @addtogroup Log
- * @{
- */
-
-#if defined( __cplusplus )
-extern "C"
-{
-#endif
-
-
-void DumpMem( const char *prefix, unsigned address, const void *data, unsigned numBytes );
-
-#if defined( __cplusplus )
-}
-#endif
-
-
-/** @} */
-
-#endif // DUMPMEM_H
-
diff --git a/packages/i2c/files/Log.c b/packages/i2c/files/Log.c
deleted file mode 100644
index e32783391b..0000000000
--- a/packages/i2c/files/Log.c
+++ /dev/null
@@ -1,335 +0,0 @@
-/****************************************************************************
-*
-* Copyright (c) 2006 Dave Hylands <dhylands@gmail.com>
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License version 2 as
-* published by the Free Software Foundation.
-*
-* Alternatively, this software may be distributed under the terms of BSD
-* license.
-*
-* See README and COPYING for more details.
-*
-****************************************************************************/
-/**
-*
-* @file Log.cpp
-*
-* @brief This file contains the implementation of the logging functions.
-*
-****************************************************************************/
-
-// ---- Include Files -------------------------------------------------------
-
-#include "Log.h"
-
-#if CFG_LOG_USE_STDIO
-# include <stdio.h>
-#else
-
-# include "Str.h"
-# include "UART.h"
-#endif
-
-
-// ---- Public Variables ----------------------------------------------------
-// ---- Private Constants and Types -----------------------------------------
-
-#if defined( AVR )
-
-#undef Log
-#undef LogError
-#undef vLog
-
-#define Log Log_P
-#define LogError LogError_P
-#define vLog vLog_P
-#define LogBuf LogBuf_P
-
-#define char prog_char
-
-#else
-
-
-#define PSTR(str) str
-
-int gVerbose = 0;
-int gDebug = 0;
-int gQuiet = 0;
-
-#endif
-
-
-#if CFG_LOG_TO_BUFFER
-
-volatile LOG_Buffer_t LOG_gBuffer;
-
-#endif
-
-
-// ---- Private Variables ---------------------------------------------------
-
-#if CFG_LOG_USE_STDIO
-
-FILE *gLogFs = NULL;
-
-#endif
-
-
-// ---- Private Function Prototypes -----------------------------------------
-
-// ---- Functions -----------------------------------------------------------
-
-/**
- * @addtogroup Log
- * @{
- */
-
-#if !defined( AVR )
-
-void DefaultLogFunc( int logLevel, const char *fmt, va_list args )
-{
- FILE *fs;
-
- if ( gQuiet && ( logLevel == LOG_LEVEL_NORMAL ))
- {
- return;
- }
-
- if ( gLogFs == NULL )
- {
- fs = stderr;
- }
- else
- {
- fs = gLogFs;
- }
-
- if ( logLevel == LOG_LEVEL_ERROR )
- {
- fprintf( fs, "ERROR: " );
- }
- vfprintf( fs, fmt, args );
- fflush( fs );
-
-} // DefaultLogFunc
-
-static LogFunc_t gLogFunc = DefaultLogFunc;
-
-void SetLogFunc( LogFunc_t logFunc )
-{
-
- gLogFunc = logFunc;
-
-} // SetLogFunc
-
-#endif
-
-
-//***************************************************************************
-/**
-* Sets the logging stream
-*/
-
-#if CFG_LOG_USE_STDIO
-void LogInit( FILE *logFs )
-{
- gLogFs = logFs;
-
-} // LogInit
-
-#else
-
-
-static int LogToUartFunc( void *outParm, int ch )
-{
- UART0_PutChar( ch );
-
- return 1;
-}
-#endif
-
-
-//***************************************************************************
-/**
-* Logs a string using printf like semantics
-*/
-
-void Log
-(
- const char *fmt, ///< printf style format specifier
- ... ///< variable list of arguments
-)
-{
- va_list args;
-
- va_start( args, fmt );
- vLog( fmt, args );
- va_end( args );
-}
-
-//***************************************************************************
-/**
-* Logs a string using printf like semantics
-*/
-
-void vLog
-(
- const char *fmt, ///< printf style format specified
- va_list args ///< variable list of arguments
-)
-{
- // For now we call printf directly. A better way would be to install
- // a callback which does the real work
-
-#if defined( AVR )
-# if CFG_LOG_USE_STDIO
- if ( gLogFs != NULL )
- {
- vfprintf_P( gLogFs, fmt, args );
- }
-# else
-
- vStrXPrintf_P( LogToUartFunc, NULL, fmt, args );
-# endif
-
-#else
-
- if ( gLogFunc != NULL )
- {
- gLogFunc( LOG_LEVEL_NORMAL, fmt, args );
- }
-#endif
-
-}
-
-#if !defined( AVR )
-
-//***************************************************************************
-/**
-* Logs an error.
-*/
-
-void vLogError
-(
- const char *fmt, ///< printf style format specified
- va_list args ///< variable list of arguments
-)
-{
- if ( gLogFunc != NULL )
- {
- gLogFunc( LOG_LEVEL_ERROR, fmt, args );
- }
-}
-
-#endif
-
-
-/***************************************************************************/
-/**
-* Logs an error
-*/
-
-void LogError
-(
- const char *fmt, ///< printf style format specifier
- ... ///< variable list of arguments
-)
-{
- va_list args;
-
-#if defined( AVR )
- //Log( "ERROR: " );
- //Log_P( PSTR( "ERROR: " ));
-
- va_start( args, fmt );
- vLog( fmt, args );
- va_end( args );
-#else
-
- va_start( args, fmt );
- vLogError( fmt, args );
- va_end( args );
-#endif
-
-
-} // LogError
-
-/***************************************************************************/
-/**
-* Logs an entry to the log buffer
-*/
-
-#if CFG_LOG_TO_BUFFER
-
-void LogBuf( const char *fmt, uint8_t arg1, uint8_t arg2 LOG_EXTRA_PARAMS_DECL )
-{
-#if defined( AVR )
- uint8_t sreg = SREG;
- cli();
-#endif
-
-
- if ( CBUF_IsFull( LOG_gBuffer ))
- {
- volatile LOG_Entry_t *entry = CBUF_GetLastEntryPtr( LOG_gBuffer );
-
- entry->fmt = PSTR( "*** Lost Messages ***\n" );
- }
- else
- {
- volatile LOG_Entry_t *entry = CBUF_GetPushEntryPtr( LOG_gBuffer );
-
- entry->fmt = fmt;
- entry->param1 = arg1;
- entry->param2 = arg2;
-
-#if CFG_LOG_EXTRA_PARAMS
- entry->param3 = arg3;
- entry->param4 = arg4;
-#endif
-
-
- CBUF_AdvancePushIdx( LOG_gBuffer );
- }
-
-#if defined( AVR )
- SREG = sreg;
-#endif
-
-
-} // LogBuf
-
-#endif // CFG_LOG_TO_BUFFER
-
-/***************************************************************************/
-/**
-* Dumps any unlogged entries from the log buffer
-*/
-
-#if CFG_LOG_TO_BUFFER
-
-void LogBufDump( void )
-{
- while ( !CBUF_IsEmpty( LOG_gBuffer ))
- {
- volatile LOG_Entry_t *entry = CBUF_GetPopEntryPtr( LOG_gBuffer );
-
-#if CFG_LOG_EXTRA_PARAMS
- Log( entry->fmt, entry->param1, entry->param2, entry->param3, entry->param4 );
-#else
-
- Log( entry->fmt, entry->param1, entry->param2 );
-#endif
-
-
- CBUF_AdvancePopIdx( LOG_gBuffer );
- }
-
-} // LogBufDump
-
-#endif // CFG_LOG_TO_BUFFER
-
-/** @} */
-
diff --git a/packages/i2c/files/Log.h b/packages/i2c/files/Log.h
deleted file mode 100644
index d12d482fc6..0000000000
--- a/packages/i2c/files/Log.h
+++ /dev/null
@@ -1,232 +0,0 @@
-/****************************************************************************
-*
-* Copyright (c) 2006 Dave Hylands <dhylands@gmail.com>
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License version 2 as
-* published by the Free Software Foundation.
-*
-* Alternatively, this software may be distributed under the terms of BSD
-* license.
-*
-* See README and COPYING for more details.
-*
-****************************************************************************/
-/**
-*
-* @file Log.h
-*
-* @brief Contains some logging macros.
-*
-****************************************************************************/
-/**
-* @defgroup Log Logging
-*
-* @brief Provides a common interface for logging.
-*
-****************************************************************************/
-
-#if !defined( LOG_H )
-#define LOG_H ///< Include Guard
-
-// ---- Include Files -------------------------------------------------------
-
-#include <stdarg.h>
-#include <stdio.h>
-
-#if !defined( CONFIG_H )
-# include "Config.h"
-#endif
-
-#if !defined( CFG_LOG_USE_STDIO )
-# define CFG_LOG_USE_STDIO 1
-#endif
-
-
-#if defined( AVR )
-# include <avr/pgmspace.h>
-# include <avr/interrupt.h>
-#endif
-
-
-#if CFG_LOG_TO_BUFFER
-# if !defined( CBUF_H )
-# include "CBUF.h"
-# endif
-
-#endif
-
-
-
-/**
- * @addtogroup Log
- * @{
- */
-
-#if !defined( CFG_LOG_ENABLED )
-# define CFG_LOG_ENABLED 1
-#endif
-
-
-#if !CFG_LOG_ENABLED
-
-#define Log( fmt, args... )
-#define LogError( fmt, args... )
-
-#else
-
-
-#if defined( __cplusplus )
-extern "C"
-{
-#endif
-
-
-/***************************************************************************
-*
-* Log Buffer support
-*/
-
-#if CFG_LOG_TO_BUFFER
-
-#if defined( AVR )
-
-typedef struct
-{
- const prog_char *fmt;
- uint8_t param1;
- uint8_t param2;
-#if CFG_LOG_EXTRA_PARAMS
- uint8_t param3;
- uint8_t param4;
-#endif
-
-
-} LOG_Entry_t;
-
-#if CFG_LOG_EXTRA_PARAMS
-# define LOG_EXTRA_PARAMS_DECL , uint8_t arg3, uint8_t arg4
-# define LOG_EXTRA_PARAMS , 0, 0
-#else
-
-# define LOG_EXTRA_PARAMS_DECL
-# define LOG_EXTRA_PARAMS
-#endif
-
-
-void LogBuf_P( const prog_char *fmt, uint8_t arg1, uint8_t arg2 LOG_EXTRA_PARAMS_DECL );
-
-#define LogBuf0( fmt ) LogBuf_P( PSTR( fmt ), 0, 0 LOG_EXTRA_PARAMS )
-#define LogBuf1( fmt, arg1 ) LogBuf_P( PSTR( fmt ), arg1, 0 LOG_EXTRA_PARAMS )
-#define LogBuf2( fmt, arg1, arg2 ) LogBuf_P( PSTR( fmt ), arg1, arg2 LOG_EXTRA_PARAMS )
-
-#if CFG_LOG_EXTRA_PARAMS
-#define LogBuf3( fmt, arg1, arg2, arg3 ) LogBuf_P( PSTR( fmt ), arg1, arg2, arg3, 0 )
-#define LogBuf4( fmt, arg1, arg2, arg3, arg4 ) LogBuf_P( PSTR( fmt ), arg1, arg2, arg3, arg4 )
-#endif
-
-
-#else
-
-
-typedef struct
-{
- const char *fmt;
- uint8_t param1;
- uint8_t param2;
-
-} LOG_Entry_t;
-
-void LogBuf( const char *fmt, uint8_t arg1, uint8_t arg2 );
-
-#define LogBuf0( fmt, arg1 ) LogBuf( fmt, 0, 0 )
-#define LogBuf1( fmt, arg1 ) LogBuf( fmt, arg1, 0 )
-#define LogBuf2( fmt, arg1, arg2 ) LogBuf( fmt, arg1, arg2 )
-
-#endif // AVR
-
-#if ( CFG_LOG_NUM_BUFFER_ENTRIES > 128 )
-typedef uint16_t LOG_BufferIdx_t;
-#else
-
-typedef uint8_t LOG_BufferIdx_t;
-#endif
-
-
-typedef struct
-{
- LOG_BufferIdx_t m_getIdx;
- LOG_BufferIdx_t m_putIdx;
- LOG_Entry_t m_entry[ CFG_LOG_NUM_BUFFER_ENTRIES ];
-
-} LOG_Buffer_t;
-
-extern volatile LOG_Buffer_t LOG_gBuffer;
-
-#define LOG_gBuffer_SIZE ( sizeof( LOG_gBuffer.m_entry ) / sizeof( LOG_gBuffer.m_entry[ 0 ] ))
-
-void LogBufDump( void );
-
-#endif // CFG_LOG_TO_BUFFER
-
-/***************************************************************************
-*
-* Regular logging support
-*/
-
-#if CFG_LOG_USE_STDIO
-extern FILE *gLogFs;
-
-void LogInit( FILE *logFs );
-#endif
-
-
-#if defined( AVR )
-
-void Log_P( const prog_char *fmt, ... );
-void LogError_P( const prog_char *fmt, ... );
-void vLog_P( const prog_char *fmt, va_list args );
-
-#define Log( fmt, args... ) Log_P( PSTR( fmt ), ## args )
-#define LogError( fmt, args... ) LogError_P( PSTR( fmt ), ## args )
-#define vLog( fmt, va_list, args ) vLog_P( PSTR( fmt ), args )
-
-#else // AVR
-
-#define LOG_LEVEL_NORMAL 0
-#define LOG_LEVEL_ERROR 1
-
-typedef void (*LogFunc_t)( int logLevel, const char *fmt, va_list args );
-
-extern int gVerbose;
-extern int gDebug;
-extern int gQuiet;
-
-void Log( const char *fmt, ... );
-void LogError( const char *fmt, ... );
-void vLog( const char *fmt, va_list args );
-void vLogError( const char *fmt, va_list args );
-
-#define Log_P( fmt, args... ) Log( fmt, ## args )
-#define LogError_P( fmt, args... ) LogError( fmt, ## args )
-#define vLog_P( fmt, args ) vLog( fmt, args )
-
-#define LogDebug( fmt, args... ) do { if ( gDebug ) { Log( fmt, ## args ); }} while (0)
-#define LogVerbose( fmt, args... ) do { if ( gVerbose ) { Log( fmt, ## args ); }} while (0)
-
-void SetLogFunc( LogFunc_t logFunc );
-void DefaultLogFunc( int logLevel, const char *fmt, va_list args );
-
-#endif // AVR
-
-#if defined( __cplusplus )
-}
-#endif
-
-
-#endif // CFG_LOG_ENABLED
-
-/** @} */
-
-#endif // LOG_H
-
diff --git a/packages/i2c/files/i2c-api.c b/packages/i2c/files/i2c-api.c
deleted file mode 100644
index cfc41565a4..0000000000
--- a/packages/i2c/files/i2c-api.c
+++ /dev/null
@@ -1,522 +0,0 @@
-/****************************************************************************
-*
-* Copyright (c) 2006 Dave Hylands <dhylands@gmail.com>
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License version 2 as
-* published by the Free Software Foundation.
-*
-* Alternatively, this software may be distributed under the terms of BSD
-* license.
-*
-* See README and COPYING for more details.
-*
-****************************************************************************/
-/**
-*
-* @file i2c-api.c
-*
-* @brief This file contains the implementation for performing I2C operations
-* on the gumstix.
-*
-****************************************************************************/
-
-// ---- Include Files -------------------------------------------------------
-
-#include <string.h>
-#include <errno.h>
-
-#include "i2c.h"
-#include "i2c-dev.h"
-#include "i2c-api.h"
-
-#include "Crc8.h"
-#include "DumpMem.h"
-#include "Log.h"
-
-// ---- Public Variables ----------------------------------------------------
-
-// ---- Private Constants and Types -----------------------------------------
-
-// ---- Private Variables ---------------------------------------------------
-
-static I2C_Addr_t gI2cAddr;
-static int gUseCrc;
-
-// ---- Private Function Prototypes -----------------------------------------
-
-// ---- Functions -----------------------------------------------------------
-
-//***************************************************************************
-/**
-*
-* Sets the I2C address that we'll be communicating with, as well as whether
-* the device uses smbus PEC (CRC).
-*/
-
-void I2cSetSlaveAddress( int i2cDev, I2C_Addr_t i2cAddr, int useCrc )
-{
- gI2cAddr = i2cAddr;
- gUseCrc = useCrc;
-
- LogDebug( "----- I2cSetSlaveAddress i2cAddr:0x%02x useCrc:%d -----\n",
- i2cAddr, useCrc );
-
- // Indicate which slave we wish to speak to
-
- if ( ioctl( i2cDev, I2C_SLAVE, gI2cAddr ) < 0 )
- {
- LogError( "I2cSetSlaveAddress: Error trying to set slave address to 0x%02x (%d %s)\n",
- gI2cAddr, errno, strerror( errno ));
- }
-
- // We do the CRC calculation ourself, so we don't need to tell the driver
- // that we're using it.
-
-#if 0
- // Indicate that we use PEC (aka CRCs)
-
- if ( ioctl( i2cDev, I2C_PEC, 1 ) < 0 )
- {
- LogError( "I2cSetSlaveAddress: Error trying to set PEC mode\n" );
- }
-#endif
-
-} // I2cSetSlaveAddress
-
-//***************************************************************************
-/**
-* Transfer data to/from an i2c device.
-*
-* This function implements the equivalent of the smbus functions using
-* I2C_RDWR.
-*
-* The PXA driver doesn't support the smbus transfers.
-*
-* This function can perform the following SMBUS transactions:
-*
-* Write Byte: wrLen == 1, rdLen == 0
-* Read Byte: wrLen == 0, rdLen == 1
-* Write Word: wrLen == 2, rdLen == 0
-* Read Word: wrLen == 0, rdLen == 2
-* Process Call: wrLen == 2, rdLen == 2
-* Write Block: wrLen == 0x80 + numBytes, rdLen == 0
-* Read Block: wrLen == 0, rdLen == 0x80 + numBytes
-* Process Block: wrLen == 0x80 + numBytes, rdLen == 0x80 + numBytes
-*/
-
-int I2cTransfer
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- const void *wrData, ///< Data to write
- uint8_t wrLen, ///< Number of bytes to write (or in 0x80 for a block write)
- void *rdData, ///< Place to store data read
- uint8_t rdLen, ///< Number of bytes to read (or in 0x80 for a block read)
- uint8_t *bytesReadp ///< Place to store number of bytes read
-)
-{
- struct i2c_rdwr_ioctl_data rdwr;
- struct i2c_msg msg[ 2 ];
- uint8_t wrBuf[ I2C_MAX_DATA_LEN + 3 ]; // +1 for cmd, +1 for len, +1 for CRC
- uint8_t rdBuf[ I2C_MAX_DATA_LEN + 2 ]; // +1 for len, +1 for CRC
- uint8_t crc = 0;
- uint8_t wrBlock = (( wrLen & 0x80 ) != 0 );
- uint8_t rdBlock = (( rdLen & 0x80 ) != 0 );
- int rc = 0;
-
- LogDebug( "----- I2cTransfer: cmd:0x%02x wrLen:0x%02x rdLen:0x%02x wrBlock:%d rdBlock:%d -----\n",
- cmd, wrLen, rdLen, wrBlock, rdBlock );
- if ( wrData != NULL )
- {
- LogDebug( "----- wrData:0x%08x *wrData:0x%02x -----\n", wrData, *(const uint8_t *)wrData );
- }
-
- rdLen &= 0x7f;
- wrLen &= 0x7f;
-
- if ( bytesReadp != NULL )
- {
- *bytesReadp = 0;
- }
-
- if ( wrLen > I2C_MAX_DATA_LEN )
- {
- LogError( "I2cTransfer: wrLen too big: %d, max is %d\n",
- wrLen, I2C_MAX_DATA_LEN );
- errno = ENOBUFS;
- return -1;
- }
-
- if ( rdLen > I2C_MAX_DATA_LEN )
- {
- LogError( "I2cTransfer: rdLen too big: %d, max is %d\n",
- rdLen, I2C_MAX_DATA_LEN );
- errno = ENOBUFS;
- return -1;
- }
-
- // Whether we're doing a read or a write, we always send
- // the command.
-
- msg[ 0 ].addr = gI2cAddr;
- msg[ 0 ].flags = 0;
- msg[ 0 ].len = wrLen + 1 + wrBlock; // +1 for cmd
- msg[ 0 ].buf = (char *)&wrBuf[ 0 ];
-
- if ( gUseCrc )
- {
- crc = Crc8( 0, gI2cAddr << 1 );
- crc = Crc8( crc, cmd );
- }
-
- wrBuf[ 0 ] = cmd;
-
- if ( wrLen > 0 )
- {
- // We have some data to send down to the device
-
- if ( wrBlock )
- {
- wrBuf[ 1 ] = wrLen;
- memcpy( &wrBuf[ 2 ], wrData, wrLen );
- wrLen++; // Add in cmd to the length
- }
- else
- {
- memcpy( &wrBuf[ 1 ], wrData, wrLen );
- }
- if ( gUseCrc )
- {
- crc = Crc8Block( crc, &wrBuf[ 1 ], wrLen );
-
- if ( rdLen == 0 )
- {
- // This is a write-only, so we need to send the CRC
-
- wrBuf[ wrLen + 1 ] = crc;
- msg[ 0 ].len++;
- }
- }
- }
-
- if ( gDebug )
- {
- Log( "msg[ 0 ].addr = 0x%02x\n", msg[ 0 ].addr );
- Log( "msg[ 0 ].flags = 0x%04x\n", msg[ 0 ].flags );
- Log( "msg[ 0 ].len = %d\n", msg[ 0 ].len );
- DumpMem( "I2cTransfer W", 0, &wrBuf[ 0 ], msg[ 0 ].len );
- }
-
- rdwr.msgs = msg;
- rdwr.nmsgs = 1;
-
- if ( rdLen > 0 )
- {
- // We're expecting some data to come back
-
- msg[ 1 ].addr = gI2cAddr;
- msg[ 1 ].flags = I2C_M_RD;
- msg[ 1 ].len = rdLen + rdBlock + gUseCrc;
- msg[ 1 ].buf = (char *)&rdBuf[ 0 ];
-
- rdwr.nmsgs = 2;
-
- if ( gUseCrc )
- {
- crc = Crc8( crc, ( gI2cAddr << 1 ) | 1 );
- }
-
- if ( gDebug )
- {
- Log( "msg[ 1 ].addr = 0x%02x\n", msg[ 1 ].addr );
- Log( "msg[ 1 ].flags = 0x%04x\n", msg[ 1 ].flags );
- Log( "msg[ 1 ].len = %d\n", msg[ 1 ].len );
- }
- }
-
- if ( ioctl( i2cDev, I2C_RDWR, &rdwr ) < 0 )
- {
- LogError( "I2cTransfer: ioctl failed: %s (%d)\n", strerror( errno ), errno );
- return -1;
- }
-
- if ( rdLen > 0 )
- {
- if ( rdBlock )
- {
- if ( rdBuf[ 0 ] > rdLen )
- {
- LogError( "I2cTransfer: length is too big: %d max: %d\n", rdBuf[ 0 ], rdLen );
-
- rc = EMSGSIZE;
- }
- else
- {
- rdLen = rdBuf[ 0 ];
- }
- }
-
- if ( gUseCrc )
- {
- crc = Crc8Block( crc, &rdBuf[ 0 ], rdLen + rdBlock );
-
- if ( crc != rdBuf[ rdLen + rdBlock ] )
- {
- LogError( "I2cTransfer: CRC failed: Rcvd: 0x%02x, expecting: 0x%02x\n",
- rdBuf[ rdLen + rdBlock ], crc );
- rc = EBADMSG;
- }
- }
-
- if ( gDebug )
- {
- DumpMem( "I2cTransfer R", 0, &rdBuf[ 0 ], msg[ 1 ].len );
- }
- memcpy( rdData, &rdBuf[ rdBlock ], rdLen );
-
- if ( bytesReadp != NULL )
- {
- *bytesReadp = rdLen;
- }
- }
- return rc;
-
-} // I2cTransfer
-
-//***************************************************************************
-/**
-* Uses the SMBUS Process-Block protocol to read data from a device.
-*/
-
-int I2cProcessBlock
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- const void *wrData, ///< Data to write
- uint8_t wrLen, ///< Number of bytes to write
- void *rdData, ///< Place to store data read
- uint8_t rdLen, ///< Number of bytes to read
- uint8_t *bytesReadp ///< Place to store number of bytes read
-)
-{
- LogDebug( "----- I2cProcessBlock cmd: 0x%02x wrLen:0x%02x rdLen:0x%02x -----\n", cmd, wrLen, rdLen );
-
- return I2cTransfer( i2cDev, cmd, wrData, 0x80 | wrLen, rdData, 0x80 | rdLen, bytesReadp );
-
-} // I2cProcessBlock
-
-//***************************************************************************
-/**
-* Uses the SMBUS Read-Block protocol to read data from a device.
-*/
-
-int I2cReadBlock
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- void *rdData, ///< Place to store data read
- uint8_t rdLen, ///< Number of bytes to read
- uint8_t *bytesReadp ///< Place to store number of bytes read
-)
-{
- LogDebug( "----- I2cReadBlock cmd: 0x%02x rdLen:0x%02x -----\n", cmd, rdLen );
-
- return I2cTransfer( i2cDev, cmd, NULL, 0, rdData, 0x80 | rdLen, bytesReadp );
-
-} // I2cReadBlock
-
-//***************************************************************************
-/**
-* Uses the SMBUS Read-Byte protocol to read a byte.
-*/
-
-int I2cReadByte
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- uint8_t *rdByte ///< Place to store byte read
-)
-{
- LogDebug( "----- I2cReadByte cmd: 0x%02x -----\n", cmd );
-
- return I2cTransfer( i2cDev, cmd, NULL, 0, rdByte, 1, NULL );
-
-} // I2cReadByte
-
-//***************************************************************************
-/**
-* Reads an array of bytes usinng i2c (not compatible with SMBUS)
-*/
-
-int I2cReadBytes
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- void *rdByte, ///< Place to store bytes read
- uint8_t rdLen ///< Number of bytes to read
-)
-{
- LogDebug( "----- I2cReadBytes cmd: 0x%02x rdLen: 0x%02x -----\n", cmd, rdLen );
-
- return I2cTransfer( i2cDev, cmd, NULL, 0, rdByte, rdLen, NULL );
-
-} // I2cReadBytes
-
-//***************************************************************************
-/**
-* Uses the SMBUS Write-Block protocol to write data from a device.
-*/
-
-int I2cWriteBlock
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- const void *wrData, ///< Data to write
- uint8_t wrLen ///< Number of bytes to write
-)
-{
- LogDebug( "----- I2cWriteBlock cmd: 0x%02x wrLen:0x%02x -----\n", cmd, wrLen );
-
- return I2cTransfer( i2cDev, cmd, wrData, 0x80 | wrLen, NULL, 0, NULL );
-
-} // I2cWriteBlock
-
-//***************************************************************************
-/**
-* Uses the SMBUS Write-Byte protocol to write a byte.
-*/
-
-int I2cWriteByte
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- uint8_t wrByte ///< Byte to write
-)
-{
- LogDebug( "----- I2cWriteByte cmd: 0x%02x wrByte:0x%02x -----\n", cmd, wrByte );
- LogDebug( "----- &wrByte = 0x%08x wrByte = 0x%02x -----\n", &wrByte, *&wrByte );
-
- return I2cTransfer( i2cDev, cmd, &wrByte, 1, NULL, 0, NULL );
-
-} // I2cWriteByte
-
-//***************************************************************************
-/**
-* Writes an array of bytes using i2c (not compatible with SMBUS)
-*/
-
-int I2cWriteBytes
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- const void *wrByte, ///< Bytes to write
- uint8_t wrLen ///< Number of bytes to write
-)
-{
- LogDebug( "----- I2cWriteBytes cmd: 0x%02x wrLen: 0x%02x -----\n", cmd, wrLen );
-
- return I2cTransfer( i2cDev, cmd, wrByte, wrLen, NULL, 0, NULL );
-
-} // I2cWriteBytes
-
-//***************************************************************************
-/**
-* Uses the SMBUS Receive-Byte protocol to read a byte.
-*/
-
-int I2cReceiveByte
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t *rdByte ///< Place to store byte read
-)
-{
- return I2cReceiveBytes( i2cDev, rdByte, 1 );
-
-} // I2cReceiveByte
-
-//***************************************************************************
-/**
-* Uses the SMBUS Receive-Byte protocol to read multiple (or one or zero) bytes.
-*/
-
-int I2cReceiveBytes
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t *rdData, ///< Place to store data read
- uint8_t rdLen ///< Number of bytes to read
-)
-{
- struct i2c_rdwr_ioctl_data rdwr;
- struct i2c_msg msg;
-
- LogDebug( "----- I2cReceiveBytes -----\n" );
-
- msg.addr = gI2cAddr;
- msg.flags = I2C_M_RD;
- msg.len = rdLen;
- msg.buf = (char *)rdData;
-
- rdwr.msgs = &msg;
- rdwr.nmsgs = 1;
-
- if ( ioctl( i2cDev, I2C_RDWR, &rdwr ) < 0 )
- {
- LogError( "I2cReceiveBytes: ioctl failed: %s (%d)\n", strerror( errno ), errno );
- return -1;
- }
-
- return 0;
-
-} // I2cReceiveBytes
-
-//***************************************************************************
-/**
-* Uses the SMBUS Send-Byte protocol to write a byte.
-*/
-
-int I2cSendByte
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t wrByte ///< Byte to write
-)
-{
- return I2cSendBytes( i2cDev, &wrByte, 1 );
-
-} // I2cSendByte
-
-//***************************************************************************
-/**
-* Uses the SMBUS Send-Byte protocol to write multiple (or zero or one) bytes.
-*/
-
-int I2cSendBytes
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t *wrData, ///< Pointer to data to write
- uint8_t wrLen ///< NUmber of bytes to write
-)
-{
- struct i2c_rdwr_ioctl_data rdwr;
- struct i2c_msg msg;
-
- LogDebug( "----- I2cSendBytes wrLen = 0x%02x -----\n", wrLen );
-
- msg.addr = gI2cAddr;
- msg.flags = 0;
- msg.len = wrLen;
- msg.buf = (char *)wrData;
-
- rdwr.msgs = &msg;
- rdwr.nmsgs = 1;
-
- if ( ioctl( i2cDev, I2C_RDWR, &rdwr ) < 0 )
- {
- LogError( "I2cSendBytes: ioctl failed: %s (%d)\n", strerror( errno ), errno );
- return -1;
- }
-
- return 0;
-
-} // I2cSendBytes
-
diff --git a/packages/i2c/files/i2c-api.h b/packages/i2c/files/i2c-api.h
deleted file mode 100644
index 73f9f20990..0000000000
--- a/packages/i2c/files/i2c-api.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/****************************************************************************
-*
-* Copyright (c) 2006 Dave Hylands <dhylands@gmail.com>
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License version 2 as
-* published by the Free Software Foundation.
-*
-* Alternatively, this software may be distributed under the terms of BSD
-* license.
-*
-* See README and COPYING for more details.
-*
-****************************************************************************/
-/**
-*
-* @file i2c-api.h
-*
-* @brief This file contains definitions for performing i2c operations
-* on the gumstix.
-*
-****************************************************************************/
-
-#if !defined( I2C_API_H )
-#define I2C_API_H
-
-// ---- Include Files -------------------------------------------------------
-
-#include <inttypes.h>
-#include "i2c.h"
-
-// ---- Constants and Types -------------------------------------------------
-
-#define I2C_USE_CRC 1
-#define I2C_NO_CRC 0
-
-// ---- Variable Externs ----------------------------------------------------
-
-// ---- Function Prototypes -------------------------------------------------
-
-void I2cSetSlaveAddress
-(
- int i2cDev, ///< Handle to i2c-dev file
- I2C_Addr_t i2cAddr, ///< 7 bit i2c address to use
- int useCrc ); ///< Should CRC's be used?
-
-int I2cTransfer
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- const void *wrData, ///< Data to write
- uint8_t wrLen, ///< Number of bytes to write (or in 0x80 for a block write)
- void *rdData, ///< Place to store data read
- uint8_t rdLen, ///< Number of bytes to read (or in 0x80 for a block read)
- uint8_t *bytesReadp ///< Place to store number of bytes read
-);
-
-int I2cProcessBlock
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- const void *wrData, ///< Data to write
- uint8_t wrLen, ///< Number of bytes to write
- void *rdData, ///< Place to store data read
- uint8_t rdLen, ///< Number of bytes to read
- uint8_t *bytesReadp ///< Place to store number of bytes read
-);
-
-int I2cReadBlock
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- void *rdData, ///< Place to store data read
- uint8_t rdLen, ///< Number of bytes to read
- uint8_t *bytesReadp ///< Place to store number of bytes read
-);
-
-int I2cReadByte
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- uint8_t *rdByte ///< Place to store byte to read
-);
-
-int I2cReadBytes
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- void *rdByte, ///< Place to store bytes read
- uint8_t rdLen ///< Number of bytes to read
-);
-
-int I2cWriteBlock
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- const void *wrData, ///< Data to write
- uint8_t wrLen ///< Number of bytes to write
-);
-
-int I2cWriteByte
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- uint8_t wrByte ///< Byte to write
-);
-
-int I2cWriteBytes
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t cmd, ///< Command to send
- const void *wrByte, ///< Bytes to write
- uint8_t wrLen ///< Number of bytes to write
-);
-
-int I2cReceiveByte
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t *rdByte ///< Place to store byte read
-);
-
-int I2cReceiveBytes
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t *rdData, ///< Place to store byte read
- uint8_t rdLen ///< Number of bytes to read
-);
-
-int I2cSendByte
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t wrByte ///< Byte to write
-);
-
-int I2cSendBytes
-(
- int i2cDev, ///< Handle to i2c-dev file
- uint8_t *wrData, ///< Pointer to data to write.
- uint8_t wrLen ///< Number of bytes to write.
-);
-
-#endif // I2C_API_H
-
diff --git a/packages/i2c/files/i2c-dev.h b/packages/i2c/files/i2c-dev.h
deleted file mode 100644
index cd20965ede..0000000000
--- a/packages/i2c/files/i2c-dev.h
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- i2c-dev.h - i2c-bus driver, char device interface
-
- Copyright (C) 1995-97 Simon G. Vogl
- Copyright (C) 1998-99 Frodo Looijaard <frodol@dds.nl>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-/* $Id: i2c-dev.h,v 1.4 2003/11/27 23:08:06 tat Exp $ */
-
-#ifndef LIB_I2CDEV_H
-#define LIB_I2CDEV_H
-
-#include <linux/types.h>
-#include <sys/ioctl.h>
-
-
-/* -- i2c.h -- */
-
-
-/*
- * I2C Message - used for pure i2c transaction, also from /dev interface
- */
-struct i2c_msg {
- __u16 addr; /* slave address */
- unsigned short flags;
-#define I2C_M_TEN 0x10 /* we have a ten bit chip address */
-#define I2C_M_RD 0x01
-#define I2C_M_NOSTART 0x4000
-#define I2C_M_REV_DIR_ADDR 0x2000
-#define I2C_M_IGNORE_NAK 0x1000
-#define I2C_M_NO_RD_ACK 0x0800
- short len; /* msg length */
- char *buf; /* pointer to msg data */
-};
-
-/* To determine what functionality is present */
-
-#define I2C_FUNC_I2C 0x00000001
-#define I2C_FUNC_10BIT_ADDR 0x00000002
-#define I2C_FUNC_PROTOCOL_MANGLING 0x00000004 /* I2C_M_{REV_DIR_ADDR,NOSTART,..} */
-#define I2C_FUNC_SMBUS_HWPEC_CALC 0x00000008 /* SMBus 2.0 */
-#define I2C_FUNC_SMBUS_READ_WORD_DATA_PEC 0x00000800 /* SMBus 2.0 */
-#define I2C_FUNC_SMBUS_WRITE_WORD_DATA_PEC 0x00001000 /* SMBus 2.0 */
-#define I2C_FUNC_SMBUS_PROC_CALL_PEC 0x00002000 /* SMBus 2.0 */
-#define I2C_FUNC_SMBUS_BLOCK_PROC_CALL_PEC 0x00004000 /* SMBus 2.0 */
-#define I2C_FUNC_SMBUS_BLOCK_PROC_CALL 0x00008000 /* SMBus 2.0 */
-#define I2C_FUNC_SMBUS_QUICK 0x00010000
-#define I2C_FUNC_SMBUS_READ_BYTE 0x00020000
-#define I2C_FUNC_SMBUS_WRITE_BYTE 0x00040000
-#define I2C_FUNC_SMBUS_READ_BYTE_DATA 0x00080000
-#define I2C_FUNC_SMBUS_WRITE_BYTE_DATA 0x00100000
-#define I2C_FUNC_SMBUS_READ_WORD_DATA 0x00200000
-#define I2C_FUNC_SMBUS_WRITE_WORD_DATA 0x00400000
-#define I2C_FUNC_SMBUS_PROC_CALL 0x00800000
-#define I2C_FUNC_SMBUS_READ_BLOCK_DATA 0x01000000
-#define I2C_FUNC_SMBUS_WRITE_BLOCK_DATA 0x02000000
-#define I2C_FUNC_SMBUS_READ_I2C_BLOCK 0x04000000 /* I2C-like block xfer */
-#define I2C_FUNC_SMBUS_WRITE_I2C_BLOCK 0x08000000 /* w/ 1-byte reg. addr. */
-#define I2C_FUNC_SMBUS_READ_I2C_BLOCK_2 0x10000000 /* I2C-like block xfer */
-#define I2C_FUNC_SMBUS_WRITE_I2C_BLOCK_2 0x20000000 /* w/ 2-byte reg. addr. */
-#define I2C_FUNC_SMBUS_READ_BLOCK_DATA_PEC 0x40000000 /* SMBus 2.0 */
-#define I2C_FUNC_SMBUS_WRITE_BLOCK_DATA_PEC 0x80000000 /* SMBus 2.0 */
-
-#define I2C_FUNC_SMBUS_BYTE I2C_FUNC_SMBUS_READ_BYTE | \
- I2C_FUNC_SMBUS_WRITE_BYTE
-#define I2C_FUNC_SMBUS_BYTE_DATA I2C_FUNC_SMBUS_READ_BYTE_DATA | \
- I2C_FUNC_SMBUS_WRITE_BYTE_DATA
-#define I2C_FUNC_SMBUS_WORD_DATA I2C_FUNC_SMBUS_READ_WORD_DATA | \
- I2C_FUNC_SMBUS_WRITE_WORD_DATA
-#define I2C_FUNC_SMBUS_BLOCK_DATA I2C_FUNC_SMBUS_READ_BLOCK_DATA | \
- I2C_FUNC_SMBUS_WRITE_BLOCK_DATA
-#define I2C_FUNC_SMBUS_I2C_BLOCK I2C_FUNC_SMBUS_READ_I2C_BLOCK | \
- I2C_FUNC_SMBUS_WRITE_I2C_BLOCK
-#define I2C_FUNC_SMBUS_I2C_BLOCK_2 I2C_FUNC_SMBUS_READ_I2C_BLOCK_2 | \
- I2C_FUNC_SMBUS_WRITE_I2C_BLOCK_2
-#define I2C_FUNC_SMBUS_BLOCK_DATA_PEC I2C_FUNC_SMBUS_READ_BLOCK_DATA_PEC | \
- I2C_FUNC_SMBUS_WRITE_BLOCK_DATA_PEC
-#define I2C_FUNC_SMBUS_WORD_DATA_PEC I2C_FUNC_SMBUS_READ_WORD_DATA_PEC | \
- I2C_FUNC_SMBUS_WRITE_WORD_DATA_PEC
-
-#define I2C_FUNC_SMBUS_READ_BYTE_PEC I2C_FUNC_SMBUS_READ_BYTE_DATA
-#define I2C_FUNC_SMBUS_WRITE_BYTE_PEC I2C_FUNC_SMBUS_WRITE_BYTE_DATA
-#define I2C_FUNC_SMBUS_READ_BYTE_DATA_PEC I2C_FUNC_SMBUS_READ_WORD_DATA
-#define I2C_FUNC_SMBUS_WRITE_BYTE_DATA_PEC I2C_FUNC_SMBUS_WRITE_WORD_DATA
-#define I2C_FUNC_SMBUS_BYTE_PEC I2C_FUNC_SMBUS_BYTE_DATA
-#define I2C_FUNC_SMBUS_BYTE_DATA_PEC I2C_FUNC_SMBUS_WORD_DATA
-
-#define I2C_FUNC_SMBUS_EMUL I2C_FUNC_SMBUS_QUICK | \
- I2C_FUNC_SMBUS_BYTE | \
- I2C_FUNC_SMBUS_BYTE_DATA | \
- I2C_FUNC_SMBUS_WORD_DATA | \
- I2C_FUNC_SMBUS_PROC_CALL | \
- I2C_FUNC_SMBUS_WRITE_BLOCK_DATA | \
- I2C_FUNC_SMBUS_WRITE_BLOCK_DATA_PEC | \
- I2C_FUNC_SMBUS_I2C_BLOCK
-
-/*
- * Data for SMBus Messages
- */
-#define I2C_SMBUS_BLOCK_MAX 32 /* As specified in SMBus standard */
-#define I2C_SMBUS_I2C_BLOCK_MAX 32 /* Not specified but we use same structure */
-union i2c_smbus_data {
- __u8 byte;
- __u16 word;
- __u8 block[I2C_SMBUS_BLOCK_MAX + 3]; /* block[0] is used for length */
- /* one more for read length in block process call */
- /* and one more for PEC */
-};
-
-/* smbus_access read or write markers */
-#define I2C_SMBUS_READ 1
-#define I2C_SMBUS_WRITE 0
-
-/* SMBus transaction types (size parameter in the above functions)
- Note: these no longer correspond to the (arbitrary) PIIX4 internal codes! */
-#define I2C_SMBUS_QUICK 0
-#define I2C_SMBUS_BYTE 1
-#define I2C_SMBUS_BYTE_DATA 2
-#define I2C_SMBUS_WORD_DATA 3
-#define I2C_SMBUS_PROC_CALL 4
-#define I2C_SMBUS_BLOCK_DATA 5
-#define I2C_SMBUS_I2C_BLOCK_DATA 6
-#define I2C_SMBUS_BLOCK_PROC_CALL 7 /* SMBus 2.0 */
-#define I2C_SMBUS_BLOCK_DATA_PEC 8 /* SMBus 2.0 */
-#define I2C_SMBUS_PROC_CALL_PEC 9 /* SMBus 2.0 */
-#define I2C_SMBUS_BLOCK_PROC_CALL_PEC 10 /* SMBus 2.0 */
-#define I2C_SMBUS_WORD_DATA_PEC 11 /* SMBus 2.0 */
-
-
-/* ----- commands for the ioctl like i2c_command call:
- * note that additional calls are defined in the algorithm and hw
- * dependent layers - these can be listed here, or see the
- * corresponding header files.
- */
- /* -> bit-adapter specific ioctls */
-#define I2C_RETRIES 0x0701 /* number of times a device address */
- /* should be polled when not */
- /* acknowledging */
-#define I2C_TIMEOUT 0x0702 /* set timeout - call with int */
-
-
-/* this is for i2c-dev.c */
-#define I2C_SLAVE 0x0703 /* Change slave address */
- /* Attn.: Slave address is 7 or 10 bits */
-#define I2C_SLAVE_FORCE 0x0706 /* Change slave address */
- /* Attn.: Slave address is 7 or 10 bits */
- /* This changes the address, even if it */
- /* is already taken! */
-#define I2C_TENBIT 0x0704 /* 0 for 7 bit addrs, != 0 for 10 bit */
-
-#define I2C_FUNCS 0x0705 /* Get the adapter functionality */
-#define I2C_RDWR 0x0707 /* Combined R/W transfer (one stop only)*/
-#define I2C_PEC 0x0708 /* != 0 for SMBus PEC */
-#if 0
-#define I2C_ACK_TEST 0x0710 /* See if a slave is at a specific address */
-#endif
-
-#define I2C_SMBUS 0x0720 /* SMBus-level access */
-
-/* -- i2c.h -- */
-
-
-/* Note: 10-bit addresses are NOT supported! */
-
-/* This is the structure as used in the I2C_SMBUS ioctl call */
-struct i2c_smbus_ioctl_data {
- char read_write;
- __u8 command;
- int size;
- union i2c_smbus_data *data;
-};
-
-/* This is the structure as used in the I2C_RDWR ioctl call */
-struct i2c_rdwr_ioctl_data {
- struct i2c_msg *msgs; /* pointers to i2c_msgs */
- int nmsgs; /* number of i2c_msgs */
-};
-
-
-static inline __s32 i2c_smbus_access(int file, char read_write, __u8 command,
- int size, union i2c_smbus_data *data)
-{
- struct i2c_smbus_ioctl_data args;
- int rc;
-
- args.read_write = read_write;
- args.command = command;
- args.size = size;
- args.data = data;
-
- rc = ioctl(file,I2C_SMBUS,&args);
-
- return rc;
-}
-
-
-static inline __s32 i2c_smbus_write_quick(int file, __u8 value)
-{
- return i2c_smbus_access(file,value,0,I2C_SMBUS_QUICK,NULL);
-}
-
-static inline __s32 i2c_smbus_read_byte(int file)
-{
- union i2c_smbus_data data;
- if (i2c_smbus_access(file,I2C_SMBUS_READ,0,I2C_SMBUS_BYTE,&data))
- return -1;
- else
- return 0x0FF & data.byte;
-}
-
-static inline __s32 i2c_smbus_write_byte(int file, __u8 value)
-{
- return i2c_smbus_access(file,I2C_SMBUS_WRITE,value,
- I2C_SMBUS_BYTE,NULL);
-}
-
-static inline __s32 i2c_smbus_read_byte_data(int file, __u8 command)
-{
- union i2c_smbus_data data;
- if (i2c_smbus_access(file,I2C_SMBUS_READ,command,
- I2C_SMBUS_BYTE_DATA,&data))
- return -1;
- else
- return 0x0FF & data.byte;
-}
-
-static inline __s32 i2c_smbus_write_byte_data(int file, __u8 command,
- __u8 value)
-{
- union i2c_smbus_data data;
- data.byte = value;
- return i2c_smbus_access(file,I2C_SMBUS_WRITE,command,
- I2C_SMBUS_BYTE_DATA, &data);
-}
-
-static inline __s32 i2c_smbus_read_word_data(int file, __u8 command)
-{
- union i2c_smbus_data data;
- if (i2c_smbus_access(file,I2C_SMBUS_READ,command,
- I2C_SMBUS_WORD_DATA,&data))
- return -1;
- else
- return 0x0FFFF & data.word;
-}
-
-static inline __s32 i2c_smbus_write_word_data(int file, __u8 command,
- __u16 value)
-{
- union i2c_smbus_data data;
- data.word = value;
- return i2c_smbus_access(file,I2C_SMBUS_WRITE,command,
- I2C_SMBUS_WORD_DATA, &data);
-}
-
-static inline __s32 i2c_smbus_process_call(int file, __u8 command, __u16 value)
-{
- union i2c_smbus_data data;
- data.word = value;
- if (i2c_smbus_access(file,I2C_SMBUS_WRITE,command,
- I2C_SMBUS_PROC_CALL,&data))
- return -1;
- else
- return 0x0FFFF & data.word;
-}
-
-
-/* Returns the number of read bytes */
-static inline __s32 i2c_smbus_read_block_data(int file, __u8 command,
- __u8 *values)
-{
- union i2c_smbus_data data;
- int i;
- if (i2c_smbus_access(file,I2C_SMBUS_READ,command,
- I2C_SMBUS_BLOCK_DATA,&data))
- return -1;
- else {
- for (i = 1; i <= data.block[0]; i++)
- values[i-1] = data.block[i];
- return data.block[0];
- }
-}
-
-static inline __s32 i2c_smbus_write_block_data(int file, __u8 command,
- __u8 length, __u8 *values)
-{
- union i2c_smbus_data data;
- int i;
- if (length > 32)
- length = 32;
- for (i = 1; i <= length; i++)
- data.block[i] = values[i-1];
- data.block[0] = length;
- return i2c_smbus_access(file,I2C_SMBUS_WRITE,command,
- I2C_SMBUS_BLOCK_DATA, &data);
-}
-
-/* Returns the number of read bytes */
-static inline __s32 i2c_smbus_read_i2c_block_data(int file, __u8 command,
- __u8 *values)
-{
- union i2c_smbus_data data;
- int i;
- if (i2c_smbus_access(file,I2C_SMBUS_READ,command,
- I2C_SMBUS_I2C_BLOCK_DATA,&data))
- return -1;
- else {
- for (i = 1; i <= data.block[0]; i++)
- values[i-1] = data.block[i];
- return data.block[0];
- }
-}
-
-static inline __s32 i2c_smbus_write_i2c_block_data(int file, __u8 command,
- __u8 length, __u8 *values)
-{
- union i2c_smbus_data data;
- int i;
- if (length > 32)
- length = 32;
- for (i = 1; i <= length; i++)
- data.block[i] = values[i-1];
- data.block[0] = length;
- return i2c_smbus_access(file,I2C_SMBUS_WRITE,command,
- I2C_SMBUS_I2C_BLOCK_DATA, &data);
-}
-
-/* Returns the number of read bytes */
-static inline __s32 i2c_smbus_block_process_call(int file, __u8 command,
- __u8 length, __u8 *values)
-{
- union i2c_smbus_data data;
- int i;
- if (length > 32)
- length = 32;
- for (i = 1; i <= length; i++)
- data.block[i] = values[i-1];
- data.block[0] = length;
- i = i2c_smbus_access(file,I2C_SMBUS_WRITE,command,
- I2C_SMBUS_BLOCK_PROC_CALL,&data);
- if ( i )
- return -1;
- else {
- for (i = 1; i <= data.block[0]; i++)
- values[i-1] = data.block[i];
- return data.block[0];
- }
-}
-
-
-#endif /* LIB_I2CDEV_H */
-
diff --git a/packages/i2c/files/i2c-io-api.h b/packages/i2c/files/i2c-io-api.h
deleted file mode 100644
index 35ab45865c..0000000000
--- a/packages/i2c/files/i2c-io-api.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/****************************************************************************
-*
-* Copyright (c) 2006 Dave Hylands <dhylands@gmail.com>
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License version 2 as
-* published by the Free Software Foundation.
-*
-* Alternatively, this software may be distributed under the terms of BSD
-* license.
-*
-* See README and COPYING for more details.
-*
-****************************************************************************/
-/**
-*
-* @file i2c-io-api.h
-*
-* @brief This file contains definitions for performing i2c-io operations
-* on the gumstix.
-*
-****************************************************************************/
-
-#if !defined( I2C_IO_API_H )
-#define I2C_IO_API_H
-
-// ---- Include Files -------------------------------------------------------
-
-#include <inttypes.h>
-#include "i2c-io.h"
-
-// ---- Constants and Types -------------------------------------------------
-
-// ---- Variable Externs ----------------------------------------------------
-
-// ---- Function Prototypes -------------------------------------------------
-
-int I2C_IO_CheckVersion( const I2C_IO_Info_t *info );
-
-int I2C_IO_GetInfo( int i2cDev, I2C_IO_Info_t *info );
-int I2C_IO_GetGPIO( int i2cDev, uint8_t portNum, uint8_t *pinVal );
-int I2C_IO_SetGPIO( int i2cDev, uint8_t portNum, uint8_t pinMask, uint8_t pinVal );
-int I2C_IO_GetGPIODir( int i2cDev, uint8_t portNum, uint8_t *pinVal );
-int I2C_IO_SetGPIODir( int i2cDev, uint8_t portNum, uint8_t pinMask, uint8_t pinVal );
-int I2C_IO_GetADC( int i2cDev, uint8_t mux, uint16_t *adcVal );
-int I2C_IO_ReadReg8( int i2cDev, uint8_t reg, uint8_t *regVal );
-int I2C_IO_ReadReg16( int i2cDev, uint8_t reg, uint16_t *regVal );
-int I2C_IO_WriteReg8( int i2cDev, uint8_t reg, uint8_t regVal );
-int I2C_IO_WriteReg16( int i2cDev, uint8_t reg, uint16_t regVal );
-
-#endif // I2C_IO_API_H
-
diff --git a/packages/i2c/files/i2c-io.h b/packages/i2c/files/i2c-io.h
deleted file mode 100644
index 3ffb5e9c0e..0000000000
--- a/packages/i2c/files/i2c-io.h
+++ /dev/null
@@ -1,220 +0,0 @@
-/****************************************************************************
-*
-* Copyright (c) 2006 Dave Hylands <dhylands@gmail.com>
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License version 2 as
-* published by the Free Software Foundation.
-*
-* Alternatively, this software may be distributed under the terms of BSD
-* license.
-*
-* See README and COPYING for more details.
-*
-****************************************************************************/
-/**
-*
-* @file i2c-io.h
-*
-* @brief This file defines the interface to the i2c-io program which
-* runs on the robostix.
-*
-*****************************************************************************/
-
-#if !defined( I2C_IO_H )
-#define I2C_IO_H /**< Include Guard */
-
-/* ---- Include Files ---------------------------------------------------- */
-
-/* ---- Constants and Types ---------------------------------------------- */
-
-//---------------------------------------------------------------------------
-/**
- * Defines the version of this API. This includes the layout of the
- * various structures, along with the semantics associated with the
- * protocol. Any changes require the version number to be incremented.
- *
- * Version 2 - Introduced READ/WRITE_REG_8/16
- */
-
-#define I2C_IO_API_VERSION 2
-
-//---------------------------------------------------------------------------
-/**
- * The min version, determines the minimum version that this API is
- * compatable with. This allows old host side programs to determine
- * that they're not compatible.
- */
-
-#define I2C_IO_API_MIN_VERSION 1
-
-
-//---------------------------------------------------------------------------
-/**
-* The I2C_IO_GET_INFO command retrieves information about the i2c-io
-* program running on the robostix.
-*/
-
-#define I2C_IO_GET_INFO 0x01
-
-typedef struct
-{
- uint8_t version;
- uint8_t minVersion;
- uint16_t svnRevision;
-
-} I2C_IO_Info_t;
-
-//---------------------------------------------------------------------------
-/**
-* The I2C_IO_GET_GPIO command retrieves the values of the pins indicated
-* by portNum.
-*
-* The portNum is set such that 0 = A, 1 = B, etc.
-*
-* A block-reply with a single 8 bit value is returned.
-*/
-
-typedef struct
-{
- uint8_t portNum;
-
-} I2C_IO_Get_GPIO_t;
-
-#define I2C_IO_GET_GPIO 0x02
-
-//---------------------------------------------------------------------------
-/**
-* The I2C_IO_SET_GPIO command sets the values of the pins specified
-* by pinMask to the correponding bits in ponVal.
-*
-* Note: Setting a pin that's configured for input will enable a pullup
-* resistor.
-*
-* The portNum is set such that 0 = A, 1 = B, etc.
-*/
-
-typedef struct
-{
- uint8_t portNum;
- uint8_t pinMask;
- uint8_t pinVal;
-
-} I2C_IO_Set_GPIO_t;
-
-#define I2C_IO_SET_GPIO 0x03
-
-//---------------------------------------------------------------------------
-/**
-* The I2C_IO_GET_GPIO_DIR command retrieves the data direction
-* register (DDR) for the indicated portNum.
-*
-* The I2C_IO_Get_GPIO_t structure is used for this command.
-*
-* Note: It's ok to read the values of pins which are set for output.
-*
-* The portNum is set such that 0 = A, 1 = B, etc.
-*
-* A block-reply with a single 8 bit value is returned.
-* A 1 bit means that the pin is set for output and a 0 bit means that
-* the pin is set for input.
-*/
-
-#define I2C_IO_GET_GPIO_DIR 0x04
-
-//---------------------------------------------------------------------------
-/**
-* The I2C_IO_SET_GPIO_DIR command sets the data direction
-* register (DDR) for the indicated portNum.
-*
-* The I2C_IO_Set_GPIO_t structure is used for this command.
-*
-* The portNum is set such that 0 = A, 1 = B, etc.
-*/
-
-#define I2C_IO_SET_GPIO_DIR 0x05
-
-//---------------------------------------------------------------------------
-/**
-* The I2C_IO_GET_ADC command performs an ADC sample and returns the result.
-*
-* mux values 0 thru 7 read singled ended ADC values. Values 8 thru 31
-* return a variety of values. See the data sheet for specifics.
-*
-* A block-reply with a 16 bit value is returned, although only the
-* lower 10 bits are significant.
-*/
-
-typedef struct
-{
- uint8_t mux;
-
-} I2C_IO_Get_ADC_t;
-
-#define I2C_IO_GET_ADC 0x06
-
-//---------------------------------------------------------------------------
-/**
-* The I2C_IO_READ_REG_8 command reads a 8-bit register.
-*
-* A block reply with an 8 bit value is returned.
-*/
-
-typedef struct
-{
- uint8_t reg; ///< Index of the register to be read.
-
-} I2C_IO_ReadReg8_t;
-
-#define I2C_IO_READ_REG_8 0x07
-
-//---------------------------------------------------------------------------
-/**
-* The I2C_IO_READ_REG_16 command reads a 16-bit register.
-*
-* A block reply with a 16 bit value is returned.
-*/
-
-typedef struct
-{
- uint8_t reg; ///< Index of the register to be read.
-
-} I2C_IO_ReadReg16_t;
-
-#define I2C_IO_READ_REG_16 0x08
-
-//---------------------------------------------------------------------------
-/**
-* The I2C_IO_WRITE_REG_8 command writes an 8-bit register.
-*/
-
-typedef struct
-{
- uint8_t reg; ///< Index of the register to be read.
- uint8_t val; ///< Value to write into the register
-
-} I2C_IO_WriteReg8_t;
-
-#define I2C_IO_WRITE_REG_8 0x09
-
-//---------------------------------------------------------------------------
-/**
-* The I2C_IO_WRITE_REG_16 command writes a 16-bit register.
-*/
-
-typedef struct
-{
- uint8_t reg; ///< Index of the register to be read.
- uint8_t pad; ///< Pad for alignment on the host.
- uint16_t val; ///< Value to write
-
-} I2C_IO_WriteReg16_t;
-
-#define I2C_IO_WRITE_REG_16 0x0A
-
-/* ---- Variable Externs ------------------------------------------------- */
-
-/* ---- Function Prototypes ---------------------------------------------- */
-
-#endif /* I2C_IO_H */
-
diff --git a/packages/i2c/files/i2c.c b/packages/i2c/files/i2c.c
deleted file mode 100644
index 9f0bafdba1..0000000000
--- a/packages/i2c/files/i2c.c
+++ /dev/null
@@ -1,710 +0,0 @@
-/****************************************************************************
-*
-* Copyright (c) 2006 Dave Hylands <dhylands@gmail.com>
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License version 2 as
-* published by the Free Software Foundation.
-*
-* Alternatively, this software may be distributed under the terms of BSD
-* license.
-*
-* See README and COPYING for more details.
-*
-****************************************************************************/
-/**
-*
-* @file i2c.c
-*
-* @brief This program allows basic i2c commands to be sent out the i2c
-* bus,
-*
-****************************************************************************/
-
-// ---- Include Files -------------------------------------------------------
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <getopt.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <string.h>
-#include <signal.h>
-#include <unistd.h>
-#include <sys/timeb.h>
-
-#include "i2c-dev.h"
-#include "i2c-api.h"
-#include "i2c-io-api.h"
-#include "Log.h"
-
-// #include "svn-version.h"
-
-// ---- Public Variables ----------------------------------------------------
-// ---- Private Constants and Types -----------------------------------------
-
-// ---- Private Variables ---------------------------------------------------
-
-enum
-{
- OPT_MEM_DEFAULT = 0,
-
- // Options assigned a single character code can use that charater code
- // as a short option.
-
- OPT_COUNT = 'c',
-
- // Options from this point onwards don't have any short option equivalents
-
- OPT_FIRST_LONG_OPT = 0x80,
-
- OPT_HELP,
- OPT_VERSION,
-};
-
-enum
-{
- CMD_DEFAULT,
-
- CMD_READ_BYTE,
- CMD_READ_BYTE_2,
- CMD_READ_BYTE_4,
-
- CMD_WRITE_BYTE,
- CMD_WRITE_BYTE_2,
- CMD_WRITE_BYTE_4,
-
- CMD_RECV_BYTE,
- CMD_RECV_BYTE_2,
- CMD_RECV_BYTE_4,
-
- CMD_SEND_BYTE,
- CMD_SEND_BYTE_2,
- CMD_SEND_BYTE_4,
-};
-
-struct
-{
- int cmd;
- const char *cmdStr;
-
-} gCmdMap[] =
-{
- { CMD_READ_BYTE, "ReadByte" },
- { CMD_READ_BYTE, "rb" },
- { CMD_READ_BYTE_2, "ReadByte2" },
- { CMD_READ_BYTE_2, "rb2" },
- { CMD_READ_BYTE_4, "ReadByte4" },
- { CMD_READ_BYTE_4, "rb4" },
-
- { CMD_WRITE_BYTE, "WriteByte" },
- { CMD_WRITE_BYTE, "wb" },
- { CMD_WRITE_BYTE_2, "WriteByte2" },
- { CMD_WRITE_BYTE_2, "wb2" },
- { CMD_WRITE_BYTE_4, "WriteByte4" },
- { CMD_WRITE_BYTE_4, "wb4" },
-
- { CMD_RECV_BYTE, "RecvByte" },
- { CMD_RECV_BYTE, "vb" },
- { CMD_RECV_BYTE_2, "RecvByte2" },
- { CMD_RECV_BYTE_2, "vb2" },
- { CMD_RECV_BYTE_4, "RecvByte4" },
- { CMD_RECV_BYTE_4, "vb4" },
-
- { CMD_SEND_BYTE, "SendByte" },
- { CMD_SEND_BYTE, "sb" },
- { CMD_SEND_BYTE_2, "SendByte2" },
- { CMD_SEND_BYTE_2, "sb2" },
- { CMD_SEND_BYTE_4, "SendByte4" },
- { CMD_SEND_BYTE_4, "sb4" },
-};
-
-int gNumCmds = sizeof( gCmdMap ) / sizeof( gCmdMap[ 0 ]);
-
-int gI2cAddr = -1;
-int gByteCount = 1;
-
-const char *gCmdStr;
-int gCmd = CMD_DEFAULT;
-const char *gAddrStr = NULL;
-const char *gDataStr = NULL;
-
-struct option gOption[] =
-{
- { "count", required_argument, NULL, OPT_COUNT },
- { "version", no_argument, NULL, OPT_VERSION },
- { "verbose", no_argument, &gVerbose, 1 },
- { "debug", no_argument, &gDebug, 1 },
- { "help", no_argument, NULL, OPT_HELP },
- { NULL }
-};
-
-#define TRUE 1
-#define FALSE 0
-
-typedef enum
-{
- NoADC,
- AllowADC,
-
-} AllowADC_t;
-
-#define ADC_PORT 8
-
-// ---- Private Function Prototypes -----------------------------------------
-
-static int ParseByte( const char *byteStr, uint8_t *byte );
-static int ParseBytes( const char *byteStr, uint8_t *byte, uint8_t maxBytes, uint8_t *bytesParsed );
-
-static void ProcessReadByteCommand( int i2cDev, const char *addrStr );
-static void ProcessWriteByteCommand( int i2cDev, const char *addrStr, const char *dataStr );
-static void ProcessRecvByteCommand( int i2cDev );
-static void ProcessSendByteCommand( int i2cDev, const char *dataStr );
-static void Usage( void );
-
-// ---- Functions -----------------------------------------------------------
-
-//***************************************************************************
-/**
-* Main entry point
-*/
-
-int main( int argc, char **argv )
-{
- char shortOptsStr[ sizeof( gOption ) / sizeof( gOption[ 0 ] ) + 1 ];
- char *shortOpts = shortOptsStr;
- struct option *scanOpt;
- int opt;
- const char *i2cDevName = "/dev/i2c-0";
- int i2cDev;
- int cmdIdx;
-
- LogInit( stdout );
-
- // Figure out the short options from our options structure
-
- for ( scanOpt = gOption; scanOpt->name != NULL; scanOpt++ )
- {
- if (( scanOpt->flag == NULL ) && ( scanOpt->val < OPT_FIRST_LONG_OPT ))
- {
- *shortOpts++ = (char)scanOpt->val;
-
- if ( scanOpt->has_arg != no_argument )
- {
- *shortOpts++ = ':';
- }
- }
- }
- *shortOpts++ = '\0';
-
- // Parse the command line options
-
- while (( opt = getopt_long( argc, argv, shortOptsStr, gOption, NULL )) != -1 )
- {
- switch ( opt )
- {
- case 0:
- {
- // getopt_long returns 0 for entries where flag is non-NULL
-
- break;
- }
-
- case OPT_COUNT:
- {
- gByteCount = (int)strtol( optarg, NULL, 0 );
- if ( gByteCount <= 0 )
- {
- LogError( "Expecting byte count >= 0, found: '%s'\n", optarg );
- Usage();
- exit( 1 );
- }
- if ( gByteCount > I2C_MAX_DATA_LEN )
- {
- LogError( "Max byte count supported: %d, found %d\n", I2C_MAX_DATA_LEN, gByteCount );
- Usage();
- exit( 1 );
- }
- break;
- }
-
-// case OPT_VERSION:
-// {
-// Log( "i2c SVN Revision: %d\n", SVN_REVISION );
-// exit( 0 );
-// break;
-// }
-
- case '?':
- case OPT_HELP:
- default:
- {
- LogError( "opt:%d\n", opt );
- Usage();
- exit( 1 );
- }
- }
- }
- argc -= optind;
- argv += optind;
-
- // Verify that an i2c-address was specified
-
- if ( argc < 1 )
- {
- LogError( "Must specify an i2c address\n\n" );
- Usage();
- exit( 1 );
- }
- gI2cAddr = strtol( argv[ 0 ], NULL, 0 );
- if (( gI2cAddr <= 0 ) || ( gI2cAddr > 127 ))
- {
- LogError( "Expecting i2c address in the range of 1-127, Found: %d\n", gI2cAddr );
- Usage();
- exit( 1 );
- }
-
- // Verify that a command has been specified
-
- if ( argc < 2 )
- {
- LogError( "Must specify a command\n" );
- Usage();
- exit( 1 );
- }
- gCmdStr = argv[ 1 ];
- for ( cmdIdx = 0; cmdIdx < gNumCmds; cmdIdx++ )
- {
- if ( strcasecmp( gCmdStr, gCmdMap[ cmdIdx ].cmdStr ) == 0 )
- {
- gCmd = gCmdMap[ cmdIdx ].cmd;
- break;
- }
- }
- if ( gCmd == CMD_DEFAULT )
- {
- LogError( "Unrecognized command '%s'\n", gCmdStr );
- exit( 1 );
- }
-
- // Process command specific arguments
-
- if (( gCmd == CMD_READ_BYTE_2 )
- || ( gCmd == CMD_WRITE_BYTE_2 )
- || ( gCmd == CMD_RECV_BYTE_2 )
- || ( gCmd == CMD_SEND_BYTE_2 ))
- {
- gByteCount = 2;
- }
- else
- if (( gCmd == CMD_READ_BYTE_4 )
- || ( gCmd == CMD_WRITE_BYTE_4 )
- || ( gCmd == CMD_RECV_BYTE_4 )
- || ( gCmd == CMD_SEND_BYTE_4 ))
- {
- gByteCount = 4;
- }
-
- if (( gCmd == CMD_READ_BYTE )
- || ( gCmd == CMD_READ_BYTE_2 )
- || ( gCmd == CMD_READ_BYTE_4 ))
- {
- if ( argc < 3 )
- {
- LogError( "Expecting address\n" );
- Usage();
- exit( 1 );
- }
- if ( argc > 3 )
- {
- LogError( "Unexpected extra parameters\n" );
- Usage();
- exit( 1 );
- }
-
- gAddrStr = argv[ 2 ];
- }
- else
- if (( gCmd == CMD_WRITE_BYTE )
- || ( gCmd == CMD_WRITE_BYTE_2 )
- || ( gCmd == CMD_WRITE_BYTE_4 ))
- {
- if ( argc < 4 )
- {
- LogError( "Expecting address and data\n" );
- Usage();
- exit( 1 );
- }
- if ( argc > 4 )
- {
- LogError( "Unexpected extra parameters\n" );
- Usage();
- exit( 1 );
- }
-
- gAddrStr = argv[ 2 ];
- gDataStr = argv[ 3 ];
- }
- else
- if (( gCmd == CMD_RECV_BYTE )
- || ( gCmd == CMD_RECV_BYTE_2 )
- || ( gCmd == CMD_RECV_BYTE_4 ))
- {
- if ( argc > 2 )
- {
- LogError( "Unexpected extra parameters\n" );
- Usage();
- exit( 1 );
- }
- }
- else
- if (( gCmd == CMD_SEND_BYTE )
- || ( gCmd == CMD_SEND_BYTE_2 )
- || ( gCmd == CMD_SEND_BYTE_4 ))
- {
- if ( argc < 3 )
- {
- LogError( "Expecting data\n" );
- Usage();
- exit( 1 );
- }
- if ( argc > 3 )
- {
- LogError( "Unexpected extra parameters\n" );
- Usage();
- exit( 1 );
- }
- gDataStr = argv[ 2 ];
- }
-
- if ( gDebug )
- {
- Log( "i2cAddr:0x%02x Cmd: %s (%d)", gI2cAddr, gCmdStr, gCmd );
- if ( gAddrStr != NULL )
- {
- Log( " Addr: %s", gAddrStr );
- }
- if ( gDataStr != NULL )
- {
- Log( " Data: %s", gDataStr );
- }
- Log( "\n" );
- }
-
- // Try to open the i2c device
-
- if (( i2cDev = open( i2cDevName, O_RDWR )) < 0 )
- {
- LogError( "Error opening '%s': %s\n", i2cDevName, strerror( errno ));
- exit( 1 );
- }
-
- // Indicate which slave we wish to speak to
-
- I2cSetSlaveAddress( i2cDev, gI2cAddr, I2C_NO_CRC );
-
- switch ( gCmd )
- {
- case CMD_READ_BYTE:
- case CMD_READ_BYTE_2:
- case CMD_READ_BYTE_4:
- {
- ProcessReadByteCommand( i2cDev, gAddrStr );
- break;
- }
-
- case CMD_WRITE_BYTE:
- case CMD_WRITE_BYTE_2:
- case CMD_WRITE_BYTE_4:
- {
- ProcessWriteByteCommand( i2cDev, gAddrStr, gDataStr );
- break;
- }
-
- case CMD_RECV_BYTE:
- case CMD_RECV_BYTE_2:
- case CMD_RECV_BYTE_4:
- {
- ProcessRecvByteCommand( i2cDev );
- break;
- }
-
- case CMD_SEND_BYTE:
- case CMD_SEND_BYTE_2:
- case CMD_SEND_BYTE_4:
- {
- ProcessSendByteCommand( i2cDev, gDataStr );
- break;
- }
- }
-
- close( i2cDev );
-
- return 0;
-
-} // main
-
-//***************************************************************************
-/**
-* Parse a string looking for a single byte.
-*/
-
-int ParseByte( const char *byteStr, uint8_t *byte )
-{
- char *endPtr;
-
- *byte = (uint8_t)strtol( byteStr, &endPtr, 0 );
-
- if ( *endPtr != '\0' )
- {
- LogError( "Expecting numeric value, found '%s'\n", byteStr );
- return FALSE;
- }
-
- return TRUE;
-
-} // ParseByte
-
-//***************************************************************************
-/**
-* Parse a string looking for an array of bytes.
-*/
-
-int ParseBytes( const char *byteStr, uint8_t *byte, uint8_t maxBytes, uint8_t *bytesParsed )
-{
- char *endPtr;
-
- if (( byteStr[ 0 ] == '0' ) && ( byteStr[ 1 ] == 'x' ))
- {
- const char *s = &byteStr[ 2 ];
- *bytesParsed = 0;
-
- // Could be a multi-byte hex string
-
- while ( *s != '\0' )
- {
- if ( *bytesParsed >= maxBytes )
- {
- LogError( "Too many bytes, max: %d\n", maxBytes );
- return FALSE;
- }
-
- (*bytesParsed)++;
- *byte = 0;
-
- if (( *s >= 'A' ) && ( *s <= 'F' ))
- {
- *byte = *s - 'A' + 10;
- }
- else
- if (( *s >= 'a' ) && ( *s <= 'f' ))
- {
- *byte = *s - 'a' + 10;
- }
- else
- if (( *s >= '0' ) && ( *s <= '9' ))
- {
- *byte = *s - '0';
- }
- else
- {
- LogError( "Expecting hex digit, found '%c'\n", *s );
- return FALSE;
- }
- s++;
-
- if ( *s == '\0' )
- {
- break;
- }
-
- *byte <<= 4;
- if (( *s >= 'A' ) && ( *s <= 'F' ))
- {
- *byte |= *s - 'A' + 10;
- }
- else
- if (( *s >= 'a' ) && ( *s <= 'f' ))
- {
- *byte |= *s - 'a' + 10;
- }
- else
- if (( *s >= '0' ) && ( *s <= '9' ))
- {
- *byte |= *s - '0';
- }
- else
- {
- LogError( "Expecting hex digit, found '%c'\n", *s );
- return FALSE;
- }
- s++;
- byte++;
- }
- }
- else
- {
- // It's decimal or octal - only a single byte
-
- *byte = (uint8_t)strtol( byteStr, &endPtr, 0 );
-
- if ( *endPtr != '\0' )
- {
- LogError( "Expecting numeric value, found '%s'\n", byteStr );
- return FALSE;
- }
- *bytesParsed = 1;
- }
-
- return TRUE;
-
-} // ParseBytes
-
-//***************************************************************************
-/**
-* Issues a read byte command to read a byte from a particular address.
-*/
-
-void ProcessReadByteCommand( int i2cDev, const char *addrStr )
-{
- uint8_t addr;
- uint8_t dataByte[ I2C_MAX_DATA_LEN ];
- int rc;
- int i;
-
- if ( !ParseByte( addrStr, &addr ))
- {
- return;
- }
-
- if (( rc = I2cReadBytes( i2cDev, addr, dataByte, gByteCount )) != 0 )
- {
- LogError( "I2cReadByte failed: %d\n", rc );
- return;
- }
-
- Log( "0x", dataByte[0] );
-
- for ( i = 0; i < gByteCount; i++ )
- {
- Log( "%02x", dataByte[i] );
- }
- Log( "\n" );
-
-} // ProcessReadByteCommand
-
-//***************************************************************************
-/**
-* Issues a recv byte command to read bytes with no address.
-*/
-
-void ProcessRecvByteCommand( int i2cDev )
-{
- uint8_t dataByte[ I2C_MAX_DATA_LEN ];
- int rc;
- int i;
-
- if (( rc = I2cReceiveBytes( i2cDev, dataByte, gByteCount )) != 0 )
- {
- LogError( "I2cRecvBytes failed: %d\n", rc );
- return;
- }
-
- Log( "0x", dataByte[0] );
-
- for ( i = 0; i < gByteCount; i++ )
- {
- Log( "%02x", dataByte[i] );
- }
- Log( "\n" );
-
-} // ProcessRecvByteCommand
-
-//***************************************************************************
-/**
-* Issues a write byte command to write a byte to a particular address.
-*/
-
-void ProcessWriteByteCommand( int i2cDev, const char *addrStr, const char *dataStr )
-{
- uint8_t addr;
- uint8_t dataByte[ I2C_MAX_DATA_LEN ];
- uint8_t bytesParsed;
- int rc;
-
- if ( !ParseByte( addrStr, &addr ))
- {
- return;
- }
-
- if ( !ParseBytes( dataStr, dataByte, sizeof( dataByte ), &bytesParsed ))
- {
- return;
- }
-
- if (( rc = I2cWriteBytes( i2cDev, addr, dataByte, bytesParsed )) != 0 )
- {
- LogError( "I2cWriteBytes failed: %d\n", rc );
- return;
- }
-
-} // ProcessWriteByteCommand
-
-//***************************************************************************
-/**
-* Issues a send byte command to write bytes with no address specified.
-*/
-
-void ProcessSendByteCommand( int i2cDev, const char *dataStr )
-{
- uint8_t dataByte[ I2C_MAX_DATA_LEN ];
- uint8_t bytesParsed;
- int rc;
-
- if ( !ParseBytes( dataStr, dataByte, sizeof( dataByte ), &bytesParsed ))
- {
- return;
- }
-
- if (( rc = I2cSendBytes( i2cDev, dataByte, bytesParsed )) != 0 )
- {
- LogError( "I2cSendBytes failed: %d\n", rc );
- return;
- }
-
-} // ProcessSendByteCommand
-
-//***************************************************************************
-/**
-* Usage
-*/
-
-void Usage( void )
-{
- fprintf( stderr, "Usage: i2c [options] i2c-addr cmd [cmd-arguments]\n" );
- fprintf( stderr, "Send I2C commands\n" );
- fprintf( stderr, "\n" );
- fprintf( stderr, "The following commands are supported:\n" );
- fprintf( stderr, "ReadByte addr Retrieves byte(s) starting at the indicated address\n" );
- fprintf( stderr, "WriteByte addr data Write byte(s) starting at the indicated address\n" );
- fprintf( stderr, "ReadByte2 addr Retrieves two bytes from the indicated address\n" );
- fprintf( stderr, "WriteByte2 addr data Writes two bytes into the indicated address\n" );
- fprintf( stderr, "ReadByte4 addr Retrieves four bytes from the indicated address\n" );
- fprintf( stderr, "WriteByte4 addr data Writes four bytes into the indicated address\n" );
- fprintf( stderr, "RecvByte Retrieves byte(s)(no address specified)\n" );
- fprintf( stderr, "SendByte data Writes byte(s)(no address specified)\n" );
- fprintf( stderr, "RecvByte2 Retrieves 2 bytes (no address specified)\n" );
- fprintf( stderr, "SendByte2 data Writes 2 bytes(no address specified)\n" );
- fprintf( stderr, "RecvByte4 Retrieves 4 bytes (no address specified)\n" );
- fprintf( stderr, "SendByte4 data Writes 4 bytes(no address specified)\n" );
- fprintf( stderr, "\n" );
- fprintf( stderr, "The above commands can be shortened to rb, wb, rb2, wb2, rb4, wb4, vb, sd, vb2 sb2 vb4, and sb4 \n" );
- fprintf( stderr, "respectively.\n" );
- fprintf( stderr, "\n" );
- fprintf( stderr, "The following options may be used:\n" );
- fprintf( stderr, "--count=n Specifies how many bytes to read for ReadByte or RecvByte\n" );
- fprintf( stderr, "--version Prints the SVN version of this program\n" );
- fprintf( stderr, "--verbose Print additional information\n" );
- fprintf( stderr, "--help Prints this information\n" );
-}
-
diff --git a/packages/i2c/files/i2c.h b/packages/i2c/files/i2c.h
deleted file mode 100644
index bbfd276cec..0000000000
--- a/packages/i2c/files/i2c.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/****************************************************************************
-*
-* Copyright (c) 2006 Dave Hylands <dhylands@gmail.com>
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License version 2 as
-* published by the Free Software Foundation.
-*
-* Alternatively, this software may be distributed under the terms of BSD
-* license.
-*
-* See README and COPYING for more details.
-*
-****************************************************************************/
-/**
-*
-* @file i2c.h
-*
-* @brief Global definitions for interfacing with the AVR TWI (aka I2C)
-* hardware
-*
-****************************************************************************/
-/**
-* @defgroup xxx Readable version of xxx.
-*
-* @brief Brief description of what xxx does.
-*
-* Longer description of what xxx does.
-*
-****************************************************************************/
-
-#if !defined( I2C_H )
-#define I2C_H /**< Include Guard */
-
-/* ---- Include Files ---------------------------------------------------- */
-
-#include <inttypes.h>
-
-#if !defined( CONFIG_H )
-# include "Config.h"
-#endif
-
-
-/**
- * @addtogroup I2C
- * @{
- */
-
-/* ---- Constants and Types ---------------------------------------------- */
-
-/**
- * Error Codes
- */
-
-#define I2C_ERROR_NONE 0 // No Error
-#define I2C_ERROR_ADDR_NACK -1 // No response to SLA+R/W
-#define I2C_ERROR_DATA_NACK -2 // NACK during data transmission
-#define I2C_ERROR_ARBITRATION_LOST -3 // Lost arbitration
-#define I2C_ERROR_BAD_LEN -4 // Length is wonky
-#define I2C_ERROR_BAD_CRC -5 // CRC failed
-#define I2C_ERROR_BUS_ERROR -6 // Someting weird on the i2c bus
-
-typedef int8_t I2C_Error_t;
-
-/**
- * Since we're loosely following the SMBus spec, we restrict the amount
- * of data in each transaction to 32 bytes.
- */
-
-#define I2C_MAX_DATA_LEN 32
-
-/**
- * I2C_Addr_t can contain the address of any device on the bus. This
- * module only supports 7 bit addressing.
- */
-
-typedef uint8_t I2C_Addr_t;
-
-/**
- * The I2C_CRC macro can be used to remove all CRC support at compile time.
- */
-
-#if CFG_I2C_USE_CRC
-# define I2C_CRC(x) x
-#else
-
-# define I2C_CRC(x)
-#endif
-
-
-/**
- * I2C_Data_t encapsulates the data being read or written on the i2c bus.
- * This module follows the SMBus spec, whihch specifies a maximum payload
- * of 32 bytes.
- */
-
-typedef struct
-{
-#if CFG_I2C_USE_CRC
- uint8_t m_crc;
-#endif
-
-
- // For reads, m_len is the number of bytes actually read (doesn't include
- // the CRC - if present). If a block transfer was performed which has a
- // length byte, this length will include the length byte.
-
- uint8_t m_len;
-
- // Note: Under SMBus, a block write can consist of a command, a length,
- // 32 bytes of payload, and a CRC.
- //
- // A read response can consist of a length, 32 bytes of data, and a CRC.
-
- uint8_t m_data[ I2C_MAX_DATA_LEN + 2]; // +1 for the command, +1 for length
-
-} I2C_Data_t;
-
-/* ---- Variable Externs ------------------------------------------------- */
-
-/**
- * Description of variable.
- */
-
-/* ---- Function Prototypes ---------------------------------------------- */
-
-/*
- * Just include prototypes here. Put full descriptions in the .c files.
- */
-
-/** @} */
-
-#endif /* I2C_H */
-
-
diff --git a/packages/i2c/files/i2c.init b/packages/i2c/files/i2c.init
deleted file mode 100755
index 957ce68c7b..0000000000
--- a/packages/i2c/files/i2c.init
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/sh
-#
-# Start i2c support
-#
-
-start() {
- echo "Starting i2c..."
-
- /sbin/modprobe i2c-pxa
- /sbin/modprobe i2c-dev
-}
-stop() {
- echo "Stopping i2c..."
-
-}
-restart() {
- stop
- start
-}
-
-case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- restart)
- restart
- ;;
- *)
- echo $"Usage: $0 {start|stop|restart}"
- exit 1
-esac
-
-exit $?
-