linux/drivers/pci/hotplug/rpaphp.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * PCI Hot Plug Controller Driver for RPA-compliant PPC64 platform.
   4 *
   5 * Copyright (C) 2003 Linda Xie <lxie@us.ibm.com>
   6 *
   7 * All rights reserved.
   8 *
   9 * Send feedback to <lxie@us.ibm.com>,
  10 *
  11 */
  12
  13#ifndef _PPC64PHP_H
  14#define _PPC64PHP_H
  15
  16#include <linux/pci.h>
  17#include <linux/pci_hotplug.h>
  18
  19#define DR_INDICATOR 9002
  20#define DR_ENTITY_SENSE 9003
  21
  22#define POWER_ON        100
  23#define POWER_OFF       0
  24
  25#define LED_OFF         0
  26#define LED_ON          1       /* continuous on */
  27#define LED_ID          2       /* slow blinking */
  28#define LED_ACTION      3       /* fast blinking */
  29
  30/* Sensor values from rtas_get-sensor */
  31#define EMPTY           0       /* No card in slot */
  32#define PRESENT         1       /* Card in slot */
  33
  34#define MY_NAME "rpaphp"
  35extern bool rpaphp_debug;
  36#define dbg(format, arg...)                                     \
  37        do {                                                    \
  38                if (rpaphp_debug)                               \
  39                        printk(KERN_DEBUG "%s: " format,        \
  40                                MY_NAME, ## arg);               \
  41        } while (0)
  42#define err(format, arg...) printk(KERN_ERR "%s: " format, MY_NAME, ## arg)
  43#define info(format, arg...) printk(KERN_INFO "%s: " format, MY_NAME, ## arg)
  44#define warn(format, arg...) printk(KERN_WARNING "%s: " format, MY_NAME, ## arg)
  45
  46/* slot states */
  47
  48#define NOT_VALID       3
  49#define NOT_CONFIGURED  2
  50#define CONFIGURED      1
  51#define EMPTY           0
  52
  53/* DRC constants */
  54
  55#define MAX_DRC_NAME_LEN 64
  56
  57/*
  58 * struct slot - slot information for each *physical* slot
  59 */
  60struct slot {
  61        struct list_head rpaphp_slot_list;
  62        int state;
  63        u32 index;
  64        u32 type;
  65        u32 power_domain;
  66        u8 attention_status;
  67        char *name;
  68        struct device_node *dn;
  69        struct pci_bus *bus;
  70        struct list_head *pci_devs;
  71        struct hotplug_slot hotplug_slot;
  72};
  73
  74extern const struct hotplug_slot_ops rpaphp_hotplug_slot_ops;
  75extern struct list_head rpaphp_slot_head;
  76
  77static inline struct slot *to_slot(struct hotplug_slot *hotplug_slot)
  78{
  79        return container_of(hotplug_slot, struct slot, hotplug_slot);
  80}
  81
  82/* function prototypes */
  83
  84/* rpaphp_pci.c */
  85int rpaphp_enable_slot(struct slot *slot);
  86int rpaphp_get_sensor_state(struct slot *slot, int *state);
  87
  88/* rpaphp_core.c */
  89int rpaphp_add_slot(struct device_node *dn);
  90int rpaphp_check_drc_props(struct device_node *dn, char *drc_name,
  91                char *drc_type);
  92
  93/* rpaphp_slot.c */
  94void dealloc_slot_struct(struct slot *slot);
  95struct slot *alloc_slot_struct(struct device_node *dn, int drc_index, char *drc_name, int power_domain);
  96int rpaphp_register_slot(struct slot *slot);
  97int rpaphp_deregister_slot(struct slot *slot);
  98
  99#endif                          /* _PPC64PHP_H */
 100