[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH for-1.4 v4 4/6] tests: Add tmp105 qtest test case
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PATCH for-1.4 v4 4/6] tests: Add tmp105 qtest test case |
Date: |
Wed, 16 Jan 2013 01:57:57 +0100 |
Exercise all four commands of the TMP105, testing for an issue in the
I2C TX path.
The test case uses the N800's OMAP I2C and is the first for ARM.
Signed-off-by: Andreas Färber <address@hidden>
---
tests/Makefile | 3 ++
tests/tmp105-test.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++
2 Dateien geändert, 79 Zeilen hinzugefügt(+)
create mode 100644 tests/tmp105-test.c
diff --git a/tests/Makefile b/tests/Makefile
index 53c5873..d86e95a 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -60,6 +60,8 @@ gcov-files-i386-y += i386-softmmu/hw/mc146818rtc.c
check-qtest-sparc-y = tests/m48t59-test$(EXESUF)
check-qtest-sparc64-y = tests/m48t59-test$(EXESUF)
gcov-files-sparc-y += hw/m48t59.c
+check-qtest-arm-y = tests/tmp105-test$(EXESUF)
+qcov-files-arm-y += hw/tmp105.c
GENERATED_HEADERS += tests/test-qapi-types.h tests/test-qapi-visit.h
tests/test-qmp-commands.h
@@ -108,6 +110,7 @@ tests/rtc-test$(EXESUF): tests/rtc-test.o
tests/m48t59-test$(EXESUF): tests/m48t59-test.o
tests/fdc-test$(EXESUF): tests/fdc-test.o
tests/hd-geo-test$(EXESUF): tests/hd-geo-test.o
+tests/tmp105-test$(EXESUF): tests/tmp105-test.o
# QTest rules
diff --git a/tests/tmp105-test.c b/tests/tmp105-test.c
new file mode 100644
index 0000000..a6ad213
--- /dev/null
+++ b/tests/tmp105-test.c
@@ -0,0 +1,76 @@
+/*
+ * QTest testcase for the TMP105 temperature sensor
+ *
+ * Copyright (c) 2012 Andreas Färber
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+#include "libqtest.h"
+#include "libi2c.h"
+#include "hw/tmp105_regs.h"
+
+#include <glib.h>
+
+#define OMAP2_I2C_1_BASE 0x48070000
+
+#define N8X0_ADDR 0x48
+
+static I2CAdapter *i2c;
+static uint8_t addr;
+
+static void send_and_receive(void)
+{
+ uint8_t cmd[3];
+ uint8_t resp[2];
+
+ cmd[0] = TMP105_REG_TEMPERATURE;
+ i2c_send(i2c, addr, cmd, 1);
+ i2c_recv(i2c, addr, resp, 2);
+ g_assert_cmpuint(((uint16_t)resp[0] << 8) | resp[1], ==, 0);
+
+ cmd[0] = TMP105_REG_CONFIG;
+ cmd[1] = 0x0; /* matches the reset value */
+ i2c_send(i2c, addr, cmd, 2);
+ i2c_recv(i2c, addr, resp, 1);
+ g_assert_cmphex(resp[0], ==, cmd[1]);
+
+ cmd[0] = TMP105_REG_T_LOW;
+ cmd[1] = 0x12;
+ cmd[2] = 0x34;
+ i2c_send(i2c, addr, cmd, 3);
+ i2c_recv(i2c, addr, resp, 2);
+ g_assert_cmphex(resp[0], ==, cmd[1]);
+ g_assert_cmphex(resp[1], ==, cmd[2]);
+
+ cmd[0] = TMP105_REG_T_HIGH;
+ cmd[1] = 0x42;
+ cmd[2] = 0x31;
+ i2c_send(i2c, addr, cmd, 3);
+ i2c_recv(i2c, addr, resp, 2);
+ g_assert_cmphex(resp[0], ==, cmd[1]);
+ g_assert_cmphex(resp[1], ==, cmd[2]);
+}
+
+int main(int argc, char **argv)
+{
+ QTestState *s = NULL;
+ int ret;
+
+ g_test_init(&argc, &argv, NULL);
+
+ s = qtest_start("-display none -machine n800");
+ i2c = omap_i2c_create(OMAP2_I2C_1_BASE);
+ addr = N8X0_ADDR;
+
+ qtest_add_func("/tmp105/tx-rx", send_and_receive);
+
+ ret = g_test_run();
+
+ if (s) {
+ qtest_quit(s);
+ }
+ g_free(i2c);
+
+ return ret;
+}
--
1.7.10.4
- [Qemu-devel] [PATCH for-1.4 v4 0/6] I2C libqos and tmp105 qtest support, Andreas Färber, 2013/01/15
- [Qemu-devel] [PATCH for-1.4 v4 2/6] tmp105: Split out I2C message constants from header, Andreas Färber, 2013/01/15
- [Qemu-devel] [PATCH for-1.4 v4 5/6] tmp105: QOM'ify, Andreas Färber, 2013/01/15
- [Qemu-devel] [PATCH for-1.4 v4 3/6] tmp105: Fix I2C protocol bug, Andreas Färber, 2013/01/15
- [Qemu-devel] [PATCH for-1.4 v4 1/6] libqtest: Prepare I2C libqos, Andreas Färber, 2013/01/15
- [Qemu-devel] [PATCH for-1.4 v4 6/6] tmp105: Add temperature QOM property, Andreas Färber, 2013/01/15
- [Qemu-devel] [PATCH for-1.4 v4 4/6] tests: Add tmp105 qtest test case,
Andreas Färber <=
- Re: [Qemu-devel] [PATCH for-1.4 v4 0/6] I2C libqos and tmp105 qtest support, Anthony Liguori, 2013/01/21