⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ibmphp.h

📁 LINUX 2.6.17.4的源码
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef __IBMPHP_H#define __IBMPHP_H/* * IBM Hot Plug Controller Driver * * Written By: Jyoti Shah, Tong Yu, Irene Zubarev, IBM Corporation * * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) * Copyright (C) 2001-2003 IBM Corp. * * All rights reserved. * * 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, GOOD TITLE or * NON INFRINGEMENT.  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., 675 Mass Ave, Cambridge, MA 02139, USA. * * Send feedback to <gregkh@us.ibm.com> * */#include "pci_hotplug.h"extern int ibmphp_debug;#if !defined(MODULE)	#define MY_NAME "ibmphpd"#else	#define MY_NAME THIS_MODULE->name#endif#define debug(fmt, arg...) do { if (ibmphp_debug == 1) printk(KERN_DEBUG "%s: " fmt , MY_NAME , ## arg); } while (0)#define debug_pci(fmt, arg...) do { if (ibmphp_debug) printk(KERN_DEBUG "%s: " fmt , MY_NAME , ## arg); } while (0)#define err(format, arg...) printk(KERN_ERR "%s: " format , MY_NAME , ## arg)#define info(format, arg...) printk(KERN_INFO "%s: " format , MY_NAME , ## arg)#define warn(format, arg...) printk(KERN_WARNING "%s: " format , MY_NAME , ## arg)/* EBDA stuff *//************************************************************ SLOT CAPABILITY                                          ************************************************************/#define EBDA_SLOT_133_MAX		0x20#define EBDA_SLOT_100_MAX		0x10#define EBDA_SLOT_66_MAX		0x02#define EBDA_SLOT_PCIX_CAP		0x08/*************************************************************  RESOURE TYPE                                             *************************************************************/#define EBDA_RSRC_TYPE_MASK		0x03#define EBDA_IO_RSRC_TYPE		0x00#define EBDA_MEM_RSRC_TYPE		0x01#define EBDA_PFM_RSRC_TYPE		0x03#define EBDA_RES_RSRC_TYPE		0x02/**************************************************************  IO RESTRICTION TYPE                                       **************************************************************/#define EBDA_IO_RESTRI_MASK		0x0c#define EBDA_NO_RESTRI			0x00#define EBDA_AVO_VGA_ADDR		0x04#define EBDA_AVO_VGA_ADDR_AND_ALIA	0x08#define EBDA_AVO_ISA_ADDR		0x0c/***************************************************************  DEVICE TYPE DEF                                            ***************************************************************/#define EBDA_DEV_TYPE_MASK		0x10#define EBDA_PCI_DEV			0x10#define EBDA_NON_PCI_DEV		0x00/****************************************************************  PRIMARY DEF DEFINITION                                      ****************************************************************/#define EBDA_PRI_DEF_MASK		0x20#define EBDA_PRI_PCI_BUS_INFO		0x20#define EBDA_NORM_DEV_RSRC_INFO		0x00//--------------------------------------------------------------// RIO TABLE DATA STRUCTURE//--------------------------------------------------------------struct rio_table_hdr {	u8 ver_num; 	u8 scal_count;	u8 riodev_count;	u16 offset;};//-------------------------------------------------------------// SCALABILITY DETAIL//-------------------------------------------------------------struct scal_detail {	u8 node_id;	u32 cbar;	u8 port0_node_connect;	u8 port0_port_connect;	u8 port1_node_connect;	u8 port1_port_connect;	u8 port2_node_connect;	u8 port2_port_connect;	u8 chassis_num;//	struct list_head scal_detail_list;};//--------------------------------------------------------------// RIO DETAIL //--------------------------------------------------------------struct rio_detail {	u8 rio_node_id;	u32 bbar;	u8 rio_type;	u8 owner_id;	u8 port0_node_connect;	u8 port0_port_connect;	u8 port1_node_connect;	u8 port1_port_connect;	u8 first_slot_num;	u8 status;	u8 wpindex;	u8 chassis_num;	struct list_head rio_detail_list;};struct opt_rio {	u8 rio_type;	u8 chassis_num;	u8 first_slot_num;	u8 middle_num;	struct list_head opt_rio_list;};	struct opt_rio_lo {	u8 rio_type;	u8 chassis_num;	u8 first_slot_num;	u8 middle_num;	u8 pack_count;	struct list_head opt_rio_lo_list;};	/*****************************************************************  HPC DESCRIPTOR NODE                                          *****************************************************************/struct ebda_hpc_list {	u8 format;	u16 num_ctlrs;	short phys_addr;//      struct list_head ebda_hpc_list;};/******************************************************************   IN HPC DATA STRUCTURE, THE ASSOCIATED SLOT AND BUS           **   STRUCTURE                                                    ******************************************************************/struct ebda_hpc_slot {	u8 slot_num;	u32 slot_bus_num;	u8 ctl_index;	u8 slot_cap;};struct ebda_hpc_bus {	u32 bus_num;	u8 slots_at_33_conv;	u8 slots_at_66_conv;	u8 slots_at_66_pcix;	u8 slots_at_100_pcix;	u8 slots_at_133_pcix;};/*********************************************************************   THREE TYPE OF HOT PLUG CONTROLLER                                *********************************************************************/struct isa_ctlr_access {	u16 io_start;	u16 io_end;};struct pci_ctlr_access {	u8 bus;	u8 dev_fun;};struct wpeg_i2c_ctlr_access {	ulong wpegbbar;	u8 i2c_addr;};#define HPC_DEVICE_ID		0x0246#define HPC_SUBSYSTEM_ID	0x0247#define HPC_PCI_OFFSET		0x40/**************************************************************************   RSTC DESCRIPTOR NODE                                                 **************************************************************************/struct ebda_rsrc_list {	u8 format;	u16 num_entries;	u16 phys_addr;	struct ebda_rsrc_list *next;};/****************************************************************************   PCI RSRC NODE                                                          ****************************************************************************/struct ebda_pci_rsrc {	u8 rsrc_type;	u8 bus_num;	u8 dev_fun;	u32 start_addr;	u32 end_addr;	u8 marked;	/* for NVRAM */	struct list_head ebda_pci_rsrc_list;};/************************************************************ BUS_INFO DATE STRUCTURE                                  ************************************************************/struct bus_info {	u8 slot_min;	u8 slot_max;	u8 slot_count;	u8 busno;	u8 controller_id;	u8 current_speed;	u8 current_bus_mode;	u8 index;	u8 slots_at_33_conv;	u8 slots_at_66_conv;	u8 slots_at_66_pcix;	u8 slots_at_100_pcix;	u8 slots_at_133_pcix;	struct list_head bus_info_list;};/************************************************************ GLOBAL VARIABLES                                         ************************************************************/extern struct list_head ibmphp_ebda_pci_rsrc_head;extern struct list_head ibmphp_slot_head;/************************************************************ FUNCTION PROTOTYPES                                      ************************************************************/extern void ibmphp_free_ebda_hpc_queue (void);extern int ibmphp_access_ebda (void);extern struct slot *ibmphp_get_slot_from_physical_num (u8);extern int ibmphp_get_total_hp_slots (void);extern void ibmphp_free_ibm_slot (struct slot *);extern void ibmphp_free_bus_info_queue (void);extern void ibmphp_free_ebda_pci_rsrc_queue (void);extern struct bus_info *ibmphp_find_same_bus_num (u32);extern int ibmphp_get_bus_index (u8);extern u16 ibmphp_get_total_controllers (void);extern int ibmphp_register_pci (void);/* passed parameters */#define MEM		0#define IO		1#define PFMEM		2/* bit masks */#define RESTYPE		0x03#define IOMASK		0x00	/* will need to take its complement */#define MMASK		0x01#define PFMASK		0x03#define PCIDEVMASK	0x10	/* we should always have PCI devices */#define PRIMARYBUSMASK	0x20/* pci specific defines */#define PCI_VENDOR_ID_NOTVALID		0xFFFF#define PCI_HEADER_TYPE_MULTIDEVICE	0x80#define PCI_HEADER_TYPE_MULTIBRIDGE	0x81#define LATENCY		0x64#define CACHE		64#define DEVICEENABLE	0x015F		/* CPQ has 0x0157 */#define IOBRIDGE	0x1000		/* 4k */#define MEMBRIDGE	0x100000	/* 1M *//* irqs */#define SCSI_IRQ	0x09#define LAN_IRQ		0x0A#define OTHER_IRQ	0x0B/* Data Structures *//* type is of the form x x xx xx *                     | |  |  |_ 00 - I/O, 01 - Memory, 11 - PFMemory *                     | |  - 00 - No Restrictions, 01 - Avoid VGA, 10 - Avoid *                     | |    VGA and their aliases, 11 - Avoid ISA *                     | - 1 - PCI device, 0 - non pci device *                     - 1 - Primary PCI Bus Information (0 if Normal device) * the IO restrictions [2:3] are only for primary buses *//* we need this struct because there could be several resource blocks * allocated per primary bus in the EBDA */struct range_node {	int rangeno;	u32 start;	u32 end;	struct range_node *next;};struct bus_node {	u8 busno;	int noIORanges;	struct range_node *rangeIO;	int noMemRanges;	struct range_node *rangeMem;	int noPFMemRanges;	struct range_node *rangePFMem;	int needIOUpdate;	int needMemUpdate;	int needPFMemUpdate;	struct resource_node *firstIO;	/* first IO resource on the Bus */	struct resource_node *firstMem;	/* first memory resource on the Bus */	struct resource_node *firstPFMem;	/* first prefetchable memory resource on the Bus */	struct resource_node *firstPFMemFromMem;	/* when run out of pfmem available, taking from Mem */	struct list_head bus_list;};struct resource_node {	int rangeno;	u8 busno;	u8 devfunc;	u32 start;	u32 end;	u32 len;	int type;		/* MEM, IO, PFMEM */	u8 fromMem;		/* this is to indicate that the range is from				 * from the Memory bucket rather than from PFMem */	struct resource_node *next;	struct resource_node *nextRange;	/* for the other mem range on bus */};struct res_needed {	u32 mem;	u32 pfmem;	u32 io;	u8 not_correct;		/* needed for return */	int devices[32];	/* for device numbers behind this bridge */};

⌨️ 快捷键说明

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