Lines Matching +full:access +full:- +full:controllers
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2023, STMicroelectronics - All Rights Reserved
40 return -EINVAL; in stm32_firewall_get_firewall()
43 of_for_each_phandle(&it, err, np, "access-controllers", "#access-controller-cells", 0) { in stm32_firewall_get_firewall()
50 pr_err("Unable to get access-controllers property for node %s\n, err: %d", in stm32_firewall_get_firewall()
51 np->full_name, err); in stm32_firewall_get_firewall()
57 pr_err("Too many firewall controllers"); in stm32_firewall_get_firewall()
59 return -EINVAL; in stm32_firewall_get_firewall()
68 if (ctrl->dev->of_node->phandle == it.phandle) { in stm32_firewall_get_firewall()
78 pr_err("No firewall controller registered for %s\n", np->full_name); in stm32_firewall_get_firewall()
80 return -ENODEV; in stm32_firewall_get_firewall()
83 err = of_property_read_string_index(np, "access-controller-names", j, &fw_entry); in stm32_firewall_get_firewall()
91 return -EINVAL; in stm32_firewall_get_firewall()
103 for (i = 0; i < provider_args.args_count - 1; i++) in stm32_firewall_get_firewall()
107 firewall[j].extra_args_size = provider_args.args_count - 1; in stm32_firewall_get_firewall()
120 if (!firewall || firewall->firewall_id == U32_MAX) in stm32_firewall_grant_access()
121 return -EINVAL; in stm32_firewall_grant_access()
123 firewall_controller = firewall->firewall_ctrl; in stm32_firewall_grant_access()
126 return -ENODEV; in stm32_firewall_grant_access()
128 return firewall_controller->grant_access(firewall_controller, firewall->firewall_id); in stm32_firewall_grant_access()
136 if (!firewall || subsystem_id == U32_MAX || firewall->firewall_id == U32_MAX) in stm32_firewall_grant_access_by_id()
137 return -EINVAL; in stm32_firewall_grant_access_by_id()
139 firewall_controller = firewall->firewall_ctrl; in stm32_firewall_grant_access_by_id()
142 return -ENODEV; in stm32_firewall_grant_access_by_id()
144 return firewall_controller->grant_access(firewall_controller, subsystem_id); in stm32_firewall_grant_access_by_id()
152 if (!firewall || firewall->firewall_id == U32_MAX) { in stm32_firewall_release_access()
153 pr_debug("Incorrect arguments when releasing a firewall access\n"); in stm32_firewall_release_access()
157 firewall_controller = firewall->firewall_ctrl; in stm32_firewall_release_access()
164 firewall_controller->release_access(firewall_controller, firewall->firewall_id); in stm32_firewall_release_access()
172 if (!firewall || subsystem_id == U32_MAX || firewall->firewall_id == U32_MAX) { in stm32_firewall_release_access_by_id()
173 pr_debug("Incorrect arguments when releasing a firewall access"); in stm32_firewall_release_access_by_id()
177 firewall_controller = firewall->firewall_ctrl; in stm32_firewall_release_access_by_id()
184 firewall_controller->release_access(firewall_controller, subsystem_id); in stm32_firewall_release_access_by_id()
195 return -ENODEV; in stm32_firewall_controller_register()
197 pr_info("Registering %s firewall controller\n", firewall_controller->name); in stm32_firewall_controller_register()
203 firewall_controller->name); in stm32_firewall_controller_register()
208 list_add_tail(&firewall_controller->entry, &firewall_controller_list); in stm32_firewall_controller_register()
229 list_del_init(&ctrl->entry); in stm32_firewall_controller_unregister()
237 firewall_controller->name); in stm32_firewall_controller_unregister()
250 parent = firewall_controller->dev; in stm32_firewall_populate_bus()
252 dev_dbg(parent, "Populating %s system bus\n", dev_name(firewall_controller->dev)); in stm32_firewall_populate_bus()
255 /* The access-controllers property is mandatory for firewall bus devices */ in stm32_firewall_populate_bus()
256 len = of_count_phandle_with_args(child, "access-controllers", in stm32_firewall_populate_bus()
257 "#access-controller-cells"); in stm32_firewall_populate_bus()
260 return -EINVAL; in stm32_firewall_populate_bus()
266 return -ENOMEM; in stm32_firewall_populate_bus()
277 if (firewall_controller->grant_access(firewall_controller, in stm32_firewall_populate_bus()
280 * Peripheral access not allowed or not defined. in stm32_firewall_populate_bus()
285 child->full_name); in stm32_firewall_populate_bus()