1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * Copyright (C) 2022 Linaro Ltd. 4 */ 5 6 #include <linux/of.h> 7 #include <linux/slab.h> 8 9 #include "icc-common.h" 10 11 struct icc_node_data *qcom_icc_xlate_extended(struct of_phandle_args *spec, void *data) 12 { 13 struct icc_node_data *ndata; 14 struct icc_node *node; 15 16 node = of_icc_xlate_onecell(spec, data); 17 if (IS_ERR(node)) 18 return ERR_CAST(node); 19 20 ndata = kzalloc(sizeof(*ndata), GFP_KERNEL); 21 if (!ndata) 22 return ERR_PTR(-ENOMEM); 23 24 ndata->node = node; 25 26 if (spec->args_count == 2) 27 ndata->tag = spec->args[1]; 28 29 if (spec->args_count > 2) 30 pr_warn("%pOF: Too many arguments, path tag is not parsed\n", spec->np); 31 32 return ndata; 33 } 34 EXPORT_SYMBOL_GPL(qcom_icc_xlate_extended); 35