|
|
|
I2C (still) | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
|
|
Hi all,
I'm still not able to use the i2c. I still don't know what's the matter.
The code:
#include <linux/i2c-dev.h>
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include "srf08.h"
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <linux/types.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#define CHECK_I2C_FUNC( var, label ) \
do { if(0 == (var & label)) { \
fprintf(stderr, "\nError: " \
#label " function is required. Program halted.\n\n"); \
exit(1); } \
} while(0);
//global vars
int i2c_handler;
int main( int argc, char *argv[] ) {
int i=0;
int value=0;
int adapter_nr;
int err;
int funcs;
//we don't have to initialize the I2C, since it's done by the driver
//opening the device
printf("Opening /dev/i2c\n");
if ( ( err = ( i2c_handler = open("/dev/i2c-0",O_RDWR) ) ) < 0 ) {
printf("Error opening /dev/i2c! Exiting (%d -
%s).\n",err,strerror(errno));
exit(1);
}
printf("Setting slave addr to 0xE0\n");
if ( ( err = ioctl(i2c_handler,I2C_SLAVE,0xE0) ) < 0 ) {
printf("Error setting SLAVE address! Exiting (%d).\n",err);
}
// check for req funcs
printf("Getting available IOCTLs\n");
// get funcs list
if((err = ioctl(i2c_handler, I2C_FUNCS, &funcs) < 0)) {
printf( "Error eeprom_open: %s\n", strerror(err));
exit(1);
}
CHECK_I2C_FUNC( funcs, I2C_FUNC_SMBUS_READ_BYTE );
CHECK_I2C_FUNC( funcs, I2C_FUNC_SMBUS_WRITE_BYTE );
CHECK_I2C_FUNC( funcs, I2C_FUNC_SMBUS_READ_BYTE_DATA );
CHECK_I2C_FUNC( funcs, I2C_FUNC_SMBUS_WRITE_BYTE_DATA );
CHECK_I2C_FUNC( funcs, I2C_FUNC_SMBUS_READ_WORD_DATA );
CHECK_I2C_FUNC( funcs, I2C_FUNC_SMBUS_WRITE_WORD_DATA );
printf("Requesting SW version:\n");
printf("Exiting.\n");
exit(0);
}
The result, when I try to run it:
root@(none):/mnt/tmp# ./srf08_user
Opening /dev/i2c
Error opening /dev/i2c! Exiting (-1 - No such device).
The dmesg output:
...
i2c /dev entries driver
...
The /dev entries:
lrwxrwxrwx 1 root root 5 Jan 1 00:21 i2c -> i2c-0
crw-r--r-- 1 root root 89, 0 Jul 28 2007 i2c-0
crw-r--r-- 1 root root 89, 1 Jul 28 2007 i2c-1
crw-r--r-- 1 root root 89, 2 Jul 28 2007 i2c-2
crw-r--r-- 1 root root 89, 3 Jul 28 2007 i2c-3
crw-r--r-- 1 root root 89, 4 Jan 12 01:40 i2c-4
The current kernel config is attached.
What am I doing wrong?
Thanks,
Tamas
Attachment:
actual_kernel_conf.gz
Description: GNU Zip compressed data
------------------------------------------------------------------- List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php
[Linux ARM] [Linux ARM MSM] [Linux ARM Kernel] [Fedora ARM] [IETF Annouce] [Security] [Bugtraq] [Linux] [Linux OMAP] [Linux MIPS] [ECOS] [Asterisk Internet PBX] [Linux API]
![]() |
![]() |