Commit d566811a authored by John Snow's avatar John Snow
Browse files

ahci: adjust ahci_mem_write to work on registers



Actually, this function looks pretty broken, but for now, let's finish
up what this series of commits came here to do.

Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
Message-id: 20180531222835.16558-15-jsnow@redhat.com
Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
parent 467378ba
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -468,11 +468,14 @@ static void ahci_mem_write(void *opaque, hwaddr addr,
    }

    if (addr < AHCI_GENERIC_HOST_CONTROL_REGS_MAX_ADDR) {
        switch (addr) {
        case HOST_CAP: /* R/WO, RO */
        enum AHCIHostReg regnum = addr / 4;
        assert(regnum < AHCI_HOST_REG__COUNT);

        switch (regnum) {
        case AHCI_HOST_REG_CAP: /* R/WO, RO */
            /* FIXME handle R/WO */
            break;
        case HOST_CTL: /* R/W */
        case AHCI_HOST_REG_CTL: /* R/W */
            if (val & HOST_CTL_RESET) {
                ahci_reset(s);
            } else {
@@ -480,14 +483,14 @@ static void ahci_mem_write(void *opaque, hwaddr addr,
                ahci_check_irq(s);
            }
            break;
        case HOST_IRQ_STAT: /* R/WC, RO */
        case AHCI_HOST_REG_IRQ_STAT: /* R/WC, RO */
            s->control_regs.irqstatus &= ~val;
            ahci_check_irq(s);
            break;
        case HOST_PORTS_IMPL: /* R/WO, RO */
        case AHCI_HOST_REG_PORTS_IMPL: /* R/WO, RO */
            /* FIXME handle R/WO */
            break;
        case HOST_VERSION: /* RO */
        case AHCI_HOST_REG_VERSION: /* RO */
            /* FIXME report write? */
            break;
        default: