PageRenderTime 25ms CodeModel.GetById 12ms app.highlight 10ms RepoModel.GetById 1ms app.codeStats 0ms

/drivers/staging/cxt1e1/sbeid.c

https://bitbucket.org/wisechild/galaxy-nexus
C | 217 lines | 160 code | 15 blank | 42 comment | 5 complexity | 51fa69508e31e33194267746cdc441da MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0
  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  ***/