Re: [PATCHv8] drivers: optee: allow op-tee to access devices on the i2c bus

From: Jorge Ramirez-Ortiz, Foundries
Date: Thu Aug 13 2020 - 14:03:35 EST


On 13/08/20, Jens Wiklander wrote:
> On Wed, Aug 12, 2020 at 02:06:52PM +0200, Jorge Ramirez-Ortiz wrote:
> > Some secure elements like NXP's SE050 sit on I2C buses. For OP-TEE to
> > control this type of cryptographic devices it needs coordinated access
> > to the bus, so collisions and RUNTIME_PM dont get in the way.
> >
> > This trampoline driver allow OP-TEE to access them.
> >
> > Signed-off-by: Jorge Ramirez-Ortiz <jorge@xxxxxxxxxxxx>
> > ---
> >
> > v8: review fixes
> > fix types and add TEEC_ERROR_NOT_SUPPORTED to GP errors
> > v7: add support for ten bit i2c slave addressing
> > v6: compile out if CONFIG_I2C not enabled
> > v5: alphabetic order of includes
> > v4: remove unnecessary extra line in optee_msg.h
> > v3: use from/to msg param to support all types of memory
> > modify OPTEE_MSG_RPC_CMD_I2C_TRANSFER message id
> >
> > drivers/tee/optee/optee_msg.h | 21 +++++++
> > drivers/tee/optee/optee_private.h | 1 +
> > drivers/tee/optee/rpc.c | 96 +++++++++++++++++++++++++++++++
> > 3 files changed, 118 insertions(+)
> >
>
> This looks good to me. Did you test this with the recently merged
> https://github.com/OP-TEE/optee_os/pull/4024 ?

I am in the process (please hold this until I can validate end to end
as I was doing with the original code).
I had to rebase from 3.6.0 to the tip of op-tee so it is taking me a
bit longer than anticipated.

Also I noticed that unfortunately a bug managed to get in that PR. The
return value is on p[3] not in p[2].

See below.
https://github.com/OP-TEE/optee_os/commit/30c53a72426366d0a4eb4aa396c37b8fd048a82a#r41447494

Also this version v8 also has now a problem (params get updated after
calling optee_to_msg_param hence the i2c return value from the
transfer does never reach optee)

apologies. will fix.

>
> Cheers,
> Jens