12bf7b457SAndreas Färber /* 22bf7b457SAndreas Färber * I2C libqos 32bf7b457SAndreas Färber * 42bf7b457SAndreas Färber * Copyright (c) 2012 Andreas Färber 52bf7b457SAndreas Färber * 62bf7b457SAndreas Färber * This work is licensed under the terms of the GNU GPL, version 2 or later. 72bf7b457SAndreas Färber * See the COPYING file in the top-level directory. 82bf7b457SAndreas Färber */ 92bf7b457SAndreas Färber #ifndef LIBQOS_I2C_H 102bf7b457SAndreas Färber #define LIBQOS_I2C_H 112bf7b457SAndreas Färber 12f1dfd507SEric Blake #include "libqtest.h" 132bf7b457SAndreas Färber 142bf7b457SAndreas Färber typedef struct I2CAdapter I2CAdapter; 152bf7b457SAndreas Färber struct I2CAdapter { 162bf7b457SAndreas Färber void (*send)(I2CAdapter *adapter, uint8_t addr, 172bf7b457SAndreas Färber const uint8_t *buf, uint16_t len); 182bf7b457SAndreas Färber void (*recv)(I2CAdapter *adapter, uint8_t addr, 192bf7b457SAndreas Färber uint8_t *buf, uint16_t len); 20f1dfd507SEric Blake 21f1dfd507SEric Blake QTestState *qts; 222bf7b457SAndreas Färber }; 232bf7b457SAndreas Färber 245141d415SCédric Le Goater #define OMAP2_I2C_1_BASE 0x48070000 255141d415SCédric Le Goater 262bf7b457SAndreas Färber void i2c_send(I2CAdapter *i2c, uint8_t addr, 272bf7b457SAndreas Färber const uint8_t *buf, uint16_t len); 282bf7b457SAndreas Färber void i2c_recv(I2CAdapter *i2c, uint8_t addr, 292bf7b457SAndreas Färber uint8_t *buf, uint16_t len); 302bf7b457SAndreas Färber 31e8ecb706SPaolo Bonzini void i2c_read_block(I2CAdapter *i2c, uint8_t addr, uint8_t reg, 32e8ecb706SPaolo Bonzini uint8_t *buf, uint16_t len); 33e8ecb706SPaolo Bonzini void i2c_write_block(I2CAdapter *i2c, uint8_t addr, uint8_t reg, 34e8ecb706SPaolo Bonzini const uint8_t *buf, uint16_t len); 35e8ecb706SPaolo Bonzini uint8_t i2c_get8(I2CAdapter *i2c, uint8_t addr, uint8_t reg); 36e8ecb706SPaolo Bonzini uint16_t i2c_get16(I2CAdapter *i2c, uint8_t addr, uint8_t reg); 37e8ecb706SPaolo Bonzini void i2c_set8(I2CAdapter *i2c, uint8_t addr, uint8_t reg, 38e8ecb706SPaolo Bonzini uint8_t value); 39e8ecb706SPaolo Bonzini void i2c_set16(I2CAdapter *i2c, uint8_t addr, uint8_t reg, 40e8ecb706SPaolo Bonzini uint16_t value); 41e8ecb706SPaolo Bonzini 42*732c919cSPaolo Bonzini /* i2c-omap.c */ 43*732c919cSPaolo Bonzini typedef struct OMAPI2C { 44*732c919cSPaolo Bonzini I2CAdapter parent; 452bf7b457SAndreas Färber 46*732c919cSPaolo Bonzini uint64_t addr; 47*732c919cSPaolo Bonzini } OMAPI2C; 48*732c919cSPaolo Bonzini 49*732c919cSPaolo Bonzini void omap_i2c_init(OMAPI2C *s, QTestState *qts, uint64_t addr); 50*732c919cSPaolo Bonzini I2CAdapter *omap_i2c_create(QTestState *qts, uint64_t addr); 51*732c919cSPaolo Bonzini void omap_i2c_free(I2CAdapter *i2c); 52*732c919cSPaolo Bonzini 53*732c919cSPaolo Bonzini /* i2c-imx.c */ 54*732c919cSPaolo Bonzini typedef struct IMXI2C { 55*732c919cSPaolo Bonzini I2CAdapter parent; 56*732c919cSPaolo Bonzini 57*732c919cSPaolo Bonzini uint64_t addr; 58*732c919cSPaolo Bonzini } IMXI2C; 59*732c919cSPaolo Bonzini 60*732c919cSPaolo Bonzini void imx_i2c_init(IMXI2C *s, QTestState *qts, uint64_t addr); 61f1dfd507SEric Blake I2CAdapter *imx_i2c_create(QTestState *qts, uint64_t addr); 62*732c919cSPaolo Bonzini void imx_i2c_free(I2CAdapter *i2c); 637f398627SJean-Christophe Dubois 642bf7b457SAndreas Färber #endif 65