* Copyright (C) 2013,2016 Advanced Micro Devices, Inc.
  *
  * Author: Tom Lendacky <thomas.lendacky@amd.com>
+ * Author: Gary R Hook <gary.hook@amd.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
 struct ccp_vdata ccpv3 = {
        .version = CCP_VERSION(3, 0),
        .perform = &ccp3_actions,
+       .bar = 2,
+       .offset = 0x20000,
 };
 
  * Copyright (C) 2013,2016 Advanced Micro Devices, Inc.
  *
  * Author: Tom Lendacky <thomas.lendacky@amd.com>
+ * Author: Gary R Hook <gary.hook@amd.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
 struct ccp_vdata {
        unsigned int version;
        const struct ccp_actions *perform;
+       const unsigned int bar;
+       const unsigned int offset;
 };
 
 extern struct ccp_vdata ccpv3;
 
  * Copyright (C) 2013,2016 Advanced Micro Devices, Inc.
  *
  * Author: Tom Lendacky <thomas.lendacky@amd.com>
+ * Author: Gary R Hook <gary.hook@amd.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
 
 #include "ccp-dev.h"
 
-#define IO_BAR                         2
-#define IO_OFFSET                      0x20000
-
 #define MSIX_VECTORS                   2
 
 struct ccp_msix {
        resource_size_t io_len;
        unsigned long io_flags;
 
-       io_flags = pci_resource_flags(pdev, IO_BAR);
-       io_len = pci_resource_len(pdev, IO_BAR);
-       if ((io_flags & IORESOURCE_MEM) && (io_len >= (IO_OFFSET + 0x800)))
-               return IO_BAR;
+       io_flags = pci_resource_flags(pdev, ccp->vdata->bar);
+       io_len = pci_resource_len(pdev, ccp->vdata->bar);
+       if ((io_flags & IORESOURCE_MEM) &&
+           (io_len >= (ccp->vdata->offset + 0x800)))
+               return ccp->vdata->bar;
 
        return -EIO;
 }
                dev_err(dev, "pci_iomap failed\n");
                goto e_device;
        }
-       ccp->io_regs = ccp->io_map + IO_OFFSET;
+       ccp->io_regs = ccp->io_map + ccp->vdata->offset;
 
        ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(48));
        if (ret) {