0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #include <linux/pci.h>
0019 #include <linux/blkdev.h>
0020
0021 #include <scsi/scsi_host.h>
0022
0023 #include "aacraid.h"
0024
0025
0026
0027
0028
0029
0030
0031 static int aac_nark_ioremap(struct aac_dev * dev, u32 size)
0032 {
0033 if (!size) {
0034 iounmap(dev->regs.rx);
0035 dev->regs.rx = NULL;
0036 iounmap(dev->base);
0037 dev->base = NULL;
0038 return 0;
0039 }
0040 dev->base_start = pci_resource_start(dev->pdev, 2);
0041 dev->regs.rx = ioremap((u64)pci_resource_start(dev->pdev, 0) |
0042 ((u64)pci_resource_start(dev->pdev, 1) << 32),
0043 sizeof(struct rx_registers) - sizeof(struct rx_inbound));
0044 dev->base = NULL;
0045 if (dev->regs.rx == NULL)
0046 return -1;
0047 dev->base = ioremap(dev->base_start, size);
0048 if (dev->base == NULL) {
0049 iounmap(dev->regs.rx);
0050 dev->regs.rx = NULL;
0051 return -1;
0052 }
0053 dev->IndexRegs = &((struct rx_registers __iomem *)dev->base)->IndexRegs;
0054 return 0;
0055 }
0056
0057
0058
0059
0060
0061
0062
0063 int aac_nark_init(struct aac_dev * dev)
0064 {
0065
0066
0067
0068 dev->a_ops.adapter_ioremap = aac_nark_ioremap;
0069 dev->a_ops.adapter_comm = aac_rx_select_comm;
0070
0071 return _aac_rx_init(dev);
0072 }