linux/drivers/pci/hotplug/rpaphp.h
<<
>>
Prefs
   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>
  31#include <linux/pci_hotplug.h>
  32
  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"
  49extern bool rpaphp_debug;
  50#define dbg(format, arg...)                                     \
  51        do {                                                    \
  52                if (rpaphp_debug)                                       \
  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
  60/* slot states */
  61
  62#define NOT_VALID       3
  63#define NOT_CONFIGURED  2
  64#define CONFIGURED      1
  65#define EMPTY           0
  66
  67/*
  68 * struct slot - slot information for each *physical* slot
  69 */
  70struct slot {
  71        struct list_head rpaphp_slot_list;
  72        int state;
  73        u32 index;
  74        u32 type;
  75        u32 power_domain;
  76        char *name;
  77        struct device_node *dn;
  78        struct pci_bus *bus;
  79        struct list_head *pci_devs;
  80        struct hotplug_slot *hotplug_slot;
  81};
  82
  83extern struct hotplug_slot_ops rpaphp_hotplug_slot_ops;
  84extern struct list_head rpaphp_slot_head;
  85
  86/* function prototypes */
  87
  88/* rpaphp_pci.c */
  89extern int rpaphp_enable_slot(struct slot *slot);
  90extern int rpaphp_get_sensor_state(struct slot *slot, int *state);
  91
  92/* rpaphp_core.c */
  93extern int rpaphp_add_slot(struct device_node *dn);
  94extern int rpaphp_get_drc_props(struct device_node *dn, int *drc_index,
  95                char **drc_name, char **drc_type, int *drc_power_domain);
  96
  97/* rpaphp_slot.c */
  98extern void dealloc_slot_struct(struct slot *slot);
  99extern struct slot *alloc_slot_struct(struct device_node *dn, int drc_index, char *drc_name, int power_domain);
 100extern int rpaphp_register_slot(struct slot *slot);
 101extern int rpaphp_deregister_slot(struct slot *slot);
 102        
 103#endif                          /* _PPC64PHP_H */
 104