Linux-libre 3.0.94-gnu1
[librecmc/linux-libre.git] / drivers / staging / cxt1e1 / sbeid.c
1 /* Copyright (C) 2005  SBE, Inc.
2  *
3  *   This program is free software; you can redistribute it and/or modify
4  *   it under the terms of the GNU General Public License as published by
5  *   the Free Software Foundation; either version 2 of the License, or
6  *   (at your option) any later version.
7  *
8  *   This program is distributed in the hope that it will be useful,
9  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
10  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  *   GNU General Public License for more details.
12  */
13
14 #include <linux/types.h>
15 #include "pmcc4_sysdep.h"
16 #include "sbecom_inline_linux.h"
17 #include "libsbew.h"
18 #include "pmcc4_private.h"
19 #include "pmcc4.h"
20 #include "sbe_bid.h"
21
22 #ifdef SBE_INCLUDE_SYMBOLS
23 #define STATIC
24 #else
25 #define STATIC  static
26 #endif
27
28
29 char       *
30 sbeid_get_bdname (ci_t * ci)
31 {
32     char       *np = 0;
33
34     switch (ci->brd_id)
35     {
36     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_E1):
37         np = "wanPTMC-256T3 <E1>";
38         break;
39     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_T1):
40         np = "wanPTMC-256T3 <T1>";
41         break;
42     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C4T1E1):
43     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C4T1E1_L):
44         np = "wanPMC-C4T1E1";
45         break;
46     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1):
47     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1_L):
48         np = "wanPMC-C2T1E1";
49         break;
50     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1):
51     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1_L):
52         np = "wanPMC-C1T1E1";
53         break;
54     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1):
55         np = "wanPCI-C4T1E1";
56         break;
57     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C2T1E1):
58         np = "wanPCI-C2T1E1";
59         break;
60     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C1T1E1):
61         np = "wanPCI-C1T1E1";
62         break;
63     default:
64         /*** np = "<unknown>";  ***/
65         np = "wanPCI-CxT1E1";
66         break;
67     }
68
69     return np;
70 }
71
72
73 /* given the presetting of brd_id, set the corresponding hdw_id */
74
75 void
76 sbeid_set_hdwbid (ci_t * ci)
77 {
78     /*
79      * set SBE's unique hardware identification (for legacy boards might not
80      * have this register implemented)
81      */
82
83     switch (ci->brd_id)
84     {
85         case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_E1):
86         ci->hdw_bid = SBE_BID_256T3_E1; /* 0x46 - SBE wanPTMC-256T3 (E1
87                                          * Version) */
88         break;
89     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_T1):
90         ci->hdw_bid = SBE_BID_256T3_T1; /* 0x42 - SBE wanPTMC-256T3 (T1
91                                          * Version) */
92         break;
93     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C4T1E1):
94     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C4T1E1_L):
95         /*
96          * This Board ID is a generic identification.  Use the found number
97          * of ports to further define this hardware.
98          */
99         switch (ci->max_port)
100         {
101         default:                    /* shouldn't need a default, but have one
102                                      * anyway */
103         case 4:
104             ci->hdw_bid = SBE_BID_PMC_C4T1E1;   /* 0xC4 - SBE wanPMC-C4T1E1 */
105             break;
106         case 2:
107             ci->hdw_bid = SBE_BID_PMC_C2T1E1;   /* 0xC2 - SBE wanPMC-C2T1E1 */
108             ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1);
109             break;
110         case 1:
111             ci->hdw_bid = SBE_BID_PMC_C1T1E1;   /* 0xC1 - SBE wanPMC-C1T1E1 */
112             ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1);
113             break;
114         }
115         break;
116     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1):
117     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1_L):
118         ci->hdw_bid = SBE_BID_PMC_C2T1E1;       /* 0xC2 - SBE wanPMC-C2T1E1 */
119         break;
120     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1):
121     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1_L):
122         ci->hdw_bid = SBE_BID_PMC_C1T1E1;       /* 0xC1 - SBE wanPMC-C1T1E1 */
123         break;
124 #ifdef SBE_PMCC4_ENABLE
125         /*
126          * This case is entered as a result of the inability to obtain the
127          * <bid> from the board's EEPROM.  Assume a PCI board and set
128          * <hdsbid> according to the number ofr found ports.
129          */
130     case 0:
131         /* start by assuming 4-port for ZERO casing */
132         ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1);
133         /* drop thru to set hdw_bid and alternate PCI CxT1E1 settings */
134 #endif
135     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1):
136         /*
137          * This Board ID is a generic identification.  Use the number of
138          * found ports to further define this hardware.
139          */
140         switch (ci->max_port)
141         {
142         default:                    /* shouldn't need a default, but have one
143                                      * anyway */
144         case 4:
145             ci->hdw_bid = SBE_BID_PCI_C4T1E1;   /* 0x04 - SBE wanPCI-C4T1E1 */
146             break;
147         case 2:
148             ci->hdw_bid = SBE_BID_PCI_C2T1E1;   /* 0x02 - SBE wanPCI-C2T1E1 */
149             ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C2T1E1);
150             break;
151         case 1:
152             ci->hdw_bid = SBE_BID_PCI_C1T1E1;   /* 0x01 - SBE wanPCI-C1T1E1 */
153             ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C1T1E1);
154             break;
155         }
156         break;
157     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C2T1E1):
158         ci->hdw_bid = SBE_BID_PCI_C2T1E1;       /* 0x02 - SBE wanPCI-C2T1E1 */
159         break;
160     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C1T1E1):
161         ci->hdw_bid = SBE_BID_PCI_C1T1E1;       /* 0x01 - SBE wanPCI-C1T1E1 */
162         break;
163     default:
164         /*** bid = "<unknown>";  ***/
165         ci->hdw_bid = SBE_BID_PMC_C4T1E1;       /* 0x41 - SBE wanPTMC-C4T1E1 */
166         break;
167     }
168 }
169
170 /* given the presetting of hdw_bid, set the corresponding brd_id */
171
172 void
173 sbeid_set_bdtype (ci_t * ci)
174 {
175     /* set SBE's unique PCI VENDOR/DEVID */
176     switch (ci->hdw_bid)
177     {
178         case SBE_BID_C1T3:      /* SBE wanPMC-C1T3 */
179         ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T3);
180         break;
181     case SBE_BID_C24TE1:            /* SBE wanPTMC-C24TE1 */
182         ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_C24TE1);
183         break;
184     case SBE_BID_256T3_E1:          /* SBE wanPTMC-256T3 E1 Version */
185         ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_E1);
186         break;
187     case SBE_BID_256T3_T1:          /* SBE wanPTMC-256T3 T1 Version */
188         ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_T1);
189         break;
190     case SBE_BID_PMC_C4T1E1:        /* 0xC4 - SBE wanPMC-C4T1E1 */
191         ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C4T1E1);
192         break;
193     case SBE_BID_PMC_C2T1E1:        /* 0xC2 - SBE wanPMC-C2T1E1 */
194         ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1);
195         break;
196     case SBE_BID_PMC_C1T1E1:        /* 0xC1 - SBE wanPMC-C1T1E1 */
197         ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1);
198         break;
199     case SBE_BID_PCI_C4T1E1:        /* 0x04 - SBE wanPCI-C4T1E1 */
200         ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1);
201         break;
202     case SBE_BID_PCI_C2T1E1:        /* 0x02 - SBE wanPCI-C2T1E1 */
203         ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C2T1E1);
204         break;
205     case SBE_BID_PCI_C1T1E1:        /* 0x01 - SBE wanPCI-C1T1E1 */
206         ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C1T1E1);
207         break;
208
209     default:
210         /*** hdw_bid = "<unknown>";  ***/
211         ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1);
212         break;
213     }
214 }
215
216
217 /***  End-of-File  ***/