| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
|  | 2 | * PCI Hot Plug Controller Driver for RPA-compliant PPC64 platform. | 
|  | 3 | * | 
|  | 4 | * Copyright (C) 2003 Linda Xie <lxie@us.ibm.com> | 
|  | 5 | * | 
|  | 6 | * All rights reserved. | 
|  | 7 | * | 
|  | 8 | * This program is free software; you can redistribute it and/or modify | 
|  | 9 | * it under the terms of the GNU General Public License as published by | 
|  | 10 | * the Free Software Foundation; either version 2 of the License, or (at | 
|  | 11 | * your option) any later version. | 
|  | 12 | * | 
|  | 13 | * This program is distributed in the hope that it will be useful, but | 
|  | 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 15 | * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or | 
|  | 16 | * NON INFRINGEMENT.  See the GNU General Public License for more | 
|  | 17 | * details. | 
|  | 18 | * | 
|  | 19 | * You should have received a copy of the GNU General Public License | 
|  | 20 | * along with this program; if not, write to the Free Software | 
|  | 21 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
|  | 22 | * | 
|  | 23 | * Send feedback to <lxie@us.ibm.com>, | 
|  | 24 | * | 
|  | 25 | */ | 
|  | 26 |  | 
|  | 27 | #ifndef _PPC64PHP_H | 
|  | 28 | #define _PPC64PHP_H | 
|  | 29 |  | 
|  | 30 | #include <linux/pci.h> | 
| Olaf Hering | e17e31e | 2006-10-20 09:23:05 +0200 | [diff] [blame] | 31 | #include <linux/pci_hotplug.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 32 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 33 | #define DR_INDICATOR 9002 | 
|  | 34 | #define DR_ENTITY_SENSE 9003 | 
|  | 35 |  | 
|  | 36 | #define POWER_ON	100 | 
|  | 37 | #define POWER_OFF	0 | 
|  | 38 |  | 
|  | 39 | #define LED_OFF		0 | 
|  | 40 | #define LED_ON		1	/* continuous on */ | 
|  | 41 | #define LED_ID		2	/* slow blinking */ | 
|  | 42 | #define LED_ACTION	3	/* fast blinking */ | 
|  | 43 |  | 
|  | 44 | /* Sensor values from rtas_get-sensor */ | 
|  | 45 | #define EMPTY           0	/* No card in slot */ | 
|  | 46 | #define PRESENT         1	/* Card in slot */ | 
|  | 47 |  | 
|  | 48 | #define MY_NAME "rpaphp" | 
| Rusty Russell | 90ab5ee | 2012-01-13 09:32:20 +1030 | [diff] [blame] | 49 | extern bool rpaphp_debug; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 50 | #define dbg(format, arg...)					\ | 
|  | 51 | do {							\ | 
| Kristen Carlson Accardi | 5d9bc1f | 2008-10-13 09:59:12 -0700 | [diff] [blame] | 52 | if (rpaphp_debug)					\ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 53 | printk(KERN_DEBUG "%s: " format,	\ | 
|  | 54 | MY_NAME , ## arg); 		\ | 
|  | 55 | } while (0) | 
|  | 56 | #define err(format, arg...) printk(KERN_ERR "%s: " format, MY_NAME , ## arg) | 
|  | 57 | #define info(format, arg...) printk(KERN_INFO "%s: " format, MY_NAME , ## arg) | 
|  | 58 | #define warn(format, arg...) printk(KERN_WARNING "%s: " format, MY_NAME , ## arg) | 
|  | 59 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 60 | /* slot states */ | 
|  | 61 |  | 
|  | 62 | #define	NOT_VALID	3 | 
|  | 63 | #define	NOT_CONFIGURED	2 | 
|  | 64 | #define	CONFIGURED	1 | 
|  | 65 | #define	EMPTY		0 | 
|  | 66 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 67 | /* | 
|  | 68 | * struct slot - slot information for each *physical* slot | 
|  | 69 | */ | 
|  | 70 | struct slot { | 
|  | 71 | struct list_head rpaphp_slot_list; | 
|  | 72 | int state; | 
|  | 73 | u32 index; | 
|  | 74 | u32 type; | 
|  | 75 | u32 power_domain; | 
|  | 76 | char *name; | 
| John Rose | 9c209c9 | 2005-07-25 11:13:38 -0500 | [diff] [blame] | 77 | struct device_node *dn; | 
|  | 78 | struct pci_bus *bus; | 
|  | 79 | struct list_head *pci_devs; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 80 | struct hotplug_slot *hotplug_slot; | 
|  | 81 | }; | 
|  | 82 |  | 
|  | 83 | extern struct hotplug_slot_ops rpaphp_hotplug_slot_ops; | 
|  | 84 | extern struct list_head rpaphp_slot_head; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 85 |  | 
|  | 86 | /* function prototypes */ | 
|  | 87 |  | 
|  | 88 | /* rpaphp_pci.c */ | 
| Linas Vepstas | fea54b8 | 2007-04-13 15:34:20 -0700 | [diff] [blame] | 89 | extern int rpaphp_enable_slot(struct slot *slot); | 
| linas@austin.ibm.com | e06b80b | 2006-01-12 18:28:22 -0600 | [diff] [blame] | 90 | extern int rpaphp_get_sensor_state(struct slot *slot, int *state); | 
| linas | 934199e | 2005-09-28 19:33:38 -0500 | [diff] [blame] | 91 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 92 | /* rpaphp_core.c */ | 
|  | 93 | extern int rpaphp_add_slot(struct device_node *dn); | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 94 | extern int rpaphp_get_drc_props(struct device_node *dn, int *drc_index, | 
|  | 95 | char **drc_name, char **drc_type, int *drc_power_domain); | 
|  | 96 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 97 | /* rpaphp_slot.c */ | 
|  | 98 | extern void dealloc_slot_struct(struct slot *slot); | 
|  | 99 | extern struct slot *alloc_slot_struct(struct device_node *dn, int drc_index, char *drc_name, int power_domain); | 
| linas@austin.ibm.com | f6afbad | 2006-01-12 18:31:01 -0600 | [diff] [blame] | 100 | extern int rpaphp_register_slot(struct slot *slot); | 
|  | 101 | extern int rpaphp_deregister_slot(struct slot *slot); | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 102 |  | 
|  | 103 | #endif				/* _PPC64PHP_H */ |