aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2024-05-02 01:02:42 -0400
committerIan Moffett <ian@osmora.org>2024-05-02 01:02:42 -0400
commitd418c7c4cf93b050f651000a36ca8aebade7e123 (patch)
treeaa8f0f36dccd37fed1da8165a05270c694fe11da
parentf14a6be0eb19a6f47fa4c8ae9c4df9b82a158642 (diff)
kernel: pci: Add more register definitions
Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r--sys/include/dev/pci/pciregs.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/sys/include/dev/pci/pciregs.h b/sys/include/dev/pci/pciregs.h
index 732e88c..13a9fc0 100644
--- a/sys/include/dev/pci/pciregs.h
+++ b/sys/include/dev/pci/pciregs.h
@@ -32,9 +32,35 @@
#include <sys/cdefs.h>
+#define PCIREG_VENDOR_ID 0x00 /* 16 bits */
+#define PCIREG_DEVICE_ID 0x02 /* 16 bits */
+#define PCIREG_CLASSREV 0x08 /* 32 bits */
+#define PCIREG_BAR0 0x10 /* 32 bits */
+#define PCIREG_BAR1 0x14 /* 32 bits */
+#define PCIREG_BAR2 0x18 /* 32 bits */
+#define PCIREG_BAR3 0x1C /* 32 bits */
+#define PCIREG_BAR4 0x20 /* 32 bits */
+#define PCIREG_BAR5 0x24 /* 32 bits */
+#define PCIREG_IRQLINE 0x3C /* 8 bits */
+#define PCIREG_CMDSTATUS 0x04 /* command (15:0), status (31:16) */
+
+/* Macros to extract PCIREG_CLASSREV bits */
+#define PCIREG_CLASS(CLASSREV) (CLASSREV >> 24)
+#define PCIREG_SUBCLASS(CLASSREV) ((CLASSREV >> 16) & 0xFF)
+#define PCIREG_REVID(CLASSREV) (CLASSREV & 0xFF)
+#define PCIREG_PROGIF(CLASSREV) ((CLASSREV >> 8) & 0xFF)
+
+/* Macros to extract PCIREG_CMDSTATUS bits */
+#define PCIREG_COMMAND(CMDSTATUS) (CMDSTATUS & 0xFFFF)
+#define PCIREG_STATUS(CMDSTATUS) (CMDSTATUS >> 16)
+
/* PCI command register bits */
#define PCI_IO_SPACE __BIT(0) /* Respond to I/O space accesses */
#define PCI_MEM_SPACE __BIT(1) /* Respond to mem space accesses */
#define PCI_BUS_MASTERING __BIT(2) /* Enable bus mastering */
+/* PCI status register bits */
+#define PCI_STATUS_CAPLIST __BIT(4)
+#define PCI_STATUS_66MHZ __BIT(5)
+
#endif /* !_PCIREGS_H_ */