All of lore.kernel.org
 help / color / mirror / Atom feed
From: Glenn Miles <milesg@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org
Cc: "Glenn Miles" <milesg@linux.vnet.ibm.com>,
	"Cédric Le Goater" <clg@kaod.org>,
	"Nicholas Piggin" <npiggin@gmail.com>,
	"Frédéric Barrat" <fbarrat@linux.ibm.com>,
	"Andrew Jeffery" <andrew@codeconstruct.com.au>
Subject: [PATCH v4 01/11] misc/pca9552: Fix inverted input status
Date: Mon, 20 Nov 2023 17:51:02 -0600	[thread overview]
Message-ID: <20231120235112.1951342-2-milesg@linux.vnet.ibm.com> (raw)
In-Reply-To: <20231120235112.1951342-1-milesg@linux.vnet.ibm.com>

The pca9552 INPUT0 and INPUT1 registers are supposed to
hold the logical values of the LED pins.  A logical 0
should be seen in the INPUT0/1 registers for a pin when
its corresponding LSn bits are set to 0, which is also
the state needed for turning on an LED in a typical
usage scenario.  Existing code was doing the opposite
and setting INPUT0/1 bit to a 1 when the LSn bit was
set to 0, so this commit fixes that.

Reviewed-by: Andrew Jeffery <andrew@codeconstruct.com.au>
Signed-off-by: Glenn Miles <milesg@linux.vnet.ibm.com>
---

No changes from previous version

 hw/misc/pca9552.c          | 18 +++++++++++++-----
 tests/qtest/pca9552-test.c |  6 +++---
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/hw/misc/pca9552.c b/hw/misc/pca9552.c
index fff19e369a..445f56a9e8 100644
--- a/hw/misc/pca9552.c
+++ b/hw/misc/pca9552.c
@@ -36,7 +36,10 @@ typedef struct PCA955xClass PCA955xClass;
 
 DECLARE_CLASS_CHECKERS(PCA955xClass, PCA955X,
                        TYPE_PCA955X)
-
+/*
+ * Note:  The LED_ON and LED_OFF configuration values for the PCA955X
+ *        chips are the reverse of the PCA953X family of chips.
+ */
 #define PCA9552_LED_ON   0x0
 #define PCA9552_LED_OFF  0x1
 #define PCA9552_LED_PWM0 0x2
@@ -112,13 +115,18 @@ static void pca955x_update_pin_input(PCA955xState *s)
 
         switch (config) {
         case PCA9552_LED_ON:
-            qemu_set_irq(s->gpio[i], 1);
-            s->regs[input_reg] |= 1 << input_shift;
-            break;
-        case PCA9552_LED_OFF:
+            /* Pin is set to 0V to turn on LED */
             qemu_set_irq(s->gpio[i], 0);
             s->regs[input_reg] &= ~(1 << input_shift);
             break;
+        case PCA9552_LED_OFF:
+            /*
+             * Pin is set to Hi-Z to turn off LED and
+             * pullup sets it to a logical 1.
+             */
+            qemu_set_irq(s->gpio[i], 1);
+            s->regs[input_reg] |= 1 << input_shift;
+            break;
         case PCA9552_LED_PWM0:
         case PCA9552_LED_PWM1:
             /* TODO */
diff --git a/tests/qtest/pca9552-test.c b/tests/qtest/pca9552-test.c
index d80ed93cd3..ccca2b3d91 100644
--- a/tests/qtest/pca9552-test.c
+++ b/tests/qtest/pca9552-test.c
@@ -60,7 +60,7 @@ static void send_and_receive(void *obj, void *data, QGuestAllocator *alloc)
     g_assert_cmphex(value, ==, 0x55);
 
     value = i2c_get8(i2cdev, PCA9552_INPUT0);
-    g_assert_cmphex(value, ==, 0x0);
+    g_assert_cmphex(value, ==, 0xFF);
 
     pca9552_init(i2cdev);
 
@@ -68,13 +68,13 @@ static void send_and_receive(void *obj, void *data, QGuestAllocator *alloc)
     g_assert_cmphex(value, ==, 0x54);
 
     value = i2c_get8(i2cdev, PCA9552_INPUT0);
-    g_assert_cmphex(value, ==, 0x01);
+    g_assert_cmphex(value, ==, 0xFE);
 
     value = i2c_get8(i2cdev, PCA9552_LS3);
     g_assert_cmphex(value, ==, 0x54);
 
     value = i2c_get8(i2cdev, PCA9552_INPUT1);
-    g_assert_cmphex(value, ==, 0x10);
+    g_assert_cmphex(value, ==, 0xEF);
 }
 
 static void pca9552_register_nodes(void)
-- 
2.31.1



  reply	other threads:[~2023-11-20 23:53 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-20 23:51 [PATCH v4 00/11] Add powernv10 I2C devices and tests Glenn Miles
2023-11-20 23:51 ` Glenn Miles [this message]
2023-11-20 23:51 ` [PATCH v4 02/11] misc/pca9552: Let external devices set pca9552 inputs Glenn Miles
2023-11-20 23:51 ` [PATCH v4 03/11] ppc/pnv: New powernv10-rainier machine type Glenn Miles
2023-11-21  1:33   ` Nicholas Piggin
2023-11-21  7:29     ` Cédric Le Goater
2023-11-21 16:36       ` Miles Glenn
2023-11-21 18:17         ` Cédric Le Goater
2023-11-21 18:26         ` Cédric Le Goater
2023-11-21 18:31           ` Miles Glenn
2023-11-23  1:46       ` Nicholas Piggin
2023-11-21  6:46   ` Cédric Le Goater
2023-11-21 17:58     ` Miles Glenn
2023-11-20 23:51 ` [PATCH v4 04/11] ppc/pnv: Add pca9552 to powernv10-rainier for PCIe hotplug power control Glenn Miles
2023-11-21  6:53   ` Cédric Le Goater
2023-11-20 23:51 ` [PATCH v4 05/11] ppc/pnv: Wire up pca9552 GPIO pins " Glenn Miles
2023-11-21 18:36   ` Cédric Le Goater
2023-11-21 20:03     ` Miles Glenn
2023-11-22  7:44       ` Cédric Le Goater
2023-11-20 23:51 ` [PATCH v4 06/11] ppc/pnv: PNV I2C engines assigned incorrect XSCOM addresses Glenn Miles
2023-11-21 18:18   ` Cédric Le Goater
2023-11-20 23:51 ` [PATCH v4 07/11] ppc/pnv: Fix PNV I2C invalid status after reset Glenn Miles
2023-11-21 18:19   ` Cédric Le Goater
2023-11-20 23:51 ` [PATCH v4 08/11] ppc/pnv: Use resettable interface to reset child I2C buses Glenn Miles
2023-11-21 18:20   ` Cédric Le Goater
2023-11-20 23:51 ` [PATCH v4 09/11] misc: Add a pca9554 GPIO device model Glenn Miles
2023-11-20 23:51 ` [PATCH v4 10/11] ppc/pnv: Add a pca9554 I2C device to powernv10-rainier Glenn Miles
2023-11-21 18:18   ` Cédric Le Goater
2023-11-20 23:51 ` [PATCH v4 11/11] ppc/pnv: Test pnv i2c master and connected devices Glenn Miles

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=20231120235112.1951342-2-milesg@linux.vnet.ibm.com \
    --to=milesg@linux.vnet.ibm.com \
    --cc=andrew@codeconstruct.com.au \
    --cc=clg@kaod.org \
    --cc=fbarrat@linux.ibm.com \
    --cc=npiggin@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /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.