aboutsummaryrefslogtreecommitdiff
path: root/include/hw/gpio/pca9552.h
diff options
context:
space:
mode:
authorCédric Le Goater <clg@redhat.com>2024-03-25 14:48:32 +0100
committerThomas Huth <thuth@redhat.com>2024-03-25 15:05:38 +0100
commit6328d8ffa6cb9d750e4bfcfd73ac25d3a39ceb63 (patch)
tree07639dcded649a542df4da9750eb4514f65591ce /include/hw/gpio/pca9552.h
parent1967e9e06709c2b3de8b071d94da3856ba5b1ce6 (diff)
misc/pca955*: Move models under hw/gpio
The PCA9552 and PCA9554 devices are both I2C GPIO controllers and the PCA9552 also can drive LEDs. Do all the necessary adjustments to move the models under hw/gpio. Cc: Glenn Miles <milesg@linux.vnet.ibm.com> Signed-off-by: Cédric Le Goater <clg@redhat.com> Message-ID: <20240325134833.1484265-1-clg@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
Diffstat (limited to 'include/hw/gpio/pca9552.h')
-rw-r--r--include/hw/gpio/pca9552.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/include/hw/gpio/pca9552.h b/include/hw/gpio/pca9552.h
new file mode 100644
index 0000000000..c36525f0c3
--- /dev/null
+++ b/include/hw/gpio/pca9552.h
@@ -0,0 +1,38 @@
+/*
+ * PCA9552 I2C LED blinker
+ *
+ * Copyright (c) 2017-2018, IBM Corporation.
+ *
+ * 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 PCA9552_H
+#define PCA9552_H
+
+#include "hw/i2c/i2c.h"
+#include "qom/object.h"
+
+#define TYPE_PCA9552 "pca9552"
+#define TYPE_PCA955X "pca955x"
+typedef struct PCA955xState PCA955xState;
+DECLARE_INSTANCE_CHECKER(PCA955xState, PCA955X,
+ TYPE_PCA955X)
+
+#define PCA955X_NR_REGS 10
+#define PCA955X_PIN_COUNT_MAX 16
+
+struct PCA955xState {
+ /*< private >*/
+ I2CSlave i2c;
+ /*< public >*/
+
+ uint8_t len;
+ uint8_t pointer;
+
+ uint8_t regs[PCA955X_NR_REGS];
+ qemu_irq gpio_out[PCA955X_PIN_COUNT_MAX];
+ uint8_t ext_state[PCA955X_PIN_COUNT_MAX];
+ char *description; /* For debugging purpose only */
+};
+
+#endif