From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:46467) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tmt4V-0008Hu-54 for qemu-devel@nongnu.org; Sun, 23 Dec 2012 16:27:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tmt4S-0002rU-0Y for qemu-devel@nongnu.org; Sun, 23 Dec 2012 16:26:59 -0500 Received: from mail-ob0-f178.google.com ([209.85.214.178]:44203) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tmt4R-0002rO-Q4 for qemu-devel@nongnu.org; Sun, 23 Dec 2012 16:26:55 -0500 Received: by mail-ob0-f178.google.com with SMTP id eh20so6259122obb.9 for ; Sun, 23 Dec 2012 13:26:55 -0800 (PST) From: Anthony Liguori In-Reply-To: <1354710846-10687-1-git-send-email-alex.horn@cs.ox.ac.uk> References: <1354710846-10687-1-git-send-email-alex.horn@cs.ox.ac.uk> Date: Sun, 23 Dec 2012 15:26:53 -0600 Message-ID: <87fw2wtq76.fsf@codemonkey.ws> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: Re: [Qemu-devel] [PATCH 1/1] tmp105: Create API for TMP105 temperature sensor. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alex Horn , qemu-devel@nongnu.org, afaerber@suse.de Cc: peter.maydell@linaro.org Alex Horn writes: > * Define enum for TMP105 registers > * Move tmp105_set() from I2C to TMP105 header > * Document units and range of temperature as preconditions > > Signed-off-by: Alex Horn Applied. Thanks. Regards, Anthony Liguori > --- > hw/i2c.h | 3 -- > hw/tmp105.c | 17 ++++++++------- > hw/tmp105.h | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 76 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..51eff4b > --- /dev/null > +++ b/hw/tmp105.h > @@ -0,0 +1,67 @@ > +/* > + * Texas Instruments TMP105 Temperature Sensor > + * > + * Browse the data sheet: > + * > + * http://www.ti.com/lit/gpn/tmp105 > + * > + * Copyright (C) 2012 Alex Horn > + * Copyright (C) 2008-2012 Andrzej Zaborowski > + * > + * This work is licensed under the terms of the GNU GPL, version 2 or > + * later. See the COPYING file in the top-level directory. > + */ > +#ifndef QEMU_TMP105_H > +#define QEMU_TMP105_H > + > +#include "i2c.h" > + > +/** > + * TMP105Reg: > + * @TMP105_REG_TEMPERATURE: Temperature register > + * @TMP105_REG_CONFIG: Configuration register > + * @TMP105_REG_T_LOW: Low temperature register (also known as T_hyst) > + * @TMP105_REG_T_HIGH: High temperature register (also known as T_OS) > + * > + * 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 > + **/ > +typedef enum TMP105Reg { > + TMP105_REG_TEMPERATURE = 0, > + TMP105_REG_CONFIG, > + TMP105_REG_T_LOW, > + TMP105_REG_T_HIGH, > +} TMP105Reg; > + > +/** > + * tmp105_set: > + * @i2c: dispatcher to TMP105 hardware model > + * @temp: temperature with 0.001 centigrades units in the range -40 C to +125 C > + * > + * Sets the temperature of the TMP105 hardware model. > + * > + * Bits 5 and 6 (value 32 and 64) in the register indexed by TMP105_REG_CONFIG > + * determine the precision of the temperature. See Table 8 in the data sheet. > + * > + * @see_also: I2C_SLAVE macro > + * @see_also: http://www.ti.com/lit/gpn/tmp105 > + */ > +void tmp105_set(I2CSlave *i2c, int temp); > + > +#endif > -- > 1.7.6.5