~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/powerpc/include/asm/pnv-pci.h

Version: ~ [ linux-5.18 ] ~ [ linux-5.17.9 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.41 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.117 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.195 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.244 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.280 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.315 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.302 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * Copyright 2014 IBM Corp.
  3  *
  4  * This program is free software; you can redistribute it and/or
  5  * modify it under the terms of the GNU General Public License
  6  * as published by the Free Software Foundation; either version
  7  * 2 of the License, or (at your option) any later version.
  8  */
  9 
 10 #ifndef _ASM_PNV_PCI_H
 11 #define _ASM_PNV_PCI_H
 12 
 13 #include <linux/pci.h>
 14 #include <linux/pci_hotplug.h>
 15 #include <linux/irq.h>
 16 #include <misc/cxl-base.h>
 17 #include <asm/opal-api.h>
 18 
 19 #define PCI_SLOT_ID_PREFIX      (1UL << 63)
 20 #define PCI_SLOT_ID(phb_id, bdfn)       \
 21         (PCI_SLOT_ID_PREFIX | ((uint64_t)(bdfn) << 16) | (phb_id))
 22 
 23 extern int pnv_pci_get_slot_id(struct device_node *np, uint64_t *id);
 24 extern int pnv_pci_get_device_tree(uint32_t phandle, void *buf, uint64_t len);
 25 extern int pnv_pci_get_presence_state(uint64_t id, uint8_t *state);
 26 extern int pnv_pci_get_power_state(uint64_t id, uint8_t *state);
 27 extern int pnv_pci_set_power_state(uint64_t id, uint8_t state,
 28                                    struct opal_msg *msg);
 29 extern int pnv_pci_set_p2p(struct pci_dev *initiator, struct pci_dev *target,
 30                            u64 desc);
 31 
 32 extern int pnv_pci_enable_tunnel(struct pci_dev *dev, uint64_t *asnind);
 33 extern int pnv_pci_disable_tunnel(struct pci_dev *dev);
 34 extern int pnv_pci_set_tunnel_bar(struct pci_dev *dev, uint64_t addr,
 35                                   int enable);
 36 extern int pnv_pci_get_as_notify_info(struct task_struct *task, u32 *lpid,
 37                                       u32 *pid, u32 *tid);
 38 int pnv_phb_to_cxl_mode(struct pci_dev *dev, uint64_t mode);
 39 int pnv_cxl_ioda_msi_setup(struct pci_dev *dev, unsigned int hwirq,
 40                            unsigned int virq);
 41 int pnv_cxl_alloc_hwirqs(struct pci_dev *dev, int num);
 42 void pnv_cxl_release_hwirqs(struct pci_dev *dev, int hwirq, int num);
 43 int pnv_cxl_get_irq_count(struct pci_dev *dev);
 44 struct device_node *pnv_pci_get_phb_node(struct pci_dev *dev);
 45 int64_t pnv_opal_pci_msi_eoi(struct irq_chip *chip, unsigned int hw_irq);
 46 bool is_pnv_opal_msi(struct irq_chip *chip);
 47 
 48 #ifdef CONFIG_CXL_BASE
 49 int pnv_cxl_alloc_hwirq_ranges(struct cxl_irq_ranges *irqs,
 50                                struct pci_dev *dev, int num);
 51 void pnv_cxl_release_hwirq_ranges(struct cxl_irq_ranges *irqs,
 52                                   struct pci_dev *dev);
 53 #endif
 54 
 55 struct pnv_php_slot {
 56         struct hotplug_slot             slot;
 57         uint64_t                        id;
 58         char                            *name;
 59         int                             slot_no;
 60         unsigned int                    flags;
 61 #define PNV_PHP_FLAG_BROKEN_PDC         0x1
 62         struct kref                     kref;
 63 #define PNV_PHP_STATE_INITIALIZED       0
 64 #define PNV_PHP_STATE_REGISTERED        1
 65 #define PNV_PHP_STATE_POPULATED         2
 66 #define PNV_PHP_STATE_OFFLINE           3
 67         int                             state;
 68         int                             irq;
 69         struct workqueue_struct         *wq;
 70         struct device_node              *dn;
 71         struct pci_dev                  *pdev;
 72         struct pci_bus                  *bus;
 73         bool                            power_state_check;
 74         u8                              attention_state;
 75         void                            *fdt;
 76         void                            *dt;
 77         struct of_changeset             ocs;
 78         struct pnv_php_slot             *parent;
 79         struct list_head                children;
 80         struct list_head                link;
 81 };
 82 extern struct pnv_php_slot *pnv_php_find_slot(struct device_node *dn);
 83 extern int pnv_php_set_slot_power_state(struct hotplug_slot *slot,
 84                                         uint8_t state);
 85 
 86 #endif
 87 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp