[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL for-2.0 13/16] tmp105: Read temperature in milli-cels
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PULL for-2.0 13/16] tmp105: Read temperature in milli-celsius |
Date: |
Mon, 31 Mar 2014 23:10:59 +0200 |
From: Paolo Bonzini <address@hidden>
Right now, the temperature property must be written in milli-celsius,
but it reads back the value in 8.8 fixed point. Fix this by letting the
property read back the original value (possibly rounded). Also simplify
the code that does the conversion.
Before:
(QEMU) qom-set path=/machine/peripheral/sensor property=temperature
value=20000
{u'return': {}}
(QEMU) qom-get path=sensor property=temperature
{u'return': 5120}
After:
(QEMU) qom-set path=/machine/peripheral/sensor property=temperature
value=20000
{u'return': {}}
(QEMU) qom-get path=sensor property=temperature
{u'return': 20000}
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>
---
hw/misc/tmp105.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/hw/misc/tmp105.c b/hw/misc/tmp105.c
index 155e03d..63aa3d6 100644
--- a/hw/misc/tmp105.c
+++ b/hw/misc/tmp105.c
@@ -56,12 +56,14 @@ static void tmp105_get_temperature(Object *obj, Visitor *v,
void *opaque,
const char *name, Error **errp)
{
TMP105State *s = TMP105(obj);
- int64_t value = s->temperature;
+ int64_t value = s->temperature * 1000 / 256;
visit_type_int(v, &value, name, errp);
}
-/* Units are 0.001 centigrades relative to 0 C. */
+/* Units are 0.001 centigrades relative to 0 C. s->temperature is 8.8
+ * fixed point, so units are 1/256 centigrades. A simple ratio will do.
+ */
static void tmp105_set_temperature(Object *obj, Visitor *v, void *opaque,
const char *name, Error **errp)
{
@@ -78,7 +80,7 @@ static void tmp105_set_temperature(Object *obj, Visitor *v,
void *opaque,
return;
}
- s->temperature = ((int16_t) (temp * 0x800 / 128000)) << 4;
+ s->temperature = (int16_t) (temp * 256 / 1000);
tmp105_alarm_update(s);
}
--
1.8.4.5
- [Qemu-devel] [PULL for-2.0 04/16] tests: Skip POSIX-only tests on Windows, (continued)
- [Qemu-devel] [PULL for-2.0 04/16] tests: Skip POSIX-only tests on Windows, Andreas Färber, 2014/03/31
- [Qemu-devel] [PULL for-2.0 07/16] tests: Add nvme qtest, Andreas Färber, 2014/03/31
- [Qemu-devel] [PULL for-2.0 08/16] tests: Add virtio-9p qtest, Andreas Färber, 2014/03/31
- [Qemu-devel] [PULL for-2.0 06/16] nvme: Permit zero-length block devices, Andreas Färber, 2014/03/31
- [Qemu-devel] [PULL for-2.0 05/16] tests: Correctly skip qtest on non-POSIX hosts, Andreas Färber, 2014/03/31
- [Qemu-devel] [PULL for-2.0 01/16] Revert "qtest: Fix crash if SIGABRT during qtest_init()", Andreas Färber, 2014/03/31
- [Qemu-devel] [PULL for-2.0 10/16] qtest: Factor out qtest_qmp_receive(), Andreas Färber, 2014/03/31
- [Qemu-devel] [PULL for-2.0 11/16] pvpanic-test: Assert pause event, Andreas Färber, 2014/03/31
- [Qemu-devel] [PULL for-2.0 12/16] tests: Add i82801b11 qtest, Andreas Färber, 2014/03/31
- [Qemu-devel] [PULL for-2.0 09/16] tests: Add pvpanic qtest, Andreas Färber, 2014/03/31
- [Qemu-devel] [PULL for-2.0 13/16] tmp105: Read temperature in milli-celsius,
Andreas Färber <=
- [Qemu-devel] [PULL for-2.0 15/16] tmp105-test: Add a second sensor and test that one, Andreas Färber, 2014/03/31
- [Qemu-devel] [PULL for-2.0 14/16] tmp105-test: Wrap simple building blocks for testing, Andreas Färber, 2014/03/31
- [Qemu-devel] [PULL for-2.0 16/16] tmp105-test: Test QOM property and precision, Andreas Färber, 2014/03/31