xref: /linux/drivers/scsi/fnic/fnic_pci_subsys_devid.c (revision 88e45067a30918ebb4942120892963e2311330af)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright 2008 Cisco Systems, Inc.  All rights reserved.
4  * Copyright 2007 Nuova Systems, Inc.  All rights reserved.
5  */
6 
7 #include <linux/module.h>
8 #include <linux/mempool.h>
9 #include <linux/string.h>
10 #include <linux/slab.h>
11 #include <linux/errno.h>
12 #include <linux/init.h>
13 #include <linux/pci.h>
14 #include <linux/interrupt.h>
15 #include <linux/irq.h>
16 #include <linux/spinlock.h>
17 #include <linux/workqueue.h>
18 #include <linux/kthread.h>
19 #include <linux/if_ether.h>
20 #include "fnic.h"
21 
22 static struct fnic_pcie_device fnic_pcie_device_table[] = {
23 	{PCI_DEVICE_ID_CISCO_SERENO, "Sereno", PCI_SUBDEVICE_ID_CISCO_VASONA,
24 	 "VIC 1280"},
25 	{PCI_DEVICE_ID_CISCO_SERENO, "Sereno", PCI_SUBDEVICE_ID_CISCO_COTATI,
26 	 "VIC 1240"},
27 	{PCI_DEVICE_ID_CISCO_SERENO, "Sereno",
28 	 PCI_SUBDEVICE_ID_CISCO_LEXINGTON, "VIC 1225"},
29 	{PCI_DEVICE_ID_CISCO_SERENO, "Sereno", PCI_SUBDEVICE_ID_CISCO_ICEHOUSE,
30 	 "VIC 1285"},
31 	{PCI_DEVICE_ID_CISCO_SERENO, "Sereno",
32 	 PCI_SUBDEVICE_ID_CISCO_KIRKWOODLAKE, "VIC 1225T"},
33 	{PCI_DEVICE_ID_CISCO_SERENO, "Sereno",
34 	 PCI_SUBDEVICE_ID_CISCO_SUSANVILLE, "VIC 1227"},
35 	{PCI_DEVICE_ID_CISCO_SERENO, "Sereno", PCI_SUBDEVICE_ID_CISCO_TORRANCE,
36 	 "VIC 1227T"},
37 
38 	{PCI_DEVICE_ID_CISCO_CRUZ, "Cruz", PCI_SUBDEVICE_ID_CISCO_CALISTOGA,
39 	 "VIC 1340"},
40 	{PCI_DEVICE_ID_CISCO_CRUZ, "Cruz", PCI_SUBDEVICE_ID_CISCO_MOUNTAINVIEW,
41 	 "VIC 1380"},
42 	{PCI_DEVICE_ID_CISCO_CRUZ, "Cruz", PCI_SUBDEVICE_ID_CISCO_MOUNTTIAN,
43 	 "C3260-SIOC"},
44 	{PCI_DEVICE_ID_CISCO_CRUZ, "Cruz", PCI_SUBDEVICE_ID_CISCO_CLEARLAKE,
45 	 "VIC 1385"},
46 	{PCI_DEVICE_ID_CISCO_CRUZ, "Cruz", PCI_SUBDEVICE_ID_CISCO_MOUNTTIAN2,
47 	 "C3260-SIOC"},
48 	{PCI_DEVICE_ID_CISCO_CRUZ, "Cruz", PCI_SUBDEVICE_ID_CISCO_CLAREMONT,
49 	 "VIC 1387"},
50 
51 	{PCI_DEVICE_ID_CISCO_BODEGA, "Bodega", PCI_SUBDEVICE_ID_CISCO_BRADBURY,
52 	 "VIC 1457"},
53 	{PCI_DEVICE_ID_CISCO_BODEGA, "Bodega",
54 	 PCI_SUBDEVICE_ID_CISCO_BRENTWOOD, "VIC 1455"},
55 	{PCI_DEVICE_ID_CISCO_BODEGA, "Bodega",
56 	 PCI_SUBDEVICE_ID_CISCO_BURLINGAME, "VIC 1487"},
57 	{PCI_DEVICE_ID_CISCO_BODEGA, "Bodega", PCI_SUBDEVICE_ID_CISCO_BAYSIDE,
58 	 "VIC 1485"},
59 	{PCI_DEVICE_ID_CISCO_BODEGA, "Bodega",
60 	 PCI_SUBDEVICE_ID_CISCO_BAKERSFIELD, "VIC 1440"},
61 	{PCI_DEVICE_ID_CISCO_BODEGA, "Bodega",
62 	 PCI_SUBDEVICE_ID_CISCO_BOONVILLE, "VIC 1480"},
63 	{PCI_DEVICE_ID_CISCO_BODEGA, "Bodega", PCI_SUBDEVICE_ID_CISCO_BENICIA,
64 	 "VIC 1495"},
65 	{PCI_DEVICE_ID_CISCO_BODEGA, "Bodega", PCI_SUBDEVICE_ID_CISCO_BEAUMONT,
66 	 "VIC 1497"},
67 	{PCI_DEVICE_ID_CISCO_BODEGA, "Bodega", PCI_SUBDEVICE_ID_CISCO_BRISBANE,
68 	 "VIC 1467"},
69 	{PCI_DEVICE_ID_CISCO_BODEGA, "Bodega", PCI_SUBDEVICE_ID_CISCO_BENTON,
70 	 "VIC 1477"},
71 	{PCI_DEVICE_ID_CISCO_BODEGA, "Bodega",
72 	 PCI_SUBDEVICE_ID_CISCO_TWIN_RIVER, "VIC 14425"},
73 	{PCI_DEVICE_ID_CISCO_BODEGA, "Bodega",
74 	 PCI_SUBDEVICE_ID_CISCO_TWIN_PEAK, "VIC 14825"},
75 
76 	{PCI_DEVICE_ID_CISCO_BEVERLY, "Beverly", PCI_SUBDEVICE_ID_CISCO_BERN,
77 	 "VIC 15420"},
78 	{PCI_DEVICE_ID_CISCO_BEVERLY, "Beverly",
79 	 PCI_SUBDEVICE_ID_CISCO_STOCKHOLM, "VIC 15428"},
80 	{PCI_DEVICE_ID_CISCO_BEVERLY, "Beverly", PCI_SUBDEVICE_ID_CISCO_KRAKOW,
81 	 "VIC 15411"},
82 	{PCI_DEVICE_ID_CISCO_BEVERLY, "Beverly",
83 	 PCI_SUBDEVICE_ID_CISCO_LUCERNE, "VIC 15231"},
84 	{PCI_DEVICE_ID_CISCO_BEVERLY, "Beverly", PCI_SUBDEVICE_ID_CISCO_TURKU,
85 	 "VIC 15238"},
86 	{PCI_DEVICE_ID_CISCO_BEVERLY, "Beverly", PCI_SUBDEVICE_ID_CISCO_GENEVA,
87 	 "VIC 15422"},
88 	{PCI_DEVICE_ID_CISCO_BEVERLY, "Beverly",
89 	 PCI_SUBDEVICE_ID_CISCO_HELSINKI, "VIC 15235"},
90 	{PCI_DEVICE_ID_CISCO_BEVERLY, "Beverly",
91 	 PCI_SUBDEVICE_ID_CISCO_GOTHENBURG, "VIC 15425"},
92 	{PCI_DEVICE_ID_CISCO_BEVERLY, "Beverly",
93 	 PCI_SUBDEVICE_ID_CISCO_TURKU_PLUS, "VIC 15237"},
94 	{PCI_DEVICE_ID_CISCO_BEVERLY, "Beverly", PCI_SUBDEVICE_ID_CISCO_ZURICH,
95 	 "VIC 15230"},
96 	{PCI_DEVICE_ID_CISCO_BEVERLY, "Beverly", PCI_SUBDEVICE_ID_CISCO_RIGA,
97 	 "VIC 15427"},
98 
99 	{0,}
100 };
101 
fnic_get_desc_by_devid(struct pci_dev * pdev,char ** desc,char ** subsys_desc)102 int fnic_get_desc_by_devid(struct pci_dev *pdev, char **desc,
103 						   char **subsys_desc)
104 {
105 	unsigned short device = PCI_DEVICE_ID_CISCO_VIC_FC;
106 	int max = ARRAY_SIZE(fnic_pcie_device_table);
107 	struct fnic_pcie_device *t = fnic_pcie_device_table;
108 	int index = 0;
109 
110 	if (pdev->device != device)
111 		return 1;
112 
113 	while (t->device != 0) {
114 		if (memcmp
115 			((char *) &pdev->subsystem_device,
116 			 (char *) &t->subsystem_device, sizeof(short)) == 0)
117 			break;
118 		t++;
119 		index++;
120 	}
121 
122 	if (index >= max - 1) {
123 		*desc = NULL;
124 		*subsys_desc = NULL;
125 		return 1;
126 	}
127 
128 	*desc = fnic_pcie_device_table[index].desc;
129 	*subsys_desc = fnic_pcie_device_table[index].subsys_desc;
130 	return 0;
131 }
132