1a5e3aaa6SAppana Durga Kedareswara rao /* SPDX-License-Identifier: GPL-2.0 */
2a5e3aaa6SAppana Durga Kedareswara rao /*
3a5e3aaa6SAppana Durga Kedareswara rao  * Copyright (C) 2022 Xilinx, Inc.
4a5e3aaa6SAppana Durga Kedareswara rao  */
5a5e3aaa6SAppana Durga Kedareswara rao #ifndef _XILINX_MB_MANAGER_H
6a5e3aaa6SAppana Durga Kedareswara rao #define _XILINX_MB_MANAGER_H
7a5e3aaa6SAppana Durga Kedareswara rao 
8*adc4cefaSAppana Durga Kedareswara rao # ifndef __ASSEMBLY__
9*adc4cefaSAppana Durga Kedareswara rao 
10a5e3aaa6SAppana Durga Kedareswara rao #include <linux/of_address.h>
11a5e3aaa6SAppana Durga Kedareswara rao 
12a5e3aaa6SAppana Durga Kedareswara rao /*
13a5e3aaa6SAppana Durga Kedareswara rao  * When the break vector gets asserted because of error injection, the break
14a5e3aaa6SAppana Durga Kedareswara rao  * signal must be blocked before exiting from the break handler, Below api
15a5e3aaa6SAppana Durga Kedareswara rao  * updates the manager address and control register and error counter callback
16a5e3aaa6SAppana Durga Kedareswara rao  * arguments, which will be used by the break handler to block the break and
17a5e3aaa6SAppana Durga Kedareswara rao  * call the callback function.
18a5e3aaa6SAppana Durga Kedareswara rao  */
19a5e3aaa6SAppana Durga Kedareswara rao void xmb_manager_register(uintptr_t phys_baseaddr, u32 cr_val,
20a5e3aaa6SAppana Durga Kedareswara rao 			  void (*callback)(void *data),
21a5e3aaa6SAppana Durga Kedareswara rao 			  void *priv, void (*reset_callback)(void *data));
22*adc4cefaSAppana Durga Kedareswara rao asmlinkage void xmb_inject_err(void);
23*adc4cefaSAppana Durga Kedareswara rao 
24*adc4cefaSAppana Durga Kedareswara rao # endif /* __ASSEMBLY__ */
25*adc4cefaSAppana Durga Kedareswara rao 
26*adc4cefaSAppana Durga Kedareswara rao /* Error injection offset */
27*adc4cefaSAppana Durga Kedareswara rao #define XMB_INJECT_ERR_OFFSET	0x200
28a5e3aaa6SAppana Durga Kedareswara rao 
29a5e3aaa6SAppana Durga Kedareswara rao #endif /* _XILINX_MB_MANAGER_H */
30