1 // SPDX-License-Identifier: BSD-2-Clause
2 /*
3  * Copyright (C) Foundries Ltd. 2022 - All Rights Reserved
4  * Author: Jorge Ramirez <jorge@foundries.io>
5  */
6 
7 #include <drivers/imx_i2c.h>
8 #include <i2c_native.h>
9 #include <phNxpEsePal_i2c.h>
10 
native_i2c_transfer(struct rpc_i2c_request * req,size_t * bytes)11 TEE_Result native_i2c_transfer(struct rpc_i2c_request *req,
12 			       size_t *bytes)
13 {
14 	TEE_Result ret = TEE_ERROR_GENERIC;
15 
16 	if (req->mode == RPC_I2C_MODE_READ)
17 		ret = imx_i2c_read(req->bus, req->chip, req->buffer,
18 				   req->buffer_len);
19 	else
20 		ret = imx_i2c_write(req->bus, req->chip, req->buffer,
21 				    req->buffer_len);
22 
23 	if (!ret)
24 		*bytes = req->buffer_len;
25 
26 	return ret;
27 }
28 
native_i2c_init(void)29 int native_i2c_init(void)
30 {
31 	if (imx_i2c_init(CFG_CORE_SE05X_I2C_BUS, CFG_CORE_SE05X_BAUDRATE))
32 		return -1;
33 
34 	if (imx_i2c_probe(CFG_CORE_SE05X_I2C_BUS, SMCOM_I2C_ADDRESS >> 1))
35 		return -1;
36 
37 	return 0;
38 }
39