/* * This file is part of the Chelsio T4/T5 Ethernet driver for Linux. * * Copyright (c) 2003-2014 Chelsio Communications, Inc. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU * General Public License (GPL) Version 2, available from the file * COPYING in the main directory of this source tree, or the * OpenIB.org BSD license below: * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ #ifndef __T4_PCI_ID_TBL_H__ #define __T4_PCI_ID_TBL_H__ /* The code can defined cpp macros for creating a PCI Device ID Table. This is * useful because it allows the PCI ID Table to be maintained in a single place. * * The macros are: * * CH_PCI_DEVICE_ID_TABLE_DEFINE_BEGIN * -- Used to start the definition of the PCI ID Table. * * CH_PCI_DEVICE_ID_FUNCTION * -- The PCI Function Number to use in the PCI Device ID Table. "0" * -- for drivers attaching to PF0-3, "4" for drivers attaching to PF4, * -- "8" for drivers attaching to SR-IOV Virtual Functions, etc. * * CH_PCI_DEVICE_ID_FUNCTION2 [optional] * -- If defined, create a PCI Device ID Table with both * -- CH_PCI_DEVICE_ID_FUNCTION and CH_PCI_DEVICE_ID_FUNCTION2 populated. * * CH_PCI_ID_TABLE_ENTRY(DeviceID) * -- Used for the individual PCI Device ID entries. Note that we will * -- be adding a trailing comma (",") after all of the entries (and * -- between the pairs of entries if CH_PCI_DEVICE_ID_FUNCTION2 is defined). * * CH_PCI_DEVICE_ID_TABLE_DEFINE_END * -- Used to finish the definition of the PCI ID Table. Note that we * -- will be adding a trailing semi-colon (";") here. */ #ifndef CH_PCI_DEVICE_ID_FUNCTION #error CH_PCI_DEVICE_ID_FUNCTION not defined! #endif #ifndef CH_PCI_ID_TABLE_ENTRY #error CH_PCI_ID_TABLE_ENTRY not defined! #endif #ifndef CH_PCI_DEVICE_ID_TABLE_DEFINE_END #error CH_PCI_DEVICE_ID_TABLE_DEFINE_END not defined! #endif /* T4 and later ASICs use a PCI Device ID scheme of 0xVFPP where: * * V = "4" for T4; "5" for T5, etc. * F = "0" for PF 0..3; "4".."7" for PF4..7; and "8" for VFs * PP = adapter product designation * * We use this consistency in order to create the proper PCI Device IDs * for the specified CH_PCI_DEVICE_ID_FUNCTION. */ #ifndef CH_PCI_DEVICE_ID_FUNCTION2 #define CH_PCI_ID_TABLE_FENTRY(devid) … #else #define CH_PCI_ID_TABLE_FENTRY … #endif CH_PCI_DEVICE_ID_TABLE_DEFINE_BEGIN; #endif /* __T4_PCI_ID_TBL_H__ */