xref: /rk3399_ARM-atf/lib/bl_aux_params/bl_aux_params.c (revision 72e8f2456af54b75a0a1d92aadfce0b4bcde6ba1)
1b852d229SJulius Werner /*
2*4c700c15SGovindraj Raja  * Copyright (c) 2019, Arm Limited and Contributors. All rights reserved.
3b852d229SJulius Werner  *
4b852d229SJulius Werner  * SPDX-License-Identifier: BSD-3-Clause
5b852d229SJulius Werner  */
64ce3e99aSScott Branden #include <inttypes.h>
74ce3e99aSScott Branden #include <stdint.h>
8b852d229SJulius Werner 
9b852d229SJulius Werner #include <common/debug.h>
10b852d229SJulius Werner #include <lib/coreboot.h>
11b852d229SJulius Werner #include <lib/bl_aux_params/bl_aux_params.h>
12b852d229SJulius Werner 
bl_aux_params_parse(u_register_t head,bl_aux_param_handler_t handler)13b852d229SJulius Werner void bl_aux_params_parse(u_register_t head,
14b852d229SJulius Werner 			 bl_aux_param_handler_t handler)
15b852d229SJulius Werner {
16b852d229SJulius Werner 	struct bl_aux_param_header *p;
17b852d229SJulius Werner 
18b852d229SJulius Werner 	for (p = (void *)head; p; p = (void *)(uintptr_t)p->next) {
19b852d229SJulius Werner 		if (handler && handler(p))
20b852d229SJulius Werner 			continue;
21b852d229SJulius Werner 
22b852d229SJulius Werner 		switch (p->type) {
23b852d229SJulius Werner #if COREBOOT
24b852d229SJulius Werner 		case BL_AUX_PARAM_COREBOOT_TABLE:
25b852d229SJulius Werner 			coreboot_table_setup((void *)(uintptr_t)
26b852d229SJulius Werner 				((struct bl_aux_param_uint64 *)p)->value);
27b852d229SJulius Werner 			break;
28b852d229SJulius Werner #endif
29b852d229SJulius Werner 		default:
304ce3e99aSScott Branden 			ERROR("Ignoring unknown BL aux parameter: 0x%" PRIx64,
31b852d229SJulius Werner 			      p->type);
32b852d229SJulius Werner 			break;
33b852d229SJulius Werner 		}
34b852d229SJulius Werner 	}
35b852d229SJulius Werner }
36