int reg;
 
        /* Read the interrupt status: */
-       status = ioread32(psp->io_regs + PSP_P2CMSG_INTSTS);
+       status = ioread32(psp->io_regs + psp->vdata->intsts_reg);
 
        /* Check if it is command completion: */
        if (!(status & PSP_CMD_COMPLETE))
                goto done;
 
        /* Check if it is SEV command completion: */
-       reg = ioread32(psp->io_regs + PSP_CMDRESP);
+       reg = ioread32(psp->io_regs + psp->vdata->cmdresp_reg);
        if (reg & PSP_CMDRESP_RESP) {
                psp->sev_int_rcvd = 1;
                wake_up(&psp->sev_int_queue);
 
 done:
        /* Clear the interrupt status by writing the same value we read. */
-       iowrite32(status, psp->io_regs + PSP_P2CMSG_INTSTS);
+       iowrite32(status, psp->io_regs + psp->vdata->intsts_reg);
 
        return IRQ_HANDLED;
 }
 static void sev_wait_cmd_ioc(struct psp_device *psp, unsigned int *reg)
 {
        wait_event(psp->sev_int_queue, psp->sev_int_rcvd);
-       *reg = ioread32(psp->io_regs + PSP_CMDRESP);
+       *reg = ioread32(psp->io_regs + psp->vdata->cmdresp_reg);
 }
 
 static int sev_cmd_buffer_len(int cmd)
        print_hex_dump_debug("(in):  ", DUMP_PREFIX_OFFSET, 16, 2, data,
                             sev_cmd_buffer_len(cmd), false);
 
-       iowrite32(phys_lsb, psp->io_regs + PSP_CMDBUFF_ADDR_LO);
-       iowrite32(phys_msb, psp->io_regs + PSP_CMDBUFF_ADDR_HI);
+       iowrite32(phys_lsb, psp->io_regs + psp->vdata->cmdbuff_addr_lo_reg);
+       iowrite32(phys_msb, psp->io_regs + psp->vdata->cmdbuff_addr_hi_reg);
 
        psp->sev_int_rcvd = 0;
 
        reg = cmd;
        reg <<= PSP_CMDRESP_CMD_SHIFT;
        reg |= PSP_CMDRESP_IOC;
-       iowrite32(reg, psp->io_regs + PSP_CMDRESP);
+       iowrite32(reg, psp->io_regs + psp->vdata->cmdresp_reg);
 
        /* wait for command completion */
        sev_wait_cmd_ioc(psp, ®);
 static int sev_init(struct psp_device *psp)
 {
        /* Check if device supports SEV feature */
-       if (!(ioread32(psp->io_regs + PSP_FEATURE_REG) & 1)) {
+       if (!(ioread32(psp->io_regs + psp->vdata->feature_reg) & 1)) {
                dev_dbg(psp->dev, "device does not support SEV\n");
                return 1;
        }
                goto e_err;
        }
 
-       psp->io_regs = sp->io_map + psp->vdata->offset;
+       psp->io_regs = sp->io_map;
 
        /* Disable and clear interrupts until ready */
-       iowrite32(0, psp->io_regs + PSP_P2CMSG_INTEN);
-       iowrite32(-1, psp->io_regs + PSP_P2CMSG_INTSTS);
+       iowrite32(0, psp->io_regs + psp->vdata->inten_reg);
+       iowrite32(-1, psp->io_regs + psp->vdata->intsts_reg);
 
        /* Request an irq */
        ret = sp_request_psp_irq(psp->sp, psp_irq_handler, psp->name, psp);
                sp->set_psp_master_device(sp);
 
        /* Enable interrupt */
-       iowrite32(-1, psp->io_regs + PSP_P2CMSG_INTEN);
+       iowrite32(-1, psp->io_regs + psp->vdata->inten_reg);
 
        dev_notice(dev, "psp enabled\n");