xref: /OK3568_Linux_fs/kernel/arch/powerpc/include/asm/dcr-generic.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * (c) Copyright 2006 Benjamin Herrenschmidt, IBM Corp.
4*4882a593Smuzhiyun  *                    <benh@kernel.crashing.org>
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #ifndef _ASM_POWERPC_DCR_GENERIC_H
8*4882a593Smuzhiyun #define _ASM_POWERPC_DCR_GENERIC_H
9*4882a593Smuzhiyun #ifdef __KERNEL__
10*4882a593Smuzhiyun #ifndef __ASSEMBLY__
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun enum host_type_t {DCR_HOST_MMIO, DCR_HOST_NATIVE, DCR_HOST_INVALID};
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun typedef struct {
15*4882a593Smuzhiyun 	enum host_type_t type;
16*4882a593Smuzhiyun 	union {
17*4882a593Smuzhiyun 		dcr_host_mmio_t mmio;
18*4882a593Smuzhiyun 		dcr_host_native_t native;
19*4882a593Smuzhiyun 	} host;
20*4882a593Smuzhiyun } dcr_host_t;
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun extern bool dcr_map_ok_generic(dcr_host_t host);
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun extern dcr_host_t dcr_map_generic(struct device_node *dev, unsigned int dcr_n,
25*4882a593Smuzhiyun 			  unsigned int dcr_c);
26*4882a593Smuzhiyun extern void dcr_unmap_generic(dcr_host_t host, unsigned int dcr_c);
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun extern u32 dcr_read_generic(dcr_host_t host, unsigned int dcr_n);
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun extern void dcr_write_generic(dcr_host_t host, unsigned int dcr_n, u32 value);
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */
33*4882a593Smuzhiyun #endif /* __KERNEL__ */
34*4882a593Smuzhiyun #endif /* _ASM_POWERPC_DCR_GENERIC_H */
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun 
37