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