All of lore.kernel.org
 help / color / mirror / Atom feed
From: Titus Rwantare <titusr@google.com>
To: Corey Minyard <minyard@acm.org>
Cc: qemu-arm@nongnu.org, qemu-devel@nongnu.org, f4bug@amsat.org,
	 wuhaotsh@google.com, venture@google.com,
	Shengtan Mao <stmao@google.com>,
	 Titus Rwantare <titusr@google.com>
Subject: [PATCH v2 5/9] hw/i2c: Added linear mode translation for pmbus devices
Date: Tue,  1 Mar 2022 16:23:03 -0800	[thread overview]
Message-ID: <20220302002307.1895616-6-titusr@google.com> (raw)
In-Reply-To: <20220302002307.1895616-1-titusr@google.com>

From: Shengtan Mao <stmao@google.com>

Signed-off-by: Shengtan Mao <stmao@google.com>
Reviewed-by: Titus Rwantare <titusr@google.com>
---
 hw/i2c/pmbus_device.c         | 18 ++++++++++++++++++
 include/hw/i2c/pmbus_device.h | 20 +++++++++++++++++++-
 2 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/hw/i2c/pmbus_device.c b/hw/i2c/pmbus_device.c
index 3beb02afad..1036c41c49 100644
--- a/hw/i2c/pmbus_device.c
+++ b/hw/i2c/pmbus_device.c
@@ -28,6 +28,24 @@ uint32_t pmbus_direct_mode2data(PMBusCoefficients c, uint16_t value)
     return x;
 }
 
+uint16_t pmbus_data2linear_mode(uint16_t value, int exp)
+{
+    /* L = D * 2^(-e) */
+    if (exp < 0) {
+        return value << (-exp);
+    }
+    return value >> exp;
+}
+
+uint16_t pmbus_linear_mode2data(uint16_t value, int exp)
+{
+    /* D = L * 2^e */
+    if (exp < 0) {
+        return value >> (-exp);
+    }
+    return value << exp;
+}
+
 void pmbus_send(PMBusDevice *pmdev, const uint8_t *data, uint16_t len)
 {
     if (pmdev->out_buf_len + len > SMBUS_DATA_MAX_LEN) {
diff --git a/include/hw/i2c/pmbus_device.h b/include/hw/i2c/pmbus_device.h
index 72c0483149..9a274247ab 100644
--- a/include/hw/i2c/pmbus_device.h
+++ b/include/hw/i2c/pmbus_device.h
@@ -446,7 +446,7 @@ typedef struct PMBusCoefficients {
  *
  * Y = (m * x - b) * 10^R
  *
- * @return uint32_t
+ * @return uint16_t
  */
 uint16_t pmbus_data2direct_mode(PMBusCoefficients c, uint32_t value);
 
@@ -459,6 +459,24 @@ uint16_t pmbus_data2direct_mode(PMBusCoefficients c, uint32_t value);
  */
 uint32_t pmbus_direct_mode2data(PMBusCoefficients c, uint16_t value);
 
+/**
+ * Convert sensor values to linear mode format
+ *
+ * L = D * 2^(-e)
+ *
+ * @return uint16
+ */
+uint16_t pmbus_data2linear_mode(uint16_t value, int exp);
+
+/**
+ * Convert linear mode formatted data into sensor reading
+ *
+ * D = L * 2^e
+ *
+ * @return uint16
+ */
+uint16_t pmbus_linear_mode2data(uint16_t value, int exp);
+
 /**
  * @brief Send a block of data over PMBus
  * Assumes that the bytes in the block are already ordered correctly,
-- 
2.35.1.616.g0bdcbb4464-goog


  parent reply	other threads:[~2022-03-02  0:29 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-02  0:22 [PATCH v2 0/9] Fixups for PMBus and new sensors Titus Rwantare
2022-03-02  0:22 ` [PATCH v2 1/9] hw/i2c: pmbus: add registers Titus Rwantare
2022-03-02  0:23 ` [PATCH v2 2/9] hw/i2c: pmbus: guard against out of range accesses Titus Rwantare
2022-03-02  0:23 ` [PATCH v2 3/9] hw/i2c: pmbus: add PEC unsupported warning Titus Rwantare
2022-03-02  0:23 ` [PATCH v2 4/9] hw/i2c: pmbus: refactor uint handling and update MAINTAINERS Titus Rwantare
2022-03-02  0:38   ` Corey Minyard
2022-03-02  0:23 ` Titus Rwantare [this message]
2022-03-02  0:23 ` [PATCH v2 6/9] hw/sensor: add Intersil ISL69260 device model Titus Rwantare
2022-03-02  0:23 ` [PATCH v2 7/9] hw/sensor: add Renesas raa229004 PMBus device Titus Rwantare
2022-03-02  0:23 ` [PATCH v2 8/9] hw/sensor: add Renesas raa228000 device Titus Rwantare
2022-03-02  0:23 ` [PATCH v2 9/9] hw/sensor: rename isl_pmbus to isl_pmbus_vr Titus Rwantare
2022-03-02  0:43   ` Corey Minyard
2022-03-02  0:48     ` Titus Rwantare

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220302002307.1895616-6-titusr@google.com \
    --to=titusr@google.com \
    --cc=f4bug@amsat.org \
    --cc=minyard@acm.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stmao@google.com \
    --cc=venture@google.com \
    --cc=wuhaotsh@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.