xref: /aosp_15_r20/external/arm-trusted-firmware/include/drivers/mentor/mi2cv.h (revision 54fd6939e177f8ff529b10183254802c76df6d08)
1*54fd6939SJiyong Park /*
2*54fd6939SJiyong Park  * Copyright (C) 2018 Marvell International Ltd.
3*54fd6939SJiyong Park  * Copyright (C) 2018 Icenowy Zheng <[email protected]>
4*54fd6939SJiyong Park  *
5*54fd6939SJiyong Park  * SPDX-License-Identifier:     BSD-3-Clause
6*54fd6939SJiyong Park  * https://spdx.org/licenses
7*54fd6939SJiyong Park  */
8*54fd6939SJiyong Park 
9*54fd6939SJiyong Park /* This driver provides support for Mentor Graphics MI2CV IP core */
10*54fd6939SJiyong Park 
11*54fd6939SJiyong Park #ifndef MI2CV_H
12*54fd6939SJiyong Park #define MI2CV_H
13*54fd6939SJiyong Park 
14*54fd6939SJiyong Park #include <stdint.h>
15*54fd6939SJiyong Park 
16*54fd6939SJiyong Park /*
17*54fd6939SJiyong Park  * Initialization, must be called once on start up, may be called
18*54fd6939SJiyong Park  * repeatedly to change the speed and slave addresses.
19*54fd6939SJiyong Park  */
20*54fd6939SJiyong Park void i2c_init(void *i2c_base);
21*54fd6939SJiyong Park 
22*54fd6939SJiyong Park /*
23*54fd6939SJiyong Park  * Read/Write interface:
24*54fd6939SJiyong Park  *   chip:    I2C chip address, range 0..127
25*54fd6939SJiyong Park  *   addr:    Memory (register) address within the chip
26*54fd6939SJiyong Park  *   alen:    Number of bytes to use for addr (typically 1, 2 for larger
27*54fd6939SJiyong Park  *              memories, 0 for register type devices with only one
28*54fd6939SJiyong Park  *              register)
29*54fd6939SJiyong Park  *   buffer:  Where to read/write the data
30*54fd6939SJiyong Park  *   len:     How many bytes to read/write
31*54fd6939SJiyong Park  *
32*54fd6939SJiyong Park  *   Returns: 0 on success, not 0 on failure
33*54fd6939SJiyong Park  */
34*54fd6939SJiyong Park int i2c_read(uint8_t chip,
35*54fd6939SJiyong Park 	     unsigned int addr, int alen, uint8_t *buffer, int len);
36*54fd6939SJiyong Park 
37*54fd6939SJiyong Park int i2c_write(uint8_t chip,
38*54fd6939SJiyong Park 	      unsigned int addr, int alen, uint8_t *buffer, int len);
39*54fd6939SJiyong Park 
40*54fd6939SJiyong Park #endif /* MI2CV_H */
41