xref: /openbmc/linux/arch/alpha/include/asm/gct.h (revision b2441318)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2024b246eSLinus Torvalds #ifndef __ALPHA_GCT_H
3024b246eSLinus Torvalds #define __ALPHA_GCT_H
4024b246eSLinus Torvalds 
5024b246eSLinus Torvalds typedef u64 gct_id;
6024b246eSLinus Torvalds typedef u64 gct6_handle;
7024b246eSLinus Torvalds 
8024b246eSLinus Torvalds typedef struct __gct6_node {
9024b246eSLinus Torvalds 	u8 type;
10024b246eSLinus Torvalds 	u8 subtype;
11024b246eSLinus Torvalds 	u16 size;
12024b246eSLinus Torvalds 	u32 hd_extension;
13024b246eSLinus Torvalds 	gct6_handle owner;
14024b246eSLinus Torvalds 	gct6_handle active_user;
15024b246eSLinus Torvalds 	gct_id id;
16024b246eSLinus Torvalds 	u64 flags;
17024b246eSLinus Torvalds 	u16 rev;
18024b246eSLinus Torvalds 	u16 change_counter;
19024b246eSLinus Torvalds 	u16 max_child;
20024b246eSLinus Torvalds 	u16 reserved1;
21024b246eSLinus Torvalds 	gct6_handle saved_owner;
22024b246eSLinus Torvalds 	gct6_handle affinity;
23024b246eSLinus Torvalds 	gct6_handle parent;
24024b246eSLinus Torvalds 	gct6_handle next;
25024b246eSLinus Torvalds 	gct6_handle prev;
26024b246eSLinus Torvalds 	gct6_handle child;
27024b246eSLinus Torvalds 	u64 fw_flags;
28024b246eSLinus Torvalds 	u64 os_usage;
29024b246eSLinus Torvalds 	u64 fru_id;
30024b246eSLinus Torvalds 	u32 checksum;
31024b246eSLinus Torvalds 	u32 magic;	/* 'GLXY' */
32024b246eSLinus Torvalds } gct6_node;
33024b246eSLinus Torvalds 
34024b246eSLinus Torvalds typedef struct {
35024b246eSLinus Torvalds 	u8 type;
36024b246eSLinus Torvalds 	u8 subtype;
37024b246eSLinus Torvalds 	void (*callout)(gct6_node *);
38024b246eSLinus Torvalds } gct6_search_struct;
39024b246eSLinus Torvalds 
40024b246eSLinus Torvalds #define GCT_NODE_MAGIC	  0x59584c47	/* 'GLXY' */
41024b246eSLinus Torvalds 
42024b246eSLinus Torvalds /*
43024b246eSLinus Torvalds  * node types
44024b246eSLinus Torvalds  */
45024b246eSLinus Torvalds #define GCT_TYPE_HOSE			0x0E
46024b246eSLinus Torvalds 
47024b246eSLinus Torvalds /*
48024b246eSLinus Torvalds  * node subtypes
49024b246eSLinus Torvalds  */
50024b246eSLinus Torvalds #define GCT_SUBTYPE_IO_PORT_MODULE	0x2C
51024b246eSLinus Torvalds 
52024b246eSLinus Torvalds #define GCT_NODE_PTR(off) ((gct6_node *)((char *)hwrpb + 		\
53024b246eSLinus Torvalds 					 hwrpb->frut_offset + 		\
54024b246eSLinus Torvalds 					 (gct6_handle)(off)))		\
55024b246eSLinus Torvalds 
56024b246eSLinus Torvalds int gct6_find_nodes(gct6_node *, gct6_search_struct *);
57024b246eSLinus Torvalds 
58024b246eSLinus Torvalds #endif /* __ALPHA_GCT_H */
59024b246eSLinus Torvalds 
60