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 31*e8ecb706SPaolo Bonzini void i2c_read_block(I2CAdapter *i2c, uint8_t addr, uint8_t reg, 32*e8ecb706SPaolo Bonzini uint8_t *buf, uint16_t len); 33*e8ecb706SPaolo Bonzini void i2c_write_block(I2CAdapter *i2c, uint8_t addr, uint8_t reg, 34*e8ecb706SPaolo Bonzini const uint8_t *buf, uint16_t len); 35*e8ecb706SPaolo Bonzini uint8_t i2c_get8(I2CAdapter *i2c, uint8_t addr, uint8_t reg); 36*e8ecb706SPaolo Bonzini uint16_t i2c_get16(I2CAdapter *i2c, uint8_t addr, uint8_t reg); 37*e8ecb706SPaolo Bonzini void i2c_set8(I2CAdapter *i2c, uint8_t addr, uint8_t reg, 38*e8ecb706SPaolo Bonzini uint8_t value); 39*e8ecb706SPaolo Bonzini void i2c_set16(I2CAdapter *i2c, uint8_t addr, uint8_t reg, 40*e8ecb706SPaolo Bonzini uint16_t value); 41*e8ecb706SPaolo Bonzini 422bf7b457SAndreas Färber /* libi2c-omap.c */ 43f1dfd507SEric Blake I2CAdapter *omap_i2c_create(QTestState *qts, uint64_t addr); 442bf7b457SAndreas Färber 457f398627SJean-Christophe Dubois /* libi2c-imx.c */ 46f1dfd507SEric Blake I2CAdapter *imx_i2c_create(QTestState *qts, uint64_t addr); 477f398627SJean-Christophe Dubois 482bf7b457SAndreas Färber #endif 49