2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License version 2 as
4 * published by the Free Software Foundation.
6 * This program is distributed in the hope that it will be useful,
7 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 * GNU General Public License for more details.
11 * Copyright (C) 2012 ARM Limited
14 #ifndef _LINUX_VEXPRESS_H
15 #define _LINUX_VEXPRESS_H
17 #include <linux/device.h>
18 #include <linux/regmap.h>
20 #define VEXPRESS_SITE_MB 0
21 #define VEXPRESS_SITE_DB1 1
22 #define VEXPRESS_SITE_DB2 2
23 #define VEXPRESS_SITE_MASTER 0xf
25 /* Config infrastructure */
27 void vexpress_config_set_master(u32 site
);
28 u32
vexpress_config_get_master(void);
30 void vexpress_config_lock(void *arg
);
31 void vexpress_config_unlock(void *arg
);
33 int vexpress_config_get_topo(struct device_node
*node
, u32
*site
,
34 u32
*position
, u32
*dcc
);
36 /* Config bridge API */
38 struct vexpress_config_bridge_ops
{
39 struct regmap
* (*regmap_init
)(struct device
*dev
, void *context
);
40 void (*regmap_exit
)(struct regmap
*regmap
, void *context
);
43 struct device
*vexpress_config_bridge_register(struct device
*parent
,
44 struct vexpress_config_bridge_ops
*ops
, void *context
);
46 /* Config regmap API */
48 struct regmap
*devm_regmap_init_vexpress_config(struct device
*dev
);
50 /* Platform control */
52 void vexpress_flags_set(u32 data
);