blob: b7a124726a04f9236c6e742194dddb05b7580e1a [file] [log] [blame]
Madhukar Pappireddyae9677b2020-01-27 13:37:51 -06001/*
AlexeiFedorov334d2352022-12-29 15:57:40 +00002 * Copyright (c) 2020-2023, Arm Limited. All rights reserved.
Madhukar Pappireddyae9677b2020-01-27 13:37:51 -06003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef FCONF_HW_CONFIG_GETTER_H
8#define FCONF_HW_CONFIG_GETTER_H
9
10#include <lib/fconf/fconf.h>
AlexeiFedorov334d2352022-12-29 15:57:40 +000011#include <services/rmm_core_manifest.h>
12
13#include <plat/arm/common/arm_def.h>
Madhukar Pappireddyae9677b2020-01-27 13:37:51 -060014
15/* Hardware Config related getter */
16#define hw_config__gicv3_config_getter(prop) gicv3_config.prop
Madhukar Pappireddy26b945c2019-12-27 12:02:34 -060017#define hw_config__topology_getter(prop) soc_topology.prop
Madhukar Pappireddy361c1b32020-03-24 10:03:34 -050018#define hw_config__uart_serial_config_getter(prop) uart_serial_config.prop
laurenw-armfc3e7a22020-02-06 11:42:18 -060019#define hw_config__cpu_timer_getter(prop) cpu_timer.prop
AlexeiFedorov334d2352022-12-29 15:57:40 +000020#define hw_config__dram_layout_getter(prop) dram_layout.prop
Madhukar Pappireddy361c1b32020-03-24 10:03:34 -050021
Madhukar Pappireddyae9677b2020-01-27 13:37:51 -060022struct gicv3_config_t {
laurenw-armdc5e9a22020-05-12 10:58:11 -050023 uint64_t gicd_base;
24 uint64_t gicr_base;
Madhukar Pappireddyae9677b2020-01-27 13:37:51 -060025};
26
Madhukar Pappireddy26b945c2019-12-27 12:02:34 -060027struct hw_topology_t {
28 uint32_t plat_cluster_count;
29 uint32_t cluster_cpu_count;
30 uint32_t plat_cpu_count;
31 uint32_t plat_max_pwr_level;
32};
33
Madhukar Pappireddy361c1b32020-03-24 10:03:34 -050034struct uart_serial_config_t {
35 uint64_t uart_base;
36 uint32_t uart_clk;
37};
38
laurenw-armfc3e7a22020-02-06 11:42:18 -060039struct cpu_timer_t {
40 uint32_t clock_freq;
41};
42
AlexeiFedorov334d2352022-12-29 15:57:40 +000043struct ns_dram_layout {
44 uint64_t num_banks;
45 struct ns_dram_bank dram_bank[ARM_DRAM_NUM_BANKS];
46};
47
Madhukar Pappireddyae9677b2020-01-27 13:37:51 -060048int fconf_populate_gicv3_config(uintptr_t config);
Madhukar Pappireddy26b945c2019-12-27 12:02:34 -060049int fconf_populate_topology(uintptr_t config);
Madhukar Pappireddy361c1b32020-03-24 10:03:34 -050050int fconf_populate_uart_config(uintptr_t config);
laurenw-armfc3e7a22020-02-06 11:42:18 -060051int fconf_populate_cpu_timer(uintptr_t config);
AlexeiFedorov334d2352022-12-29 15:57:40 +000052int fconf_populate_dram_layout(uintptr_t config);
Madhukar Pappireddyae9677b2020-01-27 13:37:51 -060053
54extern struct gicv3_config_t gicv3_config;
Madhukar Pappireddy26b945c2019-12-27 12:02:34 -060055extern struct hw_topology_t soc_topology;
Madhukar Pappireddy361c1b32020-03-24 10:03:34 -050056extern struct uart_serial_config_t uart_serial_config;
laurenw-armfc3e7a22020-02-06 11:42:18 -060057extern struct cpu_timer_t cpu_timer;
AlexeiFedorov334d2352022-12-29 15:57:40 +000058extern struct ns_dram_layout dram_layout;
59
Madhukar Pappireddyae9677b2020-01-27 13:37:51 -060060#endif /* FCONF_HW_CONFIG_GETTER_H */