cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

rpaphp.h (2452B)


      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 */