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