Lines Matching +full:msi +full:- +full:parent

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2013-2015 ARM Limited, All Rights Reserved.
9 #include <linux/msi.h>
27 .name = "ITS-MSI",
35 int msi, msix, *count = data; in its_pci_msi_vec_count() local
37 msi = max(pci_msi_vec_count(pdev), 0); in its_pci_msi_vec_count()
39 *count += max(msi, msix); in its_pci_msi_vec_count()
61 return -EINVAL; in its_pci_msi_prepare()
63 msi_info = msi_get_domain_info(domain->parent); in its_pci_msi_prepare()
74 if (alias_dev->subordinate) in its_pci_msi_prepare()
75 pci_walk_bus(alias_dev->subordinate, in its_pci_msi_prepare()
77 info->flags |= MSI_ALLOC_FLAGS_PROXY_DEVICE; in its_pci_msi_prepare()
81 info->scratchpad[0].ul = pci_msi_domain_get_msi_rid(domain, pdev); in its_pci_msi_prepare()
91 if (!info->scratchpad[0].ul) in its_pci_msi_prepare()
94 return msi_info->ops->msi_prepare(domain->parent, dev, nvec, info); in its_pci_msi_prepare()
109 { .compatible = "arm,gic-v3-its", },
116 struct irq_domain *parent; in its_pci_msi_init_one() local
118 parent = irq_find_matching_fwnode(handle, DOMAIN_BUS_NEXUS); in its_pci_msi_init_one()
119 if (!parent || !msi_get_domain_info(parent)) { in its_pci_msi_init_one()
121 return -ENXIO; in its_pci_msi_init_one()
125 parent)) { in its_pci_msi_init_one()
127 return -ENOMEM; in its_pci_msi_init_one()
141 if (!of_property_read_bool(np, "msi-controller")) in its_pci_of_msi_init()
144 if (its_pci_msi_init_one(of_node_to_fwnode(np), np->full_name)) in its_pci_of_msi_init()
147 pr_info("PCI/MSI: %pOF domain created\n", np); in its_pci_of_msi_init()
162 int err = -ENXIO; in its_pci_msi_parse_madt()
166 (long)its_entry->base_address); in its_pci_msi_parse_madt()
167 dom_handle = iort_find_domain_token(its_entry->translation_id); in its_pci_msi_parse_madt()
175 pr_info("PCI/MSI: %s domain created\n", node_name); in its_pci_msi_parse_madt()