aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2013-06-01 02:39:35 -0400
committerOlof Johansson <olof@lixom.net>2013-06-01 02:39:35 -0400
commitdb9bde2fa518fa67d28ffa287d1209871bcdc789 (patch)
treeef90d0d1fd72ab08dde7e9a6ca0556aa86686a80 /include/linux
parent6678e38959f99a5669ce0a261a0b7f09a9aff0f8 (diff)
parent033a899c9b06e7e4f6733a637fee34c632ca2d47 (diff)
Merge branch 'VExpress_DCSCB' of git://git.linaro.org/people/nico/linux into next/soc
From Nicolas Pitre: This is the first MCPM backend submission for VExpress running on RTSM aka Fast Models implementing the big.LITTLE system architecture. This enables SMP secondary boot as well as CPU hotplug on this platform. A big prerequisite for this support is the CCI driver from Lorenzo included in this pull request. Also included is Rob Herring's set_auxcr/get_auxcr allowing nicer code. Signed-off-by: Olof Johansson <olof@lixom.net> * 'VExpress_DCSCB' of git://git.linaro.org/people/nico/linux: ARM: vexpress: Select multi-cluster SMP operation if required ARM: vexpress/dcscb: handle platform coherency exit/setup and CCI ARM: vexpress/dcscb: do not hardcode number of CPUs per cluster ARM: vexpress/dcscb: add CPU use counts to the power up/down API implementation ARM: vexpress: introduce DCSCB support ARM: introduce common set_auxcr/get_auxcr functions drivers/bus: arm-cci: function to enable CCI ports from early boot code drivers: bus: add ARM CCI support
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/arm-cci.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/include/linux/arm-cci.h b/include/linux/arm-cci.h
new file mode 100644
index 000000000000..79d6edf446d5
--- /dev/null
+++ b/include/linux/arm-cci.h
@@ -0,0 +1,61 @@
1/*
2 * CCI cache coherent interconnect support
3 *
4 * Copyright (C) 2013 ARM Ltd.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21#ifndef __LINUX_ARM_CCI_H
22#define __LINUX_ARM_CCI_H
23
24#include <linux/errno.h>
25#include <linux/types.h>
26
27struct device_node;
28
29#ifdef CONFIG_ARM_CCI
30extern bool cci_probed(void);
31extern int cci_ace_get_port(struct device_node *dn);
32extern int cci_disable_port_by_cpu(u64 mpidr);
33extern int __cci_control_port_by_device(struct device_node *dn, bool enable);
34extern int __cci_control_port_by_index(u32 port, bool enable);
35#else
36static inline bool cci_probed(void) { return false; }
37static inline int cci_ace_get_port(struct device_node *dn)
38{
39 return -ENODEV;
40}
41static inline int cci_disable_port_by_cpu(u64 mpidr) { return -ENODEV; }
42static inline int __cci_control_port_by_device(struct device_node *dn,
43 bool enable)
44{
45 return -ENODEV;
46}
47static inline int __cci_control_port_by_index(u32 port, bool enable)
48{
49 return -ENODEV;
50}
51#endif
52#define cci_disable_port_by_device(dev) \
53 __cci_control_port_by_device(dev, false)
54#define cci_enable_port_by_device(dev) \
55 __cci_control_port_by_device(dev, true)
56#define cci_disable_port_by_index(dev) \
57 __cci_control_port_by_index(dev, false)
58#define cci_enable_port_by_index(dev) \
59 __cci_control_port_by_index(dev, true)
60
61#endif