Lines Matching refs:node
92 struct fwnode_handle *iort_get_fwnode(struct acpi_iort_node *node) in iort_get_fwnode() argument
99 if (curr->iort_node == node) { in iort_get_fwnode()
114 static inline void iort_delete_fwnode(struct acpi_iort_node *node) in iort_delete_fwnode() argument
120 if (curr->iort_node == node) { in iort_delete_fwnode()
130 (struct acpi_iort_node *node, void *context);
242 static acpi_status iort_match_node_callback(struct acpi_iort_node *node, in iort_match_node_callback() argument
248 if (node->type == ACPI_IORT_NODE_NAMED_COMPONENT) { in iort_match_node_callback()
262 ncomp = (struct acpi_iort_named_component *)node->node_data; in iort_match_node_callback()
266 } else if (node->type == ACPI_IORT_NODE_PCI_ROOT_COMPLEX) { in iort_match_node_callback()
271 pci_rc = (struct acpi_iort_root_complex *)node->node_data; in iort_match_node_callback()
310 struct acpi_iort_node *iort_node_get_id(struct acpi_iort_node *node, in iort_node_get_id() argument
316 if (!node->mapping_offset || !node->mapping_count || in iort_node_get_id()
317 index >= node->mapping_count) in iort_node_get_id()
320 map = ACPI_ADD_PTR(struct acpi_iort_id_mapping, node, in iort_node_get_id()
321 node->mapping_offset + index * sizeof(*map)); in iort_node_get_id()
326 node, node->type); in iort_node_get_id()
334 if (node->type == ACPI_IORT_NODE_NAMED_COMPONENT || in iort_node_get_id()
335 node->type == ACPI_IORT_NODE_PCI_ROOT_COMPLEX) { in iort_node_get_id()
344 static struct acpi_iort_node *iort_node_map_id(struct acpi_iort_node *node, in iort_node_map_id() argument
351 while (node) { in iort_node_map_id()
355 if (IORT_TYPE_MASK(node->type) & type_mask) { in iort_node_map_id()
358 return node; in iort_node_map_id()
361 if (!node->mapping_offset || !node->mapping_count) in iort_node_map_id()
364 map = ACPI_ADD_PTR(struct acpi_iort_id_mapping, node, in iort_node_map_id()
365 node->mapping_offset); in iort_node_map_id()
370 node, node->type); in iort_node_map_id()
375 for (i = 0; i < node->mapping_count; i++, map++) { in iort_node_map_id()
376 if (!iort_id_map(map, node->type, id, &id)) in iort_node_map_id()
380 if (i == node->mapping_count) in iort_node_map_id()
383 node = ACPI_ADD_PTR(struct acpi_iort_node, iort_table, in iort_node_map_id()
396 struct acpi_iort_node *iort_node_map_platform_id(struct acpi_iort_node *node, in iort_node_map_platform_id() argument
404 parent = iort_node_get_id(node, &id, index); in iort_node_map_platform_id()
449 struct acpi_iort_node *node; in iort_msi_map_rid() local
452 node = iort_find_dev_node(dev); in iort_msi_map_rid()
453 if (!node) in iort_msi_map_rid()
456 iort_node_map_id(node, req_id, &dev_id, IORT_MSI_TYPE); in iort_msi_map_rid()
470 struct acpi_iort_node *node; in iort_pmsi_get_dev_id() local
472 node = iort_find_dev_node(dev); in iort_pmsi_get_dev_id()
473 if (!node) in iort_pmsi_get_dev_id()
476 for (i = 0; i < node->mapping_count; i++) { in iort_pmsi_get_dev_id()
477 if (iort_node_map_platform_id(node, dev_id, IORT_MSI_TYPE, i)) in iort_pmsi_get_dev_id()
497 struct acpi_iort_node *node; in iort_dev_find_its_id() local
499 node = iort_find_dev_node(dev); in iort_dev_find_its_id()
500 if (!node) in iort_dev_find_its_id()
503 node = iort_node_map_id(node, req_id, NULL, IORT_MSI_TYPE); in iort_dev_find_its_id()
504 if (!node) in iort_dev_find_its_id()
508 its = (struct acpi_iort_its_group *)node->node_data; in iort_dev_find_its_id()
550 struct acpi_iort_node *node, *msi_parent = NULL; in iort_get_platform_device_domain() local
556 node = iort_scan_node(ACPI_IORT_NODE_NAMED_COMPONENT, in iort_get_platform_device_domain()
558 if (!node) in iort_get_platform_device_domain()
562 for (i = 0; i < node->mapping_count; i++) { in iort_get_platform_device_domain()
563 msi_parent = iort_node_map_platform_id(node, NULL, in iort_get_platform_device_domain()
651 static int iort_iommu_xlate(struct device *dev, struct acpi_iort_node *node, in iort_iommu_xlate() argument
657 if (!node) in iort_iommu_xlate()
660 iort_fwnode = iort_get_fwnode(node); in iort_iommu_xlate()
674 return iort_iommu_driver_enabled(node->type) ? in iort_iommu_xlate()
682 struct acpi_iort_node *node; member
691 parent = iort_node_map_id(info->node, alias, &streamid, in iort_pci_iommu_init()
698 struct acpi_iort_node *node; in nc_dma_get_range() local
701 node = iort_scan_node(ACPI_IORT_NODE_NAMED_COMPONENT, in nc_dma_get_range()
703 if (!node) in nc_dma_get_range()
706 ncomp = (struct acpi_iort_named_component *)node->node_data; in nc_dma_get_range()
781 struct acpi_iort_node *node, *parent; in iort_iommu_configure() local
798 node = iort_scan_node(ACPI_IORT_NODE_PCI_ROOT_COMPLEX, in iort_iommu_configure()
800 if (!node) in iort_iommu_configure()
803 info.node = node; in iort_iommu_configure()
809 node = iort_scan_node(ACPI_IORT_NODE_NAMED_COMPONENT, in iort_iommu_configure()
811 if (!node) in iort_iommu_configure()
815 parent = iort_node_map_platform_id(node, &streamid, in iort_iommu_configure()
863 static int __init arm_smmu_v3_count_resources(struct acpi_iort_node *node) in arm_smmu_v3_count_resources() argument
870 smmu = (struct acpi_iort_smmu_v3 *)node->node_data; in arm_smmu_v3_count_resources()
918 struct acpi_iort_node *node) in arm_smmu_v3_init_resources() argument
924 smmu = (struct acpi_iort_smmu_v3 *)node->node_data; in arm_smmu_v3_init_resources()
961 static bool __init arm_smmu_v3_is_coherent(struct acpi_iort_node *node) in arm_smmu_v3_is_coherent() argument
966 smmu = (struct acpi_iort_smmu_v3 *)node->node_data; in arm_smmu_v3_is_coherent()
976 struct acpi_iort_node *node) in arm_smmu_v3_set_proximity() argument
980 smmu = (struct acpi_iort_smmu_v3 *)node->node_data; in arm_smmu_v3_set_proximity()
992 static int __init arm_smmu_count_resources(struct acpi_iort_node *node) in arm_smmu_count_resources() argument
997 smmu = (struct acpi_iort_smmu *)node->node_data; in arm_smmu_count_resources()
1011 struct acpi_iort_node *node) in arm_smmu_init_resources() argument
1018 smmu = (struct acpi_iort_smmu *)node->node_data; in arm_smmu_init_resources()
1025 glb_irq = ACPI_ADD_PTR(u64, node, smmu->global_interrupt_offset); in arm_smmu_init_resources()
1034 ctx_irq = ACPI_ADD_PTR(u64, node, smmu->context_interrupt_offset); in arm_smmu_init_resources()
1044 static bool __init arm_smmu_is_coherent(struct acpi_iort_node *node) in arm_smmu_is_coherent() argument
1049 smmu = (struct acpi_iort_smmu *)node->node_data; in arm_smmu_is_coherent()
1056 int (*iommu_init)(struct acpi_iort_node *node);
1057 bool (*iommu_is_coherent)(struct acpi_iort_node *node);
1058 int (*iommu_count_resources)(struct acpi_iort_node *node);
1060 struct acpi_iort_node *node);
1062 struct acpi_iort_node *node);
1081 const struct iort_iommu_config *iort_get_iommu_cfg(struct acpi_iort_node *node) in iort_get_iommu_cfg() argument
1083 switch (node->type) { in iort_get_iommu_cfg()
1099 static int __init iort_add_smmu_platform_device(struct acpi_iort_node *node) in iort_add_smmu_platform_device() argument
1106 const struct iort_iommu_config *ops = iort_get_iommu_cfg(node); in iort_add_smmu_platform_device()
1116 ops->iommu_set_proximity(&pdev->dev, node); in iort_add_smmu_platform_device()
1118 count = ops->iommu_count_resources(node); in iort_add_smmu_platform_device()
1126 ops->iommu_init_resources(r, node); in iort_add_smmu_platform_device()
1142 ret = platform_device_add_data(pdev, &node, sizeof(node)); in iort_add_smmu_platform_device()
1152 fwnode = iort_get_fwnode(node); in iort_add_smmu_platform_device()
1161 attr = ops->iommu_is_coherent(node) ? in iort_add_smmu_platform_device()