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 29char * 30sbeid_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 75void 76sbeid_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 172void 173sbeid_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 ***/ 218