1 /* SPDX-License-Identifier: GPL-2.0-only */
4 * Copyright (C) 2012 ARM Limited
7 #ifndef _LINUX_VEXPRESS_H
8 #define _LINUX_VEXPRESS_H
10 #include <linux/device.h>
11 #include <linux/regmap.h>
13 #define VEXPRESS_SITE_MB 0
14 #define VEXPRESS_SITE_DB1 1
15 #define VEXPRESS_SITE_DB2 2
16 #define VEXPRESS_SITE_MASTER 0xf
18 /* Config infrastructure */
20 void vexpress_config_set_master(u32 site
);
21 u32
vexpress_config_get_master(void);
23 void vexpress_config_lock(void *arg
);
24 void vexpress_config_unlock(void *arg
);
26 int vexpress_config_get_topo(struct device_node
*node
, u32
*site
,
27 u32
*position
, u32
*dcc
);
29 /* Config bridge API */
31 struct vexpress_config_bridge_ops
{
32 struct regmap
* (*regmap_init
)(struct device
*dev
, void *context
);
33 void (*regmap_exit
)(struct regmap
*regmap
, void *context
);
36 struct device
*vexpress_config_bridge_register(struct device
*parent
,
37 struct vexpress_config_bridge_ops
*ops
, void *context
);
39 /* Config regmap API */
41 struct regmap
*devm_regmap_init_vexpress_config(struct device
*dev
);
43 /* Platform control */
45 void vexpress_flags_set(u32 data
);