xref: /OK3568_Linux_fs/kernel/arch/alpha/include/asm/gct.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef __ALPHA_GCT_H
3*4882a593Smuzhiyun #define __ALPHA_GCT_H
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun typedef u64 gct_id;
6*4882a593Smuzhiyun typedef u64 gct6_handle;
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun typedef struct __gct6_node {
9*4882a593Smuzhiyun 	u8 type;
10*4882a593Smuzhiyun 	u8 subtype;
11*4882a593Smuzhiyun 	u16 size;
12*4882a593Smuzhiyun 	u32 hd_extension;
13*4882a593Smuzhiyun 	gct6_handle owner;
14*4882a593Smuzhiyun 	gct6_handle active_user;
15*4882a593Smuzhiyun 	gct_id id;
16*4882a593Smuzhiyun 	u64 flags;
17*4882a593Smuzhiyun 	u16 rev;
18*4882a593Smuzhiyun 	u16 change_counter;
19*4882a593Smuzhiyun 	u16 max_child;
20*4882a593Smuzhiyun 	u16 reserved1;
21*4882a593Smuzhiyun 	gct6_handle saved_owner;
22*4882a593Smuzhiyun 	gct6_handle affinity;
23*4882a593Smuzhiyun 	gct6_handle parent;
24*4882a593Smuzhiyun 	gct6_handle next;
25*4882a593Smuzhiyun 	gct6_handle prev;
26*4882a593Smuzhiyun 	gct6_handle child;
27*4882a593Smuzhiyun 	u64 fw_flags;
28*4882a593Smuzhiyun 	u64 os_usage;
29*4882a593Smuzhiyun 	u64 fru_id;
30*4882a593Smuzhiyun 	u32 checksum;
31*4882a593Smuzhiyun 	u32 magic;	/* 'GLXY' */
32*4882a593Smuzhiyun } gct6_node;
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun typedef struct {
35*4882a593Smuzhiyun 	u8 type;
36*4882a593Smuzhiyun 	u8 subtype;
37*4882a593Smuzhiyun 	void (*callout)(gct6_node *);
38*4882a593Smuzhiyun } gct6_search_struct;
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun #define GCT_NODE_MAGIC	  0x59584c47	/* 'GLXY' */
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun /*
43*4882a593Smuzhiyun  * node types
44*4882a593Smuzhiyun  */
45*4882a593Smuzhiyun #define GCT_TYPE_HOSE			0x0E
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun /*
48*4882a593Smuzhiyun  * node subtypes
49*4882a593Smuzhiyun  */
50*4882a593Smuzhiyun #define GCT_SUBTYPE_IO_PORT_MODULE	0x2C
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun #define GCT_NODE_PTR(off) ((gct6_node *)((char *)hwrpb + 		\
53*4882a593Smuzhiyun 					 hwrpb->frut_offset + 		\
54*4882a593Smuzhiyun 					 (gct6_handle)(off)))		\
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun int gct6_find_nodes(gct6_node *, gct6_search_struct *);
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun #endif /* __ALPHA_GCT_H */
59*4882a593Smuzhiyun 
60