summary refs log tree commit diff stats
path: root/tests/pca9552-test.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2019-03-18 15:06:50 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2019-06-03 14:03:02 +0200
commit06599472ec40efef3de7cb2bc98d61e8d4b18a63 (patch)
tree284d2baa0ab63e29a7c0e70adca2d80602a7e16e /tests/pca9552-test.c
parent8130dbcbcda15b3fe5ae1da76bf48868c4ce90fb (diff)
downloadfocaccia-qemu-06599472ec40efef3de7cb2bc98d61e8d4b18a63.tar.gz
focaccia-qemu-06599472ec40efef3de7cb2bc98d61e8d4b18a63.zip
libqos: i2c: move address into QI2CDevice
This removes the hardcoded I2C address from the tests.  The address
is passed via QOSGraphEdgeOptions to i2c_device_create and stored
in the QI2CDevice.

The i2c_send and i2c_recv functions, along with their wrappers,
therefore, can be changed to take a QI2CDevice rather than an
adapter/address pair.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'tests/pca9552-test.c')
-rw-r--r--tests/pca9552-test.c31
1 files changed, 14 insertions, 17 deletions
diff --git a/tests/pca9552-test.c b/tests/pca9552-test.c
index 0598d0b1eb..4b800d3c3e 100644
--- a/tests/pca9552-test.c
+++ b/tests/pca9552-test.c
@@ -19,65 +19,61 @@
 
 static void pca9552_init(QI2CDevice *i2cdev)
 {
-    I2CAdapter *i2c = i2cdev->bus;
-
     /* Switch on LEDs 0 and 12 */
-    i2c_set8(i2c, PCA9552_TEST_ADDR, PCA9552_LS0, 0x54);
-    i2c_set8(i2c, PCA9552_TEST_ADDR, PCA9552_LS3, 0x54);
+    i2c_set8(i2cdev, PCA9552_LS0, 0x54);
+    i2c_set8(i2cdev, PCA9552_LS3, 0x54);
 }
 
 static void receive_autoinc(void *obj, void *data, QGuestAllocator *alloc)
 {
     QI2CDevice *i2cdev = (QI2CDevice *)obj;
-    I2CAdapter *i2c = i2cdev->bus;
     uint8_t resp;
     uint8_t reg = PCA9552_LS0 | PCA9552_AUTOINC;
 
     pca9552_init(i2cdev);
 
-    i2c_send(i2c, PCA9552_TEST_ADDR, &reg, 1);
+    i2c_send(i2cdev, &reg, 1);
 
     /* PCA9552_LS0 */
-    i2c_recv(i2c, PCA9552_TEST_ADDR, &resp, 1);
+    i2c_recv(i2cdev, &resp, 1);
     g_assert_cmphex(resp, ==, 0x54);
 
     /* PCA9552_LS1 */
-    i2c_recv(i2c, PCA9552_TEST_ADDR, &resp, 1);
+    i2c_recv(i2cdev, &resp, 1);
     g_assert_cmphex(resp, ==, 0x55);
 
     /* PCA9552_LS2 */
-    i2c_recv(i2c, PCA9552_TEST_ADDR, &resp, 1);
+    i2c_recv(i2cdev, &resp, 1);
     g_assert_cmphex(resp, ==, 0x55);
 
     /* PCA9552_LS3 */
-    i2c_recv(i2c, PCA9552_TEST_ADDR, &resp, 1);
+    i2c_recv(i2cdev, &resp, 1);
     g_assert_cmphex(resp, ==, 0x54);
 }
 
 static void send_and_receive(void *obj, void *data, QGuestAllocator *alloc)
 {
     QI2CDevice *i2cdev = (QI2CDevice *)obj;
-    I2CAdapter *i2c = i2cdev->bus;
     uint8_t value;
 
-    value = i2c_get8(i2c, PCA9552_TEST_ADDR, PCA9552_LS0);
+    value = i2c_get8(i2cdev, PCA9552_LS0);
     g_assert_cmphex(value, ==, 0x55);
 
-    value = i2c_get8(i2c, PCA9552_TEST_ADDR, PCA9552_INPUT0);
+    value = i2c_get8(i2cdev, PCA9552_INPUT0);
     g_assert_cmphex(value, ==, 0x0);
 
     pca9552_init(i2cdev);
 
-    value = i2c_get8(i2c, PCA9552_TEST_ADDR, PCA9552_LS0);
+    value = i2c_get8(i2cdev, PCA9552_LS0);
     g_assert_cmphex(value, ==, 0x54);
 
-    value = i2c_get8(i2c, PCA9552_TEST_ADDR, PCA9552_INPUT0);
+    value = i2c_get8(i2cdev, PCA9552_INPUT0);
     g_assert_cmphex(value, ==, 0x01);
 
-    value = i2c_get8(i2c, PCA9552_TEST_ADDR, PCA9552_LS3);
+    value = i2c_get8(i2cdev, PCA9552_LS3);
     g_assert_cmphex(value, ==, 0x54);
 
-    value = i2c_get8(i2c, PCA9552_TEST_ADDR, PCA9552_INPUT1);
+    value = i2c_get8(i2cdev, PCA9552_INPUT1);
     g_assert_cmphex(value, ==, 0x10);
 }
 
@@ -86,6 +82,7 @@ static void pca9552_register_nodes(void)
     QOSGraphEdgeOptions opts = {
         .extra_device_opts = "address=0x60"
     };
+    add_qi2c_address(&opts, &(QI2CAddress) { 0x60 });
 
     qos_node_create_driver("pca9552", i2c_device_create);
     qos_node_consumes("pca9552", "i2c-bus", &opts);