xref: /linux-6.15/include/linux/arm-cci.h (revision db967cf8)
11a59d1b8SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
2ed69bdd8SLorenzo Pieralisi /*
3ed69bdd8SLorenzo Pieralisi  * CCI cache coherent interconnect support
4ed69bdd8SLorenzo Pieralisi  *
5ed69bdd8SLorenzo Pieralisi  * Copyright (C) 2013 ARM Ltd.
6ed69bdd8SLorenzo Pieralisi  */
7ed69bdd8SLorenzo Pieralisi 
8ed69bdd8SLorenzo Pieralisi #ifndef __LINUX_ARM_CCI_H
9ed69bdd8SLorenzo Pieralisi #define __LINUX_ARM_CCI_H
10ed69bdd8SLorenzo Pieralisi 
11ed69bdd8SLorenzo Pieralisi #include <linux/errno.h>
12ed69bdd8SLorenzo Pieralisi #include <linux/types.h>
13ed69bdd8SLorenzo Pieralisi 
14772742a6SSuzuki K. Poulose #include <asm/arm-cci.h>
15772742a6SSuzuki K. Poulose 
16ed69bdd8SLorenzo Pieralisi struct device_node;
17ed69bdd8SLorenzo Pieralisi 
18ed69bdd8SLorenzo Pieralisi #ifdef CONFIG_ARM_CCI
19ed69bdd8SLorenzo Pieralisi extern bool cci_probed(void);
20ee8e5d5fSSuzuki K. Poulose #else
cci_probed(void)21ee8e5d5fSSuzuki K. Poulose static inline bool cci_probed(void) { return false; }
22ee8e5d5fSSuzuki K. Poulose #endif
23ee8e5d5fSSuzuki K. Poulose 
24ee8e5d5fSSuzuki K. Poulose #ifdef CONFIG_ARM_CCI400_PORT_CTRL
25ed69bdd8SLorenzo Pieralisi extern int cci_ace_get_port(struct device_node *dn);
26ed69bdd8SLorenzo Pieralisi extern int cci_disable_port_by_cpu(u64 mpidr);
27ed69bdd8SLorenzo Pieralisi extern int __cci_control_port_by_device(struct device_node *dn, bool enable);
28ed69bdd8SLorenzo Pieralisi extern int __cci_control_port_by_index(u32 port, bool enable);
29ed69bdd8SLorenzo Pieralisi #else
cci_ace_get_port(struct device_node * dn)30ed69bdd8SLorenzo Pieralisi static inline int cci_ace_get_port(struct device_node *dn)
31ed69bdd8SLorenzo Pieralisi {
32ed69bdd8SLorenzo Pieralisi 	return -ENODEV;
33ed69bdd8SLorenzo Pieralisi }
cci_disable_port_by_cpu(u64 mpidr)34ed69bdd8SLorenzo Pieralisi static inline int cci_disable_port_by_cpu(u64 mpidr) { return -ENODEV; }
__cci_control_port_by_device(struct device_node * dn,bool enable)35ed69bdd8SLorenzo Pieralisi static inline int __cci_control_port_by_device(struct device_node *dn,
36ed69bdd8SLorenzo Pieralisi 					       bool enable)
37ed69bdd8SLorenzo Pieralisi {
38ed69bdd8SLorenzo Pieralisi 	return -ENODEV;
39ed69bdd8SLorenzo Pieralisi }
__cci_control_port_by_index(u32 port,bool enable)40ed69bdd8SLorenzo Pieralisi static inline int __cci_control_port_by_index(u32 port, bool enable)
41ed69bdd8SLorenzo Pieralisi {
42ed69bdd8SLorenzo Pieralisi 	return -ENODEV;
43ed69bdd8SLorenzo Pieralisi }
44ed69bdd8SLorenzo Pieralisi #endif
45ee8e5d5fSSuzuki K. Poulose 
46*db967cf8SArnd Bergmann void cci_enable_port_for_self(void);
47*db967cf8SArnd Bergmann 
48ed69bdd8SLorenzo Pieralisi #define cci_disable_port_by_device(dev) \
49ed69bdd8SLorenzo Pieralisi 	__cci_control_port_by_device(dev, false)
50ed69bdd8SLorenzo Pieralisi #define cci_enable_port_by_device(dev) \
51ed69bdd8SLorenzo Pieralisi 	__cci_control_port_by_device(dev, true)
52ed69bdd8SLorenzo Pieralisi #define cci_disable_port_by_index(dev) \
53ed69bdd8SLorenzo Pieralisi 	__cci_control_port_by_index(dev, false)
54ed69bdd8SLorenzo Pieralisi #define cci_enable_port_by_index(dev) \
55ed69bdd8SLorenzo Pieralisi 	__cci_control_port_by_index(dev, true)
56ed69bdd8SLorenzo Pieralisi 
57ed69bdd8SLorenzo Pieralisi #endif
58