hw/sensor/tmp105: Lower 4 bit of limit registers are always 0
Per datasheet, "HIGH AND LOW LIMIT REGISTERS", the lower 4 bit of the limit registers are unused and always report 0. The lower 4 bit should not be used for temperature comparisons, so mask the unused bits before storing the limits. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Cédric Le Goater <clg@kaod.org> Message-Id: <20240906154911.86803-6-philmd@linaro.org> [PMD: Update tests/qtest/ files] Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
parent
bf4e487057
commit
3a0b75880a
@ -171,7 +171,7 @@ static void tmp105_write(TMP105State *s)
|
||||
case TMP105_REG_T_HIGH:
|
||||
if (s->len >= 3) {
|
||||
s->limit[s->pointer & 1] = (int16_t)
|
||||
((((uint16_t) s->buf[0]) << 8) | s->buf[1]);
|
||||
((((uint16_t) s->buf[0]) << 8) | (s->buf[1] & 0xf0));
|
||||
}
|
||||
tmp105_alarm_update(s, false);
|
||||
break;
|
||||
|
@ -81,7 +81,7 @@ static void test_i2c_read_write(gconstpointer data)
|
||||
g_assert_cmpint(i2cdata, ==, 0xde);
|
||||
|
||||
i2cdata = readl(base_addr + BCM2835_I2C_FIFO);
|
||||
g_assert_cmpint(i2cdata, ==, 0xad);
|
||||
g_assert_cmpint(i2cdata, ==, 0xa0);
|
||||
|
||||
/* Clear flags */
|
||||
writel(base_addr + BCM2835_I2C_S, BCM2835_I2C_S_DONE | BCM2835_I2C_S_ERR |
|
||||
|
@ -100,9 +100,9 @@ static void send_and_receive(void *obj, void *data, QGuestAllocator *alloc)
|
||||
g_assert_cmphex(value, ==, 0x14f0);
|
||||
|
||||
i2c_set16(i2cdev, TMP105_REG_T_LOW, 0x1234);
|
||||
g_assert_cmphex(i2c_get16(i2cdev, TMP105_REG_T_LOW), ==, 0x1234);
|
||||
g_assert_cmphex(i2c_get16(i2cdev, TMP105_REG_T_LOW), ==, 0x1230);
|
||||
i2c_set16(i2cdev, TMP105_REG_T_HIGH, 0x4231);
|
||||
g_assert_cmphex(i2c_get16(i2cdev, TMP105_REG_T_HIGH), ==, 0x4231);
|
||||
g_assert_cmphex(i2c_get16(i2cdev, TMP105_REG_T_HIGH), ==, 0x4230);
|
||||
}
|
||||
|
||||
static void tmp105_register_nodes(void)
|
||||
|
Loading…
x
Reference in New Issue
Block a user