hisi_sas: Restrict SCSI_HISI_SAS to arm64
[deliverable/linux.git] / drivers / scsi / atp870u.c
index dd0b520f7dd48834c774d830e169aca4ff97f2f7..8b52a9dbb9cf5a5fd18dd572f9459db57783b074 100644 (file)
@@ -1249,15 +1249,255 @@ static void atp_set_host_id(struct atp_unit *atp, u8 c, u8 host_id)
        atp_writeb_io(atp, c, 0x11, 0x20);
 }
 
+static void atp870_init(struct Scsi_Host *shpnt)
+{
+       struct atp_unit *atpdev = shost_priv(shpnt);
+       struct pci_dev *pdev = atpdev->pdev;
+       unsigned char k, host_id;
+       u8 scam_on;
+       bool wide_chip =
+               (pdev->device == PCI_DEVICE_ID_ARTOP_AEC7610 &&
+                pdev->revision == 4) ||
+               (pdev->device == PCI_DEVICE_ID_ARTOP_AEC7612UW) ||
+               (pdev->device == PCI_DEVICE_ID_ARTOP_AEC7612SUW);
+
+       pci_read_config_byte(pdev, 0x49, &host_id);
+
+       dev_info(&pdev->dev, "ACARD AEC-671X PCI Ultra/W SCSI-2/3 Host Adapter: IO:%lx, IRQ:%d.\n",
+                shpnt->io_port, shpnt->irq);
+
+       atpdev->ioport[0] = shpnt->io_port;
+       atpdev->pciport[0] = shpnt->io_port + 0x20;
+       host_id &= 0x07;
+       atpdev->host_id[0] = host_id;
+       scam_on = atp_readb_pci(atpdev, 0, 2);
+       atpdev->global_map[0] = atp_readb_base(atpdev, 0x2d);
+       atpdev->ultra_map[0] = atp_readw_base(atpdev, 0x2e);
+
+       if (atpdev->ultra_map[0] == 0) {
+               scam_on = 0x00;
+               atpdev->global_map[0] = 0x20;
+               atpdev->ultra_map[0] = 0xffff;
+       }
+
+       if (pdev->revision > 0x07)      /* check if atp876 chip */
+               atp_writeb_base(atpdev, 0x3e, 0x00); /* enable terminator */
+
+       k = (atp_readb_base(atpdev, 0x3a) & 0xf3) | 0x10;
+       atp_writeb_base(atpdev, 0x3a, k);
+       atp_writeb_base(atpdev, 0x3a, k & 0xdf);
+       mdelay(32);
+       atp_writeb_base(atpdev, 0x3a, k);
+       mdelay(32);
+       atp_set_host_id(atpdev, 0, host_id);
+
+       tscam(shpnt, wide_chip, scam_on);
+       atp_writeb_base(atpdev, 0x3a, atp_readb_base(atpdev, 0x3a) | 0x10);
+       atp_is(atpdev, 0, wide_chip, 0);
+       atp_writeb_base(atpdev, 0x3a, atp_readb_base(atpdev, 0x3a) & 0xef);
+       atp_writeb_base(atpdev, 0x3b, atp_readb_base(atpdev, 0x3b) | 0x20);
+       shpnt->max_id = wide_chip ? 16 : 8;
+       shpnt->this_id = host_id;
+}
+
+static void atp880_init(struct Scsi_Host *shpnt)
+{
+       struct atp_unit *atpdev = shost_priv(shpnt);
+       struct pci_dev *pdev = atpdev->pdev;
+       unsigned char k, m, host_id;
+       unsigned int n;
+
+       pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x80);
+
+       atpdev->ioport[0] = shpnt->io_port + 0x40;
+       atpdev->pciport[0] = shpnt->io_port + 0x28;
+
+       host_id = atp_readb_base(atpdev, 0x39) >> 4;
+
+       dev_info(&pdev->dev, "ACARD AEC-67160 PCI Ultra3 LVD Host Adapter: IO:%lx, IRQ:%d.\n",
+                shpnt->io_port, shpnt->irq);
+       atpdev->host_id[0] = host_id;
+
+       atpdev->global_map[0] = atp_readb_base(atpdev, 0x35);
+       atpdev->ultra_map[0] = atp_readw_base(atpdev, 0x3c);
+
+       n = 0x3f09;
+       while (n < 0x4000) {
+               m = 0;
+               atp_writew_base(atpdev, 0x34, n);
+               n += 0x0002;
+               if (atp_readb_base(atpdev, 0x30) == 0xff)
+                       break;
+
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30);
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31);
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32);
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33);
+               atp_writew_base(atpdev, 0x34, n);
+               n += 0x0002;
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30);
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31);
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32);
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33);
+               atp_writew_base(atpdev, 0x34, n);
+               n += 0x0002;
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30);
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31);
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32);
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33);
+               atp_writew_base(atpdev, 0x34, n);
+               n += 0x0002;
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30);
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31);
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32);
+               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33);
+               n += 0x0018;
+       }
+       atp_writew_base(atpdev, 0x34, 0);
+       atpdev->ultra_map[0] = 0;
+       atpdev->async[0] = 0;
+       for (k = 0; k < 16; k++) {
+               n = 1 << k;
+               if (atpdev->sp[0][k] > 1)
+                       atpdev->ultra_map[0] |= n;
+               else
+                       if (atpdev->sp[0][k] == 0)
+                               atpdev->async[0] |= n;
+       }
+       atpdev->async[0] = ~(atpdev->async[0]);
+       atp_writeb_base(atpdev, 0x35, atpdev->global_map[0]);
+
+       k = atp_readb_base(atpdev, 0x38) & 0x80;
+       atp_writeb_base(atpdev, 0x38, k);
+       atp_writeb_base(atpdev, 0x3b, 0x20);
+       mdelay(32);
+       atp_writeb_base(atpdev, 0x3b, 0);
+       mdelay(32);
+       atp_readb_io(atpdev, 0, 0x1b);
+       atp_readb_io(atpdev, 0, 0x17);
+
+       atp_set_host_id(atpdev, 0, host_id);
+
+       tscam(shpnt, true, atp_readb_base(atpdev, 0x22));
+       atp_is(atpdev, 0, true, atp_readb_base(atpdev, 0x3f) & 0x40);
+       atp_writeb_base(atpdev, 0x38, 0xb0);
+       shpnt->max_id = 16;
+       shpnt->this_id = host_id;
+}
+
+static void atp885_init(struct Scsi_Host *shpnt)
+{
+       struct atp_unit *atpdev = shost_priv(shpnt);
+       struct pci_dev *pdev = atpdev->pdev;
+       unsigned char k, m, c;
+       unsigned int n;
+       unsigned char setupdata[2][16];
+
+       dev_info(&pdev->dev, "ACARD AEC-67162 PCI Ultra3 LVD Host Adapter: IO:%lx, IRQ:%d.\n",
+                shpnt->io_port, shpnt->irq);
+
+       atpdev->ioport[0] = shpnt->io_port + 0x80;
+       atpdev->ioport[1] = shpnt->io_port + 0xc0;
+       atpdev->pciport[0] = shpnt->io_port + 0x40;
+       atpdev->pciport[1] = shpnt->io_port + 0x50;
+
+       c = atp_readb_base(atpdev, 0x29);
+       atp_writeb_base(atpdev, 0x29, c | 0x04);
+
+       n = 0x1f80;
+       while (n < 0x2000) {
+               atp_writew_base(atpdev, 0x3c, n);
+               if (atp_readl_base(atpdev, 0x38) == 0xffffffff)
+                       break;
+               for (m = 0; m < 2; m++) {
+                       atpdev->global_map[m] = 0;
+                       for (k = 0; k < 4; k++) {
+                               atp_writew_base(atpdev, 0x3c, n++);
+                               ((unsigned long *)&setupdata[m][0])[k] = atp_readl_base(atpdev, 0x38);
+                       }
+                       for (k = 0; k < 4; k++) {
+                               atp_writew_base(atpdev, 0x3c, n++);
+                               ((unsigned long *)&atpdev->sp[m][0])[k] = atp_readl_base(atpdev, 0x38);
+                       }
+                       n += 8;
+               }
+       }
+       c = atp_readb_base(atpdev, 0x29);
+       atp_writeb_base(atpdev, 0x29, c & 0xfb);
+       for (c = 0; c < 2; c++) {
+               atpdev->ultra_map[c] = 0;
+               atpdev->async[c] = 0;
+               for (k = 0; k < 16; k++) {
+                       n = 1 << k;
+                       if (atpdev->sp[c][k] > 1)
+                               atpdev->ultra_map[c] |= n;
+                       else
+                               if (atpdev->sp[c][k] == 0)
+                                       atpdev->async[c] |= n;
+               }
+               atpdev->async[c] = ~(atpdev->async[c]);
+
+               if (atpdev->global_map[c] == 0) {
+                       k = setupdata[c][1];
+                       if ((k & 0x40) != 0)
+                               atpdev->global_map[c] |= 0x20;
+                       k &= 0x07;
+                       atpdev->global_map[c] |= k;
+                       if ((setupdata[c][2] & 0x04) != 0)
+                               atpdev->global_map[c] |= 0x08;
+                       atpdev->host_id[c] = setupdata[c][0] & 0x07;
+               }
+       }
+
+       k = atp_readb_base(atpdev, 0x28) & 0x8f;
+       k |= 0x10;
+       atp_writeb_base(atpdev, 0x28, k);
+       atp_writeb_pci(atpdev, 0, 1, 0x80);
+       atp_writeb_pci(atpdev, 1, 1, 0x80);
+       mdelay(100);
+       atp_writeb_pci(atpdev, 0, 1, 0);
+       atp_writeb_pci(atpdev, 1, 1, 0);
+       mdelay(1000);
+       atp_readb_io(atpdev, 0, 0x1b);
+       atp_readb_io(atpdev, 0, 0x17);
+       atp_readb_io(atpdev, 1, 0x1b);
+       atp_readb_io(atpdev, 1, 0x17);
+
+       k = atpdev->host_id[0];
+       if (k > 7)
+               k = (k & 0x07) | 0x40;
+       atp_set_host_id(atpdev, 0, k);
+
+       k = atpdev->host_id[1];
+       if (k > 7)
+               k = (k & 0x07) | 0x40;
+       atp_set_host_id(atpdev, 1, k);
+
+       mdelay(600); /* this delay used to be called tscam_885() */
+       dev_info(&pdev->dev, "Scanning Channel A SCSI Device ...\n");
+       atp_is(atpdev, 0, true, atp_readb_io(atpdev, 0, 0x1b) >> 7);
+       atp_writeb_io(atpdev, 0, 0x16, 0x80);
+       dev_info(&pdev->dev, "Scanning Channel B SCSI Device ...\n");
+       atp_is(atpdev, 1, true, atp_readb_io(atpdev, 1, 0x1b) >> 7);
+       atp_writeb_io(atpdev, 1, 0x16, 0x80);
+       k = atp_readb_base(atpdev, 0x28) & 0xcf;
+       k |= 0xc0;
+       atp_writeb_base(atpdev, 0x28, k);
+       k = atp_readb_base(atpdev, 0x1f) | 0x80;
+       atp_writeb_base(atpdev, 0x1f, k);
+       k = atp_readb_base(atpdev, 0x29) | 0x01;
+       atp_writeb_base(atpdev, 0x29, k);
+       shpnt->max_id = 16;
+       shpnt->max_lun = (atpdev->global_map[0] & 0x07) + 1;
+       shpnt->max_channel = 1;
+       shpnt->this_id = atpdev->host_id[0];
+}
+
 /* return non-zero on detection */
 static int atp870u_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
-       unsigned char k, m, c;
-       unsigned int error,n;
-       unsigned char host_id;
        struct Scsi_Host *shpnt = NULL;
        struct atp_unit *atpdev;
-       unsigned char setupdata[2][16];
        int err;
 
        if (ent->device == PCI_DEVICE_ID_ARTOP_AEC7610 && pdev->revision < 2) {
@@ -1298,268 +1538,19 @@ static int atp870u_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        shpnt->unique_id = shpnt->io_port;
        shpnt->irq = pdev->irq;
 
-       if (is880(atpdev)) {
-               pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x80);//JCC082803
-
-               atpdev->ioport[0] = shpnt->io_port + 0x40;
-               atpdev->pciport[0] = shpnt->io_port + 0x28;
-
-               host_id = atp_readb_base(atpdev, 0x39);
-               host_id >>= 0x04;
-
-               printk(KERN_INFO "   ACARD AEC-67160 PCI Ultra3 LVD Host Adapter:"
-                       "    IO:%lx, IRQ:%d.\n", shpnt->io_port, shpnt->irq);
-               atpdev->host_id[0] = host_id;
-
-               atpdev->global_map[0] = atp_readb_base(atpdev, 0x35);
-               atpdev->ultra_map[0] = atp_readw_base(atpdev, 0x3c);
-
-               n = 0x3f09;
-next_fblk_880:
-               if (n >= 0x4000)
-                       goto flash_ok_880;
+       err = atp870u_init_tables(shpnt);
+       if (err) {
+               dev_err(&pdev->dev, "Unable to allocate tables for Acard controller\n");
+               goto unregister;
+       }
 
-               m = 0;
-               atp_writew_base(atpdev, 0x34, n);
-               n += 0x0002;
-               if (atp_readb_base(atpdev, 0x30) == 0xff)
-                       goto flash_ok_880;
+       if (is880(atpdev))
+               atp880_init(shpnt);
+       else if (is885(atpdev))
+               atp885_init(shpnt);
+       else
+               atp870_init(shpnt);
 
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30);
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31);
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32);
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33);
-               atp_writew_base(atpdev, 0x34, n);
-               n += 0x0002;
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30);
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31);
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32);
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33);
-               atp_writew_base(atpdev, 0x34, n);
-               n += 0x0002;
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30);
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31);
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32);
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33);
-               atp_writew_base(atpdev, 0x34, n);
-               n += 0x0002;
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30);
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31);
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32);
-               atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33);
-               n += 0x0018;
-               goto next_fblk_880;
-flash_ok_880:
-               atp_writew_base(atpdev, 0x34, 0);
-               atpdev->ultra_map[0] = 0;
-               atpdev->async[0] = 0;
-               for (k = 0; k < 16; k++) {
-                       n = 1;
-                       n = n << k;
-                       if (atpdev->sp[0][k] > 1) {
-                               atpdev->ultra_map[0] |= n;
-                       } else {
-                               if (atpdev->sp[0][k] == 0)
-                                       atpdev->async[0] |= n;
-                       }
-               }
-               atpdev->async[0] = ~(atpdev->async[0]);
-               atp_writeb_base(atpdev, 0x35, atpdev->global_map[0]);
-               if (atp870u_init_tables(shpnt) < 0) {
-                       printk(KERN_ERR "Unable to allocate tables for Acard controller\n");
-                       err = -ENOMEM;
-                       goto unregister;
-               }
-
-               k = atp_readb_base(atpdev, 0x38) & 0x80;
-               atp_writeb_base(atpdev, 0x38, k);
-               atp_writeb_base(atpdev, 0x3b, 0x20);
-               mdelay(32);
-               atp_writeb_base(atpdev, 0x3b, 0);
-               mdelay(32);
-               atp_readb_io(atpdev, 0, 0x1b);
-               atp_readb_io(atpdev, 0, 0x17);
-
-               atp_set_host_id(atpdev, 0, host_id);
-
-               tscam(shpnt, true, atp_readb_base(atpdev, 0x22));
-               atp_is(atpdev, 0, true, atp_readb_base(atpdev, 0x3f) & 0x40);
-               atp_writeb_base(atpdev, 0x38, 0xb0);
-               shpnt->max_id = 16;
-               shpnt->this_id = host_id;
-       } else if (is885(atpdev)) {
-                       printk(KERN_INFO "   ACARD AEC-67162 PCI Ultra3 LVD Host Adapter:  IO:%lx, IRQ:%d.\n"
-                              , shpnt->io_port, shpnt->irq);
-               
-               atpdev->pdev = pdev;
-               atpdev->ioport[0] = shpnt->io_port + 0x80;
-               atpdev->ioport[1] = shpnt->io_port + 0xc0;
-               atpdev->pciport[0] = shpnt->io_port + 0x40;
-               atpdev->pciport[1] = shpnt->io_port + 0x50;
-                               
-               if (atp870u_init_tables(shpnt) < 0) {
-                       err = -ENOMEM;
-                       goto unregister;
-               }
-                       
-               c = atp_readb_base(atpdev, 0x29);
-               atp_writeb_base(atpdev, 0x29, c | 0x04);
-               
-               n=0x1f80;
-next_fblk_885:
-               if (n >= 0x2000) {
-                  goto flash_ok_885;
-               }
-               atp_writew_base(atpdev, 0x3c, n);
-               if (atp_readl_base(atpdev, 0x38) == 0xffffffff) {
-                  goto flash_ok_885;
-               }
-               for (m=0; m < 2; m++) {
-                   atpdev->global_map[m]= 0;
-                   for (k=0; k < 4; k++) {
-                       atp_writew_base(atpdev, 0x3c, n++);
-                       ((unsigned long *)&setupdata[m][0])[k] = atp_readl_base(atpdev, 0x38);
-                   }
-                   for (k=0; k < 4; k++) {
-                       atp_writew_base(atpdev, 0x3c, n++);
-                       ((unsigned long *)&atpdev->sp[m][0])[k] = atp_readl_base(atpdev, 0x38);
-                   }
-                   n += 8;
-               }
-               goto next_fblk_885;
-flash_ok_885:
-#ifdef ED_DBGP
-               printk( "Flash Read OK\n");
-#endif 
-               c = atp_readb_base(atpdev, 0x29);
-               atp_writeb_base(atpdev, 0x29, c & 0xfb);
-               for (c=0;c < 2;c++) {
-                   atpdev->ultra_map[c]=0;
-                   atpdev->async[c] = 0;
-                   for (k=0; k < 16; k++) {
-                       n=1;
-                       n = n << k;
-                       if (atpdev->sp[c][k] > 1) {
-                          atpdev->ultra_map[c] |= n;
-                       } else {
-                          if (atpdev->sp[c][k] == 0) {
-                             atpdev->async[c] |= n;
-                          }
-                       }
-                   }
-                   atpdev->async[c] = ~(atpdev->async[c]);
-
-                   if (atpdev->global_map[c] == 0) {
-                      k=setupdata[c][1];
-                      if ((k & 0x40) != 0)
-                         atpdev->global_map[c] |= 0x20;
-                      k &= 0x07;
-                      atpdev->global_map[c] |= k;
-                      if ((setupdata[c][2] & 0x04) != 0)
-                         atpdev->global_map[c] |= 0x08;
-                      atpdev->host_id[c] = setupdata[c][0] & 0x07;
-                   }
-               }
-
-               k = atp_readb_base(atpdev, 0x28) & 0x8f;
-               k |= 0x10;
-               atp_writeb_base(atpdev, 0x28, k);
-               atp_writeb_pci(atpdev, 0, 1, 0x80);
-               atp_writeb_pci(atpdev, 1, 1, 0x80);
-               mdelay(100);
-               atp_writeb_pci(atpdev, 0, 1, 0);
-               atp_writeb_pci(atpdev, 1, 1, 0);
-               mdelay(1000);
-               atp_readb_io(atpdev, 0, 0x1b);
-               atp_readb_io(atpdev, 0, 0x17);
-               atp_readb_io(atpdev, 1, 0x1b);
-               atp_readb_io(atpdev, 1, 0x17);
-
-               k=atpdev->host_id[0];
-               if (k > 7)
-                  k = (k & 0x07) | 0x40;
-               atp_set_host_id(atpdev, 0, k);
-
-               k=atpdev->host_id[1];
-               if (k > 7)
-                  k = (k & 0x07) | 0x40;
-               atp_set_host_id(atpdev, 1, k);
-
-               mdelay(600); /* this delay used to be called tscam_885() */
-               printk(KERN_INFO "   Scanning Channel A SCSI Device ...\n");
-               atp_is(atpdev, 0, true, atp_readb_io(atpdev, 0, 0x1b) >> 7);
-               atp_writeb_io(atpdev, 0, 0x16, 0x80);
-               printk(KERN_INFO "   Scanning Channel B SCSI Device ...\n");
-               atp_is(atpdev, 1, true, atp_readb_io(atpdev, 1, 0x1b) >> 7);
-               atp_writeb_io(atpdev, 1, 0x16, 0x80);
-               k = atp_readb_base(atpdev, 0x28) & 0xcf;
-               k |= 0xc0;
-               atp_writeb_base(atpdev, 0x28, k);
-               k = atp_readb_base(atpdev, 0x1f) | 0x80;
-               atp_writeb_base(atpdev, 0x1f, k);
-               k = atp_readb_base(atpdev, 0x29) | 0x01;
-               atp_writeb_base(atpdev, 0x29, k);
-#ifdef ED_DBGP
-               //printk("atp885: atp_host[0] 0x%p\n", atp_host[0]);
-#endif         
-               shpnt->max_id = 16;
-               shpnt->max_lun = (atpdev->global_map[0] & 0x07) + 1;
-               shpnt->max_channel = 1;
-               shpnt->this_id = atpdev->host_id[0];
-       } else {
-               u8 scam_on;
-               bool wide_chip =
-                       (ent->device == PCI_DEVICE_ID_ARTOP_AEC7610 &&
-                        pdev->revision == 4) ||
-                       (ent->device == PCI_DEVICE_ID_ARTOP_AEC7612UW) ||
-                       (ent->device == PCI_DEVICE_ID_ARTOP_AEC7612SUW);
-               error = pci_read_config_byte(pdev, 0x49, &host_id);
-
-               printk(KERN_INFO "   ACARD AEC-671X PCI Ultra/W SCSI-2/3 Host Adapter: "
-                       "IO:%lx, IRQ:%d.\n", shpnt->io_port, shpnt->irq);
-
-               atpdev->ioport[0] = shpnt->io_port;
-               atpdev->pciport[0] = shpnt->io_port + 0x20;
-               host_id &= 0x07;
-               atpdev->host_id[0] = host_id;
-               scam_on = atp_readb_pci(atpdev, 0, 2);
-               atpdev->global_map[0] = atp_readb_base(atpdev, 0x2d);
-               atpdev->ultra_map[0] = atp_readw_base(atpdev, 0x2e);
-
-               if (atpdev->ultra_map[0] == 0) {
-                       scam_on = 0x00;
-                       atpdev->global_map[0] = 0x20;
-                       atpdev->ultra_map[0] = 0xffff;
-               }
-
-
-               if (atp870u_init_tables(shpnt) < 0) {
-                       err = -ENOMEM;
-                       goto unregister;
-               }
-
-               if (pdev->revision > 0x07)      /* check if atp876 chip then enable terminator */
-                       atp_writeb_base(atpdev, 0x3e, 0x00);
-               k = (atp_readb_base(atpdev, 0x3a) & 0xf3) | 0x10;
-               atp_writeb_base(atpdev, 0x3a, k);
-               atp_writeb_base(atpdev, 0x3a, k & 0xdf);
-               mdelay(32);
-               atp_writeb_base(atpdev, 0x3a, k);
-               mdelay(32);
-               atp_set_host_id(atpdev, 0, host_id);
-
-
-               tscam(shpnt, wide_chip, scam_on);
-               atp_writeb_base(atpdev, 0x3a, atp_readb_base(atpdev, 0x3a) | 0x10);
-               atp_is(atpdev, 0, wide_chip, 0);
-               atp_writeb_base(atpdev, 0x3a, atp_readb_base(atpdev, 0x3a) & 0xef);
-               atp_writeb_base(atpdev, 0x3b, atp_readb_base(atpdev, 0x3b) | 0x20);
-               shpnt->max_id = wide_chip ? 16 : 8;
-               shpnt->this_id = host_id;
-
-       } 
        err = request_irq(shpnt->irq, atp870u_intr_handle, IRQF_SHARED, "atp870u", shpnt);
        if (err) {
                dev_err(&pdev->dev, "Unable to allocate IRQ %d.\n", shpnt->irq);
This page took 0.080486 seconds and 5 git commands to generate.