2  * PCI Hot Plug Controller Driver for RPA-compliant PPC64 platform.
 
   4  * Copyright (C) 2003 Linda Xie <lxie@us.ibm.com>
 
   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.
 
  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
 
  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.
 
  23  * Send feedback to <lxie@us.ibm.com>,
 
  30 #include <linux/pci.h>
 
  31 #include <linux/pci_hotplug.h>
 
  33 #define DR_INDICATOR 9002
 
  34 #define DR_ENTITY_SENSE 9003
 
  40 #define LED_ON          1       /* continuous on */
 
  41 #define LED_ID          2       /* slow blinking */
 
  42 #define LED_ACTION      3       /* fast blinking */
 
  44 /* Sensor values from rtas_get-sensor */
 
  45 #define EMPTY           0       /* No card in slot */
 
  46 #define PRESENT         1       /* Card in slot */
 
  48 #define MY_NAME "rpaphp"
 
  49 extern int rpaphp_debug;
 
  50 #define dbg(format, arg...)                                     \
 
  53                         printk(KERN_DEBUG "%s: " format,        \
 
  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)
 
  63 #define NOT_CONFIGURED  2
 
  68  * struct slot - slot information for each *physical* slot
 
  71         struct list_head rpaphp_slot_list;
 
  77         struct device_node *dn;
 
  79         struct list_head *pci_devs;
 
  80         struct hotplug_slot *hotplug_slot;
 
  83 extern struct hotplug_slot_ops rpaphp_hotplug_slot_ops;
 
  84 extern struct list_head rpaphp_slot_head;
 
  86 /* function prototypes */
 
  89 extern int rpaphp_enable_slot(struct slot *slot);
 
  90 extern int rpaphp_get_sensor_state(struct slot *slot, int *state);
 
  93 extern int rpaphp_add_slot(struct device_node *dn);
 
  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);
 
  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);
 
 100 extern int rpaphp_register_slot(struct slot *slot);
 
 101 extern int rpaphp_deregister_slot(struct slot *slot);
 
 103 #endif                          /* _PPC64PHP_H */