iseries_pci.h

来自「是关于linux2.5.1的完全源码」· C头文件 代码 · 共 140 行

H
140
字号
#ifdef CONFIG_PPC_ISERIES #ifndef _ISERIES_PCI_H#define _ISERIES_PCI_H/************************************************************************//* File iSeries_pci.h created by Allan Trautman on Tue Jan  9 2001.     *//************************************************************************//* Define some useful macros for the iseries pci routines.              *//* Copyright (C) 20yy  Allan H Trautman, IBM Corporation                *//*                                                                      *//* This program is free software; you can redistribute it and/or modify *//* it under the terms of the GNU General Public License as published by *//* the Free Software Foundation; either version 2 of the License, or    *//* (at your option) any later version.                                  *//*                                                                      *//* This program is distributed in the hope that it will be useful,      */ /* but WITHOUT ANY WARRANTY; without even the implied warranty of       *//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *//* GNU General Public License for more details.                         *//*                                                                      *//* You should have received a copy of the GNU General Public License    */ /* along with this program; if not, write to the:                       *//* Free Software Foundation, Inc.,                                      */ /* 59 Temple Place, Suite 330,                                          */ /* Boston, MA  02111-1307  USA                                          *//************************************************************************//* Change Activity:                                                     *//*   Created December 28, 2000                                          *//*   Converted to iseries_pci.h Jan 25, 2001                            *//* End Change Activity                                                  *//************************************************************************/#include <linux/config.h>#include <asm/iSeries/HvTypes.h>#include <asm/iSeries/iSeries_FlightRecorder.h>#include <asm/iSeries/iSeries_pci.h>/************************************************************************************//* Define some useful macros.                                                       *//* These macros started with Wayne, Al renamed and refined.                         *//************************************************************************************//* Encodes SubBus address(seddddfff), Works only for bridges under EADS 1 and 2.    *//************************************************************************************//* #define ISERIES_ENCODE_SUBBUS(eads, bridge, device) \             (0x80 | ((eads-1 & 0x01) << 6) | ((bridge & 0x0F) << 3) | (device & 0x07)) */#define ISERIES_ENCODE_SUBBUS(e, ef, df) (((0x80 | ((e&0x02)<<5) | ((ef & 0x07)<<3)) & 0xF8) | (df & 0x03))  // Al - Please Review/************************************************************************************//* Combines IdSel and Function into Iseries 4.4 format                              *//* For Linux, see PCI_DEVFN(slot,func) in include/linux/pci.h                       *//************************************************************************************/// #define ISERIES_PCI_AGENTID(idsel,func)	((idsel & 0x0F) << 4) | (func  & 0x07)#define ISERIES_PCI_AGENTID(idsel,func)	(((idsel & 0x0F) << 4) | (func & 0x0F))  // Al - Please Review/************************************************************************************//* Converts DeviceFunction from Linux   5.3(dddddfff) to Iseries 4.4(dddd0fff)      *//* Converts DeviceFunction from Iseries 4.4(dddd0fff) to Linux   5.3(dddddfff)      *//************************************************************************************/#define ISERIES_44_FORMAT(devfn53)          (((devfn53 & 0xF8) << 1) | (devfn53 & 0x07))#define ISERIES_53_FORMAT(devfn44)          (((devfn44 & 0xF0) >> 1) | (devfn44 & 0x07))/************************************************************************************//* Tests for encoded subbus.                                                        *//************************************************************************************/#define ISERIES_IS_SUBBUS_ENCODED_IN_DEVFN(devfn)   ((devfn & 0x80) == 0x80)/************************************************************************************//* Decodes the Iseries subbus to devfn, ONLY Works for bus 0!! Use Table lookup.    *//************************************************************************************//* #define ISERIES_DEVFN_DECODE_SUBBUS(devfn) \                             ((((devfn & 0x40) >> 1) + 0x20)  | ((devfn >> 1) & 0x1C)) */#define ISERIES_DEVFN_DECODE_SUBBUS(devfn) (((((devfn >> 6 ) & 0x1) + 1) << 5) | (((devfn >> 3) & 0x7) << 2))  // Al - Please Review/************************************************************************************//* Decodes Linux DevFn to Iseries DevFn, bridge device, or function.                *//* For Linux, see PCI_SLOT and PCI_FUNC in include/linux/pci.h                      *//************************************************************************************/#define ISERIES_DECODE_DEVFN(linuxdevfn)  (((linuxdevfn & 0x71) << 1) | (linuxdevfn & 0x07))#define ISERIES_DECODE_DEVICE(linuxdevfn) (((linuxdevfn & 0x38) >> 3) |(((linuxdevfn & 0x40) >> 2) + 0x10))#define ISERIES_DECODE_FUNCTION(linuxdevfn) (linuxdevfn & 0x07)#define ISERIES_GET_DEVICE_FROM_SUBBUS(subbus) ((subbus >> 5) & 0x7)#define ISERIES_GET_FUNCTION_FROM_SUBBUS(subbus) ((subbus >> 2) & 0x7)#define ISERIES_GET_HOSE_HV_BUSNUM(hose) (((struct iSeries_hose_arch_data *)(hose->arch_data))->hvBusNumber)/************************************************************************************//* Retreives Iseries Bus and SubBus from GlobalBusMap                               *//************************************************************************************/#define ISERIES_GET_LPAR_BUS(linux_bus)    iSeries_GlobalBusMap[linux_bus][_HVBUSNUMBER_]#define ISERIES_GET_LPAR_SUBBUS(linux_bus) iSeries_GlobalBusMap[linux_bus][_HVSUBBUSNUMBER_]#define ISERIES_ADD_BUS_GLOBALBUSMAP(linuxbus, iseriesbus, iseriessubbus) \    iSeries_GlobalBusMap[linuxbus][_HVBUSNUMBER_]    = iseriesbus;      \    iSeries_GlobalBusMap[linuxbus][_HVSUBBUSNUMBER_] = iseriessubbus;       /************************************************************************************//* Global Bus map                                                                   *//* Bus and Subbus index values into the global bus number map array.                *//************************************************************************************/#define ISERIES_GLOBALBUSMAP_SIZE 256#define _HVBUSNUMBER_    0#define _HVSUBBUSNUMBER_ 1extern u8 iSeries_GlobalBusMap[ISERIES_GLOBALBUSMAP_SIZE][2];void iSeries_Initialize_GlobalBusMap(void);#define pci_assign_all_buses() 1  // Al - NEW/************************************************************************************//* Converts Virtual Address to Real Address for Hypervisor calls                    *//************************************************************************************/#define REALADDR(virtaddr)  (0x8000000000000000 | (virt_to_absolute((u32)virtaddr) ))/************************************************************************************//* Define TRUE and FALSE Values for Al                                              *//************************************************************************************/#ifndef TRUE#define TRUE 1#endif#ifndef FALSE#define FALSE 0#endiftypedef struct pci_dev               pciDev; /************************************************************************//* Routines to build the iSeries_Device for the pci device.             *//************************************************************************/extern void build_iSeries_Device(iSeries_Device* Device, struct pci_dev* DevPtr);extern int  build_iSeries_Device_From_IoAddress(iSeries_Device* Device, u32* IoAddress);extern void iSeries_pci_Initialize(void);/************************************************************************//* Flight Recorder Debug Support                                        *//************************************************************************/extern int          PciTraceFlag;               /* Conditional Trace    */void   iSeries_Initialize_FlightRecorder(void);int    iSeries_Set_PciTraceFlag(int Flag);	/* Sets flag, return old*/int    iSeries_Get_PciTraceFlag(void);	/* Gets Flag.           */void   iSeries_DumpDevice(char* Text, iSeries_Device* );#endif  /* _ISERIES_PCI_H */#endif  /*CONFIG_PPC_ISERIES  */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?