Sophie

Sophie

distrib > Mandriva > 2006.0 > x86_64 > by-pkgid > 63500f035e381e55d90f2ff04e9c37bf > files > 2

hotplug-2004_09_23-22mdk.src.rpm

/*
 *    Compaq Hot Plug Controller Driver
 *    Copyright 1995,2001 Compaq Computer Corporation
 *    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 <linuxhotplug@compaq.com>
 */
#ifndef _CPQPHPD_IOCTL
#define MAXLEN 128

typedef struct BUS_INFO_STRUCT {
	int bus_number;
	int current_speed;
	int supported_speed;
} public_bus_info;

typedef struct SLOT_INFO_STRUCT {
	int slot_number;
	int is_hotpluggable;
	int power;
	int attention_status;
	int latch_status;
	int adapter_presence;
	int bit_mode;	// 0 = 32-bit, 1 = 64-bit
	public_bus_info* bus;
} public_slot_info;

typedef struct FUNCTION_INFO_STRUCT {
	int is_bridge;
	int is_driverloaded;
	int supported_speed_mode;
	int vendor_id;
	int subvendor_id;
	int device_id;
	int subdevice_id;
	int bus_number;
	int device_number;
	int function_number;
	char device_name[MAXLEN];
	char driver_name[MAXLEN];
} public_function_info;

typedef struct ADAPTER_INFO_STRUCT{
	char adapter_name[MAXLEN];
	public_slot_info* slot;
	public_function_info* function;
} public_adapter_info;

typedef struct CPQUSNTILTN_STRUCT {
	u8 offset;
	u8 value;
	u8 bus;
	u8 device;
	u8 function;
	u8 type_of_request;
	u8 return_status;
	u8 physical_slot;
	public_function_info* adapter_info;
} ioctl_data;

typedef struct _message {
	int	eb_serial_number;
	int	message_id;
} message;

#define HPCD_DATA_LENGTH sizeof(struct _message) 
#define HPCD_BUFFER_LENGTH 32 
//this number needs adjusting to the maximum amount of pending messages possible 
//If there is no upper bound on this, the implementation here is rather dangerous to use, as messages are not prevented to "step over" each other.


#define GET_CTRL_STRUCTURE 	1
#define GET_IRQ_ROUTE 		2
#define ADD_BOARD		10	
#define POWER_DOWN_BOARD	3
#define WRITE_REGISTER_VALUE	4
#define SET_SOGO		5
#define HARDWARE_TEST		8
#define SET_ATTENTION_STATUS    11
#define GET_STATUS		12

#endif