aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorThanos Makatos <thanos.makatos@nutanix.com>2021-07-12 09:20:54 +0100
committerGitHub <noreply@github.com>2021-07-12 09:20:54 +0100
commitf44091db918d54211cb43683b091c61a6177d450 (patch)
treec15a7fbeaec11ad86bc77a5e4ed141e1348d239c /include
parentb5164c73125ab4bbb6e3e7742efbeb358e85e872 (diff)
downloadlibvfio-user-f44091db918d54211cb43683b091c61a6177d450.zip
libvfio-user-f44091db918d54211cb43683b091c61a6177d450.tar.gz
libvfio-user-f44091db918d54211cb43683b091c61a6177d450.tar.bz2
basic write support for PXLC, PXSC, PXRS, and PXSC2 (#575)
Signed-off-by: Thanos Makatos <thanos.makatos@nutanix.com> Reviewed-by: John Levon <john.levon@nutanix.com>
Diffstat (limited to 'include')
-rw-r--r--include/pci_caps/px.h22
1 files changed, 18 insertions, 4 deletions
diff --git a/include/pci_caps/px.h b/include/pci_caps/px.h
index e2eb36c..cd3c2f7 100644
--- a/include/pci_caps/px.h
+++ b/include/pci_caps/px.h
@@ -98,10 +98,24 @@ struct pxlcap {
} __attribute__((packed));
_Static_assert(sizeof(struct pxlcap) == 0x4, "bad PXLCAP size");
-struct pxlc {
- uint16_t stuff:16;
+union pxlc {
+ uint16_t raw;
+ struct {
+ uint16_t aspmc:2; /* Active State Power Management Control */
+ uint16_t rsvdp1:1;
+ uint16_t rcb:1; /* Read Completion Boundary */
+ uint16_t ld:1; /* Link Disable */
+ uint16_t rl:1; /* Retrain Link */
+ uint16_t ccc:1; /* Common Clock Configuration */
+ uint16_t es:1; /* Extended Synch */
+ uint16_t clkreq_en:1; /* Enable Clock Power Management */
+ uint16_t hawd:1; /* Hardware Autonomous Width Disable */
+ uint16_t lbmie:1; /* Link Bandwidth Management Interrupt Enable */
+ uint16_t labie:1; /* Link Autonomous Bandwidth Interrupt Enable */
+ uint16_t rsvdp2:4;
+ };
} __attribute__((packed));
-_Static_assert(sizeof(struct pxlc) == 0x2, "bad PXLC size");
+_Static_assert(sizeof(union pxlc) == 0x2, "bad PXLC size");
struct pxls {
uint16_t stuff:16;
@@ -239,7 +253,7 @@ struct pxcap {
/* Link Capabilities */
struct pxlcap pxlcap;
/* Link Control */
- struct pxlc pxlc;
+ union pxlc pxlc;
/* Link Status */
struct pxls pxls;
/* Slot Capabilities */