From patchwork Tue Dec 4 19:23:13 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Horn X-Patchwork-Id: 203725 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 45BCF2C008F for ; Wed, 5 Dec 2012 06:24:12 +1100 (EST) Received: from localhost ([::1]:50140 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tfy6D-0004VP-Dm for incoming@patchwork.ozlabs.org; Tue, 04 Dec 2012 14:24:09 -0500 Received: from eggs.gnu.org ([208.118.235.92]:58992) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tfy5x-0004UG-JS for qemu-devel@nongnu.org; Tue, 04 Dec 2012 14:24:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tfy5o-0003cd-LZ for qemu-devel@nongnu.org; Tue, 04 Dec 2012 14:23:53 -0500 Received: from relay3.mail.ox.ac.uk ([163.1.2.165]:42810) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tfy5o-0003cS-CZ for qemu-devel@nongnu.org; Tue, 04 Dec 2012 14:23:44 -0500 Received: from mailer.cs.ox.ac.uk ([129.67.151.81]) by relay3.mail.ox.ac.uk with esmtp (Exim 4.75) (envelope-from ) id 1Tfy5m-0005qH-Ai; Tue, 04 Dec 2012 19:23:42 +0000 Received: from dhcp3-nat.cs.ox.ac.uk ([163.1.88.5]:52975 helo=localhost.cs.ox.ac.uk) by mailer.cs.ox.ac.uk with esmtp (Exim 4.76) (envelope-from ) id 1Tfy5m-0005gA-3k; Tue, 04 Dec 2012 19:23:42 +0000 Received: (from ahorn@localhost) by localhost.cs.ox.ac.uk (dcs5.1/8.14.5) id qB4JNg4i027303; Tue, 4 Dec 2012 19:23:42 GMT From: Alex Horn To: qemu-devel@nongnu.org Date: Tue, 4 Dec 2012 19:23:13 +0000 Message-Id: <1354648993-27263-1-git-send-email-alex.horn@cs.ox.ac.uk> X-Mailer: git-send-email 1.7.6.5 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 163.1.2.165 Cc: Alex Horn Subject: [Qemu-devel] [PATCH 1/1] tmp105: Create API for TMP105 temperature sensor. X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org * Define constants for TMP105 registers. * Move tmp105_set() from I2C to TMP105 header. Signed-off-by: Alex Horn --- hw/i2c.h | 3 --- hw/tmp105.c | 17 +++++++++-------- hw/tmp105.h | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 11 deletions(-) create mode 100644 hw/tmp105.h diff --git a/hw/i2c.h b/hw/i2c.h index 0f5682b..883b5c5 100644 --- a/hw/i2c.h +++ b/hw/i2c.h @@ -73,9 +73,6 @@ void *wm8750_dac_buffer(void *opaque, int samples); void wm8750_dac_commit(void *opaque); void wm8750_set_bclk_in(void *opaque, int new_hz); -/* tmp105.c */ -void tmp105_set(I2CSlave *i2c, int temp); - /* lm832x.c */ void lm832x_key_event(DeviceState *dev, int key, int state); diff --git a/hw/tmp105.c b/hw/tmp105.c index 8e8dbd9..9c67e64 100644 --- a/hw/tmp105.c +++ b/hw/tmp105.c @@ -20,6 +20,7 @@ #include "hw.h" #include "i2c.h" +#include "tmp105.h" typedef struct { I2CSlave i2c; @@ -92,22 +93,22 @@ static void tmp105_read(TMP105State *s) } switch (s->pointer & 3) { - case 0: /* Temperature */ + case TMP105_REG_TEMPERATURE: s->buf[s->len ++] = (((uint16_t) s->temperature) >> 8); s->buf[s->len ++] = (((uint16_t) s->temperature) >> 0) & (0xf0 << ((~s->config >> 5) & 3)); /* R */ break; - case 1: /* Configuration */ + case TMP105_REG_CONFIG: s->buf[s->len ++] = s->config; break; - case 2: /* T_LOW */ + case TMP105_REG_T_LOW: s->buf[s->len ++] = ((uint16_t) s->limit[0]) >> 8; s->buf[s->len ++] = ((uint16_t) s->limit[0]) >> 0; break; - case 3: /* T_HIGH */ + case TMP105_REG_T_HIGH: s->buf[s->len ++] = ((uint16_t) s->limit[1]) >> 8; s->buf[s->len ++] = ((uint16_t) s->limit[1]) >> 0; break; @@ -117,10 +118,10 @@ static void tmp105_read(TMP105State *s) static void tmp105_write(TMP105State *s) { switch (s->pointer & 3) { - case 0: /* Temperature */ + case TMP105_REG_TEMPERATURE: break; - case 1: /* Configuration */ + case TMP105_REG_CONFIG: if (s->buf[0] & ~s->config & (1 << 0)) /* SD */ printf("%s: TMP105 shutdown\n", __FUNCTION__); s->config = s->buf[0]; @@ -128,8 +129,8 @@ static void tmp105_write(TMP105State *s) tmp105_alarm_update(s); break; - case 2: /* T_LOW */ - case 3: /* T_HIGH */ + case TMP105_REG_T_LOW: + 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]); diff --git a/hw/tmp105.h b/hw/tmp105.h new file mode 100644 index 0000000..52aa4c9 --- /dev/null +++ b/hw/tmp105.h @@ -0,0 +1,34 @@ +#ifndef QEMU_TMP105_H +#define QEMU_TMP105_H + +#include "i2c.h" + +/* The following temperature sensors are + * compatible with the TMP105 registers: + * + * adt75 + * ds1775 + * ds75 + * lm75 + * lm75a + * max6625 + * max6626 + * mcp980x + * stds75 + * tcn75 + * tmp100 + * tmp101 + * tmp105 + * tmp175 + * tmp275 + * tmp75 + */ +#define TMP105_REG_TEMPERATURE 0 +#define TMP105_REG_CONFIG 1 +#define TMP105_REG_T_LOW 2 /* also known as T_hyst (e.g. LM75) */ +#define TMP105_REG_T_HIGH 3 /* also known as T_OS (e.g. LM75) */ + +/* See also I2C_SLAVE_FROM_QDEV macro */ +void tmp105_set(I2CSlave *i2c, int temp); + +#endif