Lines Matching refs:node

83 			struct acpi_iort_node *node)  in iort_get_fwnode()  argument
90 if (curr->iort_node == node) { in iort_get_fwnode()
105 static inline void iort_delete_fwnode(struct acpi_iort_node *node) in iort_delete_fwnode() argument
111 if (curr->iort_node == node) { in iort_delete_fwnode()
146 (struct acpi_iort_node *node, void *context);
261 static acpi_status iort_match_node_callback(struct acpi_iort_node *node, in iort_match_node_callback() argument
267 if (node->type == ACPI_IORT_NODE_NAMED_COMPONENT) { in iort_match_node_callback()
297 ncomp = (struct acpi_iort_named_component *)node->node_data; in iort_match_node_callback()
301 } else if (node->type == ACPI_IORT_NODE_PCI_ROOT_COMPLEX) { in iort_match_node_callback()
306 pci_rc = (struct acpi_iort_root_complex *)node->node_data; in iort_match_node_callback()
370 static struct acpi_iort_node *iort_node_get_id(struct acpi_iort_node *node, in iort_node_get_id() argument
376 if (!node->mapping_offset || !node->mapping_count || in iort_node_get_id()
377 index >= node->mapping_count) in iort_node_get_id()
380 map = ACPI_ADD_PTR(struct acpi_iort_id_mapping, node, in iort_node_get_id()
381 node->mapping_offset + index * sizeof(*map)); in iort_node_get_id()
386 node, node->type); in iort_node_get_id()
394 if (node->type == ACPI_IORT_NODE_NAMED_COMPONENT || in iort_node_get_id()
395 node->type == ACPI_IORT_NODE_PCI_ROOT_COMPLEX || in iort_node_get_id()
396 node->type == ACPI_IORT_NODE_SMMU_V3 || in iort_node_get_id()
397 node->type == ACPI_IORT_NODE_PMCG) { in iort_node_get_id()
410 static int iort_get_id_mapping_index(struct acpi_iort_node *node) in iort_get_id_mapping_index() argument
415 switch (node->type) { in iort_get_id_mapping_index()
421 if (node->revision < 1) in iort_get_id_mapping_index()
424 smmu = (struct acpi_iort_smmu_v3 *)node->node_data; in iort_get_id_mapping_index()
429 if (node->revision < 5) { in iort_get_id_mapping_index()
437 if (smmu->id_mapping_index >= node->mapping_count) { in iort_get_id_mapping_index()
439 node, node->type); in iort_get_id_mapping_index()
445 pmcg = (struct acpi_iort_pmcg *)node->node_data; in iort_get_id_mapping_index()
446 if (pmcg->overflow_gsiv || node->mapping_count == 0) in iort_get_id_mapping_index()
455 static struct acpi_iort_node *iort_node_map_id(struct acpi_iort_node *node, in iort_node_map_id() argument
462 while (node) { in iort_node_map_id()
467 if (IORT_TYPE_MASK(node->type) & type_mask) { in iort_node_map_id()
470 return node; in iort_node_map_id()
473 if (!node->mapping_offset || !node->mapping_count) in iort_node_map_id()
476 map = ACPI_ADD_PTR(struct acpi_iort_id_mapping, node, in iort_node_map_id()
477 node->mapping_offset); in iort_node_map_id()
482 node, node->type); in iort_node_map_id()
491 index = iort_get_id_mapping_index(node); in iort_node_map_id()
494 for (i = 0; i < node->mapping_count; i++, map++) { in iort_node_map_id()
499 rc = iort_id_map(map, node->type, map_id, &id, out_ref); in iort_node_map_id()
506 if (i == node->mapping_count && !out_ref) in iort_node_map_id()
509 node = ACPI_ADD_PTR(struct acpi_iort_node, iort_table, in iort_node_map_id()
522 struct acpi_iort_node *node, u32 *id_out, u8 type_mask, in iort_node_map_platform_id() argument
529 parent = iort_node_get_id(node, &id, index); in iort_node_map_platform_id()
553 struct acpi_iort_node *node; in iort_find_dev_node() local
560 node = iort_get_iort_node(dev->fwnode); in iort_find_dev_node()
561 if (node) in iort_find_dev_node()
562 return node; in iort_find_dev_node()
586 struct acpi_iort_node *node; in iort_msi_map_id() local
589 node = iort_find_dev_node(dev); in iort_msi_map_id()
590 if (!node) in iort_msi_map_id()
593 iort_node_map_id(node, input_id, &dev_id, IORT_MSI_TYPE); in iort_msi_map_id()
607 struct acpi_iort_node *node; in iort_pmsi_get_dev_id() local
609 node = iort_find_dev_node(dev); in iort_pmsi_get_dev_id()
610 if (!node) in iort_pmsi_get_dev_id()
613 index = iort_get_id_mapping_index(node); in iort_pmsi_get_dev_id()
616 if (iort_node_get_id(node, dev_id, index)) in iort_pmsi_get_dev_id()
619 for (i = 0; i < node->mapping_count; i++) { in iort_pmsi_get_dev_id()
620 if (iort_node_map_platform_id(node, dev_id, in iort_pmsi_get_dev_id()
660 struct acpi_iort_node *node; in iort_dev_find_its_id() local
662 node = iort_find_dev_node(dev); in iort_dev_find_its_id()
663 if (!node) in iort_dev_find_its_id()
666 node = iort_node_map_id(node, id, NULL, IORT_MSI_TYPE); in iort_dev_find_its_id()
667 if (!node) in iort_dev_find_its_id()
671 its = (struct acpi_iort_its_group *)node->node_data; in iort_dev_find_its_id()
707 struct acpi_iort_node *node) in iort_set_device_domain() argument
716 index = iort_get_id_mapping_index(node); in iort_set_device_domain()
720 map = ACPI_ADD_PTR(struct acpi_iort_id_mapping, node, in iort_set_device_domain()
721 node->mapping_offset + index * sizeof(*map)); in iort_set_device_domain()
727 node, node->type); in iort_set_device_domain()
758 struct acpi_iort_node *node, *msi_parent = NULL; in iort_get_platform_device_domain() local
764 node = iort_scan_node(ACPI_IORT_NODE_NAMED_COMPONENT, in iort_get_platform_device_domain()
766 if (!node) in iort_get_platform_device_domain()
770 for (i = 0; i < node->mapping_count; i++) { in iort_get_platform_device_domain()
771 msi_parent = iort_node_map_platform_id(node, NULL, in iort_get_platform_device_domain()
887 static void iort_get_rmrs(struct acpi_iort_node *node, in iort_get_rmrs() argument
892 struct acpi_iort_rmr *rmr = (struct acpi_iort_rmr *)node->node_data; in iort_get_rmrs()
896 rmr_desc = ACPI_ADD_PTR(struct acpi_iort_rmr_desc, node, in iort_get_rmrs()
977 static void iort_node_get_rmr_info(struct acpi_iort_node *node, in iort_node_get_rmr_info() argument
988 if (!node->mapping_offset || !node->mapping_count) { in iort_node_get_rmr_info()
990 node); in iort_node_get_rmr_info()
994 rmr = (struct acpi_iort_rmr *)node->node_data; in iort_node_get_rmr_info()
998 map = ACPI_ADD_PTR(struct acpi_iort_id_mapping, node, in iort_node_get_rmr_info()
999 node->mapping_offset); in iort_node_get_rmr_info()
1007 for (i = 0; i < node->mapping_count; i++, map++) { in iort_node_get_rmr_info()
1032 iort_get_rmrs(node, smmu, sids, num_sids, head); in iort_node_get_rmr_info()
1213 static bool iort_pci_rc_supports_ats(struct acpi_iort_node *node) in iort_pci_rc_supports_ats() argument
1217 pci_rc = (struct acpi_iort_root_complex *)node->node_data; in iort_pci_rc_supports_ats()
1221 static bool iort_pci_rc_supports_canwbs(struct acpi_iort_node *node) in iort_pci_rc_supports_canwbs() argument
1226 pci_rc = (struct acpi_iort_root_complex *)node->node_data; in iort_pci_rc_supports_canwbs()
1232 static int iort_iommu_xlate(struct device *dev, struct acpi_iort_node *node, in iort_iommu_xlate() argument
1238 if (!node || !iort_iommu_driver_enabled(node->type)) in iort_iommu_xlate()
1241 iort_fwnode = iort_get_fwnode(node); in iort_iommu_xlate()
1254 struct acpi_iort_node *node; member
1263 parent = iort_node_map_id(info->node, alias, &streamid, in iort_pci_iommu_init()
1269 struct acpi_iort_node *node) in iort_named_component_init() argument
1274 nc = (struct acpi_iort_named_component *)node->node_data; in iort_named_component_init()
1285 static int iort_nc_iommu_map(struct device *dev, struct acpi_iort_node *node) in iort_nc_iommu_map() argument
1293 parent = iort_node_map_platform_id(node, &streamid, in iort_nc_iommu_map()
1305 struct acpi_iort_node *node, in iort_nc_iommu_map_id() argument
1311 parent = iort_node_map_id(node, *in_id, &streamid, IORT_IOMMU_TYPE); in iort_nc_iommu_map_id()
1329 struct acpi_iort_node *node; in iort_iommu_configure_id() local
1337 node = iort_scan_node(ACPI_IORT_NODE_PCI_ROOT_COMPLEX, in iort_iommu_configure_id()
1339 if (!node) in iort_iommu_configure_id()
1342 info.node = node; in iort_iommu_configure_id()
1347 if (fwspec && iort_pci_rc_supports_ats(node)) in iort_iommu_configure_id()
1349 if (fwspec && iort_pci_rc_supports_canwbs(node)) in iort_iommu_configure_id()
1352 node = iort_scan_node(ACPI_IORT_NODE_NAMED_COMPONENT, in iort_iommu_configure_id()
1354 if (!node) in iort_iommu_configure_id()
1357 err = id_in ? iort_nc_iommu_map_id(dev, node, id_in) : in iort_iommu_configure_id()
1358 iort_nc_iommu_map(dev, node); in iort_iommu_configure_id()
1361 iort_named_component_init(dev, node); in iort_iommu_configure_id()
1376 struct acpi_iort_node *node; in nc_dma_get_range() local
1379 node = iort_scan_node(ACPI_IORT_NODE_NAMED_COMPONENT, in nc_dma_get_range()
1381 if (!node) in nc_dma_get_range()
1384 ncomp = (struct acpi_iort_named_component *)node->node_data; in nc_dma_get_range()
1399 struct acpi_iort_node *node; in rc_dma_get_range() local
1403 node = iort_scan_node(ACPI_IORT_NODE_PCI_ROOT_COMPLEX, in rc_dma_get_range()
1405 if (!node || node->revision < 1) in rc_dma_get_range()
1408 rc = (struct acpi_iort_root_complex *)node->node_data; in rc_dma_get_range()
1455 static int __init arm_smmu_v3_count_resources(struct acpi_iort_node *node) in arm_smmu_v3_count_resources() argument
1462 smmu = (struct acpi_iort_smmu_v3 *)node->node_data; in arm_smmu_v3_count_resources()
1510 struct acpi_iort_node *node) in arm_smmu_v3_init_resources() argument
1516 smmu = (struct acpi_iort_smmu_v3 *)node->node_data; in arm_smmu_v3_init_resources()
1554 struct acpi_iort_node *node) in arm_smmu_v3_dma_configure() argument
1560 smmu = (struct acpi_iort_smmu_v3 *)node->node_data; in arm_smmu_v3_dma_configure()
1577 struct acpi_iort_node *node) in arm_smmu_v3_set_proximity() argument
1581 smmu = (struct acpi_iort_smmu_v3 *)node->node_data; in arm_smmu_v3_set_proximity()
1599 static int __init arm_smmu_count_resources(struct acpi_iort_node *node) in arm_smmu_count_resources() argument
1604 smmu = (struct acpi_iort_smmu *)node->node_data; in arm_smmu_count_resources()
1618 struct acpi_iort_node *node) in arm_smmu_init_resources() argument
1625 smmu = (struct acpi_iort_smmu *)node->node_data; in arm_smmu_init_resources()
1632 glb_irq = ACPI_ADD_PTR(u64, node, smmu->global_interrupt_offset); in arm_smmu_init_resources()
1641 ctx_irq = ACPI_ADD_PTR(u64, node, smmu->context_interrupt_offset); in arm_smmu_init_resources()
1652 struct acpi_iort_node *node) in arm_smmu_dma_configure() argument
1658 smmu = (struct acpi_iort_smmu *)node->node_data; in arm_smmu_dma_configure()
1670 static int __init arm_smmu_v3_pmcg_count_resources(struct acpi_iort_node *node) in arm_smmu_v3_pmcg_count_resources() argument
1675 pmcg = (struct acpi_iort_pmcg *)node->node_data; in arm_smmu_v3_pmcg_count_resources()
1685 struct acpi_iort_node *node) in arm_smmu_v3_pmcg_init_resources() argument
1690 pmcg = (struct acpi_iort_pmcg *)node->node_data; in arm_smmu_v3_pmcg_init_resources()
1701 if (node->revision > 0) { in arm_smmu_v3_pmcg_init_resources()
1747 int (*dev_init)(struct acpi_iort_node *node);
1749 struct acpi_iort_node *node);
1750 int (*dev_count_resources)(struct acpi_iort_node *node);
1752 struct acpi_iort_node *node);
1754 struct acpi_iort_node *node);
1781 struct acpi_iort_node *node) in iort_get_dev_cfg() argument
1783 switch (node->type) { in iort_get_dev_cfg()
1802 static int __init iort_add_platform_device(struct acpi_iort_node *node, in iort_add_platform_device() argument
1815 ret = ops->dev_set_proximity(&pdev->dev, node); in iort_add_platform_device()
1820 count = ops->dev_count_resources(node); in iort_add_platform_device()
1828 ops->dev_init_resources(r, node); in iort_add_platform_device()
1849 ret = platform_device_add_data(pdev, &node, sizeof(node)); in iort_add_platform_device()
1854 fwnode = iort_get_fwnode(node); in iort_add_platform_device()
1864 ops->dev_dma_configure(&pdev->dev, node); in iort_add_platform_device()
1866 iort_set_device_domain(&pdev->dev, node); in iort_add_platform_device()
2000 struct acpi_iort_node *node, *end; in acpi_iort_dma_get_max_cpu_address() local
2013 node = ACPI_ADD_PTR(struct acpi_iort_node, iort, iort->node_offset); in acpi_iort_dma_get_max_cpu_address()
2017 if (node >= end) in acpi_iort_dma_get_max_cpu_address()
2020 switch (node->type) { in acpi_iort_dma_get_max_cpu_address()
2026 ncomp = (struct acpi_iort_named_component *)node->node_data; in acpi_iort_dma_get_max_cpu_address()
2032 if (node->revision < 1) in acpi_iort_dma_get_max_cpu_address()
2035 rc = (struct acpi_iort_root_complex *)node->node_data; in acpi_iort_dma_get_max_cpu_address()
2040 node = ACPI_ADD_PTR(struct acpi_iort_node, node, node->length); in acpi_iort_dma_get_max_cpu_address()