]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blame - include/linux/vexpress.h
mfd: syscon: Add platform data with a regmap config name
[mirror_ubuntu-artful-kernel.git] / include / linux / vexpress.h
CommitLineData
3ecbf05b
PM
1/*
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.
5 *
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.
10 *
11 * Copyright (C) 2012 ARM Limited
12 */
13
14#ifndef _LINUX_VEXPRESS_H
15#define _LINUX_VEXPRESS_H
16
17#include <linux/device.h>
3b9334ac 18#include <linux/platform_device.h>
7b6d864b 19#include <linux/reboot.h>
3b9334ac 20#include <linux/regmap.h>
3ecbf05b
PM
21
22#define VEXPRESS_SITE_MB 0
23#define VEXPRESS_SITE_DB1 1
24#define VEXPRESS_SITE_DB2 2
25#define VEXPRESS_SITE_MASTER 0xf
26
88e0abcd
PM
27#define VEXPRESS_GPIO_MMC_CARDIN 0
28#define VEXPRESS_GPIO_MMC_WPROT 1
29#define VEXPRESS_GPIO_FLASH_WPn 2
8ea402f5
PM
30#define VEXPRESS_GPIO_LED0 3
31#define VEXPRESS_GPIO_LED1 4
32#define VEXPRESS_GPIO_LED2 5
33#define VEXPRESS_GPIO_LED3 6
34#define VEXPRESS_GPIO_LED4 7
35#define VEXPRESS_GPIO_LED5 8
36#define VEXPRESS_GPIO_LED6 9
37#define VEXPRESS_GPIO_LED7 10
88e0abcd
PM
38
39#define VEXPRESS_RES_FUNC(_site, _func) \
40{ \
41 .start = (_site), \
42 .end = (_func), \
43 .flags = IORESOURCE_BUS, \
44}
45
3b9334ac 46/* Config infrastructure */
3ecbf05b 47
3b9334ac
PM
48void vexpress_config_set_master(u32 site);
49u32 vexpress_config_get_master(void);
3ecbf05b 50
3b9334ac
PM
51void vexpress_config_lock(void *arg);
52void vexpress_config_unlock(void *arg);
3ecbf05b 53
3b9334ac
PM
54int vexpress_config_get_topo(struct device_node *node, u32 *site,
55 u32 *position, u32 *dcc);
3ecbf05b 56
3b9334ac 57/* Config bridge API */
3ecbf05b 58
3b9334ac
PM
59struct vexpress_config_bridge_ops {
60 struct regmap * (*regmap_init)(struct device *dev, void *context);
61 void (*regmap_exit)(struct regmap *regmap, void *context);
62};
3ecbf05b 63
3b9334ac
PM
64struct device *vexpress_config_bridge_register(struct device *parent,
65 struct vexpress_config_bridge_ops *ops, void *context);
3ecbf05b 66
3b9334ac 67/* Config regmap API */
3ecbf05b 68
3b9334ac 69struct regmap *devm_regmap_init_vexpress_config(struct device *dev);
3ecbf05b 70
88e0abcd
PM
71/* Platform control */
72
73u32 vexpress_get_procid(int site);
74u32 vexpress_get_hbi(int site);
75void *vexpress_get_24mhz_clock_base(void);
76void vexpress_flags_set(u32 data);
77
88e0abcd
PM
78void vexpress_sysreg_early_init(void __iomem *base);
79void vexpress_sysreg_of_early_init(void);
3b9334ac 80int vexpress_sysreg_config_device_register(struct platform_device *pdev);
88e0abcd 81
38669e04
PM
82/* Clocks */
83
38669e04 84void vexpress_clk_init(void __iomem *sp810_base);
38669e04 85
3ecbf05b 86#endif