From 4882f359493cd02d7a5caa7b85d2e1bc4b2f8177 Mon Sep 17 00:00:00 2001 From: John Snow Date: Mon, 19 Jan 2015 15:16:00 -0500 Subject: libqos/ahci: Functional register helpers Introduce a set of "static inline" register helpers that are intended to replace the current set of macros with more functional versions that are better suited to inclusion in libqos than porcelain macros. As a stopgap measure before eliminating the porcelain macros, define them to use the new functions defined in the ahci.h header. Signed-off-by: John Snow Reviewed-by: Paolo Bonzini Message-id: 1421698563-6977-13-git-send-email-jsnow@redhat.com Signed-off-by: Stefan Hajnoczi --- tests/ahci-test.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'tests/ahci-test.c') diff --git a/tests/ahci-test.c b/tests/ahci-test.c index bb98968..25e54b8 100644 --- a/tests/ahci-test.c +++ b/tests/ahci-test.c @@ -47,22 +47,19 @@ static char tmp_path[] = "/tmp/qtest.XXXXXX"; static bool ahci_pedantic; /*** IO macros for the AHCI memory registers. ***/ -#define AHCI_READ(OFST) qpci_io_readl(ahci->dev, ahci->hba_base + (OFST)) -#define AHCI_WRITE(OFST, VAL) qpci_io_writel(ahci->dev, \ - ahci->hba_base + (OFST), (VAL)) -#define AHCI_RREG(regno) AHCI_READ(4 * (regno)) -#define AHCI_WREG(regno, val) AHCI_WRITE(4 * (regno), (val)) -#define AHCI_SET(regno, mask) AHCI_WREG((regno), AHCI_RREG(regno) | (mask)) -#define AHCI_CLR(regno, mask) AHCI_WREG((regno), AHCI_RREG(regno) & ~(mask)) +#define AHCI_READ(OFST) ahci_mread(ahci, (OFST)) +#define AHCI_WRITE(OFST, VAL) ahci_mwrite(ahci, (OFST), (VAL)) +#define AHCI_RREG(regno) ahci_rreg(ahci, (regno)) +#define AHCI_WREG(regno, val) ahci_wreg(ahci, (regno), (val)) +#define AHCI_SET(regno, mask) ahci_set(ahci, (regno), (mask)) +#define AHCI_CLR(regno, mask) ahci_clr(ahci, (regno), (mask)) /*** IO macros for port-specific offsets inside of AHCI memory. ***/ -#define PX_OFST(port, regno) (HBA_PORT_NUM_REG * (port) + AHCI_PORTS + (regno)) -#define PX_RREG(port, regno) AHCI_RREG(PX_OFST((port), (regno))) -#define PX_WREG(port, regno, val) AHCI_WREG(PX_OFST((port), (regno)), (val)) -#define PX_SET(port, reg, mask) PX_WREG((port), (reg), \ - PX_RREG((port), (reg)) | (mask)); -#define PX_CLR(port, reg, mask) PX_WREG((port), (reg), \ - PX_RREG((port), (reg)) & ~(mask)); +#define PX_OFST(port, regno) ahci_px_ofst((port), (regno)) +#define PX_RREG(port, regno) ahci_px_rreg(ahci, (port), (regno)) +#define PX_WREG(port, regno, val) ahci_px_wreg(ahci, (port), (regno), (val)) +#define PX_SET(port, reg, mask) ahci_px_set(ahci, (port), (reg), (mask)) +#define PX_CLR(port, reg, mask) ahci_px_clr(ahci, (port), (reg), (mask)) /*** Function Declarations ***/ static QPCIDevice *get_ahci_device(uint32_t *fingerprint); -- cgit v1.1