Re: [Qemu-devel] [PATCH v7 15/38] libqos: Use explicit QTestState for i2c operations

2017-09-12 Thread Thomas Huth
On 11.09.2017 19:19, Eric Blake wrote:
> Drop one more client of global_qtest by teaching all i2c test
> functionality to pass in an explicit QTestState, adjusting all
> callers.
> 
> Signed-off-by: Eric Blake 
> ---
>  tests/libqos/i2c.h  |  7 --
>  tests/ds1338-test.c |  6 ++---
>  tests/libqos/i2c-imx.c  | 67 
> +
>  tests/libqos/i2c-omap.c | 45 +
>  tests/tmp105-test.c |  6 ++---
>  5 files changed, 66 insertions(+), 65 deletions(-)

Reviewed-by: Thomas Huth 



[Qemu-devel] [PATCH v7 15/38] libqos: Use explicit QTestState for i2c operations

2017-09-11 Thread Eric Blake
Drop one more client of global_qtest by teaching all i2c test
functionality to pass in an explicit QTestState, adjusting all
callers.

Signed-off-by: Eric Blake 
---
 tests/libqos/i2c.h  |  7 --
 tests/ds1338-test.c |  6 ++---
 tests/libqos/i2c-imx.c  | 67 +
 tests/libqos/i2c-omap.c | 45 +
 tests/tmp105-test.c |  6 ++---
 5 files changed, 66 insertions(+), 65 deletions(-)

diff --git a/tests/libqos/i2c.h b/tests/libqos/i2c.h
index 6e648f922a..eb40b808bd 100644
--- a/tests/libqos/i2c.h
+++ b/tests/libqos/i2c.h
@@ -9,6 +9,7 @@
 #ifndef LIBQOS_I2C_H
 #define LIBQOS_I2C_H

+#include "libqtest.h"

 typedef struct I2CAdapter I2CAdapter;
 struct I2CAdapter {
@@ -16,6 +17,8 @@ struct I2CAdapter {
  const uint8_t *buf, uint16_t len);
 void (*recv)(I2CAdapter *adapter, uint8_t addr,
  uint8_t *buf, uint16_t len);
+
+QTestState *qts;
 };

 void i2c_send(I2CAdapter *i2c, uint8_t addr,
@@ -24,9 +27,9 @@ void i2c_recv(I2CAdapter *i2c, uint8_t addr,
   uint8_t *buf, uint16_t len);

 /* libi2c-omap.c */
-I2CAdapter *omap_i2c_create(uint64_t addr);
+I2CAdapter *omap_i2c_create(QTestState *qts, uint64_t addr);

 /* libi2c-imx.c */
-I2CAdapter *imx_i2c_create(uint64_t addr);
+I2CAdapter *imx_i2c_create(QTestState *qts, uint64_t addr);

 #endif
diff --git a/tests/ds1338-test.c b/tests/ds1338-test.c
index 26968bc82a..742dad9113 100644
--- a/tests/ds1338-test.c
+++ b/tests/ds1338-test.c
@@ -61,16 +61,14 @@ int main(int argc, char **argv)
 g_test_init(, , NULL);

 s = qtest_start("-display none -machine imx25-pdk");
-i2c = imx_i2c_create(IMX25_I2C_0_BASE);
+i2c = imx_i2c_create(s, IMX25_I2C_0_BASE);
 addr = DS1338_ADDR;

 qtest_add_func("/ds1338/tx-rx", send_and_receive);

 ret = g_test_run();

-if (s) {
-qtest_quit(s);
-}
+qtest_quit(s);
 g_free(i2c);

 return ret;
diff --git a/tests/libqos/i2c-imx.c b/tests/libqos/i2c-imx.c
index 1c4b4314ba..0945f2ecdc 100644
--- a/tests/libqos/i2c-imx.c
+++ b/tests/libqos/i2c-imx.c
@@ -40,8 +40,8 @@ typedef struct IMXI2C {
 static void imx_i2c_set_slave_addr(IMXI2C *s, uint8_t addr,
enum IMXI2CDirection direction)
 {
-writeb(s->addr + I2DR_ADDR, (addr << 1) |
-   (direction == IMX_I2C_READ ? 1 : 0));
+qtest_writeb(s->parent.qts, s->addr + I2DR_ADDR,
+ (addr << 1) | (direction == IMX_I2C_READ ? 1 : 0));
 }

 static void imx_i2c_send(I2CAdapter *i2c, uint8_t addr,
@@ -63,35 +63,35 @@ static void imx_i2c_send(I2CAdapter *i2c, uint8_t addr,
I2CR_MTX |
I2CR_TXAK;

-writeb(s->addr + I2CR_ADDR, data);
-status = readb(s->addr + I2SR_ADDR);
+qtest_writeb(i2c->qts, s->addr + I2CR_ADDR, data);
+status = qtest_readb(i2c->qts, s->addr + I2SR_ADDR);
 g_assert((status & I2SR_IBB) != 0);

 /* set the slave address */
 imx_i2c_set_slave_addr(s, addr, IMX_I2C_WRITE);
-status = readb(s->addr + I2SR_ADDR);
+status = qtest_readb(i2c->qts, s->addr + I2SR_ADDR);
 g_assert((status & I2SR_IIF) != 0);
 g_assert((status & I2SR_RXAK) == 0);

 /* ack the interrupt */
-writeb(s->addr + I2SR_ADDR, 0);
-status = readb(s->addr + I2SR_ADDR);
+qtest_writeb(i2c->qts, s->addr + I2SR_ADDR, 0);
+status = qtest_readb(i2c->qts, s->addr + I2SR_ADDR);
 g_assert((status & I2SR_IIF) == 0);

 while (size < len) {
 /* check we are still busy */
-status = readb(s->addr + I2SR_ADDR);
+status = qtest_readb(i2c->qts, s->addr + I2SR_ADDR);
 g_assert((status & I2SR_IBB) != 0);

 /* write the data */
-writeb(s->addr + I2DR_ADDR, buf[size]);
-status = readb(s->addr + I2SR_ADDR);
+qtest_writeb(i2c->qts, s->addr + I2DR_ADDR, buf[size]);
+status = qtest_readb(i2c->qts, s->addr + I2SR_ADDR);
 g_assert((status & I2SR_IIF) != 0);
 g_assert((status & I2SR_RXAK) == 0);

 /* ack the interrupt */
-writeb(s->addr + I2SR_ADDR, 0);
-status = readb(s->addr + I2SR_ADDR);
+qtest_writeb(i2c->qts, s->addr + I2SR_ADDR, 0);
+status = qtest_readb(i2c->qts, s->addr + I2SR_ADDR);
 g_assert((status & I2SR_IIF) == 0);

 size++;
@@ -99,8 +99,8 @@ static void imx_i2c_send(I2CAdapter *i2c, uint8_t addr,

 /* release the bus */
 data &= ~(I2CR_MSTA | I2CR_MTX);
-writeb(s->addr + I2CR_ADDR, data);
-status = readb(s->addr + I2SR_ADDR);
+qtest_writeb(i2c->qts, s->addr + I2CR_ADDR, data);
+status = qtest_readb(i2c->qts, s->addr + I2SR_ADDR);
 g_assert((status & I2SR_IBB) == 0);
 }

@@ -123,19 +123,19 @@ static void imx_i2c_recv(I2CAdapter *i2c, uint8_t addr,
I2CR_MTX |
I2CR_TXAK;

-writeb(s->addr + I2CR_ADDR, data);
-status = readb(s->addr + I2SR_ADDR);
+qtest_writeb(i2c->qts, s->addr +