Hi All,
I am writing an i2c application.
The i2c chip which i want to communicate is an audio codec chip, which
has an ASoC audio
driver in the kernel.
But my ioctl() is failing.
ioctl(file,I2C_SLAVE,addr), my addr is 0x18
which returns -EBUSY.
The reason is that there is already an i2c_client for this addr which
is created as a part of
audio driver.
So if i disable my ASoC driver, ioctl is working.
Only way i can make my application to work is to add dev interface in
my audio driver.
If Someone has got a better suggestion please let me know?
I am pasting my application code below.
int main()
{
int file;
int adapter_nr = 2; /* probably dynamically determined */
unsigned long addr = 0x18; /* The I2C address */
char filename[20] = {0};
unsigned int size;
char buf[5] = {0};
int res;
int reg = 0x10;
int value,ret;
sprintf(filename,"/dev/i2c-%d",adapter_nr);
printf("Device File: %s\n",filename);
printf("Device Address(I2C): 0x%x\n",addr);
if ((file = open(filename,O_RDWR|O_SYNC)) < 0) {
/* ERROR HANDLING; you can check errno to see what went wrong */
printf("Error Occured while opening Device File.!!\n");
exit(1);
} else {
printf("Device File Opened Successfully !!\n");
}
addr = (0x18);
res = ioctl(file,I2C_SLAVE,addr);
if (res < 0) {
printf("Error Occrued inside IOCTL!! : res = %d\n\n",res);
printf("error no= %d\n\n",errno);
perror("Error Reason: ");
/* ERROR HANDLING; you can check errno to see what went
wrong */
exit(1);
}
Regards,
Arun Ks
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ