xref: /netbsd-src/sys/arch/arm/gemini/gemini_ipivar.h (revision cbab9cadce21ae72fac13910001079fff214cc29)
1*cbab9cadSchs /*	$NetBSD: gemini_ipivar.h,v 1.2 2012/10/27 17:17:38 chs Exp $	*/
2c55c9be5Scliff 
3c55c9be5Scliff #ifndef _GEMINI_IPIVAR_H
4c55c9be5Scliff #define _GEMINI_IPIVAR_H
5c55c9be5Scliff 
6c55c9be5Scliff #include <sys/param.h>
7c55c9be5Scliff #include <sys/systm.h>
8c55c9be5Scliff #include <sys/device.h>
9c55c9be5Scliff 
10c55c9be5Scliff typedef struct gemini_ipi_intrq {
11c55c9be5Scliff 	SIMPLEQ_ENTRY(gemini_ipi_intrq) iq_q;
12c55c9be5Scliff 	int (*iq_func)(void *);
13c55c9be5Scliff 	void *iq_arg;
14c55c9be5Scliff } gemini_ipi_intrq_t;
15c55c9be5Scliff 
16c55c9be5Scliff typedef struct gemini_ipi_softc {
17*cbab9cadSchs 	device_t sc_dev;
18c55c9be5Scliff 	bus_space_tag_t sc_iot;
19c55c9be5Scliff         bus_space_handle_t sc_ioh;
20c55c9be5Scliff         bus_addr_t sc_addr;
21c55c9be5Scliff         bus_size_t sc_size;
22c55c9be5Scliff 	int sc_intr;
23c55c9be5Scliff 	void *sc_ih;
24c55c9be5Scliff 	SIMPLEQ_HEAD(, gemini_ipi_intrq) sc_intrq;
25c55c9be5Scliff } gemini_ipi_softc_t;
26c55c9be5Scliff 
27c55c9be5Scliff extern void *ipi_intr_establish(int (*)(void *), void *);
28c55c9be5Scliff extern void  ipi_intr_disestablish(void *);
29c55c9be5Scliff extern int   ipi_send(void);
30c55c9be5Scliff 
31c55c9be5Scliff #endif /* _GEMINI_IPIVAR_H */
32