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