xref: /qemu/include/hw/sensor/tmp105.h (revision 727385c4)
1 /*
2  * Texas Instruments TMP105 Temperature Sensor
3  *
4  * Browse the data sheet:
5  *
6  *    http://www.ti.com/lit/gpn/tmp105
7  *
8  * Copyright (C) 2012 Alex Horn <alex.horn@cs.ox.ac.uk>
9  * Copyright (C) 2008-2012 Andrzej Zaborowski <balrogg@gmail.com>
10  *
11  * This work is licensed under the terms of the GNU GPL, version 2 or
12  * later. See the COPYING file in the top-level directory.
13  */
14 #ifndef QEMU_TMP105_H
15 #define QEMU_TMP105_H
16 
17 #include "hw/i2c/i2c.h"
18 #include "hw/sensor/tmp105_regs.h"
19 #include "qom/object.h"
20 
21 #define TYPE_TMP105 "tmp105"
22 OBJECT_DECLARE_SIMPLE_TYPE(TMP105State, TMP105)
23 
24 /**
25  * TMP105State:
26  * @config: Bits 5 and 6 (value 32 and 64) determine the precision of the
27  * temperature. See Table 8 in the data sheet.
28  *
29  * @see_also: http://www.ti.com/lit/gpn/tmp105
30  */
31 struct TMP105State {
32     /*< private >*/
33     I2CSlave i2c;
34     /*< public >*/
35 
36     uint8_t len;
37     uint8_t buf[2];
38     qemu_irq pin;
39 
40     uint8_t pointer;
41     uint8_t config;
42     int16_t temperature;
43     int16_t limit[2];
44     int faults;
45     uint8_t alarm;
46     /*
47      * The TMP105 initially looks for a temperature rising above T_high;
48      * once this is detected, the condition it looks for next is the
49      * temperature falling below T_low. This flag is false when initially
50      * looking for T_high, true when looking for T_low.
51      */
52     bool detect_falling;
53 };
54 
55 #endif
56