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

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

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ 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 /* SPDX-License-Identifier: GPL-2.0-or-later */
  2 /*
  3  * Copyright 2014 IBM Corp.
  4  */
  5 
  6 #ifndef _ASM_PNV_PCI_H
  7 #define _ASM_PNV_PCI_H
  8 
  9 #include <linux/pci.h>
 10 #include <linux/pci_hotplug.h>
 11 #include <linux/irq.h>
 12 #include <linux/of.h>
 13 #include <misc/cxl-base.h>
 14 #include <asm/opal-api.h>
 15 
 16 #define PCI_SLOT_ID_PREFIX      (1UL << 63)
 17 #define PCI_SLOT_ID(phb_id, bdfn)       \
 18         (PCI_SLOT_ID_PREFIX | ((uint64_t)(bdfn) << 16) | (phb_id))
 19 #define PCI_PHB_SLOT_ID(phb_id)         (phb_id)
 20 
 21 extern int pnv_pci_get_slot_id(struct device_node *np, uint64_t *id);
 22 extern int pnv_pci_get_device_tree(uint32_t phandle, void *buf, uint64_t len);
 23 extern int pnv_pci_get_presence_state(uint64_t id, uint8_t *state);
 24 extern int pnv_pci_get_power_state(uint64_t id, uint8_t *state);
 25 extern int pnv_pci_set_power_state(uint64_t id, uint8_t state,
 26                                    struct opal_msg *msg);
 27 
 28 extern int pnv_pci_set_tunnel_bar(struct pci_dev *dev, uint64_t addr,
 29                                   int enable);
 30 int pnv_phb_to_cxl_mode(struct pci_dev *dev, uint64_t mode);
 31 int pnv_cxl_ioda_msi_setup(struct pci_dev *dev, unsigned int hwirq,
 32                            unsigned int virq);
 33 int pnv_cxl_alloc_hwirqs(struct pci_dev *dev, int num);
 34 void pnv_cxl_release_hwirqs(struct pci_dev *dev, int hwirq, int num);
 35 int pnv_cxl_get_irq_count(struct pci_dev *dev);
 36 struct device_node *pnv_pci_get_phb_node(struct pci_dev *dev);
 37 int64_t pnv_opal_pci_msi_eoi(struct irq_data *d);
 38 bool is_pnv_opal_msi(struct irq_chip *chip);
 39 
 40 #ifdef CONFIG_CXL_BASE
 41 int pnv_cxl_alloc_hwirq_ranges(struct cxl_irq_ranges *irqs,
 42                                struct pci_dev *dev, int num);
 43 void pnv_cxl_release_hwirq_ranges(struct cxl_irq_ranges *irqs,
 44                                   struct pci_dev *dev);
 45 #endif
 46 
 47 struct pnv_php_slot {
 48         struct hotplug_slot             slot;
 49         uint64_t                        id;
 50         char                            *name;
 51         int                             slot_no;
 52         unsigned int                    flags;
 53 #define PNV_PHP_FLAG_BROKEN_PDC         0x1
 54         struct kref                     kref;
 55 #define PNV_PHP_STATE_INITIALIZED       0
 56 #define PNV_PHP_STATE_REGISTERED        1
 57 #define PNV_PHP_STATE_POPULATED         2
 58 #define PNV_PHP_STATE_OFFLINE           3
 59         int                             state;
 60         int                             irq;
 61         struct workqueue_struct         *wq;
 62         struct device_node              *dn;
 63         struct pci_dev                  *pdev;
 64         struct pci_bus                  *bus;
 65         bool                            power_state_check;
 66         u8                              attention_state;
 67         void                            *fdt;
 68         void                            *dt;
 69         struct of_changeset             ocs;
 70         struct pnv_php_slot             *parent;
 71         struct list_head                children;
 72         struct list_head                link;
 73 };
 74 extern struct pnv_php_slot *pnv_php_find_slot(struct device_node *dn);
 75 extern int pnv_php_set_slot_power_state(struct hotplug_slot *slot,
 76                                         uint8_t state);
 77 
 78 #endif
 79 

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

kernel.org | git.kernel.org | LWN.net | Project Home | 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.

sflogo.php