Skip to content

Commit 87cf898

Browse files
Eric MooreJames Bottomley
authored andcommitted
[SCSI] mptsas: Adding 1078 ROC support
* Adding 1078 ROC (Raid On Chip) Support - New host adapter * Moving all PCI Vendor/Device ids to using internal defines; a request from Christoph/James B. some time ago for when the next chip was added. * Removing SAS 1066/1066E Vendor/Device IDs, as there are no plans to manufacture that controller. Signed-off-by: Eric Moore <Eric.Moore@lsil.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
1 parent 547f9a2 commit 87cf898

File tree

5 files changed

+57
-38
lines changed

5 files changed

+57
-38
lines changed

drivers/message/fusion/mptbase.c

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1220,31 +1220,25 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
12201220
port = psize = 0;
12211221
for (ii=0; ii < DEVICE_COUNT_RESOURCE; ii++) {
12221222
if (pci_resource_flags(pdev, ii) & PCI_BASE_ADDRESS_SPACE_IO) {
1223+
if (psize)
1224+
continue;
12231225
/* Get I/O space! */
12241226
port = pci_resource_start(pdev, ii);
12251227
psize = pci_resource_len(pdev,ii);
12261228
} else {
1229+
if (msize)
1230+
continue;
12271231
/* Get memmap */
12281232
mem_phys = pci_resource_start(pdev, ii);
12291233
msize = pci_resource_len(pdev,ii);
1230-
break;
12311234
}
12321235
}
12331236
ioc->mem_size = msize;
12341237

1235-
if (ii == DEVICE_COUNT_RESOURCE) {
1236-
printk(KERN_ERR MYNAM ": ERROR - MPT adapter has no memory regions defined!\n");
1237-
kfree(ioc);
1238-
return -EINVAL;
1239-
}
1240-
1241-
dinitprintk((KERN_INFO MYNAM ": MPT adapter @ %lx, msize=%dd bytes\n", mem_phys, msize));
1242-
dinitprintk((KERN_INFO MYNAM ": (port i/o @ %lx, psize=%dd bytes)\n", port, psize));
1243-
12441238
mem = NULL;
12451239
/* Get logical ptr for PciMem0 space */
12461240
/*mem = ioremap(mem_phys, msize);*/
1247-
mem = ioremap(mem_phys, 0x100);
1241+
mem = ioremap(mem_phys, msize);
12481242
if (mem == NULL) {
12491243
printk(KERN_ERR MYNAM ": ERROR - Unable to map adapter memory!\n");
12501244
kfree(ioc);
@@ -1344,11 +1338,6 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
13441338
ioc->bus_type = SAS;
13451339
ioc->errata_flag_1064 = 1;
13461340
}
1347-
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1066) {
1348-
ioc->prod_name = "LSISAS1066";
1349-
ioc->bus_type = SAS;
1350-
ioc->errata_flag_1064 = 1;
1351-
}
13521341
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1068) {
13531342
ioc->prod_name = "LSISAS1068";
13541343
ioc->bus_type = SAS;
@@ -1358,14 +1347,14 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
13581347
ioc->prod_name = "LSISAS1064E";
13591348
ioc->bus_type = SAS;
13601349
}
1361-
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1066E) {
1362-
ioc->prod_name = "LSISAS1066E";
1363-
ioc->bus_type = SAS;
1364-
}
13651350
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1068E) {
13661351
ioc->prod_name = "LSISAS1068E";
13671352
ioc->bus_type = SAS;
13681353
}
1354+
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1078) {
1355+
ioc->prod_name = "LSISAS1078";
1356+
ioc->bus_type = SAS;
1357+
}
13691358

13701359
if (ioc->errata_flag_1064)
13711360
pci_disable_io_access(pdev);
@@ -3185,6 +3174,37 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ignore, int sleepFlag)
31853174
u32 diag1val = 0;
31863175
#endif
31873176

3177+
if (ioc->pcidev->device == MPI_MANUFACTPAGE_DEVID_SAS1078) {
3178+
drsprintk((MYIOC_s_WARN_FMT "%s: Doorbell=%p; 1078 reset "
3179+
"address=%p\n", ioc->name, __FUNCTION__,
3180+
&ioc->chip->Doorbell, &ioc->chip->Reset_1078));
3181+
CHIPREG_WRITE32(&ioc->chip->Reset_1078, 0x07);
3182+
if (sleepFlag == CAN_SLEEP)
3183+
msleep(1);
3184+
else
3185+
mdelay(1);
3186+
3187+
for (count = 0; count < 60; count ++) {
3188+
doorbell = CHIPREG_READ32(&ioc->chip->Doorbell);
3189+
doorbell &= MPI_IOC_STATE_MASK;
3190+
3191+
drsprintk((MYIOC_s_INFO_FMT
3192+
"looking for READY STATE: doorbell=%x"
3193+
" count=%d\n",
3194+
ioc->name, doorbell, count));
3195+
if (doorbell == MPI_IOC_STATE_READY) {
3196+
return 0;
3197+
}
3198+
3199+
/* wait 1 sec */
3200+
if (sleepFlag == CAN_SLEEP)
3201+
msleep(1000);
3202+
else
3203+
mdelay(1000);
3204+
}
3205+
return -1;
3206+
}
3207+
31883208
/* Clear any existing interrupts */
31893209
CHIPREG_WRITE32(&ioc->chip->IntStatus, 0);
31903210

drivers/message/fusion/mptbase.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,8 @@ typedef struct _SYSIF_REGS
308308
u32 HostIndex; /* 50 Host Index register */
309309
u32 Reserved4[15]; /* 54-8F */
310310
u32 Fubar; /* 90 For Fubar usage */
311-
u32 Reserved5[27]; /* 94-FF */
311+
u32 Reserved5[1050];/* 94-10F8 */
312+
u32 Reset_1078; /* 10FC Reset 1078 */
312313
} SYSIF_REGS;
313314

314315
/*

drivers/message/fusion/mptfc.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -132,21 +132,21 @@ static struct scsi_host_template mptfc_driver_template = {
132132
*/
133133

134134
static struct pci_device_id mptfc_pci_table[] = {
135-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC909,
135+
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC909,
136136
PCI_ANY_ID, PCI_ANY_ID },
137-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC919,
137+
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC919,
138138
PCI_ANY_ID, PCI_ANY_ID },
139-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC929,
139+
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC929,
140140
PCI_ANY_ID, PCI_ANY_ID },
141-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC919X,
141+
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC919X,
142142
PCI_ANY_ID, PCI_ANY_ID },
143-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC929X,
143+
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC929X,
144144
PCI_ANY_ID, PCI_ANY_ID },
145-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC939X,
145+
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC939X,
146146
PCI_ANY_ID, PCI_ANY_ID },
147-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC949X,
147+
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC949X,
148148
PCI_ANY_ID, PCI_ANY_ID },
149-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC949ES,
149+
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVICEID_FC949E,
150150
PCI_ANY_ID, PCI_ANY_ID },
151151
{0} /* Terminating entry */
152152
};

drivers/message/fusion/mptsas.c

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2757,17 +2757,15 @@ static void __devexit mptsas_remove(struct pci_dev *pdev)
27572757
}
27582758

27592759
static struct pci_device_id mptsas_pci_table[] = {
2760-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_SAS1064,
2760+
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1064,
27612761
PCI_ANY_ID, PCI_ANY_ID },
2762-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_SAS1066,
2762+
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1068,
27632763
PCI_ANY_ID, PCI_ANY_ID },
2764-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_SAS1068,
2764+
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1064E,
27652765
PCI_ANY_ID, PCI_ANY_ID },
2766-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_SAS1064E,
2766+
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1068E,
27672767
PCI_ANY_ID, PCI_ANY_ID },
2768-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_SAS1066E,
2769-
PCI_ANY_ID, PCI_ANY_ID },
2770-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_SAS1068E,
2768+
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1078,
27712769
PCI_ANY_ID, PCI_ANY_ID },
27722770
{0} /* Terminating entry */
27732771
};

drivers/message/fusion/mptspi.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -775,9 +775,9 @@ static struct spi_function_template mptspi_transport_functions = {
775775
*/
776776

777777
static struct pci_device_id mptspi_pci_table[] = {
778-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_53C1030,
778+
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_53C1030,
779779
PCI_ANY_ID, PCI_ANY_ID },
780-
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_1030_53C1035,
780+
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_53C1035,
781781
PCI_ANY_ID, PCI_ANY_ID },
782782
{0} /* Terminating entry */
783783
};

0 commit comments

Comments
 (0)