18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef __ALPHA_GCT_H
38c2ecf20Sopenharmony_ci#define __ALPHA_GCT_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_citypedef u64 gct_id;
68c2ecf20Sopenharmony_citypedef u64 gct6_handle;
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_citypedef struct __gct6_node {
98c2ecf20Sopenharmony_ci	u8 type;
108c2ecf20Sopenharmony_ci	u8 subtype;
118c2ecf20Sopenharmony_ci	u16 size;
128c2ecf20Sopenharmony_ci	u32 hd_extension;
138c2ecf20Sopenharmony_ci	gct6_handle owner;
148c2ecf20Sopenharmony_ci	gct6_handle active_user;
158c2ecf20Sopenharmony_ci	gct_id id;
168c2ecf20Sopenharmony_ci	u64 flags;
178c2ecf20Sopenharmony_ci	u16 rev;
188c2ecf20Sopenharmony_ci	u16 change_counter;
198c2ecf20Sopenharmony_ci	u16 max_child;
208c2ecf20Sopenharmony_ci	u16 reserved1;
218c2ecf20Sopenharmony_ci	gct6_handle saved_owner;
228c2ecf20Sopenharmony_ci	gct6_handle affinity;
238c2ecf20Sopenharmony_ci	gct6_handle parent;
248c2ecf20Sopenharmony_ci	gct6_handle next;
258c2ecf20Sopenharmony_ci	gct6_handle prev;
268c2ecf20Sopenharmony_ci	gct6_handle child;
278c2ecf20Sopenharmony_ci	u64 fw_flags;
288c2ecf20Sopenharmony_ci	u64 os_usage;
298c2ecf20Sopenharmony_ci	u64 fru_id;
308c2ecf20Sopenharmony_ci	u32 checksum;
318c2ecf20Sopenharmony_ci	u32 magic;	/* 'GLXY' */
328c2ecf20Sopenharmony_ci} gct6_node;
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_citypedef struct {
358c2ecf20Sopenharmony_ci	u8 type;
368c2ecf20Sopenharmony_ci	u8 subtype;
378c2ecf20Sopenharmony_ci	void (*callout)(gct6_node *);
388c2ecf20Sopenharmony_ci} gct6_search_struct;
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci#define GCT_NODE_MAGIC	  0x59584c47	/* 'GLXY' */
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci/*
438c2ecf20Sopenharmony_ci * node types
448c2ecf20Sopenharmony_ci */
458c2ecf20Sopenharmony_ci#define GCT_TYPE_HOSE			0x0E
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci/*
488c2ecf20Sopenharmony_ci * node subtypes
498c2ecf20Sopenharmony_ci */
508c2ecf20Sopenharmony_ci#define GCT_SUBTYPE_IO_PORT_MODULE	0x2C
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci#define GCT_NODE_PTR(off) ((gct6_node *)((char *)hwrpb + 		\
538c2ecf20Sopenharmony_ci					 hwrpb->frut_offset + 		\
548c2ecf20Sopenharmony_ci					 (gct6_handle)(off)))		\
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ciint gct6_find_nodes(gct6_node *, gct6_search_struct *);
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci#endif /* __ALPHA_GCT_H */
598c2ecf20Sopenharmony_ci
60