[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: I2C multimaster with devboard 82



Hi Mikael!

Thanks for your quick response.

Our I2C-configuration:
- The Kernel parameters are(make xconfig):
    .)Drivers for ETRAX 100LX built-in interfaces
      -> I2C support: yes
      -> I2C uses PB not PB-I2C: no
      -> I2C EEPROM support: no
    .)Character devices
      -> I2C support: no

- included headerfiles:
    string.h,stdlib.h,stdio.h,
    fcntl.h,time.h,unistd.h,stropts.h,
    asm/etraxi2c.h,asm/ioctl.h

That's the confiuration we have got now.
So the switch you mentioned, CONFIG_ETRAX_I2C_USES_PB_NOT_PB_I2C, is already
off, but it does not work in multimaster-mode.

> There is hardware support for multimaster I2C but as far as I know it has
> not been used by anyone.
Just for confirmation: I assume that the I2C-bus is only implemented as a
software-kernel-driver, not in hardware?!

Why there are 2 different I2C-configuration settings
in the Kernel-set-up (Drivers for ETRAX... and Character device)?

As far as I can see there is no software support for multimaster
in the i2c-etraxdriver
(~/axis/devboard_82/os/linux/arch/cris/drivers/i2c.c).
I assume that this feature had to be implemented in this driver?!
Or are there other solutions?

What about the files in this directory:
~/axis/devboard_82/os/linux/drivers/i2c
May we use them for something?

For our c-file we use the asm/etraxi2c.h and asm/ioctl.h headerfiles.
The reading and writing operations work via IOCTL-interface.
Example:
  i2c_arg = I2C_READARG(0xC8, 0x09);
  if (ioctl(fs,_IO(ETRAXI2C_IOCTYPE, I2C_READREG),i2c_arg) < 0)
  {
    printf("Error when opening the I2C-Device!\n");
    close(fs);
    exit(1);
  }
The communication between the axisboard and our EEPROM works.
Only in conjunction with the 2nd I2C-master (PIC-Controller) there are
collisions, and the SCL-line never reaches LOW-level.
Again the question: Is the pull-up resistor missing on the SCL-line on the
axis-board?

Thanks for your effort,
best regards
Martin