]> git.karo-electronics.de Git - karo-tx-linux.git/blob - drivers/staging/cxt1e1/sbeid.c
Merge branch 'uprobes/core' of git://git.kernel.org/pub/scm/linux/kernel/git/oleg...
[karo-tx-linux.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 char       *
23 sbeid_get_bdname(ci_t *ci)
24 {
25         char       *np = NULL;
26
27         switch (ci->brd_id) {
28         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_E1):
29                 np = "wanPTMC-256T3 <E1>";
30                 break;
31         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_T1):
32                 np = "wanPTMC-256T3 <T1>";
33                 break;
34         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C4T1E1):
35         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C4T1E1_L):
36                 np = "wanPMC-C4T1E1";
37                 break;
38         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1):
39         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1_L):
40                 np = "wanPMC-C2T1E1";
41                 break;
42         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1):
43         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1_L):
44                 np = "wanPMC-C1T1E1";
45                 break;
46         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1):
47                 np = "wanPCI-C4T1E1";
48                 break;
49         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C2T1E1):
50                 np = "wanPCI-C2T1E1";
51                 break;
52         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C1T1E1):
53                 np = "wanPCI-C1T1E1";
54                 break;
55         default:
56                 /*** np = "<unknown>";  ***/
57                 np = "wanPCI-CxT1E1";
58                 break;
59         }
60
61         return np;
62 }
63
64
65 /* given the presetting of brd_id, set the corresponding hdw_id */
66
67 void
68 sbeid_set_hdwbid(ci_t *ci)
69 {
70         /*
71          * set SBE's unique hardware identification (for legacy boards might not
72          * have this register implemented)
73          */
74
75         switch (ci->brd_id) {
76         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_E1):
77                 ci->hdw_bid = SBE_BID_256T3_E1; /* 0x46 - SBE wanPTMC-256T3 (E1
78                                                  * Version) */
79                 break;
80         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_T1):
81                 ci->hdw_bid = SBE_BID_256T3_T1; /* 0x42 - SBE wanPTMC-256T3 (T1
82                                                  * Version) */
83                 break;
84         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C4T1E1):
85         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C4T1E1_L):
86                 /*
87                  * This Board ID is a generic identification.  Use the found number
88                  * of ports to further define this hardware.
89                  */
90                 switch (ci->max_port) {
91                 default:                    /* shouldn't need a default, but have one
92                                              * anyway */
93                 case 4:
94                         ci->hdw_bid = SBE_BID_PMC_C4T1E1;   /* 0xC4 - SBE wanPMC-C4T1E1 */
95                         break;
96                 case 2:
97                         ci->hdw_bid = SBE_BID_PMC_C2T1E1;   /* 0xC2 - SBE wanPMC-C2T1E1 */
98                         ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1);
99                         break;
100                 case 1:
101                         ci->hdw_bid = SBE_BID_PMC_C1T1E1;   /* 0xC1 - SBE wanPMC-C1T1E1 */
102                         ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1);
103                         break;
104                 }
105                 break;
106         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1):
107         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1_L):
108                 ci->hdw_bid = SBE_BID_PMC_C2T1E1;       /* 0xC2 - SBE wanPMC-C2T1E1 */
109                 break;
110         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1):
111         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1_L):
112                 ci->hdw_bid = SBE_BID_PMC_C1T1E1;       /* 0xC1 - SBE wanPMC-C1T1E1 */
113                 break;
114 #ifdef SBE_PMCC4_ENABLE
115                 /*
116                  * This case is entered as a result of the inability to obtain the
117                  * <bid> from the board's EEPROM.  Assume a PCI board and set
118                  * <hdsbid> according to the number ofr found ports.
119                  */
120         case 0:
121                 /* start by assuming 4-port for ZERO casing */
122                 ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1);
123                 /* drop thru to set hdw_bid and alternate PCI CxT1E1 settings */
124 #endif
125         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1):
126                 /*
127                  * This Board ID is a generic identification.  Use the number of
128                  * found ports to further define this hardware.
129                  */
130                 switch (ci->max_port) {
131                 default:                    /* shouldn't need a default, but have one
132                                              * anyway */
133                 case 4:
134                         ci->hdw_bid = SBE_BID_PCI_C4T1E1;   /* 0x04 - SBE wanPCI-C4T1E1 */
135                         break;
136                 case 2:
137                         ci->hdw_bid = SBE_BID_PCI_C2T1E1;   /* 0x02 - SBE wanPCI-C2T1E1 */
138                         ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C2T1E1);
139                         break;
140                 case 1:
141                         ci->hdw_bid = SBE_BID_PCI_C1T1E1;   /* 0x01 - SBE wanPCI-C1T1E1 */
142                         ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C1T1E1);
143                         break;
144                 }
145                 break;
146         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C2T1E1):
147                 ci->hdw_bid = SBE_BID_PCI_C2T1E1;       /* 0x02 - SBE wanPCI-C2T1E1 */
148                 break;
149         case SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C1T1E1):
150                 ci->hdw_bid = SBE_BID_PCI_C1T1E1;       /* 0x01 - SBE wanPCI-C1T1E1 */
151                 break;
152         default:
153                 /*** bid = "<unknown>";  ***/
154                 ci->hdw_bid = SBE_BID_PMC_C4T1E1;       /* 0x41 - SBE wanPTMC-C4T1E1 */
155                 break;
156         }
157 }
158
159 /* given the presetting of hdw_bid, set the corresponding brd_id */
160
161 void
162 sbeid_set_bdtype(ci_t *ci)
163 {
164         /* set SBE's unique PCI VENDOR/DEVID */
165         switch (ci->hdw_bid) {
166         case SBE_BID_C1T3:      /* SBE wanPMC-C1T3 */
167                 ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T3);
168                 break;
169         case SBE_BID_C24TE1:            /* SBE wanPTMC-C24TE1 */
170                 ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_C24TE1);
171                 break;
172         case SBE_BID_256T3_E1:          /* SBE wanPTMC-256T3 E1 Version */
173                 ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_E1);
174                 break;
175         case SBE_BID_256T3_T1:          /* SBE wanPTMC-256T3 T1 Version */
176                 ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_T1);
177                 break;
178         case SBE_BID_PMC_C4T1E1:        /* 0xC4 - SBE wanPMC-C4T1E1 */
179                 ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C4T1E1);
180                 break;
181         case SBE_BID_PMC_C2T1E1:        /* 0xC2 - SBE wanPMC-C2T1E1 */
182                 ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1);
183                 break;
184         case SBE_BID_PMC_C1T1E1:        /* 0xC1 - SBE wanPMC-C1T1E1 */
185                 ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1);
186                 break;
187         case SBE_BID_PCI_C4T1E1:        /* 0x04 - SBE wanPCI-C4T1E1 */
188                 ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1);
189                 break;
190         case SBE_BID_PCI_C2T1E1:        /* 0x02 - SBE wanPCI-C2T1E1 */
191                 ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C2T1E1);
192                 break;
193         case SBE_BID_PCI_C1T1E1:        /* 0x01 - SBE wanPCI-C1T1E1 */
194                 ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C1T1E1);
195                 break;
196
197         default:
198                 /*** hdw_bid = "<unknown>";  ***/
199                 ci->brd_id = SBE_BOARD_ID(PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1);
200                 break;
201         }
202 }
203
204
205 /***  End-of-File  ***/