I2C process call

Hi All,

I am using a beaglebone black and a custom board based off it.

On the BBB, I am running Debian Linux 7 (Linux 3.8-13)

On the custom board, I am running Angstrom distribution.

On both boards, when I run i2cdetect -F 2, they give the same results, as below:

Functionalities implemented by /dev/i2c-2:

I2C yes

SMBus Quick Command no

SMBus Send Byte yes

SMBus Receive Byte yes

SMBus Write Byte yes

SMBus Read Byte yes

SMBus Write Word yes

SMBus Read Word yes

SMBus Process Call yes

SMBus Block Write yes

SMBus Block Read no

SMBus Block Process Call no

SMBus PEC yes

I2C Block Write yes

I2C Block Read yes

I REALLY need to use the PROCESS_CALL functionality of the I2C.

The question is: does the PROCESS_CALL functionality rely on the hardware?

if it is just software, any patches or drivers I could use so I could support it on my hardware?

I have searched the web with regard to this, but have not found any answers.

I am hoping this community would be able to help.

Thanks in advance,



There is nothing at the hardware level that is uniquely required by the “Process Call” transaction.

You might have to hack into the low level I2C driver to implement it.

It looks like a simple 2 byte write followed by a restart and a two byte read in a single transaction.

Most I2C chips would properly respond to a 2 byte write transaction, followed by a two byte read transaction, which could be implemented, if you can stand the extra overhead of two shorter transactions.

I would recommend migrating off of Angstrom, if you can, since I don’t think it is supported any longer on the BBB.

— Graham